AT command firmware for MultiTech Dot devices.

Fork of mDot_AT_firmware by MultiTech

Dot Library Not Included!

Because these example programs can be used for both mDot and xDot devices, the LoRa stack is not included. The libmDot library should be imported if building for mDot devices. The libxDot library should be imported if building for xDot devices. The AT firmware was last tested with mbed-os-5.4.7. Using a version past mbed-os-5.4.7 will cause the build to fail. The library used with the AT firmware has to match the mbed-os version.

Dot Library Version 3 Updates

Dot Library versions 3.x.x require a channel plan to be injected into the stack. The Dot-Examples and Dot-AT-Firmware do this by defining a macro called "CHANNEL_PLAN" that controls the channel plan that will be used in the examples. Available channel plans will be in the Dot Library repository in the plans folder.

Revision 20 and earlier of Dot-Examples and revision 15 and earlier of Dot-AT-Firmware should be used with Dot Library versions prior to 3.0.0.

Fota Library

Th Fota Library must be added to compile for mDot 3.1.0 with Fota support. Latest dev libraries and 3.2.0 release will include Fota with libmDot/libxDot.

AT Firmware Description

This AT Firmware is what ships on mDot and xDot devices. It provides an AT command interface for using the mDot or xDot for LoRa communication.

AT command documentation can be found on Multitech.com.

The firmware changelog can be found here. The library changelog can be found here.

Dot Libraries

Dot Library Limitations

The commit messages in libmDot-mbed5 and libmDot-dev-mbed5 specify the version of the Dot library the commit contains and the version of mbed-os it was compiled against. We recommend building your application with the version of mbed-os specified in the commit message of the version of the Dot library you're using. This will ensure that you don't run into any runtime issues caused by differences in the mbed-os versions.

Stable and development libraries are available for both mDot and xDot platforms. The library chosen must match the target platform. Compiling for the mDot platform with the xDot library or vice versa will not succeed.

mDot Library

Development library for mDot.

libmDot-dev

Stable library for mDot.

libmDot

xDot Library

Development library for xDot.

libxDot-dev

Stable library for xDot.

libxDot

Committer:
jreiss
Date:
Fri May 03 18:49:18 2019 +0000
Revision:
26:35c201bc5205
Parent:
23:4f0a981c0349
Update to Dot 3.2.1 release; Remove AutoSleep command; Update mbed-os to 5.11.1;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jenkins@jenkinsdm1 18:63f098f042b2 1 #include "CmdFactory.h"
jenkins@jenkinsdm1 18:63f098f042b2 2
jenkins@jenkinsdm1 18:63f098f042b2 3 Command* CmdFactory::Create(CmdId_t cmd)
jenkins@jenkinsdm1 18:63f098f042b2 4 {
jenkins@jenkinsdm1 18:63f098f042b2 5 switch (cmd) {
jenkins@jenkinsdm1 18:63f098f042b2 6 case eAT:
jenkins@jenkinsdm1 18:63f098f042b2 7 return new CmdAttention();
jenkins@jenkinsdm1 18:63f098f042b2 8 case eATI:
jenkins@jenkinsdm1 18:63f098f042b2 9 return new CmdIdentification();
jenkins@jenkinsdm1 18:63f098f042b2 10 case eATZ:
jenkins@jenkinsdm1 18:63f098f042b2 11 return new CmdResetCpu();
jenkins@jenkinsdm1 18:63f098f042b2 12 case eATE:
jenkins@jenkinsdm1 18:63f098f042b2 13 return new CmdDummy("Enable/Disable Echo", "ATE", "ATE0: disable, ATE1: enable", "(0,1)");
jenkins@jenkinsdm1 18:63f098f042b2 14 case eATVERBOSE:
jenkins@jenkinsdm1 18:63f098f042b2 15 return new CmdDummy("Enable/Disable Verbose", "ATV", "ATV0: disable, ATV1: enable", "(0,1)");
jenkins@jenkinsdm1 18:63f098f042b2 16 case eATK:
jenkins@jenkinsdm1 18:63f098f042b2 17 return new CmdDummy("Hardware Flow Control", "AT&K", "AT&K0: disable, AT&K3: enable", "(0,3)");
jenkins@jenkinsdm1 18:63f098f042b2 18 case eATF:
jenkins@jenkinsdm1 18:63f098f042b2 19 return new CmdFactoryDefault();
jenkins@jenkinsdm1 18:63f098f042b2 20 case eATW:
jenkins@jenkinsdm1 18:63f098f042b2 21 return new CmdSaveConfig();
jenkins@jenkinsdm1 18:63f098f042b2 22 case eATV:
jenkins@jenkinsdm1 18:63f098f042b2 23 return new CmdDisplayConfig();
jenkins@jenkinsdm1 18:63f098f042b2 24 case eATS:
jenkins@jenkinsdm1 18:63f098f042b2 25 return new CmdDisplayStats();
jenkins@jenkinsdm1 18:63f098f042b2 26 case eATR:
jenkins@jenkinsdm1 18:63f098f042b2 27 return new CmdResetStats();
jenkins@jenkinsdm1 18:63f098f042b2 28 case eIPR:
jenkins@jenkinsdm1 18:63f098f042b2 29 return new CmdSerialBaudRate();
jenkins@jenkinsdm1 18:63f098f042b2 30 case eDIPR:
jenkins@jenkinsdm1 18:63f098f042b2 31 return new CmdDebugBaudRate();
jenkins@jenkinsdm1 18:63f098f042b2 32 case eSMODE:
jenkins@jenkinsdm1 18:63f098f042b2 33 return new CmdStartUpMode();
jenkins@jenkinsdm1 18:63f098f042b2 34 case eDFREQ:
jenkins@jenkinsdm1 18:63f098f042b2 35 return new CmdDefaultFrequencyBand();
jenkins@jenkinsdm1 18:63f098f042b2 36 case eFREQ:
jenkins@jenkinsdm1 18:63f098f042b2 37 return new CmdFrequencyBand();
jenkins@jenkinsdm1 18:63f098f042b2 38 case eFSB:
jenkins@jenkinsdm1 18:63f098f042b2 39 return new CmdFrequencySubBand();
jenkins@jenkinsdm1 18:63f098f042b2 40 case ePN:
jenkins@jenkinsdm1 18:63f098f042b2 41 return new CmdPublicNetwork();
jenkins@jenkinsdm1 18:63f098f042b2 42 case eDI:
jenkins@jenkinsdm1 18:63f098f042b2 43 return new CmdDeviceId();
jenkins@jenkinsdm1 18:63f098f042b2 44 case eDC:
jenkins@jenkinsdm1 18:63f098f042b2 45 return new CmdDeviceClass();
jenkins@jenkinsdm1 18:63f098f042b2 46 case eLBT:
jenkins@jenkinsdm1 18:63f098f042b2 47 return new CmdLbt();
jenkins@jenkinsdm1 18:63f098f042b2 48 case eAP:
jenkins@jenkinsdm1 18:63f098f042b2 49 return new CmdAppPort();
jenkins@jenkinsdm1 18:63f098f042b2 50 case eNA:
jenkins@jenkinsdm1 18:63f098f042b2 51 return new CmdNetworkAddress();
jenkins@jenkinsdm1 18:63f098f042b2 52 case eNSK:
jenkins@jenkinsdm1 18:63f098f042b2 53 return new CmdNetworkSessionKey();
jenkins@jenkinsdm1 18:63f098f042b2 54 case eDSK:
jenkins@jenkinsdm1 18:63f098f042b2 55 return new CmdDataSessionKey();
jenkins@jenkinsdm1 18:63f098f042b2 56 case eULC:
jenkins@jenkinsdm1 18:63f098f042b2 57 return new CmdUplinkCounter();
jenkins@jenkinsdm1 18:63f098f042b2 58 case eDLC:
jenkins@jenkinsdm1 18:63f098f042b2 59 return new CmdDownlinkCounter();
jenkins@jenkinsdm1 18:63f098f042b2 60 case eSS:
jenkins@jenkinsdm1 18:63f098f042b2 61 return new CmdSaveSession();
jenkins@jenkinsdm1 18:63f098f042b2 62 case eRS:
jenkins@jenkinsdm1 18:63f098f042b2 63 return new CmdRestoreSession();
jenkins@jenkinsdm1 18:63f098f042b2 64 case eNK:
jenkins@jenkinsdm1 18:63f098f042b2 65 return new CmdNetworkKey();
jenkins@jenkinsdm1 18:63f098f042b2 66 case eNI:
jenkins@jenkinsdm1 18:63f098f042b2 67 return new CmdNetworkId();
jenkins@jenkinsdm1 18:63f098f042b2 68 case eJD:
jenkins@jenkinsdm1 18:63f098f042b2 69 return new CmdJoinDelay();
jenkins@jenkinsdm1 18:63f098f042b2 70 case eJOIN:
jenkins@jenkinsdm1 18:63f098f042b2 71 return new CmdJoinRequest();
jenkins@jenkinsdm1 18:63f098f042b2 72 case eJR:
jenkins@jenkinsdm1 18:63f098f042b2 73 return new CmdJoinRetries();
jenkins@jenkinsdm1 18:63f098f042b2 74 case eNJM:
jenkins@jenkinsdm1 18:63f098f042b2 75 return new CmdNetworkJoinMode();
jenkins@jenkinsdm1 18:63f098f042b2 76 case ePS:
jenkins@jenkinsdm1 18:63f098f042b2 77 return new CmdPreserveSession();
jenkins@jenkinsdm1 18:63f098f042b2 78 case eNJS:
jenkins@jenkinsdm1 18:63f098f042b2 79 return new CmdNetworkJoinStatus();
jenkins@jenkinsdm1 18:63f098f042b2 80 case eNLC:
jenkins@jenkinsdm1 18:63f098f042b2 81 return new CmdNetworkLinkCheck();
jenkins@jenkinsdm1 18:63f098f042b2 82 case eLCC:
jenkins@jenkinsdm1 18:63f098f042b2 83 return new CmdLinkCheckCount();
jenkins@jenkinsdm1 18:63f098f042b2 84 case eLCT:
jenkins@jenkinsdm1 18:63f098f042b2 85 return new CmdLinkCheckThreshold();
jenkins@jenkinsdm1 18:63f098f042b2 86 case eENC:
jenkins@jenkinsdm1 18:63f098f042b2 87 return new CmdEncryption();
jenkins@jenkinsdm1 18:63f098f042b2 88 case eRSSI:
jenkins@jenkinsdm1 18:63f098f042b2 89 return new CmdRssi();
jenkins@jenkinsdm1 18:63f098f042b2 90 case eSNR:
jenkins@jenkinsdm1 18:63f098f042b2 91 return new CmdSnr();
jenkins@jenkinsdm1 18:63f098f042b2 92 case eDP:
jenkins@jenkinsdm1 18:63f098f042b2 93 return new CmdDataPending();
jenkins@jenkinsdm1 18:63f098f042b2 94 case eSDR:
jenkins@jenkinsdm1 18:63f098f042b2 95 return new CmdSessionDataRate();
jenkins@jenkinsdm1 18:63f098f042b2 96 case eCHM:
jenkins@jenkinsdm1 18:63f098f042b2 97 return new CmdChannelMask();
jenkins@jenkinsdm1 18:63f098f042b2 98 case eTXDR:
jenkins@jenkinsdm1 18:63f098f042b2 99 return new CmdTxDataRate();
jenkins@jenkinsdm1 18:63f098f042b2 100 case eTXP:
jenkins@jenkinsdm1 18:63f098f042b2 101 return new CmdTxPower();
jenkins@jenkinsdm1 18:63f098f042b2 102 case eANT:
jenkins@jenkinsdm1 18:63f098f042b2 103 return new CmdAntennaGain();
jenkins@jenkinsdm1 18:63f098f042b2 104 case eTXF:
jenkins@jenkinsdm1 18:63f098f042b2 105 return new CmdTxFrequency();
Jason Reiss 23:4f0a981c0349 106 case eFO:
Jason Reiss 23:4f0a981c0349 107 return new CmdTxFrequencyOffset();
jenkins@jenkinsdm1 18:63f098f042b2 108 case eTXW:
jenkins@jenkinsdm1 18:63f098f042b2 109 return new CmdTxWait();
jenkins@jenkinsdm1 18:63f098f042b2 110 case eTXCH:
jenkins@jenkinsdm1 18:63f098f042b2 111 return new CmdTxChannel();
jenkins@jenkinsdm1 18:63f098f042b2 112 case eTXN:
jenkins@jenkinsdm1 18:63f098f042b2 113 return new CmdTxNextMs();
Jason Reiss 23:4f0a981c0349 114 case eTXS:
Jason Reiss 23:4f0a981c0349 115 return new CmdTxNextSize();
jenkins@jenkinsdm1 18:63f098f042b2 116 case eTOA:
jenkins@jenkinsdm1 18:63f098f042b2 117 return new CmdTimeOnAir();
jenkins@jenkinsdm1 18:63f098f042b2 118 case eRXD:
jenkins@jenkinsdm1 18:63f098f042b2 119 return new CmdRxDelay();
jenkins@jenkinsdm1 18:63f098f042b2 120 case eRXO:
jenkins@jenkinsdm1 18:63f098f042b2 121 return new CmdRxOutput();
jenkins@jenkinsdm1 18:63f098f042b2 122 case eCRC:
jenkins@jenkinsdm1 18:63f098f042b2 123 return new CmdCRC();
jenkins@jenkinsdm1 18:63f098f042b2 124 case eADR:
jenkins@jenkinsdm1 18:63f098f042b2 125 return new CmdAdaptiveDataRate();
jenkins@jenkinsdm1 18:63f098f042b2 126 case eACK:
jenkins@jenkinsdm1 18:63f098f042b2 127 return new CmdACKAttempts();
jenkins@jenkinsdm1 18:63f098f042b2 128 case eREP:
jenkins@jenkinsdm1 18:63f098f042b2 129 return new CmdRepeat();
Jason Reiss 23:4f0a981c0349 130 case ePP:
Jason Reiss 23:4f0a981c0349 131 return new CmdPingPeriod();
jenkins@jenkinsdm1 18:63f098f042b2 132 case eMAC:
jenkins@jenkinsdm1 18:63f098f042b2 133 return new CmdMacCmd();
jenkins@jenkinsdm1 18:63f098f042b2 134 case eSEND:
jenkins@jenkinsdm1 18:63f098f042b2 135 return new CmdSendString();
jenkins@jenkinsdm1 18:63f098f042b2 136 case eSENDB:
jenkins@jenkinsdm1 18:63f098f042b2 137 return new CmdSendBinary();
jenkins@jenkinsdm1 18:63f098f042b2 138 case eRECV:
jenkins@jenkinsdm1 18:63f098f042b2 139 return new CmdReceiveOnce();
jenkins@jenkinsdm1 18:63f098f042b2 140 case eSD:
jenkins@jenkinsdm1 18:63f098f042b2 141 return new CmdDummy("Serial Data Mode", "AT+SD", "Enter serial data mode, exit with '+++'", "NONE");
jenkins@jenkinsdm1 18:63f098f042b2 142 case eSLEEP:
jenkins@jenkinsdm1 18:63f098f042b2 143 return new CmdDummy("Sleep Mode", "AT+SLEEP", "Enter sleep mode (0:deepsleep,1:sleep)", "(0,1)");
jenkins@jenkinsdm1 18:63f098f042b2 144 case eSDCE:
jenkins@jenkinsdm1 18:63f098f042b2 145 return new CmdSerialClearOnError();
jenkins@jenkinsdm1 18:63f098f042b2 146 case eWM:
jenkins@jenkinsdm1 18:63f098f042b2 147 return new CmdWakeMode();
jenkins@jenkinsdm1 18:63f098f042b2 148 case eWI:
jenkins@jenkinsdm1 18:63f098f042b2 149 return new CmdWakeInterval();
jenkins@jenkinsdm1 18:63f098f042b2 150 case eWP:
jenkins@jenkinsdm1 18:63f098f042b2 151 return new CmdWakePin();
jenkins@jenkinsdm1 18:63f098f042b2 152 case eWD:
jenkins@jenkinsdm1 18:63f098f042b2 153 return new CmdWakeDelay();
jenkins@jenkinsdm1 18:63f098f042b2 154 case eWTO:
jenkins@jenkinsdm1 18:63f098f042b2 155 return new CmdWakeTimeout();
jenkins@jenkinsdm1 18:63f098f042b2 156 case ePING:
jenkins@jenkinsdm1 18:63f098f042b2 157 return new CmdPing();
jenkins@jenkinsdm1 18:63f098f042b2 158 case eLOG:
jenkins@jenkinsdm1 18:63f098f042b2 159 return new CmdLogLevel();
jenkins@jenkinsdm1 18:63f098f042b2 160 case eFOTA:
jenkins@jenkinsdm1 18:63f098f042b2 161 return new CmdFota();
Jason Reiss 23:4f0a981c0349 162 case eGPSTIME:
Jason Reiss 23:4f0a981c0349 163 return new CmdGpsTime();
Jason Reiss 23:4f0a981c0349 164 case eBLS:
Jason Reiss 23:4f0a981c0349 165 return new CmdBeaconLockStatus();
Jason Reiss 23:4f0a981c0349 166 case eLBTRSSI:
Jason Reiss 23:4f0a981c0349 167 return new CmdLBTRSSI();
Jason Reiss 23:4f0a981c0349 168 case eBAT:
Jason Reiss 23:4f0a981c0349 169 return new CmdBatteryLevel();
jenkins@jenkinsdm1 18:63f098f042b2 170 case ePRINT_TEST:
jenkins@jenkinsdm1 18:63f098f042b2 171 return new CmdDummy("***** Test Commands *****", "", "", "");
jenkins@jenkinsdm1 18:63f098f042b2 172 case eRXDR:
jenkins@jenkinsdm1 18:63f098f042b2 173 return new CmdRxDataRate();
jenkins@jenkinsdm1 18:63f098f042b2 174 case eSENDI:
jenkins@jenkinsdm1 18:63f098f042b2 175 return new CmdSendStringOnInterval();
Jason Reiss 23:4f0a981c0349 176 case eSENDC:
Jason Reiss 23:4f0a981c0349 177 return new CmdSendContinuous();
jenkins@jenkinsdm1 18:63f098f042b2 178 #ifdef MTS_RADIO_DEBUG_COMMANDS
jenkins@jenkinsdm1 18:63f098f042b2 179 case ePRINT_DEBUG:
jenkins@jenkinsdm1 18:63f098f042b2 180 return new CmdDummy("***** Debug Commands *****", "", "", "");
jenkins@jenkinsdm1 18:63f098f042b2 181 case eATWP:
jenkins@jenkinsdm1 18:63f098f042b2 182 return new CmdWriteProtectedConfig();
jenkins@jenkinsdm1 18:63f098f042b2 183 case eDREGS:
jenkins@jenkinsdm1 18:63f098f042b2 184 return new CmdDumpRegisters();
jenkins@jenkinsdm1 18:63f098f042b2 185 case eERASE:
jenkins@jenkinsdm1 18:63f098f042b2 186 return new CmdEraseFlash();
jenkins@jenkinsdm1 18:63f098f042b2 187 case eDD:
jenkins@jenkinsdm1 18:63f098f042b2 188 return new CmdDisableDutyCycle();
Jason Reiss 23:4f0a981c0349 189 case eRXF:
Jason Reiss 23:4f0a981c0349 190 return new CmdRxFrequency();
Jason Reiss 23:4f0a981c0349 191 case eRECVC:
Jason Reiss 23:4f0a981c0349 192 return new CmdReceiveContinuous();
jenkins@jenkinsdm1 18:63f098f042b2 193 #endif
jenkins@jenkinsdm1 18:63f098f042b2 194 default:
jenkins@jenkinsdm1 18:63f098f042b2 195 return NULL;
jenkins@jenkinsdm1 18:63f098f042b2 196 }
jenkins@jenkinsdm1 18:63f098f042b2 197 }