Nice catch -- we'll take a look.

Phil

On Nov 16, 2009, at 8:20 AM, Peter Bigot wrote:

> The baseline implementations supporting TimeSyncAMSend do not appear  
> to deal
> with Receive.receive correctly, in that the length parameter passed in
> includes the timestamp.  This breaks code that attempts to validate  
> messages
> by comparing that length with the size of the expected structure.
>
> Below is a patch for CC2420 that fixes this.  It took quite a while  
> to come
> up with an expression of it that would get past nesc, so if there's  
> a better
> way, I'd like to see it.
>
> Peter
>
> diff -r 98061e14c550 -r dcc1345ed71a tos/chips/cc2420/ 
> CC2420TimeSyncMessageC.nc
> --- a/tos/chips/cc2420/CC2420TimeSyncMessageC.nc      Mon Oct 19 19:57:08  
> 2009 -0700
> +++ b/tos/chips/cc2420/CC2420TimeSyncMessageC.nc      Sat Nov 14 19:45:51  
> 2009 -0700
> @@ -76,7 +76,9 @@
>          CC2420TimeSyncMessageP.Leds -> LedsC;
>
>          SplitControl = CC2420ActiveMessageC;
> -        Receive = CC2420ActiveMessageC.Receive;
> -        Snoop = CC2420ActiveMessageC.Snoop;
> +        Receive = CC2420TimeSyncMessageP.Receive;
> +        Snoop = CC2420TimeSyncMessageP.Snoop;
> +        CC2420TimeSyncMessageP.SubReceive ->  
> CC2420ActiveMessageC.Receive;
> +        CC2420TimeSyncMessageP.SubSnoop ->  
> CC2420ActiveMessageC.Snoop;
>          AMPacket = CC2420ActiveMessageC;
>  }
> diff -r 98061e14c550 -r dcc1345ed71a tos/chips/cc2420/ 
> CC2420TimeSyncMessageP.nc
> --- a/tos/chips/cc2420/CC2420TimeSyncMessageP.nc      Mon Oct 19 19:57:08  
> 2009 -0700
> +++ b/tos/chips/cc2420/CC2420TimeSyncMessageP.nc      Sat Nov 14 19:45:51  
> 2009 -0700
> @@ -33,6 +33,10 @@
>
>          interface TimeSyncPacket<T32khz, uint32_t> as  
> TimeSyncPacket32khz;
>          interface TimeSyncPacket<TMilli, uint32_t> as  
> TimeSyncPacketMilli;
> +
> +        interface Receive[am_id_t id];
> +        interface Receive as Snoop[am_id_t id];
> +
>      }
>
>      uses
> @@ -41,6 +45,9 @@
>          interface AMPacket;
>          interface Packet as SubPacket;
>
> +        interface Receive as SubReceive[am_id_t id];
> +        interface Receive as SubSnoop[am_id_t id];
> +
>          interface PacketTimeStamp<T32khz,uint32_t> as  
> PacketTimeStamp32khz;
>          interface PacketTimeStamp<TMilli,uint32_t> as  
> PacketTimeStampMilli;
>          interface PacketTimeSyncOffset;
> @@ -144,6 +151,28 @@
>          return call TimeSyncAMSend32khz.getPayload[id](msg, len);
>      }
>
> +
> +/*----------------- SubReceive -------------------*/
> +
> +    event message_t* SubReceive.receive[am_id_t id](message_t* msg,  
> void* payload, uint8_t len)
> +    {
> +        if (call AMPacket.isForMe(msg)) {
> +            return signal Receive.receive[id](msg, payload, len -  
> sizeof(timesync_radio_t));
> +        }
> +        return signal SubSnoop.receive[id](msg, payload, len);
> +    }
> +
> +    default event message_t* Receive.receive[am_id_t id](message_t*  
> msg, void* payload, uint8_t len) { return msg; }
> +
> +/*----------------- SubSnoop -------------------*/
> +
> +    event message_t* SubSnoop.receive[am_id_t id](message_t* msg,  
> void* payload, uint8_t len)
> +    {
> +        return signal Snoop.receive[id](msg, payload, len -  
> sizeof(timesync_radio_t));
> +    }
> +
> +    default event message_t* Snoop.receive[am_id_t id](message_t*  
> msg, void* payload, uint8_t len) { return msg; }
> +
>  /*----------------- SubSend.sendDone -------------------*/
>      event void SubSend.sendDone(message_t* msg, error_t error)
>      {
>
>
> -- 
> Peter A. Bigot                    Rincon Research Corporation
> Eng. Spec.                        101 N. Wilmot, Ste 101
> [email protected]                    Tucson AZ  85711
> Voice: 520-519-4726               Fax: 520-519-4747
> _______________________________________________
> 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