X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=tos%2Fchips%2Fcc2420%2FCC2420ActiveMessageP.nc;h=0db2423c7b83167d7bf41b4797e85c117b52cb8f;hb=aa7578fd1472c62c1d22d0801fe0f55b36093bdf;hp=002aa3367433db2768fd582c8298bec6a2f3214c;hpb=75fb0d26dede581e8df3c6f06a6d1b3ccc55a8f7;p=tinyos-2.x.git diff --git a/tos/chips/cc2420/CC2420ActiveMessageP.nc b/tos/chips/cc2420/CC2420ActiveMessageP.nc index 002aa336..0db2423c 100644 --- a/tos/chips/cc2420/CC2420ActiveMessageP.nc +++ b/tos/chips/cc2420/CC2420ActiveMessageP.nc @@ -1,4 +1,4 @@ -/* tab:4 +/* * "Copyright (c) 2005 Stanford University. All rights reserved. * * Permission to use, copy, modify, and distribute this software and @@ -34,7 +34,7 @@ #include "CC2420.h" -module CC2420ActiveMessageP { +module CC2420ActiveMessageP @safe() { provides { interface AMSend[am_id_t id]; interface Receive[am_id_t id]; @@ -57,15 +57,16 @@ module CC2420ActiveMessageP { } implementation { - enum { - CC2420_SIZE = MAC_HEADER_SIZE + MAC_FOOTER_SIZE, - }; - /***************** AMSend Commands ****************/ command error_t AMSend.send[am_id_t id](am_addr_t addr, message_t* msg, uint8_t len) { cc2420_header_t* header = call CC2420PacketBody.getHeader( msg ); + + if (len > call Packet.maxPayloadLength()) { + return ESIZE; + } + header->type = id; header->dest = addr; header->destpan = call CC2420Config.getPanAddr(); @@ -73,7 +74,7 @@ implementation { signal SendNotifier.aboutToSend[id](addr, msg); - return call SubSend.send( msg, len + CC2420_SIZE ); + return call SubSend.send( msg, len ); } command error_t AMSend.cancel[am_id_t id](message_t* msg) { @@ -179,10 +180,10 @@ implementation { } if (call AMPacket.isForMe(msg)) { - return signal Receive.receive[call AMPacket.type(msg)](msg, payload, len - CC2420_SIZE); + return signal Receive.receive[call AMPacket.type(msg)](msg, payload, len); } else { - return signal Snoop.receive[call AMPacket.type(msg)](msg, payload, len - CC2420_SIZE); + return signal Snoop.receive[call AMPacket.type(msg)](msg, payload, len); } }