Biblio-RFID
view release on metacpan or search on metacpan
lib/Biblio/RFID/SmartX.pm view on Meta::CPAN
package Biblio::RFID::SmartX;
use warnings;
use strict;
use Data::Dump qw(dump);
=head1 NAME
Biblio::RFID::SmartX - Croatian student cards format
=head1 METHODS
=head2 to_hash
my $hash = Biblio::RFID::Decode::SmartX->to_hash( [ 'sector1', 'sector2', ... , 'sector7' ] );
=cut
sub bcd {
my $data = shift;
return join('', map { sprintf("%02x",ord($_)) } split (//, $data));
}
sub to_hash {
my ( $self, $data ) = @_;
return unless $data;
die "expecting array of sectors" unless ref $data eq 'ARRAY';
my $decoded;
foreach ( 4 .. 6 ) {
warn "# $_: ",
$decoded->[$_] = bcd( $data->[$_] );
}
my $hash;
$hash->{SXID} = substr( $decoded->[4], 0, 20 );
$hash->{JMBAG} = substr( $decoded->[4], 22, 10 );
$hash->{OIB} = substr( $decoded->[5], 16, 11 );
$hash->{SPOL} = substr( $data->[5], 14, 1 ); # char, not BCD!
$hash->{INST_ID} = substr( $decoded->[6], 0, 12 );
$hash->{CARD_V} = substr( $decoded->[6], 12, 4 );
warn "## hash = ",dump($hash);
return $hash;
}
1;
( run in 1.550 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )