M5Unit-RFID 0.0.1 git rev:d8076ed
Loading...
Searching...
No Matches
m5::unit::UnitMFRC522 Class Reference

Radio frequency identification unit. More...

#include <unit_MFRC522.hpp>

Inheritance diagram for m5::unit::UnitMFRC522:
m5::unit::UnitWS1850S

Classes

struct  config_t
 Settings for begin. More...
 

Public Member Functions

 UnitMFRC522 (const uint8_t addr=DEFAULT_ADDRESS)
 Constructor.
 
virtual ~UnitMFRC522 ()
 Destructor.
 
virtual bool begin () override
 Begin the unit.
 
virtual void update (const bool force=false) override
 Update internal state.
 
m5::nfc::NFC NFCMode () const
 Gets the current operating mode.
 
bool configureNFCMode (const m5::nfc::NFC mode)
 Configure NFC mode.
 
bool softReset (const bool blocking=true)
 Software reset.
 
bool selfTest ()
 Self test.
 
Settings for begin
config_t config ()
 Gets the configuration.
 
void config (const config_t &cfg)
 Set the configuration.
 
Antenna
bool readAntennaStatus (bool &status)
 Read the antenna status.
 
bool turnOnAntenna ()
 Turn on the antenna.
 
bool turnOffAntenna ()
 Turn off the antenna.
 
bool readReceiverGain (mfrc522::ReceiverGain &gain)
 Gets the receiver gain.
 
bool writeReceiverGain (const mfrc522::ReceiverGain gain)
 Write the receiver gain.
 
TPrescaler
bool readTPrescaler (uint16_t &tprescale)
 Read the TPrescaler.
 
bool writeTPrescaler (const uint16_t tprescale)
 Write the TPrescaler.
 
CRC
bool calculateCRC (uint16_t &result, const uint8_t *buf, const uint8_t len)
 Calculate CRC by hardware.
 
bool calculateSoftwareCRC (uint16_t &result, const uint8_t *buf, const uint8_t len)
 Calculate CRC by software.
 
NFC-A
bool nfcaTransceive (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transceive.
 
bool request (uint16_t &atqa)
 Request for idle PICC.
 
bool wakeup (uint16_t &atqa)
 Wakeup for idle/halt PICC.
 
bool selectWithAnticollision (bool &completed, m5::nfc::a::PICC &picc, const uint8_t lv)
 Select PICC with anti-collision.
 
bool select (const m5::nfc::a::PICC &picc)
 Select specific PICC.
 
bool readBlock (uint8_t rx[16], const uint8_t block)
 Read the 1 block / 4 page (16 bytes)
 
bool writeBlock (const uint8_t block, const uint8_t tx[16])
 Write the 1 block.
 
bool hlt ()
 Hlt for PICC.
 
MIFARE classic
bool mifareClassicAuthenticateA (const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
 Authentication using keyA of the specified block.
 
bool mifareClassicAuthenticateB (const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
 Authentication using keyB of the specified block.
 
bool mifareClassicStopCrypto1 ()
 Exit from authenticated state for MIFARE classic.
 
bool mifareClassicValueBlock (const m5::nfc::a::Command cmd, const uint8_t block, const uint32_t arg=0)
 Operation for the value block.
 

Protected Member Functions

bool modify_bit_register8 (const uint8_t reg, const uint8_t set_mask, const uint8_t clear_mask)
 
bool set_bit_register8 (const uint8_t reg, const uint8_t bits)
 
bool clear_bit_register8 (const uint8_t reg, const uint8_t bits)
 
bool change_bit_register8 (const uint8_t reg, const uint8_t bits, const uint8_t mask)
 
bool read_register_with_align (const uint8_t reg, uint8_t *buf, const uint8_t len, const uint8_t align)
 
bool write_pcd_command (const mfrc522::Command cmd)
 
bool reset_baud_rates ()
 
bool flush_fifo_buffer ()
 
bool wait_comm_irq (const uint8_t irq, const uint32_t duration)
 
bool wait_div_irq (const uint8_t irq, const uint32_t duration)
 
bool transmit_command (const mfrc522::Command cmd, const uint8_t *buf, const uint8_t len, const uint8_t txLast=0, const uint8_t rxAlign=0)
 
bool transceive (uint8_t *rbuf, uint16_t &rlen, const uint8_t *buf, const uint16_t len, const uint32_t timeout_ms, uint8_t &validBits, const uint8_t rxAlign=0, const bool crc=false, uint8_t *err=nullptr)
 
bool picc_haltA ()
 
bool read_block (uint8_t *rbuf, uint8_t &rlen, const uint8_t addr)
 
bool write_block (const uint8_t block, const uint8_t *buf, const uint8_t len)
 
bool write_page (const uint8_t page, const uint8_t *buf, const uint8_t len)
 
bool request_wakeup (uint16_t &atqa, const bool request)
 
bool anti_collision (const uint8_t cascadeLevel, uint8_t *buf)
 
bool mifare_classic_authenticate (const m5::nfc::a::Command cmd, const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key)
 
bool mifare_classic_transceive (const m5::nfc::a::Command cmd, const uint8_t block, const uint32_t timeout_ms)
 
bool mifare_classic_transceive (const uint8_t *buf, const uint8_t len, const uint32_t timeout_ms, const bool usingtimeout=false)
 
bool calculate_crc (uint16_t &result, const uint8_t *buf, const uint8_t len)
 
virtual bool self_test ()
 

Protected Attributes

config_t _cfg {}
 
uint16_t _tprescaler {}
 

Detailed Description

Radio frequency identification unit.

Operating frequency: 13.56 MHz

Supported protocols: ISO14443A, MIFARE and NTAG

Constructor & Destructor Documentation

◆ UnitMFRC522()

m5::unit::UnitMFRC522::UnitMFRC522 ( const uint8_t addr = DEFAULT_ADDRESS)
inlineexplicit

Constructor.

Parameters
addrI2C address

Member Function Documentation

◆ begin()

bool m5::unit::UnitMFRC522::begin ( )
overridevirtual

Begin the unit.

Returns
True if successful

writeRegister8(TRELOAD_REG_H, 0x00) || !writeRegister8(TRELOAD_REG_L, 40*5) || // 5ms

Reimplemented in m5::unit::UnitWS1850S.

◆ calculateCRC()

bool m5::unit::UnitMFRC522::calculateCRC ( uint16_t & result,
const uint8_t * buf,
const uint8_t len )

Calculate CRC by hardware.

Parameters
[out]resultCRC value
bufBuffer
lenThe length of the buffer
Returns
True if successful

◆ calculateSoftwareCRC()

bool m5::unit::UnitMFRC522::calculateSoftwareCRC ( uint16_t & result,
const uint8_t * buf,
const uint8_t len )

Calculate CRC by software.

Parameters
[out]resultCRC value
bufBuffer
lenThe length of the buffer
Returns
True if successful

◆ configureNFCMode()

bool m5::unit::UnitMFRC522::configureNFCMode ( const m5::nfc::NFC mode)
inline

Configure NFC mode.

Parameters
modeNFC mode
Returns
True if successful
Warning
Only NFC-A

◆ hlt()

bool m5::unit::UnitMFRC522::hlt ( )

Hlt for PICC.

Returns
True if successful

◆ mifareClassicAuthenticateA()

bool m5::unit::UnitMFRC522::mifareClassicAuthenticateA ( const m5::nfc::a::PICC & picc,
const uint8_t block,
const m5::nfc::a::mifare::classic::Key & key = m5::nfc::a::mifare::classic::DEFAULT_KEY )
inline

Authentication using keyA of the specified block.

Parameters
piccPICC
blockBlock address
keyMIFARE classic key
Returns
True if successful

◆ mifareClassicAuthenticateB()

bool m5::unit::UnitMFRC522::mifareClassicAuthenticateB ( const m5::nfc::a::PICC & picc,
const uint8_t block,
const m5::nfc::a::mifare::classic::Key & key = m5::nfc::a::mifare::classic::DEFAULT_KEY )
inline

Authentication using keyB of the specified block.

Parameters
piccPICC
blockBlock address
keyMIFARE classic key
Returns
True if successful

◆ mifareClassicStopCrypto1()

bool m5::unit::UnitMFRC522::mifareClassicStopCrypto1 ( )

Exit from authenticated state for MIFARE classic.

Returns
True if successful

◆ mifareClassicValueBlock()

bool m5::unit::UnitMFRC522::mifareClassicValueBlock ( const m5::nfc::a::Command cmd,
const uint8_t block,
const uint32_t arg = 0 )

Operation for the value block.

Parameters
cmdCommand
blockBlock address
argArgument for command if needs
Returns
True if successful

◆ nfcaTransceive()

bool m5::unit::UnitMFRC522::nfcaTransceive ( uint8_t * rx,
uint16_t & rx_len,
const uint8_t * tx,
const uint16_t tx_len,
const uint32_t timeout_ms )

Transceive.

Parameters
rxReceive buffer
[in,out]rx_lenin:Size of receive buffer out:actual read size
txSend buffer
tx_lenSize of send buffer
timeout_msTimeout(ms)
Returns
True if successful

◆ NFCMode()

m5::nfc::NFC m5::unit::UnitMFRC522::NFCMode ( ) const
inline

Gets the current operating mode.

Note
Only NFC-A

◆ readAntennaStatus()

bool m5::unit::UnitMFRC522::readAntennaStatus ( bool & status)

Read the antenna status.

Parameters
[out]statusON if true
Returns
True if successful

◆ readBlock()

bool m5::unit::UnitMFRC522::readBlock ( uint8_t rx[16],
const uint8_t block )

Read the 1 block / 4 page (16 bytes)

Parameters
rxReceiver buffer (at least 16 bytes)
blockBlock address
Returns
True if successful

◆ readReceiverGain()

bool m5::unit::UnitMFRC522::readReceiverGain ( mfrc522::ReceiverGain & gain)

Gets the receiver gain.

Parameters
[out]gainGain
Returns
True if successful

◆ readTPrescaler()

bool m5::unit::UnitMFRC522::readTPrescaler ( uint16_t & tprescale)

Read the TPrescaler.

Parameters
[out]tprescaleTPrescaler value
Returns
True if successful

◆ request()

bool m5::unit::UnitMFRC522::request ( uint16_t & atqa)
inline

Request for idle PICC.

Parameters
[out]atqaATQA
Returns
True if successful

◆ select()

bool m5::unit::UnitMFRC522::select ( const m5::nfc::a::PICC & picc)

Select specific PICC.

Parameters
piccPICC
Returns
True if successful

◆ selectWithAnticollision()

bool m5::unit::UnitMFRC522::selectWithAnticollision ( bool & completed,
m5::nfc::a::PICC & picc,
const uint8_t lv )

Select PICC with anti-collision.

Parameters
[out]completedCompleted select?
[out]piccSelected PICC
lvCascade level (1-3)
Returns
True if successful

◆ self_test()

bool m5::unit::UnitMFRC522::self_test ( )
protectedvirtual

Reimplemented in m5::unit::UnitWS1850S.

◆ selfTest()

bool m5::unit::UnitMFRC522::selfTest ( )
inline

Self test.

Returns
True if successful
Warning
Blocks until the test finishes and starts up again

◆ softReset()

bool m5::unit::UnitMFRC522::softReset ( const bool blocking = true)

Software reset.

Parameters
blockingBlocks until the reset finishes and starts up again if True
Returns
True if successful

◆ turnOffAntenna()

bool m5::unit::UnitMFRC522::turnOffAntenna ( )

Turn off the antenna.

Returns
True if successful

◆ turnOnAntenna()

bool m5::unit::UnitMFRC522::turnOnAntenna ( )

Turn on the antenna.

Returns
True if successful

◆ update()

void m5::unit::UnitMFRC522::update ( const bool force = false)
overridevirtual

Update internal state.

Parameters
forceForce update if true

◆ wakeup()

bool m5::unit::UnitMFRC522::wakeup ( uint16_t & atqa)
inline

Wakeup for idle/halt PICC.

Parameters
[out]atqaATQA
Returns
True if successful

◆ writeBlock()

bool m5::unit::UnitMFRC522::writeBlock ( const uint8_t block,
const uint8_t tx[16] )

Write the 1 block.

Parameters
blockBlock address
txSend buffer (at least 16 bytes)
Returns
True if successful

◆ writeReceiverGain()

bool m5::unit::UnitMFRC522::writeReceiverGain ( const mfrc522::ReceiverGain gain)

Write the receiver gain.

Parameters
gainGain
Returns
True if successful

◆ writeTPrescaler()

bool m5::unit::UnitMFRC522::writeTPrescaler ( const uint16_t tprescale)

Write the TPrescaler.

Parameters
tprescaleTPrescaler value
Returns
True if successful