Dummy program to demonstrate problems: working code

Dependencies:   SLCD mbed-rtos mbed

Fork of MNG_TC by Shreesha S

Committer:
shreeshas95
Date:
Sat Jun 06 04:27:40 2015 +0000
Revision:
1:df31097c8442
Parent:
0:b5b370873460
Child:
2:994e741028c7
before namespace (in class format)

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 1:df31097c8442 5 namespace CRC{
shreeshas95 1:df31097c8442 6 typedef uint16_t crctype;
shreeshas95 1:df31097c8442 7 crctype crcGenerate(const unsigned char message[], int nBytes){
shreeshas95 0:b5b370873460 8 crctype remainder = 0xffff;
shreeshas95 0:b5b370873460 9 int byte;
shreeshas95 0:b5b370873460 10 char bit;
shreeshas95 0:b5b370873460 11
shreeshas95 0:b5b370873460 12 for( byte = 0 ; byte < nBytes ; byte++ ){
shreeshas95 0:b5b370873460 13 /*
shreeshas95 0:b5b370873460 14 Bring the data byte by byte
shreeshas95 0:b5b370873460 15 each time only one byte is brought
shreeshas95 0:b5b370873460 16 0 xor x = x
shreeshas95 0:b5b370873460 17 */
shreeshas95 0:b5b370873460 18 remainder = remainder ^ ( message[byte] << (WIDTH-8) );
shreeshas95 0:b5b370873460 19
shreeshas95 0:b5b370873460 20 for( bit = 8 ; bit > 0 ; bit--){
shreeshas95 0:b5b370873460 21 /*
shreeshas95 0:b5b370873460 22 for each bit, xor the remainder with polynomial
shreeshas95 0:b5b370873460 23 if the MSB is 1
shreeshas95 0:b5b370873460 24 */
shreeshas95 0:b5b370873460 25 if(remainder & TOPBIT){
shreeshas95 0:b5b370873460 26 remainder = (remainder << 1) ^ POLYNOMIAL;
shreeshas95 0:b5b370873460 27 /*
shreeshas95 0:b5b370873460 28 each time the remainder is xor-ed with polynomial, the MSB is made zero
shreeshas95 0:b5b370873460 29 hence the first digit of the remainder is ignored in the loop
shreeshas95 0:b5b370873460 30 */
shreeshas95 0:b5b370873460 31 }
shreeshas95 0:b5b370873460 32 else{
shreeshas95 0:b5b370873460 33 remainder = (remainder << 1);
shreeshas95 0:b5b370873460 34 }
shreeshas95 0:b5b370873460 35 }
shreeshas95 0:b5b370873460 36 }
shreeshas95 0:b5b370873460 37
shreeshas95 0:b5b370873460 38 return remainder;
shreeshas95 0:b5b370873460 39 }
shreeshas95 0:b5b370873460 40 };