16#ifndef M5_UNIT_NFC_NFC_LAYER_NFC_LAYER_V_HPP
17#define M5_UNIT_NFC_NFC_LAYER_NFC_LAYER_V_HPP
64 return _activePICC.
valid() && _activePICC == picc;
110 bool detect(std::vector<m5::nfc::v::PICC>& piccs,
const uint32_t timeout_ms = 1000U);
154 bool readBlock(uint8_t rx[32],
const uint16_t block);
164 bool writeBlock(
const uint16_t block,
const uint8_t* tx,
const uint8_t tx_len);
173 virtual bool read(uint8_t* rx, uint16_t& rx_len,
const uint16_t sblock)
override;
183 virtual bool write(
const uint16_t sblock,
const uint8_t* tx,
const uint16_t tx_len)
override;
195 bool dump(
const uint16_t block);
240 bool dump_block(
const uint16_t block);
245 bool read_block_ext(uint8_t rx[32],
const m5::nfc::v::PICC& picc,
const uint16_t block);
246 bool write_block_ext(
const m5::nfc::v::PICC& picc,
const uint16_t block,
const uint8_t* tx,
const uint8_t tx_len);
275 std::unique_ptr<Adapter> _impl;
282struct NFCLayerV::Adapter {
283 virtual ~Adapter() =
default;
284 virtual uint16_t max_fifo_depth()
const = 0;
286 virtual bool transceive(uint8_t* rx, uint16_t& rx_len,
const uint8_t* tx,
const uint16_t tx_len,
288 virtual bool transmit(
const uint8_t* tx,
const uint16_t tx_len,
const uint32_t timeout_ms,
290 virtual bool receive(uint8_t* rx, uint16_t& rx_len,
const uint32_t timeout_ms) = 0;
Common interface for NFC layer.
Definition nfc_layer.hpp:26
Common interface layer for each chip of the NFC-V reader.
Definition nfc_layer_v.hpp:36
virtual uint16_t last_user_block() const override
Last user block.
Definition nfc_layer_v.hpp:254
bool ndefWrite(const m5::nfc::ndef::TLV &msg)
Write NDEF message.
Definition nfc_layer_v.cpp:433
bool detect(m5::nfc::v::PICC &picc, const uint32_t timeout_ms=50U)
Detect single ready PICC.
Definition nfc_layer_v.cpp:83
bool ndefIsValidFormat(bool &valid)
Is the PICC data in NDEF format?
Definition nfc_layer_v.cpp:406
virtual uint16_t user_area_size() const override
User area size (bytes)
Definition nfc_layer_v.hpp:258
virtual uint16_t unit_size_write() const override
Unit size for write.
Definition nfc_layer_v.hpp:266
virtual bool read(uint8_t *rx, uint16_t &rx_len, const uint16_t sblock) override
Read any bytes from user area.
Definition nfc_layer_v.cpp:291
bool ndefReadCapabilityContainer(m5::nfc::ndef::type5::CapabilityContainer &cc)
Read Type5 Capability Container.
Definition nfc_layer_v.cpp:411
bool deactivate()
Send Reset to ready to the currently selected PICC (deactivate)
Definition nfc_layer_v.cpp:190
bool ndefRead(m5::nfc::ndef::TLV &msg)
Read NDEF Message TLV.
Definition nfc_layer_v.cpp:421
virtual uint16_t first_user_block() const override
First user block.
Definition nfc_layer_v.hpp:250
bool writeBlock(const uint16_t block, const uint8_t *tx, const uint8_t tx_len)
Write single block.
Definition nfc_layer_v.cpp:322
bool dump()
Dump all blocks.
Definition nfc_layer_v.cpp:631
bool readBlock(uint8_t rx[32], const uint16_t block)
Read single block.
Definition nfc_layer_v.cpp:200
bool activate(const m5::nfc::v::PICC &picc)
Activate a specific PICC.
Definition nfc_layer_v.cpp:158
bool ndefWriteCapabilityContainer(const m5::nfc::ndef::type5::CapabilityContainer &cc)
Write Type5 Capability Container.
Definition nfc_layer_v.cpp:416
virtual bool write(const uint16_t sblock, const uint8_t *tx, const uint16_t tx_len) override
Write any bytes to user area.
Definition nfc_layer_v.cpp:371
void setModulationMode(const m5::nfc::v::ModulationMode mode)
Set current modulation mode.
Definition nfc_layer_v.hpp:88
virtual uint16_t maximum_fifo_depth() const override
Maximum FIFO depth in bytes.
Definition nfc_layer_v.cpp:78
virtual uint16_t unit_size_read() const override
Unit size for read.
Definition nfc_layer_v.hpp:262
bool reactivate()
Reactivate the currently activated PICC.
Definition nfc_layer_v.hpp:131
const m5::nfc::v::PICC & activatedPICC() const
Retrieve the currently activated PICC.
Definition nfc_layer_v.hpp:71
m5::nfc::v::ModulationMode modulationMode() const
Get current modulation mode.
Definition nfc_layer_v.hpp:80
bool isActive(const m5::nfc::v::PICC &picc) const
Is the specified PICC currently active?
Definition nfc_layer_v.hpp:62
NDEF operations layer.
Definition ndef_layer.hpp:35
NDEF TLV container.
Definition ndef_tlv.hpp:27
ST25R3916 unit in CapCC1101 (SPI)
Definition unit_ST25R3916.hpp:2113
ST25R3916 Unit.
Definition unit_ST25R3916.hpp:39
Top level namespace of M5Stack.
Common layer for NDEF related.
Common layer for NFC related units.
ModulationMode
Definition nfcv.hpp:73
Capability container for Type5.
Definition ndef.hpp:499
PICC for NFC-V.
Definition nfcv.hpp:92
uint16_t userAreaSize() const
Total user area size.
Definition nfcv.hpp:147
uint16_t lastUserBlock() const
Gets the last user block.
Definition nfcv.hpp:172
bool valid() const
Valid?
Definition nfcv.hpp:106
uint16_t firstUserBlock() const
Gets the first user block.
Definition nfcv.hpp:164
uint8_t block_size
Byte size of 1 block.
Definition nfcv.hpp:98