few changes for RTS/CTS control
Dependencies: MTS-Serial libmDot mbed-rtos mbed
Fork of mDot_AT_firmware by
CmdNetworkAddress.cpp
00001 #include "CmdNetworkAddress.h" 00002 #include <algorithm> 00003 00004 CmdNetworkAddress::CmdNetworkAddress(mDot* dot, mts::MTSSerial& serial) : 00005 Command(dot, "Network Address", "AT+NA", "Network address (devAddr in LoraMac) (4 bytes)"), _serial(serial) 00006 { 00007 _help = std::string(text()) + ": " + std::string(desc()); 00008 _usage = "(hex:4)"; 00009 _queryable = true; 00010 } 00011 00012 uint32_t CmdNetworkAddress::action(std::vector<std::string> args) 00013 { 00014 std::vector<uint8_t> addr; 00015 00016 if (args.size() == 1) 00017 { 00018 if (_dot->getVerbose()) 00019 _serial.writef("Network Address: "); 00020 00021 addr = _dot->getNetworkAddress(); 00022 00023 _serial.writef("%02x:%02x:%02x:%02x\r\n", addr[0], addr[1], addr[2], addr[3]); 00024 } 00025 else if (args.size() == 2) 00026 { 00027 int32_t code; 00028 int temp; 00029 uint32_t step = 2; 00030 00031 if (args[1].find(":") != std::string::npos || args[1].find(".") != std::string::npos || args[1].find("-") != std::string::npos) 00032 step = 3; 00033 00034 // Convert the ASCII hex data to binary... 00035 for (size_t i = 0; i < args[1].size(); i += step) 00036 { 00037 sscanf(&args[1][i], "%02x", &temp); 00038 addr.push_back(temp); 00039 } 00040 00041 if ((code = _dot->setNetworkAddress(addr)) == mDot::MDOT_OK) { 00042 _serial.writef("Set Network Address: "); 00043 _serial.writef("%02x:%02x:%02x:%02x\r\n", addr[0], addr[1], addr[2], addr[3]); 00044 } else { 00045 00046 setErrorMessage(_dot->getLastError());; 00047 return 1; 00048 } 00049 } 00050 00051 return 0; 00052 } 00053 00054 bool CmdNetworkAddress::verify(std::vector<std::string> args) 00055 { 00056 if (args.size() == 1) { 00057 return true; 00058 } 00059 00060 if (args.size() == 2) { 00061 if (!isHexString(args[1], 4)) 00062 { 00063 setErrorMessage("Invalid address, expects (hex:4)"); 00064 return false; 00065 } 00066 00067 return true; 00068 } 00069 00070 setErrorMessage("Invalid arguments"); 00071 return false; 00072 }
Generated on Tue Jul 12 2022 16:01:22 by 1.7.2