00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "standard.h"
00010 #include "bits.h"
00011
00012 #define GENPOLY 0x0017
00013
00014 unsigned int makecrc4(unsigned int b)
00015
00016
00017
00018
00019
00020
00021 {
00022 int i;
00023
00024 i=1;
00025 while (b>=16) {
00026 if (getbitint(b,i) == 1)
00027 b ^= GENPOLY << (12-i);
00028 i++;
00029 }
00030 return b;
00031 }
00032
00033 int checkcrc4(unsigned int b)
00034
00035
00036
00037
00038
00039 {
00040 int i;
00041
00042 i=1;
00043 while (b>=16) {
00044 if (getbitint(b,i) == 1)
00045 b ^= GENPOLY << (12-i);
00046 i++;
00047 }
00048
00049 return (b==0);
00050 }
00051
00052 #if(0)
00053 main()
00054 {
00055 unsigned int data;
00056 byte crc;
00057
00058 data = 0x06c0;
00059 crc = makecrc4(data);
00060 printf("crc : %x, data : %x\n",crc,data);
00061 data=data | crc;
00062 printf("data after OR : %x\n",data);
00063
00064 data = 0x06c7;
00065 printf("data after corruption : %x\n",data);
00066
00067 printf("the crc check...%d\n",checkcrc4(data));
00068 }
00069 #endif