I was curious if there was anything in the heltec library that would notify if there was transmission failure when sending a LoRa packet. Transmit speed is important and I don’t want to wait on an acknowledgement. Would there be anyway to detect if a packet wasn’t sent properly and then immediately retransmit?
ESP32 WIFI LoRa 32(V2) - Heltec library retransmit packets
Remember that we’re talking about what is effectively a radio broadcast here. Even if a packet were to be received in one location, there’s no guarantee that reception would be the same in a different location—assuming that you’re actually interested in the signal’s being received, not just transmitted ‘properly’.
Just like in the Internet, the only real way to be sure that a packet has been received is for the intended recipient to acknowledge receipt (like TCP vs UDP). Even if you only want to know that the packet has been transmitted properly, someone/something still has to have received the signal to verify that.
While LoRa does support full duplex operation, I don’t believe that a Node can receive its own signal while transmitting, and even if it could, this would not help to determine if any other receiver might have received the signal. And if you’re transmitting ‘properly’ but no one is receiving, what is the point?
In my own [just LoRa, not LoRaWAN] network, there are two reasons why a packet might not have been transmitted ‘properly’. The first is a collision, two Nodes transmitting simultaneously. The second is that the recipient is busy, one way or another, at the time of transmission—maybe the recipient is the Node causing the collision, or maybe the receiver is doing something else at that moment and can’t ‘take the call’. Or maybe reception is just not good. These situations can all be resolved, the former two at least, by retransmitting the packet and the only way I know of determining if retransmission is necessary, if retransmission of that particular packet is indeed necessary (cf. UDP), is for the intended recipient to acknowledge receipt.
For the bulk of the time when sensors are transmitting data to a gateway, for example, it could be argued that ‘reliable’ transmission is not really necessary—an application, one that only wants to be using LoRa, and not LoRaWAN, for example, can usually be built to tolerate the occasional loss of packets.
Thank you for the detailed response. I suspected what I was trying to acheive wasn’t necessarily technically possible, but it’s nice to know there are some practical workarounds.