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
CmdRxDataRate.cpp
00001 #include "CmdRxDataRate.h" 00002 00003 CmdRxDataRate::CmdRxDataRate(mDot* dot, mts::MTSSerial& serial) : 00004 Command(dot, "Rx Data Rate", "AT+RXDR", "Set the Rx data rate"), _serial(serial) 00005 { 00006 _help = std::string(text()) + ": " + std::string(desc()); 00007 if (_dot->getFrequencyBand() == mDot::FB_915) 00008 _usage = "(7-10)"; 00009 else 00010 _usage = "(7-12)"; 00011 00012 _queryable = true; 00013 } 00014 00015 uint32_t CmdRxDataRate::action(std::vector<std::string> args) 00016 { 00017 if (args.size() == 1) 00018 { 00019 if (_dot->getVerbose()) 00020 _serial.writef("Rx Data Rate: "); 00021 00022 _serial.writef("%s\r\n", mDot::DataRateStr(_dot->getRxDataRate()).c_str()); 00023 } 00024 else if (args.size() == 2) 00025 { 00026 int32_t code; 00027 uint8_t datarate = 0; 00028 uint8_t i; 00029 00030 for (i = 0; i < 8; i++) 00031 { 00032 if (mDot::DataRateStr(i).find(args[1].c_str()) != std::string::npos) 00033 { 00034 datarate = i; 00035 break; 00036 } 00037 } 00038 00039 if ((code = _dot->setRxDataRate(datarate)) != mDot::MDOT_OK) 00040 { 00041 std::string error = mDot::getReturnCodeString(code) + " - " + _dot->getLastError(); 00042 setErrorMessage(error); 00043 return 1; 00044 } 00045 } 00046 00047 return 0; 00048 } 00049 00050 bool CmdRxDataRate::verify(std::vector<std::string> args) 00051 { 00052 if (args.size() == 1) 00053 return true; 00054 00055 if (args.size() == 2) 00056 { 00057 uint8_t i; 00058 int datarate = -1; 00059 for (i = 0; i < 8; i++) 00060 { 00061 if (mDot::DataRateStr(i).find(args[1].c_str()) != std::string::npos) 00062 { 00063 datarate = i; 00064 break; 00065 } 00066 } 00067 00068 if (datarate < 0) 00069 { 00070 if (_dot->getFrequencyBand() == mDot::FB_915) 00071 setErrorMessage("Invalid data rate, expects (7-10)"); 00072 else 00073 setErrorMessage("Invalid data rate, expects (7-12)"); 00074 return false; 00075 } 00076 00077 if (_dot->getFrequencyBand() == mDot::FB_915) { 00078 if (datarate < 2) { 00079 setErrorMessage("Invalid data rate, expects (7-10)"); 00080 return false; 00081 } 00082 } 00083 00084 return true; 00085 } 00086 00087 setErrorMessage("Invalid arguments"); 00088 return false; 00089 }
Generated on Tue Jul 12 2022 21:40:57 by
1.7.2
