1 package RFID::Biblio::RFID501;
8 RFID::Biblio::RFID501 - RFID Standard for Libraries
12 This module tries to decode tag format as described in document
14 RFID 501: RFID Standards for Libraries
16 L<http://solutions.3m.com/wps/portal/3M/en_US/3MLibrarySystems/Home/Resources/CaseStudiesAndWhitePapers/RFID501/>
18 Goal is to be compatibile with existing 3M Alphanumeric tag format
19 which, as far as I know, isn't specificed anywhere. My documentation about
20 this format is available at
22 L<http://saturn.ffzg.hr/rot13/index.cgi?hitchhikers_guide_to_rfid>
26 =head2 3M Alphanumeric tag
28 0 04 is 00 tt i [4 bit] = number of item in set [1 .. i .. s]
29 s [4 bit] = total items in set
30 tt [8 bit] = item type
32 1 dd dd dd dd dd [16 bytes] = barcode data
37 5 bb bl ll ll b [12 bit] = branch [unsigned]
38 l [20 bit] = library [unsigned]
40 6 cc cc cc cc c [32 bit] = custom signed integer
42 =head2 3M Manufacturing Blank
62 my $hash = RFID::Biblio::Decode::RFID501->to_hash( $bytes );
64 my $hash = RFID::Biblio::Decode::RFID501->to_hash( [ 'blk1', 'blk2', ... , 'blk7' ] );
72 13 => 'Book with Audio Tape',
73 9 => 'Book with CD/CD ROM',
79 8 => 'Book with Diskette',
84 my ( $self, $data ) = @_;
88 $data = join('', @$data) if ref $data eq 'ARRAY';
90 warn "## to_hash $data\n";
92 my ( $u1, $set_item, $u2, $type, $content, $br_lib, $custom ) = unpack('C4Z16Nl>',$data);
95 set => ( $set_item & 0xf0 ) >> 4,
96 total => ( $set_item & 0x0f ),
101 type_label => $item_type->{$type},
104 branch => $br_lib >> 20,
105 library => $br_lib & 0x000fffff,