MicroLabo / Mbed OS mbed-Dot-AT-Firmware

Dependencies:   MTS-Serial libmDot-mbed5

Fork of Dot-AT-Firmware by MultiTech

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers CmdJoinRx2Frequency.cpp Source File

CmdJoinRx2Frequency.cpp

00001 #include "CmdJoinRx2Frequency.h"
00002 #include "CommandTerminal.h"
00003 
00004 CmdJoinRx2Frequency::CmdJoinRx2Frequency()
00005 :
00006   Command("Join Rx2 Frequency", "AT+JR2F", "Join Rx2 frequency", "(US:902000000-928000000,AU:915000000-928000000,EU:863000000-870000000)") {
00007 
00008 }
00009 
00010 uint32_t CmdJoinRx2Frequency::action(std::vector<std::string> args) {
00011 
00012     if (args.size() == 1)
00013     {
00014         CommandTerminal::Serial()->writef("%lu\r\n", CommandTerminal::Dot()->getJoinRx2Frequency());
00015     }
00016     else if (args.size() == 2)
00017     {
00018         int frequency = 0;
00019 
00020         sscanf(args[1].c_str(), "%d", &frequency);
00021         if (CommandTerminal::Dot()->setJoinRx2Frequency(frequency) != mDot::MDOT_OK)
00022         {
00023             CommandTerminal::setErrorMessage(CommandTerminal::Dot()->getLastError());;
00024             return 1;
00025         }
00026     }
00027 
00028     return 0;
00029 }
00030 
00031 bool CmdJoinRx2Frequency::verify(std::vector<std::string> args) {
00032     if (args.size() == 1)
00033         return true;
00034 
00035     if (args.size() == 2)
00036         {
00037         int frequency = ULONG_MAX;
00038         if (sscanf(args[1].c_str(), "%d", &frequency) != 1) {
00039             CommandTerminal::setErrorMessage("Invalid argument");
00040             return false;
00041         }
00042 
00043         if (frequency != 0 && (frequency < int(CommandTerminal::Dot()->getMinFrequency()) || frequency > int(CommandTerminal::Dot()->getMaxFrequency()))) {
00044             if (CommandTerminal::Dot()->getFrequencyBand() == mDot::FB_EU868)
00045                 CommandTerminal::setErrorMessage("Invalid frequency, expects (0,863000000-870000000)");
00046             else if (CommandTerminal::Dot()->getFrequencyBand() == mDot::FB_AU915)
00047                 CommandTerminal::setErrorMessage("Invalid frequency, expects (0,915000000-928000000)");
00048             else
00049                 CommandTerminal::setErrorMessage("Invalid frequency, expects (0,902000000-928000000)");
00050 
00051             return false;
00052         }
00053 
00054         return true;
00055     }
00056 
00057     CommandTerminal::setErrorMessage("Invalid arguments");
00058     return false;
00059 }