$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 ( $@ ) {
}
- 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} );
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
=cut
-my @readers = ( '3M810', 'CPRM02', 'librfid' );
+#my @readers = ( '3M810', 'CPRM02', 'librfid' );
+my @readers = ( '3M810', 'librfid' );
sub _available {
my ( $self, $filter ) = @_;