I believe the check is there to make sure software ACK mimic CC2420's hardware
ACK, because CC2420 acks broadcast packets (if requested).
Mike
On Aug 27, 2011, at 3:04 AM, Xiaohui Liu wrote:
> Hi everyone,
>
> Why should broadcast be acknowledged? If multiple recipients receive a
> broadcast packet, they will ack it at very close time instant, which can
> cause ack collision. But the following snippet is found in CC2420ReceiveP.
> Can anyone help me understand why broadcast can be acked? Thanks.
>
> if(call CC2420Config.isAutoAckEnabled() && !call
> CC2420Config.isHwAutoAckDefault()) {
> if (((( header->fcf >> IEEE154_FCF_ACK_REQ ) & 0x01) == 1)
> && ((header->dest == call CC2420Config.getShortAddr())
> || (header->dest == AM_BROADCAST_ADDR))
> && ((( header->fcf >> IEEE154_FCF_FRAME_TYPE ) & 7) ==
> IEEE154_TYPE_DATA)) {
> // CSn flippage cuts off our FIFO; SACK and begin reading again
> call CSN.set();
> call CSN.clr();
> call SACK.strobe();
> call CSN.set();
> call CSN.clr();
> call RXFIFO.beginRead(buf + 1 + SACK_HEADER_LENGTH,
> rxFrameLength - SACK_HEADER_LENGTH);
> return;
> }
> }
>
> --
> -Xiaohui Liu
> _______________________________________________
> Tinyos-help mailing list
> [email protected]
> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help