Manchester receiver demo.

Dependencies:   Manchester mbed CRC16 ManchesterMsg

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");