This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

What distinguishes an ACK packet on-air from a regular packet?

I would like to implement a simple wireless sensor network, using Enhanced Shockburst with Auto-ACK. The idea is that there will be many sensor nodes (SNs) reporting to one master node (MN). The MN will listen on address P0 (say 0x0011223344) and all SNs will transmit to this address on an intermittent, periodic basis.

Assume I have auto-ack enabled everywhere.

  1. Node SN0 transmits a packet with PID=1, it begins listening on P0 for an ACK from MN.
  2. Before the ACK can be sent, a second node SN1 transmits a packet with PID=1 also.
  3. Since SN0 is listening on P0 while SN1 is transmitting on P0, will SN0 mistakenly identify SN1's data packet as an ack from MN?

As far as I can tell, for the same PID, there is no difference between a regular data packet and an ack-with-payload: I am assuming that ACKs are always sent with the NO_ACK bit of the PCF set to 1, and that a PTX detects a valid ack if ((ack_pid == last_tx_pid) && (ack_nak == 0)) ???

If this is the case, then I can assume that the answer to my question above is "no", but what about this:

  1. Node SN0 transmits a packet with PID=1, it begins listening on P0 for an ACK from MN.
  2. Before the ACK can be sent, a second node SN1 transmits a packet with PID=1 also, and listens
  3. MN sends ACK on P0 with PID=1.
  4. Presumably both SN0 and SN1 will interpret this as a valid ACK, even though it was meant for only one of them?

This would seem to make sense; I am happy to burn some payload bytes to identify individual transmitters, I'd just like to verify that my assumptions are correct.

Parents
  • Thanks. However, I am interested in the case where I am sending an ACKwith a payload. This is what I meant by:

    This ACK has a single byte payload. The single byte payload is also the value 0x55, by some strange coincidence.

    .The rev1.6 datasheet says, section 3.4.6.1 "An ACK packet can contain an optional payload from PRX to PTX".

    Also as per the diagram in section 3.4.10.4, which shows, on the PRX line, "ACK1|PAY".

    How then is it possible for "len=0 so the payload field will not be present"?? How does PTX get the ACK payload?

    cheers

    ant

  • Sorry, I seem to be a bit slow today. If you do a "echo" of your payload, then the ACK-pld of 1 byte will be equal to the sent payload. This means that your "answer B" is correct.

    Note: The PID field may be different, as this is a 2 bit counter which is incremented for every new transmission. You have a 25% chance of these being synchronous on PRX/PTX.

Reply Children
No Data
Related