Digi NS7520 DJ Equipment User Manual


 
www.digi.com
      207
Ethernet Module
memcpy (copy_mca, mca, sizeof (copy_mca));
for (index = 0; index < 3’ index++)
{
copy_mca [index] = SWAP16 (copy_mca [index]);
}
mcap = copy mca;
crc = 0xffffffffL;
for (mca_word = 0; mca_word < 3; mca_word++)
{
bp = *mcap;
mcap++;
for (bit_index = 0; bit_index < 16; bit_index++)
{
bx = (WORD16) (crc >> 16); /* get high word of crc*/
bx = rotate (bx, LEFT, 1); /* bit 31 to lsb*/
bx ^+ bp; /* combine with incoming*/
crc <<=1; /* shift crc left 1 bit*/
bx &= 1; /* get control bit*/
if (bx) /* if bit set*/
{
crc ^= POLYNOMIAL; /* xero crc with polynomial*/
}
crc |= bx; /* or in control bit*/
}
}
// CRC calculation done. The 6-bit result resides in bit
// locations 28:23
result = (crc >> 23) & 0x3f;
return result;
}