NAME
RFID::Matrics::CRC - Implements the Matrics CRC algorithm.
SYNOPSIS
# Generate a packet to send
$data
=
"\x04\x06\x22\xa0"
;
$crc
= crc(
length
(
$data
),0xBEEF,
$data
);
$packet
=
pack
(
"Ca*v"
,1,
$data
,
$crc
);
# Check an existing packet
(
$sof
,
@dat
{
qw(node len cmd status data crc)
}) =
unpack
(
"CCCCCa${dl}v"
,
$packet
);
unless
(crc(
length
(
$packet
)-3,0xBEEF,
substr
(
$packet
,1,-2)) ==
$dat
{crc})
{
return
$self
->error(
"Bad CRC in packet!\n"
);
}
DESCRIPTION
Implements the Matrics CRC algorithm, as describe on pages 4-5 of Stationary Reader/Host Protocol (RS-485) Specification version 2.8 from October 19, 2003.
FUNCTIONS
crc($buf [,$crc])
Calculate the Matrics CRC for $buf
, with an intial CRC of $crc
. $crc
defaults to 0xBEEF
, which is usually the right thing.
SEE ALSO
AUTHOR
Scott Gifford <gifford@umich.edu>, <sgifford@suspectclass.com>
Copyright (C) 2004 The Regents of the University of Michigan.
See the file LICENSE included with the distribution for license information.