cleanup documentation
[Biblio-RFID.git] / lib / RFID / Biblio.pm
1 package RFID::Biblio;
2
3 use warnings;
4 use strict;
5
6 use base 'Exporter';
7 our @EXPORT = qw( hex2bytes as_hex hex_tag );
8
9 use Data::Dump qw(dump);
10
11 =head1 NAME
12
13 RFID::Biblio - perl tools to use different RFID readers for library use 
14
15 =cut
16
17 our $VERSION = '0.02';
18
19 my $debug = 0;
20
21
22 =head1 SYNOPSIS
23
24 Main idea is to develop simple API to reader, and than provide useful
25 abstractions on top of it to quickly write applications to respond on
26 tags which come in range of RFID reader using L<RFID::Biblio::Reader>.
27
28 Writing support for new RFID readers should be easy.
29 L<RFID::Biblio::Reader::API> provides documentation on writing support
30 for different readers.
31
32 Currently, two serial RFID readers based on L<RFID::Biblio::Reader::Serial>
33 are implemented:
34
35 =over 4
36
37 =item *
38
39 L<RFID::Biblio::Reader::3M810>
40
41 =item *
42
43 L<RFID::Biblio::Reader::CPRM02>
44
45 =back
46
47 There is also simple read-only reader using shell commands in
48 L<RFID::Biblio::Reader::librfid>.
49
50 For implementing application take a look at L<RFID::Biblio::Reader>
51
52 C<scripts/RFID-JSONP-server.pl> is example of such application. It's local
53 interface to RFID reader and JSONP REST server.
54
55 C<examples/koha-rfid.js> is jQuery based JavaScript code which can be inserted
56 in Koha Library System to provide overlay with tags in range and
57 check-in/check-out form-fill functionality.
58
59 =head1 EXPORT
60
61 Formatting functions are exported
62
63 =head2 hex2bytes
64
65   my $bytes = hex2bytes($hex);
66
67 =cut
68
69 sub hex2bytes {
70         my $str = shift || die "no str?";
71         my $b = $str;
72         $b =~ s/\s+//g;
73         $b =~ s/(..)/\\x$1/g;
74         $b = "\"$b\"";
75         my $bytes = eval $b;
76         die $@ if $@;
77         warn "## str2bytes( $str ) => $b => ",as_hex($bytes) if $debug;
78         return $bytes;
79 }
80
81 =head2 as_hex
82
83   print as_hex( $bytes );
84
85 =cut
86
87 sub as_hex {
88         my @out;
89         foreach my $str ( @_ ) {
90                 my $hex = uc unpack( 'H*', $str );
91                 $hex =~ s/(..)/$1 /g if length( $str ) > 2;
92                 $hex =~ s/\s+$//;
93                 push @out, $hex;
94         }
95         return join(' | ', @out);
96 }
97
98 =head2 hex_tag
99
100   print hex_tag $8bytes;
101
102 =cut
103
104 sub hex_tag { uc(unpack('H16', shift)) }
105
106
107 =head1 SUPPORTED READERS
108
109 Support for different RFID readers is implemented in subclasses:
110
111 =head2 3M 810
112
113 L<RFID::Biblio::Reader::3M810>
114
115 =head2 CPR-M02
116
117 L<RFID::Biblio::Reader::CPRM02>
118
119 =head2 librfid
120
121 L<RFID::Biblio::Reader::librfid>
122
123 =head1 AUTHOR
124
125 Dobrica Pavlinusic, C<< <dpavlin at rot13.org> >>
126
127 =head1 BUGS
128
129 Please report any bugs or feature requests to C<bug-rfid-serial at rt.cpan.org>, or through
130 the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=RFID-Biblio>.  I will be notified, and then you'll
131 automatically be notified of progress on your bug as I make changes.
132
133
134
135
136 =head1 SUPPORT
137
138 You can find documentation for this module with the perldoc command.
139
140     perldoc RFID::Biblio
141
142
143 You can also look for information at:
144
145 =over 4
146
147 =item * RT: CPAN's request tracker
148
149 L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=RFID-Biblio>
150
151 =item * AnnoCPAN: Annotated CPAN documentation
152
153 L<http://annocpan.org/dist/RFID-Biblio>
154
155 =item * CPAN Ratings
156
157 L<http://cpanratings.perl.org/d/RFID-Biblio>
158
159 =item * Search CPAN
160
161 L<http://search.cpan.org/dist/RFID-Biblio/>
162
163 =back
164
165
166 =head1 ACKNOWLEDGEMENTS
167
168
169 =head1 LICENSE AND COPYRIGHT
170
171 Copyright 2010 Dobrica Pavlinusic.
172
173 This program is free software; you can redistribute it and/or modify
174 it under the terms of the GNU General Public License as published by
175 the Free Software Foundation; version 2 dated June, 1991 or at your option
176 any later version.
177
178 This program is distributed in the hope that it will be useful,
179 but WITHOUT ANY WARRANTY; without even the implied warranty of
180 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
181 GNU General Public License for more details.
182
183 A copy of the GNU General Public License is available in the source tree;
184 if not, write to the Free Software Foundation, Inc.,
185 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
186
187
188 =cut
189
190 1; # End of RFID::Biblio