如何从Tinyos中禁用内置CRC(循环冗余校验)?

时间:2017-03-08 13:11:55

标签: tinyos

任何人都会指导我如何从Tinyos中禁用内置CRC?

1 个答案:

答案 0 :(得分:0)

转到相关的receiveP模块并删除那里的CRC校验。例如,在流行的CC2420收发器(在TelosB中使用)中,在CC2420ReceiveP模块的第646行检查CRC(代码摘录自下面的CC2420ReceiveP)。

 // We may have received an ack that should be processed by Transmit
      // buf[rxFrameLength] >> 7 checks the CRC
      if ( ( buf[ rxFrameLength ] >> 7 ) && rx_buf ) {
        uint8_t type = ( header->fcf >> IEEE154_FCF_FRAME_TYPE ) & 7;
        signal CC2420Receive.receive( type, m_p_rx_buf );
        if ( type == IEEE154_TYPE_DATA ) {
          post receiveDone_task();
          return;
        }
      }

你应该注意收发器仍会丢弃一些坏的数据包,尽管你可以通过各种方式改变它的配置,以确保它能让更多的坏包通过。