diff --git a/include/lorawan.h b/include/lorawan.h index e2239739..615bbc91 100644 --- a/include/lorawan.h +++ b/include/lorawan.h @@ -45,42 +45,6 @@ const char *getBwName(rps_t rps); const char *getCrName(rps_t rps); #if (VERBOSE) - -// a table for storage of LORAWAN MAC commands -typedef struct { - const uint8_t cid; - const char cmdname[20]; - const uint8_t params; -} mac_t; - -// table of LORAWAN MAC messages sent by the network to the device -// format: CDI, Command (max 19 chars), #parameters (bytes) -// source: LoRaWAN 1.1 Specification (October 11, 2017) -static const mac_t MACdn_table[] = { - {0x01, "ResetConf", 1}, {0x02, "LinkCheckAns", 2}, - {0x03, "LinkADRReq", 4}, {0x04, "DutyCycleReq", 1}, - {0x05, "RXParamSetupReq", 4}, {0x06, "DevStatusReq", 0}, - {0x07, "NewChannelReq", 5}, {0x08, "RxTimingSetupReq", 1}, - {0x09, "TxParamSetupReq", 1}, {0x0A, "DlChannelReq", 4}, - {0x0B, "RekeyConf", 1}, {0x0C, "ADRParamSetupReq", 1}, - {0x0D, "DeviceTimeAns", 5}, {0x0E, "ForceRejoinReq", 2}, - {0x0F, "RejoinParamSetupReq", 1}}; - -static const uint8_t MACdn_tSize = sizeof(MACdn_table) / sizeof(MACdn_table[0]); - -// table of LORAWAN MAC messages sent by the device to the network -static const mac_t MACup_table[] = { - {0x01, "ResetInd", 1}, {0x02, "LinkCheckReq", 0}, - {0x03, "LinkADRAns", 1}, {0x04, "DutyCycleAns", 0}, - {0x05, "RXParamSetupAns", 1}, {0x06, "DevStatusAns", 2}, - {0x07, "NewChannelAns", 1}, {0x08, "RxTimingSetupAns", 0}, - {0x09, "TxParamSetupAns", 0}, {0x0A, "DlChannelAns", 1}, - {0x0B, "RekeyInd", 1}, {0x0C, "ADRParamSetupAns", 0}, - {0x0D, "DeviceTimeReq", 0}, {0x0F, "RejoinParamSetupAns", 1}}; - -static const uint8_t MACup_tSize = sizeof(MACup_table) / sizeof(MACup_table[0]); - -void mac_decode(const uint8_t cmd[], const uint8_t cmdlen, bool is_down); void showLoraKeys(void); #endif // VERBOSE diff --git a/src/lorawan.cpp b/src/lorawan.cpp index fd601e97..d0c95c90 100644 --- a/src/lorawan.cpp +++ b/src/lorawan.cpp @@ -439,18 +439,6 @@ void myRxCallback(void *pUserData, uint8_t port, const uint8_t *pMsg, switch (port) { -// decode mac messages if we want to print those -#if (VERBOSE) - case MACPORT: - // decode downlink MAC commands - if (LMIC.dataBeg) - mac_decode(LMIC.frame, LMIC.dataBeg, true); - // decode uplink MAC commands - if (LMIC.pendMacLen) - mac_decode(LMIC.pendMacData, LMIC.pendMacLen, false); - break; // do not fallthrough to default, we are done -#endif - // rcommand received -> call interpreter case RCMDPORT: rcommand(pMsg, nMsg); @@ -483,52 +471,6 @@ const char *getCrName(rps_t rps) { return t[getCr(rps)]; } -#if (VERBOSE) -// decode LORAWAN MAC message -// see -// https://github.com/mcci-catena/arduino-lmic/blob/master/doc/LoRaWAN-at-a-glance.pdf -void mac_decode(const uint8_t cmd[], const uint8_t cmdlen, bool is_down) { - - if (!cmdlen) - return; - - uint8_t foundcmd[cmdlen], cursor = 0; - - // select CID resolve table - const mac_t *p; - p = is_down ? MACdn_table : MACup_table; - const int tablesize = is_down ? MACdn_tSize : MACup_tSize; - const String MACdir = is_down ? "-->" : "<--"; - - while (cursor < cmdlen) { - - // get number of commands in CID table - int i = tablesize; - - // lookup cmd in CID table - while (i--) { - if (cmd[cursor] == (p + i)->cid) { // lookup command in CID table - cursor++; // strip 1 byte CID - if ((cursor + (p + i)->params) <= cmdlen) { - memmove(foundcmd, cmd + cursor, - (p + i)->params); // strip opcode from cmd array - cursor += (p + i)->params; - ESP_LOGD(TAG, "%s %s", MACdir, (p + i)->cmdname); - } else - ESP_LOGD(TAG, "%s MAC command 0x%02X with missing parameter(s)", - MACdir, (p + i)->cid); - break; // command found -> exit table lookup loop - } // end of command validation - } // end of command table lookup loop - if (i < 0) { // command not found -> skip it - ESP_LOGD(TAG, "%s Unknown MAC command 0x%02X", MACdir, cmd[cursor]); - cursor++; - } - } // command parsing loop - -} // mac_decode() -#endif // VERBOSE - // following code snippet was taken from // https://github.com/JackGruber/ESP32-LMIC-DeepSleep-example/blob/master/src/main.cpp