SSI OpComms 3 CM TX

Dependencies:   mbed

Fork of Optical3cmTXnucleo by Thomas Teisberg

Revision:
8:b6b645caf4ef
Parent:
7:4fafb1b60eab
--- a/main.cpp	Mon Nov 16 00:08:50 2015 +0000
+++ b/main.cpp	Sun Nov 15 18:51:38 2015 -0800
@@ -77,6 +77,21 @@
     return sum;
 }
 
+//http://stackoverflow.com/questions/8845178/c-programming-tcp-checksum
+char checkSum(char *buffer, int size)
+{
+    unsigned long cksum=0;
+    while(size)
+    {
+        cksum+=*buffer++;
+        size--;
+    }
+
+    cksum = (cksum >> 16) + (cksum & 0xffff);
+    cksum += (cksum >>16);
+    return (char)(~cksum);
+}
+
 int main()
 {
     pc.printf("3 CM Link Board - Transmit\r\n");
@@ -117,10 +132,11 @@
 //            idx++;
 //            buffer[idx] = '\n';
 //            idx++;
-            // add the checksum
+            // add the checksums
+            char cksum2 = checkSum(buffer, PACKET_LENGTH);
             buffer[idx] = checksum(buffer, idx);
             idx++;
-            
+            buffer[idx] = cksum2;
             //Transmits packet
             blink_packet(buffer, idx);
             idx = 0;