AT command firmware for MultiTech Dot devices.

Fork of mDot_AT_firmware by MultiTech

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers CmdTxFrequency.cpp Source File

CmdTxFrequency.cpp

00001 #include "CmdTxFrequency.h"
00002 #include <climits>
00003 
00004 
00005 CmdTxFrequency::CmdTxFrequency() :
00006 #if MTS_CMD_TERM_VERBOSE
00007     Command("Tx Frequency", "AT+TXF", "Set Tx frequency", "SEE PLAN")
00008 #else
00009     Command("AT+TXF")
00010 #endif
00011 {
00012     _queryable = true;
00013 }
00014 
00015 uint32_t CmdTxFrequency::action(const std::vector<std::string>& args)
00016 {
00017     if (args.size() == 1)
00018     {
00019         CommandTerminal::Serial()->writef("%lu\r\n", CommandTerminal::Dot()->getTxFrequency());
00020     }
00021     else if (args.size() == 2)
00022     {
00023         int frequency = 0;
00024 
00025         sscanf(args[1].c_str(), "%d", &frequency);
00026         if (CommandTerminal::Dot()->setTxFrequency(frequency) != mDot::MDOT_OK)
00027         {
00028             return 1;
00029         }
00030     }
00031 
00032     return 0;
00033 }
00034 
00035 bool CmdTxFrequency::verify(const std::vector<std::string>& args)
00036 {
00037     if (args.size() == 1)
00038         return true;
00039 
00040     if (args.size() == 2)
00041     {
00042         int frequency = ULONG_MAX;
00043         if (sscanf(args[1].c_str(), "%d", &frequency) != 1) {
00044 #if MTS_CMD_TERM_VERBOSE
00045             CommandTerminal::setErrorMessage("Invalid argument");
00046 #endif
00047             return false;
00048         }
00049 
00050         if (frequency != 0 && (frequency < int(CommandTerminal::Dot()->getMinFrequency()) || frequency > int(CommandTerminal::Dot()->getMaxFrequency()))) {
00051 #if MTS_CMD_TERM_VERBOSE
00052             char tmp[256];
00053             sprintf(tmp, "Invalid frequency, expects (0,%" SCNu32 "-%" SCNu32 ")", CommandTerminal::Dot()->getMinFrequency(), CommandTerminal::Dot()->getMaxFrequency());
00054             CommandTerminal::setErrorMessage(tmp);
00055 #endif
00056             return false;
00057         }
00058 
00059         return true;
00060     }
00061 
00062 #if MTS_CMD_TERM_VERBOSE
00063     CommandTerminal::setErrorMessage("Invalid arguments");
00064 #endif
00065     return false;
00066 }
00067