10#ifndef M5_UNIT_UNIFIED_NFC_NFC_B_NFCB_HPP
11#define M5_UNIT_UNIFIED_NFC_NFC_B_NFCB_HPP
51constexpr uint8_t COMMUNICATION_SAME_SPEED{0x80};
52constexpr uint8_t COMMUNICATION_SPPED_106K{0X00};
53constexpr uint8_t COMMUNICATION_SPPED_212K_FROM_PICC{0X10};
54constexpr uint8_t COMMUNICATION_SPPED_424K_FROM_PICC{0X20};
55constexpr uint8_t COMMUNICATION_SPPED_847K_FROM_PICC{0X40};
56constexpr uint8_t COMMUNICATION_SPPED_212K_TO_PICC{0X01};
57constexpr uint8_t COMMUNICATION_SPPED_424K_TO_PICC{0X02};
58constexpr uint8_t COMMUNICATION_SPPED_847K_TO_PICC{0X04};
63const uint8_t FRAME_OPTION_NAD{0x02};
64const uint8_t FRAME_OPTION_CID{0x01};
74 return protocol ? protocol[1] >> 4 : 0x0F;
80 return protocol ? ((protocol[1] & 0x0F) & 0x01) :
false;
86 return protocol ? (protocol[2] & 0x03) : 0x00;
89inline uint8_t
get_fwi(
const uint8_t protocol[3])
91 return protocol ? ((protocol[2] >> 4) & 0x0F) : 0x0F ;
108 } __attribute__((packed));
109 } __attribute__((packed));
134 inline bool supportsNAD()
const
138 inline bool supportsCID()
const
140 return get_frame_option(
protocol) & FRAME_OPTION_CID;
142 inline uint16_t maximumFrameLength()
const
144 return maximum_frame_length(
protocol);
146 inline uint8_t maximumFrameLengthBits()
const
148 return maximum_frame_length_bits(
protocol);
150 inline uint8_t communicationSpeed()
const
154 inline uint8_t fwi()
const
164 return std::memcmp(
a.atqb,
b.atqb,
sizeof(
a.atqb)) == 0;
188constexpr uint32_t TIMEOUT_REQ_WUP_B{5};
189constexpr uint32_t TIMEOUT_ATTRIB{50};
190constexpr uint32_t TIMEOUT_HLTB{5};
191constexpr uint32_t TIMEOUT_DESELECT{5};
Top level namespace of M5stack.
uint16_t maximum_frame_length(const uint8_t protocol[3])
Get maximum frame length from protocol bytes.
Definition nfcb.cpp:36
uint8_t get_frame_option(const uint8_t protocol[3])
Gets the frame option bits.
Definition nfcb.hpp:84
Type
Type of the PICC.
Definition nfcb.hpp:30
@ Unclassified
Unclassified.
bool supports_iso14443_4(const uint8_t protocol[3])
Supports ISO/IEC 14443-4?
Definition nfcb.hpp:78
constexpr uint8_t ATQB_LENGTH
ATQB length pupi(4) + application(4) + protocol(3)
Definition nfcb.hpp:47
Require
Number of slots required in the request/wakeup.
Definition nfcb.hpp:39
uint8_t get_fwi(const uint8_t protocol[3])
Gets the FWI.
Definition nfcb.hpp:89
uint8_t maximum_frame_length_bits(const uint8_t protocol[3])
Get maximum frame length from protocol bytes.
Definition nfcb.hpp:72
Command
ISO/IEC 14443 Type B command (Layer 3 / activation)
Definition nfcb.hpp:176
@ HLTB
Halt Type B (rarely used)
@ ATTRIB
Attribute (activate ISO-DEP)
@ REQ_WUPB
Request/Wakeup Type B.
@ DESELECT_WITH_CID
DESELECT with CID.
PICC for NFC-B.
Definition nfcb.hpp:99
uint8_t atqb[ATQB_LENGTH]
ATQB.
Definition nfcb.hpp:102
std::string typeAsString() const
Gets the type string.
Definition nfcb.cpp:55
uint8_t cid
CID;.
Definition nfcb.hpp:111
std::string pupiAsString() const
Gets the pupi string.
Definition nfcb.cpp:45
uint8_t application[4]
Application Data.
Definition nfcb.hpp:105
bool valid() const
Valid?
Definition nfcb.hpp:115
bool isISO14443_4() const
ISO14443-4?
Definition nfcb.hpp:126
uint8_t protocol[3]
Protocol information.
Definition nfcb.hpp:106
Type type
Type.
Definition nfcb.hpp:110
uint8_t pupi[4]
Pseudo-Unique PICC Identifier.
Definition nfcb.hpp:104