b0fc125eec1c1c2d26c5d1579d1fb10d29ab85a7
[Biblio-RFID.git] / scripts / program.pl
1 #!/usr/bin/perl
2
3 use warnings;
4 use strict;
5
6 use Data::Dump qw(dump);
7 use Getopt::Long;
8 use lib 'lib';
9 use Biblio::RFID::Reader;
10 use Biblio::RFID::RFID501;
11
12 my $reader;
13 my $afi = 0x00;
14 my $debug = 0;
15 my $hash;
16 my $blank;
17
18 GetOptions(
19         'reader=s', => \$reader,
20         'afi=i',    => \$afi,
21         'debug+',   => \$debug,
22         'set=i'         => \$hash->{set},
23         'total=i',      => \$hash->{total},
24         'type=i',       => \$hash->{type},
25         'branch=i',     => \$hash->{branch},
26         'library=i'     => \$hash->{library},
27         '3mblank'       => \$blank->{blank_3m},
28         'blank'         => \$blank->{blank},
29 ) || die $!;
30
31 my ( $sid, $content ) =  @ARGV;
32 die "usage: $0 [--reader regex_filter] [--afi 214] [--type 1] E0_RFID_SID [barcode]\n" unless $sid && ( $content || $afi || $blank );
33
34 $hash->{content} = $content if defined $content;
35
36 my $rfid = Biblio::RFID::Reader->new( $reader );
37 $Biblio::RFID::debug = $debug;
38
39 foreach my $tag ( $rfid->tags, $sid ) {
40         warn "visible $tag\n";
41 #       next unless $tag eq $sid;
42         if ( grep { defined $_ } values %$blank ) {
43                 my $type = ( grep { $blank->{$_} } keys %$blank )[0];
44                 warn "BLANK $type $tag\n";
45                 $rfid->write_blocks( $tag => Biblio::RFID::RFID501->$type );
46         } elsif ( $content ) {
47                 warn "PROGRAM $tag with $content\n";
48                 $rfid->write_blocks( $tag => Biblio::RFID::RFID501->from_hash($hash) );
49         }
50         if ( $afi ) {
51                 warn "AFI $tag with $afi\n";
52                 $rfid->write_afi( $tag => chr($afi) );
53         }
54 }
55