MK3EBCRCPl

From EvTechWiki

Jump to: navigation, search

Back to: MK3EBCRC MK3EBNetworking MK3EB

Perl version of CRC_16

sub crc_16 {
        my $crcval, $n, $q, $c, $t1, $t2;
        $crcval = 0;

   while((defined($c = shift))) {
                $t1 = ($crcval ^ $c);
                $q = $t1 & 0x000f;

                $t1 = ($crcval >> 4);
                $t2 = $q * 0x1081;
                $crcval = $t1 ^ $t2;

                $t1 = ($c >> 4);
                $t2 = ($crcval ^ $t1);
                $q = ($t2 & 0x000f);

                $t1 = ($crcval >> 4);
                $t2 = $q * 0x1081;
                $crcval = $t1 ^ $t2;
        }

        return $crcval;