mcci-catena / arduino-lmic

LoraWAN-MAC-in-C library, adapted to run under the Arduino environment
https://forum.mcci.io/c/device-software/arduino-lmic/
MIT License
638 stars 208 forks source link

30 minutes delay between LMIC_setTxData2 and actual send #963

Open i-g-g-y opened 2 months ago

i-g-g-y commented 2 months ago

Hello.

There is a serious bug in the timing of the library.

I am using;

I keep track of time and send out a packet every 2 hours with;

` // Check if there is not a current TX/RX job running if (LMIC.opmode & OP_TXRXPEND) { Serial.println(F("OP_TXRXPEND, not sending")); } else { // Prepare upstream data transmission at the next possible time. last_tx_time = millis(); Serial.print("\r\nTx req."); os_setTimedCallback(&sendjob, os_getTime()+ms2osticks(100), do_send);

  LMIC_setTxData2(1, txBuffer, sizeof(txBuffer)-1, 0);

  Serial.println(F("Packet queued!"));

} `

Expected behavior

This should send data out after 100ms, as the os_runloop_once() is constantly being called.

Most times it works flawlessly, but sometimes I get 30 minutes of delay between queuing the packet and the actual send. Why is that?

23:02:53.432 -> Tx req.Packet queued! 23:02:53.571 -> Packet queued! 23:03:26.946 -> ........................1341662618: EV_TXSTART 23:26:46.086 -> 1341829732: EV_TXCOMPLETE (includes waiting for RX windows)