AT command firmware for MultiTech Dot devices.
Fork of mDot_AT_firmware by
CmdAdaptiveDataRate.cpp
00001 #include "CmdAdaptiveDataRate.h" 00002 00003 00004 CmdAdaptiveDataRate::CmdAdaptiveDataRate() : 00005 #if MTS_CMD_TERM_VERBOSE 00006 Command("Adaptive Data Rate", "AT+ADR", "Enable/disable ADR(0:off,1: on),[ADR_ACK_LIMIT(1-127)],[ADR_ACK_DELAY(1-127)],Auto Inc DR(0:off,1:on)", "(0,1),(1,127),(1,127),(0,1)") 00007 #else 00008 Command("AT+ADR") 00009 #endif 00010 { 00011 _queryable = true; 00012 } 00013 00014 uint32_t CmdAdaptiveDataRate::action(const std::vector<std::string>& args) 00015 { 00016 if (args.size() == 1) 00017 { 00018 CommandTerminal::Serial()->writef("%d, %d, %d, %d\r\n", 00019 CommandTerminal::Dot()->getAdr(), 00020 CommandTerminal::Dot()->getAdrAckLimit(), 00021 CommandTerminal::Dot()->getAdrAckDelay(), 00022 !CommandTerminal::Dot()->getDisableIncrementDR()); 00023 } 00024 else if (args.size() > 1) 00025 { 00026 bool enable = (args[1] == "1"); 00027 if (CommandTerminal::Dot()->setAdr(enable) != mDot::MDOT_OK) 00028 { 00029 return 1; 00030 } 00031 00032 if (args.size() > 2) 00033 { 00034 int input; 00035 sscanf(args[2].c_str(), "%d", &input); 00036 CommandTerminal::Dot()->setAdrAckLimit(input); 00037 00038 if (args.size() > 3) 00039 { 00040 sscanf(args[3].c_str(), "%d", &input); 00041 CommandTerminal::Dot()->setAdrAckDelay(input); 00042 } 00043 00044 if ((args.size() > 4) && (args[4] == "0" || args[4] == "1")) { 00045 // input 1:on = false because setting true disables 00046 CommandTerminal::Dot()->setDisableIncrementDR(args[4] == "0"); 00047 } 00048 } 00049 } 00050 00051 return 0; 00052 } 00053 00054 bool CmdAdaptiveDataRate::verify(const std::vector<std::string>& args) 00055 { 00056 if (args.size() == 1) 00057 return true; 00058 00059 if (args[1] != "1" && args[1] != "0") { 00060 #if MTS_CMD_TERM_VERBOSE 00061 CommandTerminal::setErrorMessage("Invalid parameter1, expects (0: off, 1: on)"); 00062 #endif 00063 return false; 00064 } 00065 00066 int input; 00067 00068 if (args.size() == 2) { 00069 return true; 00070 } else { 00071 sscanf(args[2].c_str(), "%d", &input); 00072 00073 if (input < 1 || input > 127) { 00074 #if MTS_CMD_TERM_VERBOSE 00075 CommandTerminal::setErrorMessage("Invalid parameter2, expects ADR_ACK_LIMIT (1-127)"); 00076 #endif 00077 return false; 00078 } 00079 } 00080 00081 if (args.size() == 3) 00082 { 00083 return true; 00084 } else { 00085 sscanf(args[3].c_str(), "%d", &input); 00086 if (input < 1 || input > 127) { 00087 #if MTS_CMD_TERM_VERBOSE 00088 CommandTerminal::setErrorMessage("Invalid parameter3, expects ADR_ACK_DELAY (1-127)"); 00089 #endif 00090 return false; 00091 } 00092 } 00093 00094 if (args.size() == 4) { 00095 return true; 00096 } 00097 00098 if (args[4] != "0" && args[4] != "1") { 00099 #if MTS_CMD_TERM_VERBOSE 00100 CommandTerminal::setErrorMessage("Invalid parameter4, expects (0: off, 1: on)"); 00101 #endif 00102 return false; 00103 } 00104 00105 if (args.size() == 5) { 00106 return true; 00107 } 00108 00109 #if MTS_CMD_TERM_VERBOSE 00110 CommandTerminal::setErrorMessage("Invalid arguments"); 00111 #endif 00112 return false; 00113 }
Generated on Wed Dec 6 2023 19:34:05 by 1.7.2