How to handle ESB_EVENT_TX_FAILED?

Hi everyone!

I am using ESB with the nRF5340dk without ACK, but from time to time need to send a packet with an ACK request in order to send some commands from the receiver side. The problem is that, if this transmission fails (ESB_EVENT_TX_FAILED), I'm unable to resend the other packets. I've already tried to call esb_start_tx, but this triggers a loop of ESB_EVENT_TX_FAILED events. How should I handle this event in order to continue sending packets after ACK reception fails?

Parents
  • Hello,

    Have you tried (at least for test) flushing using esb_flush_tx()&esb_flush_rx() on both or either sides when the issue occurs to see if that affect the issue?

    If that doesn't help:

    Do I understand it correctly you are always using the esb_write_payload() command, but with the .noack bit set most of the time to disable ack?

    Do I understand it correctly that the ESB_EVENT_TX_FAILED you experience here, happen on the PTX?

    Do I understand it correctly that all packets here are unique? In other words just make sure (at least for test) that the packets before/after the packet sent without the .noack bit set is different.

    Best regards,
    Kenneth

  • Flushing after the issue occurs didn't work.

    • Yes. I'm using the esb_write_payload() command with .noack bit set for most of the time. Except for that periodic packet to carry commands from the receiving device.
    • Yes. This ESB_EVENT_TX_FAILED event occurs on the PTX side when I turn off the receiver.
    • Yes. All packets are unique. They are chunks of a bigger data object.
Reply Children
No Data
Related