TELECOMMAND MANAGER V1

Dependencies:   mbed SLCD mbed-rtos

Committer:
shreeshas95
Date:
Wed Apr 15 10:43:22 2015 +0000
Revision:
0:b5b370873460
Child:
1:df31097c8442
without L1 ack TM

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shreeshas95 0:b5b370873460 1 #define WIDTH 16
shreeshas95 0:b5b370873460 2 #define TOPBIT (1 << 15)
shreeshas95 0:b5b370873460 3 #define POLYNOMIAL 0x1021
shreeshas95 0:b5b370873460 4
shreeshas95 0:b5b370873460 5 class CRC{
shreeshas95 0:b5b370873460 6 private:
shreeshas95 0:b5b370873460 7 typedef unsigned short int crctype;
shreeshas95 0:b5b370873460 8 public:
shreeshas95 0:b5b370873460 9 // no need of intializer
shreeshas95 0:b5b370873460 10 crctype crcGenerate(const char message[], int nBytes){
shreeshas95 0:b5b370873460 11 crctype remainder = 0xffff;
shreeshas95 0:b5b370873460 12 int byte;
shreeshas95 0:b5b370873460 13 char bit;
shreeshas95 0:b5b370873460 14
shreeshas95 0:b5b370873460 15 for( byte = 0 ; byte < nBytes ; byte++ ){
shreeshas95 0:b5b370873460 16 /*
shreeshas95 0:b5b370873460 17 Bring the data byte by byte
shreeshas95 0:b5b370873460 18 each time only one byte is brought
shreeshas95 0:b5b370873460 19 0 xor x = x
shreeshas95 0:b5b370873460 20 */
shreeshas95 0:b5b370873460 21 remainder = remainder ^ ( message[byte] << (WIDTH-8) );
shreeshas95 0:b5b370873460 22
shreeshas95 0:b5b370873460 23 for( bit = 8 ; bit > 0 ; bit--){
shreeshas95 0:b5b370873460 24 /*
shreeshas95 0:b5b370873460 25 for each bit, xor the remainder with polynomial
shreeshas95 0:b5b370873460 26 if the MSB is 1
shreeshas95 0:b5b370873460 27 */
shreeshas95 0:b5b370873460 28 if(remainder & TOPBIT){
shreeshas95 0:b5b370873460 29 remainder = (remainder << 1) ^ POLYNOMIAL;
shreeshas95 0:b5b370873460 30 /*
shreeshas95 0:b5b370873460 31 each time the remainder is xor-ed with polynomial, the MSB is made zero
shreeshas95 0:b5b370873460 32 hence the first digit of the remainder is ignored in the loop
shreeshas95 0:b5b370873460 33 */
shreeshas95 0:b5b370873460 34 }
shreeshas95 0:b5b370873460 35 else{
shreeshas95 0:b5b370873460 36 remainder = (remainder << 1);
shreeshas95 0:b5b370873460 37 }
shreeshas95 0:b5b370873460 38 }
shreeshas95 0:b5b370873460 39 }
shreeshas95 0:b5b370873460 40
shreeshas95 0:b5b370873460 41 return remainder;
shreeshas95 0:b5b370873460 42 }
shreeshas95 0:b5b370873460 43 };