任何人都会指导我如何从Tinyos中禁用内置CRC?
答案 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;
}
}
你应该注意收发器仍会丢弃一些坏的数据包,尽管你可以通过各种方式改变它的配置,以确保它能让更多的坏包通过。