add link to RFID501
[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 DESCRIPTION
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 Applications can use L<RFID::Biblio::RFID501> which is some kind of
60 semi-standard 3M layout or blocks on RFID tags.
61
62 =for readme stop
63
64 =head1 EXPORT
65
66 Formatting functions are exported
67
68 =head2 hex2bytes
69
70   my $bytes = hex2bytes($hex);
71
72 =cut
73
74 sub hex2bytes {
75         my $str = shift || die "no str?";
76         my $b = $str;
77         $b =~ s/\s+//g;
78         $b =~ s/(..)/\\x$1/g;
79         $b = "\"$b\"";
80         my $bytes = eval $b;
81         die $@ if $@;
82         warn "## str2bytes( $str ) => $b => ",as_hex($bytes) if $debug;
83         return $bytes;
84 }
85
86 =head2 as_hex
87
88   print as_hex( $bytes );
89
90 =cut
91
92 sub as_hex {
93         my @out;
94         foreach my $str ( @_ ) {
95                 my $hex = uc unpack( 'H*', $str );
96                 $hex =~ s/(..)/$1 /g if length( $str ) > 2;
97                 $hex =~ s/\s+$//;
98                 push @out, $hex;
99         }
100         return join(' | ', @out);
101 }
102
103 =head2 hex_tag
104
105   print hex_tag $8bytes;
106
107 =cut
108
109 sub hex_tag { uc(unpack('H16', shift)) }
110
111 =for readme continue
112
113 =head1 HARDWARE SUPPORT
114
115 =head2 3M 810
116
117 L<RFID::Biblio::Reader::3M810>
118
119 =head2 CPR-M02
120
121 L<RFID::Biblio::Reader::CPRM02>
122
123 =head2 librfid
124
125 L<RFID::Biblio::Reader::librfid>
126
127
128 =head1 AUTHOR
129
130 Dobrica Pavlinusic, C<< <dpavlin at rot13.org> >>
131
132 L<http://blog.rot13.org/>
133
134 =head1 BUGS
135
136 Please report any bugs or feature requests to C<bug-rfid-biblio at rt.cpan.org>, or through
137 the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=RFID-Biblio>.  I will be notified, and then you'll
138 automatically be notified of progress on your bug as I make changes.
139
140
141
142
143 =head1 SUPPORT
144
145 You can find documentation for this module with the perldoc command.
146
147     perldoc RFID::Biblio
148     perldoc RFID::Biblio::Reader
149     perldoc RFID::Biblio::Reader::API
150
151
152 You can also look for information at:
153
154 =over 4
155
156 =item * RT: CPAN's request tracker
157
158 L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=RFID-Biblio>
159
160 =item * AnnoCPAN: Annotated CPAN documentation
161
162 L<http://annocpan.org/dist/RFID-Biblio>
163
164 =item * CPAN Ratings
165
166 L<http://cpanratings.perl.org/d/RFID-Biblio>
167
168 =item * Search CPAN
169
170 L<http://search.cpan.org/dist/RFID-Biblio/>
171
172 =back
173
174
175 =head1 ACKNOWLEDGEMENTS
176
177
178 =head1 LICENSE AND COPYRIGHT
179
180 Copyright 2010 Dobrica Pavlinusic.
181
182 This program is free software; you can redistribute it and/or modify
183 it under the terms of the GNU General Public License as published by
184 the Free Software Foundation; version 2 dated June, 1991 or at your option
185 any later version.
186
187 This program is distributed in the hope that it will be useful,
188 but WITHOUT ANY WARRANTY; without even the implied warranty of
189 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
190 GNU General Public License for more details.
191
192 A copy of the GNU General Public License is available in the source tree;
193 if not, write to the Free Software Foundation, Inc.,
194 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
195
196
197 =cut
198
199 1; # End of RFID::Biblio