Multitech xDot AT Firmware
Dependencies: MTS-Serial libxDot-mbed5
Diff: CommandTerminal/CmdJoinRx2Frequency.cpp
- Revision:
- 14:f9a77400b622
- Child:
- 16:d5cf2af81a6d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CommandTerminal/CmdJoinRx2Frequency.cpp Fri Nov 04 14:25:43 2016 -0500 @@ -0,0 +1,59 @@ +#include "CmdJoinRx2Frequency.h" +#include "CommandTerminal.h" + +CmdJoinRx2Frequency::CmdJoinRx2Frequency() +: + Command("Join Rx2 Frequency", "AT+JR2F", "Join Rx2 frequency", "(US:902000000-928000000,AU:915000000-928000000,EU:863000000-870000000)") { + +} + +uint32_t CmdJoinRx2Frequency::action(std::vector<std::string> args) { + + if (args.size() == 1) + { + CommandTerminal::Serial()->writef("%lu\r\n", CommandTerminal::Dot()->getJoinRx2Frequency()); + } + else if (args.size() == 2) + { + int frequency = 0; + + sscanf(args[1].c_str(), "%d", &frequency); + if (CommandTerminal::Dot()->setJoinRx2Frequency(frequency) != mDot::MDOT_OK) + { + CommandTerminal::setErrorMessage(CommandTerminal::Dot()->getLastError());; + return 1; + } + } + + return 0; +} + +bool CmdJoinRx2Frequency::verify(std::vector<std::string> args) { + if (args.size() == 1) + return true; + + if (args.size() == 2) + { + int frequency = ULONG_MAX; + if (sscanf(args[1].c_str(), "%d", &frequency) != 1) { + CommandTerminal::setErrorMessage("Invalid argument"); + return false; + } + + if (frequency != 0 && (frequency < int(CommandTerminal::Dot()->getMinFrequency()) || frequency > int(CommandTerminal::Dot()->getMaxFrequency()))) { + if (CommandTerminal::Dot()->getFrequencyBand() == mDot::FB_EU868) + CommandTerminal::setErrorMessage("Invalid frequency, expects (0,863000000-870000000)"); + else if (CommandTerminal::Dot()->getFrequencyBand() == mDot::FB_AU915) + CommandTerminal::setErrorMessage("Invalid frequency, expects (0,915000000-928000000)"); + else + CommandTerminal::setErrorMessage("Invalid frequency, expects (0,902000000-928000000)"); + + return false; + } + + return true; + } + + CommandTerminal::setErrorMessage("Invalid arguments"); + return false; +}