AT command firmware for MultiTech Dot devices.

Fork of mDot_AT_firmware by MultiTech

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers CmdDisplayConfig.cpp Source File

CmdDisplayConfig.cpp

00001 #include "CmdDisplayConfig.h"
00002 
00003 #if MTS_CMD_TERM_VERBOSE
00004 CmdDisplayConfig::CmdDisplayConfig() :
00005     Command("Display Settings", "AT&V", "Displays current settings and status", "TABLE")
00006 {
00007 
00008 }
00009 
00010 uint32_t CmdDisplayConfig::action(const std::vector<std::string>& args) {
00011     CommandTerminal::Serial()->writef("Device ID:\t\t");
00012     CommandTerminal::Serial()->writef("%s\r\n", mts::Text::bin2hexString(CommandTerminal::Dot()->getDeviceId(), ":").c_str());
00013 
00014     CommandTerminal::Serial()->writef("Default Frequency Band:\t%s\r\n", CommandTerminal::Dot()->FrequencyBandStr(CommandTerminal::Dot()->getDefaultFrequencyBand()).c_str());
00015     // using getChannelPlanName here instead of mDot::FrequencyBandStr allows AT firmware to properly display custom channel plan names
00016     CommandTerminal::Serial()->writef("Current Frequency Band:\t%s\r\n", CommandTerminal::Dot()->getChannelPlanName().c_str());
00017     CommandTerminal::Serial()->writef("Frequency Sub Band:\t%u\r\n", CommandTerminal::Dot()->getFrequencySubBand());
00018 
00019     int32_t ret = CommandTerminal::Dot()->getPublicNetwork();
00020     string network_mode = "Not defined";
00021     switch(ret) {
00022         case 0: network_mode = "Private MTS";
00023                 break;
00024         case 1: network_mode = "Public LoRaWAN";
00025                 break;
00026         case 2: network_mode = "Private LoRaWAN";
00027                 break;
00028     }
00029     CommandTerminal::Serial()->writef("Network Mode:\t\t%s\r\n", network_mode.c_str());
00030 
00031     CommandTerminal::Serial()->writef("Start Up Mode:\t\t%s\r\n", mDot::ModeStr(CommandTerminal::Dot()->getStartUpMode()).c_str());
00032 
00033     CommandTerminal::Serial()->writef("Network Address:\t%s\r\n", mts::Text::bin2hexString(CommandTerminal::Dot()->getNetworkAddress()).c_str());
00034 
00035     CommandTerminal::Serial()->writef("Network ID:\t\t");
00036     CommandTerminal::Serial()->writef("%s\r\n", mts::Text::bin2hexString(CommandTerminal::Dot()->getNetworkId(), ":").c_str());
00037 
00038     CommandTerminal::Serial()->writef("Network ID Passphrase:\t%s\r\n", CommandTerminal::Dot()->getNetworkName().c_str());
00039 
00040     CommandTerminal::Serial()->writef("Network Key:\t\t");
00041 
00042     CommandTerminal::Serial()->writef("%s\r\n", mts::Text::bin2hexString(CommandTerminal::Dot()->getNetworkKey(), ".").c_str());
00043     CommandTerminal::Serial()->writef("Network Key Passphrase:\t%s\r\n", CommandTerminal::Dot()->getNetworkPassphrase().c_str());
00044 
00045 
00046     CommandTerminal::Serial()->writef("Gen App Key:\t\t");
00047     CommandTerminal::Serial()->writef("%s\r\n", mts::Text::bin2hexString(CommandTerminal::Dot()->getGenAppKey(), ".").c_str());
00048 
00049     CommandTerminal::Serial()->writef("Network Session Key:\t");
00050     CommandTerminal::Serial()->writef("%s\r\n", mts::Text::bin2hexString(CommandTerminal::Dot()->getNetworkSessionKey(), ".").c_str());
00051 
00052     CommandTerminal::Serial()->writef("Data Session Key:\t");
00053     CommandTerminal::Serial()->writef("%s\r\n", mts::Text::bin2hexString(CommandTerminal::Dot()->getDataSessionKey(), ".").c_str());
00054 
00055     CommandTerminal::Serial()->writef("Network Join Mode:\t%s\r\n", mDot::JoinModeStr(CommandTerminal::Dot()->getJoinMode()).c_str());
00056 
00057     CommandTerminal::Serial()->writef("Network Join Retries:\t%u\r\n", CommandTerminal::Dot()->getJoinRetries());
00058 
00059     CommandTerminal::Serial()->writef("Preserve Session:\t%s\r\n", CommandTerminal::Dot()->getPreserveSession() ? "on" : "off");
00060 
00061     CommandTerminal::Serial()->writef("Dev Nonce:\t\t%d\r\n", CommandTerminal::Dot()->getDevNonce());
00062     CommandTerminal::Serial()->writef("Join Nonce:\t\t%d\r\n", CommandTerminal::Dot()->getAppNonce());
00063     CommandTerminal::Serial()->writef("Join Delay:\t\t%d\r\n", CommandTerminal::Dot()->getJoinDelay());
00064 
00065     CommandTerminal::Serial()->writef("Join Rx1 DR Offset:\t%d\r\n", CommandTerminal::Dot()->getJoinRx1DataRateOffset());
00066 
00067     CommandTerminal::Serial()->writef("Join Rx2 Datarate:\tDR%d - %s\r\n", CommandTerminal::Dot()->getJoinRx2DataRate(), CommandTerminal::Dot()->getDataRateDetails(CommandTerminal::Dot()->getJoinRx2DataRate()).c_str());
00068 
00069     CommandTerminal::Serial()->writef("Join Rx2 Frequency:\t%lu\r\n", CommandTerminal::Dot()->getJoinRx2Frequency());
00070 
00071     CommandTerminal::Serial()->writef("Device Class:\t\t%s\r\n", CommandTerminal::Dot()->getClass().c_str());
00072     CommandTerminal::Serial()->writef("Class B Timeout:\t%d s\r\n", CommandTerminal::Dot()->getClassCTimeout());
00073     CommandTerminal::Serial()->writef("Class C Timeout:\t%d s\r\n", CommandTerminal::Dot()->getClassBTimeout());
00074 
00075     CommandTerminal::Serial()->writef("App Port:\t\t%d\r\n", CommandTerminal::Dot()->getAppPort());
00076 
00077     CommandTerminal::Serial()->writef("Listen Before Talk:\t");
00078     if (CommandTerminal::Dot()->getLbtTimeUs() == 0 && CommandTerminal::Dot()->getLbtThreshold() == 0) {
00079         CommandTerminal::Serial()->writef("off\r\n");
00080     } else {
00081         CommandTerminal::Serial()->writef("%u us, %d dBm\r\n", CommandTerminal::Dot()->getLbtTimeUs(), CommandTerminal::Dot()->getLbtThreshold());
00082     }
00083 
00084     CommandTerminal::Serial()->writef("Link Check Threshold:\t");
00085     if (CommandTerminal::Dot()->getLinkCheckThreshold() == 0) {
00086         CommandTerminal::Serial()->writef("off\r\n");
00087     } else {
00088         CommandTerminal::Serial()->writef("%lu\r\n", CommandTerminal::Dot()->getLinkCheckThreshold());
00089     }
00090 
00091     CommandTerminal::Serial()->writef("Link Check Count:\t");
00092     if (CommandTerminal::Dot()->getLinkCheckCount() == 0) {
00093         CommandTerminal::Serial()->writef("off\r\n");
00094     } else {
00095         CommandTerminal::Serial()->writef("%lu packets\r\n", CommandTerminal::Dot()->getLinkCheckCount());
00096     }
00097 
00098     CommandTerminal::Serial()->writef("ACK Retries:\t\t");
00099     if (CommandTerminal::Dot()->getAck() == 0) {
00100         CommandTerminal::Serial()->writef("off\r\n");
00101     } else {
00102         CommandTerminal::Serial()->writef("%u\r\n", CommandTerminal::Dot()->getAck());
00103     }
00104 
00105     CommandTerminal::Serial()->writef("Packet Repeat:\t\t%d\r\n", CommandTerminal::Dot()->getRepeat());
00106 
00107     CommandTerminal::Serial()->writef("Adaptive Data Rate:\t%s\r\n", CommandTerminal::Dot()->getAdr() ? "on" : "off");
00108     CommandTerminal::Serial()->writef("Command Echo:\t\t%s\r\n", CommandTerminal::Dot()->getEcho() ? "on" : "off");
00109     CommandTerminal::Serial()->writef("Verbose Response:\t%s\r\n", CommandTerminal::Dot()->getVerbose() ? "on" : "off");
00110 
00111     CommandTerminal::Serial()->writef("Tx Frequency:\t\t%lu\r\n", CommandTerminal::Dot()->getTxFrequency());
00112 
00113     CommandTerminal::Serial()->writef("Tx Data Rate:\t\tDR%d - %s\r\n", CommandTerminal::Dot()->getTxDataRate(), CommandTerminal::Dot()->getDataRateDetails(CommandTerminal::Dot()->getTxDataRate()).c_str());
00114     CommandTerminal::Serial()->writef("Min/Max Tx Data Rate:\tMin: DR%d - %s\r\n\t\t\tMax: DR%d - %s\r\n", CommandTerminal::Dot()->getMinDatarate(), CommandTerminal::Dot()->getDataRateDetails(CommandTerminal::Dot()->getMinDatarate()).c_str(), CommandTerminal::Dot()->getMaxDatarate(), CommandTerminal::Dot()->getDataRateDetails(CommandTerminal::Dot()->getMaxDatarate()).c_str());
00115     CommandTerminal::Serial()->writef("Tx Power:\t\t%u\r\n", CommandTerminal::Dot()->getTxPower());
00116     CommandTerminal::Serial()->writef("Min/Max Tx Power:\tMin: %u\r\n\t\t\tMax: %u\r\n", CommandTerminal::Dot()->getMinTxPower(), CommandTerminal::Dot()->getMaxTxPower());
00117     CommandTerminal::Serial()->writef("Tx Antenna Gain:\t%d\r\n", CommandTerminal::Dot()->getAntennaGain());
00118     CommandTerminal::Serial()->writef("Tx Wait:\t\t%s\r\n", CommandTerminal::Dot()->getTxWait() ? "on" : "off");
00119 
00120     bool hasChannels = false;
00121     for (size_t i = 0; i < 16; i++) {
00122         if (CommandTerminal::Dot()->getConfigChannels()[i] != 0) {
00123             hasChannels = true;
00124             break;
00125         }
00126     }
00127 
00128     if (hasChannels) {
00129         CommandTerminal::Serial()->writef("Tx Channels --------------------------------------\r\n");
00130         CommandTerminal::Serial()->writef("\tIndex\tFrequency\tDR Range\r\n");
00131         for (size_t i = 0; i < 16; i++) {
00132             if (CommandTerminal::Dot()->getConfigChannels()[i] != 0)
00133                 CommandTerminal::Serial()->writef("\t%d:\t%09lu\t%02x\r\n", i, CommandTerminal::Dot()->getConfigChannels()[i], CommandTerminal::Dot()->getConfigChannelRanges()[i]);
00134         }
00135         CommandTerminal::Serial()->writef("--------------------------------------------------\r\n");
00136     }
00137 
00138     CommandTerminal::Serial()->writef("Rx Delay:\t\t%d s\r\n", CommandTerminal::Dot()->getRxDelay());
00139 //    CommandTerminal::Serial()->writef("Rx Frequency:\t\t%lu\r\n", CommandTerminal::Dot()->getRxFrequency());
00140 //    CommandTerminal::Serial()->writef("Rx Data Rate:\t\t%s\r\n", mDot::DataRateStr(CommandTerminal::Dot()->getRxDataRate()).c_str());
00141 
00142     CommandTerminal::Serial()->writef("Rx Output Style:\t%s\r\n", mDot::RxOutputStr(CommandTerminal::Dot()->getRxOutput()).c_str());
00143 
00144     CommandTerminal::Serial()->writef("Debug Baud Rate:\t%lu\r\n", CommandTerminal::Dot()->getDebugBaud());
00145     CommandTerminal::Serial()->writef("Serial Baud Rate:\t%lu\r\n", CommandTerminal::Dot()->getBaud());
00146     CommandTerminal::Serial()->writef("Serial Flow Control:\t%s\r\n", CommandTerminal::Dot()->getFlowControl() == 0 ? "off" : "on");
00147     CommandTerminal::Serial()->writef("Serial Clear On Error:\t%s\r\n", CommandTerminal::Dot()->getSerialClearOnError() == 0 ? "off" : "on");
00148 
00149     uint8_t mode = CommandTerminal::Dot()->getWakeMode();
00150     CommandTerminal::Serial()->writef("Wake Mode:\t\t%s\r\n", mode == 0 ? "INTERVAL" : ( mode == 1 ? "INTERRUPT" : "BOTH"));
00151     CommandTerminal::Serial()->writef("Wake Interval:\t\t%lu s\r\n", CommandTerminal::Dot()->getWakeInterval());
00152     CommandTerminal::Serial()->writef("Wake Delay:\t\t%lu ms\r\n", CommandTerminal::Dot()->getWakeDelay());
00153     CommandTerminal::Serial()->writef("Wake Timeout:\t\t%u ms\r\n", CommandTerminal::Dot()->getWakeTimeout());
00154     CommandTerminal::Serial()->writef("Wake Pin:\t\t%s\r\n", mDot::pinName2Str(CommandTerminal::Dot()->getWakePin()).c_str());
00155 
00156     CommandTerminal::Serial()->writef("Log Level:\t\t%ld\r\n", CommandTerminal::Dot()->getLogLevel());
00157 
00158     return 0;
00159 }
00160 
00161 #endif // MTS_CMD_TERM_VERBOSE