X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=lib%2FBiblio%2FRFID%2FReader.pm;h=3af9fc4fef8dc5ef43ff8e738f359cdfb7e25f02;hb=5d4d3693c85b845ba8053cb479e8a680756d4df4;hp=f5e6fd413d164fea2242ef2cd50e4762fd680d23;hpb=adb46ed3356b3ed314e464df1bba64ec4eb033b5;p=Biblio-RFID.git diff --git a/lib/Biblio/RFID/Reader.pm b/lib/Biblio/RFID/Reader.pm index f5e6fd4..3af9fc4 100644 --- a/lib/Biblio/RFID/Reader.pm +++ b/lib/Biblio/RFID/Reader.pm @@ -63,6 +63,8 @@ sub tags { $self->{_tags}->{$tag}->{blocks} = $blocks->{$tag} || die "no $tag in ",dump($blocks); my $afi = $rfid->read_afi($tag); $self->{_tags}->{$tag}->{afi} = $afi; + $self->{_tags}->{$tag}->{type} = $rfid->tag_type( $tag ); + $self->{_tags}->{$tag}->{reader} = ref $rfid; # save reader info }; if ( $@ ) { @@ -78,11 +80,11 @@ sub tags { } - foreach my $tag ( grep { $self->{_tags}->{$_}->{time} == 0 } keys %{ $self->{_tags} } ) { - $triggers->{leave}->( $tag ) if $triggers->{leave}; - $self->_invalidate_tag( $tag ); - } + } + foreach my $tag ( grep { $self->{_tags}->{$_}->{time} == 0 } keys %{ $self->{_tags} } ) { + $triggers->{leave}->( $tag ) if $triggers->{leave}; + $self->_invalidate_tag( $tag ); } warn "## _tags ",dump( $self->{_tags} ); @@ -103,6 +105,48 @@ sub tags { sub blocks { $_[0]->{_tags}->{$_[1]}->{ 'blocks' } || confess "no blocks for $_[1]"; }; sub afi { $_[0]->{_tags}->{$_[1]}->{ 'afi' } || confess "no afi for $_[1]"; }; +=head2 to_hash + + $self->to_hash( $tag ); + +=cut + +sub to_hash { + my ( $self, $tag ) = @_; + return unless exists $self->{_tags}->{$tag}; + my $type = $self->{_tags}->{$tag}->{type} || confess "can't find type for tag $tag ",dump( $self->{_tags} ); + my $decode = 'Biblio::RFID::' . $type; + my $hash = $decode->to_hash( $self->blocks( $tag ) ); + $hash->{tag_type} = $type; + return $hash; +} + +=head2 debug + + $self->debug(1); # or more + +=cut + +sub debug { + my ( $self, $level ) = @_; + $debug = $level if $level > $debug; + warn "debug level $level\n" if $level; +} + +=head2 from_reader + + my $reader = $self->from_reader( $tag ); + +=cut + +sub from_reader { + my ( $self, $tag ) = @_; + return unless exists $self->{_tags}->{$tag}; + my $reader = $self->{_tags}->{$tag}->{reader}; + $reader =~ s/^.*:://; # strip module prefix + return $reader; +} + =head1 PRIVATE =head2 _invalidate_tag @@ -127,7 +171,8 @@ Probe each RFID reader supported and returns succefull ones =cut -my @readers = ( '3M810', 'CPRM02', 'librfid' ); +#my @readers = ( '3M810', 'CPRM02', 'librfid' ); +my @readers = ( '3M810', 'librfid' ); sub _available { my ( $self, $filter ) = @_;