SSI OpComms 3CM Board RX
Dependencies: mbed
Fork of Optical3cmRX by
Diff: main.cpp
- Revision:
- 8:20d405a03cb9
- Parent:
- 7:41b22e5a1d8d
--- a/main.cpp Mon Nov 16 00:08:19 2015 +0000 +++ b/main.cpp Sun Nov 15 18:51:09 2015 -0800 @@ -55,6 +55,21 @@ HALF_SAMPLE = SAMPLE_RATE / 2; } +//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); +} + void printDecodeBuf() { char cur = 0; @@ -84,8 +99,9 @@ } } } - int rcv_checksum = data[data.size()-1]; - data.erase(data.size()-1, data.size()); + int rcv_checksum = data[data.size()-2]; + int rcv_checksum2 = data[data.size()-1]; + data.erase(data.size()-2, data.size()); pc.printf("Received: \""); pc.printf(data.c_str()); pc.printf("\"\r\n"); @@ -94,6 +110,7 @@ for(int i = 0; i < data.size(); i++) checksum ^= data[i]; pc.printf("Received: %d | Computed: %d\r\n", rcv_checksum, checksum); + pc.printf("Received2: %d | Computed2: %d\r\n", rcv_checksum2, checkSum(data.c_str(),data.size())); }