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