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};
53constexpr uint8_t COMMUNICATION_SPEED_106K{0X00};
54constexpr uint8_t COMMUNICATION_SPEED_212K_FROM_PICC{0X10};
55constexpr uint8_t COMMUNICATION_SPEED_424K_FROM_PICC{0X20};
56constexpr uint8_t COMMUNICATION_SPEED_847K_FROM_PICC{0X40};
57constexpr uint8_t COMMUNICATION_SPEED_212K_TO_PICC{0X01};
58constexpr uint8_t COMMUNICATION_SPEED_424K_TO_PICC{0X02};
59constexpr uint8_t COMMUNICATION_SPEED_847K_TO_PICC{0X04};
61constexpr uint8_t COMMUNICATION_SPPED_106K{COMMUNICATION_SPEED_106K};
62constexpr uint8_t COMMUNICATION_SPPED_212K_FROM_PICC{COMMUNICATION_SPEED_212K_FROM_PICC};
63constexpr uint8_t COMMUNICATION_SPPED_424K_FROM_PICC{COMMUNICATION_SPEED_424K_FROM_PICC};
64constexpr uint8_t COMMUNICATION_SPPED_847K_FROM_PICC{COMMUNICATION_SPEED_847K_FROM_PICC};
65constexpr uint8_t COMMUNICATION_SPPED_212K_TO_PICC{COMMUNICATION_SPEED_212K_TO_PICC};
66constexpr uint8_t COMMUNICATION_SPPED_424K_TO_PICC{COMMUNICATION_SPEED_424K_TO_PICC};
67constexpr uint8_t COMMUNICATION_SPPED_847K_TO_PICC{COMMUNICATION_SPEED_847K_TO_PICC};
72const uint8_t FRAME_OPTION_NAD{0x02};
73const uint8_t FRAME_OPTION_CID{0x01};
92 return protocol ? protocol[1] >> 4 : 0x0F;
102 return protocol ? ((protocol[1] & 0x0F) & 0x01) :
false;
112 return protocol ? (protocol[2] & 0x03) : 0x00;
119inline uint8_t
get_fwi(
const uint8_t protocol[3])
121 return protocol ? ((protocol[2] >> 4) & 0x0F) : 0x0F ;
138 } __attribute__((packed));
139 } __attribute__((packed));
222 inline uint8_t
fwi()
const
237 return std::memcmp(
a.atqb,
b.atqb,
sizeof(
a.atqb)) == 0;
266constexpr uint32_t TIMEOUT_REQ_WUP_B{5};
267constexpr uint32_t TIMEOUT_ATTRIB{50};
268constexpr uint32_t TIMEOUT_HLTB{5};
269constexpr 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:110
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:100
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:119
uint8_t maximum_frame_length_bits(const uint8_t protocol[3])
Get maximum frame length code from protocol bytes.
Definition nfcb.hpp:90
Command
ISO/IEC 14443 Type B command (Layer 3 / activation)
Definition nfcb.hpp:254
@ 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:129
uint8_t atqb[ATQB_LENGTH]
ATQB.
Definition nfcb.hpp:132
std::string typeAsString() const
Gets the type string.
Definition nfcb.cpp:55
uint8_t fwi() const
Gets FWI.
Definition nfcb.hpp:222
uint8_t cid
CID;.
Definition nfcb.hpp:141
std::string pupiAsString() const
Gets the pupi string.
Definition nfcb.cpp:45
uint8_t application[4]
Application Data.
Definition nfcb.hpp:135
bool valid() const
Valid?
Definition nfcb.hpp:148
uint16_t maximumFrameLength() const
Gets maximum frame length.
Definition nfcb.hpp:198
bool isISO14443_4() const
ISO14443-4?
Definition nfcb.hpp:170
uint8_t maximumFrameLengthBits() const
Gets maximum frame length bits.
Definition nfcb.hpp:206
bool supportsNAD() const
Supports NAD?
Definition nfcb.hpp:182
uint8_t protocol[3]
Protocol information.
Definition nfcb.hpp:136
Type type
Type.
Definition nfcb.hpp:140
uint8_t pupi[4]
Pseudo-Unique PICC Identifier.
Definition nfcb.hpp:134
bool supportsCID() const
Supports CID?
Definition nfcb.hpp:190
uint8_t communicationSpeed() const
Gets communication speed flags.
Definition nfcb.hpp:214