- /* Radio Receive */
- async event void PhyPacketRx.recvHeaderDone(error_t error) {
- if(error == SUCCESS) {
- byteCnt = (sizeof(message_header_t) - sizeof(message_radio_header_t));
- crc = 0;
- getHeader(rxBufPtr)->length = sizeof(message_radio_header_t);
- signal PhyReceive.receiveDetected();
- }
- }
-
- async event void RadioByteComm.rxByteReady(uint8_t data) {
- ReceiveNextByte(data);
- }
-
- async event void PhyPacketRx.recvFooterDone(error_t error) {
- message_radio_header_t* header = getHeader((message_t*)(rxBufPtr));
- message_radio_footer_t* footer = getFooter((message_t*)rxBufPtr);
- // we care about wrong crc in this layer
- if (footer->crc != 1) error = FAIL;
- rxBufPtr = signal PhyReceive.receiveDone((message_t*)rxBufPtr, ((message_t*)rxBufPtr)->data, header->length, error);
- }
-
- /* Receive the next Byte from the USART */
- void ReceiveNextByte(uint8_t data) {
- message_radio_footer_t* footer = getFooter((message_t*)rxBufPtr);
- ((uint8_t *)(rxBufPtr))[byteCnt++] = data;
- if ( byteCnt < getHeader(rxBufPtr)->length + sizeof(message_radio_header_t) ) {
- if(byteCnt == sizeof(message_radio_header_t)) signal RadioTimeStamping.receivedSFD(0);
- crc = crcByte(crc, data);
- if (getHeader(rxBufPtr)->length > TOSH_DATA_LENGTH) {
- // this packet is surely corrupt, so whatever...
- footer->crc = 0;
- call PhyPacketRx.recvFooter();
- }
- } else if (byteCnt == (getHeader(rxBufPtr)->length + sizeof(message_radio_header_t))) {
- crc = crcByte(crc, data);
- byteCnt = offsetof(message_t, footer) + offsetof(message_radio_footer_t, crc);
- } else if (byteCnt == (offsetof(message_t, footer) + sizeof(message_radio_footer_t))) {
- footer->crc = (footer->crc == crc);
- call PhyPacketRx.recvFooter();
- }
- }
+ /* Radio Receive */
+ async event void PhyPacketRx.recvHeaderDone(error_t error) {
+ if(error == SUCCESS) {
+ byteCnt = sizeof(message_header_t) - sizeof(message_radio_header_t);
+ getHeader(rxBufPtr)->length = sizeof(message_radio_header_t);
+ crc = 0;
+ signal PhyReceive.receiveDetected();
+ }
+ }
+
+ async event void RadioByteComm.rxByteReady(uint8_t data) {
+ ReceiveNextByte(data);
+ }