From: klueska Date: Sat, 8 Dec 2007 00:32:45 +0000 (+0000) Subject: Fix stupid crc bug X-Git-Tag: release_tinyos_2_1_0_0~630 X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=commitdiff_plain;h=bec646390caec3aa52036f7c356c72c5583cb44c;p=tinyos-2.x.git Fix stupid crc bug --- diff --git a/tos/chips/cc1000/CC1000ActiveMessageP.nc b/tos/chips/cc1000/CC1000ActiveMessageP.nc index 118c8a81..4fc6bd4d 100644 --- a/tos/chips/cc1000/CC1000ActiveMessageP.nc +++ b/tos/chips/cc1000/CC1000ActiveMessageP.nc @@ -54,6 +54,10 @@ implementation { cc1000_header_t* getHeader(message_t* amsg) { return (cc1000_header_t*)(amsg->data - sizeof(cc1000_header_t)); } + + cc1000_footer_t *getFooter(message_t *amsg) { + return (cc1000_footer_t *)(amsg->footer); + } command error_t AMSend.send[am_id_t id](am_addr_t addr, message_t* amsg, @@ -78,21 +82,40 @@ implementation { return call Packet.maxPayloadLength(); } - command void* AMSend.getPayload[am_id_t id](message_t* m, uint8_t len) { - return call Packet.getPayload(m, len); + command void* AMSend.getPayload[am_id_t id](message_t* m) { + return call Packet.getPayload(m, NULL); } /* Receiving a packet */ event message_t* SubReceive.receive(message_t* msg, void* payload, uint8_t len) { - if (call AMPacket.isForMe(msg)) { - return signal Receive.receive[call AMPacket.type(msg)](msg, payload, len); - } - else { - return signal Snoop.receive[call AMPacket.type(msg)](msg, payload, len); + cc1000_footer_t* msg_footer = getFooter(msg); + if(msg_footer->crc == 1) { + if (call AMPacket.isForMe(msg)) { + return signal Receive.receive[call AMPacket.type(msg)](msg, payload, len); + } + else { + return signal Snoop.receive[call AMPacket.type(msg)](msg, payload, len); + } } } + command void* Receive.getPayload[am_id_t id](message_t* m, uint8_t* len) { + return call Packet.getPayload(m, len); + } + + command uint8_t Receive.payloadLength[am_id_t id](message_t* m) { + return call Packet.payloadLength(m); + } + + command void* Snoop.getPayload[am_id_t id](message_t* m, uint8_t* len) { + return call Packet.getPayload(m, len); + } + + command uint8_t Snoop.payloadLength[am_id_t id](message_t* m) { + return call Packet.payloadLength(m); + } + command am_addr_t AMPacket.address() { return call amAddress(); } diff --git a/tos/chips/cc1000_lpl/CC1000ActiveMessageP.nc b/tos/chips/cc1000_lpl/CC1000ActiveMessageP.nc index 6ce93bad..a84fe9cd 100644 --- a/tos/chips/cc1000_lpl/CC1000ActiveMessageP.nc +++ b/tos/chips/cc1000_lpl/CC1000ActiveMessageP.nc @@ -54,6 +54,10 @@ implementation { cc1000_header_t* getHeader(message_t* amsg) { return (cc1000_header_t*)(amsg->data - sizeof(cc1000_header_t)); } + + cc1000_footer_t *getFooter(message_t *amsg) { + return (cc1000_footer_t *)(amsg->footer); + } command error_t AMSend.send[am_id_t id](am_addr_t addr, message_t* amsg, @@ -85,11 +89,14 @@ implementation { /* Receiving a packet */ event message_t* SubReceive.receive(message_t* msg, void* payload, uint8_t len) { - if (call AMPacket.isForMe(msg)) { - return signal Receive.receive[call AMPacket.type(msg)](msg, payload, len); - } - else { - return signal Snoop.receive[call AMPacket.type(msg)](msg, payload, len); + cc1000_footer_t* msg_footer = getFooter(msg); + if(msg_footer->crc == 1) { + if (call AMPacket.isForMe(msg)) { + return signal Receive.receive[call AMPacket.type(msg)](msg, payload, len); + } + else { + return signal Snoop.receive[call AMPacket.type(msg)](msg, payload, len); + } } }