Manchester receiver demo.
Dependencies: Manchester mbed CRC16 ManchesterMsg
Diff: main.cpp
- Revision:
- 2:1cb83aa7b99a
- Parent:
- 1:2ce05484e526
- Child:
- 3:0c6680f77855
--- a/main.cpp Wed May 17 21:27:02 2017 +0000 +++ b/main.cpp Thu May 18 10:50:53 2017 +0000 @@ -1,5 +1,6 @@ #include "mbed.h" #include "Manchester.h" +#include "CRC16.h" DigitalOut led(LED1); @@ -8,6 +9,9 @@ ManchesterMsg msg(100); // Message container (max bytes) char str[50]; // Array of char uint32_t val; + CRC16 crc16; + unsigned short msgCRC16; + unsigned short calcCRC16; //pc.baud(9600); @@ -24,12 +28,25 @@ printf(" %.2x", msg.data[i]); } printf("\r\n"); + - // Extract data from message and print - msg >> str >> val; - printf("Extracted data :\r\n"); - printf(" str = %s\r\n", str); - printf(" val = 0x%x\r\n", val); + calcCRC16 = crc16.calc(msg.data, msg.len - 2); // exclude CRC bytes from calculation + + // Extract data from message + msg >> str >> val >> msgCRC16; + + printf("msgCRC16 = %d\r\n", msgCRC16); + printf("calcCRC16 = %d\r\n", calcCRC16); + + + if( calcCRC16 != msgCRC16) { + printf("CRC error\r\n"); + } + else { + printf("Extracted data :\r\n"); + printf(" str = %s\r\n", str); + printf(" val = 0x%x\r\n", val); + } } else printf("Error\r\n");