Monitoring LoRaWAN - 3

15.12.2017
Monitoring LoRaWAN - 3

// Parse LoRa class B device beacon (RX2) downlink message
// https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5038744/
void parseLoraMsg() {
    int i;
    Serial.println(F("PHYPayload MHDR:"));
    Serial.print(F("MType: "));
    Serial.print((rxPacket[0] & B11100000) >> 5);
    Serial.print("\t");
    Serial.print(F("RFU: "));
    Serial.print((rxPacket[0] & B00011100) >> 2);
    Serial.print("\t");
    Serial.print(F("Major: "));
    Serial.println(rxPacket[0] & B00000011);
    Serial.println(F("MACPayload FHDR: "));
    Serial.print(F("DevAddr: "));
    for (i = 1; i < 5; i++) {
      Serial.print(rxPacket[i]);
    }
    Serial.println("");
    Serial.print(F("FCtrl:\tADR: "));
    Serial.print((rxPacket[5] & B10000000) >> 7);
    Serial.print(F(" ADRAckReq: "));
    Serial.print((rxPacket[5] & B01000000) >> 6);
    Serial.print(F(" ACK: "));
    Serial.print((rxPacket[5] & B00100000) >> 5);
    Serial.print(F(" RFU: "));
    Serial.print((rxPacket[5] & B00010000) >> 4);
    Serial.print(F(" FOptsLen: "));
    uint8_t foptslen = rxPacket[5] & B00001111;
    Serial.println(foptslen);
    Serial.print(F("FCnt: "));
    Serial.print(rxPacket[6]);
    Serial.print(rxPacket[7]);
    if (foptslen > 0) {
      Serial.println("");
      Serial.print(F("FOpts: (MACCommand(s) byte 1: CID, bytes 2-4: Args) "));
      for (i = 8; i < (8 + foptslen); i++) {
        Serial.print(rxPacket[i]);
      }
      foptslen = i;
    }
    else {
      foptslen = 8;
    }
    Serial.println("");
    Serial.print(F("FPort: "));
    Serial.print(rxPacket[foptslen]);
}

Comments

Popular posts from this blog

Modifying old SDR# TETRA demod plug-in

Mods for SDR# TETRA demod plugin 1.0.14.0 - 2