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 CommandFactory.cpp Source File

CommandFactory.cpp

00001 #include "CommandFactory.h"
00002 
00003 #if MTS_CMD_TERM_VERBOSE
00004 #define CMD_DUMMY(n,t,d,u)  CmdDummy(n,t,d,u)
00005 #else
00006 #define CMD_DUMMY(n,t,d,u)  CmdDummy(t)
00007 #endif
00008 
00009 Command* CommandFactory::Create(CmdId_t cmd)
00010 {
00011     switch (cmd) {
00012     case eAT:
00013         return new CMD_DUMMY("Attention", "AT", "Attention", "");
00014     case eATI:
00015         return new CmdIdentification();
00016     case eLW:
00017         return new CMD_DUMMY("LoRaWAN MAC Version", "AT+LW", "Show support LoRaWAN MAC Version", "");
00018     case eATZ:
00019         return new CmdResetCpu();
00020     case eATE:
00021         return new CMD_DUMMY("Enable/Disable Echo", "ATE", "ATE0: disable, ATE1: enable", "(0,1)");
00022     case eATVERBOSE:
00023         return new CMD_DUMMY("Enable/Disable Verbose", "ATV", "ATV0: disable, ATV1: enable", "(0,1)");
00024     case eATK:
00025         return new CMD_DUMMY("Hardware Flow Control", "AT&K", "AT&K0: disable, AT&K3: enable", "(0,3)");
00026     case eATF:
00027         return new CmdFactoryDefault();
00028     case eATW:
00029         return new CMD_DUMMY("Save Configuration", "AT&W", "Save configuration to flash memory", "NONE");
00030 #if MTS_CMD_TERM_VERBOSE
00031     case eATV:
00032         return new CmdDisplayConfig();
00033     case eATS:
00034         return new CmdDisplayStats();
00035 #endif
00036     case eATR:
00037         return new CmdResetStats();
00038     case eIPR:
00039         return new CmdSerialBaudRate();
00040     case eDIPR:
00041         return new CmdDebugBaudRate();
00042     case eSMODE:
00043         return new CmdStartUpMode();
00044     case eDFREQ:
00045         return new CmdDefaultFrequencyBand();
00046     case eFREQ:
00047         return new CmdFrequencyBand();
00048     case eFSB:
00049         return new CmdFrequencySubBand();
00050     case ePN:
00051         return new CmdPublicNetwork();
00052     case eDI:
00053         return new CmdDeviceId();
00054     case eDC:
00055         return new CmdDeviceClass();
00056     case eLBT:
00057         return new CmdLbt();
00058     case eAP:
00059         return new CmdAppPort();
00060     case eNA:
00061         return new CmdNetworkAddress();
00062     case eNSK:
00063         return new CmdNetworkSessionKey();
00064     case eDSK:
00065         return new CmdDataSessionKey();
00066     case eULC:
00067         return new CmdUplinkCounter();
00068     case eDLC:
00069         return new CmdDownlinkCounter();
00070     case eSS:
00071         return new CMD_DUMMY("Save Network Session", "AT+SS", "Save network session info to flash", "NONE");
00072     case eRS:
00073         return new CmdRestoreSession();
00074     case eCDI:
00075         return new CmdCustomDeviceID();
00076     case eCSN:
00077         return new CmdCustomSerialNumber();
00078     case eNK:
00079         return new CmdNetworkKey();
00080     case eGK:
00081         return new CmdGenAppKey();
00082     case eNI:
00083         return new CmdNetworkId();
00084     case eJD:
00085         return new CmdJoinDelay();
00086     case eJOIN:
00087         return new CmdJoinRequest();
00088     case eJR:
00089         return new CmdJoinRetries();
00090     case eJN:
00091         return new CmdJoinNonce();
00092     case eJNV:
00093         return new CmdJoinNonceValidation();
00094     case eNJM:
00095         return new CmdNetworkJoinMode();
00096     case ePS:
00097         return new CmdPreserveSession();
00098     case eNJS:
00099         return new CmdNetworkJoinStatus();
00100     case eNLC:
00101         return new CmdNetworkLinkCheck();
00102     case eLCC:
00103         return new CmdLinkCheckCount();
00104     case eLCT:
00105         return new CmdLinkCheckThreshold();
00106     case eRSSI:
00107         return new CmdRssi();
00108     case eSNR:
00109         return new CmdSnr();
00110     case eDP:
00111         return new CMD_DUMMY("Data Pending", "AT+DP", "Indicator of data in queue on server", "(0,1)");
00112     case eSDR:
00113         return new CmdSessionDataRate();
00114     case eCHM:
00115         return new CmdChannelMask();
00116     case eTXDR:
00117         return new CmdTxDataRate();
00118     case eTXP:
00119         return new CmdTxPower();
00120     case eANT:
00121         return new CmdAntennaGain();
00122     case eTXF:
00123         return new CmdTxFrequency();
00124     case eFO:
00125         return new CmdTxFrequencyOffset();
00126     case eTXW:
00127         return new CmdTxWait();
00128     case eTXCH:
00129         return new CmdTxChannel();
00130     case eTXN:
00131         return new CmdTxNextMs();
00132     case eTXS:
00133         return new CmdTxNextSize();
00134     case eTOA:
00135         return new CmdTimeOnAir();
00136     case eMCRX:
00137         return new CmdMulticastRx();
00138     case eRXD:
00139         return new CmdRxDelay();
00140     case eRXO:
00141         return new CmdRxOutput();
00142     case eADR:
00143         return new CmdAdaptiveDataRate();
00144     case eACK:
00145         return new CmdACKAttempts();
00146     case eBTO:
00147         return new CmdClassBTimeout();
00148     case eCTO:
00149         return new CmdClassCTimeout();
00150     case eREP:
00151         return new CmdRepeat();
00152     case ePP:
00153         return new CmdPingPeriod();
00154     case eMAC:
00155         return new CmdMacCmd();
00156     case eSEND:
00157         return new CmdSendString();
00158     case eSENDB:
00159         return new CmdSendBinary();
00160     case eRECV:
00161         return new CmdReceiveOnce();
00162     case eURC:
00163         return new CMD_DUMMY("Unsolicited Response Code", "AT+URC", "Output packets to terminal when received", "(0,1)");
00164     case eSD:
00165         return new CMD_DUMMY("Serial Data Mode", "AT+SD", "Enter serial data mode, exit with '+++'", "NONE");
00166     case eSLEEP:
00167         return new CMD_DUMMY("Sleep Mode", "AT+SLEEP", "Enter sleep mode (0:deepsleep,1:sleep)", "(0,1)");
00168     case eSDCE:
00169         return new CmdSerialClearOnError();
00170     case eWM:
00171         return new CmdWakeMode();
00172     case eWI:
00173         return new CmdWakeInterval();
00174     case eWP:
00175         return new CmdWakePin();
00176     case eWD:
00177         return new CmdWakeDelay();
00178     case eWTO:
00179         return new CmdWakeTimeout();
00180     case ePING:
00181         return new CmdPing();
00182     case eRTC:
00183         return new CmdRtc();
00184     case eLOG:
00185         return new CmdLogLevel();
00186     case eFOTA:
00187         return new CmdFota();
00188     case eGPSTIME:
00189         return new CmdGpsTime();
00190     case eBLS:
00191         return new CmdBeaconLockStatus();
00192     case eLBTRSSI:
00193         return new CmdLBTRSSI();
00194     case eBAT:
00195         return new CmdBatteryLevel();
00196     case eATWP:
00197         return new CMD_DUMMY("Write Protected Config", "AT&WP", "Write protected config to flash (DevEUI, AppEUI, AppKey, Frequency Band)", "NONE");
00198     case eMEM:
00199         return new CMD_DUMMY("Free Memory", "AT+MEM", "Show amount of free RAM available", "");
00200 #if defined(TARGET_MTS_MDOT_F411RE)
00201     case eREPAIR:
00202         return new CmdRepairFlash();
00203     case eWOTP:
00204         return new CmdWriteOtp();
00205 #endif
00206     case eDUTY:
00207         return new CmdDutyCycle();
00208     case eDD:
00209         return new CmdDisableDutyCycle();
00210 #if MTS_CMD_TERM_TEST_COMMANDS
00211     case ePRINT_TEST:
00212         return new CMD_DUMMY("** Test Commands **", "", "", "");
00213     case eSENDI:
00214         return new CmdSendStringOnInterval();
00215     case eSENDC:
00216         return new CmdSendContinuous();
00217     case eSW:
00218         return new CmdSweep();
00219 #endif
00220 #ifdef MTS_RADIO_DEBUG_COMMANDS
00221     case ePRINT_DEBUG:
00222         return new CMD_DUMMY("** Debug Commands **", "", "", "");
00223     case eDREGS:
00224         return new CmdDumpRegisters();
00225     case eERASE:
00226         return new CmdEraseFlash();
00227     case eRECVC:
00228         return new CmdReceiveContinuous();
00229 #endif
00230 #if defined(TARGET_XDOT_MAX32670)
00231     case eVDDMIN:
00232         return new CmdVddMin();
00233 #ifdef MTS_RADIO_CTRL_COMMANDS
00234     case ePRINT_RADIO_CTRL:
00235         return new CMD_DUMMY("** Radio Control Commmands **", "", "", "");
00236     case ePADUTYCONF:
00237         return new CmdPaDutyConf();
00238     case eHPMAXCONF:
00239         return new CmdHpMaxConf();
00240     case eLNACONF:
00241         return new CmdLnaConf();
00242     case eXTATRIM:
00243         return new CmdXTATrim();
00244     case eXTBTRIM:
00245         return new CmdXTBTrim();
00246     case eSWT:
00247         return new CmdSetSW();
00248     case eRAMP:
00249         return new CmdRamp();
00250     case eINF:
00251         return new CmdInfPreamble();
00252     case eRADSLEEP:
00253         return new CmdRadioSleep();
00254     case eSENDDI:
00255         return new CmdSendDI();
00256     case eRXF:
00257         return new CmdRxFrequency();
00258     case eRXDR:
00259         return new CmdRxDataRate();
00260 #endif
00261 #endif
00262     default:
00263         return NULL;
00264     }
00265 }