lkdsnf;
Dependencies: FreescaleIAP SimpleDMA mbed-rtos mbed
Fork of COM_MNG_TMTC_SIMPLE_PL_Working by
Diff: crc.h
- Revision:
- 138:71ed56f2ec50
- Parent:
- 6:79d422d1ed42
diff -r 6fcbbaf19284 -r 71ed56f2ec50 crc.h --- a/crc.h Sat Mar 12 10:42:22 2016 +0000 +++ b/crc.h Wed Mar 30 13:03:24 2016 +0000 @@ -74,4 +74,39 @@ } return remainder; -} \ No newline at end of file +} + +uint16_t crc16_gen1( char message[], unsigned int nBytes){ + crctype16 remainder = 0xffff; + int byte; + char bit; + + for( byte = 0 ; byte < nBytes ; byte++ ){ + /* + Bring the data byte by byte + each time only one byte is brought + 0 xor x = x + */ + remainder = remainder ^ ( message[byte] << 8 ); + + for( bit = 8 ; bit > 0 ; bit--){ + /* + for each bit, xor the remainder with polynomial + if the MSB is 1 + */ + if(remainder & TOPBIT16){ + remainder = (remainder << 1) ^ POLYNOMIAL16; + /* + each time the remainder is xor-ed with polynomial, the MSB is made zero + hence the first digit of the remainder is ignored in the loop + */ + } + else{ + remainder = (remainder << 1); + } + } + } + + return remainder; +} +