M5Unit-NFC 0.0.3 git rev:59f5362
Loading...
Searching...
No Matches
m5::nfc::ndef::NDEFLayer Class Reference

NDEF operations layer. More...

#include <ndef_layer.hpp>

Public Member Functions

 NDEFLayer (NFCLayerInterface &layer)
 
bool isValidFormat (bool &valid, const m5::nfc::NFCForumTag ftag)
 Check whether the tag is in NDEF format.
 
bool read (const m5::nfc::NFCForumTag ftag, std::vector< m5::nfc::ndef::TLV > &tlvs, const m5::nfc::ndef::TagBits tagBits=m5::nfc::ndef::tagBitsMessage)
 Read NDEF data.
 
bool write (const m5::nfc::NFCForumTag ftag, const std::vector< m5::nfc::ndef::TLV > &tlvs, const bool keep=true)
 Write NDEF data.
 
bool prepare_desfire_light ()
 Prepare NDEF files on MIFARE DESFire Light.
 
bool prepare_desfire (const uint32_t max_ndef_size)
 Prepare NDEF files on MIFARE DESFire (EV1/EV2/EV3)
 
bool readCapabilityContainer (m5::nfc::ndef::type2::CapabilityContainer &cc)
 Read Type2 Capability Container.
 
bool readAttributeBlock (m5::nfc::ndef::type3::AttributeBlock &ab)
 Read Type3 Attribute Block.
 
bool readCapabilityContainer (m5::nfc::ndef::type4::CapabilityContainer &cc)
 Read Type4 Capability Container.
 
bool readCapabilityContainer (m5::nfc::ndef::type5::CapabilityContainer &cc)
 Read Type5 Capability Container.
 
bool writeCapabilityContainer (const m5::nfc::ndef::type5::CapabilityContainer &cc)
 Write Type5 Capability Container.
 

Protected Member Functions

bool read_capability_container_type4_iso7816 (m5::nfc::ndef::type4::CapabilityContainer &cc)
 
bool read_capability_container_type4_desfire (m5::nfc::ndef::type4::CapabilityContainer &cc)
 
bool read_type2 (std::vector< m5::nfc::ndef::TLV > &tlvs, const m5::nfc::ndef::TagBits tagBits)
 
bool read_type3 (m5::nfc::ndef::TLV &tlv)
 
bool read_type4 (std::vector< m5::nfc::ndef::TLV > &tlvs, const m5::nfc::ndef::type4::FileControlTagBits fcBits)
 
bool read_type4_iso7816 (std::vector< m5::nfc::ndef::TLV > &tlvs, const m5::nfc::ndef::type4::FileControlTagBits fcBits)
 
bool read_type4_desfire (std::vector< m5::nfc::ndef::TLV > &tlvs, const m5::nfc::ndef::type4::FileControlTagBits fcBits)
 
bool read_type5 (std::vector< m5::nfc::ndef::TLV > &tlvs, const m5::nfc::ndef::TagBits tagBits)
 
bool write_type2 (const std::vector< m5::nfc::ndef::TLV > &tlvs, const bool keep)
 
bool write_type3 (const m5::nfc::ndef::TLV &tlv)
 
bool write_type4 (const std::vector< m5::nfc::ndef::TLV > &tlvs)
 
bool write_type4_iso7816 (const std::vector< m5::nfc::ndef::TLV > &tlvs, const type4::CapabilityContainer &cc, isodep::IsoDEP &dep)
 
bool write_type4_desfire (const std::vector< m5::nfc::ndef::TLV > &tlvs, const type4::CapabilityContainer &cc, isodep::IsoDEP &dep)
 
bool write_type5 (const std::vector< m5::nfc::ndef::TLV > &tlvs, const bool keep)
 
std::vector< m5::nfc::ndef::TLVmerge_tlv (std::vector< m5::nfc::ndef::TLV > &old_tlvs, const std::vector< m5::nfc::ndef::TLV > &tlvs)
 
Byte-level access helpers for NFC-V (Type5)
bool read_nfcv (uint8_t *rx, const uint16_t offset, const uint16_t len)
 Read bytes from arbitrary byte offset (for NFC-V)
 
bool write_nfcv (const uint16_t offset, const uint8_t *tx, const uint16_t len)
 Write bytes to arbitrary byte offset (for NFC-V)
 

Detailed Description

NDEF operations layer.

Member Function Documentation

◆ isValidFormat()

bool m5::nfc::ndef::NDEFLayer::isValidFormat ( bool & valid,
const m5::nfc::NFCForumTag ftag )

Check whether the tag is in NDEF format.

Parameters
[out]validTrue if the tag has a valid NDEF format
ftagNFC Forum Tag type
Returns
True if command succeeded

◆ prepare_desfire()

bool m5::nfc::ndef::NDEFLayer::prepare_desfire ( const uint32_t max_ndef_size)

Prepare NDEF files on MIFARE DESFire (EV1/EV2/EV3)

Parameters
max_ndef_sizeMax size for NDEF file
Returns
True if successful

◆ prepare_desfire_light()

bool m5::nfc::ndef::NDEFLayer::prepare_desfire_light ( )

Prepare NDEF files on MIFARE DESFire Light.

Returns
True if successful

◆ read()

bool m5::nfc::ndef::NDEFLayer::read ( const m5::nfc::NFCForumTag ftag,
std::vector< m5::nfc::ndef::TLV > & tlvs,
const m5::nfc::ndef::TagBits tagBits = m5::nfc::ndef::tagBitsMessage )

Read NDEF data.

Parameters
ftagNFC Forum Tag type
[out]tlvsOutput TLVs
tagBitsTarget TLV tags
Returns
True if successful

◆ read_nfcv()

bool m5::nfc::ndef::NDEFLayer::read_nfcv ( uint8_t * rx,
const uint16_t offset,
const uint16_t len )
protected

Read bytes from arbitrary byte offset (for NFC-V)

Parameters
[out]rxOutput buffer
offsetByte offset from start of user area
lenNumber of bytes to read
Returns
True if successful

◆ readAttributeBlock()

bool m5::nfc::ndef::NDEFLayer::readAttributeBlock ( m5::nfc::ndef::type3::AttributeBlock & ab)

Read Type3 Attribute Block.

Parameters
[out]abAttribute block
Returns
True if successful

◆ readCapabilityContainer() [1/3]

bool m5::nfc::ndef::NDEFLayer::readCapabilityContainer ( m5::nfc::ndef::type2::CapabilityContainer & cc)

Read Type2 Capability Container.

Parameters
[out]ccCapability container
Returns
True if successful

◆ readCapabilityContainer() [2/3]

bool m5::nfc::ndef::NDEFLayer::readCapabilityContainer ( m5::nfc::ndef::type4::CapabilityContainer & cc)

Read Type4 Capability Container.

Parameters
[out]ccCapability container
Returns
True if successful

◆ readCapabilityContainer() [3/3]

bool m5::nfc::ndef::NDEFLayer::readCapabilityContainer ( m5::nfc::ndef::type5::CapabilityContainer & cc)

Read Type5 Capability Container.

Parameters
[out]ccCapability container
Returns
True if successful

◆ write()

bool m5::nfc::ndef::NDEFLayer::write ( const m5::nfc::NFCForumTag ftag,
const std::vector< m5::nfc::ndef::TLV > & tlvs,
const bool keep = true )

Write NDEF data.

Parameters
ftagNFC Forum Tag type
tlvsTLVs to write
keepKeep existing TLVs when possible
Returns
True if successful
Note
The message will be overwritten

◆ write_nfcv()

bool m5::nfc::ndef::NDEFLayer::write_nfcv ( const uint16_t offset,
const uint8_t * tx,
const uint16_t len )
protected

Write bytes to arbitrary byte offset (for NFC-V)

Parameters
offsetByte offset from start of user area
txInput buffer
lenNumber of bytes to write
Returns
True if successful
Note
Performs read-modify-write for partial block writes

◆ writeCapabilityContainer()

bool m5::nfc::ndef::NDEFLayer::writeCapabilityContainer ( const m5::nfc::ndef::type5::CapabilityContainer & cc)

Write Type5 Capability Container.

Parameters
[in]ccCapability container
Returns
True if successful