HiPi
view release on metacpan or search on metacpan
lib/HiPi/Interface/EPaper/TypeB.pm view on Meta::CPAN
} elsif( $control == EPD_BORDER_COLOUR ) {
if( $self->is_tri_colour ) {
$border = HIPI_BORDER_COLOUR;
} else {
$border = HIPI_BORDER_BLACK;
}
} elsif( $control == EPD_BORDER_WHITE ) {
$border = HIPI_BORDER_WHITE;
}
my $vcdata = $border | $vcom;
# warn sprintf('RETURNING VCOM DATA 0x%X', $vcdata);
return $vcdata;
}
1;
__END__
lib/HiPi/Interface/MFRC522.pm view on Meta::CPAN
return ( MFRC522_STATUS_MIFARE_NACK , \@rdata, $validbits);
}
#// We need at least the CRC_A value and all 8 bits of the last byte must be received.
if ( $getlen < 2 || $check_validBits != 0) {
return ( MFRC522_STATUS_CRC_WRONG, \@rdata, $validbits );
}
#// Verify CRC_A - do our own calculation and store the control in controlBuffer.
my @crcdata = @rdata;
pop @crcdata; pop @crcdata;
my ( $crcstatus, $cbuffer1, $cbuffer2 ) = $self->pcd_calculate_crc( \@crcdata );
if ($crcstatus != MFRC522_STATUS_OK) {
return ($crcstatus, \@rdata, $check_validBits) ;
}
if (($rdata[-2] != $cbuffer1 ) || ($rdata[-1] != $cbuffer2)) {
return (MFRC522_STATUS_CRC_WRONG, \@rdata, $check_validBits) ;
}
}
return ( MFRC522_STATUS_OK, \@rdata, $check_validBits );
lib/HiPi/Interface/MFRC522.pm view on Meta::CPAN
return ( $crcstatus, undef );
}
my @sendbuffer = @$data;
push( @sendbuffer, $cbuffer1, $cbuffer2 );
#// Transceive the data, store the reply in cmdBuffer[]
my $waitIRq = 0x30; #// RxIRq and IdleIRq
my $validBits = 0;
my $getlen = 16;
my ($status, $piccdata, $validbitsout) = $self->pcd_communicate_with_picc(
MFRC522_TRANSCEIVE, $waitIRq, \@sendbuffer, $getlen, $validBits
);
if ($accepttimeout && $status == MFRC522_STATUS_TIMEOUT) {
return (MFRC522_STATUS_OK, [] );
}
if ($status != MFRC522_STATUS_OK) {
return ( $status, undef );
}
#// The PICC must reply with a 4 bit ACK
my $returnbuffersize = scalar @$piccdata;
if ($returnbuffersize != 1 || $validbitsout != 4) {
return ( MFRC522_STATUS_ERROR, undef );
}
if ($piccdata->[0] != MIFARE_MF_ACK) {
return ( MFRC522_STATUS_MIFARE_NACK, undef );
}
return ($status, $piccdata, $validbitsout);
}
sub picc_read_tag_serial {
my $self = shift;
my( $status, $uid ) = $self->picc_select;
my $serialstring = '';
if( $status == MFRC522_STATUS_OK ) {
for (my $i = 0; $i < $uid->{'size'}; $i ++ ) {
lib/HiPi/Interface/MFRC522.pm view on Meta::CPAN
$buffer[1] = 0x70; #// NVB - Number of Valid Bits: Seven whole bytes
#// Calculate BCC - Block Check Character
for( 2,3,4,5) {
$buffer[$_] //= 0;
}
$buffer[6] = $buffer[2] ^ $buffer[3] ^ $buffer[4] ^ $buffer[5];
# // Calculate CRC_A
my @crcdata = @buffer[0..6];
( $crcstatus, $cbuffer1, $cbuffer2 ) = $self->pcd_calculate_crc( \@crcdata );
if ($crcstatus != MFRC522_STATUS_OK) {
return ( $crcstatus, undef, undef );
}
# set the crc result
$buffer[7] = $cbuffer1;
$buffer[8] = $cbuffer2;
$txLastBits = 0; #// 0 => All 8 bits are valid.
lib/HiPi/Interface/MFRC522.pm view on Meta::CPAN
#// Check response SAK (Select Acknowledge)
my $resplen = scalar @$respdata;
if ($resplen != 3 || $respvalidbits != 0) { # // SAK must be exactly 24 bits (1 byte + CRC_A).
return ( MFRC522_STATUS_ERROR, undef, undef );
}
#// Verify CRC_A - do our own calculation and store the control in buffer[2..3] - those bytes are not needed anymore.
my @crcdata = @$respdata;
pop @crcdata; pop @crcdata;
( $crcstatus, $cbuffer1, $cbuffer2 ) = $self->pcd_calculate_crc( \@crcdata );
if ($crcstatus != MFRC522_STATUS_OK) {
return ( $crcstatus, undef, undef );
}
if (($cbuffer1 != $respdata->[-2]) || ($cbuffer2 != $respdata->[-1])) {
return ( MFRC522_STATUS_CRC_WRONG, undef, undef );
}
if ($respdata->[0] & 0x04) { #// Cascade bit set - UID not complete yes
$cascadeLevel++;
lib/HiPi/Interface/MFRC522.pm view on Meta::CPAN
}
#// Use the last uid bytes as specified in http://cache.nxp.com/documents/application_note/AN10927.pdf
#// section 3.2.5 "MIFARE Classic Authentication".
#// The only missed case is the MF1Sxxxx shortcut activation,
#// but it requires cascade tag (CT) byte, that is not part of uid.
for (my $i = 0; $i < 4; $i++) { #// The last 4 bytes of the UID
$sendData[8 + $i] = $uid->{'data'}->[$i + $uid->{'size'} -4];
}
my ($piccstatus, $piccdata, $piccvalidbits) = $self->pcd_communicate_with_picc( MFRC522_AUTHENT, $waitIRq, \@sendData );
return $piccstatus;
}
sub picc_dump_classic_sector {
my($self, $uid, $key, $sector) = @_;
my $output = '';
my ( $status, $firstBlock, $no_of_blocks, $isSectorTrailer );
#byte firstBlock; // Address of lowest address to dump actually last block dumped)
( run in 0.246 second using v1.01-cache-2.11-cpan-454fe037f31 )