X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;ds=sidebyside;f=scripts%2Fprogram.pl;h=565bb2a178b0fa2648f354e2a2e1a3b75b130d1f;hb=c288a23cfbda56592eb77fdafb8bdf4f0bbc33fa;hp=443e47511700cae3cbc182f3d947361f54298868;hpb=85092c9643bc97fbacab4113f1de90311c00e37d;p=Biblio-RFID.git diff --git a/scripts/program.pl b/scripts/program.pl index 443e475..565bb2a 100755 --- a/scripts/program.pl +++ b/scripts/program.pl @@ -10,25 +10,50 @@ use Biblio::RFID::Reader; use Biblio::RFID::RFID501; my $reader; -my $afi; +my $afi = 0x00; +my $debug = 0; +my $hash; +my $blank; GetOptions( 'reader=s', => \$reader, 'afi=i', => \$afi, + 'debug+', => \$debug, + 'set=i' => \$hash->{set}, + 'total=i', => \$hash->{total}, + 'type=i', => \$hash->{type}, + 'branch=i', => \$hash->{branch}, + 'library=i' => \$hash->{library}, + '3mblank' => \$blank->{blank_3m}, + 'blank' => \$blank->{blank}, ) || die $!; my ( $sid, $content ) = @ARGV; -die "usage: $0 [--reader regex_filter] [--afi 214] E0_RFID_SID [barcode]\n" unless $sid && ( $content | $afi ); +if ( $sid =~ m/.+,.+/ && ! defined $content ) { + ( $sid, $content ) = split(/,/, $sid); +} + +die "usage: $0 [--reader regex_filter] [--afi 214] [--type 1] E0_RFID_SID [barcode]\n" unless $sid && ( $content || $afi || $blank ); -my @rfid = Biblio::RFID::Reader->available( $reader ); +$hash->{content} = $content if defined $content; -foreach my $rfid ( @rfid ) { - my $visible = $rfid->scan; - foreach my $tag ( keys %$visible ) { - next unless $tag eq $sid; +my $rfid = Biblio::RFID::Reader->new( $reader ); +$Biblio::RFID::debug = $debug; + +foreach my $tag ( $rfid->tags, $sid ) { + warn "visible $tag\n"; + next unless $tag eq $sid; + if ( grep { defined $_ } values %$blank ) { + my $type = ( grep { $blank->{$_} } keys %$blank )[0]; + warn "BLANK $type $tag\n"; + $rfid->write_blocks( $tag => Biblio::RFID::RFID501->$type ); + } elsif ( $content ) { warn "PROGRAM $tag with $content\n"; - $rfid->write_blocks( $tag => Biblio::RFID::RFID501->from_hash({ content => $content }) ); - $rfid->write_afi( $tag => chr($afi) ) if $afi; + $rfid->write_blocks( $tag => Biblio::RFID::RFID501->from_hash($hash) ); + } + if ( $afi ) { + warn "AFI $tag with $afi\n"; + $rfid->write_afi( $tag => chr($afi) ); } }