few changes for RTS/CTS control
Dependencies: MTS-Serial libmDot mbed-rtos mbed
Fork of mDot_AT_firmware by
CmdNetworkId.cpp
00001 #include "CmdNetworkId.h" 00002 00003 CmdNetworkId::CmdNetworkId(mDot* dot, mts::MTSSerial& serial) : 00004 Command(dot, "Network ID", "AT+NI", "Configured Network Name/EUI (MSB, App EUI in LoRaWAN) AT+NI=0,hex AT+NI=1,network_name (Net ID = crc64(network_name)) (8 bytes)"), 00005 _serial(serial) 00006 { 00007 _help = std::string(text()) + ": " + std::string(desc()); 00008 _usage = "(0,(hex:8)),(1,(string:128))"; 00009 _queryable = true; 00010 } 00011 00012 uint32_t CmdNetworkId::action(std::vector<std::string> args) 00013 { 00014 if (args.size() == 1) 00015 { 00016 if (_dot->getVerbose()) 00017 _serial.writef("Network ID: "); 00018 00019 _serial.writef("%s\r\n", mts::Text::bin2hexString(_dot->getNetworkId(), "-").c_str()); 00020 00021 if (!_dot->getNetworkName().empty()) 00022 _serial.writef("Passphrase: '%s'\r\n", _dot->getNetworkName().c_str()); 00023 } 00024 else 00025 { 00026 int32_t code; 00027 00028 if (args[1].find("1") == 0 && args[1].size() == 1) 00029 { 00030 std::string text; 00031 if (args.size() > 3) 00032 { 00033 // passphrase was split on commas 00034 for (size_t i = 2; i < args.size(); i++) 00035 { 00036 text.append(args[i]); 00037 if (i < args.size() - 1) 00038 text.append(","); 00039 } 00040 } 00041 else 00042 { 00043 text = args[2]; 00044 } 00045 00046 if ((code = _dot->setNetworkName(text)) == mDot::MDOT_OK) 00047 { 00048 _serial.writef("Set Network Name: "); 00049 _serial.writef("%s\r\n", text.c_str()); 00050 } 00051 else 00052 { 00053 00054 setErrorMessage(_dot->getLastError());; 00055 return 1; 00056 } 00057 00058 } 00059 else 00060 { 00061 std::vector<uint8_t> NewKey; 00062 readByteArray(args[2], NewKey, EUI_LENGTH); 00063 if ((code = _dot->setNetworkId(NewKey)) == mDot::MDOT_OK) 00064 { 00065 _serial.writef("Set Network ID: "); 00066 _serial.writef("%s\r\n", mts::Text::bin2hexString(NewKey, "-").c_str()); 00067 } 00068 else 00069 { 00070 00071 setErrorMessage(_dot->getLastError());; 00072 return 1; 00073 } 00074 } 00075 } 00076 00077 return 0; 00078 } 00079 00080 bool CmdNetworkId::verify(std::vector<std::string> args) 00081 { 00082 if (args.size() == 1) 00083 return true; 00084 00085 if (args.size() == 3) { 00086 if (args[1] != "0" && args[1] != "1") { 00087 setErrorMessage("Invalid type, expects (0,1)"); 00088 return false; 00089 } 00090 if (args[1] == "0" && !isHexString(args[2], 8)) { 00091 setErrorMessage("Invalid ID, expects (hex:8"); 00092 return false; 00093 } 00094 00095 if (args[1] == "1" && args[2].size() < 8) { 00096 setErrorMessage("Invalid name, expects minimum 8 characters"); 00097 return false; 00098 } 00099 00100 if (args[1] == "1" && args[2].size() > 128) { 00101 setErrorMessage("Invalid name, expects (string:128)"); 00102 return false; 00103 } 00104 00105 return true; 00106 } 00107 00108 setErrorMessage("Invalid arguments"); 00109 return false; 00110 }
Generated on Tue Jul 12 2022 16:01:22 by 1.7.2