added reader callback to tags to query just some readers
authorDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 15 Oct 2014 14:51:42 +0000 (16:51 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 15 Oct 2014 15:10:38 +0000 (17:10 +0200)
lib/Biblio/RFID.pm
lib/Biblio/RFID/Reader.pm
scripts/RFID-JSONP-server.pl

index 6cfa603..62b1a7f 100644 (file)
@@ -14,7 +14,7 @@ Biblio::RFID - perl tools to use different RFID readers for library use
 
 =cut
 
-our $VERSION = '0.04';
+our $VERSION = '0.05';
 
 our $debug = $ENV{DEBUG} || 0;
 
index 3af9fc4..c66febd 100644 (file)
@@ -39,6 +39,7 @@ sub new {
   my @visible = $rfid->tags(
                enter => sub { my $tag = shift; },
                leave => sub { my $tag = shift; },
+               reader => sub { my $reader = shift; ref($reader) =~ m/something/ },
   );
 
 =cut
@@ -52,6 +53,11 @@ sub tags {
        my $t = time;
 
        foreach my $rfid ( @{ $self->{_readers} } ) {
+
+               if ( exists $triggers->{reader} ) {
+                       next unless $triggers->{reader}->($rfid);
+               }
+
                warn "# inventory on $rfid";
                my @tags = $rfid->inventory;
 
index b3533da..f363d42 100755 (executable)
@@ -193,8 +193,16 @@ sub http_server {
                                        }
                                        close($fh);
                                }
-                       } elsif ( $method =~ m{/scan} ) {
-                               my @tags = $rfid->tags;
+                       } elsif ( $method =~ m{/scan(/only/(.+))?} ) {
+                               my $only = $2;
+                               my @tags = $rfid->tags( reader => sub {
+                                       my $reader = shift;
+                                       return 1 unless $only;
+                                       if ( ref $reader =~ m/\Q$only\E/i ) {
+                                               return 1;
+                                       }
+                                       return 0;
+                               });
                                my $json = { time => time() };
                                foreach my $tag ( @tags ) {
                                        my $hash = $rfid->to_hash( $tag );