added RFID_TCP to query serial readers over tcp socket
[Biblio-RFID.git] / lib / Biblio / RFID / Reader / Serial.pm
index f954f39..24432d5 100644 (file)
@@ -4,11 +4,12 @@ use warnings;
 use strict;
 
 use Device::SerialPort qw(:STAT);
+use Biblio::RFID::Reader::INET;
 use Data::Dump qw(dump);
 
 =head1 NAME
 
-Biblio::RFID::Reader::Serial - base class for serial RFID readers
+Biblio::RFID::Reader::Serial - base class for serial or serial over TCP RFID readers
 
 =head1 METHODS
 
@@ -35,6 +36,9 @@ Tries to open usb serial ports C</dev/ttyUSB*> and serial ports C</dev/ttyS*>
 
 To try just one device use C<RFID_DEVICE=/dev/ttyUSB1> enviroment variable
 
+If you want to define serial connection over TCP socket, you have to export
+enviroment variable C<RFID_TCP=hostname:port>.
+
 =cut
 
 our $serial_device;
@@ -42,8 +46,21 @@ our $serial_device;
 sub port {
        my $self = shift;
 
+       warn "## port ",dump( $self->{port} );
+
        return $self->{port} if defined $self->{port};
 
+       if ( my $tcp = $ENV{RFID_TCP} ) {
+               my $port = Biblio::RFID::Reader::INET->new(
+                       PeerAddr => $tcp,
+                       Proto    => 'tcp'
+               );
+               warn "## TCP $tcp ", ref($port);
+               $self->{port} = $port;
+               $self->init;
+               return $port;
+       }
+
        my $settings = $self->serial_settings;
        my @devices  = $ENV{RFID_DEVICE} ? ( $ENV{RFID_DEVICE} ) : glob '/dev/ttyUSB* /dev/ttyS*';
        warn "# port devices ",dump(@devices);