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

Reply via email to