Event during ESB simultaneous packet transmission

I am using ESB communication.

In general situations, data transmission works well. However, issues arise when multiple PTX devices transmit simultaneously.

It's understandable if packets are lost at the PRX. However, it's confusing why ESB_EVENT_TX_SUCCESS events occur at the PTX.

I have configured ESB as follows:

esb_config.selective_auto_ack = false
.tx_payload.noack = false

Since the data wasn't received at the PRX, I expected the PTX to receive ESB_EVENT_TX_FAIL events, but the result was different.

Is there a way for the PTX to confirm if packets weren't received at the PRX when multiple PTX devices transmit simultaneously?

Parents
  • Hi 

    How often do you normally transmit packets from each PTX? 

    Do you have multiple PTX's transmitting using the same RF address? 

    If so it makes sense that you might get in a situation where PTX1 incorrectly assumes that a packet from PTX2 is an ACK from the PRX, rather than a distinct packet. There is no particular data in the packet to differentiate ACK packets from regular packets. 

    Best regards
    Torbjørn

  • Hello,

    All transmissions are being done on the same channel.

    We have designed it to avoid collisions through time delays, but we wanted to check if data loss during simultaneous transmissions could cause EVENT_FAIL.

    Is it possible to resolve this ACK issue by modifying the on_radio_disabled_tx_wait_for_ack function in the SDK?

  • Hi 

    starlight said:
    We have designed it to avoid collisions through time delays, but we wanted to check if data loss during simultaneous transmissions could cause EVENT_FAIL.

    You would expect packet collisions to lead through TX_FAIL on some or all of the PTX's, yes. Especially if there is nothing received on the PRX side. 

    Could there be more than one PRX in the network? 

    Are you sending the exact same payload over and over, or will there be some changing data in each payload?

    starlight said:
    Is it possible to resolve this ACK issue by modifying the on_radio_disabled_tx_wait_for_ack function in the SDK?

    Until we fully understand the issue it is hard to answer this question. 

    Best regards
    Torbjørn

Reply
  • Hi 

    starlight said:
    We have designed it to avoid collisions through time delays, but we wanted to check if data loss during simultaneous transmissions could cause EVENT_FAIL.

    You would expect packet collisions to lead through TX_FAIL on some or all of the PTX's, yes. Especially if there is nothing received on the PRX side. 

    Could there be more than one PRX in the network? 

    Are you sending the exact same payload over and over, or will there be some changing data in each payload?

    starlight said:
    Is it possible to resolve this ACK issue by modifying the on_radio_disabled_tx_wait_for_ack function in the SDK?

    Until we fully understand the issue it is hard to answer this question. 

    Best regards
    Torbjørn

Children
  • 1. There may be more than one PRX in the network. However, since the channels are separated, I believe there will be no interference.

    2. The data in each PTX contains some change data for each payload. In other words, the data is not the same.

    Through retesting, I will verify whether TX_SUCCESS or TX_FAIL occurs when data is transmitted simultaneously.

    Before the test, I have a question. If three PTXs simultaneously transmit different data, and let's assume PRX receives one of these data packets. In this case, will TX_SUCCESS occur only on the PTX that successfully transmitted the data received by PRX, or will TX_SUCCESS occur on all three PTX?

    Best regards

  • Hi 

    starlight said:
    If three PTXs simultaneously transmit different data, and let's assume PRX receives one of these data packets. In this case, will TX_SUCCESS occur only on the PTX that successfully transmitted the data received by PRX, or will TX_SUCCESS occur on all three PTX?

    Assuming the ACK is empty the handling of processing the ACK is quite simple, and if three PTX's send a packet very close in time you could get in a situation where all of them receive and accept the ACK, even if only one of the packets were actually received by the PRX. 

    In other words it is theoretically possible that they all report TX_SUCCESS even if only one of them actually got it's data through. 

    If you suspect that this is happening it should be possible to look at the logs from the PTX's and PRX, and check if you get more TX_SUCCESS events combined than RX_RECEIVED events on the PRX. 

    Best regards
    Torbjørn

Related