AT Command Set mDot firmware with updated libmDot, to fix endian problem with joining LoRaWAN network

Dependencies:   MTS-Serial libmDot mbed-rtos mbed-src

Fork of mDot_AT_firmware by MultiTech

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers CmdRxFrequency.cpp Source File

CmdRxFrequency.cpp

00001 #include "CmdRxFrequency.h"
00002 
00003 CmdRxFrequency::CmdRxFrequency(mDot* dot, mts::MTSSerial& serial) :
00004     Command(dot, "Rx Frequency", "AT+RXF", "Set the Rx frequency for +RECV,+RECVC"), _serial(serial)
00005 {
00006     _help = std::string(text()) + ": " + std::string(desc());
00007     if (_dot->getFrequencyBand() == mDot::FB_868)
00008         _usage = "(0,863000000-870000000)";
00009     else
00010         _usage = "(0,902000000-928000000)";
00011     _queryable = true;
00012 }
00013 
00014 uint32_t CmdRxFrequency::action(std::vector<std::string> args)
00015 {
00016     if (args.size() == 1)
00017     {
00018         if (_dot->getVerbose())
00019             _serial.writef("Rx Frequency: ");
00020 
00021         _serial.writef("%lu\r\n", _dot->getRxFrequency());
00022     }
00023     else if (args.size() == 2)
00024     {
00025         int32_t code;
00026         uint32_t frequency = 0;
00027         sscanf(args[1].c_str(), "%lu", &frequency);
00028         if ((code = _dot->setRxFrequency(frequency)) != mDot::MDOT_OK)
00029         {
00030             std::string error = mDot::getReturnCodeString(code) + " - " + _dot->getLastError();
00031             setErrorMessage(error);
00032             return 1;
00033         }
00034     }
00035 
00036     return 0;
00037 }
00038 
00039 bool CmdRxFrequency::verify(std::vector<std::string> args)
00040 {
00041     if (args.size() == 1)
00042         return true;
00043 
00044     if (args.size() == 2)
00045     {
00046         uint32_t frequency;
00047         if (sscanf(args[1].c_str(), "%lu", &frequency) != 1) {
00048             setErrorMessage("Invalid argument");
00049             return false;
00050         }
00051 
00052         DEBUG_PRINTF("FREQ MIN: %lu MAX: %lu\r\n", _dot->getMinFrequency(), _dot->getMaxFrequency());
00053 
00054         if (frequency != 0 && (frequency < _dot->getMinFrequency() || frequency > _dot->getMaxFrequency())) {
00055             if (_dot->getFrequencyBand() == mDot::FB_868)
00056                 setErrorMessage("Invalid timeout, expects (0,863000000-870000000)"); 
00057             else
00058                 setErrorMessage("Invalid timeout, expects (0,902000000-928000000)");
00059 
00060             return false;
00061         }
00062 
00063         return true;
00064     }
00065 
00066     setErrorMessage("Invalid arguments");
00067     return false;
00068 }