Browse Source

- added crcitt_string_ex to enable computing for multiple strings

Tomas Mandys 19 years ago
parent
commit
272bfd2b2e
2 changed files with 9 additions and 6 deletions
  1. 7 6
      crc.c
  2. 2 0
      crc.h

+ 7 - 6
crc.c

@@ -205,12 +205,8 @@ unsigned short int crc_16_tab[] = { /* CRC polynomial 0xA001 */
 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040,
 };
 
-unsigned short crcitt_string( char *s, int len )
-{
-	register unsigned short ccitt;
-	
-	ccitt = 0xFFFF;
-
+unsigned short crcitt_string_ex( char *s, int len, register unsigned short ccitt) {
+	ccitt = ~ccitt;
 	while( len ) {
 		ccitt = UPDCIT(*s, ccitt);
 		s++; len--;
@@ -218,6 +214,11 @@ unsigned short crcitt_string( char *s, int len )
 	return ~ccitt;
 }
 
+unsigned short crcitt_string( char *s, int len )
+{
+	return crcitt_string_ex(s, len, 0);
+}
+
 void crcitt_string_array( char *dst, str src[], int size )
 {
 	register int i;

+ 2 - 0
crc.h

@@ -11,6 +11,8 @@ extern unsigned long int crc_32_tab[];
 extern unsigned short int ccitt_tab[];
 extern unsigned short int crc_16_tab[];
 
+
+unsigned short crcitt_string_ex( char *s, int len, register unsigned short ccitt);
 unsigned short crcitt_string( char *s, int len );
 void crcitt_string_array( char *dst, str src[], int size );