|
M5Unit-NFC 0.1.0 git rev:93745b5
|
Common interface layer for each chip of the NFC-B reader. More...
#include <nfc_layer_b.hpp>
Public Member Functions | |
| NFCLayerB (m5::unit::UnitST25R3916 &u) | |
| Constructor with UnitST25R3916. | |
| NFCLayerB (m5::unit::CapST25R3916 &u) | |
| Constructor with CapST25R3916 (SPI variant) | |
| NFCLayerB (m5::unit::UnitWS1850S &u) | |
| Constructor with UnitWS1850S (M5Unit-RFID) | |
| virtual bool | transceive (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms) override |
| Transceive (NFC-B) | |
| virtual bool | transmit (const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms) override |
| Transmit (NFC-B) | |
| virtual bool | receive (uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms) override |
| Receive (NFC-B) | |
| virtual m5::nfc::isodep::IsoDEP * | isoDEP () override |
| Get ISO-DEP context. | |
| virtual uint16_t | maximum_fifo_depth () const override |
| Maximum FIFO depth in bytes. | |
| bool | isActive (const m5::nfc::b::PICC &picc) const |
| Is the specified PICC currently active? | |
| const m5::nfc::b::PICC & | activatedPICC () const |
| Retrieve the currently activated PICC. | |
Detection and activation | |
| bool | request (uint8_t *atqb, uint16_t &atqb_len, const uint8_t afi=0x00, const m5::nfc::b::Require slots=m5::nfc::b::Require::Slot1, const uint32_t timeout_ms=m5::nfc::b::TIMEOUT_REQ_WUP_B) |
| Send REQB to discover a PICC in IDLE. | |
| bool | wakeup (uint8_t *atqb, uint16_t &atqb_len, const uint8_t afi=0x00, const m5::nfc::b::Require slots=m5::nfc::b::Require::Slot1, const uint32_t timeout_ms=m5::nfc::b::TIMEOUT_REQ_WUP_B) |
| Send WUPB to wake a PICC from IDLE or HALT. | |
| bool | detect (m5::nfc::b::PICC &picc, const uint8_t afi=0x00, const uint32_t timeout_ms=50U, const uint32_t req_timeout_ms=m5::nfc::b::TIMEOUT_REQ_WUP_B) |
| Detect single idle PICC. | |
| bool | detect (std::vector< m5::nfc::b::PICC > &piccs, const uint8_t afi=0x00, const uint8_t max_piccs=4, const uint32_t timeout_ms=1000U, const uint32_t req_timeout_ms=m5::nfc::b::TIMEOUT_REQ_WUP_B) |
| Detect idle PICCs. | |
| bool | select (m5::nfc::b::PICC &picc, const uint32_t timeout_ms=m5::nfc::b::TIMEOUT_ATTRIB) |
| Send ATTRIB to activate the PICC. | |
For activated PICC | |
| bool | hlt (const uint8_t pupi[4], const uint32_t timeout_ms=m5::nfc::b::TIMEOUT_HLTB) |
| Halt (HLTB) the specified PICC. | |
| bool | deselect (const uint8_t pupi[4], const uint8_t cid=0xFF, const uint32_t timeout_ms=m5::nfc::b::TIMEOUT_DESELECT) |
| Deselect (S(DESELECT)) the specified PICC. | |
| bool | deactivate () |
| Deactivate the currently active PICC. | |
Public Member Functions inherited from m5::nfc::NFCLayerInterface | |
| virtual | ~NFCLayerInterface ()=default |
| Virtual destructor (required for polymorphic deletion) | |
| virtual m5::nfc::NFCForumTag | supportsNFCTag () const |
| activePICC's NDEF type | |
| virtual file_system_feature_t | supportsFilesystem () const |
| activePICC's File system | |
| virtual uint8_t | maximum_read_blocks () const |
| Maximum read blocks for NFC-F. | |
| virtual uint8_t | maximum_write_blocks () const |
| Maximum write blocks for NFC-F. | |
Protected Member Functions | |
| bool | request_wakeup (uint8_t *atqb, uint16_t &atqb_len, const uint8_t afi, const m5::nfc::b::Require slots, const bool wakeup, const uint32_t timeout_ms=m5::nfc::b::TIMEOUT_REQ_WUP_B) |
| virtual bool | read (uint8_t *rx, uint16_t &rx_len, const uint16_t saddr) override |
| Read NDEF (block) | |
| virtual bool | write (const uint16_t saddr, const uint8_t *tx, const uint16_t tx_len) override |
| Write NDEF (block) | |
| virtual uint16_t | first_user_block () const override |
| First user block. | |
| virtual uint16_t | last_user_block () const override |
| Last user block. | |
| virtual uint16_t | user_area_size () const override |
| User area size (bytes) | |
| virtual uint16_t | unit_size_read () const override |
| Unit size for read. | |
| virtual uint16_t | unit_size_write () const override |
| Unit size for write. | |
Protected Attributes | |
| m5::nfc::b::PICC | _activePICC {} |
| m5::nfc::ndef::NDEFLayer | _ndef |
| m5::nfc::isodep::IsoDEP | _isoDEP |
Common interface layer for each chip of the NFC-B reader.
|
explicit |
Constructor with UnitST25R3916.
| u | UnitST25R3916 instance |
|
explicit |
Constructor with CapST25R3916 (SPI variant)
| u | CapST25R3916 instance |
|
explicit |
Constructor with UnitWS1850S (M5Unit-RFID)
| u | UnitWS1850S instance |
|
inline |
Retrieve the currently activated PICC.
| bool m5::nfc::NFCLayerB::deactivate | ( | ) |
Deactivate the currently active PICC.
| bool m5::nfc::NFCLayerB::deselect | ( | const uint8_t | pupi[4], |
| const uint8_t | cid = 0xFF, | ||
| const uint32_t | timeout_ms = m5::nfc::b::TIMEOUT_DESELECT ) |
Deselect (S(DESELECT)) the specified PICC.
| pupi | PUPI (4 bytes) |
| cid | CID (0xFF if not used) |
| timeout_ms | Timeout(ms) |
| bool m5::nfc::NFCLayerB::detect | ( | m5::nfc::b::PICC & | picc, |
| const uint8_t | afi = 0x00, | ||
| const uint32_t | timeout_ms = 50U, | ||
| const uint32_t | req_timeout_ms = m5::nfc::b::TIMEOUT_REQ_WUP_B ) |
Detect single idle PICC.
| [out] | picc | Detected PICC |
| afi | Application Family Identifier (0x00 all) | |
| timeout_ms | Polling time budget in milliseconds | |
| req_timeout_ms | Timeout for each REQB/WUPB request in milliseconds |
| bool m5::nfc::NFCLayerB::detect | ( | std::vector< m5::nfc::b::PICC > & | piccs, |
| const uint8_t | afi = 0x00, | ||
| const uint8_t | max_piccs = 4, | ||
| const uint32_t | timeout_ms = 1000U, | ||
| const uint32_t | req_timeout_ms = m5::nfc::b::TIMEOUT_REQ_WUP_B ) |
Detect idle PICCs.
| [out] | piccs | Detected PICCs (one per activated PICC candidate) |
| afi | Application Family Identifier (0x00 all) | |
| max_picc | How many to detect | |
| timeout_ms | Polling time budget in milliseconds | |
| req_timeout_ms | Timeout for each REQB/WUPB request in milliseconds |
|
inlineoverrideprotectedvirtual |
First user block.
Implements m5::nfc::NFCLayerInterface.
| bool m5::nfc::NFCLayerB::hlt | ( | const uint8_t | pupi[4], |
| const uint32_t | timeout_ms = m5::nfc::b::TIMEOUT_HLTB ) |
Halt (HLTB) the specified PICC.
| pupi | PUPI (4 bytes) |
| timeout_ms | Timeout(ms) |
|
inline |
Is the specified PICC currently active?
| picc | PICC to check |
|
inlineoverridevirtual |
Get ISO-DEP context.
Reimplemented from m5::nfc::NFCLayerInterface.
|
inlineoverrideprotectedvirtual |
Last user block.
Implements m5::nfc::NFCLayerInterface.
|
overridevirtual |
Maximum FIFO depth in bytes.
Implements m5::nfc::NFCLayerInterface.
|
inlineoverrideprotectedvirtual |
Read NDEF (block)
Implements m5::nfc::NFCLayerInterface.
|
overridevirtual |
Receive (NFC-B)
| [out] | rx | Receive buffer |
| [in,out] | rx_len | In: capacity of rx, Out: received length |
| timeout_ms | Timeout in milliseconds |
Reimplemented from m5::nfc::NFCLayerInterface.
|
inline |
Send REQB to discover a PICC in IDLE.
| [out] | atqb | ATQB received from PICC (at atqb_len) |
| [in/out] | atqb_len in:atqb length out:actual received length | |
| afi | Application Family Identifier (0x00 all) | |
| slots | Number of slots required | |
| timeout_ms | Timeout in milliseconds |
| bool m5::nfc::NFCLayerB::select | ( | m5::nfc::b::PICC & | picc, |
| const uint32_t | timeout_ms = m5::nfc::b::TIMEOUT_ATTRIB ) |
Send ATTRIB to activate the PICC.
| picc | PICC to activate |
| timeout_ms | Timeout(ms) |
|
overridevirtual |
Transceive (NFC-B)
| [out] | rx | Receive buffer |
| [in,out] | rx_len | In: capacity of rx, Out: received length |
| tx | Transmit buffer | |
| tx_len | Transmit length | |
| timeout_ms | Timeout in milliseconds |
Reimplemented from m5::nfc::NFCLayerInterface.
|
overridevirtual |
Transmit (NFC-B)
| tx | Transmit buffer |
| tx_len | Transmit length |
| timeout_ms | Timeout in milliseconds |
Reimplemented from m5::nfc::NFCLayerInterface.
|
inlineoverrideprotectedvirtual |
Unit size for read.
Implements m5::nfc::NFCLayerInterface.
|
inlineoverrideprotectedvirtual |
Unit size for write.
Implements m5::nfc::NFCLayerInterface.
|
inlineoverrideprotectedvirtual |
User area size (bytes)
Implements m5::nfc::NFCLayerInterface.
|
inline |
Send WUPB to wake a PICC from IDLE or HALT.
| [out] | atqb | ATQB received from PICC (at least atqb_len) |
| [in/out] | atqb_len in:atqb length out:actual received length | |
| afi | Application Family Identifier (0x00 all) | |
| slots | Number of slots required | |
| timeout_ms | Timeout in milliseconds |
|
inlineoverrideprotectedvirtual |
Write NDEF (block)
Implements m5::nfc::NFCLayerInterface.