////////////////////////////////////////////////////////////////////////////////
u16 crc16_calc( u08 *ptr, size_t len )
{
u16 result = 0xFFFF;
#ifdef OPTIMIZE_SPEED
while( len-- )
result = (result << 8) ^ Crc16Table[ ( result >> 8 ) ^ *ptr++ ];
#else
while( len-- )
{
result ^= (u16)((*ptr++) << 8);
for( u8 i = 0; i < 8; i++ )
{
if( result & 0x8000 )
{
result <<= 1;
result ^= 0x1021;
}
else
result <<= 1;
}
}
#endif
return result;
}