split RFID::Bibio::Reader::Serial as base class
[Biblio-RFID.git] / lib / RFID / Biblio / Reader / Serial.pm
1 package RFID::Biblio::Reader::Serial;
2
3 use warnings;
4 use strict;
5
6 use Device::SerialPort qw(:STAT);
7 use Data::Dump qw(dump);
8
9 =head1 NAME
10
11 RFID::Biblio::Reader::Serial - helper to provide serial port
12
13 =cut
14
15 =head1 METHODS
16
17 =head2 new
18
19 Open serial port (if needed) and init reader
20
21 =cut
22
23 sub new {
24         my $class = shift;
25         my $self = {@_};
26         bless $self, $class;
27
28         $self->port;
29
30         $self->init && return $self;
31 }
32
33
34 =head2 port
35
36   my $serial_obj = $self->port;
37
38 =cut
39
40 sub port {
41         my $self = shift;
42
43         return $self->{port} if defined $self->{port};
44
45         my $settings = $self->serial_settings;
46         my $device   = $settings->{device} ||= $ENV{RFID_DEVICE};
47         warn "# settings ",dump $settings;
48
49         if ( ! $device ) {
50                 warn "# no device, serial port not opened\n";
51                 return;
52         }
53
54         $self->{port} = Device::SerialPort->new( $settings->{device} )
55         || die "can't open serial port: $!\n";
56
57         $self->{port}->$_( $settings->{$_} )
58         foreach ( qw/handshake baudrate databits parity stopbits/ );
59
60 }
61
62 1