rgot-org / TheThingsNetwork_esp32

82 stars 24 forks source link

Strange content in received message buffer. #12

Closed michael-bartmann closed 4 years ago

michael-bartmann commented 4 years ago

The code worked almost immediately with my Heltec V2 board without having to adjust pin mapping. Both OTA and ABP work. Uplink payloads are delivered to the TTN console just fine. But downlink messages are not. The registered onMessage function is called, but it points to some other stuff. When I receive large messages, the real start is sometimes 9 bytes further in the buffer, seemingly hidden after other (header?) fields.

michael-bartmann commented 4 years ago

I do not really understand the buffer offsets. I am more a Java developer. But it I change line #1002 of TTN_esp32.cpp to: std::copy(LMIC.frame + 9, LMIC.frame + 9 + LMIC.dataLen, downlink); the receiving of Downlink messages works just fine. So maybe LMIC.frame isn't the right field offset? Works for me...

rgot-org commented 4 years ago

you're right LMIC.message contains the information of the MAC frame the first byte corresponds to the operation code, the next 4 correspond to the address the next 2 to the frame counter finally the last to the port number. Then the data arrives. see Lorawan doc page 15 and next. corected

rgot-org commented 4 years ago

add 9 bytes offset in mac frame to get payload.