with 36errors
Dependencies: MTS-Serial libxDot-dev-mbed5-deprecated
Fork of Dot-AT-Firmware by
CmdNetworkId.cpp
00001 #include "CmdNetworkId.h" 00002 00003 CmdNetworkId::CmdNetworkId() : 00004 Command("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)", "(0,(hex:8)),(1,(string:128))") 00005 { 00006 _queryable = true; 00007 } 00008 00009 uint32_t CmdNetworkId::action(std::vector<std::string> args) 00010 { 00011 if (args.size() == 1) 00012 { 00013 CommandTerminal::Serial()->writef("%s\r\n", mts::Text::bin2hexString(CommandTerminal::Dot()->getNetworkId(), "-").c_str()); 00014 00015 if (!CommandTerminal::Dot()->getNetworkName().empty()) 00016 CommandTerminal::Serial()->writef("Passphrase: '%s'\r\n", CommandTerminal::Dot()->getNetworkName().c_str()); 00017 } 00018 else 00019 { 00020 00021 00022 if (args[1].find("1") == 0 && args[1].size() == 1) 00023 { 00024 std::string text; 00025 if (args.size() > 3) 00026 { 00027 // passphrase was split on commas 00028 for (size_t i = 2; i < args.size(); i++) 00029 { 00030 text.append(args[i]); 00031 if (i < args.size() - 1) 00032 text.append(","); 00033 } 00034 } 00035 else 00036 { 00037 text = args[2]; 00038 } 00039 00040 if (CommandTerminal::Dot()->setNetworkName(text) == mDot::MDOT_OK) 00041 { 00042 CommandTerminal::Serial()->writef("Set Network Name: "); 00043 CommandTerminal::Serial()->writef("%s\r\n", text.c_str()); 00044 } 00045 else 00046 { 00047 CommandTerminal::setErrorMessage(CommandTerminal::Dot()->getLastError());; 00048 return 1; 00049 } 00050 00051 } 00052 else 00053 { 00054 std::vector<uint8_t> NewKey; 00055 readByteArray(args[2], NewKey, EUI_LENGTH); 00056 if (CommandTerminal::Dot()->setNetworkId(NewKey) == mDot::MDOT_OK) 00057 { 00058 CommandTerminal::Serial()->writef("Set Network ID: "); 00059 CommandTerminal::Serial()->writef("%s\r\n", mts::Text::bin2hexString(NewKey, "-").c_str()); 00060 } 00061 else 00062 { 00063 CommandTerminal::setErrorMessage(CommandTerminal::Dot()->getLastError());; 00064 return 1; 00065 } 00066 } 00067 } 00068 00069 return 0; 00070 } 00071 00072 bool CmdNetworkId::verify(std::vector<std::string> args) 00073 { 00074 if (args.size() == 1) 00075 return true; 00076 00077 if (args.size() == 3) { 00078 if (args[1] != "0" && args[1] != "1") { 00079 CommandTerminal::setErrorMessage("Invalid type, expects (0,1)"); 00080 return false; 00081 } 00082 if (args[1] == "0" && !isHexString(args[2], 8)) { 00083 CommandTerminal::setErrorMessage("Invalid ID, expects (hex:8"); 00084 return false; 00085 } 00086 00087 if (args[1] == "1" && args[2].size() < 8) { 00088 CommandTerminal::setErrorMessage("Invalid name, expects minimum 8 characters"); 00089 return false; 00090 } 00091 00092 if (args[1] == "1" && args[2].size() > 128) { 00093 CommandTerminal::setErrorMessage("Invalid name, expects (string:128)"); 00094 return false; 00095 } 00096 00097 return true; 00098 } 00099 00100 CommandTerminal::setErrorMessage("Invalid arguments"); 00101 return false; 00102 }
Generated on Wed Jul 13 2022 06:20:58 by 1.7.2