don't die without tags in range
[Biblio-RFID.git] / lib / RFID / Biblio / Readers.pm
1 package RFID::Biblio::Readers;
2
3 =head1 NAME
4
5 RFID::Biblio::Readers - autodetect supported readers
6
7 =head1 FUNCTIONS
8
9 =head2 available
10
11 Probe each RFID reader supported and returns succefull ones
12
13   my @rfid = RFID::Biblio::Readers->available( $regex_filter );
14
15 =cut
16
17 use warnings;
18 use strict;
19
20 use lib 'lib';
21
22 my @readers = ( '3M810', 'CPRM02', 'librfid' );
23
24 sub available {
25         my ( $self, $filter ) = @_;
26
27         my @rfid;
28
29         foreach my $reader ( @readers ) {
30                 next if $reader !~ /$filter/i;
31                 my $module = "RFID::Biblio::$reader";
32                 eval "use $module";
33                 die $@ if $@;
34                 if ( my $rfid = $module->new( device => '/dev/ttyUSB0' ) ) {
35                         push @rfid, $rfid;
36                         warn "# added $module\n";
37                 } else {
38                         warn "# ignored $module\n";
39                 }
40         }
41
42         die "no readers found" unless @rfid;
43
44         return @rfid;
45 }
46