Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mDot_AT_firmware by
CmdNetworkId.cpp
00001 #include "CmdNetworkId.h" 00002 00003 CmdNetworkId::CmdNetworkId() : 00004 #if MTS_CMD_TERM_VERBOSE 00005 Command("Network ID", "AT+NI", "Configured Network Name/EUI (MSB, App EUI in LoRaWAN) AT+NI=0/2,hex AT+NI=1,network_name (Net ID = crc64(network_name)) (8 bytes)", "(0/2,(hex:8)),(1,(string:128))") 00006 #else 00007 Command("AT+NI") 00008 #endif 00009 { 00010 _queryable = true; 00011 } 00012 00013 uint32_t CmdNetworkId::action(const std::vector<std::string>& args) 00014 { 00015 char arg1 = '\0'; 00016 if ((args.size() >= 2) && (args[1].size() == 1)) { 00017 arg1 = args[1][0]; 00018 } 00019 00020 if ((args.size() == 1) || ((args.size() == 3) && (args[2].size() == 1) && (args[2][0] == '?'))) { 00021 #if defined(TARGET_MTS_MDOT_F411RE) || defined(TARGET_XDOT_L151CC) || defined(TARGET_XDOT_MAX32670) 00022 if (arg1 == '2') { 00023 CommandTerminal::Serial()->writef("%s\r\n", mts::Text::bin2hexString(CommandTerminal::Dot()->getProtectedAppEUI(), "-").c_str()); 00024 } else 00025 #endif 00026 { 00027 CommandTerminal::Serial()->writef("%s\r\n", mts::Text::bin2hexString(CommandTerminal::Dot()->getNetworkId(), "-").c_str()); 00028 00029 if (!CommandTerminal::Dot()->getNetworkName().empty()) 00030 CommandTerminal::Serial()->writef("Passphrase: '%s'\r\n", CommandTerminal::Dot()->getNetworkName().c_str()); 00031 } 00032 } else if (args.size() >= 3) { 00033 if (arg1 == '1') 00034 { 00035 std::string text = args[2]; 00036 00037 // passphrase was split on commas 00038 for (size_t i = 3; i < args.size(); i++) 00039 { 00040 text.append(","); 00041 text.append(args[i]); 00042 } 00043 00044 if (CommandTerminal::Dot()->setNetworkName(text) == mDot::MDOT_OK) 00045 { 00046 #if MTS_CMD_TERM_VERBOSE 00047 CommandTerminal::Serial()->writef("Set Network Name: "); 00048 CommandTerminal::Serial()->writef("%s\r\n", text.c_str()); 00049 #endif 00050 } 00051 else 00052 { 00053 return 1; 00054 } 00055 } 00056 else 00057 { 00058 std::vector<uint8_t> NewEUI; 00059 readByteArray(args[2], NewEUI, EUI_LENGTH); 00060 if (arg1 != '2') { 00061 if (CommandTerminal::Dot()->setNetworkId(NewEUI) == mDot::MDOT_OK) 00062 { 00063 #if MTS_CMD_TERM_VERBOSE 00064 CommandTerminal::Serial()->writef("Set Network ID: "); 00065 CommandTerminal::Serial()->writef("%s\r\n", mts::Text::bin2hexString(NewEUI, "-").c_str()); 00066 #endif 00067 } 00068 else 00069 { 00070 return 1; 00071 } 00072 } else { 00073 #if defined(TARGET_MTS_MDOT_F411RE) || defined(TARGET_XDOT_L151CC) || defined(TARGET_XDOT_MAX32670) 00074 00075 if (CommandTerminal::Dot()->setProtectedAppEUI(NewEUI) == mDot::MDOT_OK) 00076 { 00077 #if MTS_CMD_TERM_VERBOSE 00078 CommandTerminal::Serial()->writef("Set Protected AppEUI: "); 00079 CommandTerminal::Serial()->writef("%s\r\n", mts::Text::bin2hexString(NewEUI, "-").c_str()); 00080 #endif 00081 } 00082 else 00083 { 00084 return 1; 00085 } 00086 #endif 00087 } 00088 } 00089 } 00090 00091 return 0; 00092 } 00093 00094 bool CmdNetworkId::verify(const std::vector<std::string>& args) 00095 { 00096 if (args.size() == 1) 00097 return true; 00098 00099 if (args.size() > 1 && args[1].size() == 1) { 00100 00101 char arg1 = args[1][0]; 00102 00103 if (args.size() == 2 && arg1 == '2') 00104 return true; 00105 00106 if (args.size() >= 3) { 00107 if (arg1 != '0' && arg1 != '1' && arg1 != '2') { 00108 #if MTS_CMD_TERM_VERBOSE 00109 CommandTerminal::setErrorMessage("Invalid type, expects (0,1,2)"); 00110 #endif 00111 return false; 00112 } 00113 00114 if ((arg1 == '0' || arg1 == '2') && args[2] != "?" && !isHexString(args[2], 8)) { 00115 #if MTS_CMD_TERM_VERBOSE 00116 CommandTerminal::setErrorMessage("Invalid ID, expects (hex:8)"); 00117 #endif 00118 return false; 00119 } else { 00120 if (args[2].size() < 8) { 00121 if (!((args[2].size() == 1) && (args[2][0] == '?'))) { 00122 #if MTS_CMD_TERM_VERBOSE 00123 CommandTerminal::setErrorMessage("Invalid name, expects minimum 8 characters"); 00124 #endif 00125 return false; 00126 } 00127 } else if (args[2].size() > 128) { 00128 #if MTS_CMD_TERM_VERBOSE 00129 CommandTerminal::setErrorMessage("Invalid name, expects (string:128)"); 00130 #endif 00131 return false; 00132 } 00133 } 00134 00135 return true; 00136 } 00137 } 00138 00139 #if MTS_CMD_TERM_VERBOSE 00140 CommandTerminal::setErrorMessage("Invalid arguments"); 00141 #endif 00142 return false; 00143 }
Generated on Wed Jan 15 2025 16:10:47 by
1.7.2
