use Data::Dump qw(dump);
use Getopt::Long;
use lib 'lib';
-use RFID::Biblio::Readers;
-use RFID::Biblio::RFID501;
+use Biblio::RFID::Reader;
+use Biblio::RFID::RFID501;
-my $only;
+my $reader;
+my $afi = 0x00;
+my $debug = 0;
+my $hash;
+my $blank;
GetOptions(
- 'only=s', => \$only,
+ '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 E0_RFID_SID content\n" unless $sid && $content;
+die "usage: $0 [--reader regex_filter] [--afi 214] [--type 1] E0_RFID_SID [barcode]\n" unless $sid && ( $content || $afi || $blank );
-my @rfid = RFID::Biblio::Readers->available( $only );
+$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, RFID::Biblio::RFID501->from_hash( content => $content ) );
+ $rfid->write_blocks( $tag => Biblio::RFID::RFID501->from_hash($hash) );
+ }
+ if ( $afi ) {
+ warn "AFI $tag with $afi\n";
+ $rfid->write_afi( $tag => chr($afi) );
}
}