diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/_m5_unit_unified_n_f_c_8hpp.html b/_m5_unit_unified_n_f_c_8hpp.html new file mode 100644 index 0000000..b4e54dd --- /dev/null +++ b/_m5_unit_unified_n_f_c_8hpp.html @@ -0,0 +1,156 @@ + + + + + + + +M5Unit-NFC: src/M5UnitUnifiedNFC.hpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
M5UnitUnifiedNFC.hpp File Reference
+
+
+ +

Main header of M5Unit-NFC. +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
namespace  unit
 Unit-related namespace.
 
+ + + + + + + +

+Typedefs

+using m5::unit::UnitNFC = m5::unit::UnitST25R3916
 Alias for UnitST25R3916 (Unit NFC, I2C connection)
 
+using m5::unit::CapCC1101NFC = m5::unit::CapST25R3916
 Alias for CapST25R3916 (CapCC1101 NFC, SPI connection)
 
+

Detailed Description

+

Main header of M5Unit-NFC.

+
+
+ + + + diff --git a/_m5_unit_unified_n_f_c_8hpp.js b/_m5_unit_unified_n_f_c_8hpp.js new file mode 100644 index 0000000..02f0168 --- /dev/null +++ b/_m5_unit_unified_n_f_c_8hpp.js @@ -0,0 +1,5 @@ +var _m5_unit_unified_n_f_c_8hpp = +[ + [ "CapCC1101NFC", "_m5_unit_unified_n_f_c_8hpp.html#a1b2e13f576a9dfc7d2d036ee1e39557c", null ], + [ "UnitNFC", "_m5_unit_unified_n_f_c_8hpp.html#a7bb1459243ff855f3e17fa41b45425ef", null ] +]; \ No newline at end of file diff --git a/_m5_unit_unified_n_f_c_8hpp_source.html b/_m5_unit_unified_n_f_c_8hpp_source.html new file mode 100644 index 0000000..51c484c --- /dev/null +++ b/_m5_unit_unified_n_f_c_8hpp_source.html @@ -0,0 +1,163 @@ + + + + + + + +M5Unit-NFC: src/M5UnitUnifiedNFC.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
M5UnitUnifiedNFC.hpp
+
+
+Go to the documentation of this file.
1/*
+
2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
+
3 *
+
4 * SPDX-License-Identifier: MIT
+
5 */
+
14#ifndef M5_UNIT_UNIFIED_NFC_HPP
+
15#define M5_UNIT_UNIFIED_NFC_HPP
+
16
+
17#include "nfc/nfc.hpp"
+
18#include "nfc/ndef/ndef.hpp"
+
19#include "nfc/ndef/ndef_tlv.hpp"
+ +
21
+ +
23
+ + + + + + +
30
+ + +
33
+
38namespace m5 {
+
43namespace unit {
+
44
+ + +
49
+
50} // namespace unit
+
51} // namespace m5
+
52#endif
+
ST25R3916 unit in CapCC1101 (SPI)
Definition unit_ST25R3916.hpp:2058
+
ST25R3916 Unit.
Definition unit_ST25R3916.hpp:38
+
File system base using isoDEP for MIFARE DESFire.
+
Emulation layer for NFC-A.
+
Emulation layer for NFC-F.
+
Top level namespace of M5stack.
+
Unit-related namespace.
+
NDEF related.
+
NDEF record.
+
NDEF TLV.
+
NFC definitions.
+
File system base using isoDEP for NFC-B.
+
Common layer for NFC-A.
+
Common layer for NFC-B.
+
Common layer for NFC-F.
+
Common layer for NFC-V.
+
ST25R3916 Unit for M5UnitUnified.
+
+
+ + + + diff --git a/_s_t25_r3916__definition_8hpp.html b/_s_t25_r3916__definition_8hpp.html new file mode 100644 index 0000000..fa0a6a9 --- /dev/null +++ b/_s_t25_r3916__definition_8hpp.html @@ -0,0 +1,334 @@ + + + + + + + +M5Unit-NFC: src/unit/ST25R3916_definition.hpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ST25R3916_definition.hpp File Reference
+
+
+ +

Definitions for ST25R3916. +More...

+
#include <cstdint>
+
+

Go to the source code of this file.

+ + + + + + + + + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
namespace  st25r3916
 For ST25R3916.
 
namespace  regval
 Register setting value.
 
+ + + + + + + +

+Enumerations

enum class  m5::unit::st25r3916::InitiatorOperationMode : uint8_t {
+  NFCIP1 = 0x00 << 3 +, ISO14443A = 0x01 << 3 +, ISO14443B = 0x02 << 3 +, FeliCa = 0x03 << 3 +,
+  NFCForumType1 = 0x04 << 3 +, SubCarrierStream = 0x0E << 3 +, BPSKStream = 0x0F << 3 +
+ }
 Initiator operation modes. More...
 
enum class  m5::unit::st25r3916::TargetOperationMode : uint8_t {
+  ISO14443A = 0x01 << 3 +, Felica = 0x04 << 3 +, NFCIP1 = 0x07 << 3 +, FelicaBitrate = 0x0C << 3 +,
+  ISO14443ABitrate = 0x09 << 3 +
+ }
 Target operation modes. More...
 
+ + + + + + + + + + + + + + + + + + + +

+Functions

+bool m5::unit::st25r3916::has_irq32_error (const uint32_t irq32)
 
+bool m5::unit::st25r3916::is_irq32_timeout (const uint32_t irq32)
 
+bool m5::unit::st25r3916::is_irq32_rxe (const uint32_t irq32)
 
+bool m5::unit::st25r3916::is_irq32_rxs (const uint32_t irq32)
 
+bool m5::unit::st25r3916::is_irq32_txe (const uint32_t irq32)
 
+bool m5::unit::st25r3916::is_irq32_collision (const uint32_t irq32)
 
+uint8_t m5::unit::st25r3916::calculate_mrt (const uint32_t us, const bool mrt_step)
 
+uint16_t m5::unit::st25r3916::calculate_nrt (const uint32_t ms, const bool nrt_step)
 
+uint8_t m5::unit::st25r3916::calculate_fdt (const uint32_t us)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

+constexpr uint8_t m5::unit::st25r3916::VALID_IDENTIFY_TYPE {0x05}
 
+constexpr uint16_t m5::unit::st25r3916::MAX_FIFO_DEPTH {512}
 Maximum FIFO depth.
 
+constexpr uint16_t m5::unit::st25r3916::PREFIX_SPACE_B {(uint16_t)command::CMD_REGISTER_SPACEB_ACCESS << 8}
 
+constexpr uint8_t m5::unit::st25r3916::OP_TRAILER_MASK {0x3F}
 
+constexpr uint8_t m5::unit::st25r3916::OP_WRITE_REGISTER {0x00}
 
+constexpr uint8_t m5::unit::st25r3916::OP_READ_REGISTER {0x40}
 
+constexpr uint8_t m5::unit::st25r3916::OP_LOAD_FIFO {0x80}
 
+constexpr uint8_t m5::unit::st25r3916::OP_LOAD_PT_MEMORY_A_CONFIG {0xA0}
 
+constexpr uint8_t m5::unit::st25r3916::OP_LOAD_PT_MEMORY_F_CONFIG {0xA8}
 
+constexpr uint8_t m5::unit::st25r3916::OP_LOAD_PT_MEMORY_TSN_DATA {0xAC}
 
+constexpr uint8_t m5::unit::st25r3916::OP_READ_PT_MEMORY {0xBF}
 
+constexpr uint8_t m5::unit::st25r3916::OP_READ_FIFO {0x9F}
 
+constexpr uint8_t m5::unit::st25r3916::OP_DIRECT_COMMAND {0xC0}
 
PT_MEMORY
+constexpr uint32_t m5::unit::st25r3916::PT_MEMORY_A_LENGTH {15}
 A-config length.
 
+constexpr uint32_t m5::unit::st25r3916::PT_MEMORY_F_LENGTH {21}
 F-config length.
 
+constexpr uint32_t m5::unit::st25r3916::PT_MEMORY_TSN_LENGTH {12}
 TSN data length.
 
+constexpr uint32_t m5::unit::st25r3916::PT_MEMORY_LENGTH {PT_MEMORY_A_LENGTH + PT_MEMORY_F_LENGTH + PT_MEMORY_TSN_LENGTH}
 all length
 
+

Detailed Description

+

Definitions for ST25R3916.

+

Enumeration Type Documentation

+ +

◆ InitiatorOperationMode

+ +
+
+ + + + + +
+ + + + +
enum class m5::unit::st25r3916::InitiatorOperationMode : uint8_t
+
+strong
+
+ +

Initiator operation modes.

+

For Mode definition

+ + + + + + + + +
Enumerator
NFCIP1 

NFCIP-1 active communication.

+
ISO14443A 

ISO14443A.

+
ISO14443B 

ISO14443B.

+
FeliCa 

FeliCa.

+
NFCForumType1 

NFC Forum Type 1 tag (Topaz)

+
SubCarrierStream 

Sub-carrier stream mode.

+
BPSKStream 

BPSK stream mode.

+
+ +
+
+ +

◆ TargetOperationMode

+ +
+
+ + + + + +
+ + + + +
enum class m5::unit::st25r3916::TargetOperationMode : uint8_t
+
+strong
+
+ +

Target operation modes.

+

For Mode definition

+ + + + + + +
Enumerator
ISO14443A 

ISO14443A passive target mode.

+
Felica 

FeliCa™ passive target mode.

+
NFCIP1 

NFCIP-1 active communication mode.

+
FelicaBitrate 

FeliCa bit rate detection mode.

+
ISO14443ABitrate 

ISO14443A bit rate detection mode.

+
+ +
+
+
+
+ + + + diff --git a/_s_t25_r3916__definition_8hpp.js b/_s_t25_r3916__definition_8hpp.js new file mode 100644 index 0000000..720de8d --- /dev/null +++ b/_s_t25_r3916__definition_8hpp.js @@ -0,0 +1,24 @@ +var _s_t25_r3916__definition_8hpp = +[ + [ "InitiatorOperationMode", "_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982", [ + [ "NFCIP1", "_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982a47b3e6d28090c5f54b07211d5b45ae90", null ], + [ "ISO14443A", "_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982a4e73d2cbb6b026e3362f1627b91f28e5", null ], + [ "ISO14443B", "_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982a83d3cb2d1335620163a683ea43dc5e0b", null ], + [ "FeliCa", "_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982a2980dbc2442917a5c692c841d9f75bf3", null ], + [ "NFCForumType1", "_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982a2477a3d7e824a688688b07b1977e53e2", null ], + [ "SubCarrierStream", "_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982a0615d29cf2685c8c5e6d10e6fbb563ad", null ], + [ "BPSKStream", "_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982ade52e7ae5435b39795190c9c64ea3025", null ] + ] ], + [ "TargetOperationMode", "_s_t25_r3916__definition_8hpp.html#a7d85ed3cdee95b0eab2dff6373824137", [ + [ "ISO14443A", "_s_t25_r3916__definition_8hpp.html#a7d85ed3cdee95b0eab2dff6373824137a4e73d2cbb6b026e3362f1627b91f28e5", null ], + [ "Felica", "_s_t25_r3916__definition_8hpp.html#a7d85ed3cdee95b0eab2dff6373824137aaa0cab77c3a886a6845b072c65998bb0", null ], + [ "NFCIP1", "_s_t25_r3916__definition_8hpp.html#a7d85ed3cdee95b0eab2dff6373824137a47b3e6d28090c5f54b07211d5b45ae90", null ], + [ "FelicaBitrate", "_s_t25_r3916__definition_8hpp.html#a7d85ed3cdee95b0eab2dff6373824137a6a423d5a4a5fcd692e78eb20f8af274f", null ], + [ "ISO14443ABitrate", "_s_t25_r3916__definition_8hpp.html#a7d85ed3cdee95b0eab2dff6373824137a7fc22f6cc29c597048b17b6db90613e9", null ] + ] ], + [ "MAX_FIFO_DEPTH", "_s_t25_r3916__definition_8hpp.html#a23d8ebdc9efd6affca9566a3ad523108", null ], + [ "PT_MEMORY_A_LENGTH", "_s_t25_r3916__definition_8hpp.html#a3bc9e99c48ede032ca794e0c603fd891", null ], + [ "PT_MEMORY_F_LENGTH", "_s_t25_r3916__definition_8hpp.html#a361ca243f632742c4209b56fc345b3f2", null ], + [ "PT_MEMORY_LENGTH", "_s_t25_r3916__definition_8hpp.html#a9565d3846f7a247a56a64301963ab0e5", null ], + [ "PT_MEMORY_TSN_LENGTH", "_s_t25_r3916__definition_8hpp.html#af19f6154dc73afac408fc566197a5f10", null ] +]; \ No newline at end of file diff --git a/_s_t25_r3916__definition_8hpp_source.html b/_s_t25_r3916__definition_8hpp_source.html new file mode 100644 index 0000000..ea59fe2 --- /dev/null +++ b/_s_t25_r3916__definition_8hpp_source.html @@ -0,0 +1,550 @@ + + + + + + + +M5Unit-NFC: src/unit/ST25R3916_definition.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ST25R3916_definition.hpp
+
+
+Go to the documentation of this file.
1/*
+
2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
+
3 *
+
4 * SPDX-License-Identifier: MIT
+
5 */
+
10#ifndef M5_UNIT_NFC_ST25R3916_DEFINITION_HPP
+
11#define M5_UNIT_NFC_ST25R3916_DEFINITION_HPP
+
12
+
13#include <cstdint>
+
14
+
15namespace m5 {
+
16namespace unit {
+
17
+
22namespace st25r3916 {
+
23
+
+
29enum class InitiatorOperationMode : uint8_t {
+
30 NFCIP1 = 0x00 << 3,
+
31 ISO14443A = 0x01 << 3,
+
32 ISO14443B = 0x02 << 3,
+
33 FeliCa = 0x03 << 3,
+
34 NFCForumType1 = 0x04 << 3,
+
35 SubCarrierStream = 0x0E << 3,
+
36 BPSKStream = 0x0F << 3,
+
37};
+
+
38
+
+
44enum class TargetOperationMode : uint8_t {
+
45 ISO14443A = 0x01 << 3,
+
46 Felica = 0x04 << 3,
+
47 NFCIP1 = 0x07 << 3,
+
48 FelicaBitrate = 0x0C << 3,
+
49 ISO14443ABitrate = 0x09 << 3,
+
50 // BothBitrate = 0x0D << 3, //!< Felica and ISO14443A bit rate detection mode
+
51};
+
+
52
+
55constexpr uint32_t PT_MEMORY_A_LENGTH{15};
+
56constexpr uint32_t PT_MEMORY_F_LENGTH{21};
+
57constexpr uint32_t PT_MEMORY_TSN_LENGTH{12};
+ +
60
+
61namespace command {
+
63// ==== Space-A
+
64// I/O configuration
+
65constexpr uint8_t REG_IO_CONFIGURATION_1{0x00};
+
66constexpr uint8_t REG_IO_CONFIGURATION_2{0x01};
+
67// Operation control and mode definition
+
68constexpr uint8_t REG_OPERATION_CONTROL{0x02};
+
69constexpr uint8_t REG_MODE_DEFINITION{0x03};
+
70constexpr uint8_t REG_BITRATE_DEFINITION{0x04};
+
71// Protocol configuration
+
72constexpr uint8_t REG_ISO14443A_SETTINGS{0x05};
+
73constexpr uint8_t REG_ISO14443B_SETTINGS{0x06};
+
74constexpr uint8_t REG_FELICA_SETTINGS{0x07};
+
75constexpr uint8_t REG_NFCIP_1_PASSIVE_TARGET_DEFINITION{0x08};
+
76constexpr uint8_t REG_STREAM_MODE_DEFINITION{0x09};
+
77constexpr uint8_t REG_AUXILIARY_DEFINITION{0x0A};
+
78// Receiver configuration
+
79constexpr uint8_t REG_RECEIVER_CONFIGURATION_1{0x0B};
+
80constexpr uint8_t REG_RECEIVER_CONFIGURATION_2{0x0C};
+
81constexpr uint8_t REG_RECEIVER_CONFIGURATION_3{0x0D};
+
82constexpr uint8_t REG_RECEIVER_CONFIGURATION_4{0x0E};
+
83// Timer definition
+
84constexpr uint8_t REG_MASK_RECEIVER_TIMER{0x0F};
+
85constexpr uint8_t REG_NO_RESPONSE_TIMER_1{0x10};
+
86constexpr uint8_t REG_NO_RESPONSE_TIMER_2{0x11};
+
87constexpr uint8_t REG_TIMER_AND_EMV_CONTROL{0x12};
+
88constexpr uint8_t REG_GENERAL_PURPOSE_TIMER_1{0x13};
+
89constexpr uint8_t REG_GENERAL_PURPOSE_TIMER_2{0x14};
+
90constexpr uint8_t REG_PPON2_FIELD_WAITING{0x15};
+
91// Interrupt and associated reporting
+
92constexpr uint8_t REG_MASK_MAIN_INTERRUPT{0x16};
+
93constexpr uint8_t REG_MASK_TIMER_AND_NFC_INTERRUPT{0x17};
+
94constexpr uint8_t REG_MASK_ERROR_AND_WAKEUP_INTERRUPT{0x18};
+
95constexpr uint8_t REG_MASK_PASSIVE_TARGET_INTERRUPT{0x19};
+
96constexpr uint8_t REG_MAIN_INTERRUPT{0x1A};
+
97constexpr uint8_t REG_TIMER_AND_NFC_INTERRUPT{0x1B};
+
98constexpr uint8_t REG_ERROR_AND_WAKEUP_INTERRUPT{0x1C};
+
99constexpr uint8_t REG_PASSIVE_TARGET_INTERRUPT{0x1D};
+
100constexpr uint8_t REG_FIFO_STATUS_1{0x1E};
+
101constexpr uint8_t REG_FIFO_STATUS_2{0x1F};
+
102constexpr uint8_t REG_COLLISION_DISPLAY{0x20};
+
103constexpr uint8_t REG_PASSIVE_TARGET_DISPLAY{0x21};
+
104// Definition of number of transmitted bytes
+
105constexpr uint8_t REG_NUMBER_OF_TRANSMITTED_BYTES_1{0x22};
+
106constexpr uint8_t REG_NUMBER_OF_TRANSMITTED_BYTES_2{0x23};
+
107constexpr uint8_t REG_BITRATE_DETECTION_DISPLAY{0x24};
+
108// A/D converter output
+
109constexpr uint8_t REG_AD_CONVERTER_OUTPUT{0x25};
+
110// Antenna calibration
+
111constexpr uint8_t REG_ANTENNA_TUNING_CONTROL_1{0x26};
+
112constexpr uint8_t REG_ANTENNA_TUNING_CONTROL_2{0x27};
+
113// Antenna driver and modulation
+
114constexpr uint8_t REG_TX_DRIVER{0x28};
+
115constexpr uint8_t REG_PASSIVE_TARGET_MODULATION{0x29};
+
116// External field detector threshold
+
117constexpr uint8_t REG_EXTERNAL_FIELD_DETECTOR_ACTIVATION_THRESHOLD{0x2A};
+
118constexpr uint8_t REG_EXTERNAL_FIELD_DETECTOR_DEACTIVATION_THRESHOLD{0x2B};
+
119// Regulator
+
120constexpr uint8_t REG_REGULATOR_VOLTAGE_CONTROL{0x2C};
+
121// Receiver state display
+
122constexpr uint8_t REG_RSSI_DISPLAY{0x2D};
+
123constexpr uint8_t REG_GAIN_REDUCTION_STATE{0x2E};
+
124// Capacitive sensor
+
125constexpr uint8_t REG_CAPACITIVE_SENSOR_CONTROL{0x2F};
+
126constexpr uint8_t REG_CAPACITIVE_SENSOR_DISPLAY{0x30};
+
127// Auxiliary display
+
128constexpr uint8_t REG_AUXILIARY_DISPLAY{0x31};
+
129// Wake-up
+
130constexpr uint8_t REG_WAKEUP_TIMER_CONTROL{0x32};
+
131constexpr uint8_t REG_AMPLITUDE_MEASUREMENT_CONFIGURATION{0x33};
+
132constexpr uint8_t REG_AMPLITUDE_MEASUREMENT_REFERENCE{0x34};
+
133constexpr uint8_t REG_AMPLITUDE_MEASUREMENT_AUTO_AVERAGING_DISPLAY{0x35};
+
134constexpr uint8_t REG_AMPLITUDE_MEASUREMENT_DISPLAY{0x36};
+
135constexpr uint8_t REG_PHASE_MEASUREMENT_CONFIGURATION{0x37};
+
136constexpr uint8_t REG_PHASE_MEASUREMENT_REFERENCE{0x38};
+
137constexpr uint8_t REG_PHASE_MEASUREMENT_AUTO_AVERAGING_DISPLAY{0x39};
+
138constexpr uint8_t REG_PHASE_MEASUREMENT_DISPLAY{0x3A};
+
139constexpr uint8_t REG_CAPACITANCE_MEASUREMENT_CONFIGURATION{0x3B};
+
140constexpr uint8_t REG_CAPACITANCE_MEASUREMENT_REFERENCE{0x3C};
+
141constexpr uint8_t REG_CAPACITANCE_MEASUREMENT_AUTO_AVERAGING_DISPLAY{0x3D};
+
142constexpr uint8_t REG_CAPACITANCE_MEASUREMENT_DISPLAY{0x3E};
+
143// IC identity
+
144constexpr uint8_t REG_IC_IDENTITY{0x3F};
+
145
+
146// ==== Space-B
+
147// Protocol configuration
+
148constexpr uint16_t REG_EMD_SUPPRESSION_CONFIGURATION{0x0005};
+
149constexpr uint16_t REG_SUBCARRIER_START_TIMER{0x0006};
+
150// Receiver configuration
+
151constexpr uint16_t REG_P2P_RECEIVER_CONFIGURATION{0x000B};
+
152constexpr uint16_t REG_CORRELATOR_CONFIGURATION_1{0x000C};
+
153constexpr uint16_t REG_CORRELATOR_CONFIGURATION_2{0x000D};
+
154// Timer definition
+
155constexpr uint16_t REG_SQUELCH_TIMER{0x000F};
+
156constexpr uint16_t REG_NFC_FIELD_ON_GUARD_TIMER{0x0015};
+
157// Antenna driver and modulation
+
158constexpr uint16_t REG_AUXILIARY_MODULATION_SETTING{0x0028};
+
159constexpr uint16_t REG_TX_DRIVER_TIMING{0x0029};
+
160// External field detector threshold
+
161constexpr uint16_t REG_RESISTIVE_AM_MODULATION{0x002A};
+
162constexpr uint16_t REG_TX_DRIVER_TIMING_DISPLAY{0x002B};
+
163// Regulator
+
164constexpr uint16_t REG_REGULATOR_DISPLAY{0x002C};
+
165// Protection
+
166constexpr uint16_t REG_OVERSHOOT_PROTECTION_CONFIGURATION_1{0x0030};
+
167constexpr uint16_t REG_OVERSHOOT_PROTECTION_CONFIGURATION_2{0x0031};
+
168constexpr uint16_t REG_UNDERSHOOT_PROTECTION_CONFIGURATION_1{0x0032};
+
169constexpr uint16_t REG_UNDERSHOOT_PROTECTION_CONFIGURATION_2{0x0033};
+
170
+
171// ==== Direct commands
+
172constexpr uint8_t CMD_SET_DEFAULT{0xC1}; // Puts the ST25R3916/7 into powerup state
+
173constexpr uint8_t CMD_STOP_ALL_ACTIVITIES{0xC2}; // Stops all activities
+
174constexpr uint8_t CMD_TRANSMIT_WITH_CRC{0xC4}; // Starts a transmit sequence with automatic CRC generation
+
175constexpr uint8_t CMD_TRANSMIT_WITHOUT_CRC{0xC5}; // Starts a transmit sequence without automatic CRC generation
+
176constexpr uint8_t CMD_TRANSMIT_REQA{0xC6}; // Transmits REQA command (ISO14443A only)
+
177constexpr uint8_t CMD_TRANSMIT_WUPA{0xC7}; // Transmits WUPA command (ISO14443A only)
+
178constexpr uint8_t CMD_NFC_INITIAL_FIELD_ON{0xC8}; // Performs Initial RF Collision avoidance and switches on the field
+
179constexpr uint8_t CMD_NFC_RESPONSE_FIELD_ON{0xC9}; // Performs Response
+
180 // RF Collision avoidance and switches on the field
+
181constexpr uint8_t CMD_GO_TO_SENSE{0xCD}; // Puts the passive target logic into Sense (Idle) state
+
182constexpr uint8_t CMD_GO_TO_SLEEP{0xCE}; // Puts the passive target logic into Sleep (Halt) state
+
183constexpr uint8_t CMD_MASK_RECEIVE_DATA{0xD0}; // Stops receivers and RX decoders
+
184constexpr uint8_t CMD_UNMASK_RECEIVE_DATA{0xD1}; // Starts receivers and RX decoders
+
185constexpr uint8_t CMD_CHANGE_AM_MODULATION_STATE{0xD2}; // Changes AM modulation state
+
186constexpr uint8_t CMD_MEASURE_AMPLITUDE{0xD3}; // Measures the amplitude of the signal present on RFI inputs
+
187constexpr uint8_t CMD_RESET_RX_GAIN{0xD5}; // Resets receiver gain
+
188constexpr uint8_t CMD_ADJUST_REGULATORS{0xD6}; // Adjusts supply regulators according
+
189 // to the current supply voltage level
+
190constexpr uint8_t CMD_CALIBRATE_DRIVER_TIMING{0xD8}; // Starts the driver timing calibration
+
191constexpr uint8_t CMD_MEASURE_PHASE{0xD9}; // Measures the phase difference between the signal on RFO and RFI
+
192constexpr uint8_t CMD_CLEAR_RSSI{0xDA}; // Clears the RSSI bits and restarts the measurement
+
193constexpr uint8_t CMD_CLEAR_FIFO{0xDB}; // Clears FIFO
+
194constexpr uint8_t CMD_ENTER_TRANSPARENT_MODE{0xDC}; // Enters in Transparent mode
+
195constexpr uint8_t CMD_CALIBRATE_CAPACITIVE_SENSOR{0xDD}; // Calibrates capacitive sensor
+
196constexpr uint8_t CMD_MEASURE_CAPACITANCE{0xDE}; // Measures capacitance between CSO and CSI pin
+
197constexpr uint8_t CMD_MEASURE_POWER_SUPPLY{0xDF}; //
+
198constexpr uint8_t CMD_START_GENERAL_PURPOSE_TIMER{0xE0}; //
+
199constexpr uint8_t CMD_START_WAKEUP_TIMER{0xE1}; //
+
200constexpr uint8_t CMD_START_MASK_RECEIVE_TIMER{0xE2}; // Starts the mask-receive timer and squelch operation
+
201constexpr uint8_t CMD_Start_NO_RESPONSE_TIMER{0xE3}; //
+
202constexpr uint8_t CMD_START_PPON2_TIMER{0xE4}; //
+
203constexpr uint8_t CMD_STOP_NO_RESPONSE_TIMER{0xE8}; //
+
204constexpr uint8_t CMD_REGISTER_SPACEB_ACCESS{0xFB}; // Enables R/W access to register Space-B
+
205constexpr uint8_t CMD_TEST_ACCESS{0xFC}; // Enable R/W access to Test register
+
207} // namespace command
+
208
+
209constexpr uint8_t VALID_IDENTIFY_TYPE{0x05}; // 00000101b (ST25R3916/7)
+
210constexpr uint16_t MAX_FIFO_DEPTH{512};
+
211constexpr uint16_t PREFIX_SPACE_B{(uint16_t)command::CMD_REGISTER_SPACEB_ACCESS << 8};
+
212
+
213// Operation modes
+
214constexpr uint8_t OP_TRAILER_MASK{0x3F}; // 00111111b
+
215constexpr uint8_t OP_WRITE_REGISTER{0x00}; // 00xxxxxxb
+
216constexpr uint8_t OP_READ_REGISTER{0x40}; // 01xxxxxxb
+
217constexpr uint8_t OP_LOAD_FIFO{0x80}; // 10000000b
+
218constexpr uint8_t OP_LOAD_PT_MEMORY_A_CONFIG{0xA0}; // 10100000b
+
219constexpr uint8_t OP_LOAD_PT_MEMORY_F_CONFIG{0xA8}; // 10101000b
+
220constexpr uint8_t OP_LOAD_PT_MEMORY_TSN_DATA{0xAC}; // 10101100b
+
221constexpr uint8_t OP_READ_PT_MEMORY{0xBF}; // 10111111b
+
222constexpr uint8_t OP_READ_FIFO{0x9F}; // 10011111b
+
223constexpr uint8_t OP_DIRECT_COMMAND{0xC0}; // 11xxxxxxb;
+
224
+
229namespace regval {
+
231// 0x00 IO configuration register 1
+
232constexpr uint8_t i2c_thd1{0x20};
+
233constexpr uint8_t i2c_thd0{0x10};
+
234
+
235constexpr uint16_t i2c_thd116{0x2000};
+
236constexpr uint16_t i2c_thd016{0x1000};
+
237
+
238// 0x01 IO configuration register 2
+
239constexpr uint8_t sup3v{0x80};
+
240constexpr uint8_t aat_en{0x20};
+
241constexpr uint8_t io_drv_lvl{0x04};
+
242constexpr uint8_t miso_pd1{0x08};
+
243constexpr uint8_t miso_pd2{0x10};
+
244
+
245// 0x02 Operation control register
+
246constexpr uint8_t en{0x80}; // 1: Enables oscillator and regulator(Ready mode)
+
247constexpr uint8_t rx_en{0x40}; // 1: Enables Rx operation
+
248constexpr uint8_t tx_en{0x08}; // 1: Enables Tx operation
+
249constexpr uint8_t wu{0x04}; // 1: Enables Wake-up mode
+
250constexpr uint8_t en_fd_c1{0x02};
+
251constexpr uint8_t en_fd_c0{0x01};
+
252
+
253constexpr uint8_t en_fd_mask{0x03};
+
254constexpr uint8_t en_fd_off{0x00};
+
255constexpr uint8_t en_fd_manual_ca{0x01};
+
256constexpr uint8_t en_fd_manual_pdt{0x02};
+
257constexpr uint8_t en_fd_manual_auto{0x03};
+
258
+
259// 0x03 Mode definition register
+
260constexpr uint8_t targ{0x80}; // 0: Initiator 1: Target
+
261constexpr uint8_t tr_am{0x04};
+
262constexpr uint8_t nfc_ar0{0x01};
+
263constexpr uint8_t nfc_ar1{0x02};
+
264
+
265constexpr uint8_t nfc_ar8_off{0x00};
+
266constexpr uint8_t nfc_ar8_auto{0x01};
+
267constexpr uint8_t nfc_ar8_always{0x02};
+
268constexpr uint8_t nfc_ar8_RFI{0x03};
+
269
+
270// 0x05 ISO14443A and NFC 106kb/s settings register
+
271constexpr uint8_t no_tx_par{0x80};
+
272constexpr uint8_t no_rx_par{0x40};
+
273constexpr uint8_t nfc_f0{0x20};
+
274constexpr uint8_t antcl{0x01};
+
275
+
276// 0x08 NFCIP-1 passive target definition register
+
277constexpr uint8_t d_ac_ap2p{0x08};
+
278constexpr uint8_t d_212_424_1r{0x04};
+
279constexpr uint8_t d_106_ac_a{0x01};
+
280
+
281// 0x0A Auxiliary definition register
+
282constexpr uint8_t no_crc_rx{0x80};
+
283constexpr uint8_t dis_corr{0x04};
+
284constexpr uint8_t nfc_n1{0x02};
+
285constexpr uint8_t nfc_n0{0x01};
+
286
+
287constexpr uint8_t nfc_n_mask{0x03};
+
288
+
289// 0x0B Receiver configuration register 1
+
290constexpr uint8_t ch_sel{0x80};
+
291constexpr uint8_t z_600k{0x08};
+
292constexpr uint8_t h200{0x04};
+
293constexpr uint8_t h80{0x02};
+
294constexpr uint8_t z12k{0x01};
+
295
+
296// 0x0C Receiver configuration register 2
+
297constexpr uint8_t sqm_dyn{0x20}; // Automatic squelch activation after end of TX
+
298constexpr uint8_t puz_61{0x10}; // Select squelch trigger level.
+
299constexpr uint8_t agc_en{0x08}; // AGC enabled
+
300constexpr uint8_t agc_m{0x04}; // AGC operates during complete receive period
+
301constexpr uint8_t agc6_3{0x01}; // AGC ratio 0:3 1:6
+
302
+
303// 0x12 Timer and EMV control register
+
304constexpr uint8_t mrt_step{0x08}; // Mask receive timer step size 0:64/fc, 1:5126/fc
+
305constexpr uint8_t nrt_nfc{0x04}; // No-response timer start condition in AP2P initiator and target mode.
+
306constexpr uint8_t nrt_emv{0x02}; // 1: No-response timer EMV mode
+
307constexpr uint8_t nrt_step{0x01}; // No-response timer step size 0:64/fc, 1:4096/fc
+
308
+
309constexpr uint8_t nrt_gptc_none{0x00};
+
310constexpr uint8_t nrt_gptc_erx{0x01 << 5}; // Additionally starts at End of RX (after EOF)
+
311constexpr uint8_t nrt_gptc_srx{0x02 << 5}; // Additionally starts at Start of RX
+
312constexpr uint8_t nrt_gptc_etx{0x03 << 5}; // Additionally starts at End of TX
+
313
+
314// 0x1A Main interrupt register
+
315constexpr uint8_t I_osc{0x80}; // IRQ when oscillator frequency is stable
+
316constexpr uint8_t I_wl{0x40}; // IRQ due to FIFO water level
+
317constexpr uint8_t I_rxs{0x20}; // IRQ due to start of receive
+
318constexpr uint8_t I_rxe{0x10}; // IRQ due to end of receive
+
319constexpr uint8_t I_txe{0x08}; // IRQ due to end of transmission
+
320constexpr uint8_t I_col{0x04}; // IRQ due to bit collision
+
321constexpr uint8_t I_rx_rest{0x02}; // 1: Mask IRQ due to automatic reception restart
+
322constexpr uint8_t I_RFU1{0x01}; // RFU
+
323
+
324constexpr uint32_t I_osc32 = ((uint32_t)I_osc << 24);
+
325constexpr uint32_t I_wl32 = ((uint32_t)I_wl << 24);
+
326constexpr uint32_t I_rxs32 = ((uint32_t)I_rxs << 24);
+
327constexpr uint32_t I_rxe32 = ((uint32_t)I_rxe << 24);
+
328constexpr uint32_t I_txe32 = ((uint32_t)I_txe << 24);
+
329constexpr uint32_t I_col32 = ((uint32_t)I_col << 24);
+
330constexpr uint32_t I_rx_rest32 = ((uint32_t)I_rx_rest << 24);
+
331
+
332// 0x1B Timer and NFC interrupt register
+
333constexpr uint8_t I_dct{0x80}; // IRQ due to termination of direct command
+
334constexpr uint8_t I_nre{0x40}; // IRQ due to No-response timer expire
+
335constexpr uint8_t I_gpe{0x20}; // IRQ due to general purpose timer expire
+
336constexpr uint8_t I_eon{0x10}; // IRQ due to detection of external field
+
337constexpr uint8_t I_eof{0x08}; // IRQ due to detection of external field drop
+
338constexpr uint8_t I_cac{0x04}; // IRQ due to detection of collision during RF collision avoidance
+
339constexpr uint8_t I_cat{0x02}; // IRQ after minimum guard time expire
+
340constexpr uint8_t I_nfct{0x01}; // IRQ when in target mode the initiator bit rate was recognized
+
341
+
342constexpr uint32_t I_nre32 = ((uint32_t)I_nre << 16);
+
343constexpr uint32_t I_eon32 = ((uint32_t)I_eon << 16);
+
344constexpr uint32_t I_eof32 = ((uint32_t)I_eof << 16);
+
345constexpr uint32_t I_cac32 = ((uint32_t)I_cac << 16);
+
346constexpr uint32_t I_cat32 = ((uint32_t)I_cat << 16);
+
347constexpr uint32_t I_nfct32 = ((uint32_t)I_nfct << 16);
+
348
+
349// 0x1C Error and wake-up interrupt register
+
350constexpr uint8_t I_crc{0x80};
+
351constexpr uint8_t I_par{0x40};
+
352constexpr uint8_t I_err2{0x20};
+
353constexpr uint8_t I_err1{0x10};
+
354constexpr uint8_t I_wt{0x08};
+
355constexpr uint8_t I_wam{0x04};
+
356constexpr uint8_t I_wph{0x02};
+
357constexpr uint8_t I_wcap{0x01};
+
358
+
359constexpr uint32_t I_crc32 = ((uint32_t)I_crc << 8);
+
360constexpr uint32_t I_par32 = ((uint32_t)I_par << 8);
+
361constexpr uint32_t I_err232 = ((uint32_t)I_err2 << 8);
+
362constexpr uint32_t I_err132 = ((uint32_t)I_err1 << 8);
+
363
+
364// 0x1D Passive target interrupt register
+
365constexpr uint8_t I_ppon2{0x80}; // PPON2 field on waiting timer interrupt
+
366constexpr uint8_t I_sl_wl{0x40}; // IRQ for passive target slot number water level
+
367constexpr uint8_t I_apon{0x20}; // IRQ due to active P2P field on event
+
368constexpr uint8_t I_rxe_pta{0x10}; // IRQ due to end of receive
+
369constexpr uint8_t I_wu_f{0x08}; // NFC 212/424kb/s passive target Active interrupt
+
370constexpr uint8_t I_RFU4{0x04}; // RFU
+
371constexpr uint8_t I_wu_ax{0x02}; // Passive target Active* interrupt
+
372constexpr uint8_t I_wu_a{0x01}; // Passive target Active interrupt
+
373
+
374constexpr uint32_t I_apon32 = I_apon;
+
375constexpr uint32_t I_rxe_pta32 = I_rxe_pta;
+
376constexpr uint32_t I_wu_f32 = I_wu_f;
+
377constexpr uint32_t I_wu_ax32 = I_wu_ax;
+
378constexpr uint32_t I_wu_a32 = I_wu_a;
+
379
+
380// 0x21 Passive target display register
+
381constexpr uint8_t pta_state_power_off{0x00};
+
382constexpr uint8_t pta_state_idle{0x01};
+
383constexpr uint8_t pta_state_ready_l1{0x02};
+
384constexpr uint8_t pta_state_ready_l2{0x03};
+
385constexpr uint8_t pta_state_active{0x05};
+
386constexpr uint8_t pta_state_halt{0x09};
+
387constexpr uint8_t pta_state_ready_l1_x{0x0A};
+
388constexpr uint8_t pta_state_ready_l2_x{0x0B};
+
389constexpr uint8_t pta_state_active_x{0x0D};
+
390
+
391// 0x31 Auxiliary display register
+
392constexpr uint8_t a_cha{0x80};
+
393constexpr uint8_t efd_o{0x40};
+
394constexpr uint8_t tx_on{0x20};
+
395constexpr uint8_t osc_ok{0x10};
+
396constexpr uint8_t rx_on{0x08};
+
397constexpr uint8_t rx_act{0x04};
+
398constexpr uint8_t en_peer{0x02};
+
399constexpr uint8_t en_ac{0x01};
+
400
+
402} // namespace regval
+
403
+
404inline bool has_irq32_error(const uint32_t irq32)
+
405{
+
406 return irq32 & 0x0000FF00;
+
407}
+
408
+
409inline bool is_irq32_timeout(const uint32_t irq32)
+
410{
+
411 return irq32 & regval::I_nre32;
+
412}
+
413
+
414inline bool is_irq32_rxe(const uint32_t irq32)
+
415{
+
416 return irq32 & regval::I_rxe32;
+
417}
+
418
+
419inline bool is_irq32_rxs(const uint32_t irq32)
+
420{
+
421 return irq32 & regval::I_rxs32;
+
422}
+
423
+
424inline bool is_irq32_txe(const uint32_t irq32)
+
425{
+
426 return irq32 & regval::I_txe32;
+
427}
+
428
+
429inline bool is_irq32_collision(const uint32_t irq32)
+
430{
+
431 return irq32 & regval::I_col32;
+
432}
+
433
+
434uint8_t calculate_mrt(const uint32_t us, const bool mrt_step /* false:64, true:512*/);
+
435uint16_t calculate_nrt(const uint32_t ms, const bool nrt_step /* false:64, true:4096*/);
+
436inline uint8_t calculate_fdt(const uint32_t us);
+
437
+
438} // namespace st25r3916
+
439
+
440} // namespace unit
+
441} // namespace m5
+
442#endif
+
constexpr uint16_t MAX_FIFO_DEPTH
Maximum FIFO depth.
Definition ST25R3916_definition.hpp:210
+
constexpr uint32_t PT_MEMORY_F_LENGTH
F-config length.
Definition ST25R3916_definition.hpp:56
+
constexpr uint32_t PT_MEMORY_A_LENGTH
A-config length.
Definition ST25R3916_definition.hpp:55
+
InitiatorOperationMode
Initiator operation modes.
Definition ST25R3916_definition.hpp:29
+
@ SubCarrierStream
Sub-carrier stream mode.
+
@ NFCForumType1
NFC Forum Type 1 tag (Topaz)
+ +
@ NFCIP1
NFCIP-1 active communication.
+ + + +
TargetOperationMode
Target operation modes.
Definition ST25R3916_definition.hpp:44
+
@ FelicaBitrate
FeliCa bit rate detection mode.
+
@ ISO14443ABitrate
ISO14443A bit rate detection mode.
+
@ Felica
FeliCa™ passive target mode.
+
constexpr uint32_t PT_MEMORY_LENGTH
all length
Definition ST25R3916_definition.hpp:58
+
constexpr uint32_t PT_MEMORY_TSN_LENGTH
TSN data length.
Definition ST25R3916_definition.hpp:57
+
Top level namespace of M5stack.
+
Register setting value.
+
For ST25R3916.
+
Unit-related namespace.
+
+
+ + + + diff --git a/aes_8cpp.html b/aes_8cpp.html new file mode 100644 index 0000000..ebc5cd7 --- /dev/null +++ b/aes_8cpp.html @@ -0,0 +1,319 @@ + + + + + + + +M5Unit-NFC: src/nfc/crypto/aes.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
aes.cpp File Reference
+
+
+ +

AES/CMAC helpers. +More...

+
#include "nfc/crypto/aes.hpp"
+#include <M5Utility.hpp>
+#include <cstring>
+#include <mbedtls/aes.h>
+
+ + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
+ + + + + + + + + + + + + +

+Functions

bool m5::nfc::crypto::aes_ecb_encrypt (uint8_t out[16], const uint8_t key[16], const uint8_t in[16])
 AES-128 ECB encryption of a single 16-byte block.
 
bool m5::nfc::crypto::aes_cbc_crypt (uint8_t *out, const uint8_t key[16], const uint8_t iv_in[16], const uint8_t *in, size_t len, bool encrypt)
 AES-128 CBC encrypt or decrypt.
 
bool m5::nfc::crypto::cmac_subkeys (uint8_t k1[16], uint8_t k2[16], const uint8_t key[16])
 Generate AES-CMAC subkeys K1 and K2.
 
bool m5::nfc::crypto::cmac_aes_128 (uint8_t out[16], const uint8_t key[16], const uint8_t *msg, size_t msg_len)
 Calculate AES-CMAC (RFC 4493)
 
+

Detailed Description

+

AES/CMAC helpers.

+

Function Documentation

+ +

◆ aes_cbc_crypt()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::crypto::aes_cbc_crypt (uint8_t * out,
const uint8_t key[16],
const uint8_t iv_in[16],
const uint8_t * in,
size_t len,
bool encrypt )
+
+ +

AES-128 CBC encrypt or decrypt.

+
Parameters
+ + + + + + + +
[out]outOutput buffer (same size as in)
keyAES-128 key (16 bytes)
iv_inInitialization vector (16 bytes)
inInput buffer
lenInput buffer length (must be multiple of 16)
encryptTrue for encrypt, false for decrypt
+
+
+
Returns
True if successful
+ +
+
+ +

◆ aes_ecb_encrypt()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::crypto::aes_ecb_encrypt (uint8_t out[16],
const uint8_t key[16],
const uint8_t in[16] )
+
+ +

AES-128 ECB encryption of a single 16-byte block.

+
Parameters
+ + + + +
[out]outEncrypted output (16 bytes)
keyAES-128 key (16 bytes)
inPlaintext input (16 bytes)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ cmac_aes_128()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::crypto::cmac_aes_128 (uint8_t out[16],
const uint8_t key[16],
const uint8_t * msg,
size_t msg_len )
+
+ +

Calculate AES-CMAC (RFC 4493)

+
Parameters
+ + + + + +
[out]outCMAC output (16 bytes)
keyAES-128 key (16 bytes)
msgMessage buffer
msg_lenMessage length
+
+
+
Returns
True if successful
+ +
+
+ +

◆ cmac_subkeys()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::crypto::cmac_subkeys (uint8_t k1[16],
uint8_t k2[16],
const uint8_t key[16] )
+
+ +

Generate AES-CMAC subkeys K1 and K2.

+
Parameters
+ + + + +
[out]k1Subkey K1 (16 bytes)
[out]k2Subkey K2 (16 bytes)
keyAES-128 key (16 bytes)
+
+
+
Returns
True if successful
+ +
+
+
+
+ + + + diff --git a/aes_8cpp.js b/aes_8cpp.js new file mode 100644 index 0000000..c11ab2a --- /dev/null +++ b/aes_8cpp.js @@ -0,0 +1,7 @@ +var aes_8cpp = +[ + [ "aes_cbc_crypt", "aes_8cpp.html#ad26d67e84a0c1c2ae9d4c027d8c2d66a", null ], + [ "aes_ecb_encrypt", "aes_8cpp.html#a3be0738c24fac6d2216486db30bb064c", null ], + [ "cmac_aes_128", "aes_8cpp.html#a5431d20eb1034f57fe7aecefc43c30ce", null ], + [ "cmac_subkeys", "aes_8cpp.html#a66b0e9249a6eb7b35e20d249ead7c9bf", null ] +]; \ No newline at end of file diff --git a/aes_8hpp.html b/aes_8hpp.html new file mode 100644 index 0000000..2a648b9 --- /dev/null +++ b/aes_8hpp.html @@ -0,0 +1,319 @@ + + + + + + + +M5Unit-NFC: src/nfc/crypto/aes.hpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
aes.hpp File Reference
+
+
+ +

AES/CMAC helpers. +More...

+
#include <cstddef>
+#include <cstdint>
+
+

Go to the source code of this file.

+ + + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
+ + + + + + + + + + + + + +

+Functions

bool m5::nfc::crypto::aes_ecb_encrypt (uint8_t out[16], const uint8_t key[16], const uint8_t in[16])
 AES-128 ECB encryption of a single 16-byte block.
 
bool m5::nfc::crypto::aes_cbc_crypt (uint8_t *out, const uint8_t key[16], const uint8_t iv_in[16], const uint8_t *in, size_t len, bool encrypt)
 AES-128 CBC encrypt or decrypt.
 
bool m5::nfc::crypto::cmac_subkeys (uint8_t k1[16], uint8_t k2[16], const uint8_t key[16])
 Generate AES-CMAC subkeys K1 and K2.
 
bool m5::nfc::crypto::cmac_aes_128 (uint8_t out[16], const uint8_t key[16], const uint8_t *msg, size_t msg_len)
 Calculate AES-CMAC (RFC 4493)
 
+

Detailed Description

+

AES/CMAC helpers.

+

Function Documentation

+ +

◆ aes_cbc_crypt()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::crypto::aes_cbc_crypt (uint8_t * out,
const uint8_t key[16],
const uint8_t iv_in[16],
const uint8_t * in,
size_t len,
bool encrypt )
+
+ +

AES-128 CBC encrypt or decrypt.

+
Parameters
+ + + + + + + +
[out]outOutput buffer (same size as in)
keyAES-128 key (16 bytes)
iv_inInitialization vector (16 bytes)
inInput buffer
lenInput buffer length (must be multiple of 16)
encryptTrue for encrypt, false for decrypt
+
+
+
Returns
True if successful
+ +
+
+ +

◆ aes_ecb_encrypt()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::crypto::aes_ecb_encrypt (uint8_t out[16],
const uint8_t key[16],
const uint8_t in[16] )
+
+ +

AES-128 ECB encryption of a single 16-byte block.

+
Parameters
+ + + + +
[out]outEncrypted output (16 bytes)
keyAES-128 key (16 bytes)
inPlaintext input (16 bytes)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ cmac_aes_128()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::crypto::cmac_aes_128 (uint8_t out[16],
const uint8_t key[16],
const uint8_t * msg,
size_t msg_len )
+
+ +

Calculate AES-CMAC (RFC 4493)

+
Parameters
+ + + + + +
[out]outCMAC output (16 bytes)
keyAES-128 key (16 bytes)
msgMessage buffer
msg_lenMessage length
+
+
+
Returns
True if successful
+ +
+
+ +

◆ cmac_subkeys()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::crypto::cmac_subkeys (uint8_t k1[16],
uint8_t k2[16],
const uint8_t key[16] )
+
+ +

Generate AES-CMAC subkeys K1 and K2.

+
Parameters
+ + + + +
[out]k1Subkey K1 (16 bytes)
[out]k2Subkey K2 (16 bytes)
keyAES-128 key (16 bytes)
+
+
+
Returns
True if successful
+ +
+
+
+
+ + + + diff --git a/aes_8hpp.js b/aes_8hpp.js new file mode 100644 index 0000000..78b4f6f --- /dev/null +++ b/aes_8hpp.js @@ -0,0 +1,7 @@ +var aes_8hpp = +[ + [ "aes_cbc_crypt", "aes_8hpp.html#ad26d67e84a0c1c2ae9d4c027d8c2d66a", null ], + [ "aes_ecb_encrypt", "aes_8hpp.html#a3be0738c24fac6d2216486db30bb064c", null ], + [ "cmac_aes_128", "aes_8hpp.html#a5431d20eb1034f57fe7aecefc43c30ce", null ], + [ "cmac_subkeys", "aes_8hpp.html#a66b0e9249a6eb7b35e20d249ead7c9bf", null ] +]; \ No newline at end of file diff --git a/aes_8hpp_source.html b/aes_8hpp_source.html new file mode 100644 index 0000000..92f1895 --- /dev/null +++ b/aes_8hpp_source.html @@ -0,0 +1,141 @@ + + + + + + + +M5Unit-NFC: src/nfc/crypto/aes.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
aes.hpp
+
+
+Go to the documentation of this file.
1/*
+
2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
+
3 *
+
4 * SPDX-License-Identifier: MIT
+
5 */
+
10#pragma once
+
11
+
12#include <cstddef>
+
13#include <cstdint>
+
14
+
15namespace m5 {
+
16namespace nfc {
+
17namespace crypto {
+
18
+
26bool aes_ecb_encrypt(uint8_t out[16], const uint8_t key[16], const uint8_t in[16]);
+
27
+
38bool aes_cbc_crypt(uint8_t* out, const uint8_t key[16], const uint8_t iv_in[16], const uint8_t* in, size_t len,
+
39 bool encrypt);
+
40
+
48bool cmac_subkeys(uint8_t k1[16], uint8_t k2[16], const uint8_t key[16]);
+
49
+
58bool cmac_aes_128(uint8_t out[16], const uint8_t key[16], const uint8_t* msg, size_t msg_len);
+
59
+
60} // namespace crypto
+
61} // namespace nfc
+
62} // namespace m5
+
bool cmac_subkeys(uint8_t k1[16], uint8_t k2[16], const uint8_t key[16])
Generate AES-CMAC subkeys K1 and K2.
Definition aes.cpp:92
+
Top level namespace of M5stack.
+
NFC related definitions.
+
+
+ + + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 0000000..4294f49 --- /dev/null +++ b/annotated.html @@ -0,0 +1,180 @@ + + + + + + + +M5Unit-NFC: Class List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 123456]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Nm5Top level namespace of M5stack
 Nnfc
 Na
 Nmifare
 Nclassic
 CCrypto1Crypto1 for MIFARE Classic
 Ndesfire
 Cdesfire_aid_t24bit Application ID
 CDESFireFileSystemFile system for MIFARE DESFire
 CEv2ContextSession context for EV2 secure messaging
 CFileRenameFile renaming parameters for DESFire Light SetConfiguration
 CFileSettingsDESFire file settings (minimal fields for StdDataFile)
 CNdefFormatOptionsOptions for formatting DESFire as Type4 NDEF
 Nst25ta
 CSystemFileST25TA series system file
 CATSAnswer to request
 CPICCPICC for NFC-A
 Napdu
 CTLVTLV element
 Nb
 CPICCPICC for NFC-B
 Nf
 Cblock_tBlock list element
 CPICCPICC information for NFC-F
 CREGSubtract Register Block Data
 Nisodep
 Cconfig_tISO-DEP configuration
 CIsoDEPISO Data Exchange Protocol
 CRxInfoRX information
 Nndef
 Ntype2
 CCapabilityContainerCapability container for Type2
 Ntype3
 CAttributeBlockFor Type 3 tag (T3T)
 Ntype4
 CCapabilityContainerCapability container for Type4
 CFileControlTLVFile control TLV
 Ntype5
 CCapabilityContainerCapability container for Type5
 CAttributeNDEF Record attribute (1st byte)
 CNDEFLayerNDEF operations layer
 CRecordNDEF Record
 CTLVNDEF TLV container
 Nv
 CPICCPICC for NFC-V
 CAdapterST25R3916ForB
 CAdapterST25R3916ForF
 CAdapterST25R3916ForV
 CEmulationLayerACommon interface layer for each chip of the NFC-A emulation
 CEmulationLayerFCommon interface layer for each chip of the NFC-F emulation
 CFCPFile Control Parameters
 CFileSystemISO/IEC 7816-4 file system
 CListenerST25R3916ForA
 CListenerST25R3916ForF
 CNFCBFileSystemFile system base using isoDEP for NFC-B
 CNFCLayerACommon interface layer for each chip of the NFC-A reader
 CNFCLayerBCommon interface layer for each chip of the NFC-B reader
 CNFCLayerFCommon interface layer for each chip of the NFC-F reader
 CNFCLayerInterfaceCommon interface for NFC layer
 CNFCLayerVCommon interface layer for each chip of the NFC-V reader
 CPollerST25R3916ForA
 Nunit
 CCapST25R3916ST25R3916 unit in CapCC1101 (SPI)
 CUnitST25R3916ST25R3916 Unit
 Cconfig_tSettings for begin
+
+
+
+ + + + diff --git a/annotated_dup.js b/annotated_dup.js new file mode 100644 index 0000000..1787562 --- /dev/null +++ b/annotated_dup.js @@ -0,0 +1,85 @@ +var annotated_dup = +[ + [ "m5", "namespacem5.html", [ + [ "nfc", null, [ + [ "a", null, [ + [ "mifare", null, [ + [ "classic", null, [ + [ "Crypto1", "classm5_1_1nfc_1_1a_1_1mifare_1_1classic_1_1_crypto1.html", null ] + ] ], + [ "desfire", null, [ + [ "desfire_aid_t", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1desfire__aid__t.html", null ], + [ "DESFireFileSystem", "classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.html", "classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system" ], + [ "Ev2Context", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.html", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context" ], + [ "FileRename", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename.html", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename" ], + [ "FileSettings", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_settings.html", null ], + [ "NdefFormatOptions", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options" ] + ] ] + ] ], + [ "st25ta", null, [ + [ "SystemFile", "structm5_1_1nfc_1_1a_1_1st25ta_1_1_system_file.html", null ] + ] ], + [ "ATS", "structm5_1_1nfc_1_1a_1_1_a_t_s.html", "structm5_1_1nfc_1_1a_1_1_a_t_s" ], + [ "PICC", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html", "structm5_1_1nfc_1_1a_1_1_p_i_c_c" ] + ] ], + [ "apdu", null, [ + [ "TLV", "structm5_1_1nfc_1_1apdu_1_1_t_l_v.html", "structm5_1_1nfc_1_1apdu_1_1_t_l_v" ] + ] ], + [ "b", null, [ + [ "PICC", "structm5_1_1nfc_1_1b_1_1_p_i_c_c.html", "structm5_1_1nfc_1_1b_1_1_p_i_c_c" ] + ] ], + [ "f", null, [ + [ "block_t", "structm5_1_1nfc_1_1f_1_1block__t.html", "structm5_1_1nfc_1_1f_1_1block__t" ], + [ "PICC", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html", "structm5_1_1nfc_1_1f_1_1_p_i_c_c" ], + [ "REG", "unionm5_1_1nfc_1_1f_1_1_r_e_g.html", "unionm5_1_1nfc_1_1f_1_1_r_e_g" ] + ] ], + [ "isodep", null, [ + [ "config_t", "structm5_1_1nfc_1_1isodep_1_1config__t.html", null ], + [ "IsoDEP", "classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html", "classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p" ], + [ "RxInfo", "structm5_1_1nfc_1_1isodep_1_1_rx_info.html", null ] + ] ], + [ "ndef", null, [ + [ "type2", null, [ + [ "CapabilityContainer", "structm5_1_1nfc_1_1ndef_1_1type2_1_1_capability_container.html", null ] + ] ], + [ "type3", null, [ + [ "AttributeBlock", "structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html", "structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block" ] + ] ], + [ "type4", null, [ + [ "CapabilityContainer", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.html", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container" ], + [ "FileControlTLV", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v" ] + ] ], + [ "type5", null, [ + [ "CapabilityContainer", "structm5_1_1nfc_1_1ndef_1_1type5_1_1_capability_container.html", null ] + ] ], + [ "Attribute", "structm5_1_1nfc_1_1ndef_1_1_attribute.html", null ], + [ "NDEFLayer", "classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html", "classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer" ], + [ "Record", "classm5_1_1nfc_1_1ndef_1_1_record.html", "classm5_1_1nfc_1_1ndef_1_1_record" ], + [ "TLV", "classm5_1_1nfc_1_1ndef_1_1_t_l_v.html", "classm5_1_1nfc_1_1ndef_1_1_t_l_v" ] + ] ], + [ "v", null, [ + [ "PICC", "structm5_1_1nfc_1_1v_1_1_p_i_c_c.html", "structm5_1_1nfc_1_1v_1_1_p_i_c_c" ] + ] ], + [ "AdapterST25R3916ForB", "structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_b.html", null ], + [ "AdapterST25R3916ForF", "structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_f.html", null ], + [ "AdapterST25R3916ForV", "structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_v.html", null ], + [ "EmulationLayerA", "classm5_1_1nfc_1_1_emulation_layer_a.html", "classm5_1_1nfc_1_1_emulation_layer_a" ], + [ "EmulationLayerF", "classm5_1_1nfc_1_1_emulation_layer_f.html", "classm5_1_1nfc_1_1_emulation_layer_f" ], + [ "FCP", "structm5_1_1nfc_1_1_f_c_p.html", "structm5_1_1nfc_1_1_f_c_p" ], + [ "FileSystem", "classm5_1_1nfc_1_1_file_system.html", "classm5_1_1nfc_1_1_file_system" ], + [ "ListenerST25R3916ForA", "structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a.html", "structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a" ], + [ "ListenerST25R3916ForF", "structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f.html", "structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f" ], + [ "NFCBFileSystem", "classm5_1_1nfc_1_1_n_f_c_b_file_system.html", null ], + [ "NFCLayerA", "classm5_1_1nfc_1_1_n_f_c_layer_a.html", "classm5_1_1nfc_1_1_n_f_c_layer_a" ], + [ "NFCLayerB", "classm5_1_1nfc_1_1_n_f_c_layer_b.html", "classm5_1_1nfc_1_1_n_f_c_layer_b" ], + [ "NFCLayerF", "classm5_1_1nfc_1_1_n_f_c_layer_f.html", "classm5_1_1nfc_1_1_n_f_c_layer_f" ], + [ "NFCLayerInterface", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html", "classm5_1_1nfc_1_1_n_f_c_layer_interface" ], + [ "NFCLayerV", "classm5_1_1nfc_1_1_n_f_c_layer_v.html", "classm5_1_1nfc_1_1_n_f_c_layer_v" ], + [ "PollerST25R3916ForA", "structm5_1_1nfc_1_1_poller_s_t25_r3916_for_a.html", null ] + ] ], + [ "unit", null, [ + [ "CapST25R3916", "classm5_1_1unit_1_1_cap_s_t25_r3916.html", null ], + [ "UnitST25R3916", "classm5_1_1unit_1_1_unit_s_t25_r3916.html", "classm5_1_1unit_1_1_unit_s_t25_r3916" ] + ] ] + ] ] +]; \ No newline at end of file diff --git a/apdu_8cpp.html b/apdu_8cpp.html new file mode 100644 index 0000000..fffb05f --- /dev/null +++ b/apdu_8cpp.html @@ -0,0 +1,206 @@ + + + + + + + +M5Unit-NFC: src/nfc/apdu/apdu.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
apdu.cpp File Reference
+
+
+ +

Application Protocol Data Unit (ISO/IEC 7816-4) +More...

+
#include "apdu.hpp"
+#include <M5Utility.hpp>
+#include <inttypes.h>
+
+ + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
+ + + + + + + + + + +

+Functions

std::vector< uint8_t > m5::nfc::apdu::make_apdu_command (const uint8_t cla, const uint8_t ins, const uint8_t param1=0x00, const uint8_t param2=0x00, const uint8_t *data=nullptr, const uint16_t data_len=0, const uint16_t rx_len=0)
 Make APDU command.
 
+std::vector< TLVm5::nfc::apdu::parse_tlv (const uint8_t *ptr, const uint32_t len)
 Parse TLV.
 
+void m5::nfc::apdu::dump_tlv (const std::vector< TLV > &tlvs, const uint8_t depth=0)
 Dump TLV.
 
+

Detailed Description

+

Application Protocol Data Unit (ISO/IEC 7816-4)

+

Function Documentation

+ +

◆ make_apdu_command()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::vector< uint8_t > m5::nfc::apdu::make_apdu_command (const uint8_t cla,
const uint8_t ins,
const uint8_t param1 = 0x00,
const uint8_t param2 = 0x00,
const uint8_t * data = nullptr,
const uint16_t data_len = 0,
const uint16_t rx_len = 0 )
+
+ +

Make APDU command.

+
Parameters
+ + + + + + + + +
claCLA
insINS
param1PARAM1
param2PARAM2
dataPayload data
data_lenPayload data length
rx_lenExpected bytes to receive
+
+
+
Returns
Constructed command data
+ +
+
+
+
+ + + + diff --git a/apdu_8cpp.js b/apdu_8cpp.js new file mode 100644 index 0000000..4584c09 --- /dev/null +++ b/apdu_8cpp.js @@ -0,0 +1,6 @@ +var apdu_8cpp = +[ + [ "dump_tlv", "apdu_8cpp.html#aefdcb0a0692e4e97f13e6a5f7a140ade", null ], + [ "make_apdu_command", "apdu_8cpp.html#ade33069f0d2d930a92d79591644b8ed8", null ], + [ "parse_tlv", "apdu_8cpp.html#a5f63415d23f1838b2cf7a294cad86ec1", null ] +]; \ No newline at end of file diff --git a/apdu_8hpp.html b/apdu_8hpp.html new file mode 100644 index 0000000..93b00c5 --- /dev/null +++ b/apdu_8hpp.html @@ -0,0 +1,479 @@ + + + + + + + +M5Unit-NFC: src/nfc/apdu/apdu.hpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
apdu.hpp File Reference
+
+
+ +

Application Protocol Data Unit (ISO/IEC 7816-4) +More...

+
#include <cstdint>
+#include <string>
+#include <vector>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

struct  m5::nfc::apdu::TLV
 TLV element. More...
 
+ + + + + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
namespace  apdu
 For APDU.
 
+ + + + + + + + + + + + + +

+Enumerations

enum class  m5::nfc::apdu::INS : uint8_t {
+  SELECT_FILE = 0xA4 +, CREATE_FILE = 0xE0 +, READ_BINARY = 0xB0 +, WRITE_BINARY = 0xD0 +,
+  UPDATE_BINARY = 0xD6 +, ERASE_BINARY = 0x0E +, READ_RECORD = 0xB2 +, WRITE_RECORD = 0xD2 +,
+  APPEND_RECORD = 0xE2 +, UPDATE_RECORRD = 0xDC +, GET_RESPONSE = 0xC0 +, GET_DATA = 0xCA +,
+  PUT_DATA = 0xDA +, VERIFY = 0x20 +, INTERNAL_AUTHENTICATE = 0x88 +, EXTERNAL_AUTHENTICATE = 0x82 +,
+  GET_CHALLEMGE = 0x84 +, LOCK_DF = 0x50 +, UNLOCK_DF = 0x52 +, UNLOCK_KEY = 0x54 +,
+  CHANGE_KEY = 0x32 +, ERASE_ALL_RECORDS = 0x06 +, GET_VERSION = 0x60 +, DF_CREATE_APPLICATION = 0xCA +,
+  DF_DELETE_APPLICATION = 0xDA +, DF_SELECT_APPLICATION = 0x5A +, DF_GET_APPLICATION_IDS = 0x6A +, DF_CREATE_STD_DATA_FILE = 0xCD +,
+  DF_GET_FREE_MEMORY = 0x6E +, DF_GET_FILE_IDS = 0x6F +, DF_GET_ISO_FILE_IDS = 0x61 +, DF_GET_KEY_SETTINGS = 0x45 +,
+  DF_SET_CONFIGURATION = 0x5C +, DF_CHANGE_FILE_SETTINGS = 0x5F +, DF_AUTHENTICATE = 0x0A +, DF_AUTHENTICATE_ISO = 0x1A +,
+  DF_AUTHENTICATE_AES = 0xAA +, DF_AUTHENTICATE_EV2 = 0x71 +, DF_FORMAT_PICC = 0xFC +, DF_READ_DATA = 0xBD +,
+  DF_WRITE_DATA = 0x3D +, DF_GET_FILE_SETTINGS = 0xF5 +, DF_DELETE_TRANSACTION_MAC_FILE = 0xDF +, DF_CREATE_TRANSACTION_MAC_FILE = 0xCE +
+ }
 APDU instruction code.
 
enum class  m5::nfc::apdu::SelectBy : uint8_t {
+  FileId = 0x00 +, ChildDf = 0x01 +, EfUnderCurrentDf = 0x02 +, ParentDf = 0x03 +,
+  DfName = 0x04 +, PathFromMf = 0x08 +, PathFromCurrentDf = 0x09 +
+ }
 Select control for SELECT_FILE. More...
 
enum class  m5::nfc::apdu::SelectOccurrence : uint8_t { FirstOrOnly = 0x00 +, Last = 0x01 +, Next = 0x02 +, Previous = 0x03 + }
 Select occurrence for SELECT_FILE. More...
 
enum class  m5::nfc::apdu::SelectResponse : uint8_t { FCI = 0x00 +, FCP = 0x04 +, FMD = 0x08 +, None = 0x0C + }
 Response for SELECT_FILE. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+bool m5::nfc::apdu::is_response_OK (const uint16_t sw12)
 Is response successfully?
 
+bool m5::nfc::apdu::is_response_OK (const uint8_t sw[2])
 Is response successfully?
 
+bool m5::nfc::apdu::is_response_OK (const uint8_t sw1, const uint8_t sw2)
 Is response successfully?
 
+bool m5::nfc::apdu::need_select_file_le (const uint8_t param2)
 
+std::vector< TLVm5::nfc::apdu::parse_tlv (const uint8_t *ptr, const uint32_t len)
 Parse TLV.
 
+void m5::nfc::apdu::dump_tlv (const std::vector< TLV > &tlvs, const uint8_t depth=0)
 Dump TLV.
 
std::vector< uint8_t > m5::nfc::apdu::make_apdu_command (const uint8_t cla, const uint8_t ins, const uint8_t param1=0x00, const uint8_t param2=0x00, const uint8_t *data=nullptr, const uint16_t data_len=0, const uint16_t rx_len=0)
 Make APDU command.
 
+std::vector< uint8_t > m5::nfc::apdu::make_apdu_case1 (const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2)
 Make APDU case1 command [CLA | INS | P1 | P2].
 
+std::vector< uint8_t > m5::nfc::apdu::make_apdu_case2 (const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2, const uint16_t le)
 Make APDU case2 command [CLA | INS | P1 | P2 | Le].
 
+std::vector< uint8_t > m5::nfc::apdu::make_apdu_case3 (const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2, const uint8_t *data, const uint16_t data_len)
 Make APDU case3 command [CLA | INS | P1 | P2 | Lc | C-Data].
 
+std::vector< uint8_t > m5::nfc::apdu::make_apdu_case4 (const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2, const uint8_t *data, const uint16_t data_len, const uint16_t le)
 Make APDU case4 command [CLA | INS | P1 | P2 | Lc | C-Data | Le].
 
+ + + + + + + + + + + + + + + + + + + + +

+Variables

+constexpr uint16_t m5::nfc::apdu::master_file_id {0x3F00}
 Master file ID.
 
APDU responses
+constexpr uint16_t m5::nfc::apdu::RESPONSE_OK {0x9000}
 Command successfully executed (OK)
 
+constexpr uint16_t m5::nfc::apdu::SUCCESSFULLY_1 {0x6100}
 Command successfully executed; xx bytes of data are available and can be requested using GET RESPON.
 
+constexpr uint16_t m5::nfc::apdu::SUCCESSFULLY_2 {0x9F00}
 Command successfully executed; xx bytes of data are available and can be requested using GET RESPON.
 
+constexpr uint8_t m5::nfc::apdu::RESPONSE_BYTES_STILL_AVAILABLE {0x61}
 Response bytes still available.
 
+constexpr uint8_t m5::nfc::apdu::WRONG_LENGTH_LE {0x6C}
 Wrong length Le.
 
+

Detailed Description

+

Application Protocol Data Unit (ISO/IEC 7816-4)

+

Enumeration Type Documentation

+ +

◆ SelectBy

+ +
+
+ + + + + +
+ + + + +
enum class m5::nfc::apdu::SelectBy : uint8_t
+
+strong
+
+ +

Select control for SELECT_FILE.

+
Note
OR with SelectOccurrence
+ + + + + + + + +
Enumerator
FileId 

Select MF/DF/EF by file ID.

+
ChildDf 

Select child DF (FID in data)

+
EfUnderCurrentDf 

Select EF under current DF (FID in data)

+
ParentDf 

Select parent DF.

+
DfName 

Select by DF name (AID)

+
PathFromMf 

Select by path from MF.

+
PathFromCurrentDf 

Select by path from current DF.

+
+ +
+
+ +

◆ SelectOccurrence

+ +
+
+ + + + + +
+ + + + +
enum class m5::nfc::apdu::SelectOccurrence : uint8_t
+
+strong
+
+ +

Select occurrence for SELECT_FILE.

+
Note
OR with SelectBy
+ + + + + +
Enumerator
FirstOrOnly 

Select the first (or only) match.

+
Last 

Select the last match.

+
Next 

Select the next match.

+
Previous 

Select the previous match.

+
+ +
+
+ +

◆ SelectResponse

+ +
+
+ + + + + +
+ + + + +
enum class m5::nfc::apdu::SelectResponse : uint8_t
+
+strong
+
+ +

Response for SELECT_FILE.

+ + + + + +
Enumerator
FCI 

FCI template.

+
FCP 

FCP template.

+
FMD 

FMD template.

+
None 

/ No response

+
+ +
+
+

Function Documentation

+ +

◆ make_apdu_command()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::vector< uint8_t > m5::nfc::apdu::make_apdu_command (const uint8_t cla,
const uint8_t ins,
const uint8_t param1 = 0x00,
const uint8_t param2 = 0x00,
const uint8_t * data = nullptr,
const uint16_t data_len = 0,
const uint16_t rx_len = 0 )
+
+ +

Make APDU command.

+
Parameters
+ + + + + + + + +
claCLA
insINS
param1PARAM1
param2PARAM2
dataPayload data
data_lenPayload data length
rx_lenExpected bytes to receive
+
+
+
Returns
Constructed command data
+ +
+
+
+
+ + + + diff --git a/apdu_8hpp.js b/apdu_8hpp.js new file mode 100644 index 0000000..efae6eb --- /dev/null +++ b/apdu_8hpp.js @@ -0,0 +1,87 @@ +var apdu_8hpp = +[ + [ "m5::nfc::apdu::TLV", "structm5_1_1nfc_1_1apdu_1_1_t_l_v.html", "structm5_1_1nfc_1_1apdu_1_1_t_l_v" ], + [ "INS", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45", [ + [ "SELECT_FILE", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a0a5636b3d4a92cb2d2765d5942d10827", null ], + [ "CREATE_FILE", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a745be2e28bd3d4c3e38ee3d2af27d964", null ], + [ "READ_BINARY", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45ab5a18261f532573ce42ebb1c8a040f3b", null ], + [ "WRITE_BINARY", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45ab7c82c62e26c2043f55dca2a21a4045f", null ], + [ "UPDATE_BINARY", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a67d56d900f88735cc348e281aeebfef5", null ], + [ "ERASE_BINARY", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45ace0ba5a81434f8288fdb278654634c98", null ], + [ "READ_RECORD", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a04524ceae3816a1bfa441c69a748bd45", null ], + [ "WRITE_RECORD", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45aae158b96c0afe7b325c3c0d81ee1d9ec", null ], + [ "APPEND_RECORD", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a9cd6629de46de7cf6807f1303899fcaa", null ], + [ "UPDATE_RECORRD", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45ad6c38ad6dbc6dbbc3af768f5ab1e3d94", null ], + [ "GET_RESPONSE", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a48b69be45452b2db62d591a2b279989f", null ], + [ "GET_DATA", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45ae6da6c92034f4af616afb89bf7840b04", null ], + [ "PUT_DATA", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a13e132539c6cc53c50415b2d8c35811e", null ], + [ "VERIFY", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a0b4c12d7e0a73840c1c4f148fda3b037", null ], + [ "INTERNAL_AUTHENTICATE", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a2aac7af9fd6f6da657fe91d0de96e7c8", null ], + [ "EXTERNAL_AUTHENTICATE", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a6b738affa36ac0be2770bf447eda983e", null ], + [ "GET_CHALLEMGE", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a47ba60cb92b683ab6f11566f9f78db7c", null ], + [ "LOCK_DF", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45ac734295f1346ad4917cc2e09220435a9", null ], + [ "UNLOCK_DF", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45add91821adc602d0783585ac3738d6115", null ], + [ "UNLOCK_KEY", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a417ee7923ef8b06334999d4cb43eb4bd", null ], + [ "CHANGE_KEY", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45adb2f5bc1d37d61f07ef52d6bde7ee63c", null ], + [ "ERASE_ALL_RECORDS", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45acd4416489c663bc101df3a70fb06a3ff", null ], + [ "GET_VERSION", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a3e4d39d03ce99d4daaab3749af67ff13", null ], + [ "DF_CREATE_APPLICATION", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a4236e7fd33abc6c0697214d8443ce48f", null ], + [ "DF_DELETE_APPLICATION", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45ad3edffd23b357741cbb9c3dfe7c4973c", null ], + [ "DF_SELECT_APPLICATION", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a2717e91100e533a624321de3c2fb1872", null ], + [ "DF_GET_APPLICATION_IDS", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45ae4212a6daab375cd7e3aae362cc59f68", null ], + [ "DF_CREATE_STD_DATA_FILE", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45ac202f60a4e687312c4fb9756ec3bcfc4", null ], + [ "DF_GET_FREE_MEMORY", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45ad04989bb6d4bcc100663e35e65d85c42", null ], + [ "DF_GET_FILE_IDS", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45ab700fa97dcd68b25bf19861e725121ad", null ], + [ "DF_GET_ISO_FILE_IDS", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45ac238cbd4417a8fdb81bf2823b1599fb4", null ], + [ "DF_GET_KEY_SETTINGS", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45aa6d3b105494e33db89ed4fcc0d71c461", null ], + [ "DF_SET_CONFIGURATION", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a3a5d16c0df8819418a6785488999a327", null ], + [ "DF_CHANGE_FILE_SETTINGS", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45aca0d8cf55b4821f59f9f987222b13e03", null ], + [ "DF_AUTHENTICATE", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45ad2e8efa56978454798f7b12ae0ca7588", null ], + [ "DF_AUTHENTICATE_ISO", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a096d15351ceac2b34c20f02454bee5bb", null ], + [ "DF_AUTHENTICATE_AES", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45aaf10c2b6728abdcae119cd7cef205221", null ], + [ "DF_AUTHENTICATE_EV2", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45af55ab5230c8fdd31b7bec2cd7ec52e30", null ], + [ "DF_FORMAT_PICC", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a1d369616de1ff2df5f51411e460fde2d", null ], + [ "DF_READ_DATA", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a4ec9c49914e8ba1176d85a89325c3575", null ], + [ "DF_WRITE_DATA", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a1158156aa44ef5207c7f122897cf014b", null ], + [ "DF_GET_FILE_SETTINGS", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45a697b6f9e3b6e3a2f95bff70f51f69400", null ], + [ "DF_DELETE_TRANSACTION_MAC_FILE", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45ade6947c702a3f9449996d625b8fc8ffc", null ], + [ "DF_CREATE_TRANSACTION_MAC_FILE", "apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45ab2711d5bf5adc4e67b8584e1d25566da", null ] + ] ], + [ "SelectBy", "apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ad", [ + [ "FileId", "apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada225a9460e6eedf7af126fdc580345881", null ], + [ "ChildDf", "apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada7998394ef65789d8e3a93fb947d3c8a5", null ], + [ "EfUnderCurrentDf", "apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada127a046b88390d6cf9d13d8f74d04778", null ], + [ "ParentDf", "apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08adae0b5d60e5eea9e28524ae742a4a85b61", null ], + [ "DfName", "apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada6bf1a0b1d6bc92eae6416611613dbafe", null ], + [ "PathFromMf", "apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08adabf1f53068262ad6525671112c94790cb", null ], + [ "PathFromCurrentDf", "apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08adada937e05c426e8439cd1f4130d69562a", null ] + ] ], + [ "SelectOccurrence", "apdu_8hpp.html#a74836436e907c80c9a02040d912e6400", [ + [ "FirstOrOnly", "apdu_8hpp.html#a74836436e907c80c9a02040d912e6400a703aba6102ad8dd4829bc645f464c0b0", null ], + [ "Last", "apdu_8hpp.html#a74836436e907c80c9a02040d912e6400ad55b30607c2a9a2616347d6edb789f6b", null ], + [ "Next", "apdu_8hpp.html#a74836436e907c80c9a02040d912e6400a10ac3d04253ef7e1ddc73e6091c0cd55", null ], + [ "Previous", "apdu_8hpp.html#a74836436e907c80c9a02040d912e6400add1f775e443ff3b9a89270713580a51b", null ] + ] ], + [ "SelectResponse", "apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbf", [ + [ "FCI", "apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbfa74198f9e44085e24bba72b3ccac4c13a", null ], + [ "FCP", "apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbfaa7c815fafe60ae637d38216fa6300395", null ], + [ "FMD", "apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbfa4b25de86ef47d3b09525b1176978b34d", null ], + [ "None", "apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbfa6adf97f83acf6453d4a6a4b1070f3754", null ] + ] ], + [ "dump_tlv", "apdu_8hpp.html#aefdcb0a0692e4e97f13e6a5f7a140ade", null ], + [ "is_response_OK", "apdu_8hpp.html#a8661d1015977051ff244e69214a9f244", null ], + [ "is_response_OK", "apdu_8hpp.html#adba4a567d412579a8447c2da5425e935", null ], + [ "is_response_OK", "apdu_8hpp.html#a02f2cf412748d5964bb0034cb40dd622", null ], + [ "make_apdu_case1", "apdu_8hpp.html#a3f8d54d3187aa2aebd756f6da9523351", null ], + [ "make_apdu_case2", "apdu_8hpp.html#a4a2d632c8b477931e48b04663927ce01", null ], + [ "make_apdu_case3", "apdu_8hpp.html#aca08fb7d12f53387b2a9d8350e01499d", null ], + [ "make_apdu_case4", "apdu_8hpp.html#aa98f1a34a0201b9011bab4fe0c3af7ff", null ], + [ "make_apdu_command", "apdu_8hpp.html#ade33069f0d2d930a92d79591644b8ed8", null ], + [ "parse_tlv", "apdu_8hpp.html#a5f63415d23f1838b2cf7a294cad86ec1", null ], + [ "master_file_id", "apdu_8hpp.html#a78d50d5bfaabce84eeec859500b2422d", null ], + [ "RESPONSE_BYTES_STILL_AVAILABLE", "apdu_8hpp.html#a526ff7f8c3bf24f7a29439dfd8c94abf", null ], + [ "RESPONSE_OK", "apdu_8hpp.html#a1b669f6a49f7093762d3dad36c420b6a", null ], + [ "SUCCESSFULLY_1", "apdu_8hpp.html#a64594933a9df521c8ebaafa07ece39e8", null ], + [ "SUCCESSFULLY_2", "apdu_8hpp.html#a3758d358b5278fdb64b90cffcb4f0a64", null ], + [ "WRONG_LENGTH_LE", "apdu_8hpp.html#a47cfe093613fbd3f11fcf22156238da3", null ] +]; \ No newline at end of file diff --git a/apdu_8hpp_source.html b/apdu_8hpp_source.html new file mode 100644 index 0000000..f966d1f --- /dev/null +++ b/apdu_8hpp_source.html @@ -0,0 +1,349 @@ + + + + + + + +M5Unit-NFC: src/nfc/apdu/apdu.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
apdu.hpp
+
+
+Go to the documentation of this file.
1/*
+
2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
+
3 *
+
4 * SPDX-License-Identifier: MIT
+
5 */
+
10#ifndef M5_UNIT_UNIFIED_NFC_NFC_APDU_APDU_HPP
+
11#define M5_UNIT_UNIFIED_NFC_NFC_APDU_APDU_HPP
+
12#include <cstdint>
+
13#include <string>
+
14#include <vector>
+
15
+
16namespace m5 {
+
17namespace nfc {
+
22namespace apdu {
+
23
+
27constexpr uint16_t RESPONSE_OK{0x9000};
+
29constexpr uint16_t SUCCESSFULLY_1{0x6100};
+
31constexpr uint16_t SUCCESSFULLY_2{0x9F00};
+
32
+
33constexpr uint8_t RESPONSE_BYTES_STILL_AVAILABLE{0x61};
+
34constexpr uint8_t WRONG_LENGTH_LE{0x6C};
+
36
+
+
38inline bool is_response_OK(const uint16_t sw12)
+
39{
+
40 return sw12 == RESPONSE_OK || ((sw12 & 0xFF00) == SUCCESSFULLY_1) || ((sw12 & 0xFF00) == SUCCESSFULLY_2);
+
41}
+
+
42
+
+
44inline bool is_response_OK(const uint8_t sw[2])
+
45{
+
46 return is_response_OK((uint16_t)((sw[0] << 8) | sw[1]));
+
47}
+
+
+
49inline bool is_response_OK(const uint8_t sw1, const uint8_t sw2)
+
50{
+
51 return is_response_OK((uint16_t)((sw1 << 8) | sw2));
+
52}
+
+
53
+
+
58enum class INS : uint8_t {
+
59 // ISO/IEC 7816-4
+
60 SELECT_FILE = 0xA4,
+
61 CREATE_FILE = 0xE0,
+
62
+
63 READ_BINARY = 0xB0,
+
64 WRITE_BINARY = 0xD0,
+
65 UPDATE_BINARY = 0xD6,
+
66 ERASE_BINARY = 0x0E,
+
67
+
68 READ_RECORD = 0xB2,
+
69 WRITE_RECORD = 0xD2,
+
70 APPEND_RECORD = 0xE2,
+
71 UPDATE_RECORRD = 0xDC,
+
72
+
73 GET_RESPONSE = 0xC0,
+
74 GET_DATA = 0xCA,
+
75 PUT_DATA = 0xDA,
+
76
+
77 VERIFY = 0x20,
+
78
+
79 INTERNAL_AUTHENTICATE = 0x88,
+
80 EXTERNAL_AUTHENTICATE = 0x82,
+
81
+
82 GET_CHALLEMGE = 0x84,
+
83
+
84 // Not ISO/IEC 7816-4
+
85 LOCK_DF = 0x50,
+
86 UNLOCK_DF = 0x52,
+
87 UNLOCK_KEY = 0x54,
+
88 CHANGE_KEY = 0x32,
+
89 ERASE_ALL_RECORDS = 0x06,
+
90 GET_VERSION = 0x60,
+
91
+
92 // DESFire
+
93 DF_CREATE_APPLICATION = 0xCA,
+
94 DF_DELETE_APPLICATION = 0xDA,
+
95 DF_SELECT_APPLICATION = 0x5A,
+
96 DF_GET_APPLICATION_IDS = 0x6A,
+
97 DF_CREATE_STD_DATA_FILE = 0xCD,
+
98 DF_GET_FREE_MEMORY = 0x6E,
+
99 DF_GET_FILE_IDS = 0x6F,
+
100 DF_GET_ISO_FILE_IDS = 0x61,
+
101 DF_GET_KEY_SETTINGS = 0x45,
+
102 DF_SET_CONFIGURATION = 0x5C,
+
103 DF_CHANGE_FILE_SETTINGS = 0x5F,
+
104 DF_AUTHENTICATE = 0x0A,
+
105 DF_AUTHENTICATE_ISO = 0x1A,
+
106 DF_AUTHENTICATE_AES = 0xAA,
+
107 DF_AUTHENTICATE_EV2 = 0x71,
+
108 DF_FORMAT_PICC = 0xFC,
+
109 DF_READ_DATA = 0xBD,
+
110 DF_WRITE_DATA = 0x3D,
+
111 DF_GET_FILE_SETTINGS = 0xF5,
+
112 DF_DELETE_TRANSACTION_MAC_FILE = 0xDF,
+
113 DF_CREATE_TRANSACTION_MAC_FILE = 0xCE,
+
114};
+
+
116
+
+
122enum class SelectBy : uint8_t {
+
123 FileId = 0x00,
+
124 ChildDf = 0x01,
+
125 EfUnderCurrentDf = 0x02,
+
126 ParentDf = 0x03,
+
127 DfName = 0x04,
+
128 PathFromMf = 0x08,
+
129 PathFromCurrentDf = 0x09,
+
130};
+
+
131
+
+
137enum class SelectOccurrence : uint8_t {
+
138 FirstOrOnly = 0x00,
+
139 Last = 0x01,
+
140 Next = 0x02,
+
141 Previous = 0x03,
+
142};
+
+
143
+
+
148enum class SelectResponse : uint8_t {
+
149 FCI = 0x00,
+
150 FCP = 0x04,
+
151 FMD = 0x08,
+
152 None = 0x0C,
+
153};
+
+
154
+
155constexpr uint16_t master_file_id{0x3F00};
+
156
+
157inline bool need_select_file_le(const uint8_t param2)
+
158{
+
159 return (param2 & 0x0C) != 0x0C;
+
160}
+
161
+
+
166struct TLV {
+
167 uint32_t tag{};
+
168 uint32_t len{};
+
169 const uint8_t* v{};
+
170 uint8_t tag_len{};
+
171
+
172 inline bool is_constructed() const
+
173 {
+
174 return (tag & 0x20) != 0;
+
175 }
+
176 inline bool is_primitive() const
+
177 {
+
178 return !is_constructed();
+
179 }
+
180};
+
+
181
+
183std::vector<TLV> parse_tlv(const uint8_t* ptr, const uint32_t len);
+
185void dump_tlv(const std::vector<TLV>& tlvs, const uint8_t depth = 0);
+
186
+
198std::vector<uint8_t> make_apdu_command(const uint8_t cla, const uint8_t ins, const uint8_t param1 = 0x00,
+
199 const uint8_t param2 = 0x00, const uint8_t* data = nullptr,
+
200 const uint16_t data_len = 0, const uint16_t rx_len = 0);
+
201
+
+
203inline std::vector<uint8_t> make_apdu_case1(const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2)
+
204{
+
205 return make_apdu_command(cla, ins, p1, p2, nullptr, 0, 0);
+
206}
+
+
207
+
+
209inline std::vector<uint8_t> make_apdu_case2(const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2,
+
210 const uint16_t le)
+
211{
+
212 return make_apdu_command(cla, ins, p1, p2, nullptr, 0, le);
+
213}
+
+
214
+
+
216inline std::vector<uint8_t> make_apdu_case3(const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2,
+
217 const uint8_t* data, const uint16_t data_len)
+
218{
+
219 return make_apdu_command(cla, ins, p1, p2, data, data_len, 0);
+
220}
+
+
221
+
+
223inline std::vector<uint8_t> make_apdu_case4(const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2,
+
224 const uint8_t* data, const uint16_t data_len, const uint16_t le)
+
225{
+
226 return make_apdu_command(cla, ins, p1, p2, data, data_len, le);
+
227}
+
+
228
+
229} // namespace apdu
+
230} // namespace nfc
+
231} // namespace m5
+
232#endif
+
std::vector< uint8_t > make_apdu_command(const uint8_t cla, const uint8_t ins, const uint8_t param1, const uint8_t param2, const uint8_t *data, const uint16_t data_len, const uint16_t rx_len)
Make APDU command.
Definition apdu.cpp:22
+
SelectBy
Select control for SELECT_FILE.
Definition apdu.hpp:122
+
@ EfUnderCurrentDf
Select EF under current DF (FID in data)
+
@ FileId
Select MF/DF/EF by file ID.
+
@ DfName
Select by DF name (AID)
+
@ ChildDf
Select child DF (FID in data)
+
@ PathFromMf
Select by path from MF.
+
@ PathFromCurrentDf
Select by path from current DF.
+
@ ParentDf
Select parent DF.
+
constexpr uint16_t RESPONSE_OK
Command successfully executed (OK)
Definition apdu.hpp:27
+
constexpr uint16_t SUCCESSFULLY_2
Command successfully executed; xx bytes of data are available and can be requested using GET RESPON.
Definition apdu.hpp:31
+
std::vector< uint8_t > make_apdu_case1(const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2)
Make APDU case1 command [CLA | INS | P1 | P2].
Definition apdu.hpp:203
+
SelectResponse
Response for SELECT_FILE.
Definition apdu.hpp:148
+ + +
constexpr uint8_t WRONG_LENGTH_LE
Wrong length Le.
Definition apdu.hpp:34
+
std::vector< uint8_t > make_apdu_case2(const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2, const uint16_t le)
Make APDU case2 command [CLA | INS | P1 | P2 | Le].
Definition apdu.hpp:209
+
INS
APDU instruction code.
Definition apdu.hpp:58
+
constexpr uint8_t RESPONSE_BYTES_STILL_AVAILABLE
Response bytes still available.
Definition apdu.hpp:33
+
constexpr uint16_t SUCCESSFULLY_1
Command successfully executed; xx bytes of data are available and can be requested using GET RESPON.
Definition apdu.hpp:29
+
SelectOccurrence
Select occurrence for SELECT_FILE.
Definition apdu.hpp:137
+
@ Next
Select the next match.
+
@ FirstOrOnly
Select the first (or only) match.
+
@ Last
Select the last match.
+
@ Previous
Select the previous match.
+
constexpr uint16_t master_file_id
Master file ID.
Definition apdu.hpp:155
+
bool is_response_OK(const uint16_t sw12)
Is response successfully?
Definition apdu.hpp:38
+
std::vector< uint8_t > make_apdu_case4(const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2, const uint8_t *data, const uint16_t data_len, const uint16_t le)
Make APDU case4 command [CLA | INS | P1 | P2 | Lc | C-Data | Le].
Definition apdu.hpp:223
+
std::vector< uint8_t > make_apdu_case3(const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2, const uint8_t *data, const uint16_t data_len)
Make APDU case3 command [CLA | INS | P1 | P2 | Lc | C-Data].
Definition apdu.hpp:216
+
For APDU.
+
Top level namespace of M5stack.
+
NFC related definitions.
+
NFC-V definitions.
+
File Control Parameters.
Definition file_system.hpp:26
+
TLV element.
Definition apdu.hpp:166
+
uint32_t len
L (length)
Definition apdu.hpp:168
+
uint8_t tag_len
Tag length.
Definition apdu.hpp:170
+
uint32_t tag
T (Tag)
Definition apdu.hpp:167
+
+
+ + + + diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/bc_s.png differ diff --git a/bc_sd.png b/bc_sd.png new file mode 100644 index 0000000..31ca888 Binary files /dev/null and b/bc_sd.png differ diff --git a/classes.html b/classes.html new file mode 100644 index 0000000..37ff574 --- /dev/null +++ b/classes.html @@ -0,0 +1,156 @@ + + + + + + + +M5Unit-NFC: Class Index + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
A | B | C | D | E | F | I | L | N | P | R | S | T | U
+
+
+
A
+
AdapterST25R3916ForB (m5::nfc)
AdapterST25R3916ForF (m5::nfc)
AdapterST25R3916ForV (m5::nfc)
ATS (m5::nfc::a)
Attribute (m5::nfc::ndef)
AttributeBlock (m5::nfc::ndef::type3)
+
+
B
+
block_t (m5::nfc::f)
+
+
C
+
CapabilityContainer (m5::nfc::ndef::type2)
CapabilityContainer (m5::nfc::ndef::type4)
CapabilityContainer (m5::nfc::ndef::type5)
CapST25R3916 (m5::unit)
config_t (m5::nfc::isodep)
UnitST25R3916::config_t (m5::unit)
Crypto1 (m5::nfc::a::mifare::classic)
+
+
D
+
desfire_aid_t (m5::nfc::a::mifare::desfire)
DESFireFileSystem (m5::nfc::a::mifare::desfire)
+
+
E
+
EmulationLayerA (m5::nfc)
EmulationLayerF (m5::nfc)
Ev2Context (m5::nfc::a::mifare::desfire)
+
+
F
+
FCP (m5::nfc)
FileControlTLV (m5::nfc::ndef::type4)
FileRename (m5::nfc::a::mifare::desfire)
FileSettings (m5::nfc::a::mifare::desfire)
FileSystem (m5::nfc)
+
+
I
+
IsoDEP (m5::nfc::isodep)
+
+
L
+
ListenerST25R3916ForA (m5::nfc)
ListenerST25R3916ForF (m5::nfc)
+
+
N
+
NdefFormatOptions (m5::nfc::a::mifare::desfire)
NDEFLayer (m5::nfc::ndef)
NFCBFileSystem (m5::nfc)
NFCLayerA (m5::nfc)
NFCLayerB (m5::nfc)
NFCLayerF (m5::nfc)
NFCLayerInterface (m5::nfc)
NFCLayerV (m5::nfc)
+
+
P
+
PICC (m5::nfc::a)
PICC (m5::nfc::b)
PICC (m5::nfc::f)
PICC (m5::nfc::v)
PollerST25R3916ForA (m5::nfc)
+
+
R
+
Record (m5::nfc::ndef)
REG (m5::nfc::f)
RxInfo (m5::nfc::isodep)
+
+
S
+
SystemFile (m5::nfc::a::st25ta)
+
+
T
+
TLV (m5::nfc::apdu)
TLV (m5::nfc::ndef)
+
+
U
+
UnitST25R3916 (m5::unit)
+
+
+
+ + + + diff --git a/classm5_1_1nfc_1_1_emulation_layer_a-members.html b/classm5_1_1nfc_1_1_emulation_layer_a-members.html new file mode 100644 index 0000000..e3d1ecf --- /dev/null +++ b/classm5_1_1nfc_1_1_emulation_layer_a-members.html @@ -0,0 +1,128 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
m5::nfc::EmulationLayerA Member List
+
+
+ +

This is the complete list of members for m5::nfc::EmulationLayerA, including all inherited members.

+ + + + + + + + + + + + + + + +
_memory (defined in m5::nfc::EmulationLayerA)m5::nfc::EmulationLayerAprotected
_memory_size (defined in m5::nfc::EmulationLayerA)m5::nfc::EmulationLayerAprotected
begin(const m5::nfc::a::PICC &picc, uint8_t *ptr, const uint32_t size)m5::nfc::EmulationLayerA
emulatePICC() constm5::nfc::EmulationLayerAinline
EmulationLayerA(m5::unit::UnitST25R3916 &u)m5::nfc::EmulationLayerAexplicit
EmulationLayerA(m5::unit::CapST25R3916 &u)m5::nfc::EmulationLayerAexplicit
end()m5::nfc::EmulationLayerA
expiredTime() constm5::nfc::EmulationLayerAinline
receive_callback(const uint8_t *rx, const uint32_t rx_len) (defined in m5::nfc::EmulationLayerA)m5::nfc::EmulationLayerAvirtual
setExpiredTime(const uint32_t ms)m5::nfc::EmulationLayerAinline
State enum namem5::nfc::EmulationLayerA
state() constm5::nfc::EmulationLayerAinline
update()m5::nfc::EmulationLayerA
update_expired() (defined in m5::nfc::EmulationLayerA)m5::nfc::EmulationLayerAprotected
+
+ + + + diff --git a/classm5_1_1nfc_1_1_emulation_layer_a.html b/classm5_1_1nfc_1_1_emulation_layer_a.html new file mode 100644 index 0000000..4a0b113 --- /dev/null +++ b/classm5_1_1nfc_1_1_emulation_layer_a.html @@ -0,0 +1,198 @@ + + + + + + + +M5Unit-NFC: m5::nfc::EmulationLayerA Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
m5::nfc::EmulationLayerA Class Reference
+
+
+ +

Common interface layer for each chip of the NFC-A emulation. + More...

+ +

#include <emulation_layer_a.hpp>

+ + + + + +

+Public Types

enum class  State {
+  None +, Off +, Idle +, Ready +,
+  Active +, Halt +
+ }
 Emulation state for NFC-A.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

EmulationLayerA (m5::unit::UnitST25R3916 &u)
 Construct with UnitST25R3916 (I2C)
 
EmulationLayerA (m5::unit::CapST25R3916 &u)
 Construct with CapST25R3916 (SPI)
 
+State state () const
 Gets the current emulation state.
 
+const m5::nfc::a::PICCemulatePICC () const
 Gets the emulated PICC information.
 
+uint32_t expiredTime () const
 Gets the expiration time (ms)
 
+void setExpiredTime (const uint32_t ms)
 Sets the expiration time (ms)
 
+bool begin (const m5::nfc::a::PICC &picc, uint8_t *ptr, const uint32_t size)
 Begin NFC-A emulation.
 
+bool end ()
 End NFC-A emulation.
 
+void update ()
 Update emulation state machine.
 
+virtual State receive_callback (const uint8_t *rx, const uint32_t rx_len)
 
+ + + +

+Protected Member Functions

+void update_expired ()
 
+ + + + + +

+Protected Attributes

+uint8_t * _memory {}
 
+uint32_t _memory_size {}
 
+

Detailed Description

+

Common interface layer for each chip of the NFC-A emulation.

+
+
+ + + + diff --git a/classm5_1_1nfc_1_1_emulation_layer_a.js b/classm5_1_1nfc_1_1_emulation_layer_a.js new file mode 100644 index 0000000..d5f73fc --- /dev/null +++ b/classm5_1_1nfc_1_1_emulation_layer_a.js @@ -0,0 +1,20 @@ +var classm5_1_1nfc_1_1_emulation_layer_a = +[ + [ "State", "classm5_1_1nfc_1_1_emulation_layer_a.html#a714fb8378088e999ee8726f2431718cb", [ + [ "None", "classm5_1_1nfc_1_1_emulation_layer_a.html#a714fb8378088e999ee8726f2431718cba6adf97f83acf6453d4a6a4b1070f3754", null ], + [ "Off", "classm5_1_1nfc_1_1_emulation_layer_a.html#a714fb8378088e999ee8726f2431718cbad15305d7a4e34e02489c74a5ef542f36", null ], + [ "Idle", "classm5_1_1nfc_1_1_emulation_layer_a.html#a714fb8378088e999ee8726f2431718cbae599161956d626eda4cb0a5ffb85271c", null ], + [ "Ready", "classm5_1_1nfc_1_1_emulation_layer_a.html#a714fb8378088e999ee8726f2431718cbae7d31fc0602fb2ede144d18cdffd816b", null ], + [ "Active", "classm5_1_1nfc_1_1_emulation_layer_a.html#a714fb8378088e999ee8726f2431718cba4d3d769b812b6faa6b76e1a8abaece2d", null ], + [ "Halt", "classm5_1_1nfc_1_1_emulation_layer_a.html#a714fb8378088e999ee8726f2431718cba4558f7fa8f5356a88a53347ad89babde", null ] + ] ], + [ "EmulationLayerA", "classm5_1_1nfc_1_1_emulation_layer_a.html#a0a9a8fdc2afd980d8e069b5354866950", null ], + [ "EmulationLayerA", "classm5_1_1nfc_1_1_emulation_layer_a.html#ad7628497d7b17701284bea33282fc1ca", null ], + [ "begin", "classm5_1_1nfc_1_1_emulation_layer_a.html#a7bb388444ceae8784ebc6713af5c4651", null ], + [ "emulatePICC", "classm5_1_1nfc_1_1_emulation_layer_a.html#a28dc0f0938b70793e278be544e7a6713", null ], + [ "end", "classm5_1_1nfc_1_1_emulation_layer_a.html#a07691cfc18445903313a853d5e0d1fd1", null ], + [ "expiredTime", "classm5_1_1nfc_1_1_emulation_layer_a.html#ab6075f2492e9f9fd2b55fc087eca146d", null ], + [ "setExpiredTime", "classm5_1_1nfc_1_1_emulation_layer_a.html#a82370280351c601e7b6092e28132e3ef", null ], + [ "state", "classm5_1_1nfc_1_1_emulation_layer_a.html#ae825e954296b17714c73850a674e4461", null ], + [ "update", "classm5_1_1nfc_1_1_emulation_layer_a.html#adf2e24dfe90f26d56de0263ea6a2bbea", null ] +]; \ No newline at end of file diff --git a/classm5_1_1nfc_1_1_emulation_layer_f-members.html b/classm5_1_1nfc_1_1_emulation_layer_f-members.html new file mode 100644 index 0000000..b71ba7c --- /dev/null +++ b/classm5_1_1nfc_1_1_emulation_layer_f-members.html @@ -0,0 +1,128 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
m5::nfc::EmulationLayerF Member List
+
+
+ +

This is the complete list of members for m5::nfc::EmulationLayerF, including all inherited members.

+ + + + + + + + + + + + + + + +
_memory (defined in m5::nfc::EmulationLayerF)m5::nfc::EmulationLayerFprotected
_memory_size (defined in m5::nfc::EmulationLayerF)m5::nfc::EmulationLayerFprotected
begin(const m5::nfc::f::PICC &picc, uint8_t *ptr, const uint32_t size)m5::nfc::EmulationLayerF
emulatePICC() constm5::nfc::EmulationLayerFinline
EmulationLayerF(m5::unit::UnitST25R3916 &u)m5::nfc::EmulationLayerFexplicit
EmulationLayerF(m5::unit::CapST25R3916 &u)m5::nfc::EmulationLayerFexplicit
end()m5::nfc::EmulationLayerF
expiredTime() constm5::nfc::EmulationLayerFinline
receive_callback(const State s, const uint8_t *rx, const uint32_t rx_len) (defined in m5::nfc::EmulationLayerF)m5::nfc::EmulationLayerFvirtual
setExpiredTime(const uint32_t ms)m5::nfc::EmulationLayerFinline
State enum namem5::nfc::EmulationLayerF
state() constm5::nfc::EmulationLayerFinline
update()m5::nfc::EmulationLayerF
update_expired() (defined in m5::nfc::EmulationLayerF)m5::nfc::EmulationLayerFprotected
+
+ + + + diff --git a/classm5_1_1nfc_1_1_emulation_layer_f.html b/classm5_1_1nfc_1_1_emulation_layer_f.html new file mode 100644 index 0000000..4e5fed0 --- /dev/null +++ b/classm5_1_1nfc_1_1_emulation_layer_f.html @@ -0,0 +1,193 @@ + + + + + + + +M5Unit-NFC: m5::nfc::EmulationLayerF Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
m5::nfc::EmulationLayerF Class Reference
+
+
+ +

Common interface layer for each chip of the NFC-F emulation. + More...

+ +

#include <emulation_layer_f.hpp>

+ + + + + +

+Public Types

enum class  State { None +, Off +, Communicated +, Selected + }
 Emulation state for NFC-F.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

EmulationLayerF (m5::unit::UnitST25R3916 &u)
 Construct with UnitST25R3916 (I2C)
 
EmulationLayerF (m5::unit::CapST25R3916 &u)
 Construct with CapST25R3916 (SPI)
 
+State state () const
 Gets the current emulation state.
 
+const m5::nfc::f::PICCemulatePICC () const
 Gets the emulated PICC information.
 
+uint32_t expiredTime () const
 Gets the expiration time (ms)
 
+void setExpiredTime (const uint32_t ms)
 Sets the expiration time (ms)
 
+bool begin (const m5::nfc::f::PICC &picc, uint8_t *ptr, const uint32_t size)
 Begin NFC-F emulation.
 
+bool end ()
 End NFC-F emulation.
 
+void update ()
 Update emulation state machine.
 
+virtual State receive_callback (const State s, const uint8_t *rx, const uint32_t rx_len)
 
+ + + +

+Protected Member Functions

+void update_expired ()
 
+ + + + + +

+Protected Attributes

+uint8_t * _memory {}
 
+uint32_t _memory_size {}
 
+

Detailed Description

+

Common interface layer for each chip of the NFC-F emulation.

+
+
+ + + + diff --git a/classm5_1_1nfc_1_1_emulation_layer_f.js b/classm5_1_1nfc_1_1_emulation_layer_f.js new file mode 100644 index 0000000..cc433a6 --- /dev/null +++ b/classm5_1_1nfc_1_1_emulation_layer_f.js @@ -0,0 +1,18 @@ +var classm5_1_1nfc_1_1_emulation_layer_f = +[ + [ "State", "classm5_1_1nfc_1_1_emulation_layer_f.html#a7a1e6960bbca8aee87834ba027fa5890", [ + [ "None", "classm5_1_1nfc_1_1_emulation_layer_f.html#a7a1e6960bbca8aee87834ba027fa5890a6adf97f83acf6453d4a6a4b1070f3754", null ], + [ "Off", "classm5_1_1nfc_1_1_emulation_layer_f.html#a7a1e6960bbca8aee87834ba027fa5890ad15305d7a4e34e02489c74a5ef542f36", null ], + [ "Communicated", "classm5_1_1nfc_1_1_emulation_layer_f.html#a7a1e6960bbca8aee87834ba027fa5890a6de7c1da2f52fadb595bf50d3f2691c3", null ], + [ "Selected", "classm5_1_1nfc_1_1_emulation_layer_f.html#a7a1e6960bbca8aee87834ba027fa5890a91b442d385b54e1418d81adc34871053", null ] + ] ], + [ "EmulationLayerF", "classm5_1_1nfc_1_1_emulation_layer_f.html#a2628058a439c3138d0c78a8a43616d08", null ], + [ "EmulationLayerF", "classm5_1_1nfc_1_1_emulation_layer_f.html#acd32305a8dad49c1e78735e04acfd9e5", null ], + [ "begin", "classm5_1_1nfc_1_1_emulation_layer_f.html#ac1cbcb81905c6cbb6fa939f254486bf8", null ], + [ "emulatePICC", "classm5_1_1nfc_1_1_emulation_layer_f.html#a4982b0e08aad7ef968b7be3ae62a6d56", null ], + [ "end", "classm5_1_1nfc_1_1_emulation_layer_f.html#a945ed86f7503a178aa759bc89f1acaec", null ], + [ "expiredTime", "classm5_1_1nfc_1_1_emulation_layer_f.html#ac6e55ae14a26c808058d04af3b486672", null ], + [ "setExpiredTime", "classm5_1_1nfc_1_1_emulation_layer_f.html#a16832ef764ed5d2d4b9053e8e424df38", null ], + [ "state", "classm5_1_1nfc_1_1_emulation_layer_f.html#a1940d738cb0030cf5c4f6bc0a366a57c", null ], + [ "update", "classm5_1_1nfc_1_1_emulation_layer_f.html#ae11b35c780ce6c3432790f08a3384ad2", null ] +]; \ No newline at end of file diff --git a/classm5_1_1nfc_1_1_file_system-members.html b/classm5_1_1nfc_1_1_file_system-members.html new file mode 100644 index 0000000..78ed164 --- /dev/null +++ b/classm5_1_1nfc_1_1_file_system-members.html @@ -0,0 +1,135 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
m5::nfc::FileSystem Member List
+
+
+ +

This is the complete list of members for m5::nfc::FileSystem, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
_isoDEP (defined in m5::nfc::FileSystem)m5::nfc::FileSystemprotected
_last_select_fci (defined in m5::nfc::FileSystem)m5::nfc::FileSystemprotected
createFile(const uint8_t *fcp, const uint16_t fcp_len)m5::nfc::FileSystem
createFile(const FCP &fcp)m5::nfc::FileSystem
createFile(const uint16_t fid, const uint16_t file_size)m5::nfc::FileSystem
FileSystem(m5::nfc::isodep::IsoDEP &isoDEP) (defined in m5::nfc::FileSystem)m5::nfc::FileSysteminlineexplicit
lastSelectData() constm5::nfc::FileSysteminline
readBinary(std::vector< uint8_t > &out, const uint16_t offset, const uint16_t le)m5::nfc::FileSystem
selectByDfName(const uint8_t *aid, const uint8_t aid_len, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)m5::nfc::FileSystem
selectByFileId(const uint16_t fid, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)m5::nfc::FileSystem
selectByPath(const uint8_t *path, const uint8_t path_len, const bool from_mf=true, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)m5::nfc::FileSystem
selectDfNameAuto(const uint8_t *aid, const uint8_t aid_len, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)m5::nfc::FileSystem
selectFile(const m5::nfc::apdu::SelectBy by, const m5::nfc::apdu::SelectOccurrence occ, const m5::nfc::apdu::SelectResponse res, const uint8_t *param, const uint8_t param_len)m5::nfc::FileSystem
selectFileIdAuto(const uint16_t fid, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)m5::nfc::FileSystem
selectMasterFile()m5::nfc::FileSysteminline
selectParent(const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)m5::nfc::FileSystem
updateBinary(const uint16_t offset, const uint8_t *data, const uint16_t data_len)m5::nfc::FileSystem
verify(const uint8_t *password, const uint16_t pass_len, const uint8_t param2)m5::nfc::FileSystem
verifyGlobal(const uint8_t *password, const uint16_t pass_len)m5::nfc::FileSysteminline
verifySpecific(const uint8_t *password, const uint16_t pass_len)m5::nfc::FileSysteminline
~FileSystem()=default (defined in m5::nfc::FileSystem)m5::nfc::FileSystemvirtual
+
+ + + + diff --git a/classm5_1_1nfc_1_1_file_system.html b/classm5_1_1nfc_1_1_file_system.html new file mode 100644 index 0000000..0961f8f --- /dev/null +++ b/classm5_1_1nfc_1_1_file_system.html @@ -0,0 +1,812 @@ + + + + + + + +M5Unit-NFC: m5::nfc::FileSystem Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
m5::nfc::FileSystem Class Reference
+
+
+ +

ISO/IEC 7816-4 file system. + More...

+ +

#include <file_system.hpp>

+
+Inheritance diagram for m5::nfc::FileSystem:
+
+
+ + +m5::nfc::NFCBFileSystem +m5::nfc::a::mifare::desfire::DESFireFileSystem + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

FileSystem (m5::nfc::isodep::IsoDEP &isoDEP)
 
const std::vector< uint8_t > & lastSelectData () const
 Last SELECT response data (SW excluded)
 
ISO/IEC 7816-4 Standard commands
bool createFile (const uint8_t *fcp, const uint16_t fcp_len)
 CREATE FILE.
 
bool createFile (const FCP &fcp)
 CREATE FILE.
 
bool createFile (const uint16_t fid, const uint16_t file_size)
 CREATE FILE.
 
bool selectFile (const m5::nfc::apdu::SelectBy by, const m5::nfc::apdu::SelectOccurrence occ, const m5::nfc::apdu::SelectResponse res, const uint8_t *param, const uint8_t param_len)
 SELECT FILE (generic)
 
bool selectByFileId (const uint16_t fid, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
 SELECT by File ID with explicit response type.
 
bool selectFileIdAuto (const uint16_t fid, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
 SELECT by File ID with auto response fallback (None->FCI->FCP)
 
bool selectByDfName (const uint8_t *aid, const uint8_t aid_len, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
 SELECT by DF Name with explicit response type.
 
bool selectDfNameAuto (const uint8_t *aid, const uint8_t aid_len, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
 SELECT by DF Name with auto response fallback (FCI->None->FCP)
 
bool selectByPath (const uint8_t *path, const uint8_t path_len, const bool from_mf=true, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
 SELECT by path (MF or current DF)
 
bool selectParent (const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
 SELECT parent DF.
 
bool selectMasterFile ()
 SELECT MF (Master File)
 
bool verify (const uint8_t *password, const uint16_t pass_len, const uint8_t param2)
 VERIFY (generic)
 
bool verifyGlobal (const uint8_t *password, const uint16_t pass_len)
 VERIFY global reference data.
 
bool verifySpecific (const uint8_t *password, const uint16_t pass_len)
 VERIFY specific reference data.
 
bool readBinary (std::vector< uint8_t > &out, const uint16_t offset, const uint16_t le)
 READ BINARY.
 
bool updateBinary (const uint16_t offset, const uint8_t *data, const uint16_t data_len)
 UPDATE BINARY.
 
+ + + + + +

+Protected Attributes

+m5::nfc::isodep::IsoDEP_isoDEP
 
+std::vector< uint8_t > _last_select_fci {}
 
+

Detailed Description

+

ISO/IEC 7816-4 file system.

+

Member Function Documentation

+ +

◆ createFile() [1/3]

+ +
+
+ + + + + + + +
bool m5::nfc::FileSystem::createFile (const FCP & fcp)
+
+ +

CREATE FILE.

+
Parameters
+ + +
fcpFile control parameters
+
+
+
Returns
True if successful
+ +
+
+ +

◆ createFile() [2/3]

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::FileSystem::createFile (const uint16_t fid,
const uint16_t file_size )
+
+ +

CREATE FILE.

+
Parameters
+ + + +
fidFileID
file_sizeFile size
+
+
+
Returns
True if successful
+ +
+
+ +

◆ createFile() [3/3]

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::FileSystem::createFile (const uint8_t * fcp,
const uint16_t fcp_len )
+
+ +

CREATE FILE.

+
Parameters
+ + + +
fcpFile control parameters
fcp_lenfcp length
+
+
+
Returns
True if successful
+ +
+
+ +

◆ lastSelectData()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< uint8_t > & m5::nfc::FileSystem::lastSelectData () const
+
+inline
+
+ +

Last SELECT response data (SW excluded)

+
Returns
Response data
+ +
+
+ +

◆ readBinary()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::FileSystem::readBinary (std::vector< uint8_t > & out,
const uint16_t offset,
const uint16_t le )
+
+ +

READ BINARY.

+
Parameters
+ + + + +
[out]outOutput buffer
offsetFile offset
leExpected length (1..256 recommended)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ selectByDfName()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::FileSystem::selectByDfName (const uint8_t * aid,
const uint8_t aid_len,
const m5::nfc::apdu::SelectResponse res = m5::nfc::apdu::SelectResponse::FCI,
const m5::nfc::apdu::SelectOccurrence occ = m5::nfc::apdu::SelectOccurrence::FirstOrOnly )
+
+ +

SELECT by DF Name with explicit response type.

+
Parameters
+ + + + + +
aidDF name (AID)
aid_lenAID length
resResponse format
occSelection occurrence
+
+
+
Returns
True if successful
+ +
+
+ +

◆ selectByFileId()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::FileSystem::selectByFileId (const uint16_t fid,
const m5::nfc::apdu::SelectResponse res = m5::nfc::apdu::SelectResponse::FCI,
const m5::nfc::apdu::SelectOccurrence occ = m5::nfc::apdu::SelectOccurrence::FirstOrOnly )
+
+ +

SELECT by File ID with explicit response type.

+
Parameters
+ + + + +
fidFile ID
resResponse format
occSelection occurrence
+
+
+
Returns
True if successful
+ +
+
+ +

◆ selectByPath()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::FileSystem::selectByPath (const uint8_t * path,
const uint8_t path_len,
const bool from_mf = true,
const m5::nfc::apdu::SelectResponse res = m5::nfc::apdu::SelectResponse::FCI,
const m5::nfc::apdu::SelectOccurrence occ = m5::nfc::apdu::SelectOccurrence::FirstOrOnly )
+
+ +

SELECT by path (MF or current DF)

+
Parameters
+ + + + + + +
pathPath data
path_lenPath length
from_mfUse MF as origin if true
resResponse format
occSelection occurrence
+
+
+
Returns
True if successful
+ +
+
+ +

◆ selectDfNameAuto()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::FileSystem::selectDfNameAuto (const uint8_t * aid,
const uint8_t aid_len,
const m5::nfc::apdu::SelectOccurrence occ = m5::nfc::apdu::SelectOccurrence::FirstOrOnly )
+
+ +

SELECT by DF Name with auto response fallback (FCI->None->FCP)

+
Parameters
+ + + + +
aidDF name (AID)
aid_lenAID length
occSelection occurrence
+
+
+
Returns
True if successful
+ +
+
+ +

◆ selectFile()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::FileSystem::selectFile (const m5::nfc::apdu::SelectBy by,
const m5::nfc::apdu::SelectOccurrence occ,
const m5::nfc::apdu::SelectResponse res,
const uint8_t * param,
const uint8_t param_len )
+
+ +

SELECT FILE (generic)

+
Parameters
+ + + + + + +
bySelection method
occSelection occurrence
resResponse format
paramIdentifier data
param_lenIdentifier length
+
+
+
Returns
True if successful
+ +
+
+ +

◆ selectFileIdAuto()

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::FileSystem::selectFileIdAuto (const uint16_t fid,
const m5::nfc::apdu::SelectOccurrence occ = m5::nfc::apdu::SelectOccurrence::FirstOrOnly )
+
+ +

SELECT by File ID with auto response fallback (None->FCI->FCP)

+
Parameters
+ + + +
fidFile ID
occSelection occurrence
+
+
+
Returns
True if successful
+ +
+
+ +

◆ selectMasterFile()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::nfc::FileSystem::selectMasterFile ()
+
+inline
+
+ +

SELECT MF (Master File)

+
Returns
True if successful
+ +
+
+ +

◆ selectParent()

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::FileSystem::selectParent (const m5::nfc::apdu::SelectResponse res = m5::nfc::apdu::SelectResponse::FCI,
const m5::nfc::apdu::SelectOccurrence occ = m5::nfc::apdu::SelectOccurrence::FirstOrOnly )
+
+ +

SELECT parent DF.

+
Parameters
+ + + +
resResponse format
occSelection occurrence
+
+
+
Returns
True if successful
+ +
+
+ +

◆ updateBinary()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::FileSystem::updateBinary (const uint16_t offset,
const uint8_t * data,
const uint16_t data_len )
+
+ +

UPDATE BINARY.

+
Parameters
+ + + + +
offsetFile offset
dataData to write
data_lenLength to write
+
+
+
Returns
True if successful
+ +
+
+ +

◆ verify()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::FileSystem::verify (const uint8_t * password,
const uint16_t pass_len,
const uint8_t param2 )
+
+ +

VERIFY (generic)

+
Parameters
+ + + + +
passwordPassword data
pass_lenPassword length
param2P2 (reference data type)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ verifyGlobal()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
bool m5::nfc::FileSystem::verifyGlobal (const uint8_t * password,
const uint16_t pass_len )
+
+inline
+
+ +

VERIFY global reference data.

+
Parameters
+ + + +
passwordPassword data
pass_lenPassword length
+
+
+
Returns
True if successful
+ +
+
+ +

◆ verifySpecific()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
bool m5::nfc::FileSystem::verifySpecific (const uint8_t * password,
const uint16_t pass_len )
+
+inline
+
+ +

VERIFY specific reference data.

+
Parameters
+ + + +
passwordPassword data
pass_lenPassword length
+
+
+
Returns
True if successful
+ +
+
+
+
+ + + + diff --git a/classm5_1_1nfc_1_1_file_system.js b/classm5_1_1nfc_1_1_file_system.js new file mode 100644 index 0000000..d24340c --- /dev/null +++ b/classm5_1_1nfc_1_1_file_system.js @@ -0,0 +1,20 @@ +var classm5_1_1nfc_1_1_file_system = +[ + [ "createFile", "classm5_1_1nfc_1_1_file_system.html#ae7ffa364dd69d2dedca69716c8ece7d9", null ], + [ "createFile", "classm5_1_1nfc_1_1_file_system.html#aacf63bc6287f35f95469bf824b9748c4", null ], + [ "createFile", "classm5_1_1nfc_1_1_file_system.html#acb403719f85fc87ff2901b8e8f0a303e", null ], + [ "lastSelectData", "classm5_1_1nfc_1_1_file_system.html#a7d501a0770b5a34d349e5809b4f895f4", null ], + [ "readBinary", "classm5_1_1nfc_1_1_file_system.html#af8344fcc7e41b13312461afa8801fb24", null ], + [ "selectByDfName", "classm5_1_1nfc_1_1_file_system.html#ae89a1668d4bd55d89e06760ac5471db8", null ], + [ "selectByFileId", "classm5_1_1nfc_1_1_file_system.html#ac36340e28a4f58001fca8d8e277b3ff9", null ], + [ "selectByPath", "classm5_1_1nfc_1_1_file_system.html#ad9a976bf6364804939ccaf30beaab14b", null ], + [ "selectDfNameAuto", "classm5_1_1nfc_1_1_file_system.html#a5dcce8b2abc183d2397bae156ba3be15", null ], + [ "selectFile", "classm5_1_1nfc_1_1_file_system.html#ae60578d2b25f1a7c34773ff445859cc5", null ], + [ "selectFileIdAuto", "classm5_1_1nfc_1_1_file_system.html#a0503db312968888ab64f023916a7c682", null ], + [ "selectMasterFile", "classm5_1_1nfc_1_1_file_system.html#a6abdc8aa28226e0bd5d908aaa7dcc8e1", null ], + [ "selectParent", "classm5_1_1nfc_1_1_file_system.html#ac79680652b300a039327a87c48162c56", null ], + [ "updateBinary", "classm5_1_1nfc_1_1_file_system.html#a8f2444c246a4483c633feb0831b1221a", null ], + [ "verify", "classm5_1_1nfc_1_1_file_system.html#aade1aedc4b5cf2f31953c6f8f978503e", null ], + [ "verifyGlobal", "classm5_1_1nfc_1_1_file_system.html#acd43241f62d9deae34791dcad13bce00", null ], + [ "verifySpecific", "classm5_1_1nfc_1_1_file_system.html#a4a12bd685852b6fd2619b01fe52710aa", null ] +]; \ No newline at end of file diff --git a/classm5_1_1nfc_1_1_file_system.png b/classm5_1_1nfc_1_1_file_system.png new file mode 100644 index 0000000..3960ee1 Binary files /dev/null and b/classm5_1_1nfc_1_1_file_system.png differ diff --git a/classm5_1_1nfc_1_1_n_f_c_b_file_system-members.html b/classm5_1_1nfc_1_1_n_f_c_b_file_system-members.html new file mode 100644 index 0000000..6b43692 --- /dev/null +++ b/classm5_1_1nfc_1_1_n_f_c_b_file_system-members.html @@ -0,0 +1,136 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
m5::nfc::NFCBFileSystem Member List
+
+
+ +

This is the complete list of members for m5::nfc::NFCBFileSystem, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
_isoDEP (defined in m5::nfc::FileSystem)m5::nfc::FileSystemprotected
_last_select_fci (defined in m5::nfc::FileSystem)m5::nfc::FileSystemprotected
createFile(const uint8_t *fcp, const uint16_t fcp_len)m5::nfc::FileSystem
createFile(const FCP &fcp)m5::nfc::FileSystem
createFile(const uint16_t fid, const uint16_t file_size)m5::nfc::FileSystem
FileSystem(m5::nfc::isodep::IsoDEP &isoDEP) (defined in m5::nfc::FileSystem)m5::nfc::FileSysteminlineexplicit
lastSelectData() constm5::nfc::FileSysteminline
NFCBFileSystem(m5::nfc::NFCLayerB &layer) (defined in m5::nfc::NFCBFileSystem)m5::nfc::NFCBFileSystemexplicit
readBinary(std::vector< uint8_t > &out, const uint16_t offset, const uint16_t le)m5::nfc::FileSystem
selectByDfName(const uint8_t *aid, const uint8_t aid_len, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)m5::nfc::FileSystem
selectByFileId(const uint16_t fid, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)m5::nfc::FileSystem
selectByPath(const uint8_t *path, const uint8_t path_len, const bool from_mf=true, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)m5::nfc::FileSystem
selectDfNameAuto(const uint8_t *aid, const uint8_t aid_len, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)m5::nfc::FileSystem
selectFile(const m5::nfc::apdu::SelectBy by, const m5::nfc::apdu::SelectOccurrence occ, const m5::nfc::apdu::SelectResponse res, const uint8_t *param, const uint8_t param_len)m5::nfc::FileSystem
selectFileIdAuto(const uint16_t fid, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)m5::nfc::FileSystem
selectMasterFile()m5::nfc::FileSysteminline
selectParent(const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)m5::nfc::FileSystem
updateBinary(const uint16_t offset, const uint8_t *data, const uint16_t data_len)m5::nfc::FileSystem
verify(const uint8_t *password, const uint16_t pass_len, const uint8_t param2)m5::nfc::FileSystem
verifyGlobal(const uint8_t *password, const uint16_t pass_len)m5::nfc::FileSysteminline
verifySpecific(const uint8_t *password, const uint16_t pass_len)m5::nfc::FileSysteminline
~FileSystem()=default (defined in m5::nfc::FileSystem)m5::nfc::FileSystemvirtual
+
+ + + + diff --git a/classm5_1_1nfc_1_1_n_f_c_b_file_system.html b/classm5_1_1nfc_1_1_n_f_c_b_file_system.html new file mode 100644 index 0000000..fd6dc98 --- /dev/null +++ b/classm5_1_1nfc_1_1_n_f_c_b_file_system.html @@ -0,0 +1,203 @@ + + + + + + + +M5Unit-NFC: m5::nfc::NFCBFileSystem Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
m5::nfc::NFCBFileSystem Class Reference
+
+
+ +

File system base using isoDEP for NFC-B. + More...

+ +

#include <nfc_b_file_system.hpp>

+
+Inheritance diagram for m5::nfc::NFCBFileSystem:
+
+
+ + +m5::nfc::FileSystem + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

NFCBFileSystem (m5::nfc::NFCLayerB &layer)
 
- Public Member Functions inherited from m5::nfc::FileSystem
FileSystem (m5::nfc::isodep::IsoDEP &isoDEP)
 
const std::vector< uint8_t > & lastSelectData () const
 Last SELECT response data (SW excluded)
 
bool createFile (const uint8_t *fcp, const uint16_t fcp_len)
 CREATE FILE.
 
bool createFile (const FCP &fcp)
 CREATE FILE.
 
bool createFile (const uint16_t fid, const uint16_t file_size)
 CREATE FILE.
 
bool selectFile (const m5::nfc::apdu::SelectBy by, const m5::nfc::apdu::SelectOccurrence occ, const m5::nfc::apdu::SelectResponse res, const uint8_t *param, const uint8_t param_len)
 SELECT FILE (generic)
 
bool selectByFileId (const uint16_t fid, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
 SELECT by File ID with explicit response type.
 
bool selectFileIdAuto (const uint16_t fid, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
 SELECT by File ID with auto response fallback (None->FCI->FCP)
 
bool selectByDfName (const uint8_t *aid, const uint8_t aid_len, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
 SELECT by DF Name with explicit response type.
 
bool selectDfNameAuto (const uint8_t *aid, const uint8_t aid_len, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
 SELECT by DF Name with auto response fallback (FCI->None->FCP)
 
bool selectByPath (const uint8_t *path, const uint8_t path_len, const bool from_mf=true, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
 SELECT by path (MF or current DF)
 
bool selectParent (const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
 SELECT parent DF.
 
bool selectMasterFile ()
 SELECT MF (Master File)
 
bool verify (const uint8_t *password, const uint16_t pass_len, const uint8_t param2)
 VERIFY (generic)
 
bool verifyGlobal (const uint8_t *password, const uint16_t pass_len)
 VERIFY global reference data.
 
bool verifySpecific (const uint8_t *password, const uint16_t pass_len)
 VERIFY specific reference data.
 
bool readBinary (std::vector< uint8_t > &out, const uint16_t offset, const uint16_t le)
 READ BINARY.
 
bool updateBinary (const uint16_t offset, const uint8_t *data, const uint16_t data_len)
 UPDATE BINARY.
 
+ + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from m5::nfc::FileSystem
+m5::nfc::isodep::IsoDEP_isoDEP
 
+std::vector< uint8_t > _last_select_fci {}
 
+

Detailed Description

+

File system base using isoDEP for NFC-B.

+
+
+ + + + diff --git a/classm5_1_1nfc_1_1_n_f_c_b_file_system.png b/classm5_1_1nfc_1_1_n_f_c_b_file_system.png new file mode 100644 index 0000000..60427fc Binary files /dev/null and b/classm5_1_1nfc_1_1_n_f_c_b_file_system.png differ diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_a-members.html b/classm5_1_1nfc_1_1_n_f_c_layer_a-members.html new file mode 100644 index 0000000..9307bdf --- /dev/null +++ b/classm5_1_1nfc_1_1_n_f_c_layer_a-members.html @@ -0,0 +1,215 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
m5::nfc::NFCLayerA Member List
+
+
+ +

This is the complete list of members for m5::nfc::NFCLayerA, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activePICC (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
_isoDEP (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
_ndef (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
activate(const m5::nfc::a::PICC &picc, const bool force_rats=false)m5::nfc::NFCLayerA
activatedPICC() constm5::nfc::NFCLayerAinline
deactivate()m5::nfc::NFCLayerA
detect(m5::nfc::a::PICC &picc, const uint32_t timeout_ms=100U)m5::nfc::NFCLayerA
detect(std::vector< m5::nfc::a::PICC > &piccs, const uint32_t timeout_ms=1000U)m5::nfc::NFCLayerA
dump(const m5::nfc::a::mifare::classic::Key &mkey=m5::nfc::a::mifare::classic::DEFAULT_KEY)m5::nfc::NFCLayerA
dump(const uint8_t block)m5::nfc::NFCLayerA
dump_desfire() (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
dump_desfire_light() (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
dump_mifare_plus_sl3(const m5::nfc::a::mifare::plus::AESKey &key) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
dump_page(const uint8_t page, const uint16_t maxPage) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
dump_page_structure(const uint16_t maxPage) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
dump_sector(const uint8_t sector) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
dump_sector_mifare_plus_sl3(const uint8_t sector) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
dump_sector_structure(const m5::nfc::a::PICC &picc, const m5::nfc::a::mifare::classic::Key &key) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
dump_st25ta() (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
first_user_block() const overridem5::nfc::NFCLayerAinlineprotectedvirtual
identify(m5::nfc::a::PICC &picc)m5::nfc::NFCLayerA
identify_picc(m5::nfc::a::PICC &picc) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
identify_picc_st25ta() (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
identify_plus_sl03() (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
isActive(const m5::nfc::a::PICC &picc) constm5::nfc::NFCLayerAinline
isoDEP() overridem5::nfc::NFCLayerAinlinevirtual
last_user_block() const overridem5::nfc::NFCLayerAinlineprotectedvirtual
maximum_fifo_depth() const overridem5::nfc::NFCLayerAvirtual
maximum_read_blocks() constm5::nfc::NFCLayerInterfaceinlinevirtual
maximum_write_blocks() constm5::nfc::NFCLayerInterfaceinlinevirtual
mifare_classic_value_block(const m5::nfc::a::Command cmd, const uint8_t block, const uint32_t arg=0) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
mifare_get_version_L3(uint8_t ver[8]) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
mifare_get_version_L4_raw(uint8_t *ver, uint16_t &ver_len) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
mifare_get_version_L4_wrapped(uint8_t *ver, uint16_t &ver_len) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
mifare_plus_authenticateAES(const uint16_t key_no, const m5::nfc::a::mifare::plus::AESKey &key) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
mifare_plus_authenticateAES_L3(const uint16_t key_no, const m5::nfc::a::mifare::plus::AESKey &key) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
mifare_plus_read_mac_l4(const uint16_t block, const uint8_t count, std::vector< uint8_t > &out, const bool plain) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
mifare_plus_read_plain_mac(const uint16_t block, const uint8_t count, std::vector< uint8_t > &out) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
mifare_plus_read_plain_nomac(const uint16_t block, const uint8_t count, std::vector< uint8_t > &out) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
mifare_plus_write_mac_l4(const uint16_t block, const uint8_t *data, const uint16_t data_len, const bool plain) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
mifare_ultralightC_authenticate1(uint8_t ek[8]) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
mifare_ultralightC_authenticate2(uint8_t rx_ek[8], const uint8_t tx_ek[16]) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
mifareClassicAuthenticateA(const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)m5::nfc::NFCLayerA
mifareClassicAuthenticateB(const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)m5::nfc::NFCLayerA
mifareClassicDecrementValueBlock(const uint8_t block, const uint32_t delta, const bool transfer=true)m5::nfc::NFCLayerA
mifareClassicIncrementValueBlock(const uint8_t block, const uint32_t delta, const bool transfer=true)m5::nfc::NFCLayerA
mifareClassicIsValueBlock(bool &is_value_block, const uint8_t block)m5::nfc::NFCLayerA
mifareClassicReadAccessCondition(uint8_t &c123, const uint8_t block)m5::nfc::NFCLayerA
mifareClassicReadValueBlock(int32_t &value, const uint8_t block)m5::nfc::NFCLayerA
mifareClassicRestoreValueBlock(const uint8_t block)m5::nfc::NFCLayerA
mifareClassicTransferValueBlock(const uint8_t block)m5::nfc::NFCLayerA
mifareClassicWriteAccessCondition(const uint8_t block, const uint8_t c123, const m5::nfc::a::mifare::classic::Key &akey, const m5::nfc::a::mifare::classic::Key &bkey)m5::nfc::NFCLayerA
mifareClassicWriteValueBlock(const uint8_t block, const int32_t value)m5::nfc::NFCLayerA
mifarePlusUpgradeSecurityLevel1(const m5::nfc::a::mifare::plus::AESKey &card_config_key=m5::nfc::a::mifare::plus::DEFAULT_KEY, const m5::nfc::a::mifare::plus::AESKey &card_master_key=m5::nfc::a::mifare::plus::DEFAULT_KEY, const m5::nfc::a::mifare::plus::AESKey &l2_switch_key=m5::nfc::a::mifare::plus::DEFAULT_KEY, const m5::nfc::a::mifare::plus::AESKey &l3_switch_key=m5::nfc::a::mifare::plus::DEFAULT_KEY, const m5::nfc::a::mifare::plus::AESKey &aes_sector_key=m5::nfc::a::mifare::plus::DEFAULT_FF_KEY, const m5::nfc::a::mifare::classic::Key &key_a=m5::nfc::a::mifare::classic::DEFAULT_KEY, const m5::nfc::a::mifare::classic::Key &key_b=m5::nfc::a::mifare::classic::DEFAULT_KEY)m5::nfc::NFCLayerA
mifarePlusUpgradeSecurityLevel2(const m5::nfc::a::mifare::plus::AESKey &sl2_switch_key=m5::nfc::a::mifare::plus::DEFAULT_KEY)m5::nfc::NFCLayerA
mifarePlusUpgradeSecurityLevel3(const m5::nfc::a::mifare::plus::AESKey &l3_switch_key=m5::nfc::a::mifare::plus::DEFAULT_KEY)m5::nfc::NFCLayerA
mifareUltralightCAuthenticate(const uint8_t key[16])m5::nfc::NFCLayerA
mifareUltralightChangeFormatToNDEF()m5::nfc::NFCLayerA
ndefIsValidFormat(bool &valid)m5::nfc::NFCLayerA
ndefPrepareDesfire(const uint32_t max_ndef_size)m5::nfc::NFCLayerA
ndefPrepareDesfireLight()m5::nfc::NFCLayerA
ndefRead(m5::nfc::ndef::TLV &msg)m5::nfc::NFCLayerA
ndefRead(std::vector< m5::nfc::ndef::TLV > &tlvs, const m5::nfc::ndef::TagBits tagBits=m5::nfc::ndef::tagBitsAll)m5::nfc::NFCLayerA
ndefWrite(const m5::nfc::ndef::TLV &msg)m5::nfc::NFCLayerA
ndefWrite(const std::vector< m5::nfc::ndef::TLV > &tlvs)m5::nfc::NFCLayerA
nfca_deselect() (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
nfca_request_ats(m5::nfc::a::ATS &ats, const uint8_t fsdi=5, const uint8_t cid=0) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
NFCLayerA(m5::unit::UnitMFRC522 &u) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAexplicit
NFCLayerA(m5::unit::UnitWS1850S &u) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAexplicit
NFCLayerA(m5::unit::UnitST25R3916 &u) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAexplicit
NFCLayerA(m5::unit::CapST25R3916 &u) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAexplicit
ntag_read_page(uint8_t *rx, uint16_t &rx_len, const uint8_t spage, const uint8_t epage) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
ntag_write_page(const uint8_t page, const uint8_t tx[4]) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
push_back_picc(std::vector< m5::nfc::a::PICC > &v, const m5::nfc::a::PICC &picc) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotectedstatic
reactivate(const m5::nfc::a::PICC &picc, const bool force_rats=false)m5::nfc::NFCLayerA
reactivate()m5::nfc::NFCLayerAinline
read(uint8_t *rx, uint16_t &rx_len, const uint8_t saddr, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)m5::nfc::NFCLayerA
read(uint8_t *rx, uint16_t &rx_len, const uint8_t saddr, const m5::nfc::a::mifare::plus::AESKey &key)m5::nfc::NFCLayerA
read(uint8_t *rx, uint16_t &rx_len, const uint16_t saddr) overridem5::nfc::NFCLayerAprotectedvirtual
read16(uint8_t rx[16], const uint8_t addr)m5::nfc::NFCLayerA
read4(uint8_t rx[4], const uint8_t addr)m5::nfc::NFCLayerA
read_using_fast(uint8_t *rx, uint16_t &rx_len, const uint8_t saddr) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
read_using_read16(uint8_t *rx, uint16_t &rx_len, const uint8_t saddr, const m5::nfc::a::mifare::classic::Key &key) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
receive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)m5::nfc::NFCLayerInterfaceinlinevirtual
request(uint16_t &atqa)m5::nfc::NFCLayerA
select(m5::nfc::a::PICC &picc)m5::nfc::NFCLayerA
supportsFilesystem() const overridem5::nfc::NFCLayerAvirtual
supportsNFCTag() const overridem5::nfc::NFCLayerAvirtual
transceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms) overridem5::nfc::NFCLayerAvirtual
transmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::nfc::NFCLayerInterfaceinlinevirtual
unit_size_read() const overridem5::nfc::NFCLayerAinlineprotectedvirtual
unit_size_write() const overridem5::nfc::NFCLayerAinlineprotectedvirtual
user_area_size() constm5::nfc::NFCLayerAinlineprotectedvirtual
wakeup(uint16_t &atqa)m5::nfc::NFCLayerA
write(const uint8_t saddr, const uint8_t *tx, const uint16_t tx_len, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)m5::nfc::NFCLayerA
write(const uint8_t addr, const uint8_t *tx, const uint16_t tx_len, const m5::nfc::a::mifare::plus::AESKey &key)m5::nfc::NFCLayerA
write(const uint16_t saddr, const uint8_t *tx, const uint16_t tx_len) overridem5::nfc::NFCLayerAprotectedvirtual
write16(const uint8_t addr, const uint8_t *tx, const uint16_t tx_len, const bool safety=true)m5::nfc::NFCLayerA
write4(const uint8_t addr, const uint8_t *tx, const uint16_t tx_len, const bool safety=true)m5::nfc::NFCLayerA
write_using_write16(const uint8_t addr, const uint8_t *tx, const uint16_t tx_len, const m5::nfc::a::mifare::classic::Key &key) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
write_using_write4(const uint8_t addr, const uint8_t *tx, const uint16_t tx_len) (defined in m5::nfc::NFCLayerA)m5::nfc::NFCLayerAprotected
+
+ + + + diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_a.html b/classm5_1_1nfc_1_1_n_f_c_layer_a.html new file mode 100644 index 0000000..23ade61 --- /dev/null +++ b/classm5_1_1nfc_1_1_n_f_c_layer_a.html @@ -0,0 +1,2369 @@ + + + + + + + +M5Unit-NFC: m5::nfc::NFCLayerA Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
m5::nfc::NFCLayerA Class Reference
+
+
+ +

Common interface layer for each chip of the NFC-A reader. + More...

+ +

#include <nfc_layer_a.hpp>

+
+Inheritance diagram for m5::nfc::NFCLayerA:
+
+
+ + +m5::nfc::NFCLayerInterface + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

NFCLayerA (m5::unit::UnitMFRC522 &u)
 
NFCLayerA (m5::unit::UnitWS1850S &u)
 
NFCLayerA (m5::unit::UnitST25R3916 &u)
 
NFCLayerA (m5::unit::CapST25R3916 &u)
 
bool isActive (const m5::nfc::a::PICC &picc) const
 Is the specified PICC currently active?
 
const m5::nfc::a::PICCactivatedPICC () const
 Retrieve the currently activated PICC.
 
override
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 (RF command)
 
virtual m5::nfc::NFCForumTag supportsNFCTag () const override
 activePICC's NDEF type
 
virtual file_system_feature_t supportsFilesystem () const override
 activePICC's File system
 
virtual m5::nfc::isodep::IsoDEPisoDEP () override
 ISO-DEP interface (nullptr if not supported)
 
virtual uint16_t maximum_fifo_depth () const override
 Maximum FIFO depth.
 
Detection and activation
bool request (uint16_t &atqa)
 Send REQA to discover a PICC in IDLE.
 
bool wakeup (uint16_t &atqa)
 Send WUPA to wake a PICC from IDLE or HALT.
 
bool detect (m5::nfc::a::PICC &picc, const uint32_t timeout_ms=100U)
 Detect single idle PICC.
 
bool detect (std::vector< m5::nfc::a::PICC > &piccs, const uint32_t timeout_ms=1000U)
 Detect idle PICCs.
 
bool select (m5::nfc::a::PICC &picc)
 Select a PICC (anti-collision + SELECT cascade to ACTIVE)
 
bool activate (const m5::nfc::a::PICC &picc, const bool force_rats=false)
 Activate a specific PICC (anti-collision against the given PICC)
 
bool reactivate (const m5::nfc::a::PICC &picc, const bool force_rats=false)
 Wake and activate a specific PICC by PICC.
 
bool reactivate ()
 Reactivate the previously selected PICC.
 
For activated PICC
bool deactivate ()
 Send HLTA to the currently selected PICC (deactivate)
 
bool identify (m5::nfc::a::PICC &picc)
 Identify the specified PICC type.
 
bool read4 (uint8_t rx[4], const uint8_t addr)
 Read the 1 page.
 
bool read16 (uint8_t rx[16], const uint8_t addr)
 Read the 1 block / 4 page (16 bytes)
 
bool read (uint8_t *rx, uint16_t &rx_len, const uint8_t saddr, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
 Read any bytes from user area.
 
bool read (uint8_t *rx, uint16_t &rx_len, const uint8_t saddr, const m5::nfc::a::mifare::plus::AESKey &key)
 Read any bytes from user area (MIFARE Plus SL3)
 
bool write4 (const uint8_t addr, const uint8_t *tx, const uint16_t tx_len, const bool safety=true)
 Write the 1 page (4 bytes)
 
bool write16 (const uint8_t addr, const uint8_t *tx, const uint16_t tx_len, const bool safety=true)
 Write the 1 block / 4 page (16 bytes)
 
bool write (const uint8_t saddr, const uint8_t *tx, const uint16_t tx_len, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
 Write any bytes to user area.
 
bool write (const uint8_t addr, const uint8_t *tx, const uint16_t tx_len, const m5::nfc::a::mifare::plus::AESKey &key)
 Write any bytes to user area (MIFARE Plus SL3)
 
bool dump (const m5::nfc::a::mifare::classic::Key &mkey=m5::nfc::a::mifare::classic::DEFAULT_KEY)
 Dump all blocks/files.
 
bool dump (const uint8_t block)
 Dump 1 block.
 
For MIFARE classic
Note
For activated PICC
+
bool mifareClassicAuthenticateA (const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
 Authentication by KeyA for MIFARE classic.
 
bool mifareClassicAuthenticateB (const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
 Authentication by KeyB for MIFARE classic.
 
bool mifareClassicReadAccessCondition (uint8_t &c123, const uint8_t block)
 Read the specific block access conditions.
 
bool mifareClassicWriteAccessCondition (const uint8_t block, const uint8_t c123, const m5::nfc::a::mifare::classic::Key &akey, const m5::nfc::a::mifare::classic::Key &bkey)
 Write the specific block access conditions.
 
bool mifareClassicIsValueBlock (bool &is_value_block, const uint8_t block)
 Is specific block the value block?
 
bool mifareClassicReadValueBlock (int32_t &value, const uint8_t block)
 Read the specific block as the value block.
 
bool mifareClassicWriteValueBlock (const uint8_t block, const int32_t value)
 Write the specific block as the value block.
 
bool mifareClassicDecrementValueBlock (const uint8_t block, const uint32_t delta, const bool transfer=true)
 Decrement value of the value block.
 
bool mifareClassicIncrementValueBlock (const uint8_t block, const uint32_t delta, const bool transfer=true)
 Increment value of the value block.
 
bool mifareClassicTransferValueBlock (const uint8_t block)
 Transfer inner buffer value to block.
 
bool mifareClassicRestoreValueBlock (const uint8_t block)
 Restore block value to inner buffer.
 
For MIFARE ultralight
Note
For activated PICC
+
bool mifareUltralightChangeFormatToNDEF ()
 Write change to NFC Type-2 (NDEF) format for MIFARE Ultralight/C.
 
For MIFARE ultralightC
Note
For activated PICC
+
+bool mifareUltralightCAuthenticate (const uint8_t key[16])
 Authentication for MIFARE UltralightC.
 
For MIFARE Plus
Note
For activated PICC
+
bool mifarePlusUpgradeSecurityLevel1 (const m5::nfc::a::mifare::plus::AESKey &card_config_key=m5::nfc::a::mifare::plus::DEFAULT_KEY, const m5::nfc::a::mifare::plus::AESKey &card_master_key=m5::nfc::a::mifare::plus::DEFAULT_KEY, const m5::nfc::a::mifare::plus::AESKey &l2_switch_key=m5::nfc::a::mifare::plus::DEFAULT_KEY, const m5::nfc::a::mifare::plus::AESKey &l3_switch_key=m5::nfc::a::mifare::plus::DEFAULT_KEY, const m5::nfc::a::mifare::plus::AESKey &aes_sector_key=m5::nfc::a::mifare::plus::DEFAULT_FF_KEY, const m5::nfc::a::mifare::classic::Key &key_a=m5::nfc::a::mifare::classic::DEFAULT_KEY, const m5::nfc::a::mifare::classic::Key &key_b=m5::nfc::a::mifare::classic::DEFAULT_KEY)
 Upgrade security level to SL1 (Classic compatibility mode)
 
bool mifarePlusUpgradeSecurityLevel2 (const m5::nfc::a::mifare::plus::AESKey &sl2_switch_key=m5::nfc::a::mifare::plus::DEFAULT_KEY)
 Upgrade security level to SL2 (AES over CRYPTO1)
 
bool mifarePlusUpgradeSecurityLevel3 (const m5::nfc::a::mifare::plus::AESKey &l3_switch_key=m5::nfc::a::mifare::plus::DEFAULT_KEY)
 Upgrade security level to SL3 (AES)
 
For NDEF
Note
For activated PICC
+
bool ndefIsValidFormat (bool &valid)
 Is the PICC data in NDEF format?
 
bool ndefPrepareDesfireLight ()
 Prepare NDEF files on MIFARE DESFire Light.
 
bool ndefPrepareDesfire (const uint32_t max_ndef_size)
 Prepare NDEF files on MIFARE DESFire (EV1/EV2/EV3)
 
bool ndefRead (m5::nfc::ndef::TLV &msg)
 Read NDEF Message TLV.
 
bool ndefRead (std::vector< m5::nfc::ndef::TLV > &tlvs, const m5::nfc::ndef::TagBits tagBits=m5::nfc::ndef::tagBitsAll)
 Read any NDEF TLV.
 
bool ndefWrite (const m5::nfc::ndef::TLV &msg)
 Write NDEF message.
 
bool ndefWrite (const std::vector< m5::nfc::ndef::TLV > &tlvs)
 Write any NDEF Messages TLV.
 
- Public Member Functions inherited from m5::nfc::NFCLayerInterface
virtual bool transmit (const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transmit only.
 
virtual bool receive (uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
 Receive only.
 
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

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
 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.
 
+bool identify_picc (m5::nfc::a::PICC &picc)
 
+m5::nfc::a::Type identify_picc_st25ta ()
 
+uint8_t identify_plus_sl03 ()
 
+bool read_using_fast (uint8_t *rx, uint16_t &rx_len, const uint8_t saddr)
 
+bool read_using_read16 (uint8_t *rx, uint16_t &rx_len, const uint8_t saddr, const m5::nfc::a::mifare::classic::Key &key)
 
+bool write_using_write4 (const uint8_t addr, const uint8_t *tx, const uint16_t tx_len)
 
+bool write_using_write16 (const uint8_t addr, const uint8_t *tx, const uint16_t tx_len, const m5::nfc::a::mifare::classic::Key &key)
 
+bool nfca_request_ats (m5::nfc::a::ATS &ats, const uint8_t fsdi=5, const uint8_t cid=0)
 
+bool nfca_deselect ()
 
+bool mifare_get_version_L3 (uint8_t ver[8])
 
+bool mifare_get_version_L4_raw (uint8_t *ver, uint16_t &ver_len)
 
+bool mifare_get_version_L4_wrapped (uint8_t *ver, uint16_t &ver_len)
 
+bool mifare_plus_authenticateAES (const uint16_t key_no, const m5::nfc::a::mifare::plus::AESKey &key)
 
+bool mifare_plus_authenticateAES_L3 (const uint16_t key_no, const m5::nfc::a::mifare::plus::AESKey &key)
 
+bool mifare_plus_read_plain_nomac (const uint16_t block, const uint8_t count, std::vector< uint8_t > &out)
 
+bool mifare_plus_read_plain_mac (const uint16_t block, const uint8_t count, std::vector< uint8_t > &out)
 
+bool mifare_plus_read_mac_l4 (const uint16_t block, const uint8_t count, std::vector< uint8_t > &out, const bool plain)
 
+bool mifare_plus_write_mac_l4 (const uint16_t block, const uint8_t *data, const uint16_t data_len, const bool plain)
 
+bool mifare_classic_value_block (const m5::nfc::a::Command cmd, const uint8_t block, const uint32_t arg=0)
 
+bool mifare_ultralightC_authenticate1 (uint8_t ek[8])
 
+bool mifare_ultralightC_authenticate2 (uint8_t rx_ek[8], const uint8_t tx_ek[16])
 
+bool ntag_read_page (uint8_t *rx, uint16_t &rx_len, const uint8_t spage, const uint8_t epage)
 
+bool ntag_write_page (const uint8_t page, const uint8_t tx[4])
 
+bool dump_sector_structure (const m5::nfc::a::PICC &picc, const m5::nfc::a::mifare::classic::Key &key)
 
+bool dump_sector (const uint8_t sector)
 
+bool dump_sector_mifare_plus_sl3 (const uint8_t sector)
 
+bool dump_page_structure (const uint16_t maxPage)
 
+bool dump_page (const uint8_t page, const uint16_t maxPage)
 
+bool dump_mifare_plus_sl3 (const m5::nfc::a::mifare::plus::AESKey &key)
 
+bool dump_desfire ()
 
+bool dump_desfire_light ()
 
+bool dump_st25ta ()
 
+ + + +

+Static Protected Member Functions

+static bool push_back_picc (std::vector< m5::nfc::a::PICC > &v, const m5::nfc::a::PICC &picc)
 
+ + + + + + + +

+Protected Attributes

+m5::nfc::a::PICC _activePICC {}
 
+m5::nfc::ndef::NDEFLayer _ndef
 
+m5::nfc::isodep::IsoDEP _isoDEP
 
+

Detailed Description

+

Common interface layer for each chip of the NFC-A reader.

+

Member Function Documentation

+ +

◆ activate()

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerA::activate (const m5::nfc::a::PICC & picc,
const bool force_rats = false )
+
+ +

Activate a specific PICC (anti-collision against the given PICC)

+
Parameters
+ + + +
piccPICC
force_ratsForce Request_rats (For Plus SL1/2)
+
+
+
Returns
True if successful
+
Precondition
PICC is READY state
+
Postcondition
PICC transitions: READY -> ACTIVE on successful response
+ +
+
+ +

◆ activatedPICC()

+ +
+
+ + + + + +
+ + + + + + + +
const m5::nfc::a::PICC & m5::nfc::NFCLayerA::activatedPICC () const
+
+inline
+
+ +

Retrieve the currently activated PICC.

+
Returns
Active PICC
+
Note
Returns an empty PICC if no PICC is selected (no ACTIVE state)
+ +
+
+ +

◆ deactivate()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerA::deactivate ()
+
+ +

Send HLTA to the currently selected PICC (deactivate)

+
Returns
True if successful
+
Precondition
A PICC is in the ACTIVE state
+
Postcondition
PICC transitions: ACTIVE -> HALT on a successful response
+ +
+
+ +

◆ detect() [1/2]

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerA::detect (m5::nfc::a::PICC & picc,
const uint32_t timeout_ms = 100U )
+
+ +

Detect single idle PICC.

+
Parameters
+ + + +
[out]piccDetected PICC
timeout_msPolling time budget in milliseconds
+
+
+
Returns
True if detected
+
Note
The detected PICC is typically put into HALT during enumeration to allow discovering others
+
+To identify the type, call NFCLayerA::identify
+
Warning
The type of activated PICC is determined solely by SAK and is provisional
+ +
+
+ +

◆ detect() [2/2]

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerA::detect (std::vector< m5::nfc::a::PICC > & piccs,
const uint32_t timeout_ms = 1000U )
+
+ +

Detect idle PICCs.

+
Parameters
+ + + +
[out]piccsDetected PICC PICCs (one per activated PICC candidate)
timeout_msPolling time budget in milliseconds
+
+
+
Returns
True if detected
+
Note
The detected PICC is typically put into HALT during enumeration to allow discovering others
+
+To identify the type, call NFCLayerA::identify
+
Warning
The type of activated PICC is determined solely by SAK and is provisional
+ +
+
+ +

◆ dump() [1/2]

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerA::dump (const m5::nfc::a::mifare::classic::Key & mkey = m5::nfc::a::mifare::classic::DEFAULT_KEY)
+
+ +

Dump all blocks/files.

+
Parameters
+ + +
keyMIFARE classic key for Classic
+
+
+
Returns
True if successful
+
Precondition
All blocks must be authenticatable using the specified key if MIFARE classic
+ +
+
+ +

◆ dump() [2/2]

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerA::dump (const uint8_t block)
+
+ +

Dump 1 block.

+
Parameters
+ + +
addrBlock address
+
+
+
Returns
True if successful
+
Note
The sector to which the block belongs is dumped
+
Precondition
The block must be authenticated if MIFARE classic/PlusS3
+ +
+
+ +

◆ first_user_block()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerA::first_user_block () const
+
+inlineoverrideprotectedvirtual
+
+ +

First user block.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ identify()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerA::identify (m5::nfc::a::PICC & picc)
+
+ +

Identify the specified PICC type.

+

Classification Based on AN10883

Parameters
+ + +
[in/out]picc PICC
+
+
+
Returns
True if successful
+
Warning
Before calling, the previously active PICC is deactivated
+ +
+
+ +

◆ isActive()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::nfc::NFCLayerA::isActive (const m5::nfc::a::PICC & picc) const
+
+inline
+
+ +

Is the specified PICC currently active?

+
Parameters
+ + +
piccPICC to check
+
+
+
Returns
True if this PICC is the one currently selected (ACTIVE state)
+ +
+
+ +

◆ isoDEP()

+ +
+
+ + + + + +
+ + + + + + + +
virtual m5::nfc::isodep::IsoDEP * m5::nfc::NFCLayerA::isoDEP ()
+
+inlineoverridevirtual
+
+ +

ISO-DEP interface (nullptr if not supported)

+ +

Reimplemented from m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ last_user_block()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerA::last_user_block () const
+
+inlineoverrideprotectedvirtual
+
+ +

Last user block.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ maximum_fifo_depth()

+ +
+
+ + + + + +
+ + + + + + + +
uint16_t m5::nfc::NFCLayerA::maximum_fifo_depth () const
+
+overridevirtual
+
+ +

Maximum FIFO depth.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ mifareClassicAuthenticateA()

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerA::mifareClassicAuthenticateA (const uint8_t block,
const m5::nfc::a::mifare::classic::Key & key = m5::nfc::a::mifare::classic::DEFAULT_KEY )
+
+ +

Authentication by KeyA for MIFARE classic.

+
Parameters
+ + + +
blockAuthentication block
keyMIFARE classic key
+
+
+
Returns
True if successful
+ +
+
+ +

◆ mifareClassicAuthenticateB()

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerA::mifareClassicAuthenticateB (const uint8_t block,
const m5::nfc::a::mifare::classic::Key & key = m5::nfc::a::mifare::classic::DEFAULT_KEY )
+
+ +

Authentication by KeyB for MIFARE classic.

+
Parameters
+ + + +
blockAuthentication block
keyMIFARE classic key
+
+
+
Returns
True if successful
+ +
+
+ +

◆ mifareClassicDecrementValueBlock()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerA::mifareClassicDecrementValueBlock (const uint8_t block,
const uint32_t delta,
const bool transfer = true )
+
+ +

Decrement value of the value block.

+
Parameters
+ + + + +
blockBlock
deltaDelta
transferTransfer immediately if true
+
+
+
Returns
True if successful
+
Warning
When transfer == false, the result is stored only in the internal buffer and is not written to the PICC
+
+Use mifareClassicTransferValueBlock for writing from the internal buffer to PICC
+
Precondition
The specified block is authenticated
+
+The specified block must be a value block
+ +
+
+ +

◆ mifareClassicIncrementValueBlock()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerA::mifareClassicIncrementValueBlock (const uint8_t block,
const uint32_t delta,
const bool transfer = true )
+
+ +

Increment value of the value block.

+
Parameters
+ + + + +
blockBlock
deltaDelta
transferTransfer immediately if true
+
+
+
Returns
True if successful
+
Warning
When transfer == false, the result is stored only in the internal buffer and is not written to the PICC
+
+Use mifareClassicTransferValueBlock for writing from the internal buffer to PICC
+
Precondition
The specified block is authenticated
+
+The specified block must be a rechargeable value block
+ +
+
+ +

◆ mifareClassicIsValueBlock()

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerA::mifareClassicIsValueBlock (bool & is_value_block,
const uint8_t block )
+
+ +

Is specific block the value block?

+
Parameters
+ + + + +
[out]is_value_blocktrue if block is the value block
blockBlock
keyMIFARE classic key
+
+
+
Returns
True if successful
+
Precondition
The specified block is authenticated
+ +
+
+ +

◆ mifareClassicReadAccessCondition()

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerA::mifareClassicReadAccessCondition (uint8_t & c123,
const uint8_t block )
+
+ +

Read the specific block access conditions.

+
Parameters
+ + + +
[out]c123Access bits Bit2:C1 Bit1:C2 Bit0:C3
blockBlock
+
+
+
Returns
True if successful
+

Access conditions for the sector trailer

+ + + + + + + + + + + + + + + + + + +
C1 C2 C3 KeyA read KeyA write Access bits read Access bits write KeyB read KeyB write
0 0 0 never keyA keyA never keyA keyA
0 1 0 never never keyA never keyA never
1 0 0 never keyB keyA/B never never keyB
1 1 0 never never keyA/B never never never
0 0 1 never keyA keyA keyA keyA keyA
0 1 1 never keyB keyA/B keyB never keyB
1 0 1 never never keyA/B keyB never never
1 1 1 never never keyA/B never never never
+

Access conditions for data blocks

+ + + + + + + + + + + + + + + + + + +
C1 C2 C3 read write increment decrement,transfer, restore Application
0 0 0 keyA/B keyA/B keyA/B keyA/B transport configuration
0 1 0 keyA/B never neve never read/write block
1 0 0 keyA/B keyB never never read/write block
1 1 0 keyA/B keyB keyB keyA/B value block
0 0 1 keyA/B never never keyA/B value block
0 1 1 keyB keyB never never read/write block
1 0 1 keyB never never never read/write block
1 1 1 never never never never read/write block
+
Precondition
The authentication of the sector trailer to which the block belongs is in place
+ +
+
+ +

◆ mifareClassicReadValueBlock()

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerA::mifareClassicReadValueBlock (int32_t & value,
const uint8_t block )
+
+ +

Read the specific block as the value block.

+
Parameters
+ + + +
[out]valueValue
blockBlock
+
+
+
Returns
True if successful
+
Precondition
The specified block is authenticated
+ +
+
+ +

◆ mifareClassicRestoreValueBlock()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerA::mifareClassicRestoreValueBlock (const uint8_t block)
+
+ +

Restore block value to inner buffer.

+
Parameters
+ + +
blockBlock
+
+
+
Returns
True if successful
+
Precondition
The specified block is authenticated
+
+The specified block must be a value block
+ +
+
+ +

◆ mifareClassicTransferValueBlock()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerA::mifareClassicTransferValueBlock (const uint8_t block)
+
+ +

Transfer inner buffer value to block.

+
Parameters
+ + +
blockBlock
+
+
+
Returns
True if successful
+
Precondition
The specified block is authenticated
+
+The specified block must be a value block
+ +
+
+ +

◆ mifareClassicWriteAccessCondition()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerA::mifareClassicWriteAccessCondition (const uint8_t block,
const uint8_t c123,
const m5::nfc::a::mifare::classic::Key & akey,
const m5::nfc::a::mifare::classic::Key & bkey )
+
+ +

Write the specific block access conditions.

+
Parameters
+ + + + + +
blockBlock
c123Access bits Bit2:C1 Bit1:C2 Bit0:C3
akeyKeyA
bkeyKeyB
+
+
+
Returns
True if successful
+
See also
About access condition mifareClassicReadAccessCondition
+
Warning
Since writes are performed in 16-byte units, key information must also be entered correctly
+
Precondition
The authentication of the sector trailer to which the block belongs is in place
+ +
+
+ +

◆ mifareClassicWriteValueBlock()

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerA::mifareClassicWriteValueBlock (const uint8_t block,
const int32_t value )
+
+ +

Write the specific block as the value block.

+
Parameters
+ + + +
blockBlock
valueValue
+
+
+
Returns
True if successful
+
Precondition
The specified block is authenticated
+ +
+
+ +

◆ mifarePlusUpgradeSecurityLevel1()

+ +
+
+ +

Upgrade security level to SL1 (Classic compatibility mode)

+
Parameters
+ + + + + + + + +
card_config_keyCard Configuration Key (AES)
card_master_keyCard Master Key (AES)
l2_switch_keyLevel 2 Switch Key (AES, for MIFARE Plus X/EV2 SL2 only)
l3_switch_keyLevel 3 Switch Key (AES, for SL3)
aes_sector_keyAES sector key (for SL2/SL3, written to 0x4000+)
key_aCrypto1 Key A (applies to all sectors)
key_bCrypto1 Key B (applies to all sectors)
+
+
+
Warning
This operation is irreversible
+
+Access bits will be reset to the transport configuration
+ +
+
+ +

◆ mifarePlusUpgradeSecurityLevel2()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerA::mifarePlusUpgradeSecurityLevel2 (const m5::nfc::a::mifare::plus::AESKey & sl2_switch_key = m5::nfc::a::mifare::plus::DEFAULT_KEY)
+
+ +

Upgrade security level to SL2 (AES over CRYPTO1)

+
Parameters
+ + +
sl2_switch_keySL2 Switch Key (AES)
+
+
+
Warning
This operation is irreversible
+
Note
Only supported on MIFARE Plus X / EV2
+ +
+
+ +

◆ mifarePlusUpgradeSecurityLevel3()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerA::mifarePlusUpgradeSecurityLevel3 (const m5::nfc::a::mifare::plus::AESKey & l3_switch_key = m5::nfc::a::mifare::plus::DEFAULT_KEY)
+
+ +

Upgrade security level to SL3 (AES)

+
Parameters
+ + +
l3_switch_keyLevel 3 Switch Key (AES)
+
+
+
Warning
This operation is irreversible
+
Note
For Plus X/EV2, the PICC must be in SL2; otherwise SL1 is required
+ +
+
+ +

◆ mifareUltralightChangeFormatToNDEF()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerA::mifareUltralightChangeFormatToNDEF ()
+
+ +

Write change to NFC Type-2 (NDEF) format for MIFARE Ultralight/C.

+
Returns
True if successful
+
Note
Returns true if the data is already in NDEF format or if the PICC is an NTAG
+
Warning
Only MIFARE Ultralight series
+
+Changes are irreversible and cannot be undone
+
+If the relevant area has already been overwritten, changes may not be possible
+ +
+
+ +

◆ ndefIsValidFormat()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerA::ndefIsValidFormat (bool & valid)
+
+ +

Is the PICC data in NDEF format?

+
Parameters
+ + +
[out]validTrue if NDEF format
+
+
+
Returns
True if successful
+ +
+
+ +

◆ ndefPrepareDesfire()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerA::ndefPrepareDesfire (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
+ +
+
+ +

◆ ndefPrepareDesfireLight()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerA::ndefPrepareDesfireLight ()
+
+ +

Prepare NDEF files on MIFARE DESFire Light.

+
Returns
True if successful
+ +
+
+ +

◆ ndefRead() [1/2]

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerA::ndefRead (m5::nfc::ndef::TLV & msg)
+
+ +

Read NDEF Message TLV.

+
Parameters
+ + +
[out]msgMessage If it does not exist, a Null TLV is returned
+
+
+
Returns
True if successful
+
Note
If multiple messages of the same type exist, return the first one
+
Warning
Only PICC cards supporting NDEF are valid
+ +
+
+ +

◆ ndefRead() [2/2]

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerA::ndefRead (std::vector< m5::nfc::ndef::TLV > & tlvs,
const m5::nfc::ndef::TagBits tagBits = m5::nfc::ndef::tagBitsAll )
+
+ +

Read any NDEF TLV.

+
Parameters
+ + + +
[out]tlvsMessage vector
tagBitsBit indicating the group of NDEF tags to be read
+
+
+
Returns
True if successful
+
Warning
Only PICC cards supporting NDEF are valid
+ +
+
+ +

◆ ndefWrite() [1/2]

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerA::ndefWrite (const m5::nfc::ndef::TLV & msg)
+
+ +

Write NDEF message.

+
Parameters
+ + +
msgMessage (NDEF Message)
+
+
+
Returns
True if successful
+
Note
Other existing tags will be preserved
+
Warning
Existing NDEF message TLVs will be overwritten
+
+Only PICC cards supporting NDEF are valid
+ +
+
+ +

◆ ndefWrite() [2/2]

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerA::ndefWrite (const std::vector< m5::nfc::ndef::TLV > & tlvs)
+
+ +

Write any NDEF Messages TLV.

+
Parameters
+ + +
tlvsMessage vector
+
+
+
Returns
True if successful
+
Note
Write starting from the beginning of the user area
+
Warning
Existing NDEF Message TLVs will be overwritten,
+
+so exercise caution if Lock/Memory control is present
+
+Only PICC cards supporting NDEF are valid
+ +
+
+ +

◆ reactivate() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::nfc::NFCLayerA::reactivate ()
+
+inline
+
+ +

Reactivate the previously selected PICC.

+

This function attempts to recover communication with the currently stored _activePICC when the PICC has entered the HALT state, for example due to a protocol error, timeout, or loss of RF field synchronization. Internally performs a WUPA (Wake-Up) followed by anti-collision and SELECT sequence using the last known PICC

Returns
True if successful
+
Precondition
A valid`_activePICC is stored (i.e., at least one PICC was previously activated)
+
Note
Use this to recover from transient communication errors without performing a full REQA/detect cycle
+ +
+
+ +

◆ reactivate() [2/2]

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerA::reactivate (const m5::nfc::a::PICC & picc,
const bool force_rats = false )
+
+ +

Wake and activate a specific PICC by PICC.

+
Parameters
+ + + +
piccTarget PICC
force_ratsForce Request_rats (For Plus SL1/2)
+
+
+
Returns
True if successful
+
Postcondition
PICC transitions: IDLE/HALT -> READY -> ACTIVE on a successful sequence
+ +
+
+ +

◆ read() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerA::read (uint8_t * rx,
uint16_t & rx_len,
const uint16_t saddr )
+
+overrideprotectedvirtual
+
+ +

Read NDEF (block)

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ read() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerA::read (uint8_t * rx,
uint16_t & rx_len,
const uint8_t saddr,
const m5::nfc::a::mifare::classic::Key & key = m5::nfc::a::mifare::classic::DEFAULT_KEY )
+
+ +

Read any bytes from user area.

+

Continue reading only the user area from the first block of the user area until rx_len is satisfied

Parameters
+ + + + +
rxBuffer
[in/out]rx_len in:buffer size, out:actual read size
saddrReading start block/page address
+
+
+
Returns
True if successful
+
Warning
For FAST_READ-compatible PICC, the rx is in 4-byte units. for others, it is in 16-byte units
+
Precondition
Target blocks must be authenticatable using the specified key if MIFARE classic
+ +
+
+ +

◆ read() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerA::read (uint8_t * rx,
uint16_t & rx_len,
const uint8_t saddr,
const m5::nfc::a::mifare::plus::AESKey & key )
+
+ +

Read any bytes from user area (MIFARE Plus SL3)

+
Parameters
+ + + + + +
rxBuffer
[in/out]rx_len in:buffer size, out:actual read size
saddrReading start block address
keyAES sector key (for MIFARE Plus SL3)
+
+
+
Returns
True if successful
+
Warning
The rx is in 16-byte units
+
Precondition
Target blocks must be authenticatable using the specified key
+ +
+
+ +

◆ read16()

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerA::read16 (uint8_t rx[16],
const uint8_t addr )
+
+ +

Read the 1 block / 4 page (16 bytes)

+
Parameters
+ + + +
rxBuffer (at least 16 bytes)
addrBlock/Page address
+
+
+
Returns
True if successful
+
Precondition
The block must be authenticated if MIFARE classic
+ +
+
+ +

◆ read4()

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerA::read4 (uint8_t rx[4],
const uint8_t addr )
+
+ +

Read the 1 page.

+
Parameters
+ + + +
rxBuffer (at least 4 bytes)
addrBlock/Page address
+
+
+
Returns
True if successful
+
Warning
Only PICC supporting the FAST_READ command is possible
+ +
+
+ +

◆ request()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerA::request (uint16_t & atqa)
+
+ +

Send REQA to discover a PICC in IDLE.

+
Parameters
+ + +
[out]atqaATQA received from PICC
+
+
+
Returns
True if successful
+
Postcondition
PICC transitions: IDLE -> READY on successful response
+ +
+
+ +

◆ select()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerA::select (m5::nfc::a::PICC & picc)
+
+ +

Select a PICC (anti-collision + SELECT cascade to ACTIVE)

+
Parameters
+ + +
[out]piccThe fully activated PICC (single- or multi-cascade)
+
+
+
Returns
True if successful
+
Warning
The type of activated PICC is determined solely by SAK and is provisional
+
Note
To identify the type, call NFCLayerA::identify
+
Precondition
A PICC is in the READY state (after REQA/WUPA)
+
Postcondition
PICC transitions: READY -> ACTIVE on successful response
+ +
+
+ +

◆ supportsFilesystem()

+ +
+
+ + + + + +
+ + + + + + + +
file_system_feature_t m5::nfc::NFCLayerA::supportsFilesystem () const
+
+overridevirtual
+
+ +

activePICC's File system

+ +

Reimplemented from m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ supportsNFCTag()

+ +
+
+ + + + + +
+ + + + + + + +
m5::nfc::NFCForumTag m5::nfc::NFCLayerA::supportsNFCTag () const
+
+overridevirtual
+
+ +

activePICC's NDEF type

+ +

Reimplemented from m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ transceive()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerA::transceive (uint8_t * rx,
uint16_t & rx_len,
const uint8_t * tx,
const uint16_t tx_len,
const uint32_t timeout_ms )
+
+overridevirtual
+
+ +

Transceive (RF command)

+ +

Reimplemented from m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ unit_size_read()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerA::unit_size_read () const
+
+inlineoverrideprotectedvirtual
+
+ +

Unit size for read.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ unit_size_write()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerA::unit_size_write () const
+
+inlineoverrideprotectedvirtual
+
+ +

Unit size for write.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ user_area_size()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerA::user_area_size () const
+
+inlineprotectedvirtual
+
+ +

User area size (bytes)

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ wakeup()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerA::wakeup (uint16_t & atqa)
+
+ +

Send WUPA to wake a PICC from IDLE or HALT.

+
Parameters
+ + +
[out]atqaATQA received from PICC
+
+
+
Returns
True if successful
+
Postcondition
PICC transitions: IDLE/HALT -> READY on successful response
+ +
+
+ +

◆ write() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerA::write (const uint16_t saddr,
const uint8_t * tx,
const uint16_t tx_len )
+
+overrideprotectedvirtual
+
+ +

Write NDEF (block)

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ write() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerA::write (const uint8_t addr,
const uint8_t * tx,
const uint16_t tx_len,
const m5::nfc::a::mifare::plus::AESKey & key )
+
+ +

Write any bytes to user area (MIFARE Plus SL3)

+
Parameters
+ + + + + +
addrWriting start block address
txBuffer
tx_lenBuffer size
keyAES sector key (for MIFARE Plus SL3)
+
+
+
Returns
True if successful
+
Warning
The tx is in 16-byte units
+
Precondition
Target blocks must be authenticatable using the specified key
+ +
+
+ +

◆ write() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerA::write (const uint8_t saddr,
const uint8_t * tx,
const uint16_t tx_len,
const m5::nfc::a::mifare::classic::Key & key = m5::nfc::a::mifare::classic::DEFAULT_KEY )
+
+ +

Write any bytes to user area.

+

Continue writing only the user area from the first block of the user area until tx_len is satisfied

Parameters
+ + + + +
saddrWriting start block/page address
txBuffer
tx_lenbuffer size
+
+
+
Returns
True if successful
+
Warning
For NTAG and Ultralight series, the tx is in 4-byte units; for others, it is in 16-byte units
+
+If the value is less than the unit, it is padded with 0x00
+
Precondition
Target blocks must be authenticatable using the specified key if MIFARE classic
+ +
+
+ +

◆ write16()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerA::write16 (const uint8_t addr,
const uint8_t * tx,
const uint16_t tx_len,
const bool safety = true )
+
+ +

Write the 1 block / 4 page (16 bytes)

+
Parameters
+ + + + + +
addrBlock/Page address
txBuffef
tx_lenBuffer size
safetyFail to write to out of the user memory area if true (safety measure)
+
+
+
Returns
True if successful
+
Warning
If the tx_len is less than 16 bytes, the remaining space is filled with 0x00
+
+If the tx_len is larger than 16 bytes, only the first 16 bytes will be written
+
Precondition
The block must be authenticated if MIFARE classic
+ +
+
+ +

◆ write4()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerA::write4 (const uint8_t addr,
const uint8_t * tx,
const uint16_t tx_len,
const bool safety = true )
+
+ +

Write the 1 page (4 bytes)

+
Parameters
+ + + + + +
addrBlock/Page address
txBuffer
tx_lenBuffer size
safetyFail to write to out of the user memory area if true (safety measure)
+
+
+
Returns
True if successful
+
Warning
Supports NTAG and Ultralight series only
+
+If the tx_len is less than 4 bytes, the remaining space is filled with 0x00
+
+If the tx_len is larger than 4 bytes, only the first 4 bytes will be written
+ +
+
+
+
+ + + + diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_a.js b/classm5_1_1nfc_1_1_n_f_c_layer_a.js new file mode 100644 index 0000000..2333c85 --- /dev/null +++ b/classm5_1_1nfc_1_1_n_f_c_layer_a.js @@ -0,0 +1,60 @@ +var classm5_1_1nfc_1_1_n_f_c_layer_a = +[ + [ "activate", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a48ebe154a123b7213cb9783b6b0d24dd", null ], + [ "activatedPICC", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a88b5213b7feafcec4c5e0e12d53d1a8c", null ], + [ "deactivate", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac1bb18ba571351953246a97168e30c79", null ], + [ "detect", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a1b671840e2fce10e1d7a800fe084e2ab", null ], + [ "detect", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a69c8817ff9ebea44fcb39aca0217c990", null ], + [ "dump", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a0c0801275c5203877f67619d338fc3f6", null ], + [ "dump", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#afa531eb85895947d8fd8c64a6c935635", null ], + [ "first_user_block", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a12e0b5658e8ed72322d01fc247801ba0", null ], + [ "identify", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#aaae6d1f24bed2b0e6bb13697fd11a9e5", null ], + [ "isActive", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a2865997fa2380a732230f9eb49a86a8c", null ], + [ "isoDEP", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a7959e21229eebefebf607d65dd2ca8cd", null ], + [ "last_user_block", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a347f20c1818de724908bba309e42909f", null ], + [ "maximum_fifo_depth", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#adc1ce9c8c03feea93406d287df7b355b", null ], + [ "mifareClassicAuthenticateA", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#ace7c09b993fdabbea85583b2e9f4d49c", null ], + [ "mifareClassicAuthenticateB", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac0661dac6e7ca06ef108871cc822b2c8", null ], + [ "mifareClassicDecrementValueBlock", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a86871cce9cdaf6ebb5bb2bdfdf860248", null ], + [ "mifareClassicIncrementValueBlock", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#afdcc37375bccbdf436826b2f1f973212", null ], + [ "mifareClassicIsValueBlock", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a193ff49621bbb0b026c4439781803f03", null ], + [ "mifareClassicReadAccessCondition", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#add99392d776e0757afc345dabec6dffd", null ], + [ "mifareClassicReadValueBlock", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a147ccb42b8a90d435c7018595e980026", null ], + [ "mifareClassicRestoreValueBlock", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#aebcd787d8bc53fd994135a0507f80abe", null ], + [ "mifareClassicTransferValueBlock", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a0d05ef0dfeba94dfee5ecfeae7363776", null ], + [ "mifareClassicWriteAccessCondition", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac3d2c944c286800b9e1147674172f248", null ], + [ "mifareClassicWriteValueBlock", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a654141401bac8480c56593bf476a822a", null ], + [ "mifarePlusUpgradeSecurityLevel1", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a1c80db943efcf56c086c5d70ac1ad0d4", null ], + [ "mifarePlusUpgradeSecurityLevel2", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a1c28bbf7fb09613378f7bc3150d091f7", null ], + [ "mifarePlusUpgradeSecurityLevel3", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#ad305314219e83a82d21ed46c163e18b1", null ], + [ "mifareUltralightCAuthenticate", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a4d73b0666a5550b26b70cfbcc24bb6c4", null ], + [ "mifareUltralightChangeFormatToNDEF", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a55e8d544bdd962d449d1b033fbc8bd75", null ], + [ "ndefIsValidFormat", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a67ad153f9d8d8a13d05bc4b8048dbf7b", null ], + [ "ndefPrepareDesfire", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a59f94b281ece2f3f24ec537613b7b2c1", null ], + [ "ndefPrepareDesfireLight", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#acd1252e937569b38de4d1e0c15d7217d", null ], + [ "ndefRead", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a9434350fb2af7119b16cdcb1170fb66b", null ], + [ "ndefRead", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a873bfadfc460abc6742b06fcbc6c63dd", null ], + [ "ndefWrite", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#ad2434059c53afed91402c9ccffd156b6", null ], + [ "ndefWrite", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a65823efd2a5958d16857bee1ae9bf050", null ], + [ "reactivate", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a9a8e6e8c38c98228e83974bd6584f42e", null ], + [ "reactivate", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a049d81ed5c360b26c4dbf8d93b8e0e46", null ], + [ "read", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#afdc37ce8de471e4c439eed5abd73f4be", null ], + [ "read", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#af03e1b30f185127ecd3efe7c2e69562d", null ], + [ "read", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#abba78cd657f6823e23452c10749676f7", null ], + [ "read16", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a80e45ceb5b4bdf04ac2a667fde3b92ee", null ], + [ "read4", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#ab668e6b37b0a4263efc29ee97ec2f44d", null ], + [ "request", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a0db4941c60b2f67a8415ef2fd505ead4", null ], + [ "select", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a6c5ba9ff6ce1ad9c5c2ec5adf17a9299", null ], + [ "supportsFilesystem", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a439668b546644bf82e4bf402806c4fc3", null ], + [ "supportsNFCTag", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac9a9341857b32fa2016d93e2dce4d053", null ], + [ "transceive", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#af922fdf273e872f865fb78312796393b", null ], + [ "unit_size_read", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#aa249c4d6c5425dbf0f79ae9d29be3540", null ], + [ "unit_size_write", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#ad24a58b5b02a26316e0c14bda504e243", null ], + [ "user_area_size", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a569a7bfed33c5202acacb045b39519a2", null ], + [ "wakeup", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#af0ee18fb7743f541ce135af87c950275", null ], + [ "write", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a3c982e97ad6b66ffb9aa6f685e3f7869", null ], + [ "write", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a5940b86e65b0fad0af0a04378b3e27d2", null ], + [ "write", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a23492234bf6f5701225f7cc5943d1912", null ], + [ "write16", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#af7efea879304539a9874d23e5c957f74", null ], + [ "write4", "classm5_1_1nfc_1_1_n_f_c_layer_a.html#a972e8373f292165448f7a5d384a9f875", null ] +]; \ No newline at end of file diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_a.png b/classm5_1_1nfc_1_1_n_f_c_layer_a.png new file mode 100644 index 0000000..af5668e Binary files /dev/null and b/classm5_1_1nfc_1_1_n_f_c_layer_a.png differ diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_b-members.html b/classm5_1_1nfc_1_1_n_f_c_layer_b-members.html new file mode 100644 index 0000000..1d5ea94 --- /dev/null +++ b/classm5_1_1nfc_1_1_n_f_c_layer_b-members.html @@ -0,0 +1,146 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
m5::nfc::NFCLayerB Member List
+
+
+ +

This is the complete list of members for m5::nfc::NFCLayerB, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activePICC (defined in m5::nfc::NFCLayerB)m5::nfc::NFCLayerBprotected
_isoDEP (defined in m5::nfc::NFCLayerB)m5::nfc::NFCLayerBprotected
_ndef (defined in m5::nfc::NFCLayerB)m5::nfc::NFCLayerBprotected
activatedPICC() constm5::nfc::NFCLayerBinline
deactivate() (defined in m5::nfc::NFCLayerB)m5::nfc::NFCLayerB
deselect(const uint8_t pupi[4], const uint8_t cid=0xFF) (defined in m5::nfc::NFCLayerB)m5::nfc::NFCLayerB
detect(m5::nfc::b::PICC &picc, const uint8_t afi=0x00, const uint32_t timeout_ms=100U)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)m5::nfc::NFCLayerB
first_user_block() const overridem5::nfc::NFCLayerBinlineprotectedvirtual
hlt(const uint8_t pupi[4]) (defined in m5::nfc::NFCLayerB)m5::nfc::NFCLayerB
isActive(const m5::nfc::b::PICC &picc) constm5::nfc::NFCLayerBinline
isoDEP() overridem5::nfc::NFCLayerBinlinevirtual
last_user_block() const overridem5::nfc::NFCLayerBinlineprotectedvirtual
maximum_fifo_depth() const overridem5::nfc::NFCLayerBvirtual
maximum_read_blocks() constm5::nfc::NFCLayerInterfaceinlinevirtual
maximum_write_blocks() constm5::nfc::NFCLayerInterfaceinlinevirtual
NFCLayerB(m5::unit::UnitST25R3916 &u) (defined in m5::nfc::NFCLayerB)m5::nfc::NFCLayerBexplicit
NFCLayerB(m5::unit::CapST25R3916 &u) (defined in m5::nfc::NFCLayerB)m5::nfc::NFCLayerBexplicit
read(uint8_t *rx, uint16_t &rx_len, const uint16_t saddr) overridem5::nfc::NFCLayerBinlineprotectedvirtual
receive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms) overridem5::nfc::NFCLayerBvirtual
request(uint8_t *atqb, uint16_t &atqb_len, const uint8_t afi=0x00, const m5::nfc::b::Require slots=m5::nfc::b::Require::Slot1)m5::nfc::NFCLayerBinline
request_wakeup(uint8_t *atqb, uint16_t &atqb_len, const uint8_t afi, const m5::nfc::b::Require slots, const bool wakeup) (defined in m5::nfc::NFCLayerB)m5::nfc::NFCLayerBprotected
select(m5::nfc::b::PICC &picc)m5::nfc::NFCLayerB
supportsFilesystem() constm5::nfc::NFCLayerInterfaceinlinevirtual
supportsNFCTag() constm5::nfc::NFCLayerInterfaceinlinevirtual
transceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms) overridem5::nfc::NFCLayerBvirtual
transmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms) overridem5::nfc::NFCLayerBvirtual
unit_size_read() const overridem5::nfc::NFCLayerBinlineprotectedvirtual
unit_size_write() const overridem5::nfc::NFCLayerBinlineprotectedvirtual
user_area_size() constm5::nfc::NFCLayerBinlineprotectedvirtual
wakeup(uint8_t *atqb, uint16_t &atqb_len, const uint8_t afi=0x00, const m5::nfc::b::Require slots=m5::nfc::b::Require::Slot1)m5::nfc::NFCLayerBinline
write(const uint16_t saddr, const uint8_t *tx, const uint16_t tx_len) overridem5::nfc::NFCLayerBinlineprotectedvirtual
+
+ + + + diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_b.html b/classm5_1_1nfc_1_1_n_f_c_layer_b.html new file mode 100644 index 0000000..dd6716f --- /dev/null +++ b/classm5_1_1nfc_1_1_n_f_c_layer_b.html @@ -0,0 +1,928 @@ + + + + + + + +M5Unit-NFC: m5::nfc::NFCLayerB Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
m5::nfc::NFCLayerB Class Reference
+
+
+ +

Common interface layer for each chip of the NFC-B reader. + More...

+ +

#include <nfc_layer_b.hpp>

+
+Inheritance diagram for m5::nfc::NFCLayerB:
+
+
+ + +m5::nfc::NFCLayerInterface + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

NFCLayerB (m5::unit::UnitST25R3916 &u)
 
NFCLayerB (m5::unit::CapST25R3916 &u)
 
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 (RF command)
 
virtual bool transmit (const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms) override
 Transmit only.
 
virtual bool receive (uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms) override
 Receive only.
 
virtual m5::nfc::isodep::IsoDEPisoDEP () override
 ISO-DEP interface (nullptr if not supported)
 
virtual uint16_t maximum_fifo_depth () const override
 Maximum FIFO depth.
 
bool isActive (const m5::nfc::b::PICC &picc) const
 Is the specified PICC currently active?
 
const m5::nfc::b::PICCactivatedPICC () 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)
 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)
 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=100U)
 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)
 Detect idle PICCs.
 
bool select (m5::nfc::b::PICC &picc)
 Send REQB to discover a PICC in IDLE.
 
For activated PICC
+bool hlt (const uint8_t pupi[4])
 
+bool deselect (const uint8_t pupi[4], const uint8_t cid=0xFF)
 
+bool deactivate ()
 
- Public Member Functions inherited from m5::nfc::NFCLayerInterface
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)
 
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
 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
 
+

Detailed Description

+

Common interface layer for each chip of the NFC-B reader.

+

Member Function Documentation

+ +

◆ activatedPICC()

+ +
+
+ + + + + +
+ + + + + + + +
const m5::nfc::b::PICC & m5::nfc::NFCLayerB::activatedPICC () const
+
+inline
+
+ +

Retrieve the currently activated PICC.

+
Returns
Active PICC
+
Note
Returns an empty PICC if no PICC is selected (no ACTIVE state)
+ +
+
+ +

◆ detect() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerB::detect (m5::nfc::b::PICC & picc,
const uint8_t afi = 0x00,
const uint32_t timeout_ms = 100U )
+
+ +

Detect single idle PICC.

+
Parameters
+ + + + +
[out]piccDetected PICC
afiApplication Family Identifier (0x00 all)
timeout_msPolling time budget in milliseconds
+
+
+
Returns
True if detected
+
Note
The detected PICC is typically put into HALT during enumeration to allow discovering others
+ +
+
+ +

◆ detect() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
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 )
+
+ +

Detect idle PICCs.

+
Parameters
+ + + + + +
[out]piccsDetected PICC PICCs (one per activated PICC candidate)
afiApplication Family Identifier (0x00 all)
max_piccHow many to detect
timeout_msPolling time budget in milliseconds
+
+
+
Returns
True if detected
+
Note
The detected PICC is typically put into HALT during enumeration to allow discovering others
+ +
+
+ +

◆ first_user_block()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerB::first_user_block () const
+
+inlineoverrideprotectedvirtual
+
+ +

First user block.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ isActive()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::nfc::NFCLayerB::isActive (const m5::nfc::b::PICC & picc) const
+
+inline
+
+ +

Is the specified PICC currently active?

+
Parameters
+ + +
piccPICC to check
+
+
+
Returns
True if this PICC is the one currently selected (ACTIVE state)
+ +
+
+ +

◆ isoDEP()

+ +
+
+ + + + + +
+ + + + + + + +
virtual m5::nfc::isodep::IsoDEP * m5::nfc::NFCLayerB::isoDEP ()
+
+inlineoverridevirtual
+
+ +

ISO-DEP interface (nullptr if not supported)

+ +

Reimplemented from m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ last_user_block()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerB::last_user_block () const
+
+inlineoverrideprotectedvirtual
+
+ +

Last user block.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ maximum_fifo_depth()

+ +
+
+ + + + + +
+ + + + + + + +
uint16_t m5::nfc::NFCLayerB::maximum_fifo_depth () const
+
+overridevirtual
+
+ +

Maximum FIFO depth.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ read()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
virtual bool m5::nfc::NFCLayerB::read (uint8_t * rx,
uint16_t & rx_len,
const uint16_t saddr )
+
+inlineoverrideprotectedvirtual
+
+ +

Read NDEF (block)

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ receive()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerB::receive (uint8_t * rx,
uint16_t & rx_len,
const uint32_t timeout_ms )
+
+overridevirtual
+
+ +

Receive only.

+ +

Reimplemented from m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ request()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerB::request (uint8_t * atqb,
uint16_t & atqb_len,
const uint8_t afi = 0x00,
const m5::nfc::b::Require slots = m5::nfc::b::Require::Slot1 )
+
+inline
+
+ +

Send REQB to discover a PICC in IDLE.

+
Parameters
+ + + + + +
[out]atqbATQB received from PICC (at atqb_len)
[in/out]in:atqb length out:actual received length
afiApplication Family Identifier (0x00 all)
slotsNumber of slots required
+
+
+
Returns
True if successful
+
Note
The ATQB per one of the PICC is 11 bytes
+
Postcondition
PICC transitions: IDLE -> READY on successful response
+ +
+
+ +

◆ select()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerB::select (m5::nfc::b::PICC & picc)
+
+ +

Send REQB to discover a PICC in IDLE.

+
Parameters
+ + + + + +
[out]atqbATQB received from PICC (at atqb_len)
[in/out]in:atqb length out:actual received length
afiApplication Family Identifier (0x00 all)
slotsNumber of slots required
+
+
+
Returns
True if successful
+
Note
The ATQB per one of the PICC is 11 bytes
+
Postcondition
PICC transitions: IDLE -> READY on successful response
+ +
+
+ +

◆ transceive()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerB::transceive (uint8_t * rx,
uint16_t & rx_len,
const uint8_t * tx,
const uint16_t tx_len,
const uint32_t timeout_ms )
+
+overridevirtual
+
+ +

Transceive (RF command)

+ +

Reimplemented from m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ transmit()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerB::transmit (const uint8_t * tx,
const uint16_t tx_len,
const uint32_t timeout_ms )
+
+overridevirtual
+
+ +

Transmit only.

+ +

Reimplemented from m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ unit_size_read()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerB::unit_size_read () const
+
+inlineoverrideprotectedvirtual
+
+ +

Unit size for read.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ unit_size_write()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerB::unit_size_write () const
+
+inlineoverrideprotectedvirtual
+
+ +

Unit size for write.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ user_area_size()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerB::user_area_size () const
+
+inlineprotectedvirtual
+
+ +

User area size (bytes)

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ wakeup()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerB::wakeup (uint8_t * atqb,
uint16_t & atqb_len,
const uint8_t afi = 0x00,
const m5::nfc::b::Require slots = m5::nfc::b::Require::Slot1 )
+
+inline
+
+ +

Send WUPB to wake a PICC from IDLE or HALT.

+
Parameters
+ + + + + +
[out]atqbATQB received from PICC (at least atqb_len)
[in/out]in:atqb length out:actual received length
afiApplication Family Identifier (0x00 all)
slotsNumber of slots required
+
+
+
Returns
True if successful
+
Note
The ATQB per one of the PICC is 11 bytes
+
Postcondition
PICC transitions: IDLE/HALT -> READY on successful response
+ +
+
+ +

◆ write()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
virtual bool m5::nfc::NFCLayerB::write (const uint16_t saddr,
const uint8_t * tx,
const uint16_t tx_len )
+
+inlineoverrideprotectedvirtual
+
+ +

Write NDEF (block)

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+
+
+ + + + diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_b.js b/classm5_1_1nfc_1_1_n_f_c_layer_b.js new file mode 100644 index 0000000..9d1ec2e --- /dev/null +++ b/classm5_1_1nfc_1_1_n_f_c_layer_b.js @@ -0,0 +1,22 @@ +var classm5_1_1nfc_1_1_n_f_c_layer_b = +[ + [ "activatedPICC", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#a43e13b709e37cda6e0bd2e63ec0db114", null ], + [ "detect", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#ad3698c3813530c3d6d039ddef69a6726", null ], + [ "detect", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#afef900848a56b2e124205e31a136827d", null ], + [ "first_user_block", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#afa2dbc0f285d67cefe5fdc9193784672", null ], + [ "isActive", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#a11b95164e1ef71d9dfce3cad9ab3da29", null ], + [ "isoDEP", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#a8f40ff3e5e6bc0018e3e635229c1cbbc", null ], + [ "last_user_block", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#a36c1c50e191cbcc8755456520c61561d", null ], + [ "maximum_fifo_depth", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#a282835821d919abdf7625609e3bf9d33", null ], + [ "read", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#a4120d13050d0fe0ed607b9e762623111", null ], + [ "receive", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#a1f583ba3a2213ecd3d8c9012080c34ea", null ], + [ "request", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#af30da614d7bdcfd7829d70dcd23d9b18", null ], + [ "select", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#ad7936a932130b4514d04a225c10e4305", null ], + [ "transceive", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#a122b2ce7114b2c5ed04e7b7457c2e098", null ], + [ "transmit", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#a3f248f568f9ce9526593e1eb194073f4", null ], + [ "unit_size_read", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#a19d4d6e76db9241d8e5a79c180acaba3", null ], + [ "unit_size_write", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#ac3993de89564964f63a7a0035b0837eb", null ], + [ "user_area_size", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#a5f42174f261408428c47686a8c2a7bc7", null ], + [ "wakeup", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#a43d82222e2f7947b2e52e2c4a10f5dcc", null ], + [ "write", "classm5_1_1nfc_1_1_n_f_c_layer_b.html#a4283e90fffaadbda8ab352ec153cd893", null ] +]; \ No newline at end of file diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_b.png b/classm5_1_1nfc_1_1_n_f_c_layer_b.png new file mode 100644 index 0000000..f5789ce Binary files /dev/null and b/classm5_1_1nfc_1_1_n_f_c_layer_b.png differ diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_f-members.html b/classm5_1_1nfc_1_1_n_f_c_layer_f-members.html new file mode 100644 index 0000000..ae570f2 --- /dev/null +++ b/classm5_1_1nfc_1_1_n_f_c_layer_f-members.html @@ -0,0 +1,176 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
m5::nfc::NFCLayerF Member List
+
+
+ +

This is the complete list of members for m5::nfc::NFCLayerF, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activePICC (defined in m5::nfc::NFCLayerF)m5::nfc::NFCLayerFprotected
_sk (defined in m5::nfc::NFCLayerF)m5::nfc::NFCLayerF
_sk1 (defined in m5::nfc::NFCLayerF)m5::nfc::NFCLayerF
_sk2 (defined in m5::nfc::NFCLayerF)m5::nfc::NFCLayerF
activate(const m5::nfc::f::PICC &picc)m5::nfc::NFCLayerF
activatedPICC() constm5::nfc::NFCLayerFinline
clearAuthenticate()m5::nfc::NFCLayerFinline
clearSPAD()m5::nfc::NFCLayerF
deactivate()m5::nfc::NFCLayerF
detect(m5::nfc::f::PICC &picc, const uint32_t timeout_ms=100U)m5::nfc::NFCLayerF
detect(std::vector< m5::nfc::f::PICC > &piccs, m5::nfc::f::TimeSlot time_slot=m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms=500U)m5::nfc::NFCLayerFinline
detect(std::vector< m5::nfc::f::PICC > &piccs, const uint16_t private_code, m5::nfc::f::TimeSlot time_slot=m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms=500U)m5::nfc::NFCLayerFinline
detect(std::vector< m5::nfc::f::PICC > &piccs, const uint16_t *private_code, const uint8_t pc_size, m5::nfc::f::TimeSlot time_slot=m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms=500U)m5::nfc::NFCLayerF
dump()m5::nfc::NFCLayerF
dump(const m5::nfc::f::block_t block)m5::nfc::NFCLayerF
dump_block(m5::nfc::f::block_t block) (defined in m5::nfc::NFCLayerF)m5::nfc::NFCLayerFprotected
dump_felica_lite() (defined in m5::nfc::NFCLayerF)m5::nfc::NFCLayerFprotected
dump_felica_lite_s() (defined in m5::nfc::NFCLayerF)m5::nfc::NFCLayerFprotected
external_authenticate_lite_s(const uint8_t ck[16], const uint16_t ckv) (defined in m5::nfc::NFCLayerF)m5::nfc::NFCLayerFprotected
externalAuthenticate(const uint8_t ck[16], const uint16_t ckv)m5::nfc::NFCLayerF
first_user_block() const overridem5::nfc::NFCLayerFinlineprotectedvirtual
internal_authenticate_lite_s(const uint8_t ck[16], const uint16_t ckv, const uint8_t rc[16], const bool include_wcnt=false) (defined in m5::nfc::NFCLayerF)m5::nfc::NFCLayerFprotected
internalAuthenticate(const uint8_t ck[16], const uint16_t ckv, const uint8_t rc[16])m5::nfc::NFCLayerF
isActive(const m5::nfc::f::PICC &picc) constm5::nfc::NFCLayerFinline
isoDEP()m5::nfc::NFCLayerInterfaceinlinevirtual
last_user_block() const overridem5::nfc::NFCLayerFinlineprotectedvirtual
maximum_fifo_depth() const overridem5::nfc::NFCLayerFvirtual
maximum_read_blocks() const overridem5::nfc::NFCLayerFinlineprotectedvirtual
maximum_write_blocks() const overridem5::nfc::NFCLayerFinlineprotectedvirtual
ndefIsValidFormat(bool &valid)m5::nfc::NFCLayerF
ndefRead(m5::nfc::ndef::TLV &msg)m5::nfc::NFCLayerF
ndefWrite(const m5::nfc::ndef::TLV &msg)m5::nfc::NFCLayerF
NFCLayerF(m5::unit::UnitST25R3916 &u) (defined in m5::nfc::NFCLayerF)m5::nfc::NFCLayerFexplicit
NFCLayerF(m5::unit::CapST25R3916 &u) (defined in m5::nfc::NFCLayerF)m5::nfc::NFCLayerFexplicit
polling(m5::nfc::f::PICC &picc, const uint16_t system_code, const m5::nfc::f::RequestCode request_code, const m5::nfc::f::TimeSlot time_slot)m5::nfc::NFCLayerF
reactivate(const m5::nfc::f::PICC &picc)m5::nfc::NFCLayerFinline
read(uint8_t *rx, uint16_t &rx_len, const m5::nfc::f::block_t sblock)m5::nfc::NFCLayerF
read(uint8_t *rx, uint16_t &rx_len, const m5::nfc::f::block_t *block_list, const uint8_t block_num, const uint16_t *service_code, const uint8_t service_num)m5::nfc::NFCLayerFinline
read(uint8_t *rx, uint16_t &rx_len, const uint16_t saddr) overridem5::nfc::NFCLayerFprotectedvirtual
read16(uint8_t rx[16], const m5::nfc::f::block_t block, const uint16_t service_code=m5::nfc::f::service_random_read)m5::nfc::NFCLayerFinline
read16(uint8_t rx[16], const m5::nfc::f::block_t *block, const uint8_t block_num, const uint16_t service_code=m5::nfc::f::service_random_read)m5::nfc::NFCLayerF
read_without_encryption_impl(uint8_t *rx, uint16_t &rx_len, const m5::nfc::f::block_t *block_list, const uint8_t block_num, const uint16_t *service_code, const uint8_t service_num, const m5::nfc::f::PICC &picc) (defined in m5::nfc::NFCLayerF)m5::nfc::NFCLayerFprotected
readWithMAC16(uint8_t rx[16], const m5::nfc::f::block_t block)m5::nfc::NFCLayerF
receive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)m5::nfc::NFCLayerInterfaceinlinevirtual
request_response_impl(const m5::nfc::f::PICC &picc, m5::nfc::f::standard::Mode &mode) (defined in m5::nfc::NFCLayerF)m5::nfc::NFCLayerFprotected
requestResponse(m5::nfc::f::standard::Mode &mode)m5::nfc::NFCLayerFinline
requestService(uint16_t &key_version, const uint16_t node_code)m5::nfc::NFCLayerF
requestService(uint16_t key_version[], const uint16_t *node_code, const uint8_t node_num)m5::nfc::NFCLayerF
requestSystemCode(uint16_t code_list[255], uint8_t &code_num)m5::nfc::NFCLayerF
supportsFilesystem() constm5::nfc::NFCLayerInterfaceinlinevirtual
supportsNFCTag() constm5::nfc::NFCLayerInterfaceinlinevirtual
transceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::nfc::NFCLayerInterfaceinlinevirtual
transmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::nfc::NFCLayerInterfaceinlinevirtual
unit_size_read() const overridem5::nfc::NFCLayerFinlineprotectedvirtual
unit_size_write() const overridem5::nfc::NFCLayerFinlineprotectedvirtual
user_area_size() constm5::nfc::NFCLayerFinlineprotectedvirtual
write(const m5::nfc::f::block_t sblock, const uint8_t *tx, const uint16_t tx_len)m5::nfc::NFCLayerF
write(const uint16_t saddr, const uint8_t *tx, const uint16_t tx_len) overridem5::nfc::NFCLayerFprotectedvirtual
write16(const m5::nfc::f::block_t block, const uint8_t tx[16], const uint16_t tx_len)m5::nfc::NFCLayerF
write_without_encryption_impl(const m5::nfc::f::PICC &picc, const m5::nfc::f::block_t *block_list, const uint8_t block_num, const uint16_t *service_code, const uint8_t service_num, const uint8_t *tx, const uint16_t tx_len) (defined in m5::nfc::NFCLayerF)m5::nfc::NFCLayerFprotected
writeSupportNDEF(const bool enabled)m5::nfc::NFCLayerF
writeWithMAC16(const m5::nfc::f::block_t block, const uint8_t tx[16], const uint16_t tx_len)m5::nfc::NFCLayerF
+
+ + + + diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_f.html b/classm5_1_1nfc_1_1_n_f_c_layer_f.html new file mode 100644 index 0000000..7971073 --- /dev/null +++ b/classm5_1_1nfc_1_1_n_f_c_layer_f.html @@ -0,0 +1,1780 @@ + + + + + + + +M5Unit-NFC: m5::nfc::NFCLayerF Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
m5::nfc::NFCLayerF Class Reference
+
+
+ +

Common interface layer for each chip of the NFC-F reader. + More...

+ +

#include <nfc_layer_f.hpp>

+
+Inheritance diagram for m5::nfc::NFCLayerF:
+
+
+ + +m5::nfc::NFCLayerInterface + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

NFCLayerF (m5::unit::UnitST25R3916 &u)
 
NFCLayerF (m5::unit::CapST25R3916 &u)
 
virtual uint16_t maximum_fifo_depth () const override
 Maximum FIFO depth.
 
bool isActive (const m5::nfc::f::PICC &picc) const
 Is the specified PICC currently active?
 
const m5::nfc::f::PICCactivatedPICC () const
 Retrieve the currently activated PICC.
 
Detection and activation
bool polling (m5::nfc::f::PICC &picc, const uint16_t system_code, const m5::nfc::f::RequestCode request_code, const m5::nfc::f::TimeSlot time_slot)
 Polling.
 
bool detect (m5::nfc::f::PICC &picc, const uint32_t timeout_ms=100U)
 Detect single PICC.
 
bool detect (std::vector< m5::nfc::f::PICC > &piccs, m5::nfc::f::TimeSlot time_slot=m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms=500U)
 Detect PICCs.
 
bool detect (std::vector< m5::nfc::f::PICC > &piccs, const uint16_t private_code, m5::nfc::f::TimeSlot time_slot=m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms=500U)
 Detect PICCs matching the specified system code.
 
bool detect (std::vector< m5::nfc::f::PICC > &piccs, const uint16_t *private_code, const uint8_t pc_size, m5::nfc::f::TimeSlot time_slot=m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms=500U)
 Detect PICCs matching the specified system code.
 
bool activate (const m5::nfc::f::PICC &picc)
 Activate a specific PICC.
 
bool reactivate (const m5::nfc::f::PICC &picc)
 Activate a specific PICC.
 
For activated PICC
bool deactivate ()
 Deactivate PICC.
 
bool requestService (uint16_t &key_version, const uint16_t node_code)
 Request service.
 
bool requestService (uint16_t key_version[], const uint16_t *node_code, const uint8_t node_num)
 Request service.
 
bool requestResponse (m5::nfc::f::standard::Mode &mode)
 Request response.
 
bool requestSystemCode (uint16_t code_list[255], uint8_t &code_num)
 Request system code.
 
bool dump ()
 Dump all blocks.
 
bool dump (const m5::nfc::f::block_t block)
 Dump 1 block.
 
Read/Write without encryption
Note
For activated PICC
+
bool read16 (uint8_t rx[16], const m5::nfc::f::block_t block, const uint16_t service_code=m5::nfc::f::service_random_read)
 Read the 1 block with service code.
 
bool read16 (uint8_t rx[16], const m5::nfc::f::block_t *block, const uint8_t block_num, const uint16_t service_code=m5::nfc::f::service_random_read)
 Read the 1 block with service codes.
 
bool read (uint8_t *rx, uint16_t &rx_len, const m5::nfc::f::block_t sblock)
 Read any bytes from user area.
 
bool read (uint8_t *rx, uint16_t &rx_len, const m5::nfc::f::block_t *block_list, const uint8_t block_num, const uint16_t *service_code, const uint8_t service_num)
 Read the specified block list and service codes.
 
bool write16 (const m5::nfc::f::block_t block, const uint8_t tx[16], const uint16_t tx_len)
 Write the 1 block.
 
bool write (const m5::nfc::f::block_t sblock, const uint8_t *tx, const uint16_t tx_len)
 Write any bytes to user area.
 
bool clearSPAD ()
 Clear SPAD_0 - 13.
 
Read/Write with MAC
Note
For activated PICC
+
bool internalAuthenticate (const uint8_t ck[16], const uint16_t ckv, const uint8_t rc[16])
 Internal authentication.
 
bool externalAuthenticate (const uint8_t ck[16], const uint16_t ckv)
 External authentication.
 
void clearAuthenticate ()
 Internal authentication.
 
bool readWithMAC16 (uint8_t rx[16], const m5::nfc::f::block_t block)
 Read the 1 block.
 
bool writeWithMAC16 (const m5::nfc::f::block_t block, const uint8_t tx[16], const uint16_t tx_len)
 Write the 1 block.
 
NDEF
Note
For activated PICC
+
bool ndefIsValidFormat (bool &valid)
 Is the PICC data in NDEF format?
 
bool ndefRead (m5::nfc::ndef::TLV &msg)
 Read NDEF Message TLV.
 
bool ndefWrite (const m5::nfc::ndef::TLV &msg)
 Write NDEF message TLV.
 
bool writeSupportNDEF (const bool enabled)
 Write changes for NDEF Support.
 
- Public Member Functions inherited from m5::nfc::NFCLayerInterface
virtual m5::nfc::NFCForumTag supportsNFCTag () const
 activePICC's NDEF type
 
virtual file_system_feature_t supportsFilesystem () const
 activePICC's File system
 
virtual m5::nfc::isodep::IsoDEPisoDEP ()
 ISO-DEP interface (nullptr if not supported)
 
virtual bool transceive (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transceive (RF command)
 
virtual bool transmit (const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transmit only.
 
virtual bool receive (uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
 Receive only.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

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
 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.
 
virtual uint8_t maximum_read_blocks () const override
 Maximum read blocks for NFC-F.
 
virtual uint8_t maximum_write_blocks () const override
 Maximum write blocks for NFC-F.
 
+bool request_response_impl (const m5::nfc::f::PICC &picc, m5::nfc::f::standard::Mode &mode)
 
+bool read_without_encryption_impl (uint8_t *rx, uint16_t &rx_len, const m5::nfc::f::block_t *block_list, const uint8_t block_num, const uint16_t *service_code, const uint8_t service_num, const m5::nfc::f::PICC &picc)
 
+bool write_without_encryption_impl (const m5::nfc::f::PICC &picc, const m5::nfc::f::block_t *block_list, const uint8_t block_num, const uint16_t *service_code, const uint8_t service_num, const uint8_t *tx, const uint16_t tx_len)
 
+bool dump_felica_lite ()
 
+bool dump_felica_lite_s ()
 
+bool dump_block (m5::nfc::f::block_t block)
 
+bool internal_authenticate_lite_s (const uint8_t ck[16], const uint16_t ckv, const uint8_t rc[16], const bool include_wcnt=false)
 
+bool external_authenticate_lite_s (const uint8_t ck[16], const uint16_t ckv)
 
+ + + +

+Protected Attributes

+m5::nfc::f::PICC _activePICC {}
 
+

Detailed Description

+

Common interface layer for each chip of the NFC-F reader.

+

Member Function Documentation

+ +

◆ activate()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerF::activate (const m5::nfc::f::PICC & picc)
+
+ +

Activate a specific PICC.

+
Parameters
+ + +
piccPICC
+
+
+
Returns
True if successful
+
Note
For compatibility with other NFCLayer components
+ +
+
+ +

◆ activatedPICC()

+ +
+
+ + + + + +
+ + + + + + + +
const m5::nfc::f::PICC & m5::nfc::NFCLayerF::activatedPICC () const
+
+inline
+
+ +

Retrieve the currently activated PICC.

+
Returns
Active PICC
+
Note
Returns an empty PICC if no PICC is selected (no ACTIVE state)
+ +
+
+ +

◆ clearAuthenticate()

+ +
+
+ + + + + +
+ + + + + + + +
void m5::nfc::NFCLayerF::clearAuthenticate ()
+
+inline
+
+ +

Internal authentication.

+
Parameters
+ + + + +
ckCard key
ckvCard key version
rcRandom challenge
+
+
+
Returns
True if successful
+ +
+
+ +

◆ clearSPAD()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerF::clearSPAD ()
+
+ +

Clear SPAD_0 - 13.

+
Returns
True if successful
+
Precondition
Each area can be written to without authentication
+ +
+
+ +

◆ deactivate()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerF::deactivate ()
+
+ +

Deactivate PICC.

+
Returns
True if successful
+
Note
For compatibility with other NFCLayer components
+ +
+
+ +

◆ detect() [1/4]

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerF::detect (m5::nfc::f::PICC & picc,
const uint32_t timeout_ms = 100U )
+
+ +

Detect single PICC.

+
Parameters
+ + + +
[out]piccDetected PICC
timeout_msPolling time budget in milliseconds
+
+
+
Returns
True if detected
+
Warning
Misclassification may occur depending on the distance between the reader and the PICC
+ +
+
+ +

◆ detect() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerF::detect (std::vector< m5::nfc::f::PICC > & piccs,
const uint16_t * private_code,
const uint8_t pc_size,
m5::nfc::f::TimeSlot time_slot = m5::nfc::f::TimeSlot::Slot16,
const uint32_t timeout_ms = 500U )
+
+ +

Detect PICCs matching the specified system code.

+
Parameters
+ + + + + + +
[out]piccsDetected PICCs
private_codePrivate system code array
pc_sizeprivate_code size
time_slotMaximum number of slots that can be responded
timeout_msPolling time budget in milliseconds
+
+
+
Returns
True if detected
+
Note
If a private code is specified, PICC that does not meet the conditions will not be detected
+
+private codes are OR matching
+
Warning
Misclassification may occur depending on the distance between the reader and the PICC
+ +
+
+ +

◆ detect() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerF::detect (std::vector< m5::nfc::f::PICC > & piccs,
const uint16_t private_code,
m5::nfc::f::TimeSlot time_slot = m5::nfc::f::TimeSlot::Slot16,
const uint32_t timeout_ms = 500U )
+
+inline
+
+ +

Detect PICCs matching the specified system code.

+
Parameters
+ + + + + +
[out]piccsDetected PICCs
private_codePrivate system code
time_slotMaximum number of slots that can be responded
timeout_msPolling time budget in milliseconds
+
+
+
Returns
True if detected
+
Note
If a private code is specified, PICC that does not meet the conditions will not be detected
+
Warning
Misclassification may occur depending on the distance between the reader and the PICC
+ +
+
+ +

◆ detect() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerF::detect (std::vector< m5::nfc::f::PICC > & piccs,
m5::nfc::f::TimeSlot time_slot = m5::nfc::f::TimeSlot::Slot16,
const uint32_t timeout_ms = 500U )
+
+inline
+
+ +

Detect PICCs.

+
Parameters
+ + + + +
[out]piccsDetected PICCs
time_slotMaximum number of slots that can be responded
timeout_msPolling time budget in milliseconds
+
+
+
Returns
True if detected
+
Warning
Misclassification may occur depending on the distance between the reader and the PICC
+ +
+
+ +

◆ dump() [1/2]

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerF::dump ()
+
+ +

Dump all blocks.

+
Returns
True if successful
+
Note
Only the sections that can be read without encryption
+ +
+
+ +

◆ dump() [2/2]

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerF::dump (const m5::nfc::f::block_t block)
+
+ +

Dump 1 block.

+
Parameters
+ + +
blockblock list element
+
+
+
Returns
True if successful
+
Note
Only the sections that can be read without encryption
+ +
+
+ +

◆ externalAuthenticate()

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerF::externalAuthenticate (const uint8_t ck[16],
const uint16_t ckv )
+
+ +

External authentication.

+
Parameters
+ + +
wcntWCNT value
+
+
+
Returns
True if successful
+
Precondition
internalAuthenticate
+ +
+
+ +

◆ first_user_block()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerF::first_user_block () const
+
+inlineoverrideprotectedvirtual
+
+ +

First user block.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ internalAuthenticate()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerF::internalAuthenticate (const uint8_t ck[16],
const uint16_t ckv,
const uint8_t rc[16] )
+
+ +

Internal authentication.

+
Parameters
+ + + + +
ckCard key
ckvCard key version
rcRandom challenge
+
+
+
Returns
True if successful
+ +
+
+ +

◆ isActive()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::nfc::NFCLayerF::isActive (const m5::nfc::f::PICC & picc) const
+
+inline
+
+ +

Is the specified PICC currently active?

+
Parameters
+ + +
piccPICC to check
+
+
+
Returns
True if this PICC is the one currently selected (ACTIVE state)
+ +
+
+ +

◆ last_user_block()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerF::last_user_block () const
+
+inlineoverrideprotectedvirtual
+
+ +

Last user block.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ maximum_fifo_depth()

+ +
+
+ + + + + +
+ + + + + + + +
uint16_t m5::nfc::NFCLayerF::maximum_fifo_depth () const
+
+overridevirtual
+
+ +

Maximum FIFO depth.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ maximum_read_blocks()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint8_t m5::nfc::NFCLayerF::maximum_read_blocks () const
+
+inlineoverrideprotectedvirtual
+
+ +

Maximum read blocks for NFC-F.

+ +

Reimplemented from m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ maximum_write_blocks()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint8_t m5::nfc::NFCLayerF::maximum_write_blocks () const
+
+inlineoverrideprotectedvirtual
+
+ +

Maximum write blocks for NFC-F.

+ +

Reimplemented from m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ ndefIsValidFormat()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerF::ndefIsValidFormat (bool & valid)
+
+ +

Is the PICC data in NDEF format?

+
Parameters
+ + +
[out]validTrue if NDEF format
+
+
+
Returns
True if successful
+ +
+
+ +

◆ ndefRead()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerF::ndefRead (m5::nfc::ndef::TLV & msg)
+
+ +

Read NDEF Message TLV.

+
Parameters
+ + +
[out]msgMessage If it does not exist, a Null TLV is returned
+
+
+
Returns
True if successful
+
Note
If multiple messages of the same type exist, return the first one
+
Warning
Only PICC cards supporting NDEF are valid
+ +
+
+ +

◆ ndefWrite()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerF::ndefWrite (const m5::nfc::ndef::TLV & msg)
+
+ +

Write NDEF message TLV.

+
Parameters
+ + +
msgMessage TLV
+
+
+
Returns
True if successful
+
Warning
Existing record will be overwritten
+
+Only PICC cards supporting NDEF are valid
+ +
+
+ +

◆ polling()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerF::polling (m5::nfc::f::PICC & picc,
const uint16_t system_code,
const m5::nfc::f::RequestCode request_code,
const m5::nfc::f::TimeSlot time_slot )
+
+ +

Polling.

+
Parameters
+ + + + + +
[out]PICCdetected PICC
system_codeSystem code
request_codeRequest code
time_slotMaximum number of slots that can be responded
+
+
+
Returns
True if successful
+
Note
SENSF_REQ
+ +
+
+ +

◆ reactivate()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::nfc::NFCLayerF::reactivate (const m5::nfc::f::PICC & picc)
+
+inline
+
+ +

Activate a specific PICC.

+
Parameters
+ + +
piccPICC
+
+
+
Returns
True if successful
+
Note
For compatibility with other NFCLayer components
+ +
+
+ +

◆ read() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerF::read (uint8_t * rx,
uint16_t & rx_len,
const m5::nfc::f::block_t * block_list,
const uint8_t block_num,
const uint16_t * service_code,
const uint8_t service_num )
+
+inline
+
+ +

Read the specified block list and service codes.

+
Parameters
+ + + + + + + +
[out]rxBuffer (At least 16 * block_num)
[in/out]rx_len in:buffer size, out:actual read size
blockTarget block array
block_numNumber of block
service_codeService code array
service_numNumber of service code
+
+
+
Returns
True if successful
+
Warning
rx in 16-byte units
+ +
+
+ +

◆ read() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerF::read (uint8_t * rx,
uint16_t & rx_len,
const m5::nfc::f::block_t sblock )
+
+ +

Read any bytes from user area.

+

Continue reading only the user area from the first block of the user area until rx_len is satisfied

Parameters
+ + + + +
[out]rxBuffer
[in/out]rx_len in:buffer size, out:actual read size
sblockBlock to start reading
+
+
+
Returns
True if successful
+
Warning
rx in 16-byte units
+ +
+
+ +

◆ read() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerF::read (uint8_t * rx,
uint16_t & rx_len,
const uint16_t saddr )
+
+overrideprotectedvirtual
+
+ +

Read NDEF (block)

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ read16() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerF::read16 (uint8_t rx[16],
const m5::nfc::f::block_t * block,
const uint8_t block_num,
const uint16_t service_code = m5::nfc::f::service_random_read )
+
+ +

Read the 1 block with service codes.

+
Parameters
+ + + + + +
[out]rxOutput buffer
blockTarget block array
block_numNumber of block
service_codeService code
+
+
+
Returns
True if successful
+
Parameters
+ + +
service_codeService code
+
+
+ +
+
+ +

◆ read16() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerF::read16 (uint8_t rx[16],
const m5::nfc::f::block_t block,
const uint16_t service_code = m5::nfc::f::service_random_read )
+
+inline
+
+ +

Read the 1 block with service code.

+
Parameters
+ + + + +
[out]rxOutput buffer
blockTarget block
service_codeService code
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readWithMAC16()

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerF::readWithMAC16 (uint8_t rx[16],
const m5::nfc::f::block_t block )
+
+ +

Read the 1 block.

+
Parameters
+ + + +
[out]rxOutput buffer
blockTarget block
+
+
+
Returns
True if successful
+
Precondition
internalAuthentication
+ +
+
+ +

◆ requestResponse()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::nfc::NFCLayerF::requestResponse (m5::nfc::f::standard::Mode & mode)
+
+inline
+
+ +

Request response.

+
Returns
True if successful
+
Parameters
+ + +
[out]modeMode if detected
+
+
+
Warning
FeliCa Standard only
+ +
+
+ +

◆ requestService() [1/2]

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerF::requestService (uint16_t & key_version,
const uint16_t node_code )
+
+ +

Request service.

+
Parameters
+ + + +
[out]key_versionKey version
node_codeNode code
+
+
+
Returns
True if successful
+
Warning
FeliCa Standard only
+ +
+
+ +

◆ requestService() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerF::requestService (uint16_t key_version[],
const uint16_t * node_code,
const uint8_t node_num )
+
+ +

Request service.

+
Parameters
+ + + + +
[out]key_versionKey version array (at least node_num)
node_codeNode code array
node_numNumber of node_code
+
+
+
Returns
True if successful
+
Warning
FeliCa Standard only
+ +
+
+ +

◆ requestSystemCode()

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerF::requestSystemCode (uint16_t code_list[255],
uint8_t & code_num )
+
+ +

Request system code.

+
Parameters
+ + + +
[out]code_listCode list array (at least 255)
[out]code_numNumber of code_list
+
+
+
Returns
True if successful
+
Warning
FeliCa Standard only
+ +
+
+ +

◆ unit_size_read()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerF::unit_size_read () const
+
+inlineoverrideprotectedvirtual
+
+ +

Unit size for read.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ unit_size_write()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerF::unit_size_write () const
+
+inlineoverrideprotectedvirtual
+
+ +

Unit size for write.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ user_area_size()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerF::user_area_size () const
+
+inlineprotectedvirtual
+
+ +

User area size (bytes)

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ write() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerF::write (const m5::nfc::f::block_t sblock,
const uint8_t * tx,
const uint16_t tx_len )
+
+ +

Write any bytes to user area.

+

Continue writing only the user area from the first block of the user area until tx_len is satisfied

Parameters
+ + + + +
sblockBlock to start writing
txBuffer
tx_lenBuffer size
+
+
+
Returns
True if successful
+ +
+
+ +

◆ write() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerF::write (const uint16_t saddr,
const uint8_t * tx,
const uint16_t tx_len )
+
+overrideprotectedvirtual
+
+ +

Write NDEF (block)

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ write16()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerF::write16 (const m5::nfc::f::block_t block,
const uint8_t tx[16],
const uint16_t tx_len )
+
+ +

Write the 1 block.

+
Parameters
+ + + + +
blockTarget block
txBuffer
tx_lenBuffer size
+
+
+
Returns
True if successful
+
Warning
If the tx_len is less than 16 bytes, the remaining space is filled with 0x00
+
+If the tx_len is larger than 16 bytes, only the first 16 bytes will be written
+ +
+
+ +

◆ writeSupportNDEF()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerF::writeSupportNDEF (const bool enabled)
+
+ +

Write changes for NDEF Support.

+
Parameters
+ + +
enabledSupport NDEF if true, NOT support NDEF if false
+
+
+
Returns
True if successful
+
Warning
Only FeliCa Lite, Lite-S
+ +
+
+ +

◆ writeWithMAC16()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerF::writeWithMAC16 (const m5::nfc::f::block_t block,
const uint8_t tx[16],
const uint16_t tx_len )
+
+ +

Write the 1 block.

+
Parameters
+ + + + +
blockTarget block
txBuffer
tx_lenBuffer size
+
+
+
Returns
True if successful
+
Warning
If the tx_len is less than 16 bytes, the remaining space is filled with 0x00
+
+If the tx_len is larger than 16 bytes, only the first 16 bytes will be written
+ +
+
+
+
+ + + + diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_f.js b/classm5_1_1nfc_1_1_n_f_c_layer_f.js new file mode 100644 index 0000000..ebe09e5 --- /dev/null +++ b/classm5_1_1nfc_1_1_n_f_c_layer_f.js @@ -0,0 +1,45 @@ +var classm5_1_1nfc_1_1_n_f_c_layer_f = +[ + [ "activate", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#acb1e41eb54c5b681ca9ae7cd376d2eec", null ], + [ "activatedPICC", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#adca10cd40a000169aab21a481b71af39", null ], + [ "clearAuthenticate", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#ab684a8b787b35c412f1355628d69bc21", null ], + [ "clearSPAD", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#ab313782218cdc477b5aaccab7ca19f1f", null ], + [ "deactivate", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#aa34354dea55ce71e7c70aecb1ec22a8a", null ], + [ "detect", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a9fa7a8af76839d34cac5f331f977e720", null ], + [ "detect", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a43a7d253f38a6e04193d357315a4146d", null ], + [ "detect", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a8bb0ddf3d83e1a97f6a48a0785843677", null ], + [ "detect", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a4a11ce7567ba28e73b190fc8f85a80c8", null ], + [ "dump", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a65609df72661c064e263393568a4ee94", null ], + [ "dump", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a63227192207ac7e9765d7614a9ec56e8", null ], + [ "externalAuthenticate", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#ac1af90c0d51679b17f6683363f2e10e5", null ], + [ "first_user_block", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a25f967cdd0b42931f81251a6de95ee1d", null ], + [ "internalAuthenticate", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#ad82b91839ba166ddf3436bf778c53ca2", null ], + [ "isActive", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a7322e1fce003b6e46b97e3f22ee5426c", null ], + [ "last_user_block", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a956455e727841c422a74291153826b23", null ], + [ "maximum_fifo_depth", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a5de1bdcebe2ccdb11afce01c935dc02c", null ], + [ "maximum_read_blocks", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a3b3990b2beea5f67e15f08c4ba99c796", null ], + [ "maximum_write_blocks", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#acac7c970e5610b59b0f81e508e636b6d", null ], + [ "ndefIsValidFormat", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#ad1520432e55adb603947654d20161360", null ], + [ "ndefRead", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#abe7f8fa12217d61879a285a6f49e3dc7", null ], + [ "ndefWrite", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a090972d382390655204396fa987ed61b", null ], + [ "polling", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#ade2cd62f823c42002b8e472037df8a47", null ], + [ "reactivate", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a923fe889716bb854eb3301021c8aab06", null ], + [ "read", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#ae221de1f093613ca44369d3ca97ac9b0", null ], + [ "read", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a240d28b530067a9fcdc8c71757d38cf6", null ], + [ "read", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#ae283e46dc39f2c24898458aeef09fb75", null ], + [ "read16", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#add666921e4988c41198b5eb2d575f081", null ], + [ "read16", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a089dbc2c19a53d7df1e8dd07af25647d", null ], + [ "readWithMAC16", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a603413d14aae3edf6cf6ab8ced48aa09", null ], + [ "requestResponse", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a173474e60fa825cca43c1f96c2d23648", null ], + [ "requestService", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a122ec944def369e0b084f8f1f3d14e7e", null ], + [ "requestService", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#ad064c3162f02f483ef7672a885a7e778", null ], + [ "requestSystemCode", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#aeedd43471a62cde89d8b62229ba3c19d", null ], + [ "unit_size_read", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a34ca54b19d762ad541378304dd751175", null ], + [ "unit_size_write", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a66f6f636a210a8a78f41a94cfc7bcfee", null ], + [ "user_area_size", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#ac08779e3debb8d158e3aa213677d6a92", null ], + [ "write", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#ac21ff34e93d4973fca6eccdaf093f79f", null ], + [ "write", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a9ab7eb934accdfa3335a9c4cd6eed63e", null ], + [ "write16", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#afb06a34128696f7c450a212258409834", null ], + [ "writeSupportNDEF", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#acbea08d87d6b3991eedc426a8f7b0abd", null ], + [ "writeWithMAC16", "classm5_1_1nfc_1_1_n_f_c_layer_f.html#a34899dba220ca49f9762bc5a0d9db3c3", null ] +]; \ No newline at end of file diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_f.png b/classm5_1_1nfc_1_1_n_f_c_layer_f.png new file mode 100644 index 0000000..49098af Binary files /dev/null and b/classm5_1_1nfc_1_1_n_f_c_layer_f.png differ diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_interface-members.html b/classm5_1_1nfc_1_1_n_f_c_layer_interface-members.html new file mode 100644 index 0000000..22274e0 --- /dev/null +++ b/classm5_1_1nfc_1_1_n_f_c_layer_interface-members.html @@ -0,0 +1,130 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
m5::nfc::NFCLayerInterface Member List
+
+
+ +

This is the complete list of members for m5::nfc::NFCLayerInterface, including all inherited members.

+ + + + + + + + + + + + + + + + + +
first_user_block() const =0m5::nfc::NFCLayerInterfacepure virtual
isoDEP()m5::nfc::NFCLayerInterfaceinlinevirtual
last_user_block() const =0m5::nfc::NFCLayerInterfacepure virtual
maximum_fifo_depth() const =0m5::nfc::NFCLayerInterfacepure virtual
maximum_read_blocks() constm5::nfc::NFCLayerInterfaceinlinevirtual
maximum_write_blocks() constm5::nfc::NFCLayerInterfaceinlinevirtual
read(uint8_t *rx, uint16_t &rx_len, const uint16_t saddr)=0m5::nfc::NFCLayerInterfacepure virtual
receive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)m5::nfc::NFCLayerInterfaceinlinevirtual
supportsFilesystem() constm5::nfc::NFCLayerInterfaceinlinevirtual
supportsNFCTag() constm5::nfc::NFCLayerInterfaceinlinevirtual
transceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::nfc::NFCLayerInterfaceinlinevirtual
transmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::nfc::NFCLayerInterfaceinlinevirtual
unit_size_read() const =0m5::nfc::NFCLayerInterfacepure virtual
unit_size_write() const =0m5::nfc::NFCLayerInterfacepure virtual
user_area_size() const =0m5::nfc::NFCLayerInterfacepure virtual
write(const uint16_t saddr, const uint8_t *tx, const uint16_t tx_len)=0m5::nfc::NFCLayerInterfacepure virtual
+
+ + + + diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_interface.html b/classm5_1_1nfc_1_1_n_f_c_layer_interface.html new file mode 100644 index 0000000..3997b47 --- /dev/null +++ b/classm5_1_1nfc_1_1_n_f_c_layer_interface.html @@ -0,0 +1,706 @@ + + + + + + + +M5Unit-NFC: m5::nfc::NFCLayerInterface Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
m5::nfc::NFCLayerInterface Class Referenceabstract
+
+
+ +

Common interface for NFC layer. + More...

+ +

#include <nfc_layer.hpp>

+
+Inheritance diagram for m5::nfc::NFCLayerInterface:
+
+
+ + +m5::nfc::NFCLayerA +m5::nfc::NFCLayerB +m5::nfc::NFCLayerF +m5::nfc::NFCLayerV + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual m5::nfc::NFCForumTag supportsNFCTag () const
 activePICC's NDEF type
 
virtual file_system_feature_t supportsFilesystem () const
 activePICC's File system
 
virtual m5::nfc::isodep::IsoDEPisoDEP ()
 ISO-DEP interface (nullptr if not supported)
 
virtual uint16_t maximum_fifo_depth () const =0
 Maximum FIFO depth.
 
virtual bool transceive (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transceive (RF command)
 
virtual bool transmit (const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transmit only.
 
virtual bool receive (uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
 Receive only.
 
virtual bool read (uint8_t *rx, uint16_t &rx_len, const uint16_t saddr)=0
 Read NDEF (block)
 
virtual bool write (const uint16_t saddr, const uint8_t *tx, const uint16_t tx_len)=0
 Write NDEF (block)
 
virtual uint16_t first_user_block () const =0
 First user block.
 
virtual uint16_t last_user_block () const =0
 Last user block.
 
virtual uint16_t user_area_size () const =0
 User area size (bytes)
 
virtual uint16_t unit_size_read () const =0
 Unit size for read.
 
virtual uint16_t unit_size_write () const =0
 Unit size for write.
 
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.
 
+

Detailed Description

+

Common interface for NFC layer.

+

Member Function Documentation

+ +

◆ first_user_block()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerInterface::first_user_block () const
+
+pure virtual
+
+ +

First user block.

+ +

Implemented in m5::nfc::NFCLayerA, m5::nfc::NFCLayerB, m5::nfc::NFCLayerF, and m5::nfc::NFCLayerV.

+ +
+
+ +

◆ isoDEP()

+ +
+
+ + + + + +
+ + + + + + + +
virtual m5::nfc::isodep::IsoDEP * m5::nfc::NFCLayerInterface::isoDEP ()
+
+inlinevirtual
+
+ +

ISO-DEP interface (nullptr if not supported)

+ +

Reimplemented in m5::nfc::NFCLayerA, and m5::nfc::NFCLayerB.

+ +
+
+ +

◆ last_user_block()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerInterface::last_user_block () const
+
+pure virtual
+
+ +

Last user block.

+ +

Implemented in m5::nfc::NFCLayerA, m5::nfc::NFCLayerB, m5::nfc::NFCLayerF, and m5::nfc::NFCLayerV.

+ +
+
+ +

◆ maximum_fifo_depth()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerInterface::maximum_fifo_depth () const
+
+pure virtual
+
+ +

Maximum FIFO depth.

+ +

Implemented in m5::nfc::NFCLayerA, m5::nfc::NFCLayerB, m5::nfc::NFCLayerF, and m5::nfc::NFCLayerV.

+ +
+
+ +

◆ maximum_read_blocks()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint8_t m5::nfc::NFCLayerInterface::maximum_read_blocks () const
+
+inlinevirtual
+
+ +

Maximum read blocks for NFC-F.

+ +

Reimplemented in m5::nfc::NFCLayerF.

+ +
+
+ +

◆ maximum_write_blocks()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint8_t m5::nfc::NFCLayerInterface::maximum_write_blocks () const
+
+inlinevirtual
+
+ +

Maximum write blocks for NFC-F.

+ +

Reimplemented in m5::nfc::NFCLayerF.

+ +
+
+ +

◆ read()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
virtual bool m5::nfc::NFCLayerInterface::read (uint8_t * rx,
uint16_t & rx_len,
const uint16_t saddr )
+
+pure virtual
+
+ +

Read NDEF (block)

+ +

Implemented in m5::nfc::NFCLayerA, m5::nfc::NFCLayerB, m5::nfc::NFCLayerF, and m5::nfc::NFCLayerV.

+ +
+
+ +

◆ receive()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
virtual bool m5::nfc::NFCLayerInterface::receive (uint8_t * rx,
uint16_t & rx_len,
const uint32_t timeout_ms )
+
+inlinevirtual
+
+ +

Receive only.

+ +

Reimplemented in m5::nfc::NFCLayerB.

+ +
+
+ +

◆ supportsFilesystem()

+ +
+
+ + + + + +
+ + + + + + + +
virtual file_system_feature_t m5::nfc::NFCLayerInterface::supportsFilesystem () const
+
+inlinevirtual
+
+ +

activePICC's File system

+ +

Reimplemented in m5::nfc::NFCLayerA.

+ +
+
+ +

◆ supportsNFCTag()

+ +
+
+ + + + + +
+ + + + + + + +
virtual m5::nfc::NFCForumTag m5::nfc::NFCLayerInterface::supportsNFCTag () const
+
+inlinevirtual
+
+ +

activePICC's NDEF type

+ +

Reimplemented in m5::nfc::NFCLayerA.

+ +
+
+ +

◆ transceive()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool m5::nfc::NFCLayerInterface::transceive (uint8_t * rx,
uint16_t & rx_len,
const uint8_t * tx,
const uint16_t tx_len,
const uint32_t timeout_ms )
+
+inlinevirtual
+
+ +

Transceive (RF command)

+ +

Reimplemented in m5::nfc::NFCLayerA, and m5::nfc::NFCLayerB.

+ +
+
+ +

◆ transmit()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
virtual bool m5::nfc::NFCLayerInterface::transmit (const uint8_t * tx,
const uint16_t tx_len,
const uint32_t timeout_ms )
+
+inlinevirtual
+
+ +

Transmit only.

+ +

Reimplemented in m5::nfc::NFCLayerB.

+ +
+
+ +

◆ unit_size_read()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerInterface::unit_size_read () const
+
+pure virtual
+
+ +

Unit size for read.

+ +

Implemented in m5::nfc::NFCLayerA, m5::nfc::NFCLayerB, m5::nfc::NFCLayerF, and m5::nfc::NFCLayerV.

+ +
+
+ +

◆ unit_size_write()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerInterface::unit_size_write () const
+
+pure virtual
+
+ +

Unit size for write.

+ +

Implemented in m5::nfc::NFCLayerA, m5::nfc::NFCLayerB, m5::nfc::NFCLayerF, and m5::nfc::NFCLayerV.

+ +
+
+ +

◆ user_area_size()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerInterface::user_area_size () const
+
+pure virtual
+
+ +

User area size (bytes)

+ +

Implemented in m5::nfc::NFCLayerA, m5::nfc::NFCLayerB, m5::nfc::NFCLayerF, and m5::nfc::NFCLayerV.

+ +
+
+ +

◆ write()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
virtual bool m5::nfc::NFCLayerInterface::write (const uint16_t saddr,
const uint8_t * tx,
const uint16_t tx_len )
+
+pure virtual
+
+ +

Write NDEF (block)

+ +

Implemented in m5::nfc::NFCLayerA, m5::nfc::NFCLayerB, m5::nfc::NFCLayerF, and m5::nfc::NFCLayerV.

+ +
+
+
+
+ + + + diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_interface.js b/classm5_1_1nfc_1_1_n_f_c_layer_interface.js new file mode 100644 index 0000000..c339689 --- /dev/null +++ b/classm5_1_1nfc_1_1_n_f_c_layer_interface.js @@ -0,0 +1,19 @@ +var classm5_1_1nfc_1_1_n_f_c_layer_interface = +[ + [ "first_user_block", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a9f7d7f4be1107c1a09325596de06fd54", null ], + [ "isoDEP", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a2d1a4a1c91d0a054640c806f8ba9d42f", null ], + [ "last_user_block", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html#ad3718fd96e63ae118ec7f46f65ad9dce", null ], + [ "maximum_fifo_depth", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a4ac8de121c4bea7c52fd304956b01c82", null ], + [ "maximum_read_blocks", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a1b452839287e760cea354845bb6e7e0a", null ], + [ "maximum_write_blocks", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a94e218fa9ee80900a96cdaded7d1d5f6", null ], + [ "read", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a928d6df7e722c2cf0f44b78eb9d818cf", null ], + [ "receive", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html#aeceacd2519f94efd0deaaa1b56d3831c", null ], + [ "supportsFilesystem", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html#ab85c55ea62d2ef6d735b94ef906b25e0", null ], + [ "supportsNFCTag", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html#ab1d3234d299dfef18bb456b1cc2ae17f", null ], + [ "transceive", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html#acaed9934c5c5b9e261d9bbcaa404517f", null ], + [ "transmit", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a47a89384937e84ac348053ec57daa022", null ], + [ "unit_size_read", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html#af6f048fb639f13e8758521cca31d266f", null ], + [ "unit_size_write", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html#aea557041dda4472c73ef6c99909d3f71", null ], + [ "user_area_size", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a4109e617694aad4a02ecc6c2a3ba42b0", null ], + [ "write", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a2d84b6050dfca9671d317f9bcbac6943", null ] +]; \ No newline at end of file diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_interface.png b/classm5_1_1nfc_1_1_n_f_c_layer_interface.png new file mode 100644 index 0000000..b5539df Binary files /dev/null and b/classm5_1_1nfc_1_1_n_f_c_layer_interface.png differ diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_v-members.html b/classm5_1_1nfc_1_1_n_f_c_layer_v-members.html new file mode 100644 index 0000000..d622139 --- /dev/null +++ b/classm5_1_1nfc_1_1_n_f_c_layer_v-members.html @@ -0,0 +1,161 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
m5::nfc::NFCLayerV Member List
+
+
+ +

This is the complete list of members for m5::nfc::NFCLayerV, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activePICC (defined in m5::nfc::NFCLayerV)m5::nfc::NFCLayerVprotected
activate(const m5::nfc::v::PICC &picc)m5::nfc::NFCLayerV
activatedPICC() constm5::nfc::NFCLayerVinline
deactivate()m5::nfc::NFCLayerV
detect(m5::nfc::v::PICC &picc, const uint32_t timeout_ms=50U)m5::nfc::NFCLayerV
detect(std::vector< m5::nfc::v::PICC > &piccs, const uint32_t timeout_ms=1000U)m5::nfc::NFCLayerV
detect_single(m5::nfc::v::PICC &picc) (defined in m5::nfc::NFCLayerV)m5::nfc::NFCLayerVprotected
dump()m5::nfc::NFCLayerV
dump(const uint16_t block)m5::nfc::NFCLayerV
dump_all() (defined in m5::nfc::NFCLayerV)m5::nfc::NFCLayerVprotected
dump_block(const uint16_t block) (defined in m5::nfc::NFCLayerV)m5::nfc::NFCLayerVprotected
first_user_block() const overridem5::nfc::NFCLayerVinlineprotectedvirtual
get_system_information(m5::nfc::v::PICC &picc) (defined in m5::nfc::NFCLayerV)m5::nfc::NFCLayerVprotected
get_system_information_ext(m5::nfc::v::PICC &picc) (defined in m5::nfc::NFCLayerV)m5::nfc::NFCLayerVprotected
isActive(const m5::nfc::v::PICC &picc) constm5::nfc::NFCLayerVinline
isoDEP()m5::nfc::NFCLayerInterfaceinlinevirtual
last_user_block() const overridem5::nfc::NFCLayerVinlineprotectedvirtual
maximum_fifo_depth() const overridem5::nfc::NFCLayerVvirtual
maximum_read_blocks() constm5::nfc::NFCLayerInterfaceinlinevirtual
maximum_write_blocks() constm5::nfc::NFCLayerInterfaceinlinevirtual
modulationMode() const (defined in m5::nfc::NFCLayerV)m5::nfc::NFCLayerVinline
ndefIsValidFormat(bool &valid)m5::nfc::NFCLayerV
ndefRead(m5::nfc::ndef::TLV &msg)m5::nfc::NFCLayerV
ndefReadCapabilityContainer(m5::nfc::ndef::type5::CapabilityContainer &cc)m5::nfc::NFCLayerV
ndefWrite(const m5::nfc::ndef::TLV &msg)m5::nfc::NFCLayerV
ndefWriteCapabilityContainer(const m5::nfc::ndef::type5::CapabilityContainer &cc)m5::nfc::NFCLayerV
NFCLayerV(m5::unit::UnitST25R3916 &u) (defined in m5::nfc::NFCLayerV)m5::nfc::NFCLayerVexplicit
NFCLayerV(m5::unit::CapST25R3916 &u) (defined in m5::nfc::NFCLayerV)m5::nfc::NFCLayerVexplicit
reactivate(const m5::nfc::v::PICC &picc)m5::nfc::NFCLayerV
reactivate()m5::nfc::NFCLayerVinline
read(uint8_t *rx, uint16_t &rx_len, const uint16_t sblock) overridem5::nfc::NFCLayerVvirtual
read_block_ext(uint8_t rx[32], const m5::nfc::v::PICC &picc, const uint16_t block) (defined in m5::nfc::NFCLayerV)m5::nfc::NFCLayerVprotected
readBlock(uint8_t rx[32], const uint16_t block)m5::nfc::NFCLayerV
receive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)m5::nfc::NFCLayerInterfaceinlinevirtual
reset_to_ready(const m5::nfc::v::PICC *picc) (defined in m5::nfc::NFCLayerV)m5::nfc::NFCLayerVprotected
setModulationMode(const m5::nfc::v::ModulationMode mode) (defined in m5::nfc::NFCLayerV)m5::nfc::NFCLayerVinline
stay_quiet(const m5::nfc::v::PICC &picc) (defined in m5::nfc::NFCLayerV)m5::nfc::NFCLayerVprotected
supportsFilesystem() constm5::nfc::NFCLayerInterfaceinlinevirtual
supportsNFCTag() constm5::nfc::NFCLayerInterfaceinlinevirtual
transceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::nfc::NFCLayerInterfaceinlinevirtual
transmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::nfc::NFCLayerInterfaceinlinevirtual
unit_size_read() const overridem5::nfc::NFCLayerVinlineprotectedvirtual
unit_size_write() const overridem5::nfc::NFCLayerVinlineprotectedvirtual
user_area_size() constm5::nfc::NFCLayerVinlineprotectedvirtual
write(const uint16_t sblock, const uint8_t *tx, const uint16_t tx_len) overridem5::nfc::NFCLayerVvirtual
write_block_ext(const m5::nfc::v::PICC &picc, const uint16_t block, const uint8_t *tx, const uint8_t tx_len) (defined in m5::nfc::NFCLayerV)m5::nfc::NFCLayerVprotected
writeBlock(const uint16_t block, const uint8_t *tx, const uint8_t tx_len)m5::nfc::NFCLayerV
+
+ + + + diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_v.html b/classm5_1_1nfc_1_1_n_f_c_layer_v.html new file mode 100644 index 0000000..0cf2c41 --- /dev/null +++ b/classm5_1_1nfc_1_1_n_f_c_layer_v.html @@ -0,0 +1,1056 @@ + + + + + + + +M5Unit-NFC: m5::nfc::NFCLayerV Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
m5::nfc::NFCLayerV Class Reference
+
+
+ +

Common interface layer for each chip of the NFC-V reader. + More...

+ +

#include <nfc_layer_v.hpp>

+
+Inheritance diagram for m5::nfc::NFCLayerV:
+
+
+ + +m5::nfc::NFCLayerInterface + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

NFCLayerV (m5::unit::UnitST25R3916 &u)
 
NFCLayerV (m5::unit::CapST25R3916 &u)
 
virtual uint16_t maximum_fifo_depth () const override
 Maximum FIFO depth.
 
bool isActive (const m5::nfc::v::PICC &picc) const
 Is the specified PICC currently active?
 
const m5::nfc::v::PICCactivatedPICC () const
 Retrieve the currently activated PICC.
 
+m5::nfc::v::ModulationMode modulationMode () const
 
+void setModulationMode (const m5::nfc::v::ModulationMode mode)
 
Detection and activation
bool detect (m5::nfc::v::PICC &picc, const uint32_t timeout_ms=50U)
 Detect single ready PICC.
 
bool detect (std::vector< m5::nfc::v::PICC > &piccs, const uint32_t timeout_ms=1000U)
 Detect ready PICCs.
 
bool activate (const m5::nfc::v::PICC &picc)
 Activate a specific PICC.
 
bool reactivate (const m5::nfc::v::PICC &picc)
 Detect single ready PICC.
 
bool reactivate ()
 Detect single ready PICC.
 
For activated PICC
bool deactivate ()
 Send Reset to ready to the currently selected PICC (deactivate)
 
bool readBlock (uint8_t rx[32], const uint16_t block)
 Read single block.
 
bool writeBlock (const uint16_t block, const uint8_t *tx, const uint8_t tx_len)
 Write single block.
 
virtual bool read (uint8_t *rx, uint16_t &rx_len, const uint16_t sblock) override
 Read any bytes from user area.
 
virtual bool write (const uint16_t sblock, const uint8_t *tx, const uint16_t tx_len) override
 Write any bytes to user area.
 
bool dump ()
 Dump all blocks.
 
bool dump (const uint16_t block)
 Dump 1 block.
 
For NDEF
Note
For activated PICC
+
bool ndefIsValidFormat (bool &valid)
 Is the PICC data in NDEF format?
 
bool ndefReadCapabilityContainer (m5::nfc::ndef::type5::CapabilityContainer &cc)
 Read Type5 Capability Container.
 
bool ndefWriteCapabilityContainer (const m5::nfc::ndef::type5::CapabilityContainer &cc)
 Write Type5 Capability Container.
 
bool ndefRead (m5::nfc::ndef::TLV &msg)
 Read NDEF Message TLV.
 
bool ndefWrite (const m5::nfc::ndef::TLV &msg)
 Write NDEF message.
 
- Public Member Functions inherited from m5::nfc::NFCLayerInterface
virtual m5::nfc::NFCForumTag supportsNFCTag () const
 activePICC's NDEF type
 
virtual file_system_feature_t supportsFilesystem () const
 activePICC's File system
 
virtual m5::nfc::isodep::IsoDEPisoDEP ()
 ISO-DEP interface (nullptr if not supported)
 
virtual bool transceive (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transceive (RF command)
 
virtual bool transmit (const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transmit only.
 
virtual bool receive (uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
 Receive only.
 
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 dump_all ()
 
+bool dump_block (const uint16_t block)
 
+bool detect_single (m5::nfc::v::PICC &picc)
 
+bool get_system_information (m5::nfc::v::PICC &picc)
 
+bool get_system_information_ext (m5::nfc::v::PICC &picc)
 
+bool read_block_ext (uint8_t rx[32], const m5::nfc::v::PICC &picc, const uint16_t block)
 
+bool write_block_ext (const m5::nfc::v::PICC &picc, const uint16_t block, const uint8_t *tx, const uint8_t tx_len)
 
+bool reset_to_ready (const m5::nfc::v::PICC *picc)
 
+bool stay_quiet (const m5::nfc::v::PICC &picc)
 
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
 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::v::PICC _activePICC {}
 
+

Detailed Description

+

Common interface layer for each chip of the NFC-V reader.

+

Member Function Documentation

+ +

◆ activate()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerV::activate (const m5::nfc::v::PICC & picc)
+
+ +

Activate a specific PICC.

+
Parameters
+ + +
piccPICC
+
+
+
Returns
True if successful
+
Precondition
PICC is READY state
+
Postcondition
PICC transitions: READY/QUIET -> SELECTED on a successful response
+ +
+
+ +

◆ activatedPICC()

+ +
+
+ + + + + +
+ + + + + + + +
const m5::nfc::v::PICC & m5::nfc::NFCLayerV::activatedPICC () const
+
+inline
+
+ +

Retrieve the currently activated PICC.

+
Returns
Active PICC
+
Note
Returns an empty PICC if no PICC is selected (no SELECTED state)
+ +
+
+ +

◆ deactivate()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerV::deactivate ()
+
+ +

Send Reset to ready to the currently selected PICC (deactivate)

+
Returns
True if successful
+
Precondition
A PICC is in the SELECTED state
+
Postcondition
PICC transitions: SELECTED -> READY on a successful response
+ +
+
+ +

◆ detect() [1/2]

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerV::detect (m5::nfc::v::PICC & picc,
const uint32_t timeout_ms = 50U )
+
+ +

Detect single ready PICC.

+
Parameters
+ + + +
[out]piccDetected PICC
timeout_msPolling time budget in milliseconds
+
+
+
Returns
True if detected
+
Note
The detected PICC is typically put into QUIET during enumeration to allow discovering others
+ +
+
+ +

◆ detect() [2/2]

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerV::detect (std::vector< m5::nfc::v::PICC > & piccs,
const uint32_t timeout_ms = 1000U )
+
+ +

Detect ready PICCs.

+
Parameters
+ + + +
[out]piccsDetected PICC PICCs
timeout_msPolling time budget in milliseconds
+
+
+
Returns
True if detected
+
Note
The detected PICC is typically put into QUIET during enumeration to allow discovering others
+ +
+
+ +

◆ dump() [1/2]

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerV::dump ()
+
+ +

Dump all blocks.

+
Returns
True if successful
+ +
+
+ +

◆ dump() [2/2]

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerV::dump (const uint16_t block)
+
+ +

Dump 1 block.

+
Parameters
+ + +
blockBlock address
+
+
+
Returns
True if successful
+ +
+
+ +

◆ first_user_block()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerV::first_user_block () const
+
+inlineoverrideprotectedvirtual
+
+ +

First user block.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ isActive()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::nfc::NFCLayerV::isActive (const m5::nfc::v::PICC & picc) const
+
+inline
+
+ +

Is the specified PICC currently active?

+
Parameters
+ + +
piccPICC to check
+
+
+
Returns
True if this PICC is the one currently selected (SELECTED state)
+ +
+
+ +

◆ last_user_block()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerV::last_user_block () const
+
+inlineoverrideprotectedvirtual
+
+ +

Last user block.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ maximum_fifo_depth()

+ +
+
+ + + + + +
+ + + + + + + +
uint16_t m5::nfc::NFCLayerV::maximum_fifo_depth () const
+
+overridevirtual
+
+ +

Maximum FIFO depth.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ ndefIsValidFormat()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerV::ndefIsValidFormat (bool & valid)
+
+ +

Is the PICC data in NDEF format?

+
Parameters
+ + +
[out]validTrue if NDEF format
+
+
+
Returns
True if successful
+ +
+
+ +

◆ ndefRead()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerV::ndefRead (m5::nfc::ndef::TLV & msg)
+
+ +

Read NDEF Message TLV.

+
Parameters
+ + +
[out]msgMessage If it does not exist, a Null TLV is returned
+
+
+
Returns
True if successful
+
Note
If multiple messages of the same type exist, return the first one
+
Warning
Only PICC cards supporting NDEF are valid
+ +
+
+ +

◆ ndefReadCapabilityContainer()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerV::ndefReadCapabilityContainer (m5::nfc::ndef::type5::CapabilityContainer & cc)
+
+ +

Read Type5 Capability Container.

+
Parameters
+ + +
[out]ccCapability container
+
+
+
Returns
True if successful
+ +
+
+ +

◆ ndefWrite()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerV::ndefWrite (const m5::nfc::ndef::TLV & msg)
+
+ +

Write NDEF message.

+
Parameters
+ + +
msgMessage (NDEF Message)
+
+
+
Returns
True if successful
+
Note
Other existing tags will be preserved
+
Warning
Existing NDEF message TLVs will be overwritten
+
+Only PICC cards supporting NDEF are valid
+ +
+
+ +

◆ ndefWriteCapabilityContainer()

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerV::ndefWriteCapabilityContainer (const m5::nfc::ndef::type5::CapabilityContainer & cc)
+
+ +

Write Type5 Capability Container.

+
Parameters
+ + +
[in]ccCapability container
+
+
+
Returns
True if successful
+ +
+
+ +

◆ reactivate() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::nfc::NFCLayerV::reactivate ()
+
+inline
+
+ +

Detect single ready PICC.

+
Parameters
+ + + +
[out]piccDetected PICC
timeout_msPolling time budget in milliseconds
+
+
+
Returns
True if detected
+
Note
The detected PICC is typically put into QUIET during enumeration to allow discovering others
+ +
+
+ +

◆ reactivate() [2/2]

+ +
+
+ + + + + + + +
bool m5::nfc::NFCLayerV::reactivate (const m5::nfc::v::PICC & picc)
+
+ +

Detect single ready PICC.

+
Parameters
+ + + +
[out]piccDetected PICC
timeout_msPolling time budget in milliseconds
+
+
+
Returns
True if detected
+
Note
The detected PICC is typically put into QUIET during enumeration to allow discovering others
+ +
+
+ +

◆ read()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerV::read (uint8_t * rx,
uint16_t & rx_len,
const uint16_t sblock )
+
+overridevirtual
+
+ +

Read any bytes from user area.

+

Continue reading only the user area from the first block of the user area until rx_len is satisfied

Parameters
+ + + + +
rxBuffer
[in/out]rx_len in:buffer size, out:actual read size
sblockReading start block
+
+
+
Returns
True if successful
+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ readBlock()

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::NFCLayerV::readBlock (uint8_t rx[32],
const uint16_t block )
+
+ +

Read single block.

+
Parameters
+ + + +
[out]rxOutput buffer (At least the size of one PICC block)
blockBlock address
+
+
+
Returns
True if successful
+
Warning
The required size varies depending on the PICC
+
+The maximum rx size is 32
+ +
+
+ +

◆ unit_size_read()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerV::unit_size_read () const
+
+inlineoverrideprotectedvirtual
+
+ +

Unit size for read.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ unit_size_write()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerV::unit_size_write () const
+
+inlineoverrideprotectedvirtual
+
+ +

Unit size for write.

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ user_area_size()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint16_t m5::nfc::NFCLayerV::user_area_size () const
+
+inlineprotectedvirtual
+
+ +

User area size (bytes)

+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ write()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerV::write (const uint16_t sblock,
const uint8_t * tx,
const uint16_t tx_len )
+
+overridevirtual
+
+ +

Write any bytes to user area.

+

Continue writing only the user area from the first block of the user area until tx_len is satisfied

Parameters
+ + + + +
sblockWriting start block
txBuffer
tx_lenbuffer size
+
+
+
Returns
True if successful
+
Warning
The write unit is the size of one block in PICC
+ +

Implements m5::nfc::NFCLayerInterface.

+ +
+
+ +

◆ writeBlock()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::NFCLayerV::writeBlock (const uint16_t block,
const uint8_t * tx,
const uint8_t tx_len )
+
+ +

Write single block.

+
Parameters
+ + + + +
blockBlock address
txbuffer
tx_lenbuffer size
+
+
+
Warning
If the tx_len is less than the size of one PICC block, the remaining space is filled with 0x00
+
+If the tx_len is larger than the size of one PICC block, only the first 4 bytes will be written
+ +
+
+
+
+ + + + diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_v.js b/classm5_1_1nfc_1_1_n_f_c_layer_v.js new file mode 100644 index 0000000..7438c61 --- /dev/null +++ b/classm5_1_1nfc_1_1_n_f_c_layer_v.js @@ -0,0 +1,28 @@ +var classm5_1_1nfc_1_1_n_f_c_layer_v = +[ + [ "activate", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#aaddc0e4e632f6991267ffdffe68913f2", null ], + [ "activatedPICC", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#ad967723ec85d3aab6e535348aac36995", null ], + [ "deactivate", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#a5afa6b43399feb102a08f80f8d767b91", null ], + [ "detect", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#a21fe559bf013ae298db9fb62edb39039", null ], + [ "detect", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#a14d3001bb4b854a265370125d9242a47", null ], + [ "dump", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#a991bdbbe91ba9dca88c2ec25253e5abf", null ], + [ "dump", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#a871b0d7f0f4c020aea717899b6e53fc0", null ], + [ "first_user_block", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#a87013386596202ac4d100d6217f050f3", null ], + [ "isActive", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#af49881f7956101a57692b9c4a28b61ef", null ], + [ "last_user_block", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#a14c86c20699947d6b66b7d039ba87d0f", null ], + [ "maximum_fifo_depth", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#ac5bc6049f86f77f97fd363a096be8800", null ], + [ "ndefIsValidFormat", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#a2a850165ceb42a91169fac1b6aaef55c", null ], + [ "ndefRead", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#a70860961bacb0e5b48af02f58600d3af", null ], + [ "ndefReadCapabilityContainer", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#a520d660f41006af09c2475652df9a2fe", null ], + [ "ndefWrite", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#a1c516b5988e3eebb4d6effc29f284c2b", null ], + [ "ndefWriteCapabilityContainer", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#ab32fa4e8ef5c36caabbae5804a4742e5", null ], + [ "reactivate", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#ad53738b47506d3d0c4f6ff31509c24dd", null ], + [ "reactivate", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#aa891ec87b5e896fef8806e5b8783022d", null ], + [ "read", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#a4e8459bbef08fd87a6b7baff52ac4f00", null ], + [ "readBlock", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#aa7871ddea482ddf11320d89268a40877", null ], + [ "unit_size_read", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#ac9c6c45e5861251841cda8b80479aaf5", null ], + [ "unit_size_write", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#a49d0f37b6e33138a43ea3160bb757382", null ], + [ "user_area_size", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#a47fa999d2496dbfe1477966e0c878fc8", null ], + [ "write", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#ab7f845ecfb606ad7b55b6e1a450e0ba4", null ], + [ "writeBlock", "classm5_1_1nfc_1_1_n_f_c_layer_v.html#a92f5e3d2cbd0001320b3ac25203d7101", null ] +]; \ No newline at end of file diff --git a/classm5_1_1nfc_1_1_n_f_c_layer_v.png b/classm5_1_1nfc_1_1_n_f_c_layer_v.png new file mode 100644 index 0000000..c7dc87a Binary files /dev/null and b/classm5_1_1nfc_1_1_n_f_c_layer_v.png differ diff --git a/classm5_1_1nfc_1_1a_1_1mifare_1_1classic_1_1_crypto1-members.html b/classm5_1_1nfc_1_1a_1_1mifare_1_1classic_1_1_crypto1-members.html new file mode 100644 index 0000000..56c110a --- /dev/null +++ b/classm5_1_1nfc_1_1a_1_1mifare_1_1classic_1_1_crypto1-members.html @@ -0,0 +1,129 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
m5::nfc::a::mifare::classic::Crypto1 Member List
+
+
+ +

This is the complete list of members for m5::nfc::a::mifare::classic::Crypto1, including all inherited members.

+ + + + + + + + + + + + + + + + +
_count (defined in m5::nfc::a::mifare::classic::Crypto1)m5::nfc::a::mifare::classic::Crypto1
Crypto1() noexcept (defined in m5::nfc::a::mifare::classic::Crypto1)m5::nfc::a::mifare::classic::Crypto1inline
Crypto1(const uint64_t key48) noexcept (defined in m5::nfc::a::mifare::classic::Crypto1)m5::nfc::a::mifare::classic::Crypto1inlineexplicit
encrypt(uint8_t buf[8], const uint32_t Nr, const uint32_t Ar) noexcept (defined in m5::nfc::a::mifare::classic::Crypto1)m5::nfc::a::mifare::classic::Crypto1inline
encrypt(uint8_t *out, const uint8_t *in, const uint8_t in_len) (defined in m5::nfc::a::mifare::classic::Crypto1)m5::nfc::a::mifare::classic::Crypto1inline
fa(bool a, bool b, bool c, bool d) noexcept (defined in m5::nfc::a::mifare::classic::Crypto1)m5::nfc::a::mifare::classic::Crypto1inlinestatic
fb(bool a, bool b, bool c, bool d) noexcept (defined in m5::nfc::a::mifare::classic::Crypto1)m5::nfc::a::mifare::classic::Crypto1inlinestatic
fc(bool a, bool b, bool c, bool d, bool e) noexcept (defined in m5::nfc::a::mifare::classic::Crypto1)m5::nfc::a::mifare::classic::Crypto1inlinestatic
filter() const noexcept (defined in m5::nfc::a::mifare::classic::Crypto1)m5::nfc::a::mifare::classic::Crypto1inline
init(const uint64_t key48) noexcept (defined in m5::nfc::a::mifare::classic::Crypto1)m5::nfc::a::mifare::classic::Crypto1inline
inject(uint32_t uid, uint32_t Nt, const bool encrypted=false) noexcept (defined in m5::nfc::a::mifare::classic::Crypto1)m5::nfc::a::mifare::classic::Crypto1inline
oddparity8(uint8_t x) noexcept (defined in m5::nfc::a::mifare::classic::Crypto1)m5::nfc::a::mifare::classic::Crypto1inlinestatic
step32(const uint32_t in, const bool enc=false) noexcept (defined in m5::nfc::a::mifare::classic::Crypto1)m5::nfc::a::mifare::classic::Crypto1inline
step8(const uint8_t in, const bool enc=false) noexcept (defined in m5::nfc::a::mifare::classic::Crypto1)m5::nfc::a::mifare::classic::Crypto1inline
step_with(const bool in, const bool enc=false) noexcept (defined in m5::nfc::a::mifare::classic::Crypto1)m5::nfc::a::mifare::classic::Crypto1inline
+
+ + + + diff --git a/classm5_1_1nfc_1_1a_1_1mifare_1_1classic_1_1_crypto1.html b/classm5_1_1nfc_1_1a_1_1mifare_1_1classic_1_1_crypto1.html new file mode 100644 index 0000000..bd5fed6 --- /dev/null +++ b/classm5_1_1nfc_1_1a_1_1mifare_1_1classic_1_1_crypto1.html @@ -0,0 +1,182 @@ + + + + + + + +M5Unit-NFC: m5::nfc::a::mifare::classic::Crypto1 Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
m5::nfc::a::mifare::classic::Crypto1 Class Reference
+
+
+ +

Crypto1 for MIFARE Classic. + More...

+ +

#include <mifare_classic_crypto1.hpp>

+
+Inheritance diagram for m5::nfc::a::mifare::classic::Crypto1:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Crypto1 (const uint64_t key48) noexcept
 
+void init (const uint64_t key48) noexcept
 
+uint32_t inject (uint32_t uid, uint32_t Nt, const bool encrypted=false) noexcept
 
+bool step_with (const bool in, const bool enc=false) noexcept
 
+uint8_t step8 (const uint8_t in, const bool enc=false) noexcept
 
+uint32_t step32 (const uint32_t in, const bool enc=false) noexcept
 
+uint8_t encrypt (uint8_t buf[8], const uint32_t Nr, const uint32_t Ar) noexcept
 
+uint32_t encrypt (uint8_t *out, const uint8_t *in, const uint8_t in_len)
 
+bool filter () const noexcept
 
+ + + + + + + + + +

+Static Public Member Functions

+static uint8_t oddparity8 (uint8_t x) noexcept
 
+static bool fa (bool a, bool b, bool c, bool d) noexcept
 
+static bool fb (bool a, bool b, bool c, bool d) noexcept
 
+static bool fc (bool a, bool b, bool c, bool d, bool e) noexcept
 
+ + + +

+Public Attributes

+uint32_t _count {}
 
+

Detailed Description

+

Crypto1 for MIFARE Classic.

+
+
+ + + + diff --git a/classm5_1_1nfc_1_1a_1_1mifare_1_1classic_1_1_crypto1.png b/classm5_1_1nfc_1_1a_1_1mifare_1_1classic_1_1_crypto1.png new file mode 100644 index 0000000..04bfed3 Binary files /dev/null and b/classm5_1_1nfc_1_1a_1_1mifare_1_1classic_1_1_crypto1.png differ diff --git a/classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system-members.html b/classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system-members.html new file mode 100644 index 0000000..047b91f --- /dev/null +++ b/classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system-members.html @@ -0,0 +1,173 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
m5::nfc::a::mifare::desfire::DESFireFileSystem Member List
+
+
+ +

This is the complete list of members for m5::nfc::a::mifare::desfire::DESFireFileSystem, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_isoDEP (defined in m5::nfc::FileSystem)m5::nfc::FileSystemprotected
_last_select_fci (defined in m5::nfc::FileSystem)m5::nfc::FileSystemprotected
authenticateAES(const uint8_t key_no, const uint8_t key[16]) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
authenticateDES(const uint8_t key_no, const uint8_t key[16]) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
authenticateEV2First(const uint8_t key_no, const uint8_t key[16], Ev2Context &ctx) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
authenticateISO(const uint8_t key_no, const uint8_t key[16]) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
changeFileSettings(const uint8_t file_no, const uint8_t file_option, const uint16_t access_rights) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
changeFileSettingsEV2(const uint8_t file_no, const uint8_t file_option, const uint16_t access_rights, Ev2Context &ctx) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
changeFileSettingsEV2Full(const uint8_t file_no, const uint8_t file_option, const uint16_t access_rights, Ev2Context &ctx) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
createApplication(const uint8_t aid[3], const uint8_t key_settings1, const uint8_t key_settings2, const uint16_t iso_fid=0, const uint8_t *df_name=nullptr, const uint8_t df_name_len=0) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
createFile(const uint8_t *fcp, const uint16_t fcp_len)m5::nfc::FileSystem
createFile(const FCP &fcp)m5::nfc::FileSystem
createFile(const uint16_t fid, const uint16_t file_size)m5::nfc::FileSystem
createStdDataFile(const uint8_t file_no, const uint16_t iso_fid, const uint8_t comm_mode, const uint16_t access_rights, const uint32_t file_size) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
createTransactionMACFileEV2Full(const uint8_t file_no, const uint8_t comm_mode, const uint16_t access_rights, const uint8_t tmac_key[16], const uint8_t tmac_key_ver, Ev2Context &ctx)m5::nfc::a::mifare::desfire::DESFireFileSystem
deleteApplication(const uint8_t aid[3]) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
deleteTransactionMACFileEV2Full(const uint8_t file_no, Ev2Context &ctx)m5::nfc::a::mifare::desfire::DESFireFileSystem
DESFireFileSystem(m5::nfc::NFCLayerA &layer) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystemexplicit
DESFireFileSystem(m5::nfc::isodep::IsoDEP &isoDEP) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSysteminlineexplicit
FileSystem(m5::nfc::isodep::IsoDEP &isoDEP) (defined in m5::nfc::FileSystem)m5::nfc::FileSysteminlineexplicit
formatPICC(const uint8_t *picc_master_key, const AuthMode mode=AuthMode::Auto) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
getApplicationIDs(std::vector< desfire_aid_t > &out) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
getFileIDs(std::vector< uint8_t > &out) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
getFileSettings(FileSettings &out, const uint8_t file_no) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
getFileSettingsEV2(FileSettings &out, const uint8_t file_no, Ev2Context &ctx) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
getFileSettingsEV2Full(FileSettings &out, const uint8_t file_no, Ev2Context &ctx) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
getFreeMemory(uint32_t &out) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
getISOFileIDs(std::vector< uint8_t > &out) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
getKeySettings(uint8_t &key_settings, uint8_t &key_count) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
lastSelectData() constm5::nfc::FileSysteminline
readBinary(std::vector< uint8_t > &out, const uint16_t offset, const uint16_t le)m5::nfc::FileSystem
readData(std::vector< uint8_t > &out, const uint8_t file_no, const uint32_t offset, const uint32_t length)m5::nfc::a::mifare::desfire::DESFireFileSystem
readDataLight(std::vector< uint8_t > &out, const uint8_t file_no, const uint32_t offset, const uint32_t length) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
readDataLightEV2(std::vector< uint8_t > &out, const uint8_t file_no, const uint32_t offset, const uint32_t length, Ev2Context &ctx) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
readDataLightEV2Full(std::vector< uint8_t > &out, const uint8_t file_no, const uint32_t offset, const uint32_t length, Ev2Context &ctx) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
selectApplication(const desfire_aid_t &aid) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSysteminline
selectApplication(const uint8_t aid[3]) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
selectApplication(const uint32_t aid24=0u) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
selectByDfName(const uint8_t *aid, const uint8_t aid_len, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)m5::nfc::FileSystem
selectByFileId(const uint16_t fid, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)m5::nfc::FileSystem
selectByPath(const uint8_t *path, const uint8_t path_len, const bool from_mf=true, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)m5::nfc::FileSystem
selectDfNameAuto(const uint8_t *aid, const uint8_t aid_len, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)m5::nfc::FileSystem
selectFile(const m5::nfc::apdu::SelectBy by, const m5::nfc::apdu::SelectOccurrence occ, const m5::nfc::apdu::SelectResponse res, const uint8_t *param, const uint8_t param_len)m5::nfc::FileSystem
selectFileIdAuto(const uint16_t fid, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)m5::nfc::FileSystem
selectMasterFile()m5::nfc::FileSysteminline
selectParent(const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)m5::nfc::FileSystem
setConfigurationAppNameEV2Full(const uint8_t *df_name, uint8_t df_name_len, uint16_t iso_fid, Ev2Context &ctx) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
setConfigurationFileRenaming(const FileRename &first, const FileRename *second=nullptr) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
setConfigurationFileRenamingEV2Full(const FileRename &first, const FileRename *second, Ev2Context &ctx) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
transceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystemprotected
updateBinary(const uint16_t offset, const uint8_t *data, const uint16_t data_len)m5::nfc::FileSystem
verify(const uint8_t *password, const uint16_t pass_len, const uint8_t param2)m5::nfc::FileSystem
verifyGlobal(const uint8_t *password, const uint16_t pass_len)m5::nfc::FileSysteminline
verifySpecific(const uint8_t *password, const uint16_t pass_len)m5::nfc::FileSysteminline
writeData(const uint8_t file_no, const uint32_t offset, const uint8_t *data, const uint32_t data_len) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
writeDataLight(const uint8_t file_no, const uint32_t offset, const uint8_t *data, const uint32_t data_len) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
writeDataLightEV2(const uint8_t file_no, const uint32_t offset, const uint8_t *data, const uint32_t data_len, Ev2Context &ctx) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
writeDataLightEV2Full(const uint8_t file_no, const uint32_t offset, const uint8_t *data, const uint32_t data_len, Ev2Context &ctx) (defined in m5::nfc::a::mifare::desfire::DESFireFileSystem)m5::nfc::a::mifare::desfire::DESFireFileSystem
~FileSystem()=default (defined in m5::nfc::FileSystem)m5::nfc::FileSystemvirtual
+
+ + + + diff --git a/classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.html b/classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.html new file mode 100644 index 0000000..60ffdd0 --- /dev/null +++ b/classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.html @@ -0,0 +1,449 @@ + + + + + + + +M5Unit-NFC: m5::nfc::a::mifare::desfire::DESFireFileSystem Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
m5::nfc::a::mifare::desfire::DESFireFileSystem Class Reference
+
+
+ +

File system for MIFARE DESFire. + More...

+ +

#include <desfire_file_system.hpp>

+
+Inheritance diagram for m5::nfc::a::mifare::desfire::DESFireFileSystem:
+
+
+ + +m5::nfc::FileSystem + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

DESFireFileSystem (m5::nfc::NFCLayerA &layer)
 
DESFireFileSystem (m5::nfc::isodep::IsoDEP &isoDEP)
 
+m5::stl::expected< void, uint8_t > createApplication (const uint8_t aid[3], const uint8_t key_settings1, const uint8_t key_settings2, const uint16_t iso_fid=0, const uint8_t *df_name=nullptr, const uint8_t df_name_len=0)
 
+bool selectApplication (const desfire_aid_t &aid)
 
+bool selectApplication (const uint8_t aid[3])
 
+bool selectApplication (const uint32_t aid24=0u)
 
+bool deleteApplication (const uint8_t aid[3])
 
+bool getApplicationIDs (std::vector< desfire_aid_t > &out)
 
+bool getFreeMemory (uint32_t &out)
 
+bool getKeySettings (uint8_t &key_settings, uint8_t &key_count)
 
+bool getFileIDs (std::vector< uint8_t > &out)
 
+bool getISOFileIDs (std::vector< uint8_t > &out)
 
+bool getFileSettings (FileSettings &out, const uint8_t file_no)
 
+bool getFileSettingsEV2 (FileSettings &out, const uint8_t file_no, Ev2Context &ctx)
 
+bool getFileSettingsEV2Full (FileSettings &out, const uint8_t file_no, Ev2Context &ctx)
 
+bool changeFileSettings (const uint8_t file_no, const uint8_t file_option, const uint16_t access_rights)
 
+bool changeFileSettingsEV2 (const uint8_t file_no, const uint8_t file_option, const uint16_t access_rights, Ev2Context &ctx)
 
+bool changeFileSettingsEV2Full (const uint8_t file_no, const uint8_t file_option, const uint16_t access_rights, Ev2Context &ctx)
 
+bool formatPICC (const uint8_t *picc_master_key, const AuthMode mode=AuthMode::Auto)
 
+bool createStdDataFile (const uint8_t file_no, const uint16_t iso_fid, const uint8_t comm_mode, const uint16_t access_rights, const uint32_t file_size)
 
+bool setConfigurationFileRenaming (const FileRename &first, const FileRename *second=nullptr)
 
+bool setConfigurationFileRenamingEV2Full (const FileRename &first, const FileRename *second, Ev2Context &ctx)
 
bool deleteTransactionMACFileEV2Full (const uint8_t file_no, Ev2Context &ctx)
 Delete TransactionMAC file (required for ISOReadBinary to work)
 
bool createTransactionMACFileEV2Full (const uint8_t file_no, const uint8_t comm_mode, const uint16_t access_rights, const uint8_t tmac_key[16], const uint8_t tmac_key_ver, Ev2Context &ctx)
 Create TransactionMAC file.
 
+bool setConfigurationAppNameEV2Full (const uint8_t *df_name, uint8_t df_name_len, uint16_t iso_fid, Ev2Context &ctx)
 
bool readData (std::vector< uint8_t > &out, const uint8_t file_no, const uint32_t offset, const uint32_t length)
 Read data from DESFire file.
 
+bool readDataLight (std::vector< uint8_t > &out, const uint8_t file_no, const uint32_t offset, const uint32_t length)
 
+bool readDataLightEV2Full (std::vector< uint8_t > &out, const uint8_t file_no, const uint32_t offset, const uint32_t length, Ev2Context &ctx)
 
+bool readDataLightEV2 (std::vector< uint8_t > &out, const uint8_t file_no, const uint32_t offset, const uint32_t length, Ev2Context &ctx)
 
+bool writeData (const uint8_t file_no, const uint32_t offset, const uint8_t *data, const uint32_t data_len)
 
+bool writeDataLight (const uint8_t file_no, const uint32_t offset, const uint8_t *data, const uint32_t data_len)
 
+bool writeDataLightEV2 (const uint8_t file_no, const uint32_t offset, const uint8_t *data, const uint32_t data_len, Ev2Context &ctx)
 
+bool writeDataLightEV2Full (const uint8_t file_no, const uint32_t offset, const uint8_t *data, const uint32_t data_len, Ev2Context &ctx)
 
+bool authenticateDES (const uint8_t key_no, const uint8_t key[16])
 
+bool authenticateISO (const uint8_t key_no, const uint8_t key[16])
 
+bool authenticateAES (const uint8_t key_no, const uint8_t key[16])
 
+bool authenticateEV2First (const uint8_t key_no, const uint8_t key[16], Ev2Context &ctx)
 
- Public Member Functions inherited from m5::nfc::FileSystem
FileSystem (m5::nfc::isodep::IsoDEP &isoDEP)
 
const std::vector< uint8_t > & lastSelectData () const
 Last SELECT response data (SW excluded)
 
bool createFile (const uint8_t *fcp, const uint16_t fcp_len)
 CREATE FILE.
 
bool createFile (const FCP &fcp)
 CREATE FILE.
 
bool createFile (const uint16_t fid, const uint16_t file_size)
 CREATE FILE.
 
bool selectFile (const m5::nfc::apdu::SelectBy by, const m5::nfc::apdu::SelectOccurrence occ, const m5::nfc::apdu::SelectResponse res, const uint8_t *param, const uint8_t param_len)
 SELECT FILE (generic)
 
bool selectByFileId (const uint16_t fid, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
 SELECT by File ID with explicit response type.
 
bool selectFileIdAuto (const uint16_t fid, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
 SELECT by File ID with auto response fallback (None->FCI->FCP)
 
bool selectByDfName (const uint8_t *aid, const uint8_t aid_len, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
 SELECT by DF Name with explicit response type.
 
bool selectDfNameAuto (const uint8_t *aid, const uint8_t aid_len, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
 SELECT by DF Name with auto response fallback (FCI->None->FCP)
 
bool selectByPath (const uint8_t *path, const uint8_t path_len, const bool from_mf=true, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
 SELECT by path (MF or current DF)
 
bool selectParent (const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
 SELECT parent DF.
 
bool selectMasterFile ()
 SELECT MF (Master File)
 
bool verify (const uint8_t *password, const uint16_t pass_len, const uint8_t param2)
 VERIFY (generic)
 
bool verifyGlobal (const uint8_t *password, const uint16_t pass_len)
 VERIFY global reference data.
 
bool verifySpecific (const uint8_t *password, const uint16_t pass_len)
 VERIFY specific reference data.
 
bool readBinary (std::vector< uint8_t > &out, const uint16_t offset, const uint16_t le)
 READ BINARY.
 
bool updateBinary (const uint16_t offset, const uint8_t *data, const uint16_t data_len)
 UPDATE BINARY.
 
+ + + +

+Protected Member Functions

+bool transceive (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len)
 
+ + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from m5::nfc::FileSystem
+m5::nfc::isodep::IsoDEP_isoDEP
 
+std::vector< uint8_t > _last_select_fci {}
 
+

Detailed Description

+

File system for MIFARE DESFire.

+

Member Function Documentation

+ +

◆ createTransactionMACFileEV2Full()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::a::mifare::desfire::DESFireFileSystem::createTransactionMACFileEV2Full (const uint8_t file_no,
const uint8_t comm_mode,
const uint16_t access_rights,
const uint8_t tmac_key[16],
const uint8_t tmac_key_ver,
Ev2Context & ctx )
+
+ +

Create TransactionMAC file.

+
Parameters
+ + + + + + + +
file_noFile number for TMAC file
comm_modeCommunication mode (0=Plain, 1=MAC, 3=Full)
access_rightsAccess rights
tmac_key16-byte TMAC key
tmac_key_verKey version
ctxEV2 context (must be authenticated with AppMasterKey)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ deleteTransactionMACFileEV2Full()

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::a::mifare::desfire::DESFireFileSystem::deleteTransactionMACFileEV2Full (const uint8_t file_no,
Ev2Context & ctx )
+
+ +

Delete TransactionMAC file (required for ISOReadBinary to work)

+
Parameters
+ + + +
file_noFile number of TMAC file (default 0)
ctxEV2 context (must be authenticated with AppMasterKey)
+
+
+
Returns
True if successful
+
Note
DESFire Light blocks ISOReadBinary when TMAC file exists
+ +
+
+ +

◆ readData()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
bool m5::nfc::a::mifare::desfire::DESFireFileSystem::readData (std::vector< uint8_t > & out,
const uint8_t file_no,
const uint32_t offset,
const uint32_t length )
+
+ +

Read data from DESFire file.

+
Parameters
+ + + + + +
[out]outOutput buffer
file_noFile number
offsetOffset in file
lengthLength to read
+
+
+
Returns
True if successful
+ +
+
+
+
+ + + + diff --git a/classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.js b/classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.js new file mode 100644 index 0000000..c6b2f91 --- /dev/null +++ b/classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.js @@ -0,0 +1,6 @@ +var classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system = +[ + [ "createTransactionMACFileEV2Full", "classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.html#a7e373ffbab93e8db14e2b125dc3830e5", null ], + [ "deleteTransactionMACFileEV2Full", "classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.html#ad4353f36d67cd46983a3cf2018f337bf", null ], + [ "readData", "classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.html#ab5694060981744a4ea1f79db5711a3ce", null ] +]; \ No newline at end of file diff --git a/classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.png b/classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.png new file mode 100644 index 0000000..1da11af Binary files /dev/null and b/classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.png differ diff --git a/classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p-members.html b/classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p-members.html new file mode 100644 index 0000000..4e683d2 --- /dev/null +++ b/classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p-members.html @@ -0,0 +1,121 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
m5::nfc::isodep::IsoDEP Member List
+
+
+ +

This is the complete list of members for m5::nfc::isodep::IsoDEP, including all inherited members.

+ + + + + + + + +
config() const (defined in m5::nfc::isodep::IsoDEP)m5::nfc::isodep::IsoDEPinline
config(const config_t &cfg) (defined in m5::nfc::isodep::IsoDEP)m5::nfc::isodep::IsoDEPinline
IsoDEP(NFCLayerInterface &layer) (defined in m5::nfc::isodep::IsoDEP)m5::nfc::isodep::IsoDEPinlineexplicit
IsoDEP(NFCLayerInterface &layer, const config_t &c) (defined in m5::nfc::isodep::IsoDEP)m5::nfc::isodep::IsoDEPinline
transceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::nfc::isodep::IsoDEP
transceiveAPDU(uint8_t *rx, uint16_t &rx_len, const uint8_t *cmd, const uint16_t cmd_len)m5::nfc::isodep::IsoDEP
transceiveINF(uint8_t *rx_inf, uint16_t &rx_inf_len, const uint8_t *tx_inf, const uint16_t tx_inf_len, RxInfo *info=nullptr)m5::nfc::isodep::IsoDEP
+
+ + + + diff --git a/classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html b/classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html new file mode 100644 index 0000000..ef34657 --- /dev/null +++ b/classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html @@ -0,0 +1,150 @@ + + + + + + + +M5Unit-NFC: m5::nfc::isodep::IsoDEP Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
m5::nfc::isodep::IsoDEP Class Reference
+
+
+ +

ISO Data Exchange Protocol. + More...

+ +

#include <isoDEP.hpp>

+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

IsoDEP (NFCLayerInterface &layer)
 
IsoDEP (NFCLayerInterface &layer, const config_t &c)
 
+config_t config () const
 
+void config (const config_t &cfg)
 
+bool transceiveINF (uint8_t *rx_inf, uint16_t &rx_inf_len, const uint8_t *tx_inf, const uint16_t tx_inf_len, RxInfo *info=nullptr)
 Transceive INF.
 
+bool transceiveAPDU (uint8_t *rx, uint16_t &rx_len, const uint8_t *cmd, const uint16_t cmd_len)
 Transceive APDU.
 
+bool transceive (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transceive normal.
 
+

Detailed Description

+

ISO Data Exchange Protocol.

+
+
+ + + + diff --git a/classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.js b/classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.js new file mode 100644 index 0000000..3d9621e --- /dev/null +++ b/classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.js @@ -0,0 +1,6 @@ +var classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p = +[ + [ "transceive", "classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html#a54e5ddd52a865d0efb6682f92bde48a1", null ], + [ "transceiveAPDU", "classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html#ad5dfa0961e8b2acaef1c67658f1be5fb", null ], + [ "transceiveINF", "classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html#a65c3e66cf72e3b5004385ceb8527b665", null ] +]; \ No newline at end of file diff --git a/classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer-members.html b/classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer-members.html new file mode 100644 index 0000000..4485d0d --- /dev/null +++ b/classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer-members.html @@ -0,0 +1,142 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
m5::nfc::ndef::NDEFLayer Member List
+
+
+ +

This is the complete list of members for m5::nfc::ndef::NDEFLayer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
isValidFormat(bool &valid, const m5::nfc::NFCForumTag ftag)m5::nfc::ndef::NDEFLayer
merge_tlv(std::vector< m5::nfc::ndef::TLV > &old_tlvs, const std::vector< m5::nfc::ndef::TLV > &tlvs) (defined in m5::nfc::ndef::NDEFLayer)m5::nfc::ndef::NDEFLayerprotected
NDEFLayer(NFCLayerInterface &layer) (defined in m5::nfc::ndef::NDEFLayer)m5::nfc::ndef::NDEFLayerinlineexplicit
prepare_desfire(const uint32_t max_ndef_size)m5::nfc::ndef::NDEFLayer
prepare_desfire_light()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)m5::nfc::ndef::NDEFLayer
read_capability_container_type4_desfire(m5::nfc::ndef::type4::CapabilityContainer &cc) (defined in m5::nfc::ndef::NDEFLayer)m5::nfc::ndef::NDEFLayerprotected
read_capability_container_type4_iso7816(m5::nfc::ndef::type4::CapabilityContainer &cc) (defined in m5::nfc::ndef::NDEFLayer)m5::nfc::ndef::NDEFLayerprotected
read_nfcv(uint8_t *rx, const uint16_t offset, const uint16_t len)m5::nfc::ndef::NDEFLayerprotected
read_type2(std::vector< m5::nfc::ndef::TLV > &tlvs, const m5::nfc::ndef::TagBits tagBits) (defined in m5::nfc::ndef::NDEFLayer)m5::nfc::ndef::NDEFLayerprotected
read_type3(m5::nfc::ndef::TLV &tlv) (defined in m5::nfc::ndef::NDEFLayer)m5::nfc::ndef::NDEFLayerprotected
read_type4(std::vector< m5::nfc::ndef::TLV > &tlvs, const m5::nfc::ndef::type4::FileControlTagBits fcBits) (defined in m5::nfc::ndef::NDEFLayer)m5::nfc::ndef::NDEFLayerprotected
read_type4_desfire(std::vector< m5::nfc::ndef::TLV > &tlvs, const m5::nfc::ndef::type4::FileControlTagBits fcBits) (defined in m5::nfc::ndef::NDEFLayer)m5::nfc::ndef::NDEFLayerprotected
read_type4_iso7816(std::vector< m5::nfc::ndef::TLV > &tlvs, const m5::nfc::ndef::type4::FileControlTagBits fcBits) (defined in m5::nfc::ndef::NDEFLayer)m5::nfc::ndef::NDEFLayerprotected
read_type5(std::vector< m5::nfc::ndef::TLV > &tlvs, const m5::nfc::ndef::TagBits tagBits) (defined in m5::nfc::ndef::NDEFLayer)m5::nfc::ndef::NDEFLayerprotected
readAttributeBlock(m5::nfc::ndef::type3::AttributeBlock &ab)m5::nfc::ndef::NDEFLayer
readCapabilityContainer(m5::nfc::ndef::type2::CapabilityContainer &cc)m5::nfc::ndef::NDEFLayer
readCapabilityContainer(m5::nfc::ndef::type4::CapabilityContainer &cc)m5::nfc::ndef::NDEFLayer
readCapabilityContainer(m5::nfc::ndef::type5::CapabilityContainer &cc)m5::nfc::ndef::NDEFLayer
write(const m5::nfc::NFCForumTag ftag, const std::vector< m5::nfc::ndef::TLV > &tlvs, const bool keep=true)m5::nfc::ndef::NDEFLayer
write_nfcv(const uint16_t offset, const uint8_t *tx, const uint16_t len)m5::nfc::ndef::NDEFLayerprotected
write_type2(const std::vector< m5::nfc::ndef::TLV > &tlvs, const bool keep) (defined in m5::nfc::ndef::NDEFLayer)m5::nfc::ndef::NDEFLayerprotected
write_type3(const m5::nfc::ndef::TLV &tlv) (defined in m5::nfc::ndef::NDEFLayer)m5::nfc::ndef::NDEFLayerprotected
write_type4(const std::vector< m5::nfc::ndef::TLV > &tlvs) (defined in m5::nfc::ndef::NDEFLayer)m5::nfc::ndef::NDEFLayerprotected
write_type4_desfire(const std::vector< m5::nfc::ndef::TLV > &tlvs, const type4::CapabilityContainer &cc, isodep::IsoDEP &dep) (defined in m5::nfc::ndef::NDEFLayer)m5::nfc::ndef::NDEFLayerprotected
write_type4_iso7816(const std::vector< m5::nfc::ndef::TLV > &tlvs, const type4::CapabilityContainer &cc, isodep::IsoDEP &dep) (defined in m5::nfc::ndef::NDEFLayer)m5::nfc::ndef::NDEFLayerprotected
write_type5(const std::vector< m5::nfc::ndef::TLV > &tlvs, const bool keep) (defined in m5::nfc::ndef::NDEFLayer)m5::nfc::ndef::NDEFLayerprotected
writeCapabilityContainer(const m5::nfc::ndef::type5::CapabilityContainer &cc)m5::nfc::ndef::NDEFLayer
+
+ + + + diff --git a/classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html b/classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html new file mode 100644 index 0000000..500ec8f --- /dev/null +++ b/classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html @@ -0,0 +1,589 @@ + + + + + + + +M5Unit-NFC: m5::nfc::ndef::NDEFLayer Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
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
+ +
+
+
+
+ + + + diff --git a/classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.js b/classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.js new file mode 100644 index 0000000..9696fde --- /dev/null +++ b/classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.js @@ -0,0 +1,15 @@ +var classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer = +[ + [ "isValidFormat", "classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a9bd9f2c96b4ef91fa2c34e456dc16c13", null ], + [ "prepare_desfire", "classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#ad093796b168367bb3cf196a48c3230d1", null ], + [ "prepare_desfire_light", "classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a49c6be48be0fe9201f21262263582cbb", null ], + [ "read", "classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a580f8cf9637e0dd00db5abb6c1ae6064", null ], + [ "read_nfcv", "classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a1b87db303260ea4eecda8da79d947222", null ], + [ "readAttributeBlock", "classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a904fcac13e7ecff4b8ec67bb75adbd4a", null ], + [ "readCapabilityContainer", "classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a4840b2bddf145c2b82ede77c297a43b4", null ], + [ "readCapabilityContainer", "classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a304ecb7680aa44482bdb6df7cc562df3", null ], + [ "readCapabilityContainer", "classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a9cdcf11726672111ab0836b085792d81", null ], + [ "write", "classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a8f14a849a885e8af39483ad4d2d887b5", null ], + [ "write_nfcv", "classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a5332d964b6e308fef3007629e1be272a", null ], + [ "writeCapabilityContainer", "classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a4b90b611b7d80579e47d79e73adf4a6b", null ] +]; \ No newline at end of file diff --git a/classm5_1_1nfc_1_1ndef_1_1_record-members.html b/classm5_1_1nfc_1_1ndef_1_1_record-members.html new file mode 100644 index 0000000..f79c7dc --- /dev/null +++ b/classm5_1_1nfc_1_1ndef_1_1_record-members.html @@ -0,0 +1,141 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
m5::nfc::ndef::Record Member List
+
+
+ +

This is the complete list of members for m5::nfc::ndef::Record, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
apply_nested_message() (defined in m5::nfc::ndef::Record)m5::nfc::ndef::Recordprotected
attribute() (defined in m5::nfc::ndef::Record)m5::nfc::ndef::Recordinline
attribute() const (defined in m5::nfc::ndef::Record)m5::nfc::ndef::Recordinline
clear()m5::nfc::ndef::Record
clearIdentifier()m5::nfc::ndef::Recordinline
decode(const uint8_t *buf, const uint32_t blen)m5::nfc::ndef::Record
dump() constm5::nfc::ndef::Record
encode(uint8_t *buf, const uint32_t blen) constm5::nfc::ndef::Record
identifier() constm5::nfc::ndef::Recordinline
identifierSize() constm5::nfc::ndef::Recordinline
operator==(const Record &a, const Record &b)m5::nfc::ndef::Recordfriend
payload() constm5::nfc::ndef::Recordinline
payloadAsString() constm5::nfc::ndef::Record
payloadSize() constm5::nfc::ndef::Recordinline
Record() noexcept (defined in m5::nfc::ndef::Record)m5::nfc::ndef::Recordinline
Record(const TNF tnf) noexcept (defined in m5::nfc::ndef::Record)m5::nfc::ndef::Recordinlineexplicit
required() constm5::nfc::ndef::Record
set_text_payload(const char *str, const char *lang) (defined in m5::nfc::ndef::Record)m5::nfc::ndef::Recordprotected
set_uri_payload(const char *uri, URIProtocol protocol) (defined in m5::nfc::ndef::Record)m5::nfc::ndef::Recordprotected
setIdentifier(const uint8_t *id, const uint32_t len)m5::nfc::ndef::Recordinline
setPayload(const uint8_t *data, const uint32_t len)m5::nfc::ndef::Recordinline
setTextPayload(const char *str, const char *lang)m5::nfc::ndef::Record
setType(const char *s) (defined in m5::nfc::ndef::Record)m5::nfc::ndef::Recordinline
setURIPayload(const char *uri, URIProtocol protocol)m5::nfc::ndef::Record
tnf() const (defined in m5::nfc::ndef::Record)m5::nfc::ndef::Recordinline
type() const (defined in m5::nfc::ndef::Record)m5::nfc::ndef::Recordinline
~Record() (defined in m5::nfc::ndef::Record)m5::nfc::ndef::Recordinline
+
+ + + + diff --git a/classm5_1_1nfc_1_1ndef_1_1_record.html b/classm5_1_1nfc_1_1ndef_1_1_record.html new file mode 100644 index 0000000..2e488ef --- /dev/null +++ b/classm5_1_1nfc_1_1ndef_1_1_record.html @@ -0,0 +1,492 @@ + + + + + + + +M5Unit-NFC: m5::nfc::ndef::Record Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
m5::nfc::ndef::Record Class Reference
+
+
+ +

NDEF Record. + More...

+ +

#include <ndef_record.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Record (const TNF tnf) noexcept
 
+uint32_t required () const
 Size required for encoding.
 
uint32_t encode (uint8_t *buf, const uint32_t blen) const
 Encode.
 
uint32_t decode (const uint8_t *buf, const uint32_t blen)
 Decode.
 
+void clear ()
 Clear.
 
+void dump () const
 Dump record for debug.
 
Attribute
+Attributeattribute ()
 
+const Attributeattribute () const
 
+TNF tnf () const
 
Type
Note
Well-known NDEF Record Types + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NDEF Record Type Description Specification Reference
Di Device Information Device Information Record Type Definition
Gc Generic Control Generic Control Record Type Definition
Hc Handover Carrier Connection Handover
Hi Handover Initiate Connection Handover
Hm Handover Mediation Connection Handover
Hr Handover Request Connection Handover
Hs Handover Select Connection Handover
Mr Money Transfer Response NFC Money Transfer
Mt Money Transfer Request NFC Money Transfer
PHD Personal Health Device Personal Health Device Communication
Sig Signature Signature Record Type Definition
Sp Smart Poster Smart Poster Record Type Definition
T Text Text Record Type Definition
Te TNEP Status Tag NDEF Exchange Protocol
Tp Service Parameter Tag NDEF Exchange Protocol
Ts Service Select Tag NDEF Exchange Protocol
U URI URI Record Type Definition
V Verb Verb Record Type Definition
WLCCAP WLC Capability Wireless Charging
WLCCTL WLC Listen Control Wireless Charging
WLCFOD WLC JiFOD Wireless Charging
WLCINF WLC Poll Information Wireless Charging
+
+

If TNF is TNF::Media, type is MIME type string e.g. "text/plain" , "image/png"...

+
+const char * type () const
 
+void setType (const char *s)
 
Identifier
+uint32_t identifierSize () const
 Gets the identifier size.
 
+const uint8_t * identifier () const
 Gets the identifier pointer.
 
void setIdentifier (const uint8_t *id, const uint32_t len)
 Set the identifier.
 
+void clearIdentifier ()
 Clear the identifier.
 
Payload
+std::string payloadAsString () const
 Obtain the payload as a string.
 
+uint32_t payloadSize () const
 Gets the payload size.
 
+const uint8_t * payload () const
 Gets the payload pointer.
 
void setPayload (const uint8_t *data, const uint32_t len)
 Set the payload data.
 
Payload helper for TNF::Wellknown
bool setTextPayload (const char *str, const char *lang)
 Set text to the payload.
 
bool setURIPayload (const char *uri, URIProtocol protocol)
 Set URI to the payload.
 
+ + + + + + + +

+Protected Member Functions

+bool apply_nested_message ()
 
+void set_text_payload (const char *str, const char *lang)
 
+void set_uri_payload (const char *uri, URIProtocol protocol)
 
+ + + + +

+Friends

+bool operator== (const Record &a, const Record &b)
 Equal?
 
+

Detailed Description

+

NDEF Record.

+
Warning
CF is not supported
+

Member Function Documentation

+ +

◆ decode()

+ +
+
+ + + + + + + + + + + +
uint32_t m5::nfc::ndef::Record::decode (const uint8_t * buf,
const uint32_t blen )
+
+ +

Decode.

+
Parameters
+ + + +
bufPointer of the NDEF Record
blenBuffer length
+
+
+
Return values
+ + + +
>0 Decoded length
==0 Error
+
+
+ +
+
+ +

◆ encode()

+ +
+
+ + + + + + + + + + + +
uint32_t m5::nfc::ndef::Record::encode (uint8_t * buf,
const uint32_t blen ) const
+
+ +

Encode.

+
Parameters
+ + + +
[out]bufBuffer
blenBuffer size
+
+
+
Return values
+ + + +
>0 Encoded length
==0 Error
+
+
+ +
+
+ +

◆ setIdentifier()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void m5::nfc::ndef::Record::setIdentifier (const uint8_t * id,
const uint32_t len )
+
+inline
+
+ +

Set the identifier.

+
Parameters
+ + + +
idPointer of the identifier
lenidentifier length
+
+
+ +
+
+ +

◆ setPayload()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void m5::nfc::ndef::Record::setPayload (const uint8_t * data,
const uint32_t len )
+
+inline
+
+ +

Set the payload data.

+
Parameters
+ + + +
dataPointer of the data
lendata length
+
+
+ +
+
+ +

◆ setTextPayload()

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::ndef::Record::setTextPayload (const char * str,
const char * lang )
+
+ +

Set text to the payload.

+
Parameters
+ + + +
strString as UTF-8
langISO/IANA language code. e.g. "en"
+
+
+
Warning
type is changed to "T"
+
+UTF-8 only
+ +
+
+ +

◆ setURIPayload()

+ +
+
+ + + + + + + + + + + +
bool m5::nfc::ndef::Record::setURIPayload (const char * uri,
URIProtocol protocol )
+
+ +

Set URI to the payload.

+
Parameters
+ + + +
uriURI full text e.g. https://www.example.com
protocolURIProtocol
+
+
+
Note
If there is a part that can be omitted by the protocol, it is omitted and stored
+
Warning
type is changed to "U"
+ +
+
+
+
+ + + + diff --git a/classm5_1_1nfc_1_1ndef_1_1_record.js b/classm5_1_1nfc_1_1ndef_1_1_record.js new file mode 100644 index 0000000..fa08445 --- /dev/null +++ b/classm5_1_1nfc_1_1ndef_1_1_record.js @@ -0,0 +1,19 @@ +var classm5_1_1nfc_1_1ndef_1_1_record = +[ + [ "clear", "classm5_1_1nfc_1_1ndef_1_1_record.html#a971de976a6c0b032885218fcac7b0b0a", null ], + [ "clearIdentifier", "classm5_1_1nfc_1_1ndef_1_1_record.html#a3747f61f495e7b0480f29bbf49bea74c", null ], + [ "decode", "classm5_1_1nfc_1_1ndef_1_1_record.html#adeaae2985edd51a8db464fbe57e1ee5c", null ], + [ "dump", "classm5_1_1nfc_1_1ndef_1_1_record.html#aafd086e92751abae204ecde8d213da5c", null ], + [ "encode", "classm5_1_1nfc_1_1ndef_1_1_record.html#a6a4da09ffe10b063c174c9e4c5e5ad3a", null ], + [ "identifier", "classm5_1_1nfc_1_1ndef_1_1_record.html#ad1b2fab80216ddd14c0b06502d31a707", null ], + [ "identifierSize", "classm5_1_1nfc_1_1ndef_1_1_record.html#af60a22933abd389082980c943def5ee3", null ], + [ "payload", "classm5_1_1nfc_1_1ndef_1_1_record.html#a277f654c9f1e6cc2000a41531befb09c", null ], + [ "payloadAsString", "classm5_1_1nfc_1_1ndef_1_1_record.html#acf8cc597c825300d9e0eff4ec239cb7c", null ], + [ "payloadSize", "classm5_1_1nfc_1_1ndef_1_1_record.html#a22e7e4a8281b52ecd93ce557cff1693d", null ], + [ "required", "classm5_1_1nfc_1_1ndef_1_1_record.html#a7a23c577e74fe4cf86c61c351125798c", null ], + [ "setIdentifier", "classm5_1_1nfc_1_1ndef_1_1_record.html#ae58c57b3a64ea9994961324f8eb5489e", null ], + [ "setPayload", "classm5_1_1nfc_1_1ndef_1_1_record.html#ae8e62dbadd7289e91d80df78572c4958", null ], + [ "setTextPayload", "classm5_1_1nfc_1_1ndef_1_1_record.html#a8b2d1b07c095b9878b5468c3934a17bc", null ], + [ "setURIPayload", "classm5_1_1nfc_1_1ndef_1_1_record.html#a170c8e9afe7d6631c6d6a7f062fed1f5", null ], + [ "operator==", "classm5_1_1nfc_1_1ndef_1_1_record.html#a3e7f7c256eb7d9deb3bacb503e530793", null ] +]; \ No newline at end of file diff --git a/classm5_1_1nfc_1_1ndef_1_1_t_l_v-members.html b/classm5_1_1nfc_1_1ndef_1_1_t_l_v-members.html new file mode 100644 index 0000000..bebec5c --- /dev/null +++ b/classm5_1_1nfc_1_1ndef_1_1_t_l_v-members.html @@ -0,0 +1,133 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
m5::nfc::ndef::TLV Member List
+
+
+ +

This is the complete list of members for m5::nfc::ndef::TLV, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
clear()m5::nfc::ndef::TLV
container_type typedef (defined in m5::nfc::ndef::TLV)m5::nfc::ndef::TLV
decode(const uint8_t *buf, const uint32_t len)m5::nfc::ndef::TLV
dump() (defined in m5::nfc::ndef::TLV)m5::nfc::ndef::TLV
encode(uint8_t *buf, const uint32_t blen) constm5::nfc::ndef::TLV
isMessageTLV() constm5::nfc::ndef::TLVinline
isNullTLV() constm5::nfc::ndef::TLVinline
isTerminatorTLV() constm5::nfc::ndef::TLVinline
payload() constm5::nfc::ndef::TLVinline
payload()m5::nfc::ndef::TLVinline
pop_back()m5::nfc::ndef::TLV
push_back(const Record &r)m5::nfc::ndef::TLV
records() constm5::nfc::ndef::TLVinline
required() constm5::nfc::ndef::TLV
tag() constm5::nfc::ndef::TLVinline
Terminatorm5::nfc::ndef::TLVstatic
TLV() (defined in m5::nfc::ndef::TLV)m5::nfc::ndef::TLVinline
TLV(const Tag t) (defined in m5::nfc::ndef::TLV)m5::nfc::ndef::TLVinlineexplicit
~TLV() (defined in m5::nfc::ndef::TLV)m5::nfc::ndef::TLVinline
+
+ + + + diff --git a/classm5_1_1nfc_1_1ndef_1_1_t_l_v.html b/classm5_1_1nfc_1_1ndef_1_1_t_l_v.html new file mode 100644 index 0000000..5d85cdd --- /dev/null +++ b/classm5_1_1nfc_1_1ndef_1_1_t_l_v.html @@ -0,0 +1,398 @@ + + + + + + + +M5Unit-NFC: m5::nfc::ndef::TLV Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
m5::nfc::ndef::TLV Class Reference
+
+
+ +

NDEF TLV container. + More...

+ +

#include <ndef_tlv.hpp>

+ + + + +

+Public Types

+using container_type = std::vector<Record>
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TLV (const Tag t)
 
+Tag tag () const
 Tag.
 
+bool isTerminatorTLV () const
 Is termibator.
 
+bool isMessageTLV () const
 Is Message?
 
+bool isNullTLV () const
 Is Null TLV?
 
const container_type & records () const
 Get the records.
 
const std::vector< uint8_t > & payload () const
 Get the payload.
 
std::vector< uint8_t > & payload ()
 Get the payload.
 
+uint32_t required () const
 Size required for encoding.
 
bool push_back (const Record &r)
 Push back the record.
 
+void pop_back ()
 Removes the last record.
 
uint32_t encode (uint8_t *buf, const uint32_t blen) const
 Encode.
 
uint32_t decode (const uint8_t *buf, const uint32_t len)
 Decode.
 
void clear ()
 Clear internal buffers.
 
+void dump ()
 
+ + + + +

+Static Public Attributes

+static const TLV Terminator
 Terminator instance.
 
+

Detailed Description

+

NDEF TLV container.

+

Member Function Documentation

+ +

◆ clear()

+ +
+
+ + + + + + + +
void m5::nfc::ndef::TLV::clear ()
+
+ +

Clear internal buffers.

+
Warning
Keep the tag
+ +
+
+ +

◆ decode()

+ +
+
+ + + + + + + + + + + +
uint32_t m5::nfc::ndef::TLV::decode (const uint8_t * buf,
const uint32_t len )
+
+ +

Decode.

+
Parameters
+ + + +
bufPointer of the TLV
lenBuffer length
+
+
+
Return values
+ + + +
>0 Decoded length
==0 Error
+
+
+ +
+
+ +

◆ encode()

+ +
+
+ + + + + + + + + + + +
uint32_t m5::nfc::ndef::TLV::encode (uint8_t * buf,
const uint32_t blen ) const
+
+ +

Encode.

+
Parameters
+ + + +
[out]bufBuffer
blenBuffer size
+
+
+
Return values
+ + + +
>0 Encoded length
==0 Error
+
+
+ +
+
+ +

◆ payload() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< uint8_t > & m5::nfc::ndef::TLV::payload ()
+
+inline
+
+ +

Get the payload.

+
Precondition
Tag must NOT be Message
+ +
+
+ +

◆ payload() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< uint8_t > & m5::nfc::ndef::TLV::payload () const
+
+inline
+
+ +

Get the payload.

+
Precondition
Tag must NOT be Message
+ +
+
+ +

◆ push_back()

+ +
+
+ + + + + + + +
bool m5::nfc::ndef::TLV::push_back (const Record & r)
+
+ +

Push back the record.

+
Parameters
+ + +
rRecord
+
+
+
Returns
True if successful
+
Note
A copy of the Record is inserted at the end
+ +
+
+ +

◆ records()

+ +
+
+ + + + + +
+ + + + + + + +
const container_type & m5::nfc::ndef::TLV::records () const
+
+inline
+
+ +

Get the records.

+
Precondition
Tag must be Message
+ +
+
+
+
+ + + + diff --git a/classm5_1_1nfc_1_1ndef_1_1_t_l_v.js b/classm5_1_1nfc_1_1ndef_1_1_t_l_v.js new file mode 100644 index 0000000..52fde8c --- /dev/null +++ b/classm5_1_1nfc_1_1ndef_1_1_t_l_v.js @@ -0,0 +1,16 @@ +var classm5_1_1nfc_1_1ndef_1_1_t_l_v = +[ + [ "clear", "classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a511a1e56db5880593d3fad076a69ade1", null ], + [ "decode", "classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#acff3b1b7b7de44f89daf5c5533eec441", null ], + [ "encode", "classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#ad6f904f81efecc20d4864a9a08681421", null ], + [ "isMessageTLV", "classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a9388477e6870fd2f02d3c4532da655fc", null ], + [ "isNullTLV", "classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#ac47de838e481a6c48dfccd2dee8dcc07", null ], + [ "isTerminatorTLV", "classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#ac945d81eab0f1763d351a1d899bc05f3", null ], + [ "payload", "classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a154c89885e3320cd90b299a23b037018", null ], + [ "payload", "classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a8cd8fac4f01ea81f13186128ad54cb96", null ], + [ "pop_back", "classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a9a83f92eaac4493a7bd7f516ccb5be73", null ], + [ "push_back", "classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a15bee7516420140983d422a2fd3a951c", null ], + [ "records", "classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#af29acd8396d9c52414a1c3ff17281ef8", null ], + [ "required", "classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#ab2ce3a26b5fdc7cd0714954a1abd93a8", null ], + [ "tag", "classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a27d60314383f0b0655137a1f9b1590fe", null ] +]; \ No newline at end of file diff --git a/classm5_1_1unit_1_1_cap_s_t25_r3916-members.html b/classm5_1_1unit_1_1_cap_s_t25_r3916-members.html new file mode 100644 index 0000000..3013dee --- /dev/null +++ b/classm5_1_1unit_1_1_cap_s_t25_r3916-members.html @@ -0,0 +1,369 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
m5::unit::CapST25R3916 Member List
+
+
+ +

This is the complete list of members for m5::unit::CapST25R3916, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin() override (defined in m5::unit::CapST25R3916)m5::unit::CapST25R3916virtual
CapST25R3916(const uint8_t cs_pin=DEFAULT_ADDRESS) (defined in m5::unit::CapST25R3916)m5::unit::CapST25R3916explicit
change_bit_register8(const uint8_t reg, const uint8_t bits, const uint8_t mask) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916inlineprotected
change_bit_register8(const uint16_t reg, const uint8_t bits, const uint8_t mask) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916inlineprotected
change_test_bit_register8(const uint8_t reg, const uint8_t bits, const uint8_t mask) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
change_test_bit_register8(const uint16_t reg, const uint8_t bits, const uint8_t mask) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
clear_bit_register8(const uint8_t reg, const uint8_t bits) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
clear_bit_register8(const uint16_t reg, const uint8_t bits) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
clearInterrupts()m5::unit::UnitST25R3916
config()m5::unit::UnitST25R3916inline
config(const config_t &cfg)m5::unit::UnitST25R3916inline
configure_emulation_a() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
configure_emulation_f() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
configure_nfc_a() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
configure_nfc_b() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
configure_nfc_f() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
configure_nfc_v() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
configureEmulationMode(const m5::nfc::NFC mode)m5::unit::UnitST25R3916
configureNFCMode(const m5::nfc::NFC mode)m5::unit::UnitST25R3916
disable_field() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
disable_interrupts(const uint32_t mask) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916inlineprotected
disableField()m5::unit::UnitST25R3916
dumpRegister() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916
enable_interrupts(const uint32_t mask) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916inlineprotected
enable_osc() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
enableField()m5::unit::UnitST25R3916
isNFCMode(const m5::nfc::NFC mode)m5::unit::UnitST25R3916inline
mifare_classic_authenticate(const m5::nfc::a::Command cmd, const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
mifare_classic_send_encrypt(const uint8_t *tx, const uint16_t tx_len) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
mifare_classic_transceive_encrypt(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms, const bool include_crc, const bool decrypt) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
mifareClassicAuthenticateA(const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)m5::unit::UnitST25R3916inline
mifareClassicAuthenticateB(const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)m5::unit::UnitST25R3916inline
mifareClassicValueBlock(const m5::nfc::a::Command cmd, const uint8_t block, const uint32_t arg=0)m5::unit::UnitST25R3916
modify_bit_register8(const uint8_t reg, const uint8_t set_mask, const uint8_t clear_mask) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
modify_bit_register8(const uint16_t reg, const uint8_t set_mask, const uint8_t clear_mask) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
modify_interrupts(const uint32_t clr, const uint32_t set) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
nfc_initial_field_on() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
nfca_anti_collision(uint8_t rbuf[5], const uint8_t lv) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
nfca_request_wakeup(uint16_t &atqa, const bool req) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
nfcaHlt()m5::unit::UnitST25R3916
nfcaReadBlock(uint8_t rx[16], const uint8_t block)m5::unit::UnitST25R3916
nfcaReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
nfcaRequest(uint16_t &atqa)m5::unit::UnitST25R3916inline
nfcaSelect(const m5::nfc::a::PICC &picc)m5::unit::UnitST25R3916
nfcaSelectWithAnticollision(bool &completed, m5::nfc::a::PICC &picc, const uint8_t lv)m5::unit::UnitST25R3916
nfcaTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
nfcaTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
nfcaWakeup(uint16_t &atqa)m5::unit::UnitST25R3916inline
nfcaWriteBlock(const uint8_t block, const uint8_t tx[16])m5::unit::UnitST25R3916
nfcbReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
nfcbTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
nfcbTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
nfcfReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
nfcfTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
nfcfTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
NFCMode() constm5::unit::UnitST25R3916inline
nfcvReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
nfcvTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_bytes, const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode=m5::nfc::v::ModulationMode::OneOf4)m5::unit::UnitST25R3916
nfcvTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode=m5::nfc::v::ModulationMode::OneOf4)m5::unit::UnitST25R3916
on_irq(void *arg) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protectedstatic
read_FIFO(std::vector< uint8_t > &out) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
read_register16(const uint8_t reg, uint16_t &v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
read_register16(const uint16_t reg, uint16_t &v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
read_register32(const uint8_t reg, uint32_t &v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
read_register32(const uint16_t reg, uint32_t &v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
read_register8(const uint8_t reg, uint8_t &v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
read_register8(const uint16_t reg, uint8_t &v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
readADConverterOutput(uint8_t &value)m5::unit::UnitST25R3916inline
readAmplitudeMeasurementAutoAveragingDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readAmplitudeMeasurementConfiguration(uint8_t &value)m5::unit::UnitST25R3916inline
readAmplitudeMeasurementDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readAmplitudeMeasurementReference(uint8_t &value)m5::unit::UnitST25R3916inline
readAntennaTuningControl(uint16_t &value)m5::unit::UnitST25R3916inline
readAntennaTuningControl1(uint8_t &value)m5::unit::UnitST25R3916inline
readAntennaTuningControl2(uint8_t &value)m5::unit::UnitST25R3916inline
readAuxiliaryDefinition(uint8_t &value)m5::unit::UnitST25R3916inline
readAuxiliaryDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readAuxiliaryModulationSetting(uint8_t &value)m5::unit::UnitST25R3916inline
readBitrateDefinition(uint8_t &value)m5::unit::UnitST25R3916inline
readBitrateDetectionDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readCapacitanceMeasurementAutoAveragingDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readCapacitanceMeasurementConfiguration(uint8_t &value)m5::unit::UnitST25R3916inline
readCapacitanceMeasurementDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readCapacitanceMeasurementReference(uint8_t &value)m5::unit::UnitST25R3916inline
readCapacitiveSensorControl(uint8_t &value)m5::unit::UnitST25R3916inline
readCapacitiveSensorDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readCollisionDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readCorrelatorConfiguration(uint16_t &value)m5::unit::UnitST25R3916inline
readCorrelatorConfiguration1(uint8_t &value)m5::unit::UnitST25R3916inline
readCorrelatorConfiguration2(uint8_t &value)m5::unit::UnitST25R3916inline
readEMDSuppressionConfiguration(uint8_t &value)m5::unit::UnitST25R3916inline
readErrorAndWakeupInterrupt(uint8_t &value)m5::unit::UnitST25R3916inline
readExternalFieldDetectorActivationThreshold(uint8_t &value)m5::unit::UnitST25R3916inline
readExternalFieldDetectorDeactivationThreshold(uint8_t &value)m5::unit::UnitST25R3916inline
readFIFO(uint16_t &actual, uint8_t *buf, const uint16_t buf_size)m5::unit::UnitST25R3916
readFIFOSize(uint16_t &bytes, uint8_t &bits)m5::unit::UnitST25R3916
readFIFOStatus(uint16_t &value)m5::unit::UnitST25R3916inline
readFIFOStatus1(uint8_t &value)m5::unit::UnitST25R3916inline
readFIFOStatus2(uint8_t &value)m5::unit::UnitST25R3916inline
readGainReductionState(uint8_t &value)m5::unit::UnitST25R3916inline
readGeneralPurposeTimer(uint16_t &value)m5::unit::UnitST25R3916inline
readGeneralPurposeTimer1(uint8_t &value)m5::unit::UnitST25R3916inline
readGeneralPurposeTimer2(uint8_t &value)m5::unit::UnitST25R3916inline
readICIdentity(uint8_t &type, uint8_t &rev)m5::unit::UnitST25R3916
readInterrupts(uint32_t &value)m5::unit::UnitST25R3916
readIOConfiguration(uint16_t &value)m5::unit::UnitST25R3916inline
readIOConfiguration1(uint8_t &value)m5::unit::UnitST25R3916inline
readIOConfiguration2(uint8_t &value)m5::unit::UnitST25R3916inline
readMainInterrupt(uint8_t &value)m5::unit::UnitST25R3916inline
readMaskErrorAndWakeupInterrupt(uint8_t &value)m5::unit::UnitST25R3916inline
readMaskInterrupts(uint32_t &value)m5::unit::UnitST25R3916inline
readMaskMainInterrupt(uint8_t &value)m5::unit::UnitST25R3916inline
readMaskPassiveTargetInterrupt(uint8_t &value)m5::unit::UnitST25R3916inline
readMaskReceiveTimer(uint8_t &value)m5::unit::UnitST25R3916inline
readMaskTimerAndNFCInterrupt(uint8_t &value)m5::unit::UnitST25R3916inline
readModeDefinition(uint8_t &value)m5::unit::UnitST25R3916inline
readNFCFieldOnGuardTimer(uint8_t &value)m5::unit::UnitST25R3916inline
readNFCIP1PassiveTargetDefinition(uint8_t &value)m5::unit::UnitST25R3916inline
readNoResponseTimer(uint16_t &value)m5::unit::UnitST25R3916inline
readNoResponseTimer1(uint8_t &value)m5::unit::UnitST25R3916inline
readNoResponseTimer2(uint8_t &value)m5::unit::UnitST25R3916inline
readNumberOfTransmittedBytes(uint16_t &value)m5::unit::UnitST25R3916inline
readNumberOfTransmittedBytes1(uint8_t &value)m5::unit::UnitST25R3916inline
readNumberOfTransmittedBytes2(uint8_t &value)m5::unit::UnitST25R3916inline
readOperationControl(uint8_t &value)m5::unit::UnitST25R3916inline
readOvershootProtectionConfiguration(uint16_t &value)m5::unit::UnitST25R3916inline
readOvershootProtectionConfiguration1(uint8_t &value)m5::unit::UnitST25R3916inline
readOvershootProtectionConfiguration2(uint8_t &value)m5::unit::UnitST25R3916inline
readP2PReceiverConfiguration(uint8_t &value)m5::unit::UnitST25R3916inline
readPassiveTargetDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readPassiveTargetInterrupt(uint8_t &value)m5::unit::UnitST25R3916inline
readPassiveTargetModulation(uint8_t &value)m5::unit::UnitST25R3916inline
readPhaseMeasurementAutoAveragingDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readPhaseMeasurementConfiguration(uint8_t &value)m5::unit::UnitST25R3916inline
readPhaseMeasurementDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readPhaseMeasurementReference(uint8_t &value)m5::unit::UnitST25R3916inline
readPPON2FieldWaiting(uint8_t &value)m5::unit::UnitST25R3916inline
readPtMemory(uint8_t *rx, const uint32_t rx_len) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916
readReceiverConfiguration(uint32_t &value)m5::unit::UnitST25R3916inline
readReceiverConfiguration1(uint8_t &value)m5::unit::UnitST25R3916inline
readReceiverConfiguration2(uint8_t &value)m5::unit::UnitST25R3916inline
readReceiverConfiguration3(uint8_t &value)m5::unit::UnitST25R3916inline
readReceiverConfiguration4(uint8_t &value)m5::unit::UnitST25R3916inline
readRegulatorDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readRegulatorVoltageControl(uint8_t &value)m5::unit::UnitST25R3916inline
readResistiveAMModulation(uint8_t &value)m5::unit::UnitST25R3916inline
readRSSIDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readSettingsFelica(uint8_t &value)m5::unit::UnitST25R3916inline
readSettingsISO14443A(uint8_t &value)m5::unit::UnitST25R3916inline
readSettingsISO14443B(uint8_t &value)m5::unit::UnitST25R3916inline
readSquelchTimer(uint8_t &value)m5::unit::UnitST25R3916inline
readStreamModeDefinition(uint8_t &value)m5::unit::UnitST25R3916inline
readSubcarrierStartTimer(uint8_t &value)m5::unit::UnitST25R3916inline
readTimerAndEMVControl(uint8_t &value)m5::unit::UnitST25R3916inline
readTimerAndNFCInterrupt(uint8_t &value)m5::unit::UnitST25R3916inline
readTXDriver(uint8_t &value)m5::unit::UnitST25R3916inline
readTXDriverTiming(uint8_t &value)m5::unit::UnitST25R3916inline
readTXDriverTimingDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readUndershootProtectionConfiguration(uint16_t &value)m5::unit::UnitST25R3916inline
readUndershootProtectionConfiguration1(uint8_t &value)m5::unit::UnitST25R3916inline
readUndershootProtectionConfiguration2(uint8_t &value)m5::unit::UnitST25R3916inline
readWakeupTimerControl(uint8_t &value)m5::unit::UnitST25R3916inline
set_bit_register8(const uint8_t reg, const uint8_t bits) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
set_bit_register8(const uint16_t reg, const uint8_t bits) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
UnitST25R3916(const uint8_t arg=DEFAULT_ADDRESS) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916inlineexplicit
update(const bool force=false) override (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916virtual
wait_for_FIFO(const uint32_t timeout_ms, const uint16_t required_size=0) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
wait_for_interrupt(const uint32_t irq, const uint32_t timeout_ms=100) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
write_fwt_timer(const uint32_t ms) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
write_mask_receiver_timer(const uint32_t us) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
write_register16(const uint8_t reg, const uint16_t v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
write_register16(const uint16_t reg, const uint16_t v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
write_register32(const uint8_t reg, const uint32_t v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
write_register32(const uint16_t reg, const uint32_t v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
write_register8(const uint8_t reg, const uint8_t v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
write_register8(const uint16_t reg, const uint8_t v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
write_squelch_timer(const uint32_t us) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
writeAmplitudeMeasurementConfiguration(const uint8_t value)m5::unit::UnitST25R3916inline
writeAmplitudeMeasurementReference(const uint8_t value)m5::unit::UnitST25R3916inline
writeAntennaTuningControl(const uint16_t value)m5::unit::UnitST25R3916inline
writeAntennaTuningControl1(const uint8_t value)m5::unit::UnitST25R3916inline
writeAntennaTuningControl2(const uint8_t value)m5::unit::UnitST25R3916inline
writeAuxiliaryDefinition(const uint8_t value)m5::unit::UnitST25R3916inline
writeAuxiliaryModulationSetting(const uint8_t value)m5::unit::UnitST25R3916inline
writeBitrate(const m5::nfc::Bitrate tx, const m5::nfc::Bitrate rx)m5::unit::UnitST25R3916
writeBitrateDefinition(const uint8_t value)m5::unit::UnitST25R3916inline
writeCapacitanceMeasurementConfiguration(const uint8_t value)m5::unit::UnitST25R3916inline
writeCapacitanceMeasurementReference(const uint8_t value)m5::unit::UnitST25R3916inline
writeCapacitiveSensorControl(const uint8_t value)m5::unit::UnitST25R3916inline
writeCorrelatorConfiguration(const uint16_t value)m5::unit::UnitST25R3916inline
writeCorrelatorConfiguration1(const uint8_t value)m5::unit::UnitST25R3916inline
writeCorrelatorConfiguration2(const uint8_t value)m5::unit::UnitST25R3916inline
writeDirectCommand(const uint8_t cmd, const uint8_t *data=nullptr, const uint32_t dlen=0u)m5::unit::UnitST25R3916
writeEMDSuppressionConfiguration(const uint8_t value)m5::unit::UnitST25R3916inline
writeExternalFieldDetectorActivationThreshold(const uint8_t value)m5::unit::UnitST25R3916inline
writeExternalFieldDetectorDeactivationThreshold(const uint8_t value)m5::unit::UnitST25R3916inline
writeFIFO(const uint8_t *buf, const uint16_t buf_size)m5::unit::UnitST25R3916
writeGeneralPurposeTimer(const uint16_t value)m5::unit::UnitST25R3916inline
writeGeneralPurposeTimer1(const uint8_t value)m5::unit::UnitST25R3916inline
writeGeneralPurposeTimer2(const uint8_t value)m5::unit::UnitST25R3916inline
writeInitiatorOperationMode(const st25r3916::InitiatorOperationMode mode, const uint8_t optional=0)m5::unit::UnitST25R3916
writeIOConfiguration(const uint16_t value)m5::unit::UnitST25R3916inline
writeIOConfiguration1(const uint8_t value)m5::unit::UnitST25R3916inline
writeIOConfiguration2(const uint8_t value)m5::unit::UnitST25R3916inline
writeMaskErrorAndWakeupInterrupt(const uint8_t value)m5::unit::UnitST25R3916inline
writeMaskInterrupts(const uint32_t value)m5::unit::UnitST25R3916inline
writeMaskMainInterrupt(const uint8_t value)m5::unit::UnitST25R3916inline
writeMaskPassiveTargetInterrupt(const uint8_t value)m5::unit::UnitST25R3916inline
writeMaskReceiveTimer(const uint8_t value)m5::unit::UnitST25R3916inline
writeMaskTimerAndNFCInterrupt(const uint8_t value)m5::unit::UnitST25R3916inline
writeModeDefinition(const uint8_t value)m5::unit::UnitST25R3916inline
writeNFCFieldOnGuardTimer(const uint8_t value)m5::unit::UnitST25R3916inline
writeNFCIP1PassiveTargetDefinition(const uint8_t value)m5::unit::UnitST25R3916inline
writeNoResponseTimer(const uint16_t value)m5::unit::UnitST25R3916inline
writeNoResponseTimer1(const uint8_t value)m5::unit::UnitST25R3916inline
writeNoResponseTimer2(const uint8_t value)m5::unit::UnitST25R3916inline
writeNumberOfTransmittedBytes(const uint16_t value)m5::unit::UnitST25R3916inline
writeNumberOfTransmittedBytes(const uint16_t bytes, const uint8_t bits)m5::unit::UnitST25R3916inline
writeNumberOfTransmittedBytes1(const uint8_t value)m5::unit::UnitST25R3916inline
writeNumberOfTransmittedBytes2(const uint8_t value)m5::unit::UnitST25R3916inline
writeOperationControl(const uint8_t value)m5::unit::UnitST25R3916inline
writeOvershootProtectionConfiguration(const uint16_t value)m5::unit::UnitST25R3916inline
writeOvershootProtectionConfiguration1(const uint8_t value)m5::unit::UnitST25R3916inline
writeOvershootProtectionConfiguration2(const uint8_t value)m5::unit::UnitST25R3916inline
writeP2PReceiverConfiguration(const uint8_t value)m5::unit::UnitST25R3916inline
writePassiveTargetModulation(const uint8_t value)m5::unit::UnitST25R3916inline
writePhaseMeasurementConfiguration(const uint8_t value)m5::unit::UnitST25R3916inline
writePhaseMeasurementReference(const uint8_t value)m5::unit::UnitST25R3916inline
writePPON2FieldWaiting(const uint8_t value)m5::unit::UnitST25R3916inline
writePtMemoryA(const uint8_t *tx, const uint32_t tx_len) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916
writePtMemoryF(const uint8_t *tx, const uint32_t tx_len) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916
writePtMemoryTSN(const uint8_t *tx, const uint32_t tx_len) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916
writeReceiverConfiguration(const uint32_t value)m5::unit::UnitST25R3916inline
writeReceiverConfiguration1(const uint8_t value)m5::unit::UnitST25R3916inline
writeReceiverConfiguration2(const uint8_t value)m5::unit::UnitST25R3916inline
writeReceiverConfiguration3(const uint8_t value)m5::unit::UnitST25R3916inline
writeReceiverConfiguration4(const uint8_t value)m5::unit::UnitST25R3916inline
writeRegulatorVoltageControl(const uint8_t value)m5::unit::UnitST25R3916inline
writeResistiveAMModulation(const uint8_t value)m5::unit::UnitST25R3916inline
writeSettingsFelica(const uint8_t value)m5::unit::UnitST25R3916inline
writeSettingsISO14443A(const uint8_t value)m5::unit::UnitST25R3916inline
writeSettingsISO14443B(const uint8_t value)m5::unit::UnitST25R3916inline
writeSquelchTimer(const uint8_t value)m5::unit::UnitST25R3916inline
writeStreamModeDefinition(const uint8_t value)m5::unit::UnitST25R3916inline
writeSubcarrierStartTimer(const uint8_t value)m5::unit::UnitST25R3916inline
writeTargetOperationMode(const st25r3916::TargetOperationMode mode, const uint8_t optional=0)m5::unit::UnitST25R3916
writeTimerAndEMVControl(const uint8_t value)m5::unit::UnitST25R3916inline
writeTXDriver(const uint8_t value)m5::unit::UnitST25R3916inline
writeTXDriverTiming(const uint8_t value)m5::unit::UnitST25R3916inline
writeUndershootProtectionConfiguration(const uint16_t value)m5::unit::UnitST25R3916inline
writeUndershootProtectionConfiguration1(const uint8_t value)m5::unit::UnitST25R3916inline
writeUndershootProtectionConfiguration2(const uint8_t value)m5::unit::UnitST25R3916inline
writeWakeupTimerControl(const uint8_t value)m5::unit::UnitST25R3916inline
~CapST25R3916()=default (defined in m5::unit::CapST25R3916)m5::unit::CapST25R3916virtual
~UnitST25R3916()=default (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916virtual
+
+ + + + diff --git a/classm5_1_1unit_1_1_cap_s_t25_r3916.html b/classm5_1_1unit_1_1_cap_s_t25_r3916.html new file mode 100644 index 0000000..5afb918 --- /dev/null +++ b/classm5_1_1unit_1_1_cap_s_t25_r3916.html @@ -0,0 +1,924 @@ + + + + + + + +M5Unit-NFC: m5::unit::CapST25R3916 Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
m5::unit::CapST25R3916 Class Reference
+
+
+ +

ST25R3916 unit in CapCC1101 (SPI) + More...

+ +

#include <unit_ST25R3916.hpp>

+
+Inheritance diagram for m5::unit::CapST25R3916:
+
+
+ + +m5::unit::UnitST25R3916 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

CapST25R3916 (const uint8_t cs_pin=DEFAULT_ADDRESS)
 
virtual bool begin () override
 
- Public Member Functions inherited from m5::unit::UnitST25R3916
UnitST25R3916 (const uint8_t arg=DEFAULT_ADDRESS)
 
+virtual void update (const bool force=false) override
 
+m5::nfc::NFC NFCMode () const
 Gets the current operating mode.
 
bool configureNFCMode (const m5::nfc::NFC mode)
 Configure NFC mode.
 
bool configureEmulationMode (const m5::nfc::NFC mode)
 Configure NFC mode for emulation.
 
bool isNFCMode (const m5::nfc::NFC mode)
 Is the current operating mode the one specified?
 
bool writeDirectCommand (const uint8_t cmd, const uint8_t *data=nullptr, const uint32_t dlen=0u)
 Write the direct command with data.
 
+void dumpRegister ()
 
+config_t config ()
 Gets the configuration.
 
+void config (const config_t &cfg)
 Set the configuration.
 
bool clearInterrupts ()
 Clear interrupts flag.
 
bool writeInitiatorOperationMode (const st25r3916::InitiatorOperationMode mode, const uint8_t optional=0)
 Write the initiator operation mode and transition to initiator mode.
 
bool writeTargetOperationMode (const st25r3916::TargetOperationMode mode, const uint8_t optional=0)
 Write the initiator operation mode and transition to target mode.
 
bool writeBitrate (const m5::nfc::Bitrate tx, const m5::nfc::Bitrate rx)
 Write the initiator operation mode and transition to initiator mode.
 
bool readFIFOSize (uint16_t &bytes, uint8_t &bits)
 Read the FIFO size.
 
uint32_t readFIFO (uint16_t &actual, uint8_t *buf, const uint16_t buf_size)
 Read from FIFO.
 
bool writeFIFO (const uint8_t *buf, const uint16_t buf_size)
 Write to FIFO.
 
bool readIOConfiguration1 (uint8_t &value)
 Read the I/O configuration 1.
 
bool writeIOConfiguration1 (const uint8_t value)
 Write the I/O configuration 1.
 
bool readIOConfiguration2 (uint8_t &value)
 Read the I/O configuration 2.
 
bool writeIOConfiguration2 (const uint8_t value)
 
bool readIOConfiguration (uint16_t &value)
 Read the I/O configuration 1-2.
 
bool writeIOConfiguration (const uint16_t value)
 
bool readOperationControl (uint8_t &value)
 Read the operation control.
 
bool writeOperationControl (const uint8_t value)
 Write the operation control.
 
bool readModeDefinition (uint8_t &value)
 Read the mode definition.
 
bool writeModeDefinition (const uint8_t value)
 Write the mode definition.
 
bool readBitrateDefinition (uint8_t &value)
 Read the bitrate definition.
 
bool writeBitrateDefinition (const uint8_t value)
 Write the bitrate definition.
 
bool readSettingsISO14443A (uint8_t &value)
 Read the settings for ISO14443A and NFC 106kb/s.
 
bool writeSettingsISO14443A (const uint8_t value)
 Write the settings for ISO14443A and NFC 106kb/s.
 
bool readSettingsISO14443B (uint8_t &value)
 Read the settings for ISO14443B.
 
bool writeSettingsISO14443B (const uint8_t value)
 Write the settings for ISO14443B.
 
bool readSettingsFelica (uint8_t &value)
 Read the settings for ISO14443B and FeliCa.
 
bool writeSettingsFelica (const uint8_t value)
 Write the settings for ISO14443B and FeliCa.
 
bool readNFCIP1PassiveTargetDefinition (uint8_t &value)
 Read the NFCIP-1 passive target definition.
 
bool writeNFCIP1PassiveTargetDefinition (const uint8_t value)
 
bool readStreamModeDefinition (uint8_t &value)
 Read the stream mode definition.
 
bool writeStreamModeDefinition (const uint8_t value)
 Write the stream mode definition.
 
bool readAuxiliaryDefinition (uint8_t &value)
 Read the Auxiliary definition.
 
bool writeAuxiliaryDefinition (const uint8_t value)
 Write the Auxiliary definition.
 
bool readEMDSuppressionConfiguration (uint8_t &value)
 Read the EMD suppression configuration.
 
bool writeEMDSuppressionConfiguration (const uint8_t value)
 Write the EMD suppression configuration.
 
bool readSubcarrierStartTimer (uint8_t &value)
 Read the subcarrier start timer.
 
bool writeSubcarrierStartTimer (const uint8_t value)
 Write the subcarrier start timer.
 
bool readReceiverConfiguration1 (uint8_t &value)
 Read the receiver configuration 1.
 
bool writeReceiverConfiguration1 (const uint8_t value)
 Write the receiver configuration 1.
 
bool readReceiverConfiguration2 (uint8_t &value)
 Read the receiver configuration 2.
 
bool writeReceiverConfiguration2 (const uint8_t value)
 Write the receiver configuration 2.
 
bool readReceiverConfiguration3 (uint8_t &value)
 Read the receiver configuration 3.
 
bool writeReceiverConfiguration3 (const uint8_t value)
 Write the receiver configuration 3.
 
bool readReceiverConfiguration4 (uint8_t &value)
 
bool writeReceiverConfiguration4 (const uint8_t value)
 Write the receiver configuration 4.
 
bool readReceiverConfiguration (uint32_t &value)
 Read the receiver configuration 1-4.
 
bool writeReceiverConfiguration (const uint32_t value)
 Write the receiver configuration 1-4.
 
bool readP2PReceiverConfiguration (uint8_t &value)
 Read the P2P receiver configuration.
 
bool writeP2PReceiverConfiguration (const uint8_t value)
 Write the P2P receiver configuration.
 
bool readCorrelatorConfiguration1 (uint8_t &value)
 Read the correlator configuration 1.
 
bool writeCorrelatorConfiguration1 (const uint8_t value)
 Write the correlator configuration 1.
 
bool readCorrelatorConfiguration2 (uint8_t &value)
 Read the correlator configuration 2.
 
bool writeCorrelatorConfiguration2 (const uint8_t value)
 Write the correlator configuration 2.
 
bool readCorrelatorConfiguration (uint16_t &value)
 Read the correlator configuration 1-2.
 
bool writeCorrelatorConfiguration (const uint16_t value)
 Write the correlator configuration 1-2.
 
bool readMaskReceiveTimer (uint8_t &value)
 Read the mask receive timer.
 
bool writeMaskReceiveTimer (const uint8_t value)
 Write the mask receive timer.
 
bool readNoResponseTimer1 (uint8_t &value)
 Read the no-response timer 1.
 
bool writeNoResponseTimer1 (const uint8_t value)
 Write the no-response timer 1.
 
bool readNoResponseTimer2 (uint8_t &value)
 Read the no-response timer 2.
 
bool writeNoResponseTimer2 (const uint8_t value)
 Write the no-response timer 2.
 
bool readNoResponseTimer (uint16_t &value)
 Read the no-response timer 1-2.
 
bool writeNoResponseTimer (const uint16_t value)
 Write the no-response timer 1-2.
 
bool readTimerAndEMVControl (uint8_t &value)
 Read the timer and EMV control.
 
bool writeTimerAndEMVControl (const uint8_t value)
 Write the timer and EMV control.
 
bool readGeneralPurposeTimer1 (uint8_t &value)
 Read the general purpose timer 1.
 
bool writeGeneralPurposeTimer1 (const uint8_t value)
 Write the general purpose timer 1.
 
bool readGeneralPurposeTimer2 (uint8_t &value)
 Read the general purpose timer 2.
 
bool writeGeneralPurposeTimer2 (const uint8_t value)
 Write the general purpose timer 2.
 
bool readGeneralPurposeTimer (uint16_t &value)
 Read the general purpose timer 1-2.
 
bool writeGeneralPurposeTimer (const uint16_t value)
 Write the general purpose timer 1-2.
 
bool readPPON2FieldWaiting (uint8_t &value)
 Read the PPON2 field waiting.
 
bool writePPON2FieldWaiting (const uint8_t value)
 Write the PPON2 field waiting.
 
bool readSquelchTimer (uint8_t &value)
 Read the squelch timer.
 
bool writeSquelchTimer (const uint8_t value)
 Write the squelch timer.
 
bool readNFCFieldOnGuardTimer (uint8_t &value)
 Read the NFC field on guard timer.
 
bool writeNFCFieldOnGuardTimer (const uint8_t value)
 Write the NFC field on guard timer.
 
bool readMaskMainInterrupt (uint8_t &value)
 Read the mask main interrupt.
 
bool writeMaskMainInterrupt (const uint8_t value)
 Write the mask main interrupt.
 
bool readMaskTimerAndNFCInterrupt (uint8_t &value)
 Read the mask timer and NFC interrupt.
 
bool writeMaskTimerAndNFCInterrupt (const uint8_t value)
 Write the mask timer and NFC interrupt.
 
bool readMaskErrorAndWakeupInterrupt (uint8_t &value)
 Read the mask error and wake-up interrupt.
 
bool writeMaskErrorAndWakeupInterrupt (const uint8_t value)
 Write the mask error and wake-up interrupt.
 
bool readMaskPassiveTargetInterrupt (uint8_t &value)
 Read the mask passive target interrupt.
 
bool writeMaskPassiveTargetInterrupt (const uint8_t value)
 Write the mask passive target interrupt.
 
bool readMaskInterrupts (uint32_t &value)
 Read the all mask.
 
bool writeMaskInterrupts (const uint32_t value)
 Write the all mask.
 
bool readMainInterrupt (uint8_t &value)
 Read the main interrupt.
 
bool readTimerAndNFCInterrupt (uint8_t &value)
 Read the timer and NFC interrupt.
 
bool readErrorAndWakeupInterrupt (uint8_t &value)
 Read the error and wake-up interrupt.
 
bool readPassiveTargetInterrupt (uint8_t &value)
 Read the passive target interrupt.
 
bool readInterrupts (uint32_t &value)
 Read the all interrupt.
 
bool readFIFOStatus1 (uint8_t &value)
 Read the FIFO status 1.
 
bool readFIFOStatus2 (uint8_t &value)
 Read the FIFO status 1.
 
bool readFIFOStatus (uint16_t &value)
 Read the FIFO status 1-2.
 
bool readCollisionDisplay (uint8_t &value)
 Read the collision display.
 
bool readPassiveTargetDisplay (uint8_t &value)
 Read the passive target.
 
bool readNumberOfTransmittedBytes1 (uint8_t &value)
 Read the number of transmitted bytes 1.
 
bool writeNumberOfTransmittedBytes1 (const uint8_t value)
 Write the number of transmitted bytes 1.
 
bool readNumberOfTransmittedBytes2 (uint8_t &value)
 Read the number of transmitted bytes 2.
 
bool writeNumberOfTransmittedBytes2 (const uint8_t value)
 Write the number of transmitted bytes 2.
 
bool readNumberOfTransmittedBytes (uint16_t &value)
 Read the number of transmitted bytes 1-2.
 
bool writeNumberOfTransmittedBytes (const uint16_t value)
 Write the number of transmitted bytes 1-2.
 
bool writeNumberOfTransmittedBytes (const uint16_t bytes, const uint8_t bits)
 Write the number of transmitted bytes and after bytes.
 
bool readBitrateDetectionDisplay (uint8_t &value)
 Read the bit rate detection display.
 
bool readADConverterOutput (uint8_t &value)
 Read the number of transmitted bytes 2.
 
bool readAntennaTuningControl1 (uint8_t &value)
 Read the Antenna tuning control 1.
 
bool writeAntennaTuningControl1 (const uint8_t value)
 Write the Antenna tuning control 1.
 
bool readAntennaTuningControl2 (uint8_t &value)
 Read the Antenna tuning control 2.
 
bool writeAntennaTuningControl2 (const uint8_t value)
 Write the Antenna tuning control 2.
 
bool readAntennaTuningControl (uint16_t &value)
 Read the Antenna tuning control 1-2.
 
bool writeAntennaTuningControl (const uint16_t value)
 Write the Antenna tuning control 1-2.
 
bool readTXDriver (uint8_t &value)
 Read the TX driver.
 
bool writeTXDriver (const uint8_t value)
 Write the TX driver.
 
bool readPassiveTargetModulation (uint8_t &value)
 Read the passive target modulation.
 
bool writePassiveTargetModulation (const uint8_t value)
 Write the passive target modulation.
 
bool readAuxiliaryModulationSetting (uint8_t &value)
 Read the auxiliary modulation setting.
 
bool writeAuxiliaryModulationSetting (const uint8_t value)
 Write the auxiliary modulation setting.
 
bool readTXDriverTiming (uint8_t &value)
 Read the TX driver timing.
 
bool writeTXDriverTiming (const uint8_t value)
 Write the TX driver timing.
 
bool readExternalFieldDetectorActivationThreshold (uint8_t &value)
 Read the external field detector activation threshold.
 
bool writeExternalFieldDetectorActivationThreshold (const uint8_t value)
 Write the external field detector activation threshold.
 
bool readExternalFieldDetectorDeactivationThreshold (uint8_t &value)
 Read the external field detector deactivation threshold.
 
bool writeExternalFieldDetectorDeactivationThreshold (const uint8_t value)
 Write the external field detector deactivation threshold.
 
bool readResistiveAMModulation (uint8_t &value)
 Read the resistive AM modulation.
 
bool writeResistiveAMModulation (const uint8_t value)
 Write the resistive AM modulation.
 
bool readTXDriverTimingDisplay (uint8_t &value)
 Read the TX driver timing display.
 
bool readRegulatorVoltageControl (uint8_t &value)
 Read the regulator voltage control.
 
bool writeRegulatorVoltageControl (const uint8_t value)
 Write the regulator voltage control.
 
bool readRegulatorDisplay (uint8_t &value)
 Read the regulator display.
 
bool readRSSIDisplay (uint8_t &value)
 Read the external field detector deactivation threshold.
 
bool readGainReductionState (uint8_t &value)
 Read the gain reduction state.
 
bool readCapacitiveSensorControl (uint8_t &value)
 Read the capacitive sensor control.
 
bool writeCapacitiveSensorControl (const uint8_t value)
 Write the capacitive sensor control.
 
bool readCapacitiveSensorDisplay (uint8_t &value)
 Read the capacitive sensor display.
 
bool readAuxiliaryDisplay (uint8_t &value)
 Read the auxiliary display.
 
bool readWakeupTimerControl (uint8_t &value)
 Read the Wake-up timer control.
 
bool writeWakeupTimerControl (const uint8_t value)
 Write the Wake-up timer control.
 
bool readAmplitudeMeasurementConfiguration (uint8_t &value)
 Read the amplitude measurement configuration.
 
bool writeAmplitudeMeasurementConfiguration (const uint8_t value)
 Write the amplitude measurement configuration.
 
bool readAmplitudeMeasurementReference (uint8_t &value)
 Read the amplitude measurement reference.
 
bool writeAmplitudeMeasurementReference (const uint8_t value)
 Write the amplitude measurement reference.
 
bool readAmplitudeMeasurementAutoAveragingDisplay (uint8_t &value)
 Read the amplitude measurement auto-averaging display.
 
bool readAmplitudeMeasurementDisplay (uint8_t &value)
 Read the amplitude measurement display.
 
bool readPhaseMeasurementConfiguration (uint8_t &value)
 Read the phase measurement configuration.
 
bool writePhaseMeasurementConfiguration (const uint8_t value)
 Write the phase measurement configuration.
 
bool readPhaseMeasurementReference (uint8_t &value)
 Read the phase measurement reference.
 
bool writePhaseMeasurementReference (const uint8_t value)
 Write the phase measurement reference.
 
bool readPhaseMeasurementAutoAveragingDisplay (uint8_t &value)
 Read the phase measurement auto-averaging display.
 
bool readPhaseMeasurementDisplay (uint8_t &value)
 Read the phase measurement display.
 
bool readCapacitanceMeasurementConfiguration (uint8_t &value)
 Read the capacitance measurement configuration.
 
bool writeCapacitanceMeasurementConfiguration (const uint8_t value)
 Write the capacitance measurement configuration.
 
bool readCapacitanceMeasurementReference (uint8_t &value)
 Read the capacitance measurement reference.
 
bool writeCapacitanceMeasurementReference (const uint8_t value)
 Write the capacitance measurement reference.
 
bool readCapacitanceMeasurementAutoAveragingDisplay (uint8_t &value)
 Read the capacitance measurement auto-averaging display.
 
bool readCapacitanceMeasurementDisplay (uint8_t &value)
 Read the capacitance measurement display.
 
bool readOvershootProtectionConfiguration1 (uint8_t &value)
 Read the overshoot protection configuration 1.
 
bool writeOvershootProtectionConfiguration1 (const uint8_t value)
 Write the overshoot protection configuration 1.
 
bool readOvershootProtectionConfiguration2 (uint8_t &value)
 Read the overshoot protection configuration 2.
 
bool writeOvershootProtectionConfiguration2 (const uint8_t value)
 Write the overshoot protection configuration 2.
 
bool readOvershootProtectionConfiguration (uint16_t &value)
 Read the overshoot protection configuration 1-2.
 
bool writeOvershootProtectionConfiguration (const uint16_t value)
 Write the overshoot protection configuration 1-2.
 
bool readUndershootProtectionConfiguration1 (uint8_t &value)
 Read the undershoot protection configuration 1.
 
bool writeUndershootProtectionConfiguration1 (const uint8_t value)
 Write the undershoot protection configuration 1.
 
bool readUndershootProtectionConfiguration2 (uint8_t &value)
 Read the undershoot protection configuration 2.
 
bool writeUndershootProtectionConfiguration2 (const uint8_t value)
 Write the undershoot protection configuration 2.
 
bool readUndershootProtectionConfiguration (uint16_t &value)
 Read the undershoot protection configuration 1-2.
 
bool writeUndershootProtectionConfiguration (const uint16_t value)
 Write the undershoot protection configuration 1-2.
 
bool readICIdentity (uint8_t &type, uint8_t &rev)
 Read the IC identity.
 
bool disableField ()
 Disable the Field to stop communication with the PICC.
 
bool enableField ()
 Enable the Field to begin communication with the PICC.
 
uint32_t nfcaTransceive (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transceive.
 
bool nfcaTransmit (const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transceive.
 
bool nfcaReceive (uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
 Transceive.
 
bool nfcaRequest (uint16_t &atqa)
 Request for idle PICC.
 
bool nfcaWakeup (uint16_t &atqa)
 Wakeup for idle/halt PICC.
 
bool nfcaSelectWithAnticollision (bool &completed, m5::nfc::a::PICC &picc, const uint8_t lv)
 Select PICC with anti-collision.
 
bool nfcaSelect (const m5::nfc::a::PICC &picc)
 Select specific PICC.
 
bool nfcaReadBlock (uint8_t rx[16], const uint8_t block)
 Read the 1 block / 4 pages (16 bytes)
 
bool nfcaWriteBlock (const uint8_t block, const uint8_t tx[16])
 Write the 1 block / 4 pages (16 bytes)
 
bool nfcaHlt ()
 Hlt for PICC.
 
bool mifareClassicAuthenticateA (const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
 Authentication using keyA of the specified block.
 
bool mifareClassicAuthenticateB (const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
 Authentication using keyB of the specified block.
 
bool mifareClassicValueBlock (const m5::nfc::a::Command cmd, const uint8_t block, const uint32_t arg=0)
 Operation for the value block.
 
bool nfcbTransceive (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transceive with NFC-B PICC.
 
bool nfcbTransmit (const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transmit to NFC-B PICC.
 
bool nfcbReceive (uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
 Receive from NFC-B PICC.
 
bool nfcfTransceive (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transceive with NFC-F PICC.
 
bool nfcfTransmit (const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 
bool nfcfReceive (uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
 Receive from NFC-F PICC.
 
bool nfcvTransceive (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_bytes, const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode=m5::nfc::v::ModulationMode::OneOf4)
 Transceive.
 
bool nfcvTransmit (const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode=m5::nfc::v::ModulationMode::OneOf4)
 
bool nfcvReceive (uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
 Receive from NFC-V PICC.
 
+bool writePtMemoryA (const uint8_t *tx, const uint32_t tx_len)
 
+bool writePtMemoryF (const uint8_t *tx, const uint32_t tx_len)
 
+bool writePtMemoryTSN (const uint8_t *tx, const uint32_t tx_len)
 
+bool readPtMemory (uint8_t *rx, const uint32_t rx_len)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from m5::unit::UnitST25R3916
+bool read_register8 (const uint8_t reg, uint8_t &v)
 
+bool read_register8 (const uint16_t reg, uint8_t &v)
 
+bool write_register8 (const uint8_t reg, const uint8_t v)
 
+bool write_register8 (const uint16_t reg, const uint8_t v)
 
+bool read_register16 (const uint8_t reg, uint16_t &v)
 
+bool read_register16 (const uint16_t reg, uint16_t &v)
 
+bool write_register16 (const uint8_t reg, const uint16_t v)
 
+bool write_register16 (const uint16_t reg, const uint16_t v)
 
+bool read_register32 (const uint8_t reg, uint32_t &v)
 
+bool read_register32 (const uint16_t reg, uint32_t &v)
 
+bool write_register32 (const uint8_t reg, const uint32_t v)
 
+bool write_register32 (const uint16_t reg, const uint32_t v)
 
+bool write_fwt_timer (const uint32_t ms)
 
+bool write_mask_receiver_timer (const uint32_t us)
 
+bool write_squelch_timer (const uint32_t us)
 
+uint32_t wait_for_interrupt (const uint32_t irq, const uint32_t timeout_ms=100)
 
+bool wait_for_FIFO (const uint32_t timeout_ms, const uint16_t required_size=0)
 
+bool read_FIFO (std::vector< uint8_t > &out)
 
+bool configure_nfc_a ()
 
+bool configure_nfc_b ()
 
+bool configure_nfc_f ()
 
+bool configure_nfc_v ()
 
+bool nfc_initial_field_on ()
 
+bool configure_emulation_a ()
 
+bool configure_emulation_f ()
 
+bool modify_bit_register8 (const uint8_t reg, const uint8_t set_mask, const uint8_t clear_mask)
 
+bool modify_bit_register8 (const uint16_t reg, const uint8_t set_mask, const uint8_t clear_mask)
 
+bool set_bit_register8 (const uint8_t reg, const uint8_t bits)
 
+bool set_bit_register8 (const uint16_t reg, const uint8_t bits)
 
+bool clear_bit_register8 (const uint8_t reg, const uint8_t bits)
 
+bool clear_bit_register8 (const uint16_t reg, const uint8_t bits)
 
+bool change_bit_register8 (const uint8_t reg, const uint8_t bits, const uint8_t mask)
 
+bool change_bit_register8 (const uint16_t reg, const uint8_t bits, const uint8_t mask)
 
+bool change_test_bit_register8 (const uint8_t reg, const uint8_t bits, const uint8_t mask)
 
+bool change_test_bit_register8 (const uint16_t reg, const uint8_t bits, const uint8_t mask)
 
+bool modify_interrupts (const uint32_t clr, const uint32_t set)
 
+bool enable_interrupts (const uint32_t mask)
 
+bool disable_interrupts (const uint32_t mask)
 
+bool enable_osc ()
 
+bool disable_field ()
 
+bool nfca_request_wakeup (uint16_t &atqa, const bool req)
 
+bool nfca_anti_collision (uint8_t rbuf[5], const uint8_t lv)
 
+bool mifare_classic_send_encrypt (const uint8_t *tx, const uint16_t tx_len)
 
+bool mifare_classic_transceive_encrypt (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms, const bool include_crc, const bool decrypt)
 
+bool mifare_classic_authenticate (const m5::nfc::a::Command cmd, const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key)
 
- Static Protected Member Functions inherited from m5::unit::UnitST25R3916
+static void IRAM_ATTR on_irq (void *arg)
 
+

Detailed Description

+

ST25R3916 unit in CapCC1101 (SPI)

+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::CapST25R3916::begin ()
+
+overridevirtual
+
+ +

Reimplemented from m5::unit::UnitST25R3916.

+ +
+
+
+
+ + + + diff --git a/classm5_1_1unit_1_1_cap_s_t25_r3916.png b/classm5_1_1unit_1_1_cap_s_t25_r3916.png new file mode 100644 index 0000000..6914226 Binary files /dev/null and b/classm5_1_1unit_1_1_cap_s_t25_r3916.png differ diff --git a/classm5_1_1unit_1_1_unit_s_t25_r3916-members.html b/classm5_1_1unit_1_1_unit_s_t25_r3916-members.html new file mode 100644 index 0000000..00c4e49 --- /dev/null +++ b/classm5_1_1unit_1_1_unit_s_t25_r3916-members.html @@ -0,0 +1,369 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
m5::unit::UnitST25R3916 Member List
+
+
+ +

This is the complete list of members for m5::unit::UnitST25R3916, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin() override (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916virtual
change_bit_register8(const uint8_t reg, const uint8_t bits, const uint8_t mask) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916inlineprotected
change_bit_register8(const uint16_t reg, const uint8_t bits, const uint8_t mask) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916inlineprotected
change_test_bit_register8(const uint8_t reg, const uint8_t bits, const uint8_t mask) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
change_test_bit_register8(const uint16_t reg, const uint8_t bits, const uint8_t mask) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
clear_bit_register8(const uint8_t reg, const uint8_t bits) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
clear_bit_register8(const uint16_t reg, const uint8_t bits) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
clearInterrupts()m5::unit::UnitST25R3916
config()m5::unit::UnitST25R3916inline
config(const config_t &cfg)m5::unit::UnitST25R3916inline
configure_emulation_a() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
configure_emulation_f() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
configure_nfc_a() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
configure_nfc_b() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
configure_nfc_f() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
configure_nfc_v() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
configureEmulationMode(const m5::nfc::NFC mode)m5::unit::UnitST25R3916
configureNFCMode(const m5::nfc::NFC mode)m5::unit::UnitST25R3916
disable_field() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
disable_interrupts(const uint32_t mask) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916inlineprotected
disableField()m5::unit::UnitST25R3916
dumpRegister() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916
enable_interrupts(const uint32_t mask) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916inlineprotected
enable_osc() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
enableField()m5::unit::UnitST25R3916
isNFCMode(const m5::nfc::NFC mode)m5::unit::UnitST25R3916inline
m5::nfc::ListenerST25R3916ForA (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916friend
m5::nfc::ListenerST25R3916ForF (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916friend
mifare_classic_authenticate(const m5::nfc::a::Command cmd, const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
mifare_classic_send_encrypt(const uint8_t *tx, const uint16_t tx_len) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
mifare_classic_transceive_encrypt(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms, const bool include_crc, const bool decrypt) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
mifareClassicAuthenticateA(const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)m5::unit::UnitST25R3916inline
mifareClassicAuthenticateB(const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)m5::unit::UnitST25R3916inline
mifareClassicValueBlock(const m5::nfc::a::Command cmd, const uint8_t block, const uint32_t arg=0)m5::unit::UnitST25R3916
modify_bit_register8(const uint8_t reg, const uint8_t set_mask, const uint8_t clear_mask) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
modify_bit_register8(const uint16_t reg, const uint8_t set_mask, const uint8_t clear_mask) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
modify_interrupts(const uint32_t clr, const uint32_t set) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
nfc_initial_field_on() (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
nfca_anti_collision(uint8_t rbuf[5], const uint8_t lv) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
nfca_request_wakeup(uint16_t &atqa, const bool req) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
nfcaHlt()m5::unit::UnitST25R3916
nfcaReadBlock(uint8_t rx[16], const uint8_t block)m5::unit::UnitST25R3916
nfcaReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
nfcaRequest(uint16_t &atqa)m5::unit::UnitST25R3916inline
nfcaSelect(const m5::nfc::a::PICC &picc)m5::unit::UnitST25R3916
nfcaSelectWithAnticollision(bool &completed, m5::nfc::a::PICC &picc, const uint8_t lv)m5::unit::UnitST25R3916
nfcaTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
nfcaTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
nfcaWakeup(uint16_t &atqa)m5::unit::UnitST25R3916inline
nfcaWriteBlock(const uint8_t block, const uint8_t tx[16])m5::unit::UnitST25R3916
nfcbReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
nfcbTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
nfcbTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
nfcfReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
nfcfTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
nfcfTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
NFCMode() constm5::unit::UnitST25R3916inline
nfcvReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)m5::unit::UnitST25R3916
nfcvTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_bytes, const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode=m5::nfc::v::ModulationMode::OneOf4)m5::unit::UnitST25R3916
nfcvTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode=m5::nfc::v::ModulationMode::OneOf4)m5::unit::UnitST25R3916
on_irq(void *arg) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protectedstatic
read_FIFO(std::vector< uint8_t > &out) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
read_register16(const uint8_t reg, uint16_t &v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
read_register16(const uint16_t reg, uint16_t &v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
read_register32(const uint8_t reg, uint32_t &v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
read_register32(const uint16_t reg, uint32_t &v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
read_register8(const uint8_t reg, uint8_t &v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
read_register8(const uint16_t reg, uint8_t &v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
readADConverterOutput(uint8_t &value)m5::unit::UnitST25R3916inline
readAmplitudeMeasurementAutoAveragingDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readAmplitudeMeasurementConfiguration(uint8_t &value)m5::unit::UnitST25R3916inline
readAmplitudeMeasurementDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readAmplitudeMeasurementReference(uint8_t &value)m5::unit::UnitST25R3916inline
readAntennaTuningControl(uint16_t &value)m5::unit::UnitST25R3916inline
readAntennaTuningControl1(uint8_t &value)m5::unit::UnitST25R3916inline
readAntennaTuningControl2(uint8_t &value)m5::unit::UnitST25R3916inline
readAuxiliaryDefinition(uint8_t &value)m5::unit::UnitST25R3916inline
readAuxiliaryDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readAuxiliaryModulationSetting(uint8_t &value)m5::unit::UnitST25R3916inline
readBitrateDefinition(uint8_t &value)m5::unit::UnitST25R3916inline
readBitrateDetectionDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readCapacitanceMeasurementAutoAveragingDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readCapacitanceMeasurementConfiguration(uint8_t &value)m5::unit::UnitST25R3916inline
readCapacitanceMeasurementDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readCapacitanceMeasurementReference(uint8_t &value)m5::unit::UnitST25R3916inline
readCapacitiveSensorControl(uint8_t &value)m5::unit::UnitST25R3916inline
readCapacitiveSensorDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readCollisionDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readCorrelatorConfiguration(uint16_t &value)m5::unit::UnitST25R3916inline
readCorrelatorConfiguration1(uint8_t &value)m5::unit::UnitST25R3916inline
readCorrelatorConfiguration2(uint8_t &value)m5::unit::UnitST25R3916inline
readEMDSuppressionConfiguration(uint8_t &value)m5::unit::UnitST25R3916inline
readErrorAndWakeupInterrupt(uint8_t &value)m5::unit::UnitST25R3916inline
readExternalFieldDetectorActivationThreshold(uint8_t &value)m5::unit::UnitST25R3916inline
readExternalFieldDetectorDeactivationThreshold(uint8_t &value)m5::unit::UnitST25R3916inline
readFIFO(uint16_t &actual, uint8_t *buf, const uint16_t buf_size)m5::unit::UnitST25R3916
readFIFOSize(uint16_t &bytes, uint8_t &bits)m5::unit::UnitST25R3916
readFIFOStatus(uint16_t &value)m5::unit::UnitST25R3916inline
readFIFOStatus1(uint8_t &value)m5::unit::UnitST25R3916inline
readFIFOStatus2(uint8_t &value)m5::unit::UnitST25R3916inline
readGainReductionState(uint8_t &value)m5::unit::UnitST25R3916inline
readGeneralPurposeTimer(uint16_t &value)m5::unit::UnitST25R3916inline
readGeneralPurposeTimer1(uint8_t &value)m5::unit::UnitST25R3916inline
readGeneralPurposeTimer2(uint8_t &value)m5::unit::UnitST25R3916inline
readICIdentity(uint8_t &type, uint8_t &rev)m5::unit::UnitST25R3916
readInterrupts(uint32_t &value)m5::unit::UnitST25R3916
readIOConfiguration(uint16_t &value)m5::unit::UnitST25R3916inline
readIOConfiguration1(uint8_t &value)m5::unit::UnitST25R3916inline
readIOConfiguration2(uint8_t &value)m5::unit::UnitST25R3916inline
readMainInterrupt(uint8_t &value)m5::unit::UnitST25R3916inline
readMaskErrorAndWakeupInterrupt(uint8_t &value)m5::unit::UnitST25R3916inline
readMaskInterrupts(uint32_t &value)m5::unit::UnitST25R3916inline
readMaskMainInterrupt(uint8_t &value)m5::unit::UnitST25R3916inline
readMaskPassiveTargetInterrupt(uint8_t &value)m5::unit::UnitST25R3916inline
readMaskReceiveTimer(uint8_t &value)m5::unit::UnitST25R3916inline
readMaskTimerAndNFCInterrupt(uint8_t &value)m5::unit::UnitST25R3916inline
readModeDefinition(uint8_t &value)m5::unit::UnitST25R3916inline
readNFCFieldOnGuardTimer(uint8_t &value)m5::unit::UnitST25R3916inline
readNFCIP1PassiveTargetDefinition(uint8_t &value)m5::unit::UnitST25R3916inline
readNoResponseTimer(uint16_t &value)m5::unit::UnitST25R3916inline
readNoResponseTimer1(uint8_t &value)m5::unit::UnitST25R3916inline
readNoResponseTimer2(uint8_t &value)m5::unit::UnitST25R3916inline
readNumberOfTransmittedBytes(uint16_t &value)m5::unit::UnitST25R3916inline
readNumberOfTransmittedBytes1(uint8_t &value)m5::unit::UnitST25R3916inline
readNumberOfTransmittedBytes2(uint8_t &value)m5::unit::UnitST25R3916inline
readOperationControl(uint8_t &value)m5::unit::UnitST25R3916inline
readOvershootProtectionConfiguration(uint16_t &value)m5::unit::UnitST25R3916inline
readOvershootProtectionConfiguration1(uint8_t &value)m5::unit::UnitST25R3916inline
readOvershootProtectionConfiguration2(uint8_t &value)m5::unit::UnitST25R3916inline
readP2PReceiverConfiguration(uint8_t &value)m5::unit::UnitST25R3916inline
readPassiveTargetDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readPassiveTargetInterrupt(uint8_t &value)m5::unit::UnitST25R3916inline
readPassiveTargetModulation(uint8_t &value)m5::unit::UnitST25R3916inline
readPhaseMeasurementAutoAveragingDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readPhaseMeasurementConfiguration(uint8_t &value)m5::unit::UnitST25R3916inline
readPhaseMeasurementDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readPhaseMeasurementReference(uint8_t &value)m5::unit::UnitST25R3916inline
readPPON2FieldWaiting(uint8_t &value)m5::unit::UnitST25R3916inline
readPtMemory(uint8_t *rx, const uint32_t rx_len) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916
readReceiverConfiguration(uint32_t &value)m5::unit::UnitST25R3916inline
readReceiverConfiguration1(uint8_t &value)m5::unit::UnitST25R3916inline
readReceiverConfiguration2(uint8_t &value)m5::unit::UnitST25R3916inline
readReceiverConfiguration3(uint8_t &value)m5::unit::UnitST25R3916inline
readReceiverConfiguration4(uint8_t &value)m5::unit::UnitST25R3916inline
readRegulatorDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readRegulatorVoltageControl(uint8_t &value)m5::unit::UnitST25R3916inline
readResistiveAMModulation(uint8_t &value)m5::unit::UnitST25R3916inline
readRSSIDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readSettingsFelica(uint8_t &value)m5::unit::UnitST25R3916inline
readSettingsISO14443A(uint8_t &value)m5::unit::UnitST25R3916inline
readSettingsISO14443B(uint8_t &value)m5::unit::UnitST25R3916inline
readSquelchTimer(uint8_t &value)m5::unit::UnitST25R3916inline
readStreamModeDefinition(uint8_t &value)m5::unit::UnitST25R3916inline
readSubcarrierStartTimer(uint8_t &value)m5::unit::UnitST25R3916inline
readTimerAndEMVControl(uint8_t &value)m5::unit::UnitST25R3916inline
readTimerAndNFCInterrupt(uint8_t &value)m5::unit::UnitST25R3916inline
readTXDriver(uint8_t &value)m5::unit::UnitST25R3916inline
readTXDriverTiming(uint8_t &value)m5::unit::UnitST25R3916inline
readTXDriverTimingDisplay(uint8_t &value)m5::unit::UnitST25R3916inline
readUndershootProtectionConfiguration(uint16_t &value)m5::unit::UnitST25R3916inline
readUndershootProtectionConfiguration1(uint8_t &value)m5::unit::UnitST25R3916inline
readUndershootProtectionConfiguration2(uint8_t &value)m5::unit::UnitST25R3916inline
readWakeupTimerControl(uint8_t &value)m5::unit::UnitST25R3916inline
set_bit_register8(const uint8_t reg, const uint8_t bits) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
set_bit_register8(const uint16_t reg, const uint8_t bits) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
UnitST25R3916(const uint8_t arg=DEFAULT_ADDRESS) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916inlineexplicit
update(const bool force=false) override (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916virtual
wait_for_FIFO(const uint32_t timeout_ms, const uint16_t required_size=0) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
wait_for_interrupt(const uint32_t irq, const uint32_t timeout_ms=100) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
write_fwt_timer(const uint32_t ms) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
write_mask_receiver_timer(const uint32_t us) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
write_register16(const uint8_t reg, const uint16_t v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
write_register16(const uint16_t reg, const uint16_t v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
write_register32(const uint8_t reg, const uint32_t v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
write_register32(const uint16_t reg, const uint32_t v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
write_register8(const uint8_t reg, const uint8_t v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
write_register8(const uint16_t reg, const uint8_t v) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
write_squelch_timer(const uint32_t us) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916protected
writeAmplitudeMeasurementConfiguration(const uint8_t value)m5::unit::UnitST25R3916inline
writeAmplitudeMeasurementReference(const uint8_t value)m5::unit::UnitST25R3916inline
writeAntennaTuningControl(const uint16_t value)m5::unit::UnitST25R3916inline
writeAntennaTuningControl1(const uint8_t value)m5::unit::UnitST25R3916inline
writeAntennaTuningControl2(const uint8_t value)m5::unit::UnitST25R3916inline
writeAuxiliaryDefinition(const uint8_t value)m5::unit::UnitST25R3916inline
writeAuxiliaryModulationSetting(const uint8_t value)m5::unit::UnitST25R3916inline
writeBitrate(const m5::nfc::Bitrate tx, const m5::nfc::Bitrate rx)m5::unit::UnitST25R3916
writeBitrateDefinition(const uint8_t value)m5::unit::UnitST25R3916inline
writeCapacitanceMeasurementConfiguration(const uint8_t value)m5::unit::UnitST25R3916inline
writeCapacitanceMeasurementReference(const uint8_t value)m5::unit::UnitST25R3916inline
writeCapacitiveSensorControl(const uint8_t value)m5::unit::UnitST25R3916inline
writeCorrelatorConfiguration(const uint16_t value)m5::unit::UnitST25R3916inline
writeCorrelatorConfiguration1(const uint8_t value)m5::unit::UnitST25R3916inline
writeCorrelatorConfiguration2(const uint8_t value)m5::unit::UnitST25R3916inline
writeDirectCommand(const uint8_t cmd, const uint8_t *data=nullptr, const uint32_t dlen=0u)m5::unit::UnitST25R3916
writeEMDSuppressionConfiguration(const uint8_t value)m5::unit::UnitST25R3916inline
writeExternalFieldDetectorActivationThreshold(const uint8_t value)m5::unit::UnitST25R3916inline
writeExternalFieldDetectorDeactivationThreshold(const uint8_t value)m5::unit::UnitST25R3916inline
writeFIFO(const uint8_t *buf, const uint16_t buf_size)m5::unit::UnitST25R3916
writeGeneralPurposeTimer(const uint16_t value)m5::unit::UnitST25R3916inline
writeGeneralPurposeTimer1(const uint8_t value)m5::unit::UnitST25R3916inline
writeGeneralPurposeTimer2(const uint8_t value)m5::unit::UnitST25R3916inline
writeInitiatorOperationMode(const st25r3916::InitiatorOperationMode mode, const uint8_t optional=0)m5::unit::UnitST25R3916
writeIOConfiguration(const uint16_t value)m5::unit::UnitST25R3916inline
writeIOConfiguration1(const uint8_t value)m5::unit::UnitST25R3916inline
writeIOConfiguration2(const uint8_t value)m5::unit::UnitST25R3916inline
writeMaskErrorAndWakeupInterrupt(const uint8_t value)m5::unit::UnitST25R3916inline
writeMaskInterrupts(const uint32_t value)m5::unit::UnitST25R3916inline
writeMaskMainInterrupt(const uint8_t value)m5::unit::UnitST25R3916inline
writeMaskPassiveTargetInterrupt(const uint8_t value)m5::unit::UnitST25R3916inline
writeMaskReceiveTimer(const uint8_t value)m5::unit::UnitST25R3916inline
writeMaskTimerAndNFCInterrupt(const uint8_t value)m5::unit::UnitST25R3916inline
writeModeDefinition(const uint8_t value)m5::unit::UnitST25R3916inline
writeNFCFieldOnGuardTimer(const uint8_t value)m5::unit::UnitST25R3916inline
writeNFCIP1PassiveTargetDefinition(const uint8_t value)m5::unit::UnitST25R3916inline
writeNoResponseTimer(const uint16_t value)m5::unit::UnitST25R3916inline
writeNoResponseTimer1(const uint8_t value)m5::unit::UnitST25R3916inline
writeNoResponseTimer2(const uint8_t value)m5::unit::UnitST25R3916inline
writeNumberOfTransmittedBytes(const uint16_t value)m5::unit::UnitST25R3916inline
writeNumberOfTransmittedBytes(const uint16_t bytes, const uint8_t bits)m5::unit::UnitST25R3916inline
writeNumberOfTransmittedBytes1(const uint8_t value)m5::unit::UnitST25R3916inline
writeNumberOfTransmittedBytes2(const uint8_t value)m5::unit::UnitST25R3916inline
writeOperationControl(const uint8_t value)m5::unit::UnitST25R3916inline
writeOvershootProtectionConfiguration(const uint16_t value)m5::unit::UnitST25R3916inline
writeOvershootProtectionConfiguration1(const uint8_t value)m5::unit::UnitST25R3916inline
writeOvershootProtectionConfiguration2(const uint8_t value)m5::unit::UnitST25R3916inline
writeP2PReceiverConfiguration(const uint8_t value)m5::unit::UnitST25R3916inline
writePassiveTargetModulation(const uint8_t value)m5::unit::UnitST25R3916inline
writePhaseMeasurementConfiguration(const uint8_t value)m5::unit::UnitST25R3916inline
writePhaseMeasurementReference(const uint8_t value)m5::unit::UnitST25R3916inline
writePPON2FieldWaiting(const uint8_t value)m5::unit::UnitST25R3916inline
writePtMemoryA(const uint8_t *tx, const uint32_t tx_len) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916
writePtMemoryF(const uint8_t *tx, const uint32_t tx_len) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916
writePtMemoryTSN(const uint8_t *tx, const uint32_t tx_len) (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916
writeReceiverConfiguration(const uint32_t value)m5::unit::UnitST25R3916inline
writeReceiverConfiguration1(const uint8_t value)m5::unit::UnitST25R3916inline
writeReceiverConfiguration2(const uint8_t value)m5::unit::UnitST25R3916inline
writeReceiverConfiguration3(const uint8_t value)m5::unit::UnitST25R3916inline
writeReceiverConfiguration4(const uint8_t value)m5::unit::UnitST25R3916inline
writeRegulatorVoltageControl(const uint8_t value)m5::unit::UnitST25R3916inline
writeResistiveAMModulation(const uint8_t value)m5::unit::UnitST25R3916inline
writeSettingsFelica(const uint8_t value)m5::unit::UnitST25R3916inline
writeSettingsISO14443A(const uint8_t value)m5::unit::UnitST25R3916inline
writeSettingsISO14443B(const uint8_t value)m5::unit::UnitST25R3916inline
writeSquelchTimer(const uint8_t value)m5::unit::UnitST25R3916inline
writeStreamModeDefinition(const uint8_t value)m5::unit::UnitST25R3916inline
writeSubcarrierStartTimer(const uint8_t value)m5::unit::UnitST25R3916inline
writeTargetOperationMode(const st25r3916::TargetOperationMode mode, const uint8_t optional=0)m5::unit::UnitST25R3916
writeTimerAndEMVControl(const uint8_t value)m5::unit::UnitST25R3916inline
writeTXDriver(const uint8_t value)m5::unit::UnitST25R3916inline
writeTXDriverTiming(const uint8_t value)m5::unit::UnitST25R3916inline
writeUndershootProtectionConfiguration(const uint16_t value)m5::unit::UnitST25R3916inline
writeUndershootProtectionConfiguration1(const uint8_t value)m5::unit::UnitST25R3916inline
writeUndershootProtectionConfiguration2(const uint8_t value)m5::unit::UnitST25R3916inline
writeWakeupTimerControl(const uint8_t value)m5::unit::UnitST25R3916inline
~UnitST25R3916()=default (defined in m5::unit::UnitST25R3916)m5::unit::UnitST25R3916virtual
+
+ + + + diff --git a/classm5_1_1unit_1_1_unit_s_t25_r3916.html b/classm5_1_1unit_1_1_unit_s_t25_r3916.html new file mode 100644 index 0000000..3932b31 --- /dev/null +++ b/classm5_1_1unit_1_1_unit_s_t25_r3916.html @@ -0,0 +1,7620 @@ + + + + + + + +M5Unit-NFC: m5::unit::UnitST25R3916 Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
m5::unit::UnitST25R3916 Class Reference
+
+
+ +

ST25R3916 Unit. + More...

+ +

#include <unit_ST25R3916.hpp>

+
+Inheritance diagram for m5::unit::UnitST25R3916:
+
+
+ + +m5::unit::CapST25R3916 + +
+ + + + + +

+Classes

struct  config_t
 Settings for begin. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

UnitST25R3916 (const uint8_t arg=DEFAULT_ADDRESS)
 
+virtual bool begin () override
 
+virtual void update (const bool force=false) override
 
+m5::nfc::NFC NFCMode () const
 Gets the current operating mode.
 
bool configureNFCMode (const m5::nfc::NFC mode)
 Configure NFC mode.
 
bool configureEmulationMode (const m5::nfc::NFC mode)
 Configure NFC mode for emulation.
 
bool isNFCMode (const m5::nfc::NFC mode)
 Is the current operating mode the one specified?
 
bool writeDirectCommand (const uint8_t cmd, const uint8_t *data=nullptr, const uint32_t dlen=0u)
 Write the direct command with data.
 
+void dumpRegister ()
 
Settings for begin
+config_t config ()
 Gets the configuration.
 
+void config (const config_t &cfg)
 Set the configuration.
 
Interrupt
bool clearInterrupts ()
 Clear interrupts flag.
 
Settings
bool writeInitiatorOperationMode (const st25r3916::InitiatorOperationMode mode, const uint8_t optional=0)
 Write the initiator operation mode and transition to initiator mode.
 
bool writeTargetOperationMode (const st25r3916::TargetOperationMode mode, const uint8_t optional=0)
 Write the initiator operation mode and transition to target mode.
 
bool writeBitrate (const m5::nfc::Bitrate tx, const m5::nfc::Bitrate rx)
 Write the initiator operation mode and transition to initiator mode.
 
FIFO
bool readFIFOSize (uint16_t &bytes, uint8_t &bits)
 Read the FIFO size.
 
uint32_t readFIFO (uint16_t &actual, uint8_t *buf, const uint16_t buf_size)
 Read from FIFO.
 
bool writeFIFO (const uint8_t *buf, const uint16_t buf_size)
 Write to FIFO.
 
I/O configuration
bool readIOConfiguration1 (uint8_t &value)
 Read the I/O configuration 1.
 
bool writeIOConfiguration1 (const uint8_t value)
 Write the I/O configuration 1.
 
bool readIOConfiguration2 (uint8_t &value)
 Read the I/O configuration 2.
 
bool writeIOConfiguration2 (const uint8_t value)
 
bool readIOConfiguration (uint16_t &value)
 Read the I/O configuration 1-2.
 
bool writeIOConfiguration (const uint16_t value)
 
Operation control and mode definition
bool readOperationControl (uint8_t &value)
 Read the operation control.
 
bool writeOperationControl (const uint8_t value)
 Write the operation control.
 
bool readModeDefinition (uint8_t &value)
 Read the mode definition.
 
bool writeModeDefinition (const uint8_t value)
 Write the mode definition.
 
bool readBitrateDefinition (uint8_t &value)
 Read the bitrate definition.
 
bool writeBitrateDefinition (const uint8_t value)
 Write the bitrate definition.
 
Protocol configuration
bool readSettingsISO14443A (uint8_t &value)
 Read the settings for ISO14443A and NFC 106kb/s.
 
bool writeSettingsISO14443A (const uint8_t value)
 Write the settings for ISO14443A and NFC 106kb/s.
 
bool readSettingsISO14443B (uint8_t &value)
 Read the settings for ISO14443B.
 
bool writeSettingsISO14443B (const uint8_t value)
 Write the settings for ISO14443B.
 
bool readSettingsFelica (uint8_t &value)
 Read the settings for ISO14443B and FeliCa.
 
bool writeSettingsFelica (const uint8_t value)
 Write the settings for ISO14443B and FeliCa.
 
bool readNFCIP1PassiveTargetDefinition (uint8_t &value)
 Read the NFCIP-1 passive target definition.
 
bool writeNFCIP1PassiveTargetDefinition (const uint8_t value)
 
bool readStreamModeDefinition (uint8_t &value)
 Read the stream mode definition.
 
bool writeStreamModeDefinition (const uint8_t value)
 Write the stream mode definition.
 
bool readAuxiliaryDefinition (uint8_t &value)
 Read the Auxiliary definition.
 
bool writeAuxiliaryDefinition (const uint8_t value)
 Write the Auxiliary definition.
 
bool readEMDSuppressionConfiguration (uint8_t &value)
 Read the EMD suppression configuration.
 
bool writeEMDSuppressionConfiguration (const uint8_t value)
 Write the EMD suppression configuration.
 
bool readSubcarrierStartTimer (uint8_t &value)
 Read the subcarrier start timer.
 
bool writeSubcarrierStartTimer (const uint8_t value)
 Write the subcarrier start timer.
 
Receiver configuration
bool readReceiverConfiguration1 (uint8_t &value)
 Read the receiver configuration 1.
 
bool writeReceiverConfiguration1 (const uint8_t value)
 Write the receiver configuration 1.
 
bool readReceiverConfiguration2 (uint8_t &value)
 Read the receiver configuration 2.
 
bool writeReceiverConfiguration2 (const uint8_t value)
 Write the receiver configuration 2.
 
bool readReceiverConfiguration3 (uint8_t &value)
 Read the receiver configuration 3.
 
bool writeReceiverConfiguration3 (const uint8_t value)
 Write the receiver configuration 3.
 
bool readReceiverConfiguration4 (uint8_t &value)
 
bool writeReceiverConfiguration4 (const uint8_t value)
 Write the receiver configuration 4.
 
bool readReceiverConfiguration (uint32_t &value)
 Read the receiver configuration 1-4.
 
bool writeReceiverConfiguration (const uint32_t value)
 Write the receiver configuration 1-4.
 
bool readP2PReceiverConfiguration (uint8_t &value)
 Read the P2P receiver configuration.
 
bool writeP2PReceiverConfiguration (const uint8_t value)
 Write the P2P receiver configuration.
 
bool readCorrelatorConfiguration1 (uint8_t &value)
 Read the correlator configuration 1.
 
bool writeCorrelatorConfiguration1 (const uint8_t value)
 Write the correlator configuration 1.
 
bool readCorrelatorConfiguration2 (uint8_t &value)
 Read the correlator configuration 2.
 
bool writeCorrelatorConfiguration2 (const uint8_t value)
 Write the correlator configuration 2.
 
bool readCorrelatorConfiguration (uint16_t &value)
 Read the correlator configuration 1-2.
 
bool writeCorrelatorConfiguration (const uint16_t value)
 Write the correlator configuration 1-2.
 
Timer definition
bool readMaskReceiveTimer (uint8_t &value)
 Read the mask receive timer.
 
bool writeMaskReceiveTimer (const uint8_t value)
 Write the mask receive timer.
 
bool readNoResponseTimer1 (uint8_t &value)
 Read the no-response timer 1.
 
bool writeNoResponseTimer1 (const uint8_t value)
 Write the no-response timer 1.
 
bool readNoResponseTimer2 (uint8_t &value)
 Read the no-response timer 2.
 
bool writeNoResponseTimer2 (const uint8_t value)
 Write the no-response timer 2.
 
bool readNoResponseTimer (uint16_t &value)
 Read the no-response timer 1-2.
 
bool writeNoResponseTimer (const uint16_t value)
 Write the no-response timer 1-2.
 
bool readTimerAndEMVControl (uint8_t &value)
 Read the timer and EMV control.
 
bool writeTimerAndEMVControl (const uint8_t value)
 Write the timer and EMV control.
 
bool readGeneralPurposeTimer1 (uint8_t &value)
 Read the general purpose timer 1.
 
bool writeGeneralPurposeTimer1 (const uint8_t value)
 Write the general purpose timer 1.
 
bool readGeneralPurposeTimer2 (uint8_t &value)
 Read the general purpose timer 2.
 
bool writeGeneralPurposeTimer2 (const uint8_t value)
 Write the general purpose timer 2.
 
bool readGeneralPurposeTimer (uint16_t &value)
 Read the general purpose timer 1-2.
 
bool writeGeneralPurposeTimer (const uint16_t value)
 Write the general purpose timer 1-2.
 
bool readPPON2FieldWaiting (uint8_t &value)
 Read the PPON2 field waiting.
 
bool writePPON2FieldWaiting (const uint8_t value)
 Write the PPON2 field waiting.
 
bool readSquelchTimer (uint8_t &value)
 Read the squelch timer.
 
bool writeSquelchTimer (const uint8_t value)
 Write the squelch timer.
 
bool readNFCFieldOnGuardTimer (uint8_t &value)
 Read the NFC field on guard timer.
 
bool writeNFCFieldOnGuardTimer (const uint8_t value)
 Write the NFC field on guard timer.
 
Interrupt and associated reporting
bool readMaskMainInterrupt (uint8_t &value)
 Read the mask main interrupt.
 
bool writeMaskMainInterrupt (const uint8_t value)
 Write the mask main interrupt.
 
bool readMaskTimerAndNFCInterrupt (uint8_t &value)
 Read the mask timer and NFC interrupt.
 
bool writeMaskTimerAndNFCInterrupt (const uint8_t value)
 Write the mask timer and NFC interrupt.
 
bool readMaskErrorAndWakeupInterrupt (uint8_t &value)
 Read the mask error and wake-up interrupt.
 
bool writeMaskErrorAndWakeupInterrupt (const uint8_t value)
 Write the mask error and wake-up interrupt.
 
bool readMaskPassiveTargetInterrupt (uint8_t &value)
 Read the mask passive target interrupt.
 
bool writeMaskPassiveTargetInterrupt (const uint8_t value)
 Write the mask passive target interrupt.
 
bool readMaskInterrupts (uint32_t &value)
 Read the all mask.
 
bool writeMaskInterrupts (const uint32_t value)
 Write the all mask.
 
bool readMainInterrupt (uint8_t &value)
 Read the main interrupt.
 
bool readTimerAndNFCInterrupt (uint8_t &value)
 Read the timer and NFC interrupt.
 
bool readErrorAndWakeupInterrupt (uint8_t &value)
 Read the error and wake-up interrupt.
 
bool readPassiveTargetInterrupt (uint8_t &value)
 Read the passive target interrupt.
 
bool readInterrupts (uint32_t &value)
 Read the all interrupt.
 
bool readFIFOStatus1 (uint8_t &value)
 Read the FIFO status 1.
 
bool readFIFOStatus2 (uint8_t &value)
 Read the FIFO status 1.
 
bool readFIFOStatus (uint16_t &value)
 Read the FIFO status 1-2.
 
bool readCollisionDisplay (uint8_t &value)
 Read the collision display.
 
bool readPassiveTargetDisplay (uint8_t &value)
 Read the passive target.
 
Definition of number of transmitted bytes
bool readNumberOfTransmittedBytes1 (uint8_t &value)
 Read the number of transmitted bytes 1.
 
bool writeNumberOfTransmittedBytes1 (const uint8_t value)
 Write the number of transmitted bytes 1.
 
bool readNumberOfTransmittedBytes2 (uint8_t &value)
 Read the number of transmitted bytes 2.
 
bool writeNumberOfTransmittedBytes2 (const uint8_t value)
 Write the number of transmitted bytes 2.
 
bool readNumberOfTransmittedBytes (uint16_t &value)
 Read the number of transmitted bytes 1-2.
 
bool writeNumberOfTransmittedBytes (const uint16_t value)
 Write the number of transmitted bytes 1-2.
 
bool writeNumberOfTransmittedBytes (const uint16_t bytes, const uint8_t bits)
 Write the number of transmitted bytes and after bytes.
 
bool readBitrateDetectionDisplay (uint8_t &value)
 Read the bit rate detection display.
 
A/D converter output
bool readADConverterOutput (uint8_t &value)
 Read the number of transmitted bytes 2.
 
Antenna calibration
bool readAntennaTuningControl1 (uint8_t &value)
 Read the Antenna tuning control 1.
 
bool writeAntennaTuningControl1 (const uint8_t value)
 Write the Antenna tuning control 1.
 
bool readAntennaTuningControl2 (uint8_t &value)
 Read the Antenna tuning control 2.
 
bool writeAntennaTuningControl2 (const uint8_t value)
 Write the Antenna tuning control 2.
 
bool readAntennaTuningControl (uint16_t &value)
 Read the Antenna tuning control 1-2.
 
bool writeAntennaTuningControl (const uint16_t value)
 Write the Antenna tuning control 1-2.
 
Antenna driver and modulation
bool readTXDriver (uint8_t &value)
 Read the TX driver.
 
bool writeTXDriver (const uint8_t value)
 Write the TX driver.
 
bool readPassiveTargetModulation (uint8_t &value)
 Read the passive target modulation.
 
bool writePassiveTargetModulation (const uint8_t value)
 Write the passive target modulation.
 
bool readAuxiliaryModulationSetting (uint8_t &value)
 Read the auxiliary modulation setting.
 
bool writeAuxiliaryModulationSetting (const uint8_t value)
 Write the auxiliary modulation setting.
 
bool readTXDriverTiming (uint8_t &value)
 Read the TX driver timing.
 
bool writeTXDriverTiming (const uint8_t value)
 Write the TX driver timing.
 
External field detector threshold
bool readExternalFieldDetectorActivationThreshold (uint8_t &value)
 Read the external field detector activation threshold.
 
bool writeExternalFieldDetectorActivationThreshold (const uint8_t value)
 Write the external field detector activation threshold.
 
bool readExternalFieldDetectorDeactivationThreshold (uint8_t &value)
 Read the external field detector deactivation threshold.
 
bool writeExternalFieldDetectorDeactivationThreshold (const uint8_t value)
 Write the external field detector deactivation threshold.
 
bool readResistiveAMModulation (uint8_t &value)
 Read the resistive AM modulation.
 
bool writeResistiveAMModulation (const uint8_t value)
 Write the resistive AM modulation.
 
bool readTXDriverTimingDisplay (uint8_t &value)
 Read the TX driver timing display.
 
Regulator
bool readRegulatorVoltageControl (uint8_t &value)
 Read the regulator voltage control.
 
bool writeRegulatorVoltageControl (const uint8_t value)
 Write the regulator voltage control.
 
bool readRegulatorDisplay (uint8_t &value)
 Read the regulator display.
 
Receiver state display
bool readRSSIDisplay (uint8_t &value)
 Read the external field detector deactivation threshold.
 
bool readGainReductionState (uint8_t &value)
 Read the gain reduction state.
 
Capacitive sensor
bool readCapacitiveSensorControl (uint8_t &value)
 Read the capacitive sensor control.
 
bool writeCapacitiveSensorControl (const uint8_t value)
 Write the capacitive sensor control.
 
bool readCapacitiveSensorDisplay (uint8_t &value)
 Read the capacitive sensor display.
 
Auxiliary display
bool readAuxiliaryDisplay (uint8_t &value)
 Read the auxiliary display.
 
Wake-up
bool readWakeupTimerControl (uint8_t &value)
 Read the Wake-up timer control.
 
bool writeWakeupTimerControl (const uint8_t value)
 Write the Wake-up timer control.
 
bool readAmplitudeMeasurementConfiguration (uint8_t &value)
 Read the amplitude measurement configuration.
 
bool writeAmplitudeMeasurementConfiguration (const uint8_t value)
 Write the amplitude measurement configuration.
 
bool readAmplitudeMeasurementReference (uint8_t &value)
 Read the amplitude measurement reference.
 
bool writeAmplitudeMeasurementReference (const uint8_t value)
 Write the amplitude measurement reference.
 
bool readAmplitudeMeasurementAutoAveragingDisplay (uint8_t &value)
 Read the amplitude measurement auto-averaging display.
 
bool readAmplitudeMeasurementDisplay (uint8_t &value)
 Read the amplitude measurement display.
 
bool readPhaseMeasurementConfiguration (uint8_t &value)
 Read the phase measurement configuration.
 
bool writePhaseMeasurementConfiguration (const uint8_t value)
 Write the phase measurement configuration.
 
bool readPhaseMeasurementReference (uint8_t &value)
 Read the phase measurement reference.
 
bool writePhaseMeasurementReference (const uint8_t value)
 Write the phase measurement reference.
 
bool readPhaseMeasurementAutoAveragingDisplay (uint8_t &value)
 Read the phase measurement auto-averaging display.
 
bool readPhaseMeasurementDisplay (uint8_t &value)
 Read the phase measurement display.
 
bool readCapacitanceMeasurementConfiguration (uint8_t &value)
 Read the capacitance measurement configuration.
 
bool writeCapacitanceMeasurementConfiguration (const uint8_t value)
 Write the capacitance measurement configuration.
 
bool readCapacitanceMeasurementReference (uint8_t &value)
 Read the capacitance measurement reference.
 
bool writeCapacitanceMeasurementReference (const uint8_t value)
 Write the capacitance measurement reference.
 
bool readCapacitanceMeasurementAutoAveragingDisplay (uint8_t &value)
 Read the capacitance measurement auto-averaging display.
 
bool readCapacitanceMeasurementDisplay (uint8_t &value)
 Read the capacitance measurement display.
 
Protection
bool readOvershootProtectionConfiguration1 (uint8_t &value)
 Read the overshoot protection configuration 1.
 
bool writeOvershootProtectionConfiguration1 (const uint8_t value)
 Write the overshoot protection configuration 1.
 
bool readOvershootProtectionConfiguration2 (uint8_t &value)
 Read the overshoot protection configuration 2.
 
bool writeOvershootProtectionConfiguration2 (const uint8_t value)
 Write the overshoot protection configuration 2.
 
bool readOvershootProtectionConfiguration (uint16_t &value)
 Read the overshoot protection configuration 1-2.
 
bool writeOvershootProtectionConfiguration (const uint16_t value)
 Write the overshoot protection configuration 1-2.
 
bool readUndershootProtectionConfiguration1 (uint8_t &value)
 Read the undershoot protection configuration 1.
 
bool writeUndershootProtectionConfiguration1 (const uint8_t value)
 Write the undershoot protection configuration 1.
 
bool readUndershootProtectionConfiguration2 (uint8_t &value)
 Read the undershoot protection configuration 2.
 
bool writeUndershootProtectionConfiguration2 (const uint8_t value)
 Write the undershoot protection configuration 2.
 
bool readUndershootProtectionConfiguration (uint16_t &value)
 Read the undershoot protection configuration 1-2.
 
bool writeUndershootProtectionConfiguration (const uint16_t value)
 Write the undershoot protection configuration 1-2.
 
IC identity
bool readICIdentity (uint8_t &type, uint8_t &rev)
 Read the IC identity.
 
Field
bool disableField ()
 Disable the Field to stop communication with the PICC.
 
bool enableField ()
 Enable the Field to begin communication with the PICC.
 
NFC-A
uint32_t nfcaTransceive (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transceive.
 
bool nfcaTransmit (const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transceive.
 
bool nfcaReceive (uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
 Transceive.
 
bool nfcaRequest (uint16_t &atqa)
 Request for idle PICC.
 
bool nfcaWakeup (uint16_t &atqa)
 Wakeup for idle/halt PICC.
 
bool nfcaSelectWithAnticollision (bool &completed, m5::nfc::a::PICC &picc, const uint8_t lv)
 Select PICC with anti-collision.
 
bool nfcaSelect (const m5::nfc::a::PICC &picc)
 Select specific PICC.
 
bool nfcaReadBlock (uint8_t rx[16], const uint8_t block)
 Read the 1 block / 4 pages (16 bytes)
 
bool nfcaWriteBlock (const uint8_t block, const uint8_t tx[16])
 Write the 1 block / 4 pages (16 bytes)
 
bool nfcaHlt ()
 Hlt for PICC.
 
MIFARE
bool mifareClassicAuthenticateA (const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
 Authentication using keyA of the specified block.
 
bool mifareClassicAuthenticateB (const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
 Authentication using keyB of the specified block.
 
bool mifareClassicValueBlock (const m5::nfc::a::Command cmd, const uint8_t block, const uint32_t arg=0)
 Operation for the value block.
 
NFC-B
bool nfcbTransceive (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transceive with NFC-B PICC.
 
bool nfcbTransmit (const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transmit to NFC-B PICC.
 
bool nfcbReceive (uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
 Receive from NFC-B PICC.
 
NFC-F
bool nfcfTransceive (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 Transceive with NFC-F PICC.
 
bool nfcfTransmit (const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
 
bool nfcfReceive (uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
 Receive from NFC-F PICC.
 
NFC-V
bool nfcvTransceive (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_bytes, const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode=m5::nfc::v::ModulationMode::OneOf4)
 Transceive.
 
bool nfcvTransmit (const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode=m5::nfc::v::ModulationMode::OneOf4)
 
bool nfcvReceive (uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
 Receive from NFC-V PICC.
 
PT_MEMORY
+bool writePtMemoryA (const uint8_t *tx, const uint32_t tx_len)
 
+bool writePtMemoryF (const uint8_t *tx, const uint32_t tx_len)
 
+bool writePtMemoryTSN (const uint8_t *tx, const uint32_t tx_len)
 
+bool readPtMemory (uint8_t *rx, const uint32_t rx_len)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+bool read_register8 (const uint8_t reg, uint8_t &v)
 
+bool read_register8 (const uint16_t reg, uint8_t &v)
 
+bool write_register8 (const uint8_t reg, const uint8_t v)
 
+bool write_register8 (const uint16_t reg, const uint8_t v)
 
+bool read_register16 (const uint8_t reg, uint16_t &v)
 
+bool read_register16 (const uint16_t reg, uint16_t &v)
 
+bool write_register16 (const uint8_t reg, const uint16_t v)
 
+bool write_register16 (const uint16_t reg, const uint16_t v)
 
+bool read_register32 (const uint8_t reg, uint32_t &v)
 
+bool read_register32 (const uint16_t reg, uint32_t &v)
 
+bool write_register32 (const uint8_t reg, const uint32_t v)
 
+bool write_register32 (const uint16_t reg, const uint32_t v)
 
+bool write_fwt_timer (const uint32_t ms)
 
+bool write_mask_receiver_timer (const uint32_t us)
 
+bool write_squelch_timer (const uint32_t us)
 
+uint32_t wait_for_interrupt (const uint32_t irq, const uint32_t timeout_ms=100)
 
+bool wait_for_FIFO (const uint32_t timeout_ms, const uint16_t required_size=0)
 
+bool read_FIFO (std::vector< uint8_t > &out)
 
+bool configure_nfc_a ()
 
+bool configure_nfc_b ()
 
+bool configure_nfc_f ()
 
+bool configure_nfc_v ()
 
+bool nfc_initial_field_on ()
 
+bool configure_emulation_a ()
 
+bool configure_emulation_f ()
 
+bool modify_bit_register8 (const uint8_t reg, const uint8_t set_mask, const uint8_t clear_mask)
 
+bool modify_bit_register8 (const uint16_t reg, const uint8_t set_mask, const uint8_t clear_mask)
 
+bool set_bit_register8 (const uint8_t reg, const uint8_t bits)
 
+bool set_bit_register8 (const uint16_t reg, const uint8_t bits)
 
+bool clear_bit_register8 (const uint8_t reg, const uint8_t bits)
 
+bool clear_bit_register8 (const uint16_t reg, const uint8_t bits)
 
+bool change_bit_register8 (const uint8_t reg, const uint8_t bits, const uint8_t mask)
 
+bool change_bit_register8 (const uint16_t reg, const uint8_t bits, const uint8_t mask)
 
+bool change_test_bit_register8 (const uint8_t reg, const uint8_t bits, const uint8_t mask)
 
+bool change_test_bit_register8 (const uint16_t reg, const uint8_t bits, const uint8_t mask)
 
+bool modify_interrupts (const uint32_t clr, const uint32_t set)
 
+bool enable_interrupts (const uint32_t mask)
 
+bool disable_interrupts (const uint32_t mask)
 
+bool enable_osc ()
 
+bool disable_field ()
 
+bool nfca_request_wakeup (uint16_t &atqa, const bool req)
 
+bool nfca_anti_collision (uint8_t rbuf[5], const uint8_t lv)
 
+bool mifare_classic_send_encrypt (const uint8_t *tx, const uint16_t tx_len)
 
+bool mifare_classic_transceive_encrypt (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms, const bool include_crc, const bool decrypt)
 
+bool mifare_classic_authenticate (const m5::nfc::a::Command cmd, const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key)
 
+ + + +

+Static Protected Member Functions

+static void IRAM_ATTR on_irq (void *arg)
 
+ + + + + +

+Friends

+struct m5::nfc::ListenerST25R3916ForA
 
+struct m5::nfc::ListenerST25R3916ForF
 
+

Detailed Description

+

ST25R3916 Unit.

+

Member Function Documentation

+ +

◆ clearInterrupts()

+ +
+
+ + + + + + + +
bool m5::unit::UnitST25R3916::clearInterrupts ()
+
+ +

Clear interrupts flag.

+
Returns
True if successful
+ +
+
+ +

◆ configureEmulationMode()

+ +
+
+ + + + + + + +
bool m5::unit::UnitST25R3916::configureEmulationMode (const m5::nfc::NFC mode)
+
+ +

Configure NFC mode for emulation.

+
Parameters
+ + +
modeNFC mode
+
+
+
Returns
True if successful
+ +
+
+ +

◆ configureNFCMode()

+ +
+
+ + + + + + + +
bool m5::unit::UnitST25R3916::configureNFCMode (const m5::nfc::NFC mode)
+
+ +

Configure NFC mode.

+
Parameters
+ + +
modeNFC mode
+
+
+
Returns
True if successful
+ +
+
+ +

◆ disableField()

+ +
+
+ + + + + + + +
bool m5::unit::UnitST25R3916::disableField ()
+
+ +

Disable the Field to stop communication with the PICC.

+
Returns
True if successful
+
Note
Disconnect power supply to the PICC
+ +
+
+ +

◆ enableField()

+ +
+
+ + + + + + + +
bool m5::unit::UnitST25R3916::enableField ()
+
+ +

Enable the Field to begin communication with the PICC.

+
Returns
True if successful
+

Begin supplying power to the PICC

+ +
+
+ +

◆ isNFCMode()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::isNFCMode (const m5::nfc::NFC mode)
+
+inline
+
+ +

Is the current operating mode the one specified?

+
Parameters
+ + +
modeMode
+
+
+
Returns
True if the current operation is in the specified mode
+ +
+
+ +

◆ mifareClassicAuthenticateA()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
bool m5::unit::UnitST25R3916::mifareClassicAuthenticateA (const m5::nfc::a::PICC & picc,
const uint8_t block,
const m5::nfc::a::mifare::classic::Key & key = m5::nfc::a::mifare::classic::DEFAULT_KEY )
+
+inline
+
+ +

Authentication using keyA of the specified block.

+
Parameters
+ + + + +
piccPICC
blockBlock address
keyMIFARE classic key
+
+
+
Returns
True if successful
+ +
+
+ +

◆ mifareClassicAuthenticateB()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
bool m5::unit::UnitST25R3916::mifareClassicAuthenticateB (const m5::nfc::a::PICC & picc,
const uint8_t block,
const m5::nfc::a::mifare::classic::Key & key = m5::nfc::a::mifare::classic::DEFAULT_KEY )
+
+inline
+
+ +

Authentication using keyB of the specified block.

+
Parameters
+ + + + +
piccPICC
blockBlock address
keyMIFARE classic key
+
+
+
Returns
True if successful
+ +
+
+ +

◆ mifareClassicValueBlock()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::unit::UnitST25R3916::mifareClassicValueBlock (const m5::nfc::a::Command cmd,
const uint8_t block,
const uint32_t arg = 0 )
+
+ +

Operation for the value block.

+
Parameters
+ + + + +
cmdCommand
blockBlock address
argArgument for command if needs
+
+
+
Returns
True if successful
+ +
+
+ +

◆ nfcaHlt()

+ +
+
+ + + + + + + +
bool m5::unit::UnitST25R3916::nfcaHlt ()
+
+ +

Hlt for PICC.

+
Returns
True if successful
+ +
+
+ +

◆ nfcaReadBlock()

+ +
+
+ + + + + + + + + + + +
bool m5::unit::UnitST25R3916::nfcaReadBlock (uint8_t rx[16],
const uint8_t block )
+
+ +

Read the 1 block / 4 pages (16 bytes)

+
Parameters
+ + + +
rxReceiver buffer (at least 16 bytes)
blockBlock/Page address
+
+
+
Returns
True if successful
+
Precondition
The block must be authenticated if MIFARE classic
+ +
+
+ +

◆ nfcaReceive()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::unit::UnitST25R3916::nfcaReceive (uint8_t * rx,
uint16_t & rx_len,
const uint32_t timeout_ms )
+
+ +

Transceive.

+
Parameters
+ + + + + + +
rxReceive buffer
[in/out]rx_len in:Size of receive buffer out:actual read size
txSend buffer
tx_lenSize of send buffer
timeout_msTimeout(ms)
+
+
+
Return values
+ + + +
==0 Failed
!=0 Upper 16 bits: Number of bits read Lower 16 bits: Number of bytes read
+
+
+ +
+
+ +

◆ nfcaRequest()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::nfcaRequest (uint16_t & atqa)
+
+inline
+
+ +

Request for idle PICC.

+
Parameters
+ + +
[out]atqaATQA
+
+
+
Returns
True if successful
+ +
+
+ +

◆ nfcaSelect()

+ +
+
+ + + + + + + +
bool m5::unit::UnitST25R3916::nfcaSelect (const m5::nfc::a::PICC & picc)
+
+ +

Select specific PICC.

+
Parameters
+ + +
piccPICC
+
+
+
Returns
True if successful
+ +
+
+ +

◆ nfcaSelectWithAnticollision()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::unit::UnitST25R3916::nfcaSelectWithAnticollision (bool & completed,
m5::nfc::a::PICC & picc,
const uint8_t lv )
+
+ +

Select PICC with anti-collision.

+
Parameters
+ + + + +
[out]completedCompleted select?
[out]piccSelected PICC
lvCascade level (1-3)
+
+
+
Returns
True if successful
+
Warning
The type of activated PICC is determined solely by SAK and is provisional
+ +
+
+ +

◆ nfcaTransceive()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
uint32_t m5::unit::UnitST25R3916::nfcaTransceive (uint8_t * rx,
uint16_t & rx_len,
const uint8_t * tx,
const uint16_t tx_len,
const uint32_t timeout_ms )
+
+ +

Transceive.

+
Parameters
+ + + + + + +
rxReceive buffer
[in/out]rx_len in:Size of receive buffer out:actual read size
txSend buffer
tx_lenSize of send buffer
timeout_msTimeout(ms)
+
+
+
Return values
+ + + +
==0 Failed
!=0 Upper 16 bits: Number of bits read Lower 16 bits: Number of bytes read
+
+
+ +
+
+ +

◆ nfcaTransmit()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::unit::UnitST25R3916::nfcaTransmit (const uint8_t * tx,
const uint16_t tx_len,
const uint32_t timeout_ms )
+
+ +

Transceive.

+
Parameters
+ + + + + + +
rxReceive buffer
[in/out]rx_len in:Size of receive buffer out:actual read size
txSend buffer
tx_lenSize of send buffer
timeout_msTimeout(ms)
+
+
+
Return values
+ + + +
==0 Failed
!=0 Upper 16 bits: Number of bits read Lower 16 bits: Number of bytes read
+
+
+ +
+
+ +

◆ nfcaWakeup()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::nfcaWakeup (uint16_t & atqa)
+
+inline
+
+ +

Wakeup for idle/halt PICC.

+
Parameters
+ + +
[out]atqaATQA
+
+
+
Returns
True if successful
+ +
+
+ +

◆ nfcaWriteBlock()

+ +
+
+ + + + + + + + + + + +
bool m5::unit::UnitST25R3916::nfcaWriteBlock (const uint8_t block,
const uint8_t tx[16] )
+
+ +

Write the 1 block / 4 pages (16 bytes)

+
Parameters
+ + +
txSend buffer (at least 16 bytes)
+
+
+
Returns
True if successful
+
Precondition
The block must be authenticated if MIFARE classic
+ +
+
+ +

◆ nfcbReceive()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::unit::UnitST25R3916::nfcbReceive (uint8_t * rx,
uint16_t & rx_len,
const uint32_t timeout_ms )
+
+ +

Receive from NFC-B PICC.

+
Parameters
+ + + + +
[out]rxReceive buffer
[in/out]rx_len in:Size of receive buffer out:actual read size
timeout_msTimeout(ms)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ nfcbTransceive()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
bool m5::unit::UnitST25R3916::nfcbTransceive (uint8_t * rx,
uint16_t & rx_len,
const uint8_t * tx,
const uint16_t tx_len,
const uint32_t timeout_ms )
+
+ +

Transceive with NFC-B PICC.

+
Parameters
+ + + + + + +
[out]rxReceive buffer
[in/out]rx_len in:Size of receive buffer out:actual read size
txSend buffer
tx_lenSize of send buffer
timeout_msTimeout(ms)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ nfcbTransmit()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::unit::UnitST25R3916::nfcbTransmit (const uint8_t * tx,
const uint16_t tx_len,
const uint32_t timeout_ms )
+
+ +

Transmit to NFC-B PICC.

+
Parameters
+ + + + +
txSend buffer
tx_lenSize of send buffer
timeout_msTimeout(ms)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ nfcfReceive()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::unit::UnitST25R3916::nfcfReceive (uint8_t * rx,
uint16_t & rx_len,
const uint32_t timeout_ms )
+
+ +

Receive from NFC-F PICC.

+
Parameters
+ + + + +
[out]rxReceive buffer
[in/out]rx_len in:Size of receive buffer out:actual read size
timeout_msTimeout(ms)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ nfcfTransceive()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
bool m5::unit::UnitST25R3916::nfcfTransceive (uint8_t * rx,
uint16_t & rx_len,
const uint8_t * tx,
const uint16_t tx_len,
const uint32_t timeout_ms )
+
+ +

Transceive with NFC-F PICC.

+
Parameters
+ + + + + + +
[out]rxReceive buffer
[in/out]rx_len in:Size of receive buffer out:actual read size
txSend buffer
tx_lenSize of send buffer
timeout_msTimeout(ms)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ nfcfTransmit()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::unit::UnitST25R3916::nfcfTransmit (const uint8_t * tx,
const uint16_t tx_len,
const uint32_t timeout_ms )
+
+
Parameters
+ + + + + +
Transmitto NFC-F PICC
txSend buffer
tx_lenSize of send buffer
timeout_msTimeout(ms)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ nfcvReceive()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::unit::UnitST25R3916::nfcvReceive (uint8_t * rx,
uint16_t & rx_len,
const uint32_t timeout_ms )
+
+ +

Receive from NFC-V PICC.

+
Parameters
+ + + + +
[out]rxReceive buffer
[in/out]rx_len in:Size of receive buffer out:actual read size
timeout_msTimeout(ms)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ nfcvTransceive()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool m5::unit::UnitST25R3916::nfcvTransceive (uint8_t * rx,
uint16_t & rx_len,
const uint8_t * tx,
const uint16_t tx_bytes,
const uint32_t timeout_ms,
const m5::nfc::v::ModulationMode mode = m5::nfc::v::ModulationMode::OneOf4 )
+
+ +

Transceive.

+
Parameters
+ + + + + + + +
[out]rxReceive buffer
[in/out]rx_len in:Size of receive buffer out:actual read size
txSend buffer
tx_lenSize of send buffer
timeout_msTimeout(ms)
modeModulationMode
+
+
+
Returns
True if successful
+
Note
Perform encoding/decoding for transmission and reception internally
+ +
+
+ +

◆ nfcvTransmit()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
bool m5::unit::UnitST25R3916::nfcvTransmit (const uint8_t * tx,
const uint16_t tx_len,
const uint32_t timeout_ms,
const m5::nfc::v::ModulationMode mode = m5::nfc::v::ModulationMode::OneOf4 )
+
+
Parameters
+ + + + + + +
Transmitto NFC-V PICC
txSend buffer
tx_lenSize of send buffer
timeout_msTimeout(ms)
modeModulationMode
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readADConverterOutput()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readADConverterOutput (uint8_t & value)
+
+inline
+
+ +

Read the number of transmitted bytes 2.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readAmplitudeMeasurementAutoAveragingDisplay()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readAmplitudeMeasurementAutoAveragingDisplay (uint8_t & value)
+
+inline
+
+ +

Read the amplitude measurement auto-averaging display.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readAmplitudeMeasurementConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readAmplitudeMeasurementConfiguration (uint8_t & value)
+
+inline
+
+ +

Read the amplitude measurement configuration.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readAmplitudeMeasurementDisplay()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readAmplitudeMeasurementDisplay (uint8_t & value)
+
+inline
+
+ +

Read the amplitude measurement display.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readAmplitudeMeasurementReference()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readAmplitudeMeasurementReference (uint8_t & value)
+
+inline
+
+ +

Read the amplitude measurement reference.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readAntennaTuningControl()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readAntennaTuningControl (uint16_t & value)
+
+inline
+
+ +

Read the Antenna tuning control 1-2.

+
Parameters
+ + +
[out]valueValue (MSB tuning1, tuning2 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readAntennaTuningControl1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readAntennaTuningControl1 (uint8_t & value)
+
+inline
+
+ +

Read the Antenna tuning control 1.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readAntennaTuningControl2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readAntennaTuningControl2 (uint8_t & value)
+
+inline
+
+ +

Read the Antenna tuning control 2.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readAuxiliaryDefinition()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readAuxiliaryDefinition (uint8_t & value)
+
+inline
+
+ +

Read the Auxiliary definition.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readAuxiliaryDisplay()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readAuxiliaryDisplay (uint8_t & value)
+
+inline
+
+ +

Read the auxiliary display.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readAuxiliaryModulationSetting()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readAuxiliaryModulationSetting (uint8_t & value)
+
+inline
+
+ +

Read the auxiliary modulation setting.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readBitrateDefinition()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readBitrateDefinition (uint8_t & value)
+
+inline
+
+ +

Read the bitrate definition.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readBitrateDetectionDisplay()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readBitrateDetectionDisplay (uint8_t & value)
+
+inline
+
+ +

Read the bit rate detection display.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readCapacitanceMeasurementAutoAveragingDisplay()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readCapacitanceMeasurementAutoAveragingDisplay (uint8_t & value)
+
+inline
+
+ +

Read the capacitance measurement auto-averaging display.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readCapacitanceMeasurementConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readCapacitanceMeasurementConfiguration (uint8_t & value)
+
+inline
+
+ +

Read the capacitance measurement configuration.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readCapacitanceMeasurementDisplay()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readCapacitanceMeasurementDisplay (uint8_t & value)
+
+inline
+
+ +

Read the capacitance measurement display.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readCapacitanceMeasurementReference()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readCapacitanceMeasurementReference (uint8_t & value)
+
+inline
+
+ +

Read the capacitance measurement reference.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readCapacitiveSensorControl()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readCapacitiveSensorControl (uint8_t & value)
+
+inline
+
+ +

Read the capacitive sensor control.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readCapacitiveSensorDisplay()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readCapacitiveSensorDisplay (uint8_t & value)
+
+inline
+
+ +

Read the capacitive sensor display.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readCollisionDisplay()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readCollisionDisplay (uint8_t & value)
+
+inline
+
+ +

Read the collision display.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readCorrelatorConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readCorrelatorConfiguration (uint16_t & value)
+
+inline
+
+ +

Read the correlator configuration 1-2.

+
Parameters
+ + +
[out]valueValue (MSB cfg1,cfg2 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readCorrelatorConfiguration1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readCorrelatorConfiguration1 (uint8_t & value)
+
+inline
+
+ +

Read the correlator configuration 1.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readCorrelatorConfiguration2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readCorrelatorConfiguration2 (uint8_t & value)
+
+inline
+
+ +

Read the correlator configuration 2.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readEMDSuppressionConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readEMDSuppressionConfiguration (uint8_t & value)
+
+inline
+
+ +

Read the EMD suppression configuration.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readErrorAndWakeupInterrupt()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readErrorAndWakeupInterrupt (uint8_t & value)
+
+inline
+
+ +

Read the error and wake-up interrupt.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+
Warning
After Main interrupt register has been read, its content is set to 0
+ +
+
+ +

◆ readExternalFieldDetectorActivationThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readExternalFieldDetectorActivationThreshold (uint8_t & value)
+
+inline
+
+ +

Read the external field detector activation threshold.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readExternalFieldDetectorDeactivationThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readExternalFieldDetectorDeactivationThreshold (uint8_t & value)
+
+inline
+
+ +

Read the external field detector deactivation threshold.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readFIFO()

+ +
+
+ + + + + + + + + + + + + + + + +
uint32_t m5::unit::UnitST25R3916::readFIFO (uint16_t & actual,
uint8_t * buf,
const uint16_t buf_size )
+
+ +

Read from FIFO.

+
Parameters
+ + + + +
[out]actualActual read size
[out]bufBuffer
buf_sizeBuffer size
+
+
+
Return values
+ + + +
==0 Failed
!=0 Upper 16 bits: Number of bits read Lower 16 bits: Number of bytes read
+
+
+ +
+
+ +

◆ readFIFOSize()

+ +
+
+ + + + + + + + + + + +
bool m5::unit::UnitST25R3916::readFIFOSize (uint16_t & bytes,
uint8_t & bits )
+
+ +

Read the FIFO size.

+
Parameters
+ + + +
[out]bytesNumber of bytes in the FIFO
[out]bitsNumber of bits in the last FIFO byte if it was not complete The received bits are stored in the LSB part of the last byte in the FIFO.
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readFIFOStatus()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readFIFOStatus (uint16_t & value)
+
+inline
+
+ +

Read the FIFO status 1-2.

+
Parameters
+ + +
[out]valueValue (MSB fifo1, fifo2 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readFIFOStatus1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readFIFOStatus1 (uint8_t & value)
+
+inline
+
+ +

Read the FIFO status 1.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readFIFOStatus2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readFIFOStatus2 (uint8_t & value)
+
+inline
+
+ +

Read the FIFO status 1.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readGainReductionState()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readGainReductionState (uint8_t & value)
+
+inline
+
+ +

Read the gain reduction state.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readGeneralPurposeTimer()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readGeneralPurposeTimer (uint16_t & value)
+
+inline
+
+ +

Read the general purpose timer 1-2.

+
Parameters
+ + +
[out]valueValue (MSB timer1,timer2 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readGeneralPurposeTimer1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readGeneralPurposeTimer1 (uint8_t & value)
+
+inline
+
+ +

Read the general purpose timer 1.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readGeneralPurposeTimer2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readGeneralPurposeTimer2 (uint8_t & value)
+
+inline
+
+ +

Read the general purpose timer 2.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readICIdentity()

+ +
+
+ + + + + + + + + + + +
bool m5::unit::UnitST25R3916::readICIdentity (uint8_t & type,
uint8_t & rev )
+
+ +

Read the IC identity.

+
Parameters
+ + + +
[out]type5-bit IC type code (00101: ST25R3916/7)
[out]rev3-bit IC revision code (010: rev 3.1)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readInterrupts()

+ +
+
+ + + + + + + +
bool m5::unit::UnitST25R3916::readInterrupts (uint32_t & value)
+
+ +

Read the all interrupt.

+
Parameters
+ + +
[out]valueValue (MSB main, NFC, error, passive LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readIOConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readIOConfiguration (uint16_t & value)
+
+inline
+
+ +

Read the I/O configuration 1-2.

+
Parameters
+ + +
[out]valueValue (MSB cfg1, cfg2 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readIOConfiguration1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readIOConfiguration1 (uint8_t & value)
+
+inline
+
+ +

Read the I/O configuration 1.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readIOConfiguration2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readIOConfiguration2 (uint8_t & value)
+
+inline
+
+ +

Read the I/O configuration 2.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readMainInterrupt()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readMainInterrupt (uint8_t & value)
+
+inline
+
+ +

Read the main interrupt.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readMaskErrorAndWakeupInterrupt()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readMaskErrorAndWakeupInterrupt (uint8_t & value)
+
+inline
+
+ +

Read the mask error and wake-up interrupt.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readMaskInterrupts()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readMaskInterrupts (uint32_t & value)
+
+inline
+
+ +

Read the all mask.

+
Parameters
+ + +
[out]valueValue (MSB main, NFC, error, passive LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readMaskMainInterrupt()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readMaskMainInterrupt (uint8_t & value)
+
+inline
+
+ +

Read the mask main interrupt.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readMaskPassiveTargetInterrupt()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readMaskPassiveTargetInterrupt (uint8_t & value)
+
+inline
+
+ +

Read the mask passive target interrupt.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readMaskReceiveTimer()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readMaskReceiveTimer (uint8_t & value)
+
+inline
+
+ +

Read the mask receive timer.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readMaskTimerAndNFCInterrupt()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readMaskTimerAndNFCInterrupt (uint8_t & value)
+
+inline
+
+ +

Read the mask timer and NFC interrupt.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readModeDefinition()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readModeDefinition (uint8_t & value)
+
+inline
+
+ +

Read the mode definition.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readNFCFieldOnGuardTimer()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readNFCFieldOnGuardTimer (uint8_t & value)
+
+inline
+
+ +

Read the NFC field on guard timer.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readNFCIP1PassiveTargetDefinition()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readNFCIP1PassiveTargetDefinition (uint8_t & value)
+
+inline
+
+ +

Read the NFCIP-1 passive target definition.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readNoResponseTimer()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readNoResponseTimer (uint16_t & value)
+
+inline
+
+ +

Read the no-response timer 1-2.

+
Parameters
+ + +
[out]valueValue (MSB timer1, timer2 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readNoResponseTimer1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readNoResponseTimer1 (uint8_t & value)
+
+inline
+
+ +

Read the no-response timer 1.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readNoResponseTimer2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readNoResponseTimer2 (uint8_t & value)
+
+inline
+
+ +

Read the no-response timer 2.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readNumberOfTransmittedBytes()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readNumberOfTransmittedBytes (uint16_t & value)
+
+inline
+
+ +

Read the number of transmitted bytes 1-2.

+
Parameters
+ + +
[out]valueValue (MSB bytes1, bytes2 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readNumberOfTransmittedBytes1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readNumberOfTransmittedBytes1 (uint8_t & value)
+
+inline
+
+ +

Read the number of transmitted bytes 1.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readNumberOfTransmittedBytes2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readNumberOfTransmittedBytes2 (uint8_t & value)
+
+inline
+
+ +

Read the number of transmitted bytes 2.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readOperationControl()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readOperationControl (uint8_t & value)
+
+inline
+
+ +

Read the operation control.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readOvershootProtectionConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readOvershootProtectionConfiguration (uint16_t & value)
+
+inline
+
+ +

Read the overshoot protection configuration 1-2.

+
Parameters
+ + +
[out]valueValue (MSB cfg1, cfg2 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readOvershootProtectionConfiguration1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readOvershootProtectionConfiguration1 (uint8_t & value)
+
+inline
+
+ +

Read the overshoot protection configuration 1.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readOvershootProtectionConfiguration2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readOvershootProtectionConfiguration2 (uint8_t & value)
+
+inline
+
+ +

Read the overshoot protection configuration 2.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readP2PReceiverConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readP2PReceiverConfiguration (uint8_t & value)
+
+inline
+
+ +

Read the P2P receiver configuration.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readPassiveTargetDisplay()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readPassiveTargetDisplay (uint8_t & value)
+
+inline
+
+ +

Read the passive target.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readPassiveTargetInterrupt()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readPassiveTargetInterrupt (uint8_t & value)
+
+inline
+
+ +

Read the passive target interrupt.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readPassiveTargetModulation()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readPassiveTargetModulation (uint8_t & value)
+
+inline
+
+ +

Read the passive target modulation.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readPhaseMeasurementAutoAveragingDisplay()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readPhaseMeasurementAutoAveragingDisplay (uint8_t & value)
+
+inline
+
+ +

Read the phase measurement auto-averaging display.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readPhaseMeasurementConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readPhaseMeasurementConfiguration (uint8_t & value)
+
+inline
+
+ +

Read the phase measurement configuration.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readPhaseMeasurementDisplay()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readPhaseMeasurementDisplay (uint8_t & value)
+
+inline
+
+ +

Read the phase measurement display.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readPhaseMeasurementReference()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readPhaseMeasurementReference (uint8_t & value)
+
+inline
+
+ +

Read the phase measurement reference.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readPPON2FieldWaiting()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readPPON2FieldWaiting (uint8_t & value)
+
+inline
+
+ +

Read the PPON2 field waiting.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readReceiverConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readReceiverConfiguration (uint32_t & value)
+
+inline
+
+ +

Read the receiver configuration 1-4.

+
Parameters
+ + +
[out]valueValue (MSB cfg1,cfg2,cfg3,cfg4 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readReceiverConfiguration1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readReceiverConfiguration1 (uint8_t & value)
+
+inline
+
+ +

Read the receiver configuration 1.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readReceiverConfiguration2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readReceiverConfiguration2 (uint8_t & value)
+
+inline
+
+ +

Read the receiver configuration 2.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readReceiverConfiguration3()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readReceiverConfiguration3 (uint8_t & value)
+
+inline
+
+ +

Read the receiver configuration 3.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readReceiverConfiguration4()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readReceiverConfiguration4 (uint8_t & value)
+
+inline
+
+

Read the receiver configuration 4

Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readRegulatorDisplay()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readRegulatorDisplay (uint8_t & value)
+
+inline
+
+ +

Read the regulator display.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readRegulatorVoltageControl()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readRegulatorVoltageControl (uint8_t & value)
+
+inline
+
+ +

Read the regulator voltage control.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readResistiveAMModulation()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readResistiveAMModulation (uint8_t & value)
+
+inline
+
+ +

Read the resistive AM modulation.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readRSSIDisplay()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readRSSIDisplay (uint8_t & value)
+
+inline
+
+ +

Read the external field detector deactivation threshold.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readSettingsFelica()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readSettingsFelica (uint8_t & value)
+
+inline
+
+ +

Read the settings for ISO14443B and FeliCa.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readSettingsISO14443A()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readSettingsISO14443A (uint8_t & value)
+
+inline
+
+ +

Read the settings for ISO14443A and NFC 106kb/s.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readSettingsISO14443B()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readSettingsISO14443B (uint8_t & value)
+
+inline
+
+ +

Read the settings for ISO14443B.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readSquelchTimer()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readSquelchTimer (uint8_t & value)
+
+inline
+
+ +

Read the squelch timer.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readStreamModeDefinition()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readStreamModeDefinition (uint8_t & value)
+
+inline
+
+ +

Read the stream mode definition.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readSubcarrierStartTimer()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readSubcarrierStartTimer (uint8_t & value)
+
+inline
+
+ +

Read the subcarrier start timer.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readTimerAndEMVControl()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readTimerAndEMVControl (uint8_t & value)
+
+inline
+
+ +

Read the timer and EMV control.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readTimerAndNFCInterrupt()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readTimerAndNFCInterrupt (uint8_t & value)
+
+inline
+
+ +

Read the timer and NFC interrupt.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readTXDriver()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readTXDriver (uint8_t & value)
+
+inline
+
+ +

Read the TX driver.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readTXDriverTiming()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readTXDriverTiming (uint8_t & value)
+
+inline
+
+ +

Read the TX driver timing.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readTXDriverTimingDisplay()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readTXDriverTimingDisplay (uint8_t & value)
+
+inline
+
+ +

Read the TX driver timing display.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readUndershootProtectionConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readUndershootProtectionConfiguration (uint16_t & value)
+
+inline
+
+ +

Read the undershoot protection configuration 1-2.

+
Parameters
+ + +
[out]valueValue (MSB cfg1, cfg2 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readUndershootProtectionConfiguration1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readUndershootProtectionConfiguration1 (uint8_t & value)
+
+inline
+
+ +

Read the undershoot protection configuration 1.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readUndershootProtectionConfiguration2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readUndershootProtectionConfiguration2 (uint8_t & value)
+
+inline
+
+ +

Read the undershoot protection configuration 2.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ readWakeupTimerControl()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::readWakeupTimerControl (uint8_t & value)
+
+inline
+
+ +

Read the Wake-up timer control.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeAmplitudeMeasurementConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeAmplitudeMeasurementConfiguration (const uint8_t value)
+
+inline
+
+ +

Write the amplitude measurement configuration.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeAmplitudeMeasurementReference()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeAmplitudeMeasurementReference (const uint8_t value)
+
+inline
+
+ +

Write the amplitude measurement reference.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeAntennaTuningControl()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeAntennaTuningControl (const uint16_t value)
+
+inline
+
+ +

Write the Antenna tuning control 1-2.

+
Parameters
+ + +
valueValue (MSB tuning1, tuning2 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeAntennaTuningControl1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeAntennaTuningControl1 (const uint8_t value)
+
+inline
+
+ +

Write the Antenna tuning control 1.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeAntennaTuningControl2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeAntennaTuningControl2 (const uint8_t value)
+
+inline
+
+ +

Write the Antenna tuning control 2.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeAuxiliaryDefinition()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeAuxiliaryDefinition (const uint8_t value)
+
+inline
+
+ +

Write the Auxiliary definition.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeAuxiliaryModulationSetting()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeAuxiliaryModulationSetting (const uint8_t value)
+
+inline
+
+ +

Write the auxiliary modulation setting.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeBitrate()

+ +
+
+ + + + + + + + + + + +
bool m5::unit::UnitST25R3916::writeBitrate (const m5::nfc::Bitrate tx,
const m5::nfc::Bitrate rx )
+
+ +

Write the initiator operation mode and transition to initiator mode.

+

writeModeDefinition

Parameters
+ + + +
modeInitiatorOperationMode
optionalOther setting bits
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeBitrateDefinition()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeBitrateDefinition (const uint8_t value)
+
+inline
+
+ +

Write the bitrate definition.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeCapacitanceMeasurementConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeCapacitanceMeasurementConfiguration (const uint8_t value)
+
+inline
+
+ +

Write the capacitance measurement configuration.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeCapacitanceMeasurementReference()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeCapacitanceMeasurementReference (const uint8_t value)
+
+inline
+
+ +

Write the capacitance measurement reference.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeCapacitiveSensorControl()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeCapacitiveSensorControl (const uint8_t value)
+
+inline
+
+ +

Write the capacitive sensor control.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeCorrelatorConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeCorrelatorConfiguration (const uint16_t value)
+
+inline
+
+ +

Write the correlator configuration 1-2.

+
Parameters
+ + +
valueValue (MSB cfg1,cfg2 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeCorrelatorConfiguration1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeCorrelatorConfiguration1 (const uint8_t value)
+
+inline
+
+ +

Write the correlator configuration 1.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeCorrelatorConfiguration2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeCorrelatorConfiguration2 (const uint8_t value)
+
+inline
+
+ +

Write the correlator configuration 2.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeDirectCommand()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::unit::UnitST25R3916::writeDirectCommand (const uint8_t cmd,
const uint8_t * data = nullptr,
const uint32_t dlen = 0u )
+
+ +

Write the direct command with data.

+
Parameters
+ + + + +
cmdDirect command
dataThe data pointer if additional data is available
dlenlength of th e additional data
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeEMDSuppressionConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeEMDSuppressionConfiguration (const uint8_t value)
+
+inline
+
+ +

Write the EMD suppression configuration.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeExternalFieldDetectorActivationThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeExternalFieldDetectorActivationThreshold (const uint8_t value)
+
+inline
+
+ +

Write the external field detector activation threshold.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeExternalFieldDetectorDeactivationThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeExternalFieldDetectorDeactivationThreshold (const uint8_t value)
+
+inline
+
+ +

Write the external field detector deactivation threshold.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeFIFO()

+ +
+
+ + + + + + + + + + + +
bool m5::unit::UnitST25R3916::writeFIFO (const uint8_t * buf,
const uint16_t buf_size )
+
+ +

Write to FIFO.

+
Parameters
+ + + +
bufBuffer
buf_sizeBuffer size
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeGeneralPurposeTimer()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeGeneralPurposeTimer (const uint16_t value)
+
+inline
+
+ +

Write the general purpose timer 1-2.

+
Parameters
+ + +
valueValue (MSB timer1,timer2 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeGeneralPurposeTimer1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeGeneralPurposeTimer1 (const uint8_t value)
+
+inline
+
+ +

Write the general purpose timer 1.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeGeneralPurposeTimer2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeGeneralPurposeTimer2 (const uint8_t value)
+
+inline
+
+ +

Write the general purpose timer 2.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeInitiatorOperationMode()

+ +
+
+ + + + + + + + + + + +
bool m5::unit::UnitST25R3916::writeInitiatorOperationMode (const st25r3916::InitiatorOperationMode mode,
const uint8_t optional = 0 )
+
+ +

Write the initiator operation mode and transition to initiator mode.

+

writeModeDefinition

Parameters
+ + + +
modeInitiatorOperationMode
optionalOther setting bits
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeIOConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeIOConfiguration (const uint16_t value)
+
+inline
+
+

Write the I/O configuration 1-2

Parameters
+ + +
valueValue (MSB cfg1, cfg2 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeIOConfiguration1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeIOConfiguration1 (const uint8_t value)
+
+inline
+
+ +

Write the I/O configuration 1.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeIOConfiguration2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeIOConfiguration2 (const uint8_t value)
+
+inline
+
+

Write the I/O configuration 1

Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeMaskErrorAndWakeupInterrupt()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeMaskErrorAndWakeupInterrupt (const uint8_t value)
+
+inline
+
+ +

Write the mask error and wake-up interrupt.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeMaskInterrupts()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeMaskInterrupts (const uint32_t value)
+
+inline
+
+ +

Write the all mask.

+
Parameters
+ + +
valueValue (MSB main, NFC, error, passive LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeMaskMainInterrupt()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeMaskMainInterrupt (const uint8_t value)
+
+inline
+
+ +

Write the mask main interrupt.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeMaskPassiveTargetInterrupt()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeMaskPassiveTargetInterrupt (const uint8_t value)
+
+inline
+
+ +

Write the mask passive target interrupt.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeMaskReceiveTimer()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeMaskReceiveTimer (const uint8_t value)
+
+inline
+
+ +

Write the mask receive timer.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeMaskTimerAndNFCInterrupt()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeMaskTimerAndNFCInterrupt (const uint8_t value)
+
+inline
+
+ +

Write the mask timer and NFC interrupt.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeModeDefinition()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeModeDefinition (const uint8_t value)
+
+inline
+
+ +

Write the mode definition.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeNFCFieldOnGuardTimer()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeNFCFieldOnGuardTimer (const uint8_t value)
+
+inline
+
+ +

Write the NFC field on guard timer.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeNFCIP1PassiveTargetDefinition()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeNFCIP1PassiveTargetDefinition (const uint8_t value)
+
+inline
+
+

Write the NFCIP-1 passive target definition

Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeNoResponseTimer()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeNoResponseTimer (const uint16_t value)
+
+inline
+
+ +

Write the no-response timer 1-2.

+
Parameters
+ + +
valueValue (MSB timer1, timer2 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeNoResponseTimer1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeNoResponseTimer1 (const uint8_t value)
+
+inline
+
+ +

Write the no-response timer 1.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeNoResponseTimer2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeNoResponseTimer2 (const uint8_t value)
+
+inline
+
+ +

Write the no-response timer 2.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeNumberOfTransmittedBytes() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + +
bool m5::unit::UnitST25R3916::writeNumberOfTransmittedBytes (const uint16_t bytes,
const uint8_t bits )
+
+inline
+
+ +

Write the number of transmitted bytes and after bytes.

+
Parameters
+ + + +
bytesNumber of full bytes to be transmitted
afterBytesNumber of bits to transmit after the last full byte
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeNumberOfTransmittedBytes() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeNumberOfTransmittedBytes (const uint16_t value)
+
+inline
+
+ +

Write the number of transmitted bytes 1-2.

+
Parameters
+ + +
valueValue (MSB bytes1, bytes2 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeNumberOfTransmittedBytes1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeNumberOfTransmittedBytes1 (const uint8_t value)
+
+inline
+
+ +

Write the number of transmitted bytes 1.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeNumberOfTransmittedBytes2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeNumberOfTransmittedBytes2 (const uint8_t value)
+
+inline
+
+ +

Write the number of transmitted bytes 2.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeOperationControl()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeOperationControl (const uint8_t value)
+
+inline
+
+ +

Write the operation control.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeOvershootProtectionConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeOvershootProtectionConfiguration (const uint16_t value)
+
+inline
+
+ +

Write the overshoot protection configuration 1-2.

+
Parameters
+ + +
valueValue (MSB cfg1, cfg2 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeOvershootProtectionConfiguration1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeOvershootProtectionConfiguration1 (const uint8_t value)
+
+inline
+
+ +

Write the overshoot protection configuration 1.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeOvershootProtectionConfiguration2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeOvershootProtectionConfiguration2 (const uint8_t value)
+
+inline
+
+ +

Write the overshoot protection configuration 2.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeP2PReceiverConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeP2PReceiverConfiguration (const uint8_t value)
+
+inline
+
+ +

Write the P2P receiver configuration.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writePassiveTargetModulation()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writePassiveTargetModulation (const uint8_t value)
+
+inline
+
+ +

Write the passive target modulation.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writePhaseMeasurementConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writePhaseMeasurementConfiguration (const uint8_t value)
+
+inline
+
+ +

Write the phase measurement configuration.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writePhaseMeasurementReference()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writePhaseMeasurementReference (const uint8_t value)
+
+inline
+
+ +

Write the phase measurement reference.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writePPON2FieldWaiting()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writePPON2FieldWaiting (const uint8_t value)
+
+inline
+
+ +

Write the PPON2 field waiting.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeReceiverConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeReceiverConfiguration (const uint32_t value)
+
+inline
+
+ +

Write the receiver configuration 1-4.

+
Parameters
+ + +
valueValue (MSB cfg1,cfg2,cfg3,cfg4 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeReceiverConfiguration1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeReceiverConfiguration1 (const uint8_t value)
+
+inline
+
+ +

Write the receiver configuration 1.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeReceiverConfiguration2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeReceiverConfiguration2 (const uint8_t value)
+
+inline
+
+ +

Write the receiver configuration 2.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeReceiverConfiguration3()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeReceiverConfiguration3 (const uint8_t value)
+
+inline
+
+ +

Write the receiver configuration 3.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeReceiverConfiguration4()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeReceiverConfiguration4 (const uint8_t value)
+
+inline
+
+ +

Write the receiver configuration 4.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeRegulatorVoltageControl()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeRegulatorVoltageControl (const uint8_t value)
+
+inline
+
+ +

Write the regulator voltage control.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeResistiveAMModulation()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeResistiveAMModulation (const uint8_t value)
+
+inline
+
+ +

Write the resistive AM modulation.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeSettingsFelica()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeSettingsFelica (const uint8_t value)
+
+inline
+
+ +

Write the settings for ISO14443B and FeliCa.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeSettingsISO14443A()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeSettingsISO14443A (const uint8_t value)
+
+inline
+
+ +

Write the settings for ISO14443A and NFC 106kb/s.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeSettingsISO14443B()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeSettingsISO14443B (const uint8_t value)
+
+inline
+
+ +

Write the settings for ISO14443B.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeSquelchTimer()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeSquelchTimer (const uint8_t value)
+
+inline
+
+ +

Write the squelch timer.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeStreamModeDefinition()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeStreamModeDefinition (const uint8_t value)
+
+inline
+
+ +

Write the stream mode definition.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeSubcarrierStartTimer()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeSubcarrierStartTimer (const uint8_t value)
+
+inline
+
+ +

Write the subcarrier start timer.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeTargetOperationMode()

+ +
+
+ + + + + + + + + + + +
bool m5::unit::UnitST25R3916::writeTargetOperationMode (const st25r3916::TargetOperationMode mode,
const uint8_t optional = 0 )
+
+ +

Write the initiator operation mode and transition to target mode.

+

writeModeDefinition

Parameters
+ + + +
modeTargetOperationMode
optionalOther setting bits
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeTimerAndEMVControl()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeTimerAndEMVControl (const uint8_t value)
+
+inline
+
+ +

Write the timer and EMV control.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeTXDriver()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeTXDriver (const uint8_t value)
+
+inline
+
+ +

Write the TX driver.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeTXDriverTiming()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeTXDriverTiming (const uint8_t value)
+
+inline
+
+ +

Write the TX driver timing.

+
Parameters
+ + +
[out]valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeUndershootProtectionConfiguration()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeUndershootProtectionConfiguration (const uint16_t value)
+
+inline
+
+ +

Write the undershoot protection configuration 1-2.

+
Parameters
+ + +
valueValue (MSB cfg1, cfg2 LSB)
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeUndershootProtectionConfiguration1()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeUndershootProtectionConfiguration1 (const uint8_t value)
+
+inline
+
+ +

Write the undershoot protection configuration 1.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeUndershootProtectionConfiguration2()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeUndershootProtectionConfiguration2 (const uint8_t value)
+
+inline
+
+ +

Write the undershoot protection configuration 2.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+ +

◆ writeWakeupTimerControl()

+ +
+
+ + + + + +
+ + + + + + + +
bool m5::unit::UnitST25R3916::writeWakeupTimerControl (const uint8_t value)
+
+inline
+
+ +

Write the Wake-up timer control.

+
Parameters
+ + +
valueValue
+
+
+
Returns
True if successful
+ +
+
+
+
+ + + + diff --git a/classm5_1_1unit_1_1_unit_s_t25_r3916.js b/classm5_1_1unit_1_1_unit_s_t25_r3916.js new file mode 100644 index 0000000..8e7baa7 --- /dev/null +++ b/classm5_1_1unit_1_1_unit_s_t25_r3916.js @@ -0,0 +1,202 @@ +var classm5_1_1unit_1_1_unit_s_t25_r3916 = +[ + [ "config_t", "structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html", "structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t" ], + [ "clearInterrupts", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a25a241c7f5ebb034e2785f4870ec2f1f", null ], + [ "config", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#aabb68cc4bd6e506278046a30aac55951", null ], + [ "config", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a39c9d2cb43565b25f5017b578209b406", null ], + [ "configureEmulationMode", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad3bc74449f1d118182bbf52bf28dd59c", null ], + [ "configureNFCMode", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a715ab9ee391f7f06134943c4b30787c0", null ], + [ "disableField", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab7a099701e8553ff6f4f21933df5c923", null ], + [ "enableField", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad8ec70245d36b1be5d23872eeb17474e", null ], + [ "isNFCMode", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a895b6141ec3be0964c15ce788ceb434d", null ], + [ "mifareClassicAuthenticateA", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#afbf8c3d8c5f90f735187d6ed5276f07a", null ], + [ "mifareClassicAuthenticateB", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a53e9646474a0a2c27dde6e156b646f0b", null ], + [ "mifareClassicValueBlock", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a989a9e6f48697e254582e47e8e39ddc8", null ], + [ "nfcaHlt", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0bec5e210dc09b9c795515c81680b835", null ], + [ "nfcaReadBlock", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9523eab08f4d93610e00a704ab6a9167", null ], + [ "nfcaReceive", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5d3ce8cc0fd99a213ec877ac47e50e7e", null ], + [ "nfcaRequest", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a456d6d1ac55f39190130d6e8a8e19325", null ], + [ "nfcaSelect", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae43fbcbaee6d34aa9880edbb49b6cd4b", null ], + [ "nfcaSelectWithAnticollision", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#af2e97b7a81262b6673e97831b3272716", null ], + [ "nfcaTransceive", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a195e53574c9750b2db85e6cd1073782f", null ], + [ "nfcaTransmit", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a936ca379b6f45afcdae154651a90f87d", null ], + [ "nfcaWakeup", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#aad481829ef58b733871deb7514a0d14d", null ], + [ "nfcaWriteBlock", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a4254b99d3e82fda6c33274629a93bd26", null ], + [ "nfcbReceive", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#aed444774f99efb57bfd6cfcf8bdd3cf3", null ], + [ "nfcbTransceive", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad43bdfb9e2bbf3f77e73e587b96dae15", null ], + [ "nfcbTransmit", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a2980eca4a872ad9b4ce4e1d59abbd0d2", null ], + [ "nfcfReceive", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae7abd1cdd9f45be22707d34286d4e13b", null ], + [ "nfcfTransceive", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5d461d5845636d6aae46342078285ec5", null ], + [ "nfcfTransmit", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#af78d82f081370f995cd9742c18b2a306", null ], + [ "NFCMode", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ac3814eadfaf2a9a941dcce095919d832", null ], + [ "nfcvReceive", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a3ffab61575579456fe24755aaab02c52", null ], + [ "nfcvTransceive", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a704c7a5d4d9d278c1f9d24355810a630", null ], + [ "nfcvTransmit", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad04893a317904806982917e07a002e5b", null ], + [ "readADConverterOutput", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a08062fdb097c796921ceccf297c02baa", null ], + [ "readAmplitudeMeasurementAutoAveragingDisplay", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad9c562ef698193dfdcd8152d89a6808e", null ], + [ "readAmplitudeMeasurementConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a735cf92a6a7265ddbd42057ae27cc851", null ], + [ "readAmplitudeMeasurementDisplay", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a7f2866153d7282686e2a482bf6125a44", null ], + [ "readAmplitudeMeasurementReference", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae3f712eccbc6dd5c7a4202b9bbf8139d", null ], + [ "readAntennaTuningControl", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1f9d97b1e13ae888d2cef4711ff32a67", null ], + [ "readAntennaTuningControl1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a10780e22ce1bba9f8ca10ffef99126aa", null ], + [ "readAntennaTuningControl2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#acb5ed058550c0ac513fcffdf827efa3e", null ], + [ "readAuxiliaryDefinition", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#aef044b2425921b6dab7d5fb5045f5cbb", null ], + [ "readAuxiliaryDisplay", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#af4c3076825b4c3fbd847ad006e9df668", null ], + [ "readAuxiliaryModulationSetting", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a55ab0a4af4c4d4021faa279be557139f", null ], + [ "readBitrateDefinition", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a4831930991b3ab2a58ec033a62a56042", null ], + [ "readBitrateDetectionDisplay", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ac5900a5c4b61b34783324d30673f3bc0", null ], + [ "readCapacitanceMeasurementAutoAveragingDisplay", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a038ac0e9d02b15c6c1b8d0014f7e4fbc", null ], + [ "readCapacitanceMeasurementConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ac62b0d695772486df92ba9e50c0df1f1", null ], + [ "readCapacitanceMeasurementDisplay", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a77839fb29fd9e45929dcdceff3d0fdb1", null ], + [ "readCapacitanceMeasurementReference", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a2b05c3b934c32655a75f97bbe9a8eec4", null ], + [ "readCapacitiveSensorControl", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#abdb6610ef390550da5dfc56d10ff30ce", null ], + [ "readCapacitiveSensorDisplay", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#aafdba06d3e7d440eca36b1f9bf8a22f2", null ], + [ "readCollisionDisplay", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9f35c902bccd6314ab956a625a0b2a29", null ], + [ "readCorrelatorConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#aa4024b881cf7f9541c15bef662997e1e", null ], + [ "readCorrelatorConfiguration1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae737fc7f43faf3d550d0ad069e8f0ccd", null ], + [ "readCorrelatorConfiguration2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#accf80af0ec691e8c74de111f19112086", null ], + [ "readEMDSuppressionConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a88fb2f73a2c4fb430b17293a0761fbf3", null ], + [ "readErrorAndWakeupInterrupt", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a218162c4dd414da630479020930824d0", null ], + [ "readExternalFieldDetectorActivationThreshold", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a19defbfd6df303cf0c6d77187a711917", null ], + [ "readExternalFieldDetectorDeactivationThreshold", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9fcc8625df4b8153a684ab70afea66f0", null ], + [ "readFIFO", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a71755c04ed3c946627235e14aeb95992", null ], + [ "readFIFOSize", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#abde9373b1ae0e83f385840adc30c541c", null ], + [ "readFIFOStatus", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a005f3a955c7fbbc2584d9d1c95889c62", null ], + [ "readFIFOStatus1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a4dec1b712b681cfd1716e1d407a1697c", null ], + [ "readFIFOStatus2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a4f428fb7e83f3c278a48ae1e660afba7", null ], + [ "readGainReductionState", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a739a60b7d77e403b0fd16064dae5dff1", null ], + [ "readGeneralPurposeTimer", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a93b67a62685adc21aa4a82084a3ea617", null ], + [ "readGeneralPurposeTimer1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab97ff2440fb3d95622cc29049eaf3ae3", null ], + [ "readGeneralPurposeTimer2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a86ded49224044850eec4343ed93e6136", null ], + [ "readICIdentity", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1bc7876fc2ca2be617212b85c037edf9", null ], + [ "readInterrupts", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1fcb93657f8d96923033431eeade2e32", null ], + [ "readIOConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9d6d2a62bb832c8f6c9980c8b4890b56", null ], + [ "readIOConfiguration1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae4cde7bd48d0471543bc0a9ac3d5519b", null ], + [ "readIOConfiguration2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a27cbc2f8ed7707a5bf74466ea0ebf6db", null ], + [ "readMainInterrupt", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a7f06768804f96003a4c34cf3a79f591f", null ], + [ "readMaskErrorAndWakeupInterrupt", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9a1201113079152da88ed03d53538a18", null ], + [ "readMaskInterrupts", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a583760a81ec99d5b8b8ac321350431e8", null ], + [ "readMaskMainInterrupt", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a04b32e2a469ac22281947743d316fce3", null ], + [ "readMaskPassiveTargetInterrupt", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5994da7a2e869936cfbad46a8ca4d93e", null ], + [ "readMaskReceiveTimer", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0d33cefab2853f7506f76a20b1ccd694", null ], + [ "readMaskTimerAndNFCInterrupt", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a50e39e51b2f818f1dbe232b303b474ba", null ], + [ "readModeDefinition", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae205db89775d4798803f4551a963fa45", null ], + [ "readNFCFieldOnGuardTimer", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ac8bfa17c5cabf97af93ef08e9ce05d82", null ], + [ "readNFCIP1PassiveTargetDefinition", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a264a3b794e12367b9bd391e66364ed48", null ], + [ "readNoResponseTimer", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#abdb1b4f3c8399e79047063c9630ab33d", null ], + [ "readNoResponseTimer1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab7c3b048b1cfdbac22c26b0670d164ba", null ], + [ "readNoResponseTimer2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae641dcf3d5913e00f3c9271ef4cca71e", null ], + [ "readNumberOfTransmittedBytes", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad88d3fb6bc69bc36016dee6d3c18e6da", null ], + [ "readNumberOfTransmittedBytes1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a7f67ad01708120ad13d82bd5c547204e", null ], + [ "readNumberOfTransmittedBytes2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#af9667f157df14cee9b9683a7f797f0d5", null ], + [ "readOperationControl", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a071187a782adc59a24ee547e3bd688d3", null ], + [ "readOvershootProtectionConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a29940289a38fec6374e2ab83913a1ac3", null ], + [ "readOvershootProtectionConfiguration1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a8a843d901b4cc762b2f475ef9c4ba847", null ], + [ "readOvershootProtectionConfiguration2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#aa4c056de4b328cd9daa3daee2cd3128d", null ], + [ "readP2PReceiverConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a8f63fe063f9c5259e1be0cf409ea2967", null ], + [ "readPassiveTargetDisplay", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ade3074e98b95d15d0bee2f3645a0671b", null ], + [ "readPassiveTargetInterrupt", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0f09777cae214492f36d42622e4ceafe", null ], + [ "readPassiveTargetModulation", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#afec086fb283d8deb51618628d6af0198", null ], + [ "readPhaseMeasurementAutoAveragingDisplay", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a012e6d0be9b214d7faff9aec4e68a1e8", null ], + [ "readPhaseMeasurementConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a679e7263cfa373bcb28d5a0652c050d1", null ], + [ "readPhaseMeasurementDisplay", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae33d45840047077cb237b33be2524738", null ], + [ "readPhaseMeasurementReference", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab650256ac000e08eb1d3a084ab74d1c1", null ], + [ "readPPON2FieldWaiting", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad0f10895c515d966a744b18001c22c08", null ], + [ "readReceiverConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a60203aa11d73ec598f2940d51e716888", null ], + [ "readReceiverConfiguration1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#aefeca1ad098a7109af3a66ecfa67a866", null ], + [ "readReceiverConfiguration2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a68cbfcac8dddb4c7a4f703f433f6e8c9", null ], + [ "readReceiverConfiguration3", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a2334efea87ad7d6366d6cec34b3a19dc", null ], + [ "readReceiverConfiguration4", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#abcb65704d88d708d968e09c830b7c0e6", null ], + [ "readRegulatorDisplay", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a99fb3f9b3dc657f9b0c92337732b9a4b", null ], + [ "readRegulatorVoltageControl", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1a2f39d9ff99a395899c117f7c7faade", null ], + [ "readResistiveAMModulation", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#af66d31379de5808c079847ef657d301a", null ], + [ "readRSSIDisplay", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae6e30c9913f6d4c417ae3ee6ad75fb23", null ], + [ "readSettingsFelica", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a311f409703ca9492d5a8c6196728bb36", null ], + [ "readSettingsISO14443A", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a6aa21d1b259476495db6a030ef30076f", null ], + [ "readSettingsISO14443B", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#acc79c90b6b22d5a91d0ffcbf1ea84cd1", null ], + [ "readSquelchTimer", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0d1ee83144400dc5d8209df7b59f726b", null ], + [ "readStreamModeDefinition", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a521cad377d4792f4deef4f7c226df969", null ], + [ "readSubcarrierStartTimer", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a247cc45b2d42913eae92814211a661d8", null ], + [ "readTimerAndEMVControl", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab6420afa36465e873a2ef42fe594c68b", null ], + [ "readTimerAndNFCInterrupt", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0f36f70969df4707858a8ed090ce3d7d", null ], + [ "readTXDriver", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9844f6043bc46f47cb25174948ac1ce2", null ], + [ "readTXDriverTiming", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#afcea42102730d1aabaa5770d285e750d", null ], + [ "readTXDriverTimingDisplay", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a41843d8909be31377a79ed97b589a078", null ], + [ "readUndershootProtectionConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5a5a56230bbd7c570cfb44630206cf26", null ], + [ "readUndershootProtectionConfiguration1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad446e3139d061ee14da240c1dac998d5", null ], + [ "readUndershootProtectionConfiguration2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#aee2b97fb54b873cebe17a4b9d8962076", null ], + [ "readWakeupTimerControl", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad9f4154143bf86dbed3b06028dd49f65", null ], + [ "writeAmplitudeMeasurementConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a28d6a72e573ba74f3348ad1930b12767", null ], + [ "writeAmplitudeMeasurementReference", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1d4a230e1fa5c48333d27ea42bae6b8a", null ], + [ "writeAntennaTuningControl", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#acdf0f45529429a32c3677ef00686e3b0", null ], + [ "writeAntennaTuningControl1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a25256ff24318016b4b653e5b453fdffe", null ], + [ "writeAntennaTuningControl2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ada6322920860d4d8d98dc161ddf2eb0f", null ], + [ "writeAuxiliaryDefinition", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ac8d7d92a8030d3b02b6220bbaf05c49b", null ], + [ "writeAuxiliaryModulationSetting", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#aafc70db540cbc2c925ba545babfbc094", null ], + [ "writeBitrate", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a87cba17683c2f98573cda17304e77268", null ], + [ "writeBitrateDefinition", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a42187cb9c60bfdb2a113b59634a1438d", null ], + [ "writeCapacitanceMeasurementConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#aff11bbe3aff6b2df8e2fa707eb6ec599", null ], + [ "writeCapacitanceMeasurementReference", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a55a196c933376127aea0c782e331d6c5", null ], + [ "writeCapacitiveSensorControl", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a50da49150540a52ef911af33eab02ddf", null ], + [ "writeCorrelatorConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a16ec6a993ee499b9a6a511b776ad3688", null ], + [ "writeCorrelatorConfiguration1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a544a93d81296700ecae1992d9f04f37f", null ], + [ "writeCorrelatorConfiguration2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5af372abb32472b2154ec1d34643ac94", null ], + [ "writeDirectCommand", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a16cae8501a7e689c426c4d35fe4edbfa", null ], + [ "writeEMDSuppressionConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a08207f5df9d91971cbc812b759f1bdac", null ], + [ "writeExternalFieldDetectorActivationThreshold", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1f8a711c7b085f53cc6c6d9d25eb15e2", null ], + [ "writeExternalFieldDetectorDeactivationThreshold", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a170aadcabb38fec9dcefd6c02797a43b", null ], + [ "writeFIFO", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5776719d2e0c52c802da429aeb105957", null ], + [ "writeGeneralPurposeTimer", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5e8817eeaeb1da5c0737f45eaf4770cf", null ], + [ "writeGeneralPurposeTimer1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#aae5e1e9cfe450f481c74b68e6044463b", null ], + [ "writeGeneralPurposeTimer2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a3bc4aa64b609a1d29e26fb946af7c23d", null ], + [ "writeInitiatorOperationMode", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a6af0ec856808713241824480ff85abf7", null ], + [ "writeIOConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a2ff95a22623efee299fb6030c864b880", null ], + [ "writeIOConfiguration1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0cd27f50622b6cb3224b857667e701e4", null ], + [ "writeIOConfiguration2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a8dfb0671ef5c77315e5dff8b3f071c74", null ], + [ "writeMaskErrorAndWakeupInterrupt", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a84be453fab2b2533c6fa11adcf320e0f", null ], + [ "writeMaskInterrupts", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#abea1541fc106bc20b0d88acb3c89dc6b", null ], + [ "writeMaskMainInterrupt", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9d488b87822d8dd4bd65a7e8ba6c5a9f", null ], + [ "writeMaskPassiveTargetInterrupt", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#aa71d6d949fb09cc1802b93936adb2ecf", null ], + [ "writeMaskReceiveTimer", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a14ff8477eb6e599ef090ce70286c337b", null ], + [ "writeMaskTimerAndNFCInterrupt", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0133a724e1f5d7d0d16adec3aeea1fc8", null ], + [ "writeModeDefinition", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad11bcb754688beb10d72898975289553", null ], + [ "writeNFCFieldOnGuardTimer", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a7dd6fa32d3dc96aac26603f9677c96ca", null ], + [ "writeNFCIP1PassiveTargetDefinition", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ac327fac77452a89f614ee75fdbe2f9c9", null ], + [ "writeNoResponseTimer", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a21e6c59ac29b033801de1a40f92a4eda", null ], + [ "writeNoResponseTimer1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a77dafefff7b5a8242f6ce6f8ae67a024", null ], + [ "writeNoResponseTimer2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a6f55ccc0572d222962884676f87e52b0", null ], + [ "writeNumberOfTransmittedBytes", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab9720070ee17448df04e9b876603fb1a", null ], + [ "writeNumberOfTransmittedBytes", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a162257c59213ed34ce1b18f86a8f0476", null ], + [ "writeNumberOfTransmittedBytes1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a75124e7cf3a6f1fcfc910640d9dfd3f5", null ], + [ "writeNumberOfTransmittedBytes2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9226a717c07d7be70b4366084582e038", null ], + [ "writeOperationControl", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a516b34b93a3a4fd4a43b538ee8309703", null ], + [ "writeOvershootProtectionConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1faa39edb5f375b9579f79b2ecb131fd", null ], + [ "writeOvershootProtectionConfiguration1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#af7cbd5d9d33a52058dbd1c0e2d6de49d", null ], + [ "writeOvershootProtectionConfiguration2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5b062b9ce0f228d8e11c65cbbc8a6113", null ], + [ "writeP2PReceiverConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a6cf660e1ff08b85b3f8ab15c016be2e0", null ], + [ "writePassiveTargetModulation", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a80fff17ada1806c6d679b8f3ed744052", null ], + [ "writePhaseMeasurementConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a8cf6dcbd164572b3e227e6d84f619993", null ], + [ "writePhaseMeasurementReference", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a87decdabd824001e6d110aba7e32f544", null ], + [ "writePPON2FieldWaiting", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a3fe4c51a9d5484dcee572b3902b61b83", null ], + [ "writeReceiverConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#aac46525d412463c4bb62723595d172db", null ], + [ "writeReceiverConfiguration1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a92d7c10a6637a1cf3ffc3ed259331c4e", null ], + [ "writeReceiverConfiguration2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae584060521c664be3a95019a4781d76c", null ], + [ "writeReceiverConfiguration3", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#abeb96ed126791715662ec18f15d15f91", null ], + [ "writeReceiverConfiguration4", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a29c409732b3f410f97c0ea4b334cdf7c", null ], + [ "writeRegulatorVoltageControl", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a8fde3d4ca0e50c5bdc91e8234626a686", null ], + [ "writeResistiveAMModulation", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0779edf80d6b5ed2ba4ff8199edec986", null ], + [ "writeSettingsFelica", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#abbe87a909501f2c0bb098706731f2b5c", null ], + [ "writeSettingsISO14443A", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a26e0a01a8912e23945098eb822d5da36", null ], + [ "writeSettingsISO14443B", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a3fb7e423a9431dffab6eb8bcf8f3b074", null ], + [ "writeSquelchTimer", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab9f3ebd8b6b39acb14a18d2cfa844700", null ], + [ "writeStreamModeDefinition", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae1129dad075f55d3702b76d568bae13f", null ], + [ "writeSubcarrierStartTimer", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#af58bbb322d1f8197dbe5c38305de6d81", null ], + [ "writeTargetOperationMode", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a189474854e43bdc2181ddf3deb50bfd6", null ], + [ "writeTimerAndEMVControl", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a913bf7975a2571f9ab09bbcf9c36ccb7", null ], + [ "writeTXDriver", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#aea12d9308b63c40166c97656d14eeac7", null ], + [ "writeTXDriverTiming", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a53fb2f7909f24276f81872bd31582144", null ], + [ "writeUndershootProtectionConfiguration", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#aee178f1500656e07c8d6e22a7387a915", null ], + [ "writeUndershootProtectionConfiguration1", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a28af928272e427c8471973e2a0d46701", null ], + [ "writeUndershootProtectionConfiguration2", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a8ead7162a23c729bbe2c2f0608a5531d", null ], + [ "writeWakeupTimerControl", "classm5_1_1unit_1_1_unit_s_t25_r3916.html#a44f7501715f47862dc579338dec83fcb", null ] +]; \ No newline at end of file diff --git a/classm5_1_1unit_1_1_unit_s_t25_r3916.png b/classm5_1_1unit_1_1_unit_s_t25_r3916.png new file mode 100644 index 0000000..acff851 Binary files /dev/null and b/classm5_1_1unit_1_1_unit_s_t25_r3916.png differ diff --git a/clipboard.js b/clipboard.js new file mode 100644 index 0000000..42c1fb0 --- /dev/null +++ b/clipboard.js @@ -0,0 +1,61 @@ +/** + +The code below is based on the Doxygen Awesome project, see +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2022 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +let clipboard_title = "Copy to clipboard" +let clipboard_icon = `` +let clipboard_successIcon = `` +let clipboard_successDuration = 1000 + +$(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const clipboard_div = document.createElement("div") + clipboard_div.classList.add("clipboard") + clipboard_div.innerHTML = clipboard_icon + clipboard_div.title = clipboard_title + $(clipboard_div).click(function() { + const content = this.parentNode.cloneNode(true) + // filter out line number and folded fragments from file listings + content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) + let text = content.textContent + // remove trailing newlines and trailing spaces from empty lines + text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') + navigator.clipboard.writeText(text); + this.classList.add("success") + this.innerHTML = clipboard_successIcon + window.setTimeout(() => { // switch back to normal icon after timeout + this.classList.remove("success") + this.innerHTML = clipboard_icon + }, clipboard_successDuration); + }) + fragment.insertBefore(clipboard_div, fragment.firstChild) + } + } +}) diff --git a/closed.png b/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/closed.png differ diff --git a/cookie.js b/cookie.js new file mode 100644 index 0000000..53ad21d --- /dev/null +++ b/cookie.js @@ -0,0 +1,58 @@ +/*! + Cookie helper functions + Copyright (c) 2023 Dimitri van Heesch + Released under MIT license. +*/ +let Cookie = { + cookie_namespace: 'doxygen_', + + readSetting(cookie,defVal) { + if (window.chrome) { + const val = localStorage.getItem(this.cookie_namespace+cookie) || + sessionStorage.getItem(this.cookie_namespace+cookie); + if (val) return val; + } else { + let myCookie = this.cookie_namespace+cookie+"="; + if (document.cookie) { + const index = document.cookie.indexOf(myCookie); + if (index != -1) { + const valStart = index + myCookie.length; + let valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + return document.cookie.substring(valStart, valEnd); + } + } + } + return defVal; + }, + + writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete + if (window.chrome) { + if (days==0) { + sessionStorage.setItem(this.cookie_namespace+cookie,val); + } else { + localStorage.setItem(this.cookie_namespace+cookie,val); + } + } else { + let date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; + document.cookie = this.cookie_namespace + cookie + "=" + + val + "; SameSite=Lax;" + expiration + "path=/"; + } + }, + + eraseSetting(cookie) { + if (window.chrome) { + if (localStorage.getItem(this.cookie_namespace+cookie)) { + localStorage.removeItem(this.cookie_namespace+cookie); + } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { + sessionStorage.removeItem(this.cookie_namespace+cookie); + } + } else { + this.writeSetting(cookie,'',-1); + } + }, +} diff --git a/desfire__file__system_8cpp.html b/desfire__file__system_8cpp.html new file mode 100644 index 0000000..ea5293b --- /dev/null +++ b/desfire__file__system_8cpp.html @@ -0,0 +1,185 @@ + + + + + + + +M5Unit-NFC: src/nfc/isoDEP/desfire_file_system.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
desfire_file_system.cpp File Reference
+
+
+ +

File system base using isoDEP for MIFARE DESFire. +More...

+
#include "desfire_file_system.hpp"
+#include "nfc/layer/a/nfc_layer_a.hpp"
+#include "nfc/isoDEP/isoDEP.hpp"
+#include "nfc/crypto/aes.hpp"
+#include "nfc/crypto/secure_zero.hpp"
+#include "nfc/ndef/ndef.hpp"
+#include "nfc/apdu/apdu.hpp"
+#include <cassert>
+#include <cstring>
+#include <mbedtls/aes.h>
+#include <esp_random.h>
+#include <M5Utility.hpp>
+#include <algorithm>
+#include <limits>
+
+ + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
+ + + + +

+Functions

std::vector< uint8_t > m5::nfc::a::mifare::desfire::make_native_wrap_command (const uint8_t ins, const uint8_t *data=nullptr, const uint16_t data_len=0)
 Make native wrap command.
 
+

Detailed Description

+

File system base using isoDEP for MIFARE DESFire.

+

Function Documentation

+ +

◆ make_native_wrap_command()

+ +
+
+ + + + + + + + + + + + + + + + +
std::vector< uint8_t > m5::nfc::a::mifare::desfire::make_native_wrap_command (const uint8_t ins,
const uint8_t * data = nullptr,
const uint16_t data_len = 0 )
+
+ +

Make native wrap command.

+

Something similar to APDU but different

Parameters
+ + + + +
insNative INS
dataData
data_lenData length
+
+
+
Returns
Constructed command data
+ +
+
+
+
+ + + + diff --git a/desfire__file__system_8cpp.js b/desfire__file__system_8cpp.js new file mode 100644 index 0000000..975b134 --- /dev/null +++ b/desfire__file__system_8cpp.js @@ -0,0 +1,4 @@ +var desfire__file__system_8cpp = +[ + [ "make_native_wrap_command", "desfire__file__system_8cpp.html#a5a527aa739178651a434b5907e22d7b3", null ] +]; \ No newline at end of file diff --git a/desfire__file__system_8hpp.html b/desfire__file__system_8hpp.html new file mode 100644 index 0000000..33d09c9 --- /dev/null +++ b/desfire__file__system_8hpp.html @@ -0,0 +1,319 @@ + + + + + + + +M5Unit-NFC: src/nfc/isoDEP/desfire_file_system.hpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
desfire_file_system.hpp File Reference
+
+
+ +

File system base using isoDEP for MIFARE DESFire. +More...

+
#include "file_system.hpp"
+#include "nfc/a/mifare.hpp"
+#include "nfc/ndef/ndef.hpp"
+#include <m5_utility/stl/expected.hpp>
+#include <array>
+#include <algorithm>
+#include <limits>
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Classes

struct  m5::nfc::a::mifare::desfire::FileSettings
 DESFire file settings (minimal fields for StdDataFile) More...
 
struct  m5::nfc::a::mifare::desfire::desfire_aid_t
 24bit Application ID More...
 
struct  m5::nfc::a::mifare::desfire::NdefFormatOptions
 Options for formatting DESFire as Type4 NDEF. More...
 
struct  m5::nfc::a::mifare::desfire::FileRename
 File renaming parameters for DESFire Light SetConfiguration. More...
 
struct  m5::nfc::a::mifare::desfire::Ev2Context
 Session context for EV2 secure messaging. More...
 
class  m5::nfc::a::mifare::desfire::DESFireFileSystem
 File system for MIFARE DESFire. More...
 
+ + + + + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
namespace  desfire
 For MIFARE DESFire.
 
+ + + + +

+Enumerations

enum class  m5::nfc::a::mifare::desfire::AuthMode : uint8_t { Auto +, DES +, AES + }
 Authentication mode. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+uint16_t m5::nfc::a::mifare::desfire::detail::clamp_u16_size (const size_t size)
 
+uint16_t m5::nfc::a::mifare::desfire::detail::default_rx_capacity (const m5::nfc::isodep::IsoDEP &dep)
 
+void m5::nfc::a::mifare::desfire::detail::pack_le24 (uint8_t out[3], const uint32_t value)
 
+void m5::nfc::a::mifare::desfire::detail::pack_be24 (uint8_t out[3], const uint32_t value)
 
+uint32_t m5::nfc::a::mifare::desfire::detail::unpack_le24 (const uint8_t in[3])
 
+bool m5::nfc::a::mifare::desfire::operator== (const desfire_aid_t &a, const desfire_aid_t &b) noexcept
 
+bool m5::nfc::a::mifare::desfire::operator!= (const desfire_aid_t &a, const desfire_aid_t &b) noexcept
 
+bool m5::nfc::a::mifare::desfire::operator< (const desfire_aid_t &a, const desfire_aid_t &b) noexcept
 
std::vector< uint8_t > m5::nfc::a::mifare::desfire::make_native_wrap_command (const uint8_t ins, const uint8_t *data=nullptr, const uint16_t data_len=0)
 Make native wrap command.
 
+uint8_t m5::nfc::a::mifare::desfire::status_code (const uint8_t *rx, const uint16_t rx_len)
 DESFire status code (0x91xx)
 
+bool m5::nfc::a::mifare::desfire::is_successful (const uint8_t *rx, const uint16_t rx_len)
 Is the status of the received data successful?
 
+bool m5::nfc::a::mifare::desfire::is_more (const uint8_t *rx, const uint16_t rx_len)
 Is the received data still waiting for a response?
 
+bool m5::nfc::a::mifare::desfire::is_duplicate (const uint8_t *rx, const uint16_t rx_len)
 Is duplicate error? (e.g. app/file already exists)
 
+ + + + + + + + + + +

+Variables

+constexpr uint8_t m5::nfc::a::mifare::desfire::DESFIRE_APDU_CLA {0x90}
 
+constexpr uint8_t m5::nfc::a::mifare::desfire::DESFIRE_LIGHT_INS_READ_DATA {0xAD}
 
+constexpr uint8_t m5::nfc::a::mifare::desfire::DESFIRE_LIGHT_INS_WRITE_DATA {0x8D}
 
+constexpr uint8_t m5::nfc::a::mifare::desfire::MAXIMUM_FILES {MAXIMUM_FILE_NO - MINIMUM_FILE_NO + 1}
 Files max.
 
+ + + + + + + + + + +

File number

+using m5::nfc::a::mifare::desfire::file_no_t = uint8_t
 Alias for file number.
 
+constexpr file_no_t m5::nfc::a::mifare::desfire::MINIMUM_FILE_NO {0}
 Minimum file number.
 
+constexpr file_no_t m5::nfc::a::mifare::desfire::MAXIMUM_FILE_NO {31}
 Maximum file number.
 
+

Detailed Description

+

File system base using isoDEP for MIFARE DESFire.

+

Enumeration Type Documentation

+ +

◆ AuthMode

+ +
+
+ + + + + +
+ + + + +
enum class m5::nfc::a::mifare::desfire::AuthMode : uint8_t
+
+strong
+
+ +

Authentication mode.

+ + + + +
Enumerator
Auto 

Try DES then AES.

+
DES 

DES/3DES only.

+
AES 

AES only.

+
+ +
+
+

Function Documentation

+ +

◆ make_native_wrap_command()

+ +
+
+ + + + + + + + + + + + + + + + +
std::vector< uint8_t > m5::nfc::a::mifare::desfire::make_native_wrap_command (const uint8_t ins,
const uint8_t * data = nullptr,
const uint16_t data_len = 0 )
+
+ +

Make native wrap command.

+

Something similar to APDU but different

Parameters
+ + + + +
insNative INS
dataData
data_lenData length
+
+
+
Returns
Constructed command data
+ +
+
+
+
+ + + + diff --git a/desfire__file__system_8hpp.js b/desfire__file__system_8hpp.js new file mode 100644 index 0000000..dfc91f7 --- /dev/null +++ b/desfire__file__system_8hpp.js @@ -0,0 +1,23 @@ +var desfire__file__system_8hpp = +[ + [ "m5::nfc::a::mifare::desfire::FileSettings", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_settings.html", null ], + [ "m5::nfc::a::mifare::desfire::desfire_aid_t", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1desfire__aid__t.html", null ], + [ "m5::nfc::a::mifare::desfire::NdefFormatOptions", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options" ], + [ "m5::nfc::a::mifare::desfire::FileRename", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename.html", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename" ], + [ "m5::nfc::a::mifare::desfire::Ev2Context", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.html", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context" ], + [ "m5::nfc::a::mifare::desfire::DESFireFileSystem", "classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.html", "classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system" ], + [ "file_no_t", "desfire__file__system_8hpp.html#a289b29edf73add42154f1ae61497b5db", null ], + [ "AuthMode", "desfire__file__system_8hpp.html#a87fa07187f0a1c6976f12ab14bb0fd80", [ + [ "Auto", "desfire__file__system_8hpp.html#a87fa07187f0a1c6976f12ab14bb0fd80a06b9281e396db002010bde1de57262eb", null ], + [ "DES", "desfire__file__system_8hpp.html#a87fa07187f0a1c6976f12ab14bb0fd80a80ac4ad5ef5d93178348c18272df6bd3", null ], + [ "AES", "desfire__file__system_8hpp.html#a87fa07187f0a1c6976f12ab14bb0fd80a76b7593457e2ab50befe2dcd63cf388f", null ] + ] ], + [ "is_duplicate", "desfire__file__system_8hpp.html#a53b4e87ed3527faa024b6671690cc8e6", null ], + [ "is_more", "desfire__file__system_8hpp.html#a044c0ecbff9667d3b30b6f09852b3671", null ], + [ "is_successful", "desfire__file__system_8hpp.html#aaacf49946d7267b32be70c6cd5f178f1", null ], + [ "make_native_wrap_command", "desfire__file__system_8hpp.html#a5a527aa739178651a434b5907e22d7b3", null ], + [ "status_code", "desfire__file__system_8hpp.html#ac48e82125fa96801b0ceae50e510fc26", null ], + [ "MAXIMUM_FILE_NO", "desfire__file__system_8hpp.html#a25dc413db08d6739bacf7c73e3c15845", null ], + [ "MAXIMUM_FILES", "desfire__file__system_8hpp.html#a7c16fac19c4923b99c260753d2798ad5", null ], + [ "MINIMUM_FILE_NO", "desfire__file__system_8hpp.html#a7e744743d08b8420d7e969f3df682be8", null ] +]; \ No newline at end of file diff --git a/desfire__file__system_8hpp_source.html b/desfire__file__system_8hpp_source.html new file mode 100644 index 0000000..e7a7cbc --- /dev/null +++ b/desfire__file__system_8hpp_source.html @@ -0,0 +1,434 @@ + + + + + + + +M5Unit-NFC: src/nfc/isoDEP/desfire_file_system.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
desfire_file_system.hpp
+
+
+Go to the documentation of this file.
1/*
+
2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
+
3 *
+
4 * SPDX-License-Identifier: MIT
+
5 */
+
10#ifndef M5_UNIT_UNIFIED_NFC_NFC_ISODEP_DESFIRE_FILE_SYSTEM_HPP
+
11#define M5_UNIT_UNIFIED_NFC_NFC_ISODEP_DESFIRE_FILE_SYSTEM_HPP
+
12#include "file_system.hpp"
+
13#include "nfc/a/mifare.hpp"
+
14#include "nfc/ndef/ndef.hpp"
+
15#include <m5_utility/stl/expected.hpp>
+
16#include <array>
+
17#include <algorithm>
+
18#include <limits>
+
19
+
20namespace m5 {
+
21namespace nfc {
+
22class NFCLayerA;
+
23namespace a {
+
24namespace mifare {
+
29namespace desfire {
+
30
+
31constexpr uint8_t DESFIRE_APDU_CLA{0x90};
+
32constexpr uint8_t DESFIRE_LIGHT_INS_READ_DATA{0xAD};
+
33constexpr uint8_t DESFIRE_LIGHT_INS_WRITE_DATA{0x8D};
+
34
+
37using file_no_t = uint8_t;
+ + +
41
+ +
43
+
44namespace detail {
+
45
+
46inline uint16_t clamp_u16_size(const size_t size)
+
47{
+
48 constexpr size_t max_u16 = std::numeric_limits<uint16_t>::max();
+
49 return static_cast<uint16_t>(size > max_u16 ? max_u16 : size);
+
50}
+
51
+
52inline uint16_t default_rx_capacity(const m5::nfc::isodep::IsoDEP& dep)
+
53{
+
54 const uint16_t cfg_rx = dep.config().max_frame_size_rx();
+
55 const uint16_t base = cfg_rx ? cfg_rx : 256;
+
56 return std::max<uint16_t>(256, base);
+
57}
+
58
+
59inline void pack_le24(uint8_t out[3], const uint32_t value)
+
60{
+
61 out[0] = static_cast<uint8_t>(value & 0xFF);
+
62 out[1] = static_cast<uint8_t>((value >> 8) & 0xFF);
+
63 out[2] = static_cast<uint8_t>((value >> 16) & 0xFF);
+
64}
+
65
+
66inline void pack_be24(uint8_t out[3], const uint32_t value)
+
67{
+
68 out[0] = static_cast<uint8_t>((value >> 16) & 0xFF);
+
69 out[1] = static_cast<uint8_t>((value >> 8) & 0xFF);
+
70 out[2] = static_cast<uint8_t>(value & 0xFF);
+
71}
+
72
+
73inline uint32_t unpack_le24(const uint8_t in[3])
+
74{
+
75 return static_cast<uint32_t>(in[0]) | (static_cast<uint32_t>(in[1]) << 8) | (static_cast<uint32_t>(in[2]) << 16);
+
76}
+
77
+
78} // namespace detail
+
79
+
+ +
85 uint8_t file_type{};
+
86 uint8_t comm_mode{};
+
87 uint16_t access_rights{};
+
88 uint32_t file_size{};
+
89};
+
+
90
+
+ +
96 uint8_t aid[3]{}; // BE
+
97 uint8_t _pad{};
+
98 inline constexpr uint32_t aid24() const noexcept
+
99 {
+
100 // Big-endian
+
101 return ((uint32_t)aid[0] << 16) | ((uint32_t)aid[1] << 8) | aid[2];
+
102 }
+
103 inline constexpr const uint8_t* data() const noexcept
+
104 {
+
105 return aid;
+
106 }
+
107 inline explicit operator uint32_t() const noexcept
+
108 {
+
109 return aid24();
+
110 }
+
111};
+
+
112inline bool operator==(const desfire_aid_t& a, const desfire_aid_t& b) noexcept
+
113{
+
114 return a.aid[0] == b.aid[0] && a.aid[1] == b.aid[1] && a.aid[2] == b.aid[2];
+
115}
+
116inline bool operator!=(const desfire_aid_t& a, const desfire_aid_t& b) noexcept
+
117{
+
118 return !(a == b);
+
119}
+
120inline bool operator<(const desfire_aid_t& a, const desfire_aid_t& b) noexcept
+
121{
+
122 return a.aid24() < b.aid24();
+
123}
+
124
+
+
129enum class AuthMode : uint8_t {
+
130 Auto,
+
131 DES,
+
132 AES,
+
133};
+
+
134
+ +
155
+
+ +
161 uint8_t old_file_no{};
+
162 uint8_t new_file_no{};
+
163 uint16_t new_file_id{};
+
164};
+
+
165
+
+ +
171 uint8_t ti[4]{};
+
172 uint16_t cmd_ctr{};
+
173 uint8_t ses_enc_key[16]{};
+
174 uint8_t ses_mac_key[16]{};
+
175};
+
+
184std::vector<uint8_t> make_native_wrap_command(const uint8_t ins, const uint8_t* data = nullptr,
+
185 const uint16_t data_len = 0);
+
186
+
+
188inline uint8_t status_code(const uint8_t* rx, const uint16_t rx_len)
+
189{
+
190 return (rx && rx_len >= 2 && rx[rx_len - 2] == 0x91) ? rx[rx_len - 1] : 0xFF;
+
191}
+
+
192
+
+
194inline bool is_successful(const uint8_t* rx, const uint16_t rx_len)
+
195{
+
196 return status_code(rx, rx_len) == 0x00;
+
197}
+
+
198
+
+
200inline bool is_more(const uint8_t* rx, const uint16_t rx_len)
+
201{
+
202 return status_code(rx, rx_len) == 0xAF;
+
203}
+
+
204
+
+
206inline bool is_duplicate(const uint8_t* rx, const uint16_t rx_len)
+
207{
+
208 return status_code(rx, rx_len) == 0xDE;
+
209}
+
+
210
+
+ +
216public:
+
217 explicit DESFireFileSystem(m5::nfc::NFCLayerA& layer);
+
218 explicit DESFireFileSystem(m5::nfc::isodep::IsoDEP& isoDEP) : FileSystem{isoDEP}
+
219 {
+
220 }
+
221
+
222 m5::stl::expected<void, uint8_t> createApplication(const uint8_t aid[3], const uint8_t key_settings1,
+
223 const uint8_t key_settings2, const uint16_t iso_fid = 0,
+
224 const uint8_t* df_name = nullptr, const uint8_t df_name_len = 0);
+
225 inline bool selectApplication(const desfire_aid_t& aid)
+
226 {
+
227 return selectApplication(aid.data());
+
228 }
+
229 bool selectApplication(const uint8_t aid[3]);
+
230 bool selectApplication(const uint32_t aid24 = 0u);
+
231 bool deleteApplication(const uint8_t aid[3]);
+
232
+
233 bool getApplicationIDs(std::vector<desfire_aid_t>& out);
+
234 // NOTE: getFreeMemory is intended to be used before authentication (no secure messaging).
+
235 bool getFreeMemory(uint32_t& out);
+
236 bool getKeySettings(uint8_t& key_settings, uint8_t& key_count);
+
237 bool getFileIDs(std::vector<uint8_t>& out);
+
238 bool getISOFileIDs(std::vector<uint8_t>& out);
+
239 bool getFileSettings(FileSettings& out, const uint8_t file_no);
+
240 bool getFileSettingsEV2(FileSettings& out, const uint8_t file_no, Ev2Context& ctx);
+
241 bool getFileSettingsEV2Full(FileSettings& out, const uint8_t file_no, Ev2Context& ctx);
+
242
+
243 bool changeFileSettings(const uint8_t file_no, const uint8_t file_option, const uint16_t access_rights);
+
244 bool changeFileSettingsEV2(const uint8_t file_no, const uint8_t file_option, const uint16_t access_rights,
+
245 Ev2Context& ctx);
+
246 bool changeFileSettingsEV2Full(const uint8_t file_no, const uint8_t file_option, const uint16_t access_rights,
+
247 Ev2Context& ctx);
+
248
+
249 bool formatPICC(const uint8_t* picc_master_key, const AuthMode mode = AuthMode::Auto);
+
250
+
251 bool createStdDataFile(const uint8_t file_no, const uint16_t iso_fid, const uint8_t comm_mode,
+
252 const uint16_t access_rights, const uint32_t file_size);
+
253
+
254 // DESFire Light: requires AppMasterKey authentication and CommMode.Full.
+
255 bool setConfigurationFileRenaming(const FileRename& first, const FileRename* second = nullptr);
+
256 bool setConfigurationFileRenamingEV2Full(const FileRename& first, const FileRename* second, Ev2Context& ctx);
+
257
+
265 bool deleteTransactionMACFileEV2Full(const uint8_t file_no, Ev2Context& ctx);
+
266
+
277 bool createTransactionMACFileEV2Full(const uint8_t file_no, const uint8_t comm_mode, const uint16_t access_rights,
+
278 const uint8_t tmac_key[16], const uint8_t tmac_key_ver, Ev2Context& ctx);
+
279 bool setConfigurationAppNameEV2Full(const uint8_t* df_name, uint8_t df_name_len, uint16_t iso_fid, Ev2Context& ctx);
+
280
+
289 bool readData(std::vector<uint8_t>& out, const uint8_t file_no, const uint32_t offset, const uint32_t length);
+
290 bool readDataLight(std::vector<uint8_t>& out, const uint8_t file_no, const uint32_t offset, const uint32_t length);
+
291 bool readDataLightEV2Full(std::vector<uint8_t>& out, const uint8_t file_no, const uint32_t offset,
+
292 const uint32_t length, Ev2Context& ctx);
+
293 bool readDataLightEV2(std::vector<uint8_t>& out, const uint8_t file_no, const uint32_t offset,
+
294 const uint32_t length, Ev2Context& ctx);
+
295 bool writeData(const uint8_t file_no, const uint32_t offset, const uint8_t* data, const uint32_t data_len);
+
296 bool writeDataLight(const uint8_t file_no, const uint32_t offset, const uint8_t* data, const uint32_t data_len);
+
297 bool writeDataLightEV2(const uint8_t file_no, const uint32_t offset, const uint8_t* data, const uint32_t data_len,
+
298 Ev2Context& ctx);
+
299 bool writeDataLightEV2Full(const uint8_t file_no, const uint32_t offset, const uint8_t* data,
+
300 const uint32_t data_len, Ev2Context& ctx);
+
301
+
302 bool authenticateDES(const uint8_t key_no, const uint8_t key[16]);
+
303 bool authenticateISO(const uint8_t key_no, const uint8_t key[16]);
+
304 bool authenticateAES(const uint8_t key_no, const uint8_t key[16]);
+
305 bool authenticateEV2First(const uint8_t key_no, const uint8_t key[16], Ev2Context& ctx);
+
306
+
307protected:
+
308 bool transceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len);
+
309};
+
+
310
+
311} // namespace desfire
+
312} // namespace mifare
+
313} // namespace a
+
314} // namespace nfc
+
315} // namespace m5
+
316#endif
+
ISO/IEC 7816-4 file system.
Definition file_system.hpp:81
+
Common interface layer for each chip of the NFC-A reader.
Definition nfc_layer_a.hpp:43
+
File system for MIFARE DESFire.
Definition desfire_file_system.hpp:215
+
bool createTransactionMACFileEV2Full(const uint8_t file_no, const uint8_t comm_mode, const uint16_t access_rights, const uint8_t tmac_key[16], const uint8_t tmac_key_ver, Ev2Context &ctx)
Create TransactionMAC file.
Definition desfire_file_system.cpp:1101
+
bool readData(std::vector< uint8_t > &out, const uint8_t file_no, const uint32_t offset, const uint32_t length)
Read data from DESFire file.
Definition desfire_file_system.cpp:567
+
bool deleteTransactionMACFileEV2Full(const uint8_t file_no, Ev2Context &ctx)
Delete TransactionMAC file (required for ISOReadBinary to work)
Definition desfire_file_system.cpp:1092
+
ISO Data Exchange Protocol.
Definition isoDEP.hpp:190
+
bool is_more(const uint8_t *rx, const uint16_t rx_len)
Is the received data still waiting for a response?
Definition desfire_file_system.hpp:200
+
constexpr file_no_t MAXIMUM_FILE_NO
Maximum file number.
Definition desfire_file_system.hpp:39
+
uint8_t file_no_t
Alias for file number.
Definition desfire_file_system.hpp:37
+
bool is_duplicate(const uint8_t *rx, const uint16_t rx_len)
Is duplicate error? (e.g. app/file already exists)
Definition desfire_file_system.hpp:206
+
constexpr uint8_t MAXIMUM_FILES
Files max.
Definition desfire_file_system.hpp:42
+
constexpr file_no_t MINIMUM_FILE_NO
Minimum file number.
Definition desfire_file_system.hpp:38
+
AuthMode
Authentication mode.
Definition desfire_file_system.hpp:129
+ + + +
bool is_successful(const uint8_t *rx, const uint16_t rx_len)
Is the status of the received data successful?
Definition desfire_file_system.hpp:194
+
uint8_t status_code(const uint8_t *rx, const uint16_t rx_len)
DESFire status code (0x91xx)
Definition desfire_file_system.hpp:188
+
File system base using isoDEP.
+
MIFARE definitions.
+
constexpr uint8_t DESFIRE_CC_FILE_NO
AN11004 default CC file number.
Definition mifare.hpp:196
+
constexpr uint8_t DESFIRE_NDEF_FILE_NO
AN11004 default NDEF file number.
Definition mifare.hpp:197
+
constexpr uint8_t DESFIRE_NDEF_AID[]
DESFire NDEF AID (3 bytes)
Definition mifare.hpp:198
+
NFC-A definitions.
+
NFC-B definitions.
+
Top level namespace of M5stack.
+
For MIFARE.
+
NFC related definitions.
+
NDEF related.
+
bool operator==(const PICC &a, const PICC &b)
Equal?
Definition nfca.hpp:523
+
bool operator!=(const PICC &a, const PICC &b)
Not equal?
Definition nfca.hpp:529
+
Session context for EV2 secure messaging.
Definition desfire_file_system.hpp:170
+
uint8_t ses_mac_key[16]
Session MAC key.
Definition desfire_file_system.hpp:174
+
uint16_t cmd_ctr
Command Counter.
Definition desfire_file_system.hpp:172
+
uint8_t ses_enc_key[16]
Session ENC key.
Definition desfire_file_system.hpp:173
+
uint8_t ti[4]
Transaction Identifier.
Definition desfire_file_system.hpp:171
+
File renaming parameters for DESFire Light SetConfiguration.
Definition desfire_file_system.hpp:160
+
uint16_t new_file_id
New ISO File ID (LSB first in command)
Definition desfire_file_system.hpp:163
+
uint8_t new_file_no
New file number.
Definition desfire_file_system.hpp:162
+
uint8_t old_file_no
Current file number.
Definition desfire_file_system.hpp:161
+
DESFire file settings (minimal fields for StdDataFile)
Definition desfire_file_system.hpp:84
+
Options for formatting DESFire as Type4 NDEF.
Definition desfire_file_system.hpp:139
+
uint8_t key_settings1
AN11004: Create/Delete requires auth, Get* requires auth.
Definition desfire_file_system.hpp:149
+
uint8_t aid[3]
NDEF Tag Application AID.
Definition desfire_file_system.hpp:141
+
const uint8_t * app_master_key
DES/3DES master key (App), or nullptr to skip auth.
Definition desfire_file_system.hpp:152
+
uint8_t comm_mode
Plain communication.
Definition desfire_file_system.hpp:147
+
uint16_t ndef_file_size
NDEF file size (bytes)
Definition desfire_file_system.hpp:146
+
const uint8_t * picc_master_key
DES/3DES master key (PICC), or nullptr to skip auth.
Definition desfire_file_system.hpp:151
+
AuthMode auth_mode
Authentication mode.
Definition desfire_file_system.hpp:153
+
uint16_t cc_file_size
CC file size (bytes)
Definition desfire_file_system.hpp:145
+
uint16_t access_rights
DESFire access rights.
Definition desfire_file_system.hpp:148
+
uint8_t key_settings2
ISO FID support(bit5) + NumKeys=1 + DES/3DES.
Definition desfire_file_system.hpp:150
+
m5::nfc::ndef::type4::CapabilityContainer cc
CC contents.
Definition desfire_file_system.hpp:140
+
uint8_t ndef_file_no
NDEF file number (DESFire)
Definition desfire_file_system.hpp:144
+
uint8_t cc_file_no
CC file number (DESFire)
Definition desfire_file_system.hpp:143
+
24bit Application ID
Definition desfire_file_system.hpp:95
+
Capability container for Type4.
Definition ndef.hpp:455
+
+
+ + + + diff --git a/dir_0d2add2fe7c6e6f1438f37401ca551f5.html b/dir_0d2add2fe7c6e6f1438f37401ca551f5.html new file mode 100644 index 0000000..a24f845 --- /dev/null +++ b/dir_0d2add2fe7c6e6f1438f37401ca551f5.html @@ -0,0 +1,125 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/v Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
v Directory Reference
+
+
+ + + + + + + + + + + +

+Files

 nfc_layer_v.cpp
 Common layer for NFC-V.
 
 nfc_layer_v.hpp
 Common layer for NFC-V.
 
 nfc_layer_v_ST25R3916.cpp
 ST25R3916 NFC-V adapter for common layer.
 
+
+
+ + + + diff --git a/dir_0d2add2fe7c6e6f1438f37401ca551f5.js b/dir_0d2add2fe7c6e6f1438f37401ca551f5.js new file mode 100644 index 0000000..19519d7 --- /dev/null +++ b/dir_0d2add2fe7c6e6f1438f37401ca551f5.js @@ -0,0 +1,6 @@ +var dir_0d2add2fe7c6e6f1438f37401ca551f5 = +[ + [ "nfc_layer_v.cpp", "nfc__layer__v_8cpp.html", null ], + [ "nfc_layer_v.hpp", "nfc__layer__v_8hpp.html", "nfc__layer__v_8hpp" ], + [ "nfc_layer_v_ST25R3916.cpp", "nfc__layer__v___s_t25_r3916_8cpp.html", "nfc__layer__v___s_t25_r3916_8cpp" ] +]; \ No newline at end of file diff --git a/dir_24143ed5721939fe8007a34cd5a268bc.html b/dir_24143ed5721939fe8007a34cd5a268bc.html new file mode 100644 index 0000000..4cceb77 --- /dev/null +++ b/dir_24143ed5721939fe8007a34cd5a268bc.html @@ -0,0 +1,122 @@ + + + + + + + +M5Unit-NFC: src/nfc/b Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
b Directory Reference
+
+
+ + + + + + + + +

+Files

 nfcb.cpp
 NFC-B definitions.
 
 nfcb.hpp
 NFC-B definitions.
 
+
+
+ + + + diff --git a/dir_24143ed5721939fe8007a34cd5a268bc.js b/dir_24143ed5721939fe8007a34cd5a268bc.js new file mode 100644 index 0000000..825f8f5 --- /dev/null +++ b/dir_24143ed5721939fe8007a34cd5a268bc.js @@ -0,0 +1,5 @@ +var dir_24143ed5721939fe8007a34cd5a268bc = +[ + [ "nfcb.cpp", "nfcb_8cpp.html", "nfcb_8cpp" ], + [ "nfcb.hpp", "nfcb_8hpp.html", "nfcb_8hpp" ] +]; \ No newline at end of file diff --git a/dir_4dde74367e7447d0836372dc73e55af6.html b/dir_4dde74367e7447d0836372dc73e55af6.html new file mode 100644 index 0000000..003ce6b --- /dev/null +++ b/dir_4dde74367e7447d0836372dc73e55af6.html @@ -0,0 +1,122 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/b Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
b Directory Reference
+
+
+ + + + + + + + +

+Files

 nfc_layer_b.hpp
 Common layer for NFC-B.
 
 nfc_layer_b_ST25R3916.cpp
 ST25R3916 NFC-B adapter for common layer.
 
+
+
+ + + + diff --git a/dir_4dde74367e7447d0836372dc73e55af6.js b/dir_4dde74367e7447d0836372dc73e55af6.js new file mode 100644 index 0000000..8c4d192 --- /dev/null +++ b/dir_4dde74367e7447d0836372dc73e55af6.js @@ -0,0 +1,5 @@ +var dir_4dde74367e7447d0836372dc73e55af6 = +[ + [ "nfc_layer_b.hpp", "nfc__layer__b_8hpp.html", "nfc__layer__b_8hpp" ], + [ "nfc_layer_b_ST25R3916.cpp", "nfc__layer__b___s_t25_r3916_8cpp.html", "nfc__layer__b___s_t25_r3916_8cpp" ] +]; \ No newline at end of file diff --git a/dir_59410e1461a4f8107dcbc9b19538c327.html b/dir_59410e1461a4f8107dcbc9b19538c327.html new file mode 100644 index 0000000..6f069f4 --- /dev/null +++ b/dir_59410e1461a4f8107dcbc9b19538c327.html @@ -0,0 +1,143 @@ + + + + + + + +M5Unit-NFC: src/nfc Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nfc Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Directories

 a
 
 apdu
 
 b
 
 crypto
 
 f
 
 isoDEP
 
 layer
 
 ndef
 
 v
 
+ + + + + + + +

+Files

 manufacturer_id.hpp
 Manufacturer ID (UID[0]) definitions for ISO/IEC 14443-3.
 
 nfc.hpp
 NFC definitions.
 
+
+
+ + + + diff --git a/dir_59410e1461a4f8107dcbc9b19538c327.js b/dir_59410e1461a4f8107dcbc9b19538c327.js new file mode 100644 index 0000000..1f2f776 --- /dev/null +++ b/dir_59410e1461a4f8107dcbc9b19538c327.js @@ -0,0 +1,14 @@ +var dir_59410e1461a4f8107dcbc9b19538c327 = +[ + [ "a", "dir_f85cf2582a8a5aef89f310f924dcae95.html", "dir_f85cf2582a8a5aef89f310f924dcae95" ], + [ "apdu", "dir_f9c0924a82716dee5be0d585bcd92f13.html", "dir_f9c0924a82716dee5be0d585bcd92f13" ], + [ "b", "dir_24143ed5721939fe8007a34cd5a268bc.html", "dir_24143ed5721939fe8007a34cd5a268bc" ], + [ "crypto", "dir_ffdbe2113e5d91887eca457e1e994882.html", "dir_ffdbe2113e5d91887eca457e1e994882" ], + [ "f", "dir_fc7f8db700d2762a065a46160197a2a0.html", "dir_fc7f8db700d2762a065a46160197a2a0" ], + [ "isoDEP", "dir_60cb28613bf31858290b8b55565cc38a.html", "dir_60cb28613bf31858290b8b55565cc38a" ], + [ "layer", "dir_ee0b121c304f64b8cbf8ff0b0f1683d3.html", "dir_ee0b121c304f64b8cbf8ff0b0f1683d3" ], + [ "ndef", "dir_bdd1b6f079e26f8d107e22f043ea2e04.html", "dir_bdd1b6f079e26f8d107e22f043ea2e04" ], + [ "v", "dir_a45b6e51b8ba6d371b7ba6037e423eac.html", "dir_a45b6e51b8ba6d371b7ba6037e423eac" ], + [ "manufacturer_id.hpp", "manufacturer__id_8hpp.html", "manufacturer__id_8hpp" ], + [ "nfc.hpp", "nfc_8hpp.html", "nfc_8hpp" ] +]; \ No newline at end of file diff --git a/dir_60cb28613bf31858290b8b55565cc38a.html b/dir_60cb28613bf31858290b8b55565cc38a.html new file mode 100644 index 0000000..e8483ef --- /dev/null +++ b/dir_60cb28613bf31858290b8b55565cc38a.html @@ -0,0 +1,140 @@ + + + + + + + +M5Unit-NFC: src/nfc/isoDEP Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
isoDEP Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 desfire_file_system.cpp
 File system base using isoDEP for MIFARE DESFire.
 
 desfire_file_system.hpp
 File system base using isoDEP for MIFARE DESFire.
 
 file_system.cpp
 File system base using isoDEP.
 
 file_system.hpp
 File system base using isoDEP.
 
 isoDEP.cpp
 ISO Data Exchange Protocol.
 
 isoDEP.hpp
 ISO Data Exchange Protocol.
 
 nfc_b_file_system.cpp
 File system base using isoDEP for NFC-B.
 
 nfc_b_file_system.hpp
 File system base using isoDEP for NFC-B.
 
+
+
+ + + + diff --git a/dir_60cb28613bf31858290b8b55565cc38a.js b/dir_60cb28613bf31858290b8b55565cc38a.js new file mode 100644 index 0000000..8826101 --- /dev/null +++ b/dir_60cb28613bf31858290b8b55565cc38a.js @@ -0,0 +1,11 @@ +var dir_60cb28613bf31858290b8b55565cc38a = +[ + [ "desfire_file_system.cpp", "desfire__file__system_8cpp.html", "desfire__file__system_8cpp" ], + [ "desfire_file_system.hpp", "desfire__file__system_8hpp.html", "desfire__file__system_8hpp" ], + [ "file_system.cpp", "file__system_8cpp.html", "file__system_8cpp" ], + [ "file_system.hpp", "file__system_8hpp.html", "file__system_8hpp" ], + [ "isoDEP.cpp", "iso_d_e_p_8cpp.html", "iso_d_e_p_8cpp" ], + [ "isoDEP.hpp", "iso_d_e_p_8hpp.html", "iso_d_e_p_8hpp" ], + [ "nfc_b_file_system.cpp", "nfc__b__file__system_8cpp.html", null ], + [ "nfc_b_file_system.hpp", "nfc__b__file__system_8hpp.html", "nfc__b__file__system_8hpp" ] +]; \ No newline at end of file diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..a53d1a9 --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,126 @@ + + + + + + + +M5Unit-NFC: src Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
src Directory Reference
+
+
+ + + + + + +

+Directories

 nfc
 
 unit
 
+ + + + +

+Files

 M5UnitUnifiedNFC.hpp
 Main header of M5Unit-NFC.
 
+
+
+ + + + diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.js b/dir_68267d1309a1af8e8297ef4c3efbcdba.js new file mode 100644 index 0000000..d1097a9 --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.js @@ -0,0 +1,6 @@ +var dir_68267d1309a1af8e8297ef4c3efbcdba = +[ + [ "nfc", "dir_59410e1461a4f8107dcbc9b19538c327.html", "dir_59410e1461a4f8107dcbc9b19538c327" ], + [ "unit", "dir_b9225a18e54a15d8544a67849bf5de50.html", "dir_b9225a18e54a15d8544a67849bf5de50" ], + [ "M5UnitUnifiedNFC.hpp", "_m5_unit_unified_n_f_c_8hpp.html", "_m5_unit_unified_n_f_c_8hpp" ] +]; \ No newline at end of file diff --git a/dir_a45b6e51b8ba6d371b7ba6037e423eac.html b/dir_a45b6e51b8ba6d371b7ba6037e423eac.html new file mode 100644 index 0000000..3befa66 --- /dev/null +++ b/dir_a45b6e51b8ba6d371b7ba6037e423eac.html @@ -0,0 +1,119 @@ + + + + + + + +M5Unit-NFC: src/nfc/v Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
v Directory Reference
+
+
+ + + + + +

+Files

 nfcv.hpp
 NFC-V definitions.
 
+
+
+ + + + diff --git a/dir_a45b6e51b8ba6d371b7ba6037e423eac.js b/dir_a45b6e51b8ba6d371b7ba6037e423eac.js new file mode 100644 index 0000000..d85c270 --- /dev/null +++ b/dir_a45b6e51b8ba6d371b7ba6037e423eac.js @@ -0,0 +1,4 @@ +var dir_a45b6e51b8ba6d371b7ba6037e423eac = +[ + [ "nfcv.hpp", "nfcv_8hpp.html", "nfcv_8hpp" ] +]; \ No newline at end of file diff --git a/dir_b9225a18e54a15d8544a67849bf5de50.html b/dir_b9225a18e54a15d8544a67849bf5de50.html new file mode 100644 index 0000000..d0c2a36 --- /dev/null +++ b/dir_b9225a18e54a15d8544a67849bf5de50.html @@ -0,0 +1,140 @@ + + + + + + + +M5Unit-NFC: src/unit Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
unit Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 ST25R3916_definition.hpp
 Definitions for ST25R3916.
 
 unit_ST25R3916.cpp
 ST25R3916 Unit for M5UnitUnified.
 
 unit_ST25R3916.hpp
 ST25R3916 Unit for M5UnitUnified.
 
 unit_ST25R3916_nfca.cpp
 class UnitST25R3916 implementation for NFC-A
 
 unit_ST25R3916_nfcb.cpp
 class UnitST25R3916 implementation for NFC-B
 
 unit_ST25R3916_nfcf.cpp
 class UnitST25R3916 implementation for NFC-F
 
 unit_ST25R3916_nfcv.cpp
 class UnitST25R3916 implementation for NFC-V
 
 unit_ST25R3916_util.cpp
 Utility API.
 
+
+
+ + + + diff --git a/dir_b9225a18e54a15d8544a67849bf5de50.js b/dir_b9225a18e54a15d8544a67849bf5de50.js new file mode 100644 index 0000000..3ed2e56 --- /dev/null +++ b/dir_b9225a18e54a15d8544a67849bf5de50.js @@ -0,0 +1,11 @@ +var dir_b9225a18e54a15d8544a67849bf5de50 = +[ + [ "ST25R3916_definition.hpp", "_s_t25_r3916__definition_8hpp.html", "_s_t25_r3916__definition_8hpp" ], + [ "unit_ST25R3916.cpp", "unit___s_t25_r3916_8cpp.html", null ], + [ "unit_ST25R3916.hpp", "unit___s_t25_r3916_8hpp.html", "unit___s_t25_r3916_8hpp" ], + [ "unit_ST25R3916_nfca.cpp", "unit___s_t25_r3916__nfca_8cpp.html", null ], + [ "unit_ST25R3916_nfcb.cpp", "unit___s_t25_r3916__nfcb_8cpp.html", null ], + [ "unit_ST25R3916_nfcf.cpp", "unit___s_t25_r3916__nfcf_8cpp.html", null ], + [ "unit_ST25R3916_nfcv.cpp", "unit___s_t25_r3916__nfcv_8cpp.html", null ], + [ "unit_ST25R3916_util.cpp", "unit___s_t25_r3916__util_8cpp.html", null ] +]; \ No newline at end of file diff --git a/dir_bdd1b6f079e26f8d107e22f043ea2e04.html b/dir_bdd1b6f079e26f8d107e22f043ea2e04.html new file mode 100644 index 0000000..8c549b1 --- /dev/null +++ b/dir_bdd1b6f079e26f8d107e22f043ea2e04.html @@ -0,0 +1,134 @@ + + + + + + + +M5Unit-NFC: src/nfc/ndef Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ndef Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Files

 ndef.cpp
 NDEF related.
 
 ndef.hpp
 NDEF related.
 
 ndef_record.cpp
 NDEF record.
 
 ndef_record.hpp
 NDEF record.
 
 ndef_tlv.cpp
 NDEF TLV.
 
 ndef_tlv.hpp
 NDEF TLV.
 
+
+
+ + + + diff --git a/dir_bdd1b6f079e26f8d107e22f043ea2e04.js b/dir_bdd1b6f079e26f8d107e22f043ea2e04.js new file mode 100644 index 0000000..f1dd01c --- /dev/null +++ b/dir_bdd1b6f079e26f8d107e22f043ea2e04.js @@ -0,0 +1,9 @@ +var dir_bdd1b6f079e26f8d107e22f043ea2e04 = +[ + [ "ndef.cpp", "ndef_8cpp.html", "ndef_8cpp" ], + [ "ndef.hpp", "ndef_8hpp.html", "ndef_8hpp" ], + [ "ndef_record.cpp", "ndef__record_8cpp.html", null ], + [ "ndef_record.hpp", "ndef__record_8hpp.html", "ndef__record_8hpp" ], + [ "ndef_tlv.cpp", "ndef__tlv_8cpp.html", null ], + [ "ndef_tlv.hpp", "ndef__tlv_8hpp.html", "ndef__tlv_8hpp" ] +]; \ No newline at end of file diff --git a/dir_daf7a45c10064dc7c67962aad70357d8.html b/dir_daf7a45c10064dc7c67962aad70357d8.html new file mode 100644 index 0000000..9136c6f --- /dev/null +++ b/dir_daf7a45c10064dc7c67962aad70357d8.html @@ -0,0 +1,134 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/a Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
a Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Files

 emulation_layer_a.cpp
 Emulation layer for NFC-A.
 
 emulation_layer_a.hpp
 Emulation layer for NFC-A.
 
 emulation_layer_a_ST25R3916.cpp
 ST25R3916 NFC-A emulation adapter for common layer.
 
 nfc_layer_a.cpp
 Common layer for NFC-A.
 
 nfc_layer_a.hpp
 Common layer for NFC-A.
 
 nfc_layer_a_ST25R3916.cpp
 ST25R3916 NFC-A adapter for common layer.
 
+
+
+ + + + diff --git a/dir_daf7a45c10064dc7c67962aad70357d8.js b/dir_daf7a45c10064dc7c67962aad70357d8.js new file mode 100644 index 0000000..ef3a199 --- /dev/null +++ b/dir_daf7a45c10064dc7c67962aad70357d8.js @@ -0,0 +1,9 @@ +var dir_daf7a45c10064dc7c67962aad70357d8 = +[ + [ "emulation_layer_a.cpp", "emulation__layer__a_8cpp.html", null ], + [ "emulation_layer_a.hpp", "emulation__layer__a_8hpp.html", "emulation__layer__a_8hpp" ], + [ "emulation_layer_a_ST25R3916.cpp", "emulation__layer__a___s_t25_r3916_8cpp.html", "emulation__layer__a___s_t25_r3916_8cpp" ], + [ "nfc_layer_a.cpp", "nfc__layer__a_8cpp.html", null ], + [ "nfc_layer_a.hpp", "nfc__layer__a_8hpp.html", "nfc__layer__a_8hpp" ], + [ "nfc_layer_a_ST25R3916.cpp", "nfc__layer__a___s_t25_r3916_8cpp.html", "nfc__layer__a___s_t25_r3916_8cpp" ] +]; \ No newline at end of file diff --git a/dir_e07bad691a8267b98ac2c5d5c5a70f9f.html b/dir_e07bad691a8267b98ac2c5d5c5a70f9f.html new file mode 100644 index 0000000..852a61b --- /dev/null +++ b/dir_e07bad691a8267b98ac2c5d5c5a70f9f.html @@ -0,0 +1,134 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/f Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
f Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Files

 emulation_layer_f.cpp
 Emulation layer for NFC-F.
 
 emulation_layer_f.hpp
 Emulation layer for NFC-F.
 
 emulation_layer_f_ST25R3916.cpp
 ST25R3916 NFC-F emulation adapter for common layer.
 
 nfc_layer_f.cpp
 Common layer for NFC-F.
 
 nfc_layer_f.hpp
 Common layer for NFC-F.
 
 nfc_layer_f_ST25R3916.cpp
 ST25R3916 NFC-F adapter for common layer.
 
+
+
+ + + + diff --git a/dir_e07bad691a8267b98ac2c5d5c5a70f9f.js b/dir_e07bad691a8267b98ac2c5d5c5a70f9f.js new file mode 100644 index 0000000..d38ce9f --- /dev/null +++ b/dir_e07bad691a8267b98ac2c5d5c5a70f9f.js @@ -0,0 +1,9 @@ +var dir_e07bad691a8267b98ac2c5d5c5a70f9f = +[ + [ "emulation_layer_f.cpp", "emulation__layer__f_8cpp.html", null ], + [ "emulation_layer_f.hpp", "emulation__layer__f_8hpp.html", "emulation__layer__f_8hpp" ], + [ "emulation_layer_f_ST25R3916.cpp", "emulation__layer__f___s_t25_r3916_8cpp.html", "emulation__layer__f___s_t25_r3916_8cpp" ], + [ "nfc_layer_f.cpp", "nfc__layer__f_8cpp.html", null ], + [ "nfc_layer_f.hpp", "nfc__layer__f_8hpp.html", "nfc__layer__f_8hpp" ], + [ "nfc_layer_f_ST25R3916.cpp", "nfc__layer__f___s_t25_r3916_8cpp.html", "nfc__layer__f___s_t25_r3916_8cpp" ] +]; \ No newline at end of file diff --git a/dir_ee0b121c304f64b8cbf8ff0b0f1683d3.html b/dir_ee0b121c304f64b8cbf8ff0b0f1683d3.html new file mode 100644 index 0000000..c30f0d3 --- /dev/null +++ b/dir_ee0b121c304f64b8cbf8ff0b0f1683d3.html @@ -0,0 +1,136 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
layer Directory Reference
+
+
+ + + + + + + + + + +

+Directories

 a
 
 b
 
 f
 
 v
 
+ + + + + + + + + + +

+Files

 ndef_layer.cpp
 Common layer for NDEF related.
 
 ndef_layer.hpp
 Common layer for NDEF related.
 
 nfc_layer.hpp
 Common layer for NFC related units.
 
+
+
+ + + + diff --git a/dir_ee0b121c304f64b8cbf8ff0b0f1683d3.js b/dir_ee0b121c304f64b8cbf8ff0b0f1683d3.js new file mode 100644 index 0000000..4e88c11 --- /dev/null +++ b/dir_ee0b121c304f64b8cbf8ff0b0f1683d3.js @@ -0,0 +1,10 @@ +var dir_ee0b121c304f64b8cbf8ff0b0f1683d3 = +[ + [ "a", "dir_daf7a45c10064dc7c67962aad70357d8.html", "dir_daf7a45c10064dc7c67962aad70357d8" ], + [ "b", "dir_4dde74367e7447d0836372dc73e55af6.html", "dir_4dde74367e7447d0836372dc73e55af6" ], + [ "f", "dir_e07bad691a8267b98ac2c5d5c5a70f9f.html", "dir_e07bad691a8267b98ac2c5d5c5a70f9f" ], + [ "v", "dir_0d2add2fe7c6e6f1438f37401ca551f5.html", "dir_0d2add2fe7c6e6f1438f37401ca551f5" ], + [ "ndef_layer.cpp", "ndef__layer_8cpp.html", null ], + [ "ndef_layer.hpp", "ndef__layer_8hpp.html", "ndef__layer_8hpp" ], + [ "nfc_layer.hpp", "nfc__layer_8hpp.html", "nfc__layer_8hpp" ] +]; \ No newline at end of file diff --git a/dir_f85cf2582a8a5aef89f310f924dcae95.html b/dir_f85cf2582a8a5aef89f310f924dcae95.html new file mode 100644 index 0000000..fbe27b5 --- /dev/null +++ b/dir_f85cf2582a8a5aef89f310f924dcae95.html @@ -0,0 +1,128 @@ + + + + + + + +M5Unit-NFC: src/nfc/a Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
a Directory Reference
+
+
+ + + + + + + + + + + + + + +

+Files

 mifare.cpp
 MIFARE definitions.
 
 mifare.hpp
 MIFARE definitions.
 
 nfca.cpp
 NFC-A definitions.
 
 nfca.hpp
 NFC-A definitions.
 
+
+
+ + + + diff --git a/dir_f85cf2582a8a5aef89f310f924dcae95.js b/dir_f85cf2582a8a5aef89f310f924dcae95.js new file mode 100644 index 0000000..139da5b --- /dev/null +++ b/dir_f85cf2582a8a5aef89f310f924dcae95.js @@ -0,0 +1,7 @@ +var dir_f85cf2582a8a5aef89f310f924dcae95 = +[ + [ "mifare.cpp", "mifare_8cpp.html", "mifare_8cpp" ], + [ "mifare.hpp", "mifare_8hpp.html", "mifare_8hpp" ], + [ "nfca.cpp", "nfca_8cpp.html", "nfca_8cpp" ], + [ "nfca.hpp", "nfca_8hpp.html", "nfca_8hpp" ] +]; \ No newline at end of file diff --git a/dir_f9c0924a82716dee5be0d585bcd92f13.html b/dir_f9c0924a82716dee5be0d585bcd92f13.html new file mode 100644 index 0000000..9c5eb2f --- /dev/null +++ b/dir_f9c0924a82716dee5be0d585bcd92f13.html @@ -0,0 +1,122 @@ + + + + + + + +M5Unit-NFC: src/nfc/apdu Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
apdu Directory Reference
+
+
+ + + + + + + + +

+Files

 apdu.cpp
 Application Protocol Data Unit (ISO/IEC 7816-4)
 
 apdu.hpp
 Application Protocol Data Unit (ISO/IEC 7816-4)
 
+
+
+ + + + diff --git a/dir_f9c0924a82716dee5be0d585bcd92f13.js b/dir_f9c0924a82716dee5be0d585bcd92f13.js new file mode 100644 index 0000000..2f27fdb --- /dev/null +++ b/dir_f9c0924a82716dee5be0d585bcd92f13.js @@ -0,0 +1,5 @@ +var dir_f9c0924a82716dee5be0d585bcd92f13 = +[ + [ "apdu.cpp", "apdu_8cpp.html", "apdu_8cpp" ], + [ "apdu.hpp", "apdu_8hpp.html", "apdu_8hpp" ] +]; \ No newline at end of file diff --git a/dir_fc7f8db700d2762a065a46160197a2a0.html b/dir_fc7f8db700d2762a065a46160197a2a0.html new file mode 100644 index 0000000..dbb178f --- /dev/null +++ b/dir_fc7f8db700d2762a065a46160197a2a0.html @@ -0,0 +1,122 @@ + + + + + + + +M5Unit-NFC: src/nfc/f Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
f Directory Reference
+
+
+ + + + + + + + +

+Files

 nfcf.cpp
 NFC-F definitions.
 
 nfcf.hpp
 NFC-F definitions.
 
+
+
+ + + + diff --git a/dir_fc7f8db700d2762a065a46160197a2a0.js b/dir_fc7f8db700d2762a065a46160197a2a0.js new file mode 100644 index 0000000..fe8abf0 --- /dev/null +++ b/dir_fc7f8db700d2762a065a46160197a2a0.js @@ -0,0 +1,5 @@ +var dir_fc7f8db700d2762a065a46160197a2a0 = +[ + [ "nfcf.cpp", "nfcf_8cpp.html", "nfcf_8cpp" ], + [ "nfcf.hpp", "nfcf_8hpp.html", "nfcf_8hpp" ] +]; \ No newline at end of file diff --git a/dir_ffdbe2113e5d91887eca457e1e994882.html b/dir_ffdbe2113e5d91887eca457e1e994882.html new file mode 100644 index 0000000..1418c21 --- /dev/null +++ b/dir_ffdbe2113e5d91887eca457e1e994882.html @@ -0,0 +1,128 @@ + + + + + + + +M5Unit-NFC: src/nfc/crypto Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
crypto Directory Reference
+
+
+ + + + + + + + + + + + + + +

+Files

 aes.cpp
 AES/CMAC helpers.
 
 aes.hpp
 AES/CMAC helpers.
 
 mifare_classic_crypto1.hpp
 Crypto1 for MIFARE Classic.
 
 secure_zero.hpp
 Secure memory wipe helpers.
 
+
+
+ + + + diff --git a/dir_ffdbe2113e5d91887eca457e1e994882.js b/dir_ffdbe2113e5d91887eca457e1e994882.js new file mode 100644 index 0000000..aef22b9 --- /dev/null +++ b/dir_ffdbe2113e5d91887eca457e1e994882.js @@ -0,0 +1,7 @@ +var dir_ffdbe2113e5d91887eca457e1e994882 = +[ + [ "aes.cpp", "aes_8cpp.html", "aes_8cpp" ], + [ "aes.hpp", "aes_8hpp.html", "aes_8hpp" ], + [ "mifare_classic_crypto1.hpp", "mifare__classic__crypto1_8hpp.html", "mifare__classic__crypto1_8hpp" ], + [ "secure_zero.hpp", "secure__zero_8hpp.html", null ] +]; \ No newline at end of file diff --git a/doc.svg b/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docd.svg b/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 0000000..209912c --- /dev/null +++ b/doxygen.css @@ -0,0 +1,2244 @@ +/* The standard CSS for doxygen 1.11.0*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--fragment-copy-ok-color: #2EC82E; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +/** special sections */ +--warning-color-bg: #f8d1cc; +--warning-color-hl: #b61825; +--warning-color-text: #75070f; +--note-color-bg: #faf3d8; +--note-color-hl: #f3a600; +--note-color-text: #5f4204; +--todo-color-bg: #e4f3ff; +--todo-color-hl: #1879C4; +--todo-color-text: #274a5c; +--test-color-bg: #e8e8ff; +--test-color-hl: #3939C4; +--test-color-text: #1a1a5c; +--deprecated-color-bg: #ecf0f3; +--deprecated-color-hl: #5b6269; +--deprecated-color-text: #43454a; +--bug-color-bg: #e4dafd; +--bug-color-hl: #5b2bdd; +--bug-color-text: #2a0d72; +--invariant-color-bg: #d8f1e3; +--invariant-color-hl: #44b86f; +--invariant-color-text: #265532; +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: #090D16; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--fragment-copy-ok-color: #0EA80E; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +/** special sections */ +--warning-color-bg: #2e1917; +--warning-color-hl: #ad2617; +--warning-color-text: #f5b1aa; +--note-color-bg: #3b2e04; +--note-color-hl: #f1b602; +--note-color-text: #ceb670; +--todo-color-bg: #163750; +--todo-color-hl: #1982D2; +--todo-color-text: #dcf0fa; +--test-color-bg: #121258; +--test-color-hl: #4242cf; +--test-color-text: #c0c0da; +--deprecated-color-bg: #2e323b; +--deprecated-color-hl: #738396; +--deprecated-color-text: #abb0bd; +--bug-color-bg: #2a2536; +--bug-color-hl: #7661b3; +--bug-color-text: #ae9ed6; +--invariant-color-bg: #303a35; +--invariant-color-hl: #76ce96; +--invariant-color-text: #cceed5; +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: none; + background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); +} + +a:hover > span.arrow { + text-decoration: none; + background : var(--nav-background-color); +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul.check { + list-style:none; + text-indent: -16px; + padding-left: 38px; +} +li.unchecked:before { + content: "\2610\A0"; +} +li.checked:before { + content: "\2611\A0"; +} + +ol { + text-indent: 0px; +} + +ul { + text-indent: 0px; + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; + overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid var(--fragment-border-color); + border-radius: 4px; + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); +} + +pre.fragment { + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: var(--font-family-monospace); +} + +.clipboard { + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; + overflow: auto; + fill: var(--fragment-foreground-color); + justify-content: center; + align-items: center; + cursor: pointer; +} + +.clipboard.success { + border: 1px solid var(--fragment-foreground-color); + border-radius: 4px; +} + +.fragment:hover .clipboard, .clipboard.success { + opacity: .28; +} + +.clipboard:hover, .clipboard.success { + opacity: 1 !important; +} + +.clipboard:active:not([class~=success]) svg { + transform: scale(.91); +} + +.clipboard.success svg { + fill: var(--fragment-copy-ok-color); +} + +.clipboard.success { + border-color: var(--fragment-copy-ok-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; +} + +.paramname { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; +} + +.paramname em { + color: var(--memdef-param-name-color); + font-style: normal; + margin-right: 1px; +} + +.paramname .paramdefval { + font-family: var(--font-family-monospace); +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* + +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention, dl.important { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +*/ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.important, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention, dl.important { + background: var(--warning-color-bg); + border-left: 8px solid var(--warning-color-hl); + color: var(--warning-color-text); +} + +dl.warning dt, dl.attention dt, dl.important dt { + color: var(--warning-color-hl); +} + +dl.note, dl.remark { + background: var(--note-color-bg); + border-left: 8px solid var(--note-color-hl); + color: var(--note-color-text); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-hl); +} + +dl.todo { + background: var(--todo-color-bg); + border-left: 8px solid var(--todo-color-hl); + color: var(--todo-color-text); +} + +dl.todo dt { + color: var(--todo-color-hl); +} + +dl.test { + background: var(--test-color-bg); + border-left: 8px solid var(--test-color-hl); + color: var(--test-color-text); +} + +dl.test dt { + color: var(--test-color-hl); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.bug { + background: var(--bug-color-bg); + border-left: 8px solid var(--bug-color-hl); + color: var(--bug-color-text); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.deprecated { + background: var(--deprecated-color-bg); + border-left: 8px solid var(--deprecated-color-hl); + color: var(--deprecated-color-text); +} + +dl.deprecated dt a { + color: var(--deprecated-color-hl) !important; +} + +dl.note dd, dl.warning dd, dl.pre dd, dl.post dd, +dl.remark dd, dl.attention dd, dl.important dd, dl.invariant dd, +dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color-bg); + border-left: 8px solid var(--invariant-color-hl); + color: var(--invariant-color-text); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-hl); +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doxygen.svg b/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen_crawl.html b/doxygen_crawl.html new file mode 100644 index 0000000..673c016 --- /dev/null +++ b/doxygen_crawl.html @@ -0,0 +1,2054 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 0000000..b05f4c8 --- /dev/null +++ b/dynsections.js @@ -0,0 +1,198 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function toggleVisibility(linkObj) { + return dynsection.toggleVisibility(linkObj); +} + +let dynsection = { + + // helper function + updateStripes : function() { + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); + }, + + toggleVisibility : function(linkObj) { + const base = $(linkObj).attr('id'); + const summary = $('#'+base+'-summary'); + const content = $('#'+base+'-content'); + const trigger = $('#'+base+'-trigger'); + const src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; + }, + + toggleLevel : function(level) { + $('table.directory tr').each(function() { + const l = this.id.split('_').length-1; + const i = $('#img'+this.id.substring(3)); + const a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + const id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = $(this).attr('data-start'); + const end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + const line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); + }, +}; +/* @license-end */ diff --git a/emulation__layer__a_8cpp.html b/emulation__layer__a_8cpp.html new file mode 100644 index 0000000..96373d2 --- /dev/null +++ b/emulation__layer__a_8cpp.html @@ -0,0 +1,129 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/a/emulation_layer_a.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
emulation_layer_a.cpp File Reference
+
+
+ +

Emulation layer for NFC-A. +More...

+
#include "emulation_layer_a.hpp"
+#include "nfc/a/nfca.hpp"
+#include <M5Utility.hpp>
+
+ + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
+

Detailed Description

+

Emulation layer for NFC-A.

+
+
+ + + + diff --git a/emulation__layer__a_8hpp.html b/emulation__layer__a_8hpp.html new file mode 100644 index 0000000..e8d9e9a --- /dev/null +++ b/emulation__layer__a_8hpp.html @@ -0,0 +1,146 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/a/emulation_layer_a.hpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
emulation_layer_a.hpp File Reference
+
+
+ +

Emulation layer for NFC-A. +More...

+
#include "nfc/a/nfca.hpp"
+#include <vector>
+#include <memory>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  m5::nfc::EmulationLayerA
 Common interface layer for each chip of the NFC-A emulation. More...
 
+ + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
+

Detailed Description

+

Emulation layer for NFC-A.

+
Note
Glossary
    +
  • PCD: Proximity Coupling Device (reader)
  • +
  • PICC: Proximity Integrated Circuit Card (card/tag, target device)
  • +
  • IDLE/READY/ACTIVE/HALT: ISO14443-3 state names
  • +
+
+
+In NFC Forum (NDEF) context, a PICC is often called a "Tag"
+
+
+ + + + diff --git a/emulation__layer__a_8hpp.js b/emulation__layer__a_8hpp.js new file mode 100644 index 0000000..2203f45 --- /dev/null +++ b/emulation__layer__a_8hpp.js @@ -0,0 +1,4 @@ +var emulation__layer__a_8hpp = +[ + [ "m5::nfc::EmulationLayerA", "classm5_1_1nfc_1_1_emulation_layer_a.html", "classm5_1_1nfc_1_1_emulation_layer_a" ] +]; \ No newline at end of file diff --git a/emulation__layer__a_8hpp_source.html b/emulation__layer__a_8hpp_source.html new file mode 100644 index 0000000..a320c81 --- /dev/null +++ b/emulation__layer__a_8hpp_source.html @@ -0,0 +1,230 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/a/emulation_layer_a.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
emulation_layer_a.hpp
+
+
+Go to the documentation of this file.
1/*
+
2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
+
3 *
+
4 * SPDX-License-Identifier: MIT
+
5 */
+
17#ifndef M5_UNIT_NFC_NFC_LAYER_A_EMULATION_LAYER_A_HPP
+
18#define M5_UNIT_NFC_NFC_LAYER_A_EMULATION_LAYER_A_HPP
+
19
+
20#include "nfc/a/nfca.hpp"
+
21#include <vector>
+
22#include <memory>
+
23
+
24namespace m5 {
+
25
+
26namespace unit {
+
27class UnitST25R3916;
+
28class CapST25R3916;
+
29} // namespace unit
+
30
+
31namespace nfc {
+
32
+
+ +
38public:
+
43 enum class State { None, Off, Idle, Ready, Active, Halt };
+
44
+
45 struct Adapter;
+ + +
50
+
+
52 inline State state() const
+
53 {
+
54 return _state;
+
55 }
+
+
+
57 inline const m5::nfc::a::PICC& emulatePICC() const
+
58 {
+
59 return _picc;
+
60 }
+
+
+
62 inline uint32_t expiredTime() const
+
63 {
+
64 return _expired_ms;
+
65 }
+
+
+
67 void setExpiredTime(const uint32_t ms)
+
68 {
+
69 _expired_ms = ms;
+
70 }
+
+
71
+
73 bool begin(const m5::nfc::a::PICC& picc, uint8_t* ptr, const uint32_t size);
+
75 bool end();
+
77 void update();
+
78
+
79 virtual State receive_callback(const uint8_t* rx, const uint32_t rx_len);
+
80
+
81protected:
+
82 void update_expired();
+
83
+
84private:
+
85 void update_off();
+
86 void update_idle();
+
87 void update_ready();
+
88 void update_active();
+
89 void update_halt();
+
90
+
91protected:
+
92 uint8_t* _memory{};
+
93 uint32_t _memory_size{};
+
94
+
95private:
+
96 State _state{}, _prev{};
+
97 uint32_t _expired_ms{60 * 1000u};
+
98 unsigned int _expired_at{};
+
99 std::unique_ptr<Adapter> _impl;
+
100 m5::nfc::a::PICC _picc{};
+
101};
+
+
102
+
104// Impl for units
+
105struct EmulationLayerA::Adapter {
+
106 virtual ~Adapter() = default;
+
107
+
108 virtual bool start_emulation(const m5::nfc::a::PICC& picc) = 0;
+
109 virtual bool stop_emulation() = 0;
+
110 virtual bool transmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms) = 0;
+
111
+
112 virtual EmulationLayerA::State update_off() = 0;
+
113 virtual EmulationLayerA::State update_idle() = 0;
+
114 virtual EmulationLayerA::State update_ready() = 0;
+
115 virtual EmulationLayerA::State update_active() = 0;
+
116 virtual EmulationLayerA::State update_halt() = 0;
+
117};
+
119
+
120} // namespace nfc
+
121} // namespace m5
+
122#endif
+
Common interface layer for each chip of the NFC-A emulation.
Definition emulation_layer_a.hpp:37
+
bool end()
End NFC-A emulation.
Definition emulation_layer_a.cpp:60
+
const m5::nfc::a::PICC & emulatePICC() const
Gets the emulated PICC information.
Definition emulation_layer_a.hpp:57
+
State
Emulation state for NFC-A.
Definition emulation_layer_a.hpp:43
+
bool begin(const m5::nfc::a::PICC &picc, uint8_t *ptr, const uint32_t size)
Begin NFC-A emulation.
Definition emulation_layer_a.cpp:31
+
void setExpiredTime(const uint32_t ms)
Sets the expiration time (ms)
Definition emulation_layer_a.hpp:67
+
uint32_t expiredTime() const
Gets the expiration time (ms)
Definition emulation_layer_a.hpp:62
+
void update()
Update emulation state machine.
Definition emulation_layer_a.cpp:69
+
State state() const
Gets the current emulation state.
Definition emulation_layer_a.hpp:52
+
ST25R3916 unit in CapCC1101 (SPI)
Definition unit_ST25R3916.hpp:2058
+
ST25R3916 Unit.
Definition unit_ST25R3916.hpp:38
+
Top level namespace of M5stack.
+
NFC related definitions.
+
Unit-related namespace.
+
NFC-A definitions.
+
PICC for NFC-A.
Definition nfca.hpp:335
+
+
+ + + + diff --git a/emulation__layer__a___s_t25_r3916_8cpp.html b/emulation__layer__a___s_t25_r3916_8cpp.html new file mode 100644 index 0000000..f506527 --- /dev/null +++ b/emulation__layer__a___s_t25_r3916_8cpp.html @@ -0,0 +1,137 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/a/emulation_layer_a_ST25R3916.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
emulation_layer_a_ST25R3916.cpp File Reference
+
+
+ +

ST25R3916 NFC-A emulation adapter for common layer. +More...

+
#include "nfc/layer/a/emulation_layer_a.hpp"
+#include "nfc/layer/ndef_layer.hpp"
+#include "unit/unit_ST25R3916.hpp"
+#include <M5Utility.hpp>
+#include <thread>
+
+ + + +

+Classes

struct  m5::nfc::ListenerST25R3916ForA
 
+ + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
+

Detailed Description

+

ST25R3916 NFC-A emulation adapter for common layer.

+
+
+ + + + diff --git a/emulation__layer__a___s_t25_r3916_8cpp.js b/emulation__layer__a___s_t25_r3916_8cpp.js new file mode 100644 index 0000000..bbcd039 --- /dev/null +++ b/emulation__layer__a___s_t25_r3916_8cpp.js @@ -0,0 +1,4 @@ +var emulation__layer__a___s_t25_r3916_8cpp = +[ + [ "m5::nfc::ListenerST25R3916ForA", "structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a.html", "structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a" ] +]; \ No newline at end of file diff --git a/emulation__layer__f_8cpp.html b/emulation__layer__f_8cpp.html new file mode 100644 index 0000000..8fdd52c --- /dev/null +++ b/emulation__layer__f_8cpp.html @@ -0,0 +1,129 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/f/emulation_layer_f.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
emulation_layer_f.cpp File Reference
+
+
+ +

Emulation layer for NFC-F. +More...

+
#include "emulation_layer_f.hpp"
+#include "nfc/a/nfca.hpp"
+#include <M5Utility.hpp>
+
+ + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
+

Detailed Description

+

Emulation layer for NFC-F.

+
+
+ + + + diff --git a/emulation__layer__f_8hpp.html b/emulation__layer__f_8hpp.html new file mode 100644 index 0000000..fa6be5c --- /dev/null +++ b/emulation__layer__f_8hpp.html @@ -0,0 +1,146 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/f/emulation_layer_f.hpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
emulation_layer_f.hpp File Reference
+
+
+ +

Emulation layer for NFC-F. +More...

+
#include "nfc/f/nfcf.hpp"
+#include <vector>
+#include <memory>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  m5::nfc::EmulationLayerF
 Common interface layer for each chip of the NFC-F emulation. More...
 
+ + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
+

Detailed Description

+

Emulation layer for NFC-F.

+
Note
Glossary
    +
  • PCD: Proximity Coupling Device (reader)
  • +
  • PICC: Proximity Integrated Circuit Card (card/tag, target device)
  • +
  • IDLE/READY/ACTIVE/HALT: ISO14443-3 state names
  • +
+
+
+In NFC Forum (NDEF) context, a PICC is often called a "Tag"
+
+
+ + + + diff --git a/emulation__layer__f_8hpp.js b/emulation__layer__f_8hpp.js new file mode 100644 index 0000000..83d15da --- /dev/null +++ b/emulation__layer__f_8hpp.js @@ -0,0 +1,4 @@ +var emulation__layer__f_8hpp = +[ + [ "m5::nfc::EmulationLayerF", "classm5_1_1nfc_1_1_emulation_layer_f.html", "classm5_1_1nfc_1_1_emulation_layer_f" ] +]; \ No newline at end of file diff --git a/emulation__layer__f_8hpp_source.html b/emulation__layer__f_8hpp_source.html new file mode 100644 index 0000000..1252f8d --- /dev/null +++ b/emulation__layer__f_8hpp_source.html @@ -0,0 +1,226 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/f/emulation_layer_f.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
emulation_layer_f.hpp
+
+
+Go to the documentation of this file.
1/*
+
2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
+
3 *
+
4 * SPDX-License-Identifier: MIT
+
5 */
+
17#ifndef M5_UNIT_NFC_NFC_LAYER_F_EMULATION_LAYER_F_HPP
+
18#define M5_UNIT_NFC_NFC_LAYER_F_EMULATION_LAYER_F_HPP
+
19
+
20#include "nfc/f/nfcf.hpp"
+
21#include <vector>
+
22#include <memory>
+
23
+
24namespace m5 {
+
25
+
26namespace unit {
+
27class UnitST25R3916;
+
28class CapST25R3916;
+
29} // namespace unit
+
30
+
31namespace nfc {
+
32
+
+ +
38public:
+
43 enum class State { None, Off, Communicated, Selected };
+
44
+
45 struct Adapter;
+ + +
50
+
+
52 inline State state() const
+
53 {
+
54 return _state;
+
55 }
+
+
+
57 inline const m5::nfc::f::PICC& emulatePICC() const
+
58 {
+
59 return _picc;
+
60 }
+
+
+
62 inline uint32_t expiredTime() const
+
63 {
+
64 return _expired_ms;
+
65 }
+
+
+
67 void setExpiredTime(const uint32_t ms)
+
68 {
+
69 _expired_ms = ms;
+
70 }
+
+
71
+
73 bool begin(const m5::nfc::f::PICC& picc, uint8_t* ptr, const uint32_t size);
+
75 bool end();
+
77 void update();
+
78
+
79 virtual State receive_callback(const State s, const uint8_t* rx, const uint32_t rx_len);
+
80
+
81protected:
+
82 void update_expired();
+
83
+
84private:
+
85 void update_off();
+
86 void update_communicated();
+
87 void update_selected();
+
88
+
89protected:
+
90 uint8_t* _memory{};
+
91 uint32_t _memory_size{};
+
92
+
93private:
+
94 State _state{}, _prev{};
+
95 uint32_t _expired_ms{60 * 1000u};
+
96 unsigned int _expired_at{};
+
97 std::unique_ptr<Adapter> _impl;
+
98 m5::nfc::f::PICC _picc{};
+
99};
+
+
100
+
102// Impl for units
+
103struct EmulationLayerF::Adapter {
+
104 virtual ~Adapter() = default;
+
105
+
106 virtual bool start_emulation(const m5::nfc::f::PICC& picc) = 0;
+
107 virtual bool stop_emulation() = 0;
+
108 virtual bool transmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms) = 0;
+
109
+
110 virtual EmulationLayerF::State update_off() = 0;
+
111 virtual EmulationLayerF::State update_communicated() = 0;
+
112 virtual EmulationLayerF::State update_selected() = 0;
+
113};
+
115
+
116} // namespace nfc
+
117} // namespace m5
+
118#endif
+
Common interface layer for each chip of the NFC-F emulation.
Definition emulation_layer_f.hpp:37
+
void setExpiredTime(const uint32_t ms)
Sets the expiration time (ms)
Definition emulation_layer_f.hpp:67
+
State state() const
Gets the current emulation state.
Definition emulation_layer_f.hpp:52
+
const m5::nfc::f::PICC & emulatePICC() const
Gets the emulated PICC information.
Definition emulation_layer_f.hpp:57
+
State
Emulation state for NFC-F.
Definition emulation_layer_f.hpp:43
+
bool end()
End NFC-F emulation.
Definition emulation_layer_f.cpp:101
+
bool begin(const m5::nfc::f::PICC &picc, uint8_t *ptr, const uint32_t size)
Begin NFC-F emulation.
Definition emulation_layer_f.cpp:68
+
uint32_t expiredTime() const
Gets the expiration time (ms)
Definition emulation_layer_f.hpp:62
+
void update()
Update emulation state machine.
Definition emulation_layer_f.cpp:110
+
ST25R3916 unit in CapCC1101 (SPI)
Definition unit_ST25R3916.hpp:2058
+
ST25R3916 Unit.
Definition unit_ST25R3916.hpp:38
+
Top level namespace of M5stack.
+
NFC related definitions.
+
Unit-related namespace.
+
NFC-F definitions.
+
PICC information for NFC-F.
Definition nfcf.hpp:381
+
+
+ + + + diff --git a/emulation__layer__f___s_t25_r3916_8cpp.html b/emulation__layer__f___s_t25_r3916_8cpp.html new file mode 100644 index 0000000..2264566 --- /dev/null +++ b/emulation__layer__f___s_t25_r3916_8cpp.html @@ -0,0 +1,139 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/f/emulation_layer_f_ST25R3916.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
emulation_layer_f_ST25R3916.cpp File Reference
+
+
+ +

ST25R3916 NFC-F emulation adapter for common layer. +More...

+
#include "nfc/layer/f/emulation_layer_f.hpp"
+#include "nfc/layer/ndef_layer.hpp"
+#include "unit/unit_ST25R3916.hpp"
+#include <M5Utility.hpp>
+#include <thread>
+#include <numeric>
+#include <algorithm>
+
+ + + +

+Classes

struct  m5::nfc::ListenerST25R3916ForF
 
+ + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
+

Detailed Description

+

ST25R3916 NFC-F emulation adapter for common layer.

+
+
+ + + + diff --git a/emulation__layer__f___s_t25_r3916_8cpp.js b/emulation__layer__f___s_t25_r3916_8cpp.js new file mode 100644 index 0000000..d31dfa5 --- /dev/null +++ b/emulation__layer__f___s_t25_r3916_8cpp.js @@ -0,0 +1,4 @@ +var emulation__layer__f___s_t25_r3916_8cpp = +[ + [ "m5::nfc::ListenerST25R3916ForF", "structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f.html", "structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f" ] +]; \ No newline at end of file diff --git a/file__system_8cpp.html b/file__system_8cpp.html new file mode 100644 index 0000000..a51d945 --- /dev/null +++ b/file__system_8cpp.html @@ -0,0 +1,177 @@ + + + + + + + +M5Unit-NFC: src/nfc/isoDEP/file_system.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
file_system.cpp File Reference
+
+
+ +

File system base using isoDEP. +More...

+
#include "file_system.hpp"
+#include "nfc/isoDEP/isoDEP.hpp"
+#include "nfc/apdu/apdu.hpp"
+#include <M5Utility.hpp>
+#include <algorithm>
+#include <limits>
+
+ + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
+ + + + +

+Functions

bool m5::nfc::parseFCI (FCP &fcp, const uint8_t *data, const uint32_t len)
 Parse FCI (tag 0x6F) and fill FCP.
 
+

Detailed Description

+

File system base using isoDEP.

+

Function Documentation

+ +

◆ parseFCI()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::parseFCI (FCP & fcp,
const uint8_t * data,
const uint32_t len )
+
+ +

Parse FCI (tag 0x6F) and fill FCP.

+
Parameters
+ + + + +
dataFCI data
lenFCI length
[out]fcpOutput FCP
+
+
+
Returns
True if FCI parsed, false otherwise
+ +
+
+
+
+ + + + diff --git a/file__system_8cpp.js b/file__system_8cpp.js new file mode 100644 index 0000000..67b1801 --- /dev/null +++ b/file__system_8cpp.js @@ -0,0 +1,4 @@ +var file__system_8cpp = +[ + [ "parseFCI", "file__system_8cpp.html#a6f37bce98efe295da49502e417d2375a", null ] +]; \ No newline at end of file diff --git a/file__system_8hpp.html b/file__system_8hpp.html new file mode 100644 index 0000000..a8c4798 --- /dev/null +++ b/file__system_8hpp.html @@ -0,0 +1,185 @@ + + + + + + + +M5Unit-NFC: src/nfc/isoDEP/file_system.hpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
file_system.hpp File Reference
+
+
+ +

File system base using isoDEP. +More...

+
#include "isoDEP.hpp"
+#include "nfc/apdu/apdu.hpp"
+
+

Go to the source code of this file.

+ + + + + + + + +

+Classes

struct  m5::nfc::FCP
 File Control Parameters. More...
 
class  m5::nfc::FileSystem
 ISO/IEC 7816-4 file system. More...
 
+ + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
+ + + + +

+Functions

bool m5::nfc::parseFCI (FCP &fcp, const uint8_t *data, const uint32_t len)
 Parse FCI (tag 0x6F) and fill FCP.
 
+

Detailed Description

+

File system base using isoDEP.

+

Function Documentation

+ +

◆ parseFCI()

+ +
+
+ + + + + + + + + + + + + + + + +
bool m5::nfc::parseFCI (FCP & fcp,
const uint8_t * data,
const uint32_t len )
+
+ +

Parse FCI (tag 0x6F) and fill FCP.

+
Parameters
+ + + + +
dataFCI data
lenFCI length
[out]fcpOutput FCP
+
+
+
Returns
True if FCI parsed, false otherwise
+ +
+
+
+
+ + + + diff --git a/file__system_8hpp.js b/file__system_8hpp.js new file mode 100644 index 0000000..2bf09c7 --- /dev/null +++ b/file__system_8hpp.js @@ -0,0 +1,6 @@ +var file__system_8hpp = +[ + [ "m5::nfc::FCP", "structm5_1_1nfc_1_1_f_c_p.html", "structm5_1_1nfc_1_1_f_c_p" ], + [ "m5::nfc::FileSystem", "classm5_1_1nfc_1_1_file_system.html", "classm5_1_1nfc_1_1_file_system" ], + [ "parseFCI", "file__system_8hpp.html#a6f37bce98efe295da49502e417d2375a", null ] +]; \ No newline at end of file diff --git a/file__system_8hpp_source.html b/file__system_8hpp_source.html new file mode 100644 index 0000000..9c6acec --- /dev/null +++ b/file__system_8hpp_source.html @@ -0,0 +1,273 @@ + + + + + + + +M5Unit-NFC: src/nfc/isoDEP/file_system.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
file_system.hpp
+
+
+Go to the documentation of this file.
1/*
+
2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
+
3 *
+
4 * SPDX-License-Identifier: MIT
+
5 */
+
10#ifndef M5_UNIT_UNIFIED_NFC_NFC_ISODEP_FILE_SYSTEM_HPP
+
11#define M5_UNIT_UNIFIED_NFC_NFC_ISODEP_FILE_SYSTEM_HPP
+
12#include "isoDEP.hpp"
+
13#include "nfc/apdu/apdu.hpp"
+
14
+
15namespace m5 {
+
16namespace nfc {
+
17namespace isodep {
+
18class IsoDEP;
+
19}
+
20
+
+
26struct FCP {
+
27 uint16_t fid{};
+
28 uint16_t file_size{};
+
29 uint8_t file_descriptor{0x01};
+
30 uint8_t file_size_tag{0x80};
+
31
+
+
36 std::vector<uint8_t> to_tlv() const
+
37 {
+
38 std::vector<uint8_t> fcp;
+
39 fcp.reserve(16);
+
40
+
41 // File Descriptor (0x82)
+
42 fcp.push_back(0x82);
+
43 fcp.push_back(1);
+
44 fcp.push_back(file_descriptor);
+
45
+
46 // File ID (0x83)
+
47 fcp.push_back(0x83);
+
48 fcp.push_back(2);
+
49 fcp.push_back(static_cast<uint8_t>((fid >> 8) & 0xFF));
+
50 fcp.push_back(static_cast<uint8_t>(fid & 0xFF));
+
51
+
52 // File Size (tag: file_size_tag)
+
53 fcp.push_back(file_size_tag);
+
54 fcp.push_back(2);
+
55 fcp.push_back(static_cast<uint8_t>((file_size >> 8) & 0xFF));
+
56 fcp.push_back(static_cast<uint8_t>(file_size & 0xFF));
+
57
+
58 //
+
59 std::vector<uint8_t> out;
+
60 out.reserve(fcp.size() + 2);
+
61 out.push_back(0x62);
+
62 out.push_back(static_cast<uint8_t>(fcp.size()));
+
63 out.insert(out.end(), fcp.begin(), fcp.end());
+
64 return out;
+
65 }
+
+
66};
+
+
67
+
75bool parseFCI(FCP& fcp, const uint8_t* data, const uint32_t len);
+
76
+
+ +
82public:
+
83 explicit FileSystem(m5::nfc::isodep::IsoDEP& isoDEP) : _isoDEP{isoDEP}
+
84 {
+
85 }
+
86 virtual ~FileSystem() = default;
+
87
+
90
+
97 bool createFile(const uint8_t* fcp, const uint16_t fcp_len);
+
103 bool createFile(const FCP& fcp);
+
110 bool createFile(const uint16_t fid, const uint16_t file_size);
+
111
+ +
122 const m5::nfc::apdu::SelectResponse res, const uint8_t* param, const uint8_t param_len);
+
123
+
131 bool selectByFileId(const uint16_t fid,
+
132 const m5::nfc::apdu::SelectResponse res = m5::nfc::apdu::SelectResponse::FCI,
+
133 const m5::nfc::apdu::SelectOccurrence occ = m5::nfc::apdu::SelectOccurrence::FirstOrOnly);
+
140 bool selectFileIdAuto(const uint16_t fid,
+
141 const m5::nfc::apdu::SelectOccurrence occ = m5::nfc::apdu::SelectOccurrence::FirstOrOnly);
+
150 bool selectByDfName(const uint8_t* aid, const uint8_t aid_len,
+
151 const m5::nfc::apdu::SelectResponse res = m5::nfc::apdu::SelectResponse::FCI,
+
152 const m5::nfc::apdu::SelectOccurrence occ = m5::nfc::apdu::SelectOccurrence::FirstOrOnly);
+
160 bool selectDfNameAuto(const uint8_t* aid, const uint8_t aid_len,
+
161 const m5::nfc::apdu::SelectOccurrence occ = m5::nfc::apdu::SelectOccurrence::FirstOrOnly);
+
171 bool selectByPath(const uint8_t* path, const uint8_t path_len, const bool from_mf = true,
+
172 const m5::nfc::apdu::SelectResponse res = m5::nfc::apdu::SelectResponse::FCI,
+
173 const m5::nfc::apdu::SelectOccurrence occ = m5::nfc::apdu::SelectOccurrence::FirstOrOnly);
+
180 bool selectParent(const m5::nfc::apdu::SelectResponse res = m5::nfc::apdu::SelectResponse::FCI,
+
181 const m5::nfc::apdu::SelectOccurrence occ = m5::nfc::apdu::SelectOccurrence::FirstOrOnly);
+
+
186 inline bool selectMasterFile()
+
187 {
+
188 return selectByFileId(m5::nfc::apdu::master_file_id);
+
189 }
+
+
190
+
198 bool verify(const uint8_t* password, const uint16_t pass_len, const uint8_t param2);
+
+
205 inline bool verifyGlobal(const uint8_t* password, const uint16_t pass_len)
+
206 {
+
207 return verify(password, pass_len, 0x80);
+
208 }
+
+
+
215 inline bool verifySpecific(const uint8_t* password, const uint16_t pass_len)
+
216 {
+
217 return verify(password, pass_len, 0x00);
+
218 }
+
+
226 bool readBinary(std::vector<uint8_t>& out, const uint16_t offset, const uint16_t le /* 1..256 recommended */);
+
234 bool updateBinary(const uint16_t offset, const uint8_t* data, const uint16_t data_len);
+
236
+
+
241 inline const std::vector<uint8_t>& lastSelectData() const
+
242 {
+
243 return _last_select_fci;
+
244 }
+
+
245
+
246protected:
+ +
248 std::vector<uint8_t> _last_select_fci{};
+
249};
+
+
250
+
251} // namespace nfc
+
252} // namespace m5
+
253#endif
+
Application Protocol Data Unit (ISO/IEC 7816-4)
+
SelectBy
Select control for SELECT_FILE.
Definition apdu.hpp:122
+
SelectResponse
Response for SELECT_FILE.
Definition apdu.hpp:148
+
SelectOccurrence
Select occurrence for SELECT_FILE.
Definition apdu.hpp:137
+
ISO/IEC 7816-4 file system.
Definition file_system.hpp:81
+
bool selectFileIdAuto(const uint16_t fid, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
SELECT by File ID with auto response fallback (None->FCI->FCP)
Definition file_system.cpp:180
+
bool verifySpecific(const uint8_t *password, const uint16_t pass_len)
VERIFY specific reference data.
Definition file_system.hpp:215
+
bool selectDfNameAuto(const uint8_t *aid, const uint8_t aid_len, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
SELECT by DF Name with auto response fallback (FCI->None->FCP)
Definition file_system.cpp:194
+
bool selectMasterFile()
SELECT MF (Master File)
Definition file_system.hpp:186
+
const std::vector< uint8_t > & lastSelectData() const
Last SELECT response data (SW excluded)
Definition file_system.hpp:241
+
bool updateBinary(const uint16_t offset, const uint8_t *data, const uint16_t data_len)
UPDATE BINARY.
Definition file_system.cpp:296
+
bool verify(const uint8_t *password, const uint16_t pass_len, const uint8_t param2)
VERIFY (generic)
Definition file_system.cpp:238
+
bool selectByFileId(const uint16_t fid, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
SELECT by File ID with explicit response type.
Definition file_system.cpp:170
+
bool selectParent(const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
SELECT parent DF.
Definition file_system.cpp:209
+
bool createFile(const uint8_t *fcp, const uint16_t fcp_len)
CREATE FILE.
Definition file_system.cpp:87
+
bool verifyGlobal(const uint8_t *password, const uint16_t pass_len)
VERIFY global reference data.
Definition file_system.hpp:205
+
bool selectByPath(const uint8_t *path, const uint8_t path_len, const bool from_mf=true, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
SELECT by path (MF or current DF)
Definition file_system.cpp:202
+
bool selectFile(const m5::nfc::apdu::SelectBy by, const m5::nfc::apdu::SelectOccurrence occ, const m5::nfc::apdu::SelectResponse res, const uint8_t *param, const uint8_t param_len)
SELECT FILE (generic)
Definition file_system.cpp:121
+
bool selectByDfName(const uint8_t *aid, const uint8_t aid_len, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
SELECT by DF Name with explicit response type.
Definition file_system.cpp:188
+
bool readBinary(std::vector< uint8_t > &out, const uint16_t offset, const uint16_t le)
READ BINARY.
Definition file_system.cpp:260
+
ISO Data Exchange Protocol.
Definition isoDEP.hpp:190
+
ISO Data Exchange Protocol.
+
For ISO-DEP.
+
Top level namespace of M5stack.
+
NFC related definitions.
+
File Control Parameters.
Definition file_system.hpp:26
+
std::vector< uint8_t > to_tlv() const
Build FCP TLV (tag 0x62)
Definition file_system.hpp:36
+
uint16_t fid
File ID (FID)
Definition file_system.hpp:27
+
uint16_t file_size
File size in bytes.
Definition file_system.hpp:28
+
uint8_t file_descriptor
File descriptor (default: transparent EF)
Definition file_system.hpp:29
+
uint8_t file_size_tag
File size TLV tag (default: 0x80)
Definition file_system.hpp:30
+
+
+ + + + diff --git a/files.html b/files.html new file mode 100644 index 0000000..7114ff4 --- /dev/null +++ b/files.html @@ -0,0 +1,191 @@ + + + + + + + +M5Unit-NFC: File List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 12345]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  src
  nfc
  a
 mifare.cppMIFARE definitions
 mifare.hppMIFARE definitions
 nfca.cppNFC-A definitions
 nfca.hppNFC-A definitions
  apdu
 apdu.cppApplication Protocol Data Unit (ISO/IEC 7816-4)
 apdu.hppApplication Protocol Data Unit (ISO/IEC 7816-4)
  b
 nfcb.cppNFC-B definitions
 nfcb.hppNFC-B definitions
  crypto
 aes.cppAES/CMAC helpers
 aes.hppAES/CMAC helpers
 mifare_classic_crypto1.hppCrypto1 for MIFARE Classic
 secure_zero.hppSecure memory wipe helpers
  f
 nfcf.cppNFC-F definitions
 nfcf.hppNFC-F definitions
  isoDEP
 desfire_file_system.cppFile system base using isoDEP for MIFARE DESFire
 desfire_file_system.hppFile system base using isoDEP for MIFARE DESFire
 file_system.cppFile system base using isoDEP
 file_system.hppFile system base using isoDEP
 isoDEP.cppISO Data Exchange Protocol
 isoDEP.hppISO Data Exchange Protocol
 nfc_b_file_system.cppFile system base using isoDEP for NFC-B
 nfc_b_file_system.hppFile system base using isoDEP for NFC-B
  layer
  a
 emulation_layer_a.cppEmulation layer for NFC-A
 emulation_layer_a.hppEmulation layer for NFC-A
 emulation_layer_a_ST25R3916.cppST25R3916 NFC-A emulation adapter for common layer
 nfc_layer_a.cppCommon layer for NFC-A
 nfc_layer_a.hppCommon layer for NFC-A
 nfc_layer_a_ST25R3916.cppST25R3916 NFC-A adapter for common layer
  b
 nfc_layer_b.hppCommon layer for NFC-B
 nfc_layer_b_ST25R3916.cppST25R3916 NFC-B adapter for common layer
  f
 emulation_layer_f.cppEmulation layer for NFC-F
 emulation_layer_f.hppEmulation layer for NFC-F
 emulation_layer_f_ST25R3916.cppST25R3916 NFC-F emulation adapter for common layer
 nfc_layer_f.cppCommon layer for NFC-F
 nfc_layer_f.hppCommon layer for NFC-F
 nfc_layer_f_ST25R3916.cppST25R3916 NFC-F adapter for common layer
  v
 nfc_layer_v.cppCommon layer for NFC-V
 nfc_layer_v.hppCommon layer for NFC-V
 nfc_layer_v_ST25R3916.cppST25R3916 NFC-V adapter for common layer
 ndef_layer.cppCommon layer for NDEF related
 ndef_layer.hppCommon layer for NDEF related
 nfc_layer.hppCommon layer for NFC related units
  ndef
 ndef.cppNDEF related
 ndef.hppNDEF related
 ndef_record.cppNDEF record
 ndef_record.hppNDEF record
 ndef_tlv.cppNDEF TLV
 ndef_tlv.hppNDEF TLV
  v
 nfcv.hppNFC-V definitions
 manufacturer_id.hppManufacturer ID (UID[0]) definitions for ISO/IEC 14443-3
 nfc.hppNFC definitions
  unit
 ST25R3916_definition.hppDefinitions for ST25R3916
 unit_ST25R3916.cppST25R3916 Unit for M5UnitUnified
 unit_ST25R3916.hppST25R3916 Unit for M5UnitUnified
 unit_ST25R3916_nfca.cppClass UnitST25R3916 implementation for NFC-A
 unit_ST25R3916_nfcb.cppClass UnitST25R3916 implementation for NFC-B
 unit_ST25R3916_nfcf.cppClass UnitST25R3916 implementation for NFC-F
 unit_ST25R3916_nfcv.cppClass UnitST25R3916 implementation for NFC-V
 unit_ST25R3916_util.cppUtility API
 M5UnitUnifiedNFC.hppMain header of M5Unit-NFC
+
+
+
+ + + + diff --git a/files_dup.js b/files_dup.js new file mode 100644 index 0000000..c3b39c4 --- /dev/null +++ b/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ] +]; \ No newline at end of file diff --git a/folderclosed.svg b/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/folderclosedd.svg b/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/folderopen.svg b/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/folderopend.svg b/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/functions.html b/functions.html new file mode 100644 index 0000000..064dbfa --- /dev/null +++ b/functions.html @@ -0,0 +1,124 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+
+
+ + + + diff --git a/functions_b.html b/functions_b.html new file mode 100644 index 0000000..a3df0c6 --- /dev/null +++ b/functions_b.html @@ -0,0 +1,115 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- b -

+
+
+ + + + diff --git a/functions_c.html b/functions_c.html new file mode 100644 index 0000000..cc6be45 --- /dev/null +++ b/functions_c.html @@ -0,0 +1,132 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- c -

+
+
+ + + + diff --git a/functions_d.html b/functions_d.html new file mode 100644 index 0000000..53b7a24 --- /dev/null +++ b/functions_d.html @@ -0,0 +1,120 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- d -

+
+
+ + + + diff --git a/functions_dup.js b/functions_dup.js new file mode 100644 index 0000000..574c1b9 --- /dev/null +++ b/functions_dup.js @@ -0,0 +1,23 @@ +var functions_dup = +[ + [ "a", "functions.html", null ], + [ "b", "functions_b.html", null ], + [ "c", "functions_c.html", null ], + [ "d", "functions_d.html", null ], + [ "e", "functions_e.html", null ], + [ "f", "functions_f.html", null ], + [ "h", "functions_h.html", null ], + [ "i", "functions_i.html", null ], + [ "k", "functions_k.html", null ], + [ "l", "functions_l.html", null ], + [ "m", "functions_m.html", null ], + [ "n", "functions_n.html", null ], + [ "o", "functions_o.html", null ], + [ "p", "functions_p.html", null ], + [ "r", "functions_r.html", null ], + [ "s", "functions_s.html", null ], + [ "t", "functions_t.html", null ], + [ "u", "functions_u.html", null ], + [ "v", "functions_v.html", null ], + [ "w", "functions_w.html", null ] +]; \ No newline at end of file diff --git a/functions_e.html b/functions_e.html new file mode 100644 index 0000000..002c67b --- /dev/null +++ b/functions_e.html @@ -0,0 +1,123 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- e -

+
+
+ + + + diff --git a/functions_enum.html b/functions_enum.html new file mode 100644 index 0000000..4e9347e --- /dev/null +++ b/functions_enum.html @@ -0,0 +1,113 @@ + + + + + + + +M5Unit-NFC: Class Members - Enumerations + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented enums with links to the class documentation for each member:
+
+
+ + + + diff --git a/functions_f.html b/functions_f.html new file mode 100644 index 0000000..9079115 --- /dev/null +++ b/functions_f.html @@ -0,0 +1,120 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- f -

+
+
+ + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 0000000..c1f2695 --- /dev/null +++ b/functions_func.html @@ -0,0 +1,114 @@ + + + + + + + +M5Unit-NFC: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- a -

+
+
+ + + + diff --git a/functions_func.js b/functions_func.js new file mode 100644 index 0000000..a88ce49 --- /dev/null +++ b/functions_func.js @@ -0,0 +1,20 @@ +var functions_func = +[ + [ "a", "functions_func.html", null ], + [ "b", "functions_func_b.html", null ], + [ "c", "functions_func_c.html", null ], + [ "d", "functions_func_d.html", null ], + [ "e", "functions_func_e.html", null ], + [ "f", "functions_func_f.html", null ], + [ "i", "functions_func_i.html", null ], + [ "l", "functions_func_l.html", null ], + [ "m", "functions_func_m.html", null ], + [ "n", "functions_func_n.html", null ], + [ "p", "functions_func_p.html", null ], + [ "r", "functions_func_r.html", null ], + [ "s", "functions_func_s.html", null ], + [ "t", "functions_func_t.html", null ], + [ "u", "functions_func_u.html", null ], + [ "v", "functions_func_v.html", null ], + [ "w", "functions_func_w.html", null ] +]; \ No newline at end of file diff --git a/functions_func_b.html b/functions_func_b.html new file mode 100644 index 0000000..ad13b1f --- /dev/null +++ b/functions_func_b.html @@ -0,0 +1,113 @@ + + + + + + + +M5Unit-NFC: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- b -

+
+
+ + + + diff --git a/functions_func_c.html b/functions_func_c.html new file mode 100644 index 0000000..2e5731f --- /dev/null +++ b/functions_func_c.html @@ -0,0 +1,124 @@ + + + + + + + +M5Unit-NFC: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- c -

+
+
+ + + + diff --git a/functions_func_d.html b/functions_func_d.html new file mode 100644 index 0000000..2013791 --- /dev/null +++ b/functions_func_d.html @@ -0,0 +1,118 @@ + + + + + + + +M5Unit-NFC: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- d -

+
+
+ + + + diff --git a/functions_func_e.html b/functions_func_e.html new file mode 100644 index 0000000..b71eda2 --- /dev/null +++ b/functions_func_e.html @@ -0,0 +1,121 @@ + + + + + + + +M5Unit-NFC: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- e -

+
+
+ + + + diff --git a/functions_func_f.html b/functions_func_f.html new file mode 100644 index 0000000..6db502b --- /dev/null +++ b/functions_func_f.html @@ -0,0 +1,115 @@ + + + + + + + +M5Unit-NFC: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- f -

+
+
+ + + + diff --git a/functions_func_i.html b/functions_func_i.html new file mode 100644 index 0000000..7985df2 --- /dev/null +++ b/functions_func_i.html @@ -0,0 +1,139 @@ + + + + + + + +M5Unit-NFC: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- i -

+
+
+ + + + diff --git a/functions_func_l.html b/functions_func_l.html new file mode 100644 index 0000000..3bca602 --- /dev/null +++ b/functions_func_l.html @@ -0,0 +1,115 @@ + + + + + + + +M5Unit-NFC: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- l -

+
+
+ + + + diff --git a/functions_func_m.html b/functions_func_m.html new file mode 100644 index 0000000..09535b8 --- /dev/null +++ b/functions_func_m.html @@ -0,0 +1,134 @@ + + + + + + + +M5Unit-NFC: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- m -

+
+
+ + + + diff --git a/functions_func_n.html b/functions_func_n.html new file mode 100644 index 0000000..514d13a --- /dev/null +++ b/functions_func_n.html @@ -0,0 +1,140 @@ + + + + + + + +M5Unit-NFC: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- n -

+
+
+ + + + diff --git a/functions_func_p.html b/functions_func_p.html new file mode 100644 index 0000000..4cc99ac --- /dev/null +++ b/functions_func_p.html @@ -0,0 +1,122 @@ + + + + + + + +M5Unit-NFC: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- p -

+
+
+ + + + diff --git a/functions_func_r.html b/functions_func_r.html new file mode 100644 index 0000000..c8d552a --- /dev/null +++ b/functions_func_r.html @@ -0,0 +1,228 @@ + + + + + + + +M5Unit-NFC: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- r -

+
+
+ + + + diff --git a/functions_func_s.html b/functions_func_s.html new file mode 100644 index 0000000..5a69146 --- /dev/null +++ b/functions_func_s.html @@ -0,0 +1,132 @@ + + + + + + + +M5Unit-NFC: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- s -

+
+
+ + + + diff --git a/functions_func_t.html b/functions_func_t.html new file mode 100644 index 0000000..a50eead --- /dev/null +++ b/functions_func_t.html @@ -0,0 +1,121 @@ + + + + + + + +M5Unit-NFC: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- t -

+
+
+ + + + diff --git a/functions_func_u.html b/functions_func_u.html new file mode 100644 index 0000000..885f675 --- /dev/null +++ b/functions_func_u.html @@ -0,0 +1,120 @@ + + + + + + + +M5Unit-NFC: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- u -

+
+
+ + + + diff --git a/functions_func_v.html b/functions_func_v.html new file mode 100644 index 0000000..8db4ec0 --- /dev/null +++ b/functions_func_v.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- v -

+
+
+ + + + diff --git a/functions_func_w.html b/functions_func_w.html new file mode 100644 index 0000000..028f167 --- /dev/null +++ b/functions_func_w.html @@ -0,0 +1,193 @@ + + + + + + + +M5Unit-NFC: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- w -

+
+
+ + + + diff --git a/functions_h.html b/functions_h.html new file mode 100644 index 0000000..d247c28 --- /dev/null +++ b/functions_h.html @@ -0,0 +1,115 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- h -

+
+
+ + + + diff --git a/functions_i.html b/functions_i.html new file mode 100644 index 0000000..298fe3b --- /dev/null +++ b/functions_i.html @@ -0,0 +1,143 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- i -

+
+
+ + + + diff --git a/functions_k.html b/functions_k.html new file mode 100644 index 0000000..1c5de2a --- /dev/null +++ b/functions_k.html @@ -0,0 +1,114 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- k -

+
+
+ + + + diff --git a/functions_l.html b/functions_l.html new file mode 100644 index 0000000..af3ead0 --- /dev/null +++ b/functions_l.html @@ -0,0 +1,116 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- l -

+
+
+ + + + diff --git a/functions_m.html b/functions_m.html new file mode 100644 index 0000000..a057e2c --- /dev/null +++ b/functions_m.html @@ -0,0 +1,140 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- m -

+
+
+ + + + diff --git a/functions_n.html b/functions_n.html new file mode 100644 index 0000000..691ad54 --- /dev/null +++ b/functions_n.html @@ -0,0 +1,146 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- n -

+
+
+ + + + diff --git a/functions_o.html b/functions_o.html new file mode 100644 index 0000000..ae39476 --- /dev/null +++ b/functions_o.html @@ -0,0 +1,114 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- o -

+
+
+ + + + diff --git a/functions_p.html b/functions_p.html new file mode 100644 index 0000000..27cc10d --- /dev/null +++ b/functions_p.html @@ -0,0 +1,126 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- p -

+
+
+ + + + diff --git a/functions_r.html b/functions_r.html new file mode 100644 index 0000000..d13204a --- /dev/null +++ b/functions_r.html @@ -0,0 +1,231 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- r -

+
+
+ + + + diff --git a/functions_rela.html b/functions_rela.html new file mode 100644 index 0000000..dcaa94e --- /dev/null +++ b/functions_rela.html @@ -0,0 +1,111 @@ + + + + + + + +M5Unit-NFC: Class Members - Related Symbols + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented related symbols with links to the class documentation for each member:
+
+
+ + + + diff --git a/functions_s.html b/functions_s.html new file mode 100644 index 0000000..1e0e628 --- /dev/null +++ b/functions_s.html @@ -0,0 +1,142 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- s -

+
+
+ + + + diff --git a/functions_t.html b/functions_t.html new file mode 100644 index 0000000..cb548ba --- /dev/null +++ b/functions_t.html @@ -0,0 +1,132 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- t -

+
+
+ + + + diff --git a/functions_u.html b/functions_u.html new file mode 100644 index 0000000..fc7ade2 --- /dev/null +++ b/functions_u.html @@ -0,0 +1,122 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- u -

+
+
+ + + + diff --git a/functions_v.html b/functions_v.html new file mode 100644 index 0000000..200d8d3 --- /dev/null +++ b/functions_v.html @@ -0,0 +1,119 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- v -

+
+
+ + + + diff --git a/functions_vars.html b/functions_vars.html new file mode 100644 index 0000000..043128a --- /dev/null +++ b/functions_vars.html @@ -0,0 +1,272 @@ + + + + + + + +M5Unit-NFC: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented variables with links to the class documentation for each member:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- h -

+ + +

- i -

+ + +

- k -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+ + +

- w -

+
+
+ + + + diff --git a/functions_w.html b/functions_w.html new file mode 100644 index 0000000..eb748a3 --- /dev/null +++ b/functions_w.html @@ -0,0 +1,195 @@ + + + + + + + +M5Unit-NFC: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- w -

+
+
+ + + + diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 0000000..54797a3 --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,170 @@ + + + + + + + +M5Unit-NFC: Class Hierarchy + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 CEmulationLayerA::Adapter
 Cm5::nfc::ListenerST25R3916ForA
 CEmulationLayerF::Adapter
 Cm5::nfc::ListenerST25R3916ForF
 CNFCLayerA::Adapter
 Cm5::nfc::PollerST25R3916ForA
 CNFCLayerB::Adapter
 Cm5::nfc::AdapterST25R3916ForB
 CNFCLayerF::Adapter
 Cm5::nfc::AdapterST25R3916ForF
 CNFCLayerV::Adapter
 Cm5::nfc::AdapterST25R3916ForV
 Cm5::nfc::a::ATSAnswer to request
 Cm5::nfc::ndef::AttributeNDEF Record attribute (1st byte)
 Cm5::nfc::ndef::type3::AttributeBlockFor Type 3 tag (T3T)
 Cm5::nfc::f::block_tBlock list element
 Cm5::nfc::ndef::type2::CapabilityContainerCapability container for Type2
 Cm5::nfc::ndef::type4::CapabilityContainerCapability container for Type4
 Cm5::nfc::ndef::type5::CapabilityContainerCapability container for Type5
 CComponent
 Cm5::unit::UnitST25R3916ST25R3916 Unit
 Cm5::unit::CapST25R3916ST25R3916 unit in CapCC1101 (SPI)
 Cm5::nfc::isodep::config_tISO-DEP configuration
 Cm5::unit::UnitST25R3916::config_tSettings for begin
 Cm5::nfc::a::mifare::desfire::desfire_aid_t24bit Application ID
 Cm5::nfc::EmulationLayerACommon interface layer for each chip of the NFC-A emulation
 Cm5::nfc::EmulationLayerFCommon interface layer for each chip of the NFC-F emulation
 Cm5::nfc::a::mifare::desfire::Ev2ContextSession context for EV2 secure messaging
 Cm5::nfc::FCPFile Control Parameters
 Cm5::nfc::ndef::type4::FileControlTLVFile control TLV
 Cm5::nfc::a::mifare::desfire::FileRenameFile renaming parameters for DESFire Light SetConfiguration
 Cm5::nfc::a::mifare::desfire::FileSettingsDESFire file settings (minimal fields for StdDataFile)
 Cm5::nfc::FileSystemISO/IEC 7816-4 file system
 Cm5::nfc::NFCBFileSystemFile system base using isoDEP for NFC-B
 Cm5::nfc::a::mifare::desfire::DESFireFileSystemFile system for MIFARE DESFire
 Cm5::nfc::isodep::IsoDEPISO Data Exchange Protocol
 CMLFSR48
 Cm5::nfc::a::mifare::classic::Crypto1Crypto1 for MIFARE Classic
 Cm5::nfc::a::mifare::desfire::NdefFormatOptionsOptions for formatting DESFire as Type4 NDEF
 Cm5::nfc::ndef::NDEFLayerNDEF operations layer
 Cm5::nfc::NFCLayerInterfaceCommon interface for NFC layer
 Cm5::nfc::NFCLayerACommon interface layer for each chip of the NFC-A reader
 Cm5::nfc::NFCLayerBCommon interface layer for each chip of the NFC-B reader
 Cm5::nfc::NFCLayerFCommon interface layer for each chip of the NFC-F reader
 Cm5::nfc::NFCLayerVCommon interface layer for each chip of the NFC-V reader
 Cm5::nfc::a::PICCPICC for NFC-A
 Cm5::nfc::b::PICCPICC for NFC-B
 Cm5::nfc::f::PICCPICC information for NFC-F
 Cm5::nfc::v::PICCPICC for NFC-V
 Cm5::nfc::ndef::RecordNDEF Record
 Cm5::nfc::f::REGSubtract Register Block Data
 Cm5::nfc::isodep::RxInfoRX information
 Cm5::nfc::a::st25ta::SystemFileST25TA series system file
 Cm5::nfc::apdu::TLVTLV element
 Cm5::nfc::ndef::TLVNDEF TLV container
+
+
+
+ + + + diff --git a/hierarchy.js b/hierarchy.js new file mode 100644 index 0000000..b7b79ac --- /dev/null +++ b/hierarchy.js @@ -0,0 +1,69 @@ +var hierarchy = +[ + [ "EmulationLayerA::Adapter", null, [ + [ "m5::nfc::ListenerST25R3916ForA", "structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a.html", null ] + ] ], + [ "EmulationLayerF::Adapter", null, [ + [ "m5::nfc::ListenerST25R3916ForF", "structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f.html", null ] + ] ], + [ "NFCLayerA::Adapter", null, [ + [ "m5::nfc::PollerST25R3916ForA", "structm5_1_1nfc_1_1_poller_s_t25_r3916_for_a.html", null ] + ] ], + [ "NFCLayerB::Adapter", null, [ + [ "m5::nfc::AdapterST25R3916ForB", "structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_b.html", null ] + ] ], + [ "NFCLayerF::Adapter", null, [ + [ "m5::nfc::AdapterST25R3916ForF", "structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_f.html", null ] + ] ], + [ "NFCLayerV::Adapter", null, [ + [ "m5::nfc::AdapterST25R3916ForV", "structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_v.html", null ] + ] ], + [ "m5::nfc::a::ATS", "structm5_1_1nfc_1_1a_1_1_a_t_s.html", null ], + [ "m5::nfc::ndef::Attribute", "structm5_1_1nfc_1_1ndef_1_1_attribute.html", null ], + [ "m5::nfc::ndef::type3::AttributeBlock", "structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html", null ], + [ "m5::nfc::f::block_t", "structm5_1_1nfc_1_1f_1_1block__t.html", null ], + [ "m5::nfc::ndef::type2::CapabilityContainer", "structm5_1_1nfc_1_1ndef_1_1type2_1_1_capability_container.html", null ], + [ "m5::nfc::ndef::type4::CapabilityContainer", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.html", null ], + [ "m5::nfc::ndef::type5::CapabilityContainer", "structm5_1_1nfc_1_1ndef_1_1type5_1_1_capability_container.html", null ], + [ "Component", null, [ + [ "m5::unit::UnitST25R3916", "classm5_1_1unit_1_1_unit_s_t25_r3916.html", [ + [ "m5::unit::CapST25R3916", "classm5_1_1unit_1_1_cap_s_t25_r3916.html", null ] + ] ] + ] ], + [ "m5::nfc::isodep::config_t", "structm5_1_1nfc_1_1isodep_1_1config__t.html", null ], + [ "m5::unit::UnitST25R3916::config_t", "structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html", null ], + [ "m5::nfc::a::mifare::desfire::desfire_aid_t", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1desfire__aid__t.html", null ], + [ "m5::nfc::EmulationLayerA", "classm5_1_1nfc_1_1_emulation_layer_a.html", null ], + [ "m5::nfc::EmulationLayerF", "classm5_1_1nfc_1_1_emulation_layer_f.html", null ], + [ "m5::nfc::a::mifare::desfire::Ev2Context", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.html", null ], + [ "m5::nfc::FCP", "structm5_1_1nfc_1_1_f_c_p.html", null ], + [ "m5::nfc::ndef::type4::FileControlTLV", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html", null ], + [ "m5::nfc::a::mifare::desfire::FileRename", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename.html", null ], + [ "m5::nfc::a::mifare::desfire::FileSettings", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_settings.html", null ], + [ "m5::nfc::FileSystem", "classm5_1_1nfc_1_1_file_system.html", [ + [ "m5::nfc::NFCBFileSystem", "classm5_1_1nfc_1_1_n_f_c_b_file_system.html", null ], + [ "m5::nfc::a::mifare::desfire::DESFireFileSystem", "classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.html", null ] + ] ], + [ "m5::nfc::isodep::IsoDEP", "classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html", null ], + [ "MLFSR48", null, [ + [ "m5::nfc::a::mifare::classic::Crypto1", "classm5_1_1nfc_1_1a_1_1mifare_1_1classic_1_1_crypto1.html", null ] + ] ], + [ "m5::nfc::a::mifare::desfire::NdefFormatOptions", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html", null ], + [ "m5::nfc::ndef::NDEFLayer", "classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html", null ], + [ "m5::nfc::NFCLayerInterface", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html", [ + [ "m5::nfc::NFCLayerA", "classm5_1_1nfc_1_1_n_f_c_layer_a.html", null ], + [ "m5::nfc::NFCLayerB", "classm5_1_1nfc_1_1_n_f_c_layer_b.html", null ], + [ "m5::nfc::NFCLayerF", "classm5_1_1nfc_1_1_n_f_c_layer_f.html", null ], + [ "m5::nfc::NFCLayerV", "classm5_1_1nfc_1_1_n_f_c_layer_v.html", null ] + ] ], + [ "m5::nfc::a::PICC", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html", null ], + [ "m5::nfc::b::PICC", "structm5_1_1nfc_1_1b_1_1_p_i_c_c.html", null ], + [ "m5::nfc::f::PICC", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html", null ], + [ "m5::nfc::v::PICC", "structm5_1_1nfc_1_1v_1_1_p_i_c_c.html", null ], + [ "m5::nfc::ndef::Record", "classm5_1_1nfc_1_1ndef_1_1_record.html", null ], + [ "m5::nfc::f::REG", "unionm5_1_1nfc_1_1f_1_1_r_e_g.html", null ], + [ "m5::nfc::isodep::RxInfo", "structm5_1_1nfc_1_1isodep_1_1_rx_info.html", null ], + [ "m5::nfc::a::st25ta::SystemFile", "structm5_1_1nfc_1_1a_1_1st25ta_1_1_system_file.html", null ], + [ "m5::nfc::apdu::TLV", "structm5_1_1nfc_1_1apdu_1_1_t_l_v.html", null ], + [ "m5::nfc::ndef::TLV", "classm5_1_1nfc_1_1ndef_1_1_t_l_v.html", null ] +]; \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..9aac946 --- /dev/null +++ b/index.html @@ -0,0 +1,114 @@ + + + + + + + +M5Unit-NFC: M5Unit-NFC + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
M5Unit-NFC
+
+
+

Library for Unit-NFC using M5UnitUnified. Include NFC-x related definitions.

+
+ +
+
+ + + + diff --git a/iso_d_e_p_8cpp.html b/iso_d_e_p_8cpp.html new file mode 100644 index 0000000..9ee64b2 --- /dev/null +++ b/iso_d_e_p_8cpp.html @@ -0,0 +1,148 @@ + + + + + + + +M5Unit-NFC: src/nfc/isoDEP/isoDEP.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
isoDEP.cpp File Reference
+
+
+ +

ISO Data Exchange Protocol. +More...

+
#include "isoDEP.hpp"
+#include "nfc/layer/nfc_layer.hpp"
+#include "nfc/apdu/apdu.hpp"
+#include <M5Utility.hpp>
+#include <algorithm>
+#include <cstring>
+#include <limits>
+
+ + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
+ + + +

+Macros

+#define PRINT_ERROR(...)   /* Nop */
 
+ + + + +

+Functions

+uint32_t m5::nfc::isodep::fwi_to_ms (const uint8_t fwi, const float fc)
 Calculate waiting time(ms) by fwi and fc.
 
+

Detailed Description

+

ISO Data Exchange Protocol.

+
+
+ + + + diff --git a/iso_d_e_p_8cpp.js b/iso_d_e_p_8cpp.js new file mode 100644 index 0000000..90917e0 --- /dev/null +++ b/iso_d_e_p_8cpp.js @@ -0,0 +1,4 @@ +var iso_d_e_p_8cpp = +[ + [ "fwi_to_ms", "iso_d_e_p_8cpp.html#a9c9dd562bc432a87e23b1f8388e581d5", null ] +]; \ No newline at end of file diff --git a/iso_d_e_p_8hpp.html b/iso_d_e_p_8hpp.html new file mode 100644 index 0000000..26def1c --- /dev/null +++ b/iso_d_e_p_8hpp.html @@ -0,0 +1,210 @@ + + + + + + + +M5Unit-NFC: src/nfc/isoDEP/isoDEP.hpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
isoDEP.hpp File Reference
+
+
+ +

ISO Data Exchange Protocol. +More...

+
#include <cstdint>
+#include <vector>
+
+

Go to the source code of this file.

+ + + + + + + + + + + +

+Classes

struct  m5::nfc::isodep::config_t
 ISO-DEP configuration. More...
 
struct  m5::nfc::isodep::RxInfo
 RX information. More...
 
class  m5::nfc::isodep::IsoDEP
 ISO Data Exchange Protocol. More...
 
+ + + + + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
namespace  isodep
 For ISO-DEP.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+uint32_t m5::nfc::isodep::fwi_to_ms (const uint8_t fwi, const float fc)
 Calculate waiting time(ms) by fwi and fc.
 
+bool m5::nfc::isodep::detail::is_i_block (uint8_t pcb)
 
+bool m5::nfc::isodep::detail::is_r_block (uint8_t pcb)
 
+bool m5::nfc::isodep::detail::is_s_block (uint8_t pcb)
 
+bool m5::nfc::isodep::detail::i_has_more (uint8_t pcb)
 
+uint8_t m5::nfc::isodep::detail::i_bn (uint8_t pcb)
 
+bool m5::nfc::isodep::detail::is_s_wtx (uint8_t pcb)
 
+bool m5::nfc::isodep::detail::is_valid_rblock (uint8_t pcb)
 
+bool m5::nfc::isodep::detail::r_is_nak (uint8_t pcb)
 
+bool m5::nfc::isodep::detail::r_is_ack (uint8_t pcb)
 
+uint8_t m5::nfc::isodep::detail::get_wtxm (uint8_t inf)
 
+bool m5::nfc::isodep::detail::is_valid_wtxm (uint8_t wtxm)
 
+uint32_t m5::nfc::isodep::detail::mul_clamp_u32 (uint32_t a, uint32_t b, uint32_t maxv)
 
+uint8_t m5::nfc::isodep::detail::make_i_pcb (uint8_t bn, bool more, bool has_cid, bool has_nad)
 
+uint8_t m5::nfc::isodep::detail::make_r_ack (uint8_t bn, bool has_cid)
 
+uint8_t m5::nfc::isodep::detail::make_s_wtx_ack (bool has_cid)
 
+uint16_t m5::nfc::isodep::fsci_to_fsc (const uint8_t fsci)
 Convert FSCI to FSC (ISO/IEC 14443-4)
 
+ + + +

+Variables

+constexpr uint16_t m5::nfc::isodep::MAX_FRAME_SIZE {256}
 
+

Detailed Description

+

ISO Data Exchange Protocol.

+
+
+ + + + diff --git a/iso_d_e_p_8hpp.js b/iso_d_e_p_8hpp.js new file mode 100644 index 0000000..93cc1f1 --- /dev/null +++ b/iso_d_e_p_8hpp.js @@ -0,0 +1,8 @@ +var iso_d_e_p_8hpp = +[ + [ "m5::nfc::isodep::config_t", "structm5_1_1nfc_1_1isodep_1_1config__t.html", null ], + [ "m5::nfc::isodep::RxInfo", "structm5_1_1nfc_1_1isodep_1_1_rx_info.html", null ], + [ "m5::nfc::isodep::IsoDEP", "classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html", "classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p" ], + [ "fsci_to_fsc", "iso_d_e_p_8hpp.html#a0b90bcfb046d66851dff723aff035867", null ], + [ "fwi_to_ms", "iso_d_e_p_8hpp.html#a9c9dd562bc432a87e23b1f8388e581d5", null ] +]; \ No newline at end of file diff --git a/iso_d_e_p_8hpp_source.html b/iso_d_e_p_8hpp_source.html new file mode 100644 index 0000000..d89426a --- /dev/null +++ b/iso_d_e_p_8hpp_source.html @@ -0,0 +1,336 @@ + + + + + + + +M5Unit-NFC: src/nfc/isoDEP/isoDEP.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
isoDEP.hpp
+
+
+Go to the documentation of this file.
1/*
+
2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
+
3 *
+
4 * SPDX-License-Identifier: MIT
+
5 */
+
10#ifndef M5_UNIT_UNIFIED_NFC_NFC_ISODEP_ISODEP_HPP
+
11#define M5_UNIT_UNIFIED_NFC_NFC_ISODEP_ISODEP_HPP
+
12#include <cstdint>
+
13#include <vector>
+
14
+
15namespace m5 {
+
16namespace nfc {
+
17class NFCLayerInterface;
+
22namespace isodep {
+
23
+
25uint32_t fwi_to_ms(const uint8_t fwi, const float fc);
+
26
+
27constexpr uint16_t MAX_FRAME_SIZE{256};
+
28
+
29namespace detail {
+
30
+
31inline bool is_i_block(uint8_t pcb)
+
32{
+
33 return (pcb & 0xC0) == 0x00;
+
34}
+
35
+
36inline bool is_r_block(uint8_t pcb)
+
37{
+
38 return (pcb & 0xC0) == 0x80;
+
39}
+
40
+
41inline bool is_s_block(uint8_t pcb)
+
42{
+
43 return (pcb & 0xC0) == 0xC0;
+
44}
+
45
+
46inline bool i_has_more(uint8_t pcb)
+
47{
+
48 return (pcb & 0x10) != 0;
+
49}
+
50
+
51inline uint8_t i_bn(uint8_t pcb)
+
52{
+
53 return (pcb >> 0) & 0x01;
+
54}
+
55
+
56inline bool is_s_wtx(uint8_t pcb)
+
57{
+
58 return (pcb & 0xC0) == 0xC0 && (pcb & 0x30) == 0x30; // S-Block & WTX
+
59}
+
60
+
61inline bool is_valid_rblock(uint8_t pcb)
+
62{
+
63 // R-Block MUST bits: b6=1, b3=0, b2=1 (mask 0x26, val 0x22), type=0x80
+
64 return ((pcb & 0xC0) == 0x80) && ((pcb & 0x26) == 0x22);
+
65}
+
66
+
67inline bool r_is_nak(uint8_t pcb)
+
68{
+
69 return (pcb & 0x10) != 0; // bit4 distinguishes ACK/NAK (0x10)
+
70}
+
71
+
72inline bool r_is_ack(uint8_t pcb)
+
73{
+
74 return !r_is_nak(pcb);
+
75}
+
76
+
77inline uint8_t get_wtxm(uint8_t inf)
+
78{
+
79 return inf & 0x3F;
+
80}
+
81
+
82inline bool is_valid_wtxm(uint8_t wtxm)
+
83{
+
84 return (wtxm >= 1) && (wtxm <= 59);
+
85}
+
86
+
87inline uint32_t mul_clamp_u32(uint32_t a, uint32_t b, uint32_t maxv)
+
88{
+
89 if (!a || !b) {
+
90 return 0;
+
91 }
+
92 if (a > maxv / b) {
+
93 return maxv;
+
94 }
+
95 uint32_t v = a * b;
+
96 return (v > maxv) ? maxv : v;
+
97}
+
98
+
99// I-Block PCB
+
100inline uint8_t make_i_pcb(uint8_t bn, bool more, bool has_cid, bool has_nad)
+
101{
+
102 uint8_t pcb = 0x02; // I-Block base (0x00/0x02?)
+
103 pcb &= ~0x01;
+
104 pcb |= (bn & 0x01);
+
105 pcb |= more ? 0x10 : 0x00;
+
106 pcb |= has_cid ? 0x08 : 0x00;
+
107 pcb |= has_nad ? 0x04 : 0x00;
+
108 return pcb;
+
109}
+
110
+
111// R-Block ACK
+
112inline uint8_t make_r_ack(uint8_t bn, bool has_cid)
+
113{
+
114 uint8_t pcb = 0xA2; // 0xA0 or 0xA2?
+
115 pcb &= ~0x01;
+
116 pcb |= (bn & 0x01);
+
117 pcb |= has_cid ? 0x08 : 0x00;
+
118 return pcb;
+
119}
+
120
+
121// S-Block WTX-ACK
+
122inline uint8_t make_s_wtx_ack(bool has_cid)
+
123{
+
124 uint8_t pcb = 0xF2; // S(WTX)
+
125 pcb |= has_cid ? 0x08 : 0x00;
+
126 return pcb;
+
127}
+
128
+
129} // namespace detail
+
130
+
+
132inline uint16_t fsci_to_fsc(const uint8_t fsci)
+
133{
+
134 static constexpr uint16_t table[] = {16, 24, 32, 40, 48, 64, 96, 128, 256};
+
135 return (fsci < (sizeof(table) / sizeof(table[0]))) ? table[fsci] : 0;
+
136}
+
+
137
+
+
142struct config_t {
+
143 uint16_t fsc{};
+
144 uint16_t pcd_max_frame_tx{};
+
145 uint16_t pcd_max_frame_rx{};
+
146 uint32_t fwt_ms{100};
+
147 uint32_t wtx_max_ms{5000};
+
148
+
149 // options
+
150 bool use_cid{};
+
151 uint8_t cid{};
+
152 bool use_nad{};
+
153 uint8_t nad{};
+
154
+
155 uint8_t max_retries{2};
+
156 bool rx_crc{true}; // Remove CRC if true in INF
+
157
+
158 inline uint16_t max_frame_cap_tx() const
+
159 {
+
160 const auto max_frame = std::min<uint16_t>(pcd_max_frame_tx, fsc);
+
161 return (max_frame > (overhead() + 2)) ? (max_frame - overhead() - 2) : 0;
+
162 }
+
163 inline uint16_t max_frame_size_rx() const
+
164 {
+
165 return std::min<uint16_t>(pcd_max_frame_rx, fsc);
+
166 }
+
167 inline uint16_t fsc_inf_cap() const
+
168 {
+
169 return (fsc > overhead()) ? static_cast<uint16_t>(fsc - overhead()) : 0;
+
170 }
+
171 inline uint16_t overhead() const
+
172 {
+
173 return 1 + (use_cid ? 1 : 0) + (use_nad ? 1 : 0);
+
174 }
+
175};
+
+
176
+
+
181struct RxInfo {
+
182 bool more{}; // Continue chaining?
+
183 bool wtx_seen{}; // WTX?
+
184};
+
+
185
+
+
190class IsoDEP {
+
191public:
+
192 explicit IsoDEP(NFCLayerInterface& layer) : _layer{layer}
+
193 {
+
194 }
+
195 IsoDEP(NFCLayerInterface& layer, const config_t& c) : _layer{layer}, _cfg{c}
+
196 {
+
197 }
+
198
+
199 inline config_t config() const
+
200 {
+
201 return _cfg;
+
202 }
+
203 inline void config(const config_t& cfg)
+
204 {
+
205 _cfg = cfg;
+
206 _block_num = 0;
+
207 }
+
208
+
210 bool transceiveINF(uint8_t* rx_inf, uint16_t& rx_inf_len, const uint8_t* tx_inf, const uint16_t tx_inf_len,
+
211 RxInfo* info = nullptr);
+
213 bool transceiveAPDU(uint8_t* rx, uint16_t& rx_len, const uint8_t* cmd, const uint16_t cmd_len);
+
215 bool transceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms);
+
216
+
217private:
+
218 NFCLayerInterface& _layer;
+
219 config_t _cfg{};
+
220 uint8_t _block_num{}; // I-Block BN (0/1)
+
221};
+
+
222
+
223} // namespace isodep
+
224} // namespace nfc
+
225} // namespace m5
+
226#endif
+
Common interface for NFC layer.
Definition nfc_layer.hpp:26
+
ISO Data Exchange Protocol.
Definition isoDEP.hpp:190
+
bool transceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
Transceive normal.
Definition isoDEP.cpp:516
+
bool transceiveINF(uint8_t *rx_inf, uint16_t &rx_inf_len, const uint8_t *tx_inf, const uint16_t tx_inf_len, RxInfo *info=nullptr)
Transceive INF.
Definition isoDEP.cpp:111
+
bool transceiveAPDU(uint8_t *rx, uint16_t &rx_len, const uint8_t *cmd, const uint16_t cmd_len)
Transceive APDU.
Definition isoDEP.cpp:424
+
uint32_t fwi_to_ms(const uint8_t fwi, const float fc)
Calculate waiting time(ms) by fwi and fc.
Definition isoDEP.cpp:92
+
uint16_t fsci_to_fsc(const uint8_t fsci)
Convert FSCI to FSC (ISO/IEC 14443-4)
Definition isoDEP.hpp:132
+
NFC-A definitions.
+
NFC-B definitions.
+
For ISO-DEP.
+
Top level namespace of M5stack.
+
NFC related definitions.
+
NFC-V definitions.
+
RX information.
Definition isoDEP.hpp:181
+
ISO-DEP configuration.
Definition isoDEP.hpp:142
+
+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/manufacturer__id_8hpp.html b/manufacturer__id_8hpp.html new file mode 100644 index 0000000..44fc921 --- /dev/null +++ b/manufacturer__id_8hpp.html @@ -0,0 +1,529 @@ + + + + + + + +M5Unit-NFC: src/nfc/manufacturer_id.hpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
manufacturer_id.hpp File Reference
+
+
+ +

Manufacturer ID (UID[0]) definitions for ISO/IEC 14443-3. +More...

+
#include <cstdint>
+
+

Go to the source code of this file.

+ + + + + +

+Namespaces

namespace  m5
 Top level namespace of M5stack.
 
+ + + + +

+Enumerations

enum class  m5::nfc::ManufacturerId : uint8_t {
+  Unknown = 0x00 +, Motorola = 0x01 +, STMicroelectronics = 0x02 +, Hitachi = 0x03 +,
+  NXP = 0x04 +, Infineon = 0x05 +, Cylink = 0x06 +, TexasInstruments = 0x07 +,
+  Fujitsu = 0x08 +, Matsushita = 0x09 +, NEC = 0x0A +, Oki = 0x0B +,
+  Toshiba = 0x0C +, Mitsubishi = 0x0D +, Samsung = 0x0E +, Hynix = 0x0F +,
+  LG = 0x10 +, EmosynEM = 0x11 +, InsideTechnology = 0x12 +, Orga = 0x13 +,
+  Sharp = 0x14 +, Atmel = 0x15 +, EmMicroelectronic = 0x16 +, Smartrac = 0x17 +,
+  Zmd = 0x18 +, Xicor = 0x19 +, Sony = 0x1A +, MalaysiaMicro = 0x1B +,
+  Emosyn = 0x1C +, Fudan = 0x1D +, Magellan = 0x1E +, Melexis = 0x1F +,
+  RenesasTechnology = 0x20 +, Tagsys = 0x21 +, Transcore = 0x22 +, ShanghaiBelling = 0x23 +,
+  Masktech = 0x24 +, Innovision = 0x25 +, HitachiUlsi = 0x26 +, Yubico = 0x27 +,
+  Ricoh = 0x28 +, Ask = 0x29 +, Unicore = 0x2A +, DallasMaxim = 0x2B +,
+  Impinj = 0x2C +, RightPlug = 0x2D +, Broadcom = 0x2E +, Mstar = 0x2F +,
+  Beedar = 0x30 +, Rfidsec = 0x31 +, Schweizer = 0x32 +, Amic = 0x33 +,
+  Mikron = 0x34 +, FraunhoferIpms = 0x35 +, IdsMicrochip = 0x36 +, Kovio = 0x37 +,
+  Hmt = 0x38 +, SiliconCraft = 0x39 +, AdvancedFilmDevice = 0x3A +, Nitecrest = 0x3B +,
+  Verayo = 0x3C +, HidGlobal = 0x3D +, ProductivityEng = 0x3E +, Austriamicrosys = 0x3F +,
+  Gemalto = 0x40 +, RenesasElectronics = 0x41 +, A3logics = 0x42 +, TopTroniq = 0x43 +,
+  Gentag = 0x44 +, Invengo = 0x45 +, GuangzhouSysur = 0x46 +, Ceitec = 0x47 +,
+  Quanray = 0x48 +, Mediatek = 0x49 +, Angstrem = 0x4A +, Celisic = 0x4B +,
+  Legic = 0x4C +, Balluff = 0x4D +, Oberthur = 0x4E +, Silterra = 0x4F +,
+  Delta = 0x50 +, GieseckeDevrient = 0x51 +, ChinaVision = 0x52 +, ShanghaiFeiju = 0x53 +,
+  Intel = 0x54 +, Microsensys = 0x55 +, Sonix = 0x56 +, Qualcomm = 0x57 +,
+  Realtek = 0x58 +, Freevision = 0x59 +, Giantec = 0x5A +, AngstremT = 0x5B +,
+  Starchip = 0x5C +, Spirtech = 0x5D +, Gantner = 0x5E +, Nordic = 0x5F +,
+  Verisiti = 0x60 +, Wearlinks = 0x61 +, Userstar = 0x62 +, Pragmatic = 0x63 +,
+  LsiTec = 0x64 +, Tendyron = 0x65 +, MutoSmart = 0x66 +, OnSemiconductor = 0x67 +,
+  TubitakBilgem = 0x68 +, Huada = 0x69 +, Seveney = 0x6A +, Issm = 0x6B +,
+  Wisesec = 0x6C +, Holtek = 0x7E +, MultibyteMarker = 0xFF +
+ }
 Manufacturer ID derived from UID[0]. More...
 
+

Detailed Description

+

Manufacturer ID (UID[0]) definitions for ISO/IEC 14443-3.

+
Note
Manufacturer ID values are aligned with ISO/IEC 7816-6 manufacturer codes
+
See also
https://en.wikipedia.org/wiki/ISO/IEC_15693
+

Enumeration Type Documentation

+ +

◆ ManufacturerId

+ +
+
+ + + + + +
+ + + + +
enum class m5::nfc::ManufacturerId : uint8_t
+
+strong
+
+ +

Manufacturer ID derived from UID[0].

+
Note
This list is partial,extend as needed
+
Warning
Random UID may not reflect actual manufacturer
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Enumerator
Unknown 

Unknown/unsupported.

+
Motorola 

Motorola.

+
STMicroelectronics 

STMicroelectronics.

+
Hitachi 

Hitachi.

+
NXP 

NXP Semiconductors.

+
Infineon 

Infineon.

+
Cylink 

Cylink.

+
TexasInstruments 

Texas Instruments.

+
Fujitsu 

Fujitsu.

+
Matsushita 

Matsushita (Panasonic)

+
NEC 

NEC.

+
Oki 

Oki.

+
Toshiba 

Toshiba.

+
Mitsubishi 

Mitsubishi.

+
Samsung 

Samsung.

+
Hynix 

Hynix.

+
LG 

LG Semiconductors.

+
EmosynEM 

Emosyn-EM Microelectronics.

+
InsideTechnology 

INSIDE Technology.

+
Orga 

ORGA Kartensysteme.

+
Sharp 

Sharp.

+
Atmel 

Atmel.

+
EmMicroelectronic 

EM Microelectronic-Marin.

+
Smartrac 

SMARTRAC Technology.

+
Zmd 

ZMD.

+
Xicor 

XICOR.

+
Sony 

Sony.

+
MalaysiaMicro 

Malaysia Microelectronic Solutions.

+
Emosyn 

Emosyn.

+
Fudan 

Shanghai Fudan Microelectronics.

+
Magellan 

Magellan Technology.

+
Melexis 

Melexis.

+
RenesasTechnology 

Renesas Technology.

+
Tagsys 

TAGSYS.

+
Transcore 

Transcore.

+
ShanghaiBelling 

Shanghai Belling.

+
Masktech 

Masktech Germany.

+
Innovision 

Innovision Research and Technology.

+
HitachiUlsi 

Hitachi ULSI Systems.

+
Yubico 

Yubico.

+
Ricoh 

Ricoh.

+
Ask 

ASK.

+
Unicore 

Unicore Microsystems.

+
DallasMaxim 

Dallas Semiconductor/Maxim.

+
Impinj 

Impinj.

+
RightPlug 

RightPlug Alliance.

+
Broadcom 

Broadcom.

+
Mstar 

MStar Semiconductor.

+
Beedar 

BeeDar Technology.

+
Rfidsec 

RFIDsec.

+
Schweizer 

Schweizer Electronic.

+
Amic 

AMIC Technology.

+
Mikron 

Mikron.

+
FraunhoferIpms 

Fraunhofer IPMS.

+
IdsMicrochip 

IDS Microchip.

+
Kovio 

Kovio.

+
Hmt 

HMT Microelectronic.

+
SiliconCraft 

Silicon Craft.

+
AdvancedFilmDevice 

Advanced Film Device.

+
Nitecrest 

Nitecrest.

+
Verayo 

Verayo.

+
HidGlobal 

HID Global.

+
ProductivityEng 

Productivity Engineering.

+
Austriamicrosys 

Austriamicrosystems (reserved)

+
Gemalto 

Gemalto.

+
RenesasElectronics 

Renesas Electronics.

+
A3logics 

3Alogics

+
TopTroniq 

Top TroniQ Asia.

+
Gentag 

Gentag.

+
Invengo 

Invengo.

+
GuangzhouSysur 

Guangzhou Sysur.

+
Ceitec 

CEITEC.

+
Quanray 

Shanghai Quanray.

+
Mediatek 

MediaTek.

+
Angstrem 

Angstrem.

+
Celisic 

Celisic Semiconductor.

+
Legic 

LEGIC.

+
Balluff 

Balluff.

+
Oberthur 

Oberthur Technologies.

+
Silterra 

Silterra.

+
Delta 

DELTA.

+
GieseckeDevrient 

Giesecke + Devrient.

+
ChinaVision 

Shenzhen China Vision.

+
ShanghaiFeiju 

Shanghai Feiju.

+
Intel 

Intel.

+
Microsensys 

Microsensys.

+
Sonix 

Sonix.

+
Qualcomm 

Qualcomm.

+
Realtek 

Realtek.

+
Freevision 

Freevision.

+
Giantec 

Giantec.

+
AngstremT 

Angstrem-T.

+
Starchip 

STARCHIP.

+
Spirtech 

SPIRTECH.

+
Gantner 

GANTNER Electronic.

+
Nordic 

Nordic Semiconductor.

+
Verisiti 

Verisiti.

+
Wearlinks 

Wearlinks.

+
Userstar 

Userstar.

+
Pragmatic 

Pragmatic Semiconductor.

+
LsiTec 

LSI-TEC.

+
Tendyron 

Tendyron.

+
MutoSmart 

MUTO Smart.

+
OnSemiconductor 

ON Semiconductor.

+
TubitakBilgem 

TUBITAK BILGEM.

+
Huada 

Huada Semiconductor.

+
Seveney 

SEVENEY.

+
Issm 

ISSM.

+
Wisesec 

Wisesec.

+
Holtek 

Holtek.

+
MultibyteMarker 

ISO/IEC 7816-6:2023.

+
+ +
+
+
+
+ + + + diff --git a/manufacturer__id_8hpp.js b/manufacturer__id_8hpp.js new file mode 100644 index 0000000..5561a3a --- /dev/null +++ b/manufacturer__id_8hpp.js @@ -0,0 +1,116 @@ +var manufacturer__id_8hpp = +[ + [ "ManufacturerId", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52", [ + [ "Unknown", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a88183b946cc5f0e8c96b2e66e1c74a7e", null ], + [ "Motorola", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a2ed1afe3c9215523e4272f46e6186b31", null ], + [ "STMicroelectronics", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac38884ab3cf908c2798725960369391b", null ], + [ "Hitachi", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac76e5f5afd86d0ca4d39ff7bb3fd722d", null ], + [ "NXP", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aab174cf654efc28e4b7c7adb1b57e5fa", null ], + [ "Infineon", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a1b71a9f258eec6d3c04498379ad293a0", null ], + [ "Cylink", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af10e0dbef40a6e27efbb533cf53de944", null ], + [ "TexasInstruments", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a67e54b1ee931f3f4bddfefa5fbde5fd8", null ], + [ "Fujitsu", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a053f42c6bae3432cae270ea978f7e638", null ], + [ "Matsushita", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a6a9eb6ca4f97808c45c01063c5f45d97", null ], + [ "NEC", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a7e70c0503999340437163065dbd1b1b7", null ], + [ "Oki", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae9619561af4f8c522aebc15da688378c", null ], + [ "Toshiba", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a0e550130373c0857829991e1767bc46d", null ], + [ "Mitsubishi", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a2fab5d8de22382790ca8eeb34d389b73", null ], + [ "Samsung", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a3910b1e0ccab19bc46fd9db27cca49c9", null ], + [ "Hynix", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a3934b9f6b38739f963327cc4b064e01f", null ], + [ "LG", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a3138b8e6061fdf7cfaaa79279175cbcd", null ], + [ "EmosynEM", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a7cc36687d5a3eac280901dd6ed55917d", null ], + [ "InsideTechnology", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52afd293c248037daa2f4b675057d1ab9e3", null ], + [ "Orga", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac253e738c5afc685dd2bc5c9a3e4eaee", null ], + [ "Sharp", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a60c17eb98355db0fe5ce016db6c6f444", null ], + [ "Atmel", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52abed89e32bb03bc7e71ebbf7729f9d4ce", null ], + [ "EmMicroelectronic", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af65389b034b137aea1aac82e3757af1f", null ], + [ "Smartrac", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a7b1f028b1ba664bc6886edb089274e93", null ], + [ "Zmd", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a5991100c55aafa3a1a3f972dfae45b88", null ], + [ "Xicor", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a72f8810468816d80ddeaf9a547ae7f57", null ], + [ "Sony", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a2da860f7216f34598e5cdc6fd7e3098c", null ], + [ "MalaysiaMicro", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52acee877b78c56f95d998c9b5113c18519", null ], + [ "Emosyn", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae8de91691abd6da4ed775cbfadd55b9c", null ], + [ "Fudan", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae4322c6191d730dac2105a2299a0c25b", null ], + [ "Magellan", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a1054a39cbec2d48f2b30147ddba51b60", null ], + [ "Melexis", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a9f3451b6a6b2570d821b0cdbabaf0d75", null ], + [ "RenesasTechnology", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae68db2e7905c0a38950967691e7e2038", null ], + [ "Tagsys", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af0681a809fe90639fc06c2d693182818", null ], + [ "Transcore", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a376312b3b2f150923acc3164132d87c8", null ], + [ "ShanghaiBelling", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a69e4f3e4cba7e91551b1e52951dfc289", null ], + [ "Masktech", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a612c3eab9458bb721f9f906f3265625b", null ], + [ "Innovision", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac8c39a20f148af971c5a093ae8e180bc", null ], + [ "HitachiUlsi", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ab9c7b1758e2866e63d2b7032e97519fb", null ], + [ "Yubico", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ad64537cc32debef2d5eed7f739f6ea5c", null ], + [ "Ricoh", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ad1756d23d0eb2b335751132a660378e1", null ], + [ "Ask", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aa0b271a9d8aa8e7473922164d6a1c03c", null ], + [ "Unicore", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a2a13fbcc37fec7b1f6f03573faab4157", null ], + [ "DallasMaxim", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aebfb6d61188b3d1bcfb800f1803819a5", null ], + [ "Impinj", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a880a57662cac3d08b47887189cfdf8fc", null ], + [ "RightPlug", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ab3c4563a2cb61660e3ac39c69ed77e38", null ], + [ "Broadcom", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a93933c6ca68705cf2c6eee19987428b0", null ], + [ "Mstar", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a1447363e9eef717d4c85472496648bb1", null ], + [ "Beedar", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a4ad0814e3406019c523943745de9112c", null ], + [ "Rfidsec", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af13065a643218726322db94094519d49", null ], + [ "Schweizer", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a9912c9330e203d0dc109bf7e74e09e51", null ], + [ "Amic", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a172ef6a8a53f514ea87693dcf5104f61", null ], + [ "Mikron", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af9ff1352d0b347fc14825ad997aa4fe5", null ], + [ "FraunhoferIpms", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac98ec4b6eacfeddc9c9e98805db4f108", null ], + [ "IdsMicrochip", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af7f51efd70b299e12224567cd5f770c5", null ], + [ "Kovio", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae04e18f6c05ae7f22b3f84810232ddf7", null ], + [ "Hmt", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac74b16e4e10cd1c81587d247b2027e4c", null ], + [ "SiliconCraft", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af0c09f2970c50cc8ce0cea76e12bc1ee", null ], + [ "AdvancedFilmDevice", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a6d2c13d4fb2828f5bf62181e863e3bd0", null ], + [ "Nitecrest", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52abea429b0656e0205f1fa32769cc10919", null ], + [ "Verayo", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af8b4d80e862711cdca5a259baf3992f1", null ], + [ "HidGlobal", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a4ab9474eb236654f13ca79351f17811f", null ], + [ "ProductivityEng", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a6a0bc7a392f90bd8c5291600b784da03", null ], + [ "Austriamicrosys", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ad8305ff2f27c59e18110cbdf899aa5d4", null ], + [ "Gemalto", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ad81109d17c9fbdda036e968d76790932", null ], + [ "RenesasElectronics", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a7050614b5099a7e516d86b0b3f813169", null ], + [ "A3logics", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a0f14f0f3b8e7ce6704498270bd16cc4c", null ], + [ "TopTroniq", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aaad87bb774ff9febfd6acedddcf4549e", null ], + [ "Gentag", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac130b81932c3dafacf1396f6577c82c0", null ], + [ "Invengo", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a7dd26199a38f403dc6c36623131bd550", null ], + [ "GuangzhouSysur", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a093d625de0dfea2426765a3bc319abbb", null ], + [ "Ceitec", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a2629a2e19e2b5645fe6a5429c7519d64", null ], + [ "Quanray", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a250bdc4ed0d3979efa85515ce5cd06ec", null ], + [ "Mediatek", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a0d1a8643ff45ff9cbdb8ec3915c0f674", null ], + [ "Angstrem", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ab164bc345168b3e3f5fe3c25be80bf4a", null ], + [ "Celisic", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a55f066c966b1346813c56745a550fe87", null ], + [ "Legic", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a8e1dad2094b9d0f7df48aed4f7423a29", null ], + [ "Balluff", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af1381fc3f7b86fb8c1908f55248dc32f", null ], + [ "Oberthur", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a31917a5f060e2593e6ddf934dc6cea73", null ], + [ "Silterra", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a65e2e06f5a3dbc97fcbe65d9e2d7436c", null ], + [ "Delta", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52adb1f4ab5845def61a83d5df13e0c2397", null ], + [ "GieseckeDevrient", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a03e90cd6ff114c4c65759d84ffcefa6b", null ], + [ "ChinaVision", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af1e67e05c8364092e64e22c052d345f5", null ], + [ "ShanghaiFeiju", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aec591a6589d51a86517eed3879d66b9e", null ], + [ "Intel", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aff97a9fdede09eaf6e1c8ec9f6a61dd5", null ], + [ "Microsensys", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a585ac9c856d20c86b3199e2f97382f7c", null ], + [ "Sonix", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aca1ad40112d92766444ed8719401940e", null ], + [ "Qualcomm", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac9b0cb53646238b8c03fb69b8f331220", null ], + [ "Realtek", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52abe40f32919f3a7ab684c228c46aa65c9", null ], + [ "Freevision", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae1f17c7686d52051f430b8ffeb8ee7ed", null ], + [ "Giantec", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a46de37a8bba55c26ae51a0dfb25d9588", null ], + [ "AngstremT", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a9f1cc74db71195bb3ae8bd29f60d7bfb", null ], + [ "Starchip", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a294fcd514234790185adc4c2771b0839", null ], + [ "Spirtech", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a4fe0880a4ecce14a41cc572dbaf849ec", null ], + [ "Gantner", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a4708c93c4fb98a43a312831f0818dc59", null ], + [ "Nordic", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a460ebccd86ebc5e464cdc933b95a6fe0", null ], + [ "Verisiti", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a12a39ecd974a9cfc102360a5518e958a", null ], + [ "Wearlinks", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a24d12a85aeb5793ca07358a5ea1c6417", null ], + [ "Userstar", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ab8d78b0485750b2e278bf1cec2a6ce93", null ], + [ "Pragmatic", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a7e2928368546bde6a197d5d7f5706255", null ], + [ "LsiTec", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a9b9abf8402a7357bfc8a4972855eb0c1", null ], + [ "Tendyron", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a4e6a90f67cdf2dfc7bb127ee0b489ae4", null ], + [ "MutoSmart", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aab1d882780c905696cfa077c628c50a9", null ], + [ "OnSemiconductor", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af41a64871e7c90d91b575294be5d6831", null ], + [ "TubitakBilgem", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a8fb60ad690955805f9e98eabda5db0a4", null ], + [ "Huada", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a722e7803fa055c9334fa490aeebc0730", null ], + [ "Seveney", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a5bf2f4937e41119c04ca437d5337855e", null ], + [ "Issm", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a5e5fca57283852e1ea45f23382e906d9", null ], + [ "Wisesec", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aa85491a5f53c64f5d548e2a9a93452d8", null ], + [ "Holtek", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a37bccf898dd6469a4dd10f82a5cc47a0", null ], + [ "MultibyteMarker", "manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae6ff72d7749e09da7eaaee01a5b553f3", null ] + ] ] +]; \ No newline at end of file diff --git a/manufacturer__id_8hpp_source.html b/manufacturer__id_8hpp_source.html new file mode 100644 index 0000000..c59617c --- /dev/null +++ b/manufacturer__id_8hpp_source.html @@ -0,0 +1,358 @@ + + + + + + + +M5Unit-NFC: src/nfc/manufacturer_id.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
M5Unit-NFC 0.0.1 git rev:4dda34e +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
manufacturer_id.hpp
+
+
+Go to the documentation of this file.
1/*
+
2 * SPDX-FileCopyrightText: 2026 M5Stack Technology CO LTD
+
3 *
+
4 * SPDX-License-Identifier: MIT
+
5 */
+
12#ifndef M5_UNIT_NFC_NFC_MANUFACTURER_ID_HPP
+
13#define M5_UNIT_NFC_NFC_MANUFACTURER_ID_HPP
+
14
+
15#include <cstdint>
+
16
+
17namespace m5 {
+
18namespace nfc {
+
19
+
+
26enum class ManufacturerId : uint8_t {
+
27 Unknown = 0x00,
+
28 Motorola = 0x01,
+
29 STMicroelectronics = 0x02,
+
30 Hitachi = 0x03,
+
31 NXP = 0x04,
+
32 Infineon = 0x05,
+
33 Cylink = 0x06,
+
34 TexasInstruments = 0x07,
+
35 Fujitsu = 0x08,
+
36 Matsushita = 0x09,
+
37 NEC = 0x0A,
+
38 Oki = 0x0B,
+
39 Toshiba = 0x0C,
+
40 Mitsubishi = 0x0D,
+
41 Samsung = 0x0E,
+
42 Hynix = 0x0F,
+
43 LG = 0x10,
+
44 EmosynEM = 0x11,
+
45 InsideTechnology = 0x12,
+
46 Orga = 0x13,
+
47 Sharp = 0x14,
+
48 Atmel = 0x15,
+
49 EmMicroelectronic = 0x16,
+
50 Smartrac = 0x17,
+
51 Zmd = 0x18,
+
52 Xicor = 0x19,
+
53 Sony = 0x1A,
+
54 MalaysiaMicro = 0x1B,
+
55 Emosyn = 0x1C,
+
56 Fudan = 0x1D,
+
57 Magellan = 0x1E,
+
58 Melexis = 0x1F,
+
59 RenesasTechnology = 0x20,
+
60 Tagsys = 0x21,
+
61 Transcore = 0x22,
+
62 ShanghaiBelling = 0x23,
+
63 Masktech = 0x24,
+
64 Innovision = 0x25,
+
65 HitachiUlsi = 0x26,
+
66 Yubico = 0x27,
+
67 Ricoh = 0x28,
+
68 Ask = 0x29,
+
69 Unicore = 0x2A,
+
70 DallasMaxim = 0x2B,
+
71 Impinj = 0x2C,
+
72 RightPlug = 0x2D,
+
73 Broadcom = 0x2E,
+
74 Mstar = 0x2F,
+
75 Beedar = 0x30,
+
76 Rfidsec = 0x31,
+
77 Schweizer = 0x32,
+
78 Amic = 0x33,
+
79 Mikron = 0x34,
+
80 FraunhoferIpms = 0x35,
+
81 IdsMicrochip = 0x36,
+
82 Kovio = 0x37,
+
83 Hmt = 0x38,
+
84 SiliconCraft = 0x39,
+
85 AdvancedFilmDevice = 0x3A,
+
86 Nitecrest = 0x3B,
+
87 Verayo = 0x3C,
+
88 HidGlobal = 0x3D,
+
89 ProductivityEng = 0x3E,
+
90 Austriamicrosys = 0x3F,
+
91 Gemalto = 0x40,
+
92 RenesasElectronics = 0x41,
+
93 A3logics = 0x42,
+
94 TopTroniq = 0x43,
+
95 Gentag = 0x44,
+
96 Invengo = 0x45,
+
97 GuangzhouSysur = 0x46,
+
98 Ceitec = 0x47,
+
99 Quanray = 0x48,
+
100 Mediatek = 0x49,
+
101 Angstrem = 0x4A,
+
102 Celisic = 0x4B,
+
103 Legic = 0x4C,
+
104 Balluff = 0x4D,
+
105 Oberthur = 0x4E,
+
106 Silterra = 0x4F,
+
107 Delta = 0x50,
+
108 GieseckeDevrient = 0x51,
+
109 ChinaVision = 0x52,
+
110 ShanghaiFeiju = 0x53,
+
111 Intel = 0x54,
+
112 Microsensys = 0x55,
+
113 Sonix = 0x56,
+
114 Qualcomm = 0x57,
+
115 Realtek = 0x58,
+
116 Freevision = 0x59,
+
117 Giantec = 0x5A,
+
118 AngstremT = 0x5B,
+
119 Starchip = 0x5C,
+
120 Spirtech = 0x5D,
+
121 Gantner = 0x5E,
+
122 Nordic = 0x5F,
+
123 Verisiti = 0x60,
+
124 Wearlinks = 0x61,
+
125 Userstar = 0x62,
+
126 Pragmatic = 0x63,
+
127 LsiTec = 0x64,
+
128 Tendyron = 0x65,
+
129 MutoSmart = 0x66,
+
130 OnSemiconductor = 0x67,
+
131 TubitakBilgem = 0x68,
+
132 Huada = 0x69,
+
133 Seveney = 0x6A,
+
134 Issm = 0x6B,
+
135 Wisesec = 0x6C,
+
136 Holtek = 0x7E,
+
137 MultibyteMarker = 0xFF,
+
138};
+
+
139
+
140} // namespace nfc
+
141} // namespace m5
+
142
+
143#endif
+
ManufacturerId
Manufacturer ID derived from UID[0].
Definition manufacturer_id.hpp:26
+
@ GieseckeDevrient
Giesecke + Devrient.
+ +
@ GuangzhouSysur
Guangzhou Sysur.
+ + + +
@ Magellan
Magellan Technology.
+ +
@ Mstar
MStar Semiconductor.
+
@ Amic
AMIC Technology.
+ + +
@ Quanray
Shanghai Quanray.
+ + +
@ Unicore
Unicore Microsystems.
+ + + +
@ LG
LG Semiconductors.
+
@ Oberthur
Oberthur Technologies.
+ + + + +
@ Nordic
Nordic Semiconductor.
+ +
@ Gantner
GANTNER Electronic.
+ +
@ Beedar
BeeDar Technology.
+ + +
@ Celisic
Celisic Semiconductor.
+
@ Microsensys
Microsensys.
+ + + + +
@ Masktech
Masktech Germany.
+ +
@ TexasInstruments
Texas Instruments.
+
@ ShanghaiBelling
Shanghai Belling.
+
@ ProductivityEng
Productivity Engineering.
+
@ Matsushita
Matsushita (Panasonic)
+
@ AdvancedFilmDevice
Advanced Film Device.
+
@ RenesasElectronics
Renesas Electronics.
+
@ Huada
Huada Semiconductor.
+ +
@ Smartrac
SMARTRAC Technology.
+
@ EmosynEM
Emosyn-EM Microelectronics.
+ +
@ Pragmatic
Pragmatic Semiconductor.
+ + + +
@ TubitakBilgem
TUBITAK BILGEM.
+ +
@ Schweizer
Schweizer Electronic.
+ + + + + +
@ TopTroniq
Top TroniQ Asia.
+
@ NXP
NXP Semiconductors.
+ + +
@ RightPlug
RightPlug Alliance.
+ +
@ HitachiUlsi
Hitachi ULSI Systems.
+ + + + +
@ Orga
ORGA Kartensysteme.
+
@ STMicroelectronics
STMicroelectronics.
+
@ Hmt
HMT Microelectronic.
+ +
@ Innovision
Innovision Research and Technology.
+
@ FraunhoferIpms
Fraunhofer IPMS.
+ + +
@ MalaysiaMicro
Malaysia Microelectronic Solutions.
+ + + +
@ Austriamicrosys
Austriamicrosystems (reserved)
+ + + +
@ Fudan
Shanghai Fudan Microelectronics.
+
@ RenesasTechnology
Renesas Technology.
+
@ MultibyteMarker
ISO/IEC 7816-6:2023.
+ + +
@ DallasMaxim
Dallas Semiconductor/Maxim.
+
@ ShanghaiFeiju
Shanghai Feiju.
+ +
@ SiliconCraft
Silicon Craft.
+ + + +
@ ChinaVision
Shenzhen China Vision.
+
@ OnSemiconductor
ON Semiconductor.
+
@ EmMicroelectronic
EM Microelectronic-Marin.
+
@ IdsMicrochip
IDS Microchip.
+ + +
@ InsideTechnology
INSIDE Technology.
+ +
Top level namespace of M5stack.
+
NFC related definitions.
+
+
+ + + + diff --git a/menu.js b/menu.js new file mode 100644 index 0000000..0fd1e99 --- /dev/null +++ b/menu.js @@ -0,0 +1,134 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { + function makeTree(data,relPath) { + let result=''; + if ('children' in data) { + result+='
    '; + for (let i in data.children) { + let url; + const link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + let searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + const $mainMenuState = $('#main-menu-state'); + let prevWidth = 0; + if ($mainMenuState.length) { + const initResizableIfExists = function() { + if (typeof initResizable==='function') initResizable(treeview); + } + // animate mobile menu + $mainMenuState.change(function() { + const $menu = $('#main-menu'); + let options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = () => $menu.css('display', 'block'); + $menu.hide().slideDown(options); + } else { + options['complete'] = () => $menu.css('display', 'none'); + $menu.show().slideUp(options); + } + }); + // set default menu visibility + const resetState = function() { + const $menu = $('#main-menu'); + const newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/menudata.js b/menudata.js new file mode 100644 index 0000000..d46aab9 --- /dev/null +++ b/menudata.js @@ -0,0 +1,101 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html"}, +{text:"Enumerations",url:"namespacemembers_enum.html"}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"k",url:"functions_k.html#index_k"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"w",url:"functions_w.html#index_w"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func_b.html#index_b"}, +{text:"c",url:"functions_func_c.html#index_c"}, +{text:"d",url:"functions_func_d.html#index_d"}, +{text:"e",url:"functions_func_e.html#index_e"}, +{text:"f",url:"functions_func_f.html#index_f"}, +{text:"i",url:"functions_func_i.html#index_i"}, +{text:"l",url:"functions_func_l.html#index_l"}, +{text:"m",url:"functions_func_m.html#index_m"}, +{text:"n",url:"functions_func_n.html#index_n"}, +{text:"p",url:"functions_func_p.html#index_p"}, +{text:"r",url:"functions_func_r.html#index_r"}, +{text:"s",url:"functions_func_s.html#index_s"}, +{text:"t",url:"functions_func_t.html#index_t"}, +{text:"u",url:"functions_func_u.html#index_u"}, +{text:"v",url:"functions_func_v.html#index_v"}, +{text:"w",url:"functions_func_w.html#index_w"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"a",url:"functions_vars.html#index_a"}, +{text:"b",url:"functions_vars.html#index_b"}, +{text:"c",url:"functions_vars.html#index_c"}, +{text:"d",url:"functions_vars.html#index_d"}, +{text:"e",url:"functions_vars.html#index_e"}, +{text:"f",url:"functions_vars.html#index_f"}, +{text:"h",url:"functions_vars.html#index_h"}, +{text:"i",url:"functions_vars.html#index_i"}, +{text:"k",url:"functions_vars.html#index_k"}, +{text:"l",url:"functions_vars.html#index_l"}, +{text:"m",url:"functions_vars.html#index_m"}, +{text:"n",url:"functions_vars.html#index_n"}, +{text:"o",url:"functions_vars.html#index_o"}, +{text:"p",url:"functions_vars.html#index_p"}, +{text:"r",url:"functions_vars.html#index_r"}, +{text:"s",url:"functions_vars.html#index_s"}, +{text:"t",url:"functions_vars.html#index_t"}, +{text:"u",url:"functions_vars.html#index_u"}, +{text:"v",url:"functions_vars.html#index_v"}, +{text:"w",url:"functions_vars.html#index_w"}]}, +{text:"Enumerations",url:"functions_enum.html"}, +{text:"Related Symbols",url:"functions_rela.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/mifare_8cpp.html b/mifare_8cpp.html new file mode 100644 index 0000000..e3aa177 --- /dev/null +++ b/mifare_8cpp.html @@ -0,0 +1,322 @@ + + + + + + + +M5Unit-NFC: src/nfc/a/mifare.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    mifare.cpp File Reference
    +
    +
    + +

    MIFARE definitions. +More...

    +
    #include "mifare.hpp"
    +#include <cstring>
    +
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    + + + + + + + + + + + + + +

    +Functions

    bool m5::nfc::a::mifare::classic::decode_value_block (int32_t &value, uint8_t &addr, const uint8_t buf[16])
     Decode the value of value block.
     
    const uint8_t * m5::nfc::a::mifare::classic::encode_value_block (uint8_t buf[16], const int32_t value, const uint8_t addr)
     Encode the value of value block.
     
    bool m5::nfc::a::mifare::classic::encode_access_bits (uint8_t abits[3], const uint8_t p0, const uint8_t p1, const uint8_t p2, const uint8_t p3)
     Encode access bits from permissions.
     
    bool m5::nfc::a::mifare::classic::decode_access_bits (uint8_t permissions[4], const uint8_t ab0, const uint8_t ab1, const uint8_t ab2)
     Decode access bits to permissions.
     
    +

    Detailed Description

    +

    MIFARE definitions.

    +

    Function Documentation

    + +

    ◆ decode_access_bits()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    bool m5::nfc::a::mifare::classic::decode_access_bits (uint8_t permissions[4],
    const uint8_t ab0,
    const uint8_t ab1,
    const uint8_t ab2 )
    +
    + +

    Decode access bits to permissions.

    +
    Parameters
    + + + + + +
    permissions[4]Output buffer at least 4 bytes
    ab01st byte of the access bits
    ab12nd byte of the access bits
    ab23rd byte of the access bits
    +
    +
    +
    Returns
    True if successful
    +
    Note
    permissions[0] block 0
    +
    +permissions[1] block 1
    +
    +permissions[2] block 2
    +
    +permissions[3] sector trailer
    +
    Warning
    Return values should always be checked
    + +
    +
    + +

    ◆ decode_value_block()

    + +
    +
    + + + + + + + + + + + + + + + + +
    bool m5::nfc::a::mifare::classic::decode_value_block (int32_t & value,
    uint8_t & addr,
    const uint8_t buf[16] )
    +
    + +

    Decode the value of value block.

    +
    Parameters
    + + + + +
    [out]valueValue
    [out]addrBlock address
    bufData of block(16 bytes)
    +
    +
    +
    Returns
    True if successful
    + +
    +
    + +

    ◆ encode_access_bits()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool m5::nfc::a::mifare::classic::encode_access_bits (uint8_t abits[3],
    const uint8_t p0,
    const uint8_t p1,
    const uint8_t p2,
    const uint8_t p3 )
    +
    + +

    Encode access bits from permissions.

    +
    Parameters
    + + + + + + +
    abits[3]Output buffer at least 3 bytes
    p0permissions for block 0
    p1permissions for block 1
    p2permissions for block 2
    p3permissions for sector tarailer
    +
    +
    +
    Returns
    True if successful
    +
    Warning
    Return values should always be checked
    +
    +Writing incorrect access bits may make the sector inaccessible!
    + +
    +
    + +

    ◆ encode_value_block()

    + +
    +
    + + + + + + + + + + + + + + + + +
    const uint8_t * m5::nfc::a::mifare::classic::encode_value_block (uint8_t buf[16],
    const int32_t value,
    const uint8_t addr )
    +
    + +

    Encode the value of value block.

    +
    Parameters
    + + + + +
    [out]bufOutput buffer at least 16 bytes
    valueValue
    addrBlock address
    +
    +
    +
    Returns
    Encoded buffer
    + +
    +
    +
    +
    + + + + diff --git a/mifare_8cpp.js b/mifare_8cpp.js new file mode 100644 index 0000000..320fe26 --- /dev/null +++ b/mifare_8cpp.js @@ -0,0 +1,7 @@ +var mifare_8cpp = +[ + [ "decode_access_bits", "mifare_8cpp.html#ac16996d9234a9a5fc2467a4925d30142", null ], + [ "decode_value_block", "mifare_8cpp.html#ae593ad8d9608d30bed275a3e33e8bcfa", null ], + [ "encode_access_bits", "mifare_8cpp.html#abf7a51fcc17ccc900b3fbdcf26b585d2", null ], + [ "encode_value_block", "mifare_8cpp.html#a0378982e28186360ac9eb38fa3128c3a", null ] +]; \ No newline at end of file diff --git a/mifare_8hpp.html b/mifare_8hpp.html new file mode 100644 index 0000000..b0c14b8 --- /dev/null +++ b/mifare_8hpp.html @@ -0,0 +1,957 @@ + + + + + + + +M5Unit-NFC: src/nfc/a/mifare.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    mifare.hpp File Reference
    +
    +
    + +

    MIFARE definitions. +More...

    +
    #include <cstdint>
    +#include <array>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    namespace  mifare
     For MIFARE.
     
    namespace  classic
     For MIFARE classic.
     
    namespace  desfire
     For MIFARE DESFire.
     
    namespace  plus
     For MIFARE Plus.
     
    + + + + + + + +

    +Typedefs

    +using m5::nfc::a::mifare::classic::Key = std::array<uint8_t, 6>
     MIFARE classic Key.
     
    +using m5::nfc::a::mifare::plus::AESKey = std::array<uint8_t, 16>
     MIFARE Plus SL2/3 Key (AES)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    constexpr bool m5::nfc::a::mifare::classic::can_value_block_permission (const uint8_t permission)
     Can this permission be used as a value block?
     
    constexpr bool m5::nfc::a::mifare::classic::is_sector_trailer_block (const uint16_t block)
     Is this block a sector trailer?
     
    constexpr uint16_t m5::nfc::a::mifare::classic::get_sector_trailer_block (const uint16_t block)
     Obtains the block address of the sector to which it belongs from the block address.
     
    constexpr uint16_t m5::nfc::a::mifare::classic::get_sector (const uint16_t block)
     Obtains the sector to which the block belongs from the block address.
     
    constexpr uint8_t m5::nfc::a::mifare::classic::get_permission_offset (const uint16_t block)
     Get the offset in the permissions of this block.
     
    constexpr uint16_t m5::nfc::a::mifare::classic::get_sector_trailer_block_from_sector (const uint16_t sector)
     Obtains the block address of the sector trailer from sector.
     
    bool m5::nfc::a::mifare::classic::decode_value_block (int32_t &value, uint8_t &addr, const uint8_t buf[16])
     Decode the value of value block.
     
    const uint8_t * m5::nfc::a::mifare::classic::encode_value_block (uint8_t buf[16], const int32_t value, const uint8_t addr)
     Encode the value of value block.
     
    bool m5::nfc::a::mifare::classic::encode_access_bits (uint8_t abits[3], const uint8_t p0, const uint8_t p1, const uint8_t p2, const uint8_t p3)
     Encode access bits from permissions.
     
    bool m5::nfc::a::mifare::classic::encode_access_bits (uint8_t abits[3], const uint8_t permissions[4])
     Encode access bits from permissions.
     
    bool m5::nfc::a::mifare::classic::decode_access_bits (uint8_t permissions[4], const uint8_t ab0, const uint8_t ab1, const uint8_t ab2)
     Decode access bits to permissions.
     
    bool m5::nfc::a::mifare::classic::decode_access_bits (uint8_t permissions[4], const uint8_t abits[3])
     Decode access bits to permissions.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    +constexpr uint16_t m5::nfc::a::mifare::classic::MIFARE_CLASSIC_MAX_TX_LEN {32}
     
    +constexpr uint16_t m5::nfc::a::mifare::classic::MIFARE_CLASSIC_MAX_RX_LEN {32}
     
    +constexpr uint16_t m5::nfc::a::mifare::classic::MIFARE_CLASSIC_MAX_TX_WITH_CRC {MIFARE_CLASSIC_MAX_TX_LEN + 2}
     
    +constexpr uint16_t m5::nfc::a::mifare::classic::MIFARE_CLASSIC_MAX_RX_WITH_CRC {MIFARE_CLASSIC_MAX_RX_LEN + 2}
     
    +constexpr uint16_t m5::nfc::a::mifare::classic::MIFARE_CLASSIC_MAX_BITSTREAM_LEN {(9 * MIFARE_CLASSIC_MAX_TX_WITH_CRC + 7) / 8}
     
    +constexpr Key m5::nfc::a::mifare::classic::DEFAULT_KEY {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}
     Default key for MIFARE classic.
     
    +constexpr uint32_t m5::nfc::a::mifare::desfire::DESFIRE_NDEF_APP_ID {0x000001}
     DESFire NDEF application AID.
     
    +constexpr uint8_t m5::nfc::a::mifare::desfire::DESFIRE_CC_FILE_NO {0x01}
     AN11004 default CC file number.
     
    +constexpr uint8_t m5::nfc::a::mifare::desfire::DESFIRE_NDEF_FILE_NO {0x02}
     AN11004 default NDEF file number.
     
    +constexpr uint8_t m5::nfc::a::mifare::desfire::DESFIRE_NDEF_AID [] = {0x00, 0x00, 0x01}
     DESFire NDEF AID (3 bytes)
     
    constexpr uint8_t m5::nfc::a::mifare::desfire::DESFIRE_LIGHT_DF_NAME []
     
    +constexpr uint16_t m5::nfc::a::mifare::desfire::DESFIRE_LIGHT_DF_FID {0xDF01}
     DESFire Light default DF FID.
     
    +constexpr uint8_t m5::nfc::a::mifare::desfire::DESFIRE_LIGHT_CC_FILE_NO {0x00}
     DESFire Light CC file number.
     
    +constexpr uint8_t m5::nfc::a::mifare::desfire::DESFIRE_LIGHT_NDEF_FILE_NO {0x04}
     DESFire Light NDEF file number.
     
    +constexpr uint16_t m5::nfc::a::mifare::desfire::DESFIRE_LIGHT_CC_FILE_ID {0xEF00}
     DESFire Light CC file ID.
     
    +constexpr uint16_t m5::nfc::a::mifare::desfire::DESFIRE_LIGHT_NDEF_FILE_ID {0xEF04}
     DESFire Light NDEF file ID.
     
    +constexpr uint16_t m5::nfc::a::mifare::desfire::DESFIRE_LIGHT_NDEF_FILE_SIZE {256}
     DESFire Light NDEF file size (bytes)
     
    +constexpr uint8_t m5::nfc::a::mifare::desfire::DESFIRE_DEFAULT_KEY [16] {}
     
    +constexpr AESKey m5::nfc::a::mifare::plus::DEFAULT_KEY {}
     Default key for MIFARE Plus.
     
    constexpr AESKey m5::nfc::a::mifare::plus::DEFAULT_FF_KEY
     Default AES sector key (as classic DEFAULT_KEY)
     
    Historical bytes for identity type
    +constexpr std::array< uint8_t, 7 > m5::nfc::a::mifare::historical_bytes_mifare_plus_s = {0xC1, 0x05, 0x2F, 0x2F, 0x00, 0x35, 0xC7}
     
    +constexpr std::array< uint8_t, 7 > m5::nfc::a::mifare::historical_bytes_mifare_plus_x_ev = {0xC1, 0x05, 0x2F, 0x2F, 0x01, 0xBC, 0xD6}
     
    +constexpr std::array< uint8_t, 7 > m5::nfc::a::mifare::historical_bytes_mifare_plus_se0 = {0xC1, 0x05, 0x21, 0x30, 0x00, 0xF6, 0xD1}
     
    +constexpr std::array< uint8_t, 7 > m5::nfc::a::mifare::historical_bytes_mifare_plus_se1 = {0xC1, 0x05, 0x21, 0x30, 0x10, 0xF6, 0xD1}
     
    +constexpr std::array< uint8_t, 7 > m5::nfc::a::mifare::historical_bytes_mifare_plus_se2 = {0xC1, 0x05, 0x21, 0x30, 0x00, 0x77, 0xC1}
     
    Access bit
    +constexpr uint8_t m5::nfc::a::mifare::classic::READ_WRITE_BLOCK {0x00}
     Read and write block.
     
    +constexpr uint8_t m5::nfc::a::mifare::classic::VALUE_BLOCK_NON_RECHARGEABLE {0x01}
     Value block (debit only)
     
    +constexpr uint8_t m5::nfc::a::mifare::classic::VALUE_BLOCK_RECHARGEABLE {0x06}
     Value block (rechargeable)
     
    + + + + + + + + + + + + + + +

    Access rights

    DESFire default key

    +
    constexpr int8_t m5::nfc::a::mifare::desfire::access_denied {-1}
     Obtain read permissions from access rights.
     
    constexpr int8_t m5::nfc::a::mifare::desfire::access_free {-2}
     Obtain read permissions from access rights.
     
    int8_t m5::nfc::a::mifare::desfire::required_read_key_no_from_access_rights (const uint16_t access_rights)
     Obtain read permissions from access rights.
     
    int8_t m5::nfc::a::mifare::desfire::required_write_key_no_from_access_rights (const uint16_t access_rights)
     Obtain rite permissions from access rights.
     
    +

    Detailed Description

    +

    MIFARE definitions.

    +

    Function Documentation

    + +

    ◆ can_value_block_permission()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool m5::nfc::a::mifare::classic::can_value_block_permission (const uint8_t permission)
    +
    +inlineconstexpr
    +
    + +

    Can this permission be used as a value block?

    +
    Returns
    True if can
    + +
    +
    + +

    ◆ decode_access_bits() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    bool m5::nfc::a::mifare::classic::decode_access_bits (uint8_t permissions[4],
    const uint8_t ab0,
    const uint8_t ab1,
    const uint8_t ab2 )
    +
    + +

    Decode access bits to permissions.

    +
    Parameters
    + + + + + +
    permissions[4]Output buffer at least 4 bytes
    ab01st byte of the access bits
    ab12nd byte of the access bits
    ab23rd byte of the access bits
    +
    +
    +
    Returns
    True if successful
    +
    Note
    permissions[0] block 0
    +
    +permissions[1] block 1
    +
    +permissions[2] block 2
    +
    +permissions[3] sector trailer
    +
    Warning
    Return values should always be checked
    + +
    +
    + +

    ◆ decode_access_bits() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    bool m5::nfc::a::mifare::classic::decode_access_bits (uint8_t permissions[4],
    const uint8_t abits[3] )
    +
    +inline
    +
    + +

    Decode access bits to permissions.

    +
    Parameters
    + + + +
    permissions[4]Output buffer at least 4 bytes
    abits[3]Array of the access bits
    +
    +
    +
    Returns
    True if successful
    +
    Warning
    Return values should always be checked
    + +
    +
    + +

    ◆ decode_value_block()

    + +
    +
    + + + + + + + + + + + + + + + + +
    bool m5::nfc::a::mifare::classic::decode_value_block (int32_t & value,
    uint8_t & addr,
    const uint8_t buf[16] )
    +
    + +

    Decode the value of value block.

    +
    Parameters
    + + + + +
    [out]valueValue
    [out]addrBlock address
    bufData of block(16 bytes)
    +
    +
    +
    Returns
    True if successful
    + +
    +
    + +

    ◆ encode_access_bits() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool m5::nfc::a::mifare::classic::encode_access_bits (uint8_t abits[3],
    const uint8_t p0,
    const uint8_t p1,
    const uint8_t p2,
    const uint8_t p3 )
    +
    + +

    Encode access bits from permissions.

    +
    Parameters
    + + + + + + +
    abits[3]Output buffer at least 3 bytes
    p0permissions for block 0
    p1permissions for block 1
    p2permissions for block 2
    p3permissions for sector tarailer
    +
    +
    +
    Returns
    True if successful
    +
    Warning
    Return values should always be checked
    +
    +Writing incorrect access bits may make the sector inaccessible!
    + +
    +
    + +

    ◆ encode_access_bits() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    bool m5::nfc::a::mifare::classic::encode_access_bits (uint8_t abits[3],
    const uint8_t permissions[4] )
    +
    +inline
    +
    + +

    Encode access bits from permissions.

    +
    Parameters
    + + + +
    abits[3]Output buffer at least 3 bytes
    permissions[4]Array of the permissions. [0];block0 ... [3]:sector trailer
    +
    +
    +
    Returns
    True if successful
    +
    Warning
    Return values should always be checked
    +
    +Writing incorrect access bits may make the sector inaccessible!
    + +
    +
    + +

    ◆ encode_value_block()

    + +
    +
    + + + + + + + + + + + + + + + + +
    const uint8_t * m5::nfc::a::mifare::classic::encode_value_block (uint8_t buf[16],
    const int32_t value,
    const uint8_t addr )
    +
    + +

    Encode the value of value block.

    +
    Parameters
    + + + + +
    [out]bufOutput buffer at least 16 bytes
    valueValue
    addrBlock address
    +
    +
    +
    Returns
    Encoded buffer
    + +
    +
    + +

    ◆ get_permission_offset()

    + +
    +
    + + + + + +
    + + + + + + + +
    uint8_t m5::nfc::a::mifare::classic::get_permission_offset (const uint16_t block)
    +
    +inlineconstexpr
    +
    + +

    Get the offset in the permissions of this block.

    +
    Returns
    Offset (0-3)
    + +
    +
    + +

    ◆ get_sector()

    + +
    +
    + + + + + +
    + + + + + + + +
    uint16_t m5::nfc::a::mifare::classic::get_sector (const uint16_t block)
    +
    +inlineconstexpr
    +
    + +

    Obtains the sector to which the block belongs from the block address.

    +
    Returns
    Sector no
    + +
    +
    + +

    ◆ get_sector_trailer_block()

    + +
    +
    + + + + + +
    + + + + + + + +
    uint16_t m5::nfc::a::mifare::classic::get_sector_trailer_block (const uint16_t block)
    +
    +inlineconstexpr
    +
    + +

    Obtains the block address of the sector to which it belongs from the block address.

    +
    Returns
    The sector trailer block address of the block belongs
    + +
    +
    + +

    ◆ get_sector_trailer_block_from_sector()

    + +
    +
    + + + + + +
    + + + + + + + +
    uint16_t m5::nfc::a::mifare::classic::get_sector_trailer_block_from_sector (const uint16_t sector)
    +
    +inlineconstexpr
    +
    + +

    Obtains the block address of the sector trailer from sector.

    +
    Parameters
    + + +
    sectorSector no
    +
    +
    +
    Returns
    The sector trailer block address of the sector
    + +
    +
    + +

    ◆ is_sector_trailer_block()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool m5::nfc::a::mifare::classic::is_sector_trailer_block (const uint16_t block)
    +
    +inlineconstexpr
    +
    + +

    Is this block a sector trailer?

    +
    Returns
    True if sector trailer
    + +
    +
    + +

    ◆ required_read_key_no_from_access_rights()

    + +
    +
    + + + + + +
    + + + + + + + +
    int8_t m5::nfc::a::mifare::desfire::required_read_key_no_from_access_rights (const uint16_t access_rights)
    +
    +inline
    +
    + +

    Obtain read permissions from access rights.

    +
    Parameters
    + + +
    access_rightsAccess rights
    +
    +
    +
    Return values
    + + + + +
    >=0 Key number to use
    ==access_denied Access denied
    ==access_free Access free
    +
    +
    + +
    +
    + +

    ◆ required_write_key_no_from_access_rights()

    + +
    +
    + + + + + +
    + + + + + + + +
    int8_t m5::nfc::a::mifare::desfire::required_write_key_no_from_access_rights (const uint16_t access_rights)
    +
    +inline
    +
    + +

    Obtain rite permissions from access rights.

    +
    Parameters
    + + +
    access_rightsAccess rights
    +
    +
    +
    Return values
    + + + + +
    >=0 Key number to use
    ==access_denied Access denied
    ==access_free Access free
    +
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ access_denied

    + +
    +
    + + + + + +
    + + + + +
    int8_t m5::nfc::a::mifare::desfire::access_denied {-1}
    +
    +constexpr
    +
    + +

    Obtain read permissions from access rights.

    +
    Parameters
    + + +
    access_rightsAccess rights
    +
    +
    +
    Return values
    + + + + +
    >=0 Key number to use
    ==access_denied Access denied
    ==access_free Access free
    +
    +
    + +
    +
    + +

    ◆ access_free

    + +
    +
    + + + + + +
    + + + + +
    int8_t m5::nfc::a::mifare::desfire::access_free {-2}
    +
    +constexpr
    +
    + +

    Obtain read permissions from access rights.

    +
    Parameters
    + + +
    access_rightsAccess rights
    +
    +
    +
    Return values
    + + + + +
    >=0 Key number to use
    ==access_denied Access denied
    ==access_free Access free
    +
    +
    + +
    +
    + +

    ◆ DEFAULT_FF_KEY

    + +
    +
    + + + + + +
    + + + + +
    AESKey m5::nfc::a::mifare::plus::DEFAULT_FF_KEY
    +
    +constexpr
    +
    +Initial value:
    = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    +
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}
    +
    +

    Default AES sector key (as classic DEFAULT_KEY)

    + +
    +
    + +

    ◆ DESFIRE_LIGHT_DF_NAME

    + +
    +
    + + + + + +
    + + + + +
    uint8_t m5::nfc::a::mifare::desfire::DESFIRE_LIGHT_DF_NAME[]
    +
    +constexpr
    +
    +Initial value:
    = {
    +
    0xA0, 0x00, 0x00, 0x03, 0x96, 0x56, 0x43, 0x41, 0x03, 0xF0, 0x15, 0x40, 0x00, 0x00, 0x00, 0x0B}
    +
    +
    +
    +
    +
    + + + + diff --git a/mifare_8hpp.js b/mifare_8hpp.js new file mode 100644 index 0000000..7612a2a --- /dev/null +++ b/mifare_8hpp.js @@ -0,0 +1,37 @@ +var mifare_8hpp = +[ + [ "AESKey", "mifare_8hpp.html#a3eeb737dbb14ec10fceed6a5286b961e", null ], + [ "Key", "mifare_8hpp.html#af1db86974ac295e399755ea6fb89e792", null ], + [ "can_value_block_permission", "mifare_8hpp.html#a639759a346abd881a51ac7a774a9ac5f", null ], + [ "decode_access_bits", "mifare_8hpp.html#ac16996d9234a9a5fc2467a4925d30142", null ], + [ "decode_access_bits", "mifare_8hpp.html#a0d89db3c0149f002ec87be13d36f1e87", null ], + [ "decode_value_block", "mifare_8hpp.html#ae593ad8d9608d30bed275a3e33e8bcfa", null ], + [ "encode_access_bits", "mifare_8hpp.html#abf7a51fcc17ccc900b3fbdcf26b585d2", null ], + [ "encode_access_bits", "mifare_8hpp.html#a9bbff8328dfb21ac5d098b075abb1f97", null ], + [ "encode_value_block", "mifare_8hpp.html#a0378982e28186360ac9eb38fa3128c3a", null ], + [ "get_permission_offset", "mifare_8hpp.html#ae4443b2bcf8e3735873b160d4aa69bad", null ], + [ "get_sector", "mifare_8hpp.html#a7d1a956b1580c8ef841113b53af0b9c5", null ], + [ "get_sector_trailer_block", "mifare_8hpp.html#afb8a0492f36aef7d5989faec3371876b", null ], + [ "get_sector_trailer_block_from_sector", "mifare_8hpp.html#ae34e37b263820c44fcfd84ce3f3c5d61", null ], + [ "is_sector_trailer_block", "mifare_8hpp.html#a13f7a151f4f03e07a3cee1b669836019", null ], + [ "required_read_key_no_from_access_rights", "mifare_8hpp.html#a0431c9806ae0c3dca72b0d2e1c68efd8", null ], + [ "required_write_key_no_from_access_rights", "mifare_8hpp.html#abf8d199a4af41bae63909d3f4e1a5aaf", null ], + [ "access_denied", "mifare_8hpp.html#a667835d11b4fe871db88689e34d99c50", null ], + [ "access_free", "mifare_8hpp.html#a5234cb215582f80f8a6eea74ccc0f00a", null ], + [ "DEFAULT_FF_KEY", "mifare_8hpp.html#a89347d3e0455feacfeba6f8c4d44c647", null ], + [ "DEFAULT_KEY", "mifare_8hpp.html#a0ea83570acb8b6017bf8a38c07efa8c3", null ], + [ "DEFAULT_KEY", "mifare_8hpp.html#a06b7ed4d6092d2a0852fc3be19d2e8a3", null ], + [ "DESFIRE_CC_FILE_NO", "mifare_8hpp.html#a04da257d20f082d0eb3b911d53752b2e", null ], + [ "DESFIRE_LIGHT_CC_FILE_ID", "mifare_8hpp.html#a65284c0e4f952f83d1dc571cf8577e4b", null ], + [ "DESFIRE_LIGHT_CC_FILE_NO", "mifare_8hpp.html#a7d2c3293ccc91642582b264e48aa2eac", null ], + [ "DESFIRE_LIGHT_DF_FID", "mifare_8hpp.html#a9a5bacd3729c9b05077d5042954bba17", null ], + [ "DESFIRE_LIGHT_NDEF_FILE_ID", "mifare_8hpp.html#a5b7888d4ba7b1504a6aafee0ac8a6305", null ], + [ "DESFIRE_LIGHT_NDEF_FILE_NO", "mifare_8hpp.html#a9d9253ad7867d9d7c4c5e9334f96178d", null ], + [ "DESFIRE_LIGHT_NDEF_FILE_SIZE", "mifare_8hpp.html#aa06fccad5fb69776ce10301e5ec6cb74", null ], + [ "DESFIRE_NDEF_AID", "mifare_8hpp.html#ac3aee62d580501a37dd86f750121fab2", null ], + [ "DESFIRE_NDEF_APP_ID", "mifare_8hpp.html#a9bac1030f86091cfdf850efb0c51cf60", null ], + [ "DESFIRE_NDEF_FILE_NO", "mifare_8hpp.html#a50ab50fcb1652e29d4a49e5915901447", null ], + [ "READ_WRITE_BLOCK", "mifare_8hpp.html#a04d7e469a5bf13381ff82b9b2e5c2d12", null ], + [ "VALUE_BLOCK_NON_RECHARGEABLE", "mifare_8hpp.html#a30a1c1073fca2491088351e917667d0e", null ], + [ "VALUE_BLOCK_RECHARGEABLE", "mifare_8hpp.html#a0f1353490d06daa12f2cfd17a693eaba", null ] +]; \ No newline at end of file diff --git a/mifare_8hpp_source.html b/mifare_8hpp_source.html new file mode 100644 index 0000000..b3f2bbb --- /dev/null +++ b/mifare_8hpp_source.html @@ -0,0 +1,325 @@ + + + + + + + +M5Unit-NFC: src/nfc/a/mifare.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    mifare.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    10#ifndef M5_UNIT_UNIFIED_NFC_NFC_A_MIFARE_HPP
    +
    11#define M5_UNIT_UNIFIED_NFC_NFC_A_MIFARE_HPP
    +
    12
    +
    13#include <cstdint>
    +
    14#include <array>
    +
    15
    +
    16namespace m5 {
    +
    17namespace nfc {
    +
    18namespace a {
    +
    23namespace mifare {
    +
    24
    +
    27constexpr std::array<uint8_t, 7> historical_bytes_mifare_plus_s = {0xC1, 0x05, 0x2F, 0x2F, 0x00, 0x35, 0xC7};
    +
    28constexpr std::array<uint8_t, 7> historical_bytes_mifare_plus_x_ev = {0xC1, 0x05, 0x2F, 0x2F, 0x01, 0xBC, 0xD6};
    +
    29constexpr std::array<uint8_t, 7> historical_bytes_mifare_plus_se0 = {0xC1, 0x05, 0x21, 0x30, 0x00, 0xF6, 0xD1};
    +
    30constexpr std::array<uint8_t, 7> historical_bytes_mifare_plus_se1 = {0xC1, 0x05, 0x21, 0x30, 0x10, 0xF6, 0xD1};
    +
    31constexpr std::array<uint8_t, 7> historical_bytes_mifare_plus_se2 = {0xC1, 0x05, 0x21, 0x30, 0x00, 0x77, 0xC1};
    +
    33
    +
    38namespace classic {
    +
    39
    +
    40constexpr uint16_t MIFARE_CLASSIC_MAX_TX_LEN{32};
    +
    41constexpr uint16_t MIFARE_CLASSIC_MAX_RX_LEN{32};
    +
    42constexpr uint16_t MIFARE_CLASSIC_MAX_TX_WITH_CRC{MIFARE_CLASSIC_MAX_TX_LEN + 2};
    +
    43constexpr uint16_t MIFARE_CLASSIC_MAX_RX_WITH_CRC{MIFARE_CLASSIC_MAX_RX_LEN + 2};
    +
    44constexpr uint16_t MIFARE_CLASSIC_MAX_BITSTREAM_LEN{(9 * MIFARE_CLASSIC_MAX_TX_WITH_CRC + 7) / 8};
    +
    45
    +
    50using Key = std::array<uint8_t, 6>;
    +
    51
    +
    53constexpr Key DEFAULT_KEY{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
    +
    54
    +
    57constexpr uint8_t READ_WRITE_BLOCK{0x00};
    +
    58constexpr uint8_t VALUE_BLOCK_NON_RECHARGEABLE{0x01};
    +
    59constexpr uint8_t VALUE_BLOCK_RECHARGEABLE{0x06};
    +
    61
    +
    +
    66inline constexpr bool can_value_block_permission(const uint8_t permission)
    +
    67{
    +
    68 return (permission == 0x00) || // transport configuration
    +
    69 (permission == 0x01) || // value block (Only read and decrement)
    +
    70 (permission == 0x06); // value block (Full operation)
    +
    71}
    +
    +
    72
    +
    +
    77inline constexpr bool is_sector_trailer_block(const uint16_t block)
    +
    78{
    +
    79 return (block < 128) ? (block & 0x03) == 0x03 : ((block - 128) & 0x0F) == 0x0F;
    +
    80}
    +
    +
    81
    +
    +
    86inline constexpr uint16_t get_sector_trailer_block(const uint16_t block)
    +
    87{
    +
    88 return (block < 128) ? (block | 0x03) : (block | 0x0F);
    +
    89}
    +
    +
    90
    +
    +
    95inline constexpr uint16_t get_sector(const uint16_t block)
    +
    96{
    +
    97 return (block < 128) ? (block >> 2) : 32 + ((block - 128) >> 4);
    +
    98}
    +
    +
    99
    +
    +
    104inline constexpr uint8_t get_permission_offset(const uint16_t block)
    +
    105{
    +
    106 return ((block < 128) ? (block & 0x03) : ((block - 128) & 0x0F) / 5) & 0x03;
    +
    107}
    +
    +
    108
    +
    +
    114inline constexpr uint16_t get_sector_trailer_block_from_sector(const uint16_t sector)
    +
    115{
    +
    116 return ((sector < 32) ? sector * ((sector < 32) ? 4U : 16U) : 128U + (sector - 32) * ((sector < 32) ? 4U : 16U)) +
    +
    117 ((sector < 32) ? 4U : 16U) - 1;
    +
    118}
    +
    +
    119
    +
    127bool decode_value_block(int32_t& value, uint8_t& addr, const uint8_t buf[16]);
    +
    135const uint8_t* encode_value_block(uint8_t buf[16], const int32_t value, const uint8_t addr);
    +
    136
    +
    148bool encode_access_bits(uint8_t abits[3], const uint8_t p0, const uint8_t p1, const uint8_t p2, const uint8_t p3);
    +
    +
    157inline bool encode_access_bits(uint8_t abits[3], const uint8_t permissions[4])
    +
    158{
    +
    159 return encode_access_bits(abits, permissions[0], permissions[1], permissions[2], permissions[3]);
    +
    160}
    +
    +
    174bool decode_access_bits(uint8_t permissions[4], const uint8_t ab0, const uint8_t ab1, const uint8_t ab2);
    +
    +
    182inline bool decode_access_bits(uint8_t permissions[4], const uint8_t abits[3])
    +
    183{
    +
    184 return decode_access_bits(permissions, abits[0], abits[1], abits[2]);
    +
    185}
    +
    +
    186
    +
    187} // namespace classic
    +
    188
    +
    193namespace desfire {
    +
    194
    +
    195constexpr uint32_t DESFIRE_NDEF_APP_ID{0x000001};
    +
    196constexpr uint8_t DESFIRE_CC_FILE_NO{0x01};
    +
    197constexpr uint8_t DESFIRE_NDEF_FILE_NO{0x02};
    +
    198constexpr uint8_t DESFIRE_NDEF_AID[] = {0x00, 0x00, 0x01};
    +
    199
    +
    200constexpr uint8_t DESFIRE_LIGHT_DF_NAME[] = {
    +
    201 0xA0, 0x00, 0x00, 0x03, 0x96, 0x56, 0x43, 0x41, 0x03, 0xF0, 0x15, 0x40, 0x00, 0x00, 0x00, 0x0B};
    +
    202constexpr uint16_t DESFIRE_LIGHT_DF_FID{0xDF01};
    +
    203constexpr uint8_t DESFIRE_LIGHT_CC_FILE_NO{0x00};
    +
    204constexpr uint8_t DESFIRE_LIGHT_NDEF_FILE_NO{0x04};
    +
    205constexpr uint16_t DESFIRE_LIGHT_CC_FILE_ID{0xEF00};
    +
    206constexpr uint16_t DESFIRE_LIGHT_NDEF_FILE_ID{0xEF04};
    +
    207constexpr uint16_t DESFIRE_LIGHT_NDEF_FILE_SIZE{256};
    +
    208
    +
    209constexpr uint8_t DESFIRE_DEFAULT_KEY[16]{};
    +
    210
    +
    213constexpr int8_t access_denied{-1};
    +
    214constexpr int8_t access_free{-2};
    +
    +
    222inline int8_t required_read_key_no_from_access_rights(const uint16_t access_rights)
    +
    223{
    +
    224 const uint8_t read_key = (access_rights >> 12) & 0x0F;
    +
    225 const uint8_t rw_key = (access_rights >> 4) & 0x0F;
    +
    226 if (read_key == 0x0E) {
    +
    227 return access_free;
    +
    228 }
    +
    229 if (read_key != 0x0F) {
    +
    230 return read_key;
    +
    231 }
    +
    232 if (rw_key == 0x0E) {
    +
    233 return access_free;
    +
    234 }
    +
    235 if (rw_key != 0x0F) {
    +
    236 return rw_key;
    +
    237 }
    +
    238 return access_denied;
    +
    239}
    +
    +
    +
    247inline int8_t required_write_key_no_from_access_rights(const uint16_t access_rights)
    +
    248{
    +
    249 const uint8_t write_key = (access_rights >> 8) & 0x0F; // Write
    +
    250 const uint8_t rw_key = (access_rights >> 4) & 0x0F; // Read/Write
    +
    251 if (write_key == 0x0E) {
    +
    252 return access_free;
    +
    253 }
    +
    254 if (write_key != 0x0F) {
    +
    255 return write_key;
    +
    256 }
    +
    257 if (rw_key == 0x0E) {
    +
    258 return access_free;
    +
    259 }
    +
    260 if (rw_key != 0x0F) {
    +
    261 return rw_key;
    +
    262 }
    +
    263 return access_denied;
    +
    264}
    +
    +
    266
    +
    267} // namespace desfire
    +
    268
    +
    273namespace plus {
    +
    274
    +
    279using AESKey = std::array<uint8_t, 16>;
    +
    281constexpr AESKey DEFAULT_KEY{}; // All 0x00
    +
    +
    283constexpr AESKey DEFAULT_FF_KEY = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    +
    284 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
    +
    +
    285
    +
    286} // namespace plus
    +
    287
    +
    288} // namespace mifare
    +
    289} // namespace a
    +
    290} // namespace nfc
    +
    291} // namespace m5
    +
    292#endif
    +
    bool encode_access_bits(uint8_t abits[3], const uint8_t p0, const uint8_t p1, const uint8_t p2, const uint8_t p3)
    Encode access bits from permissions.
    Definition mifare.cpp:54
    +
    bool decode_access_bits(uint8_t permissions[4], const uint8_t ab0, const uint8_t ab1, const uint8_t ab2)
    Decode access bits to permissions.
    Definition mifare.cpp:70
    +
    constexpr uint8_t READ_WRITE_BLOCK
    Read and write block.
    Definition mifare.hpp:57
    +
    constexpr uint8_t DESFIRE_CC_FILE_NO
    AN11004 default CC file number.
    Definition mifare.hpp:196
    +
    constexpr Key DEFAULT_KEY
    Default key for MIFARE classic.
    Definition mifare.hpp:53
    +
    constexpr uint8_t VALUE_BLOCK_RECHARGEABLE
    Value block (rechargeable)
    Definition mifare.hpp:59
    +
    constexpr bool is_sector_trailer_block(const uint16_t block)
    Is this block a sector trailer?
    Definition mifare.hpp:77
    +
    constexpr uint8_t VALUE_BLOCK_NON_RECHARGEABLE
    Value block (debit only)
    Definition mifare.hpp:58
    +
    std::array< uint8_t, 16 > AESKey
    MIFARE Plus SL2/3 Key (AES)
    Definition mifare.hpp:279
    +
    constexpr uint8_t DESFIRE_NDEF_FILE_NO
    AN11004 default NDEF file number.
    Definition mifare.hpp:197
    +
    constexpr uint16_t DESFIRE_LIGHT_NDEF_FILE_ID
    DESFire Light NDEF file ID.
    Definition mifare.hpp:206
    +
    constexpr bool can_value_block_permission(const uint8_t permission)
    Can this permission be used as a value block?
    Definition mifare.hpp:66
    +
    constexpr uint16_t DESFIRE_LIGHT_CC_FILE_ID
    DESFire Light CC file ID.
    Definition mifare.hpp:205
    +
    constexpr uint16_t get_sector(const uint16_t block)
    Obtains the sector to which the block belongs from the block address.
    Definition mifare.hpp:95
    +
    constexpr uint8_t DESFIRE_LIGHT_CC_FILE_NO
    DESFire Light CC file number.
    Definition mifare.hpp:203
    +
    constexpr AESKey DEFAULT_FF_KEY
    Default AES sector key (as classic DEFAULT_KEY)
    Definition mifare.hpp:283
    +
    constexpr uint16_t DESFIRE_LIGHT_DF_FID
    DESFire Light default DF FID.
    Definition mifare.hpp:202
    +
    constexpr uint32_t DESFIRE_NDEF_APP_ID
    DESFire NDEF application AID.
    Definition mifare.hpp:195
    +
    constexpr uint8_t DESFIRE_LIGHT_NDEF_FILE_NO
    DESFire Light NDEF file number.
    Definition mifare.hpp:204
    +
    constexpr uint16_t DESFIRE_LIGHT_NDEF_FILE_SIZE
    DESFire Light NDEF file size (bytes)
    Definition mifare.hpp:207
    +
    constexpr uint8_t DESFIRE_NDEF_AID[]
    DESFire NDEF AID (3 bytes)
    Definition mifare.hpp:198
    +
    constexpr uint16_t get_sector_trailer_block_from_sector(const uint16_t sector)
    Obtains the block address of the sector trailer from sector.
    Definition mifare.hpp:114
    +
    constexpr uint8_t get_permission_offset(const uint16_t block)
    Get the offset in the permissions of this block.
    Definition mifare.hpp:104
    +
    std::array< uint8_t, 6 > Key
    MIFARE classic Key.
    Definition mifare.hpp:50
    +
    constexpr uint16_t get_sector_trailer_block(const uint16_t block)
    Obtains the block address of the sector to which it belongs from the block address.
    Definition mifare.hpp:86
    +
    NFC-A definitions.
    +
    For MIFARE classic.
    +
    Top level namespace of M5stack.
    +
    For MIFARE.
    +
    NFC related definitions.
    +
    For MIFARE Plus.
    +
    +
    + + + + diff --git a/mifare__classic__crypto1_8hpp.html b/mifare__classic__crypto1_8hpp.html new file mode 100644 index 0000000..13b19c1 --- /dev/null +++ b/mifare__classic__crypto1_8hpp.html @@ -0,0 +1,143 @@ + + + + + + + +M5Unit-NFC: src/nfc/crypto/mifare_classic_crypto1.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    mifare_classic_crypto1.hpp File Reference
    +
    +
    + +

    Crypto1 for MIFARE Classic. +More...

    +
    #include <M5Utility.hpp>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  m5::nfc::a::mifare::classic::Crypto1
     Crypto1 for MIFARE Classic. More...
     
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    + + + +

    +Typedefs

    +using m5::nfc::a::mifare::classic::MLFSR48 = m5::utility::FibonacciLFSR_Left<48, 5, 6, 7, 9, 13, 19, 21, 23, 24, 29, 31, 33, 34, 36, 38, 39, 43, 48>
     
    +

    Detailed Description

    +

    Crypto1 for MIFARE Classic.

    +
    +
    + + + + diff --git a/mifare__classic__crypto1_8hpp.js b/mifare__classic__crypto1_8hpp.js new file mode 100644 index 0000000..18e4622 --- /dev/null +++ b/mifare__classic__crypto1_8hpp.js @@ -0,0 +1,4 @@ +var mifare__classic__crypto1_8hpp = +[ + [ "m5::nfc::a::mifare::classic::Crypto1", "classm5_1_1nfc_1_1a_1_1mifare_1_1classic_1_1_crypto1.html", null ] +]; \ No newline at end of file diff --git a/mifare__classic__crypto1_8hpp_source.html b/mifare__classic__crypto1_8hpp_source.html new file mode 100644 index 0000000..c088521 --- /dev/null +++ b/mifare__classic__crypto1_8hpp_source.html @@ -0,0 +1,273 @@ + + + + + + + +M5Unit-NFC: src/nfc/crypto/mifare_classic_crypto1.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    mifare_classic_crypto1.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    10#ifndef M5_UNIT_UNIFIED_NFC_NFC_A_MIFARE_CLASSIC_CRYPTO1_HPP
    +
    11#define M5_UNIT_UNIFIED_NFC_NFC_A_MIFARE_CLASSIC_CRYPTO1_HPP
    +
    12
    +
    13#include <M5Utility.hpp>
    +
    14
    +
    15namespace m5 {
    +
    16namespace nfc {
    +
    17namespace a {
    +
    18namespace mifare {
    +
    19namespace classic {
    +
    20
    +
    21using MLFSR48 = m5::utility::FibonacciLFSR_Left<48, 5, 6, 7, 9, 13, 19, 21, 23, 24, 29, 31, 33, 34, 36, 38, 39, 43, 48>;
    +
    +
    26class Crypto1 : public MLFSR48 {
    +
    27public:
    +
    28 Crypto1() noexcept : MLFSR48(0)
    +
    29 {
    +
    30 }
    +
    31
    +
    32 explicit Crypto1(const uint64_t key48) noexcept : MLFSR48(0)
    +
    33 {
    +
    34 init(key48);
    +
    35 }
    +
    36
    +
    37 void init(const uint64_t key48) noexcept
    +
    38 {
    +
    39 _state = state_type_t{};
    +
    40 // Change the bit order within the byte to LSB first
    +
    41 for (int i = 0; i < 48; ++i) {
    +
    42 int byte_index = i >> 3;
    +
    43 int bit_index = i & 0x07;
    +
    44 int reversed = (byte_index << 3) + (bit_index ^ 7);
    +
    45 bool bit = (key48 >> reversed) & 1ULL;
    +
    46 _state[i] = bit;
    +
    47 }
    +
    48 _count = 0;
    +
    49 }
    +
    50
    +
    51 inline uint32_t inject(uint32_t uid, uint32_t Nt, const bool encrypted = false) noexcept
    +
    52 {
    +
    53 return step32(uid ^ Nt, encrypted);
    +
    54 }
    +
    55
    +
    56 bool step_with(const bool in, const bool enc = false) noexcept
    +
    57 {
    +
    58 ++_count;
    +
    59
    +
    60 bool z = filter();
    +
    61 (void)step();
    +
    62 const bool ext = in ^ (enc ? z : 0);
    +
    63 _state[0] = _state[0] ^ ext;
    +
    64 return z;
    +
    65 }
    +
    66
    +
    67 uint8_t step8(const uint8_t in, const bool enc = false) noexcept
    +
    68 {
    +
    69 uint8_t v{};
    +
    70 for (uint_fast8_t i = 0; i < 8; ++i) {
    +
    71 v |= step_with((in >> i) & 1, enc) << i;
    +
    72 }
    +
    73 return v;
    +
    74 }
    +
    75
    +
    76 uint32_t step32(const uint32_t in, const bool enc = false) noexcept
    +
    77 {
    +
    78 uint32_t v{};
    +
    79 for (uint32_t i = 0; i < 32; ++i) {
    +
    80 bool t = step_with((in >> (i ^ 24)) & 1u, enc);
    +
    81 v |= t << (24 ^ i);
    +
    82 }
    +
    83 return v;
    +
    84 }
    +
    85
    +
    86 static inline uint8_t oddparity8(uint8_t x) noexcept
    +
    87 {
    +
    88 return !__builtin_parity(x);
    +
    89 }
    +
    90
    +
    91 uint8_t encrypt(uint8_t buf[8], const uint32_t Nr, const uint32_t Ar) noexcept
    +
    92 {
    +
    93 uint8_t parity{};
    +
    94 for (uint_fast8_t i = 0; i < 4; ++i) {
    +
    95 const uint8_t v = ((Nr >> ((i ^ 0x03) << 3)) & 0xFF);
    +
    96 buf[i] = step8(v) ^ v;
    +
    97 const uint8_t z = filter();
    +
    98 parity |= static_cast<uint8_t>((z ^ oddparity8(v)) & 0x01) << i;
    +
    99 }
    +
    100
    +
    101 for (uint_fast8_t pos = 4; pos < 8; ++pos) {
    +
    102 const uint8_t i = pos - 4;
    +
    103 // const uint8_t v = static_cast<uint8_t>(Ar >> (i << 3));
    +
    104 const uint8_t v = (Ar >> (i << 3)) & 0xFF;
    +
    105 const uint8_t ks = step8(0x00);
    +
    106 buf[pos] = ks ^ v;
    +
    107 const uint8_t z = filter();
    +
    108 parity |= static_cast<uint8_t>((z ^ oddparity8(v)) & 0x01) << pos;
    +
    109 }
    +
    110 return parity;
    +
    111 }
    +
    112
    +
    113 uint32_t encrypt(uint8_t* out, const uint8_t* in, const uint8_t in_len /* max 32 */)
    +
    114 {
    +
    115 uint32_t parity{};
    +
    116 for (uint_fast8_t i = 0; i < in_len; ++i) {
    +
    117 uint8_t ks = step8(0);
    +
    118 out[i] = in[i] ^ ks;
    +
    119 parity |= ((filter() ^ oddparity8(in[i])) & 1) << i;
    +
    120 }
    +
    121 return parity;
    +
    122 }
    +
    123
    +
    124 inline bool filter() const noexcept
    +
    125 {
    +
    126 const state_type_t& s = state();
    +
    127 const bool b5 = fb(s[6], s[4], s[2], s[0]);
    +
    128 const bool a4 = fa(s[14], s[12], s[10], s[8]);
    +
    129 const bool b3 = fb(s[22], s[20], s[18], s[16]);
    +
    130 const bool b2 = fb(s[30], s[28], s[26], s[24]);
    +
    131 const bool a1 = fa(s[38], s[36], s[34], s[32]);
    +
    132 return fc(a1, b2, b3, a4, b5);
    +
    133 }
    +
    134
    +
    135 inline static bool fa(bool a, bool b, bool c, bool d) noexcept
    +
    136 {
    +
    137 return ((a || b) ^ (a && d)) ^ (c && ((a ^ b) || d));
    +
    138 }
    +
    139
    +
    140 inline static bool fb(bool a, bool b, bool c, bool d) noexcept
    +
    141 {
    +
    142 return ((a && b) || c) ^ ((a ^ b) && (c || d));
    +
    143 }
    +
    144
    +
    145 inline static bool fc(bool a, bool b, bool c, bool d, bool e) noexcept
    +
    146 {
    +
    147 return (a || ((b || e) && (d ^ e))) ^ ((a ^ (b && d)) && ((c ^ d) || (b && e)));
    +
    148 }
    +
    149
    +
    150 uint32_t _count{}; // for debug
    +
    151};
    +
    +
    152
    +
    153} // namespace classic
    +
    154} // namespace mifare
    +
    155} // namespace a
    +
    156} // namespace nfc
    +
    157} // namespace m5
    +
    158
    +
    159#endif
    +
    Crypto1 for MIFARE Classic.
    Definition mifare_classic_crypto1.hpp:26
    +
    NFC-A definitions.
    +
    NFC-B definitions.
    +
    For MIFARE classic.
    +
    Top level namespace of M5stack.
    +
    For MIFARE.
    +
    NFC related definitions.
    +
    NFC-V definitions.
    +
    +
    + + + + diff --git a/minus.svg b/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/minusd.svg b/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/namespacea.html b/namespacea.html new file mode 100644 index 0000000..1f1765a --- /dev/null +++ b/namespacea.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: a Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    a Namespace Reference
    +
    +
    + +

    NFC-A definitions. +More...

    +

    Detailed Description

    +

    NFC-A definitions.

    +
    +
    + + + + diff --git a/namespaceapdu.html b/namespaceapdu.html new file mode 100644 index 0000000..9bd8f8a --- /dev/null +++ b/namespaceapdu.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: apdu Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    apdu Namespace Reference
    +
    +
    + +

    For APDU. +More...

    +

    Detailed Description

    +

    For APDU.

    +
    +
    + + + + diff --git a/namespaceb.html b/namespaceb.html new file mode 100644 index 0000000..4958270 --- /dev/null +++ b/namespaceb.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: b Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    b Namespace Reference
    +
    +
    + +

    NFC-B definitions. +More...

    +

    Detailed Description

    +

    NFC-B definitions.

    +
    +
    + + + + diff --git a/namespaceclassic.html b/namespaceclassic.html new file mode 100644 index 0000000..897aadf --- /dev/null +++ b/namespaceclassic.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: classic Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    classic Namespace Reference
    +
    +
    + +

    For MIFARE classic. +More...

    +

    Detailed Description

    +

    For MIFARE classic.

    +
    +
    + + + + diff --git a/namespacedesfire.html b/namespacedesfire.html new file mode 100644 index 0000000..2227725 --- /dev/null +++ b/namespacedesfire.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: desfire Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    desfire Namespace Reference
    +
    +
    + +

    For MIFARE DESFire. +More...

    +

    Detailed Description

    +

    For MIFARE DESFire.

    +
    +
    + + + + diff --git a/namespacef.html b/namespacef.html new file mode 100644 index 0000000..08231b2 --- /dev/null +++ b/namespacef.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: f Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    f Namespace Reference
    +
    +
    + +

    NFC-F definitions. +More...

    +

    Detailed Description

    +

    NFC-F definitions.

    +
    +
    + + + + diff --git a/namespaceisodep.html b/namespaceisodep.html new file mode 100644 index 0000000..2a3cc93 --- /dev/null +++ b/namespaceisodep.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: isodep Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    isodep Namespace Reference
    +
    +
    + +

    For ISO-DEP. +More...

    +

    Detailed Description

    +

    For ISO-DEP.

    +
    +
    + + + + diff --git a/namespacem5.html b/namespacem5.html new file mode 100644 index 0000000..8ea14a9 --- /dev/null +++ b/namespacem5.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: m5 Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5 Namespace Reference
    +
    +
    + +

    Top level namespace of M5stack. +More...

    +

    Detailed Description

    +

    Top level namespace of M5stack.

    +
    +
    + + + + diff --git a/namespacem5_1_1nfc_1_1f_1_1lite.html b/namespacem5_1_1nfc_1_1f_1_1lite.html new file mode 100644 index 0000000..14b93b8 --- /dev/null +++ b/namespacem5_1_1nfc_1_1f_1_1lite.html @@ -0,0 +1,195 @@ + + + + + + + +M5Unit-NFC: m5::nfc::f::lite Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::f::lite Namespace Reference
    +
    +
    + +

    For FeliCa Lite. +More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    Block
    +constexpr block_t S_PAD0 {0x00}
     
    +constexpr block_t S_PAD1 {0x01}
     
    +constexpr block_t S_PAD2 {0x02}
     
    +constexpr block_t S_PAD3 {0x03}
     
    +constexpr block_t S_PAD4 {0x04}
     
    +constexpr block_t S_PAD5 {0x05}
     
    +constexpr block_t S_PAD6 {0x06}
     
    +constexpr block_t S_PAD7 {0x07}
     
    +constexpr block_t S_PAD8 {0x08}
     
    +constexpr block_t S_PAD9 {0x09}
     
    +constexpr block_t S_PAD10 {0x0A}
     
    +constexpr block_t S_PAD11 {0x0B}
     
    +constexpr block_t S_PAD12 {0X0C}
     
    +constexpr block_t S_PAD13 {0x0D}
     
    +constexpr block_t REG {0x0E}
     
    +constexpr block_t RC {0x80}
     
    +constexpr block_t MAC {0x81}
     
    +constexpr block_t ID {0x082}
     
    +constexpr block_t D_ID {0x83}
     
    +constexpr block_t SER_C {0x84}
     
    +constexpr block_t SYS_C {0x85}
     
    +constexpr block_t CKV {0x86}
     
    +constexpr block_t CK {0x87}
     
    +constexpr block_t MC {0x88}
     
    +

    Detailed Description

    +

    For FeliCa Lite.

    +

    @namespacce lite

    +
    +
    + + + + diff --git a/namespacem5_1_1nfc_1_1f_1_1lite__s.html b/namespacem5_1_1nfc_1_1f_1_1lite__s.html new file mode 100644 index 0000000..39edda5 --- /dev/null +++ b/namespacem5_1_1nfc_1_1f_1_1lite__s.html @@ -0,0 +1,254 @@ + + + + + + + +M5Unit-NFC: m5::nfc::f::lite_s Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::f::lite_s Namespace Reference
    +
    +
    + +

    For FeliCa Lite-S. +More...

    + + + + + +

    +Enumerations

    enum class  Mode : uint8_t { Mode00 +, Mode01 +, Mode10 +, Mode11 + }
     Mode for LiteS. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    Block
    +constexpr block_t S_PAD0 {0x00}
     
    +constexpr block_t S_PAD1 {0x01}
     
    +constexpr block_t S_PAD2 {0x02}
     
    +constexpr block_t S_PAD3 {0x03}
     
    +constexpr block_t S_PAD4 {0x04}
     
    +constexpr block_t S_PAD5 {0x05}
     
    +constexpr block_t S_PAD6 {0x06}
     
    +constexpr block_t S_PAD7 {0x07}
     
    +constexpr block_t S_PAD8 {0x08}
     
    +constexpr block_t S_PAD9 {0x09}
     
    +constexpr block_t S_PAD10 {0x0A}
     
    +constexpr block_t S_PAD11 {0x0B}
     
    +constexpr block_t S_PAD12 {0X0C}
     
    +constexpr block_t S_PAD13 {0x0D}
     
    +constexpr block_t REG {0x0E}
     
    +constexpr block_t RC {0x80}
     
    +constexpr block_t MAC {0x81}
     
    +constexpr block_t ID {0x082}
     
    +constexpr block_t D_ID {0x83}
     
    +constexpr block_t SER_C {0x84}
     
    +constexpr block_t SYS_C {0x85}
     
    +constexpr block_t CKV {0x86}
     
    +constexpr block_t CK {0x87}
     
    +constexpr block_t MC {0x88}
     
    +constexpr block_t WCNT {0x90}
     
    +constexpr block_t MAC_A {0x91}
     
    +constexpr block_t STATE {0x92}
     
    +constexpr block_t CRC_CHECK {0xA0}
     
    +

    Detailed Description

    +

    For FeliCa Lite-S.

    +

    @namespacce lite_s

    +

    Enumeration Type Documentation

    + +

    ◆ Mode

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::f::lite_s::Mode : uint8_t
    +
    +strong
    +
    + +

    Mode for LiteS.

    + + + + + +
    Enumerator
    Mode00 

    External authentication incomplete, polling response possible.

    +
    Mode01 

    External authentication incomplete, polling response not possible.

    +
    Mode10 

    External authentication complete, polling response possible.

    +
    Mode11 

    External authentication complete, polling response not possible.

    +
    + +
    +
    +
    +
    + + + + diff --git a/namespacemembers.html b/namespacemembers.html new file mode 100644 index 0000000..dd4f65a --- /dev/null +++ b/namespacemembers.html @@ -0,0 +1,111 @@ + + + + + + + +M5Unit-NFC: Namespace Members + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    +
    +
    + + + + diff --git a/namespacemembers_enum.html b/namespacemembers_enum.html new file mode 100644 index 0000000..293a3c7 --- /dev/null +++ b/namespacemembers_enum.html @@ -0,0 +1,111 @@ + + + + + + + +M5Unit-NFC: Namespace Members + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace enums with links to the namespaces they belong to:
    +
    +
    + + + + diff --git a/namespacemifare.html b/namespacemifare.html new file mode 100644 index 0000000..b82c8f7 --- /dev/null +++ b/namespacemifare.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: mifare Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    mifare Namespace Reference
    +
    +
    + +

    For MIFARE. +More...

    +

    Detailed Description

    +

    For MIFARE.

    +
    +
    + + + + diff --git a/namespacendef.html b/namespacendef.html new file mode 100644 index 0000000..10e13a2 --- /dev/null +++ b/namespacendef.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: ndef Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ndef Namespace Reference
    +
    +
    + +

    For NDEF. +More...

    +

    Detailed Description

    +

    For NDEF.

    +
    +
    + + + + diff --git a/namespacenfc.html b/namespacenfc.html new file mode 100644 index 0000000..3daa9d5 --- /dev/null +++ b/namespacenfc.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: nfc Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    nfc Namespace Reference
    +
    +
    + +

    NFC related definitions. +More...

    +

    Detailed Description

    +

    NFC related definitions.

    +
    +
    + + + + diff --git a/namespaceplus.html b/namespaceplus.html new file mode 100644 index 0000000..3af2b1b --- /dev/null +++ b/namespaceplus.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: plus Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    plus Namespace Reference
    +
    +
    + +

    For MIFARE Plus. +More...

    +

    Detailed Description

    +

    For MIFARE Plus.

    +
    +
    + + + + diff --git a/namespaceregval.html b/namespaceregval.html new file mode 100644 index 0000000..c91f07a --- /dev/null +++ b/namespaceregval.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: regval Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    regval Namespace Reference
    +
    +
    + +

    Register setting value. +More...

    +

    Detailed Description

    +

    Register setting value.

    +
    +
    + + + + diff --git a/namespaces.html b/namespaces.html new file mode 100644 index 0000000..a20d93e --- /dev/null +++ b/namespaces.html @@ -0,0 +1,137 @@ + + + + + + + +M5Unit-NFC: Namespace List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Namespace List
    +
    +
    +
    Here is a list of all documented namespaces with brief descriptions:
    + + + + + + + + + + + + + + + + + + + + + + + +
     NaNFC-A definitions
     NapduFor APDU
     NbNFC-B definitions
     NclassicFor MIFARE classic
     NdesfireFor MIFARE DESFire
     NfNFC-F definitions
     NisodepFor ISO-DEP
     Nm5Top level namespace of M5stack
     NmifareFor MIFARE
     NndefFor NDEF
     NnfcNFC related definitions
     NplusFor MIFARE Plus
     NregvalRegister setting value
     Nst25r3916For ST25R3916
     Nst25taFor ST25TA series
     NstandardFor FeliCa Standard
     Ntype2For NDEF Type2
     Ntype3For NDEF Type3
     Ntype4For NDEF Type4
     Ntype5For NDEF Type5
     NunitUnit-related namespace
     NvNFC-V definitions
    +
    +
    +
    + + + + diff --git a/namespaces_dup.js b/namespaces_dup.js new file mode 100644 index 0000000..40c13d4 --- /dev/null +++ b/namespaces_dup.js @@ -0,0 +1,25 @@ +var namespaces_dup = +[ + [ "a", "namespacea.html", null ], + [ "apdu", "namespaceapdu.html", null ], + [ "b", "namespaceb.html", null ], + [ "classic", "namespaceclassic.html", null ], + [ "desfire", "namespacedesfire.html", null ], + [ "f", "namespacef.html", null ], + [ "isodep", "namespaceisodep.html", null ], + [ "m5", "namespacem5.html", null ], + [ "mifare", "namespacemifare.html", null ], + [ "ndef", "namespacendef.html", null ], + [ "nfc", "namespacenfc.html", null ], + [ "plus", "namespaceplus.html", null ], + [ "regval", "namespaceregval.html", null ], + [ "st25r3916", "namespacest25r3916.html", null ], + [ "st25ta", "namespacest25ta.html", null ], + [ "standard", "namespacestandard.html", null ], + [ "type2", "namespacetype2.html", null ], + [ "type3", "namespacetype3.html", null ], + [ "type4", "namespacetype4.html", null ], + [ "type5", "namespacetype5.html", null ], + [ "unit", "namespaceunit.html", null ], + [ "v", "namespacev.html", null ] +]; \ No newline at end of file diff --git a/namespacest25r3916.html b/namespacest25r3916.html new file mode 100644 index 0000000..4b4ceb3 --- /dev/null +++ b/namespacest25r3916.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: st25r3916 Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    st25r3916 Namespace Reference
    +
    +
    + +

    For ST25R3916. +More...

    +

    Detailed Description

    +

    For ST25R3916.

    +
    +
    + + + + diff --git a/namespacest25ta.html b/namespacest25ta.html new file mode 100644 index 0000000..b399ea2 --- /dev/null +++ b/namespacest25ta.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: st25ta Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    st25ta Namespace Reference
    +
    +
    + +

    For ST25TA series. +More...

    +

    Detailed Description

    +

    For ST25TA series.

    +
    +
    + + + + diff --git a/namespacestandard.html b/namespacestandard.html new file mode 100644 index 0000000..9ccfddd --- /dev/null +++ b/namespacestandard.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: standard Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    standard Namespace Reference
    +
    +
    + +

    For FeliCa Standard. +More...

    +

    Detailed Description

    +

    For FeliCa Standard.

    +
    +
    + + + + diff --git a/namespacetype2.html b/namespacetype2.html new file mode 100644 index 0000000..763202d --- /dev/null +++ b/namespacetype2.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: type2 Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    type2 Namespace Reference
    +
    +
    + +

    For NDEF Type2. +More...

    +

    Detailed Description

    +

    For NDEF Type2.

    +
    +
    + + + + diff --git a/namespacetype3.html b/namespacetype3.html new file mode 100644 index 0000000..b3db736 --- /dev/null +++ b/namespacetype3.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: type3 Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    type3 Namespace Reference
    +
    +
    + +

    For NDEF Type3. +More...

    +

    Detailed Description

    +

    For NDEF Type3.

    +
    +
    + + + + diff --git a/namespacetype4.html b/namespacetype4.html new file mode 100644 index 0000000..76ecdad --- /dev/null +++ b/namespacetype4.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: type4 Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    type4 Namespace Reference
    +
    +
    + +

    For NDEF Type4. +More...

    +

    Detailed Description

    +

    For NDEF Type4.

    +
    +
    + + + + diff --git a/namespacetype5.html b/namespacetype5.html new file mode 100644 index 0000000..36148fc --- /dev/null +++ b/namespacetype5.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: type5 Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    type5 Namespace Reference
    +
    +
    + +

    For NDEF Type5. +More...

    +

    Detailed Description

    +

    For NDEF Type5.

    +
    +
    + + + + diff --git a/namespaceunit.html b/namespaceunit.html new file mode 100644 index 0000000..9f0bf78 --- /dev/null +++ b/namespaceunit.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: unit Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    unit Namespace Reference
    +
    +
    + +

    Unit-related namespace. +More...

    +

    Detailed Description

    +

    Unit-related namespace.

    +
    +
    + + + + diff --git a/namespacev.html b/namespacev.html new file mode 100644 index 0000000..d1a42c0 --- /dev/null +++ b/namespacev.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: v Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    v Namespace Reference
    +
    +
    + +

    NFC-V definitions. +More...

    +

    Detailed Description

    +

    NFC-V definitions.

    +
    +
    + + + + diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 0000000..72a58a5 Binary files /dev/null and b/nav_f.png differ diff --git a/nav_fd.png b/nav_fd.png new file mode 100644 index 0000000..032fbdd Binary files /dev/null and b/nav_fd.png differ diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/nav_g.png differ diff --git a/nav_h.png b/nav_h.png new file mode 100644 index 0000000..33389b1 Binary files /dev/null and b/nav_h.png differ diff --git a/nav_hd.png b/nav_hd.png new file mode 100644 index 0000000..de80f18 Binary files /dev/null and b/nav_hd.png differ diff --git a/navtree.css b/navtree.css new file mode 100644 index 0000000..69211d4 --- /dev/null +++ b/navtree.css @@ -0,0 +1,149 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: var(--nav-text-active-color); + text-shadow: var(--nav-text-active-shadow); +} + +#nav-tree .selected .arrow { + color: var(--nav-arrow-selected-color); + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px var(--font-family-nav); +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:var(--nav-text-active-color); +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: $width; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:var(--nav-splitbar-image); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-repeat:repeat-x; + background-color: var(--nav-background-color); + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/navtree.js b/navtree.js new file mode 100644 index 0000000..9027ce6 --- /dev/null +++ b/navtree.js @@ -0,0 +1,483 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function initNavTree(toroot,relpath) { + let navTreeSubIndices = []; + const ARROW_DOWN = '▼'; + const ARROW_RIGHT = '►'; + const NAVPATH_COOKIE_NAME = ''+'navpath'; + + const getData = function(varName) { + const i = varName.lastIndexOf('/'); + const n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/-/g,'_')); + } + + const stripPath = function(uri) { + return uri.substring(uri.lastIndexOf('/')+1); + } + + const stripPath2 = function(uri) { + const i = uri.lastIndexOf('/'); + const s = uri.substring(i+1); + const m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; + } + + const hashValue = function() { + return $(location).attr('hash').substring(1).replace(/[^\w-]/g,''); + } + + const hashUrl = function() { + return '#'+hashValue(); + } + + const pathName = function() { + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;()]/g, ''); + } + + const storeLink = function(link) { + if (!$("#nav-sync").hasClass('sync')) { + Cookie.writeSetting(NAVPATH_COOKIE_NAME,link,0); + } + } + + const deleteLink = function() { + Cookie.eraseSetting(NAVPATH_COOKIE_NAME); + } + + const cachedLink = function() { + return Cookie.readSetting(NAVPATH_COOKIE_NAME,''); + } + + const getScript = function(scriptName,func) { + const head = document.getElementsByTagName("head")[0]; + const script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); + } + + const createIndent = function(o,domNode,node) { + let level=-1; + let n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + const imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=ARROW_RIGHT; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=ARROW_RIGHT; + node.expanded = false; + } else { + expandNode(o, node, false, true); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + let span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } + } + + let animationInProgress = false; + + const gotoAnchor = function(anchor,aname) { + let pos, docContent = $('#doc-content'); + let ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || ancParent.hasClass('fieldtype') || + ancParent.is(':header')) { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + const dcOffset = docContent.offset().top; + const dcHeight = docContent.height(); + const dcScrHeight = docContent[0].scrollHeight + const dcScrTop = docContent.scrollTop(); + let dist = Math.abs(Math.min(pos-dcOffset,dcScrHeight-dcHeight-dcScrTop)); + animationInProgress = true; + docContent.animate({ + scrollTop: pos + dcScrTop - dcOffset + },Math.max(50,Math.min(500,dist)),function() { + animationInProgress=false; + if (anchor.parent().attr('class')=='memItemLeft') { + let rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname') { + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype') { + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + }); + } + } + + const newNode = function(o, po, text, link, childrenData, lastNode) { + const node = { + children : [], + childrenData : childrenData, + depth : po.depth + 1, + relpath : po.relpath, + isLast : lastNode, + li : document.createElement("li"), + parentNode : po, + itemDiv : document.createElement("div"), + labelSpan : document.createElement("span"), + label : document.createTextNode(text), + expanded : false, + childrenUL : null, + getChildrenUL : function() { + if (!this.childrenUL) { + this.childrenUL = document.createElement("ul"); + this.childrenUL.className = "children_ul"; + this.childrenUL.style.display = "none"; + this.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }, + }; + + node.itemDiv.className = "item"; + node.labelSpan.className = "label"; + createIndent(o,node.itemDiv,node); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + const a = document.createElement("a"); + node.labelSpan.appendChild(a); + po.getChildrenUL().appendChild(node.li); + a.appendChild(node.label); + if (link) { + let url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + const aname = '#'+link.split('#')[1]; + const srcPage = stripPath(pathName()); + const targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : aname; + a.onclick = function() { + storeLink(link); + aPPar = $(a).parent().parent(); + if (!aPPar.hasClass('selected')) { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + aPPar.addClass('selected'); + aPPar.attr('id','selected'); + } + const anchor = $(aname); + gotoAnchor(anchor,aname); + }; + } else { + a.href = url; + a.onclick = () => storeLink(link); + } + } else if (childrenData != null) { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + return node; + } + + const showRoot = function() { + const headerHeight = $("#top").height(); + const footerHeight = $("#nav-path").height(); + const windowHeight = $(window).height() - headerHeight - footerHeight; + (function() { // retry until we can scroll to the selected item + try { + const navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); + } + + const expandNode = function(o, node, imm, setFocus) { + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + expandNode(o, node, imm, setFocus); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + if (setFocus) { + $(node.expandToggle).focus(); + } + } + } + } + + const glowEffect = function(n,duration) { + n.addClass('glow').delay(duration).queue(function(next) { + $(this).removeClass('glow');next(); + }); + } + + const highlightAnchor = function() { + const aname = hashUrl(); + const anchor = $(aname); + gotoAnchor(anchor,aname); + } + + const selectAndHighlight = function(hash,n) { + let a; + if (hash) { + const link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + let topOffset=5; + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); + } + + const showNode = function(o, node, index, hash) { + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + showNode(o,node,index,hash); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + const n = node.children[o.breadcrumbs[index]]; + if (index+11 ? '#'+parts[1].replace(/[^\w-]/g,'') : ''; + } + if (hash.match(/^#l\d+$/)) { + const anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + const url=root+hash; + let i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function() { + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + }); + } + } + + const showSyncOff = function(n,relpath) { + n.html(''); + } + + const showSyncOn = function(n,relpath) { + n.html(''); + } + + const o = { + toroot : toroot, + node : { + childrenData : NAVTREE, + children : [], + childrenUL : document.createElement("ul"), + getChildrenUL : function() { return this.childrenUL }, + li : document.getElementById("nav-tree-contents"), + depth : 0, + relpath : relpath, + expanded : false, + isLast : true, + plus_img : document.createElement("span"), + }, + }; + o.node.li.appendChild(o.node.childrenUL); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = ARROW_RIGHT; + + const navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + + navSync.click(() => { + const navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } + }); + + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + + $(window).bind('hashchange', () => { + if (!animationInProgress) { + if (window.location.hash && window.location.hash.length>1) { + let a; + if ($(location).attr('hash')) { + const clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ + + + + + + +M5Unit-NFC: src/nfc/ndef/ndef.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ndef.cpp File Reference
    +
    +
    + +

    NDEF related. +More...

    +
    #include "ndef.hpp"
    +#include <M5Utility.hpp>
    +
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    + + + + +

    +Functions

    +const char * m5::nfc::ndef::get_uri_idc_string (const URIProtocol protocol)
     Get string of the URI IDC.
     
    +

    Detailed Description

    +

    NDEF related.

    +
    +
    + + + + diff --git a/ndef_8cpp.js b/ndef_8cpp.js new file mode 100644 index 0000000..4b9e936 --- /dev/null +++ b/ndef_8cpp.js @@ -0,0 +1,4 @@ +var ndef_8cpp = +[ + [ "get_uri_idc_string", "ndef_8cpp.html#a06ad435246f351420fd0f90c562870ea", null ] +]; \ No newline at end of file diff --git a/ndef_8hpp.html b/ndef_8hpp.html new file mode 100644 index 0000000..3f6d7e2 --- /dev/null +++ b/ndef_8hpp.html @@ -0,0 +1,623 @@ + + + + + + + +M5Unit-NFC: src/nfc/ndef/ndef.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ndef.hpp File Reference
    +
    +
    + +

    NDEF related. +More...

    +
    #include <cstdint>
    +#include <vector>
    +#include <m5_utility/stl/extension.hpp>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + +

    +Classes

    struct  m5::nfc::ndef::type2::CapabilityContainer
     Capability container for Type2. More...
     
    struct  m5::nfc::ndef::type3::AttributeBlock
     For Type 3 tag (T3T) More...
     
    struct  m5::nfc::ndef::type4::FileControlTLV
     File control TLV. More...
     
    struct  m5::nfc::ndef::type4::CapabilityContainer
     Capability container for Type4. More...
     
    struct  m5::nfc::ndef::type5::CapabilityContainer
     Capability container for Type5. More...
     
    + + + + + + + + + + + + + + + + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    namespace  ndef
     For NDEF.
     
    namespace  type2
     For NDEF Type2.
     
    namespace  type3
     For NDEF Type3.
     
    namespace  type4
     For NDEF Type4.
     
    namespace  type5
     For NDEF Type5.
     
    + + + + + + +

    +Typedefs

    +using m5::nfc::ndef::TagBits = uint8_t
     TLV(Tag,Length,Value) tag bit group for type2/5.
     
    +using m5::nfc::ndef::type4::FileControlTagBits = uint8_t
     
    + + + + + + + + + + +

    +Enumerations

    enum class  m5::nfc::ndef::Tag : uint8_t {
    +  Null +, LockControl +, MemoryControl +, Message +,
    +  Proprietary = 0xFD +, Terminator +
    + }
     TLV(Tag,Length,Value) tag for type2/5. More...
     
    enum class  m5::nfc::ndef::URIProtocol : uint8_t {
    +  NA +, HTTP_WWW +, HTTPS_WWW +, HTTP +,
    +  HTTPS +, TEL +, MAILTO +, FTP_AA +,
    +  FTP_FTP +, FTPS +, SFTP +, SMB +,
    +  NFS +, FTP +, DEV +, NEWS +,
    +  TELNET +, IMAP +, RSTP +, URN +,
    +  POP +, SIP +, SIPS +, TFTP +,
    +  BTSPP +, BTL2CAP +, BTGOEP +, TCPOBEX +,
    +  IRDAOBEX +, FILE +, URN_EPC_ID +, URN_EPC_TAG +,
    +  URN_EPC_PAT +, URN_EPC_RAW +, URN_EPC +, NFC +
    + }
     URI Identifier Code. More...
     
    enum class  m5::nfc::ndef::type4::FileControlTag : uint8_t { Message = 0x04 +, Proprietary = 0x05 + }
     File control for File Control TLV for type4. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    +constexpr TagBits m5::nfc::ndef::tag_to_tagbit (const Tag t)
     Tag to TagBit.
     
    template<typename... T>
    constexpr TagBits m5::nfc::ndef::make_tag_bits (T... tags)
     Make TagBit from tag.
     
    +constexpr bool m5::nfc::ndef::contains_tag (const TagBits tb, const Tag t)
     Check whether TagBits contains given Tag.
     
    +bool m5::nfc::ndef::is_valid_tag (const uint8_t t)
     Is valid tag?
     
    +bool m5::nfc::ndef::is_terminator_tag (const uint8_t t)
     Is terminator?
     
    +const char * m5::nfc::ndef::get_uri_idc_string (const URIProtocol protocol)
     Get string of the URI IDC.
     
    +constexpr FileControlTagBits m5::nfc::ndef::type4::fc_to_fcbit (const FileControlTag t)
     Tag to TagBit.
     
    template<typename... T>
    constexpr FileControlTagBits m5::nfc::ndef::type4::make_fc_bits (T... fcs)
     Make FileControlBit from FileControlTag.
     
    +constexpr bool m5::nfc::ndef::type4::contains_file_control_tag (const FileControlTagBits tb, const FileControlTag t)
     Check whether FileControlTagBits contains given FileControl.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    constexpr TagBits m5::nfc::ndef::tagBitsAll
     All tags.
     
    +constexpr TagBits m5::nfc::ndef::tagBitsMessage = make_tag_bits(m5::nfc::ndef::Tag::Message)
     Message only.
     
    +constexpr uint16_t m5::nfc::ndef::type4::CC_FILE_ID {0xE103}
     CC file id.
     
    +constexpr uint8_t m5::nfc::ndef::type4::NDEF_AID [] = {0xD2, 0x76, 0x00, 0x00, 0x85, 0x01, 0x01}
     AID for NDEF.
     
    +constexpr uint16_t m5::nfc::ndef::type4::NDEF_APP_FID {0xE110}
     ISO DF FID for NDEF app.
     
    +constexpr uint16_t m5::nfc::ndef::type4::NDEF_FILE_ID {0xE104}
     ISO EF FID for NDEF file.
     
    +constexpr FileControlTagBits m5::nfc::ndef::type4::fcBitsAll = make_fc_bits(FileControlTag::Message, FileControlTag::Proprietary)
     All fcs.
     
    +constexpr FileControlTagBits m5::nfc::ndef::type4::fcBitsMessage = make_fc_bits(FileControlTag::Message)
     Message only.
     
    CapabilityContainer
    +constexpr uint8_t m5::nfc::ndef::NDEF_MAJOR_VERSION {1}
     Support major version.
     
    +constexpr uint8_t m5::nfc::ndef::NDEF_MINOR_VERSION {0}
     Support minor version.
     
    +constexpr uint8_t m5::nfc::ndef::MAGIC_NO_CC4 {0xE1}
     4 byte CC
     
    +constexpr uint8_t m5::nfc::ndef::MAGIC_NO_CC8 {0xE2}
     8 byte CC (Type5)
     
    +constexpr uint8_t m5::nfc::ndef::ACCESS_FREE {0x00}
     Access condition (Free access)
     
    +constexpr uint8_t m5::nfc::ndef::ACCESS_PROPRIETARY {0x02}
     Access condition (proprietary)
     
    +constexpr uint8_t m5::nfc::ndef::TYPE2_CC_BLOCK {3}
     Block for CC type2.
     
    +constexpr uint16_t m5::nfc::ndef::CC4_MAX_NDEF_LENGTH {2040}
     Maximum ndef length for 4 byte CC.
     
    +

    Detailed Description

    +

    NDEF related.

    +

    Enumeration Type Documentation

    + +

    ◆ FileControlTag

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::ndef::type4::FileControlTag : uint8_t
    +
    +strong
    +
    + +

    File control for File Control TLV for type4.

    + + + +
    Enumerator
    Message 

    Message.

    +
    Proprietary 

    Proprietary.

    +
    + +
    +
    + +

    ◆ Tag

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::ndef::Tag : uint8_t
    +
    +strong
    +
    + +

    TLV(Tag,Length,Value) tag for type2/5.

    + + + + + + + +
    Enumerator
    Null 

    NULL TLV.

    +
    LockControl 

    Lock control.

    +
    MemoryControl 

    Memory control.

    +
    Message 

    Message.

    +
    Proprietary 

    Proprietary.

    +
    Terminator 

    Terminator.

    +
    + +
    +
    + +

    ◆ URIProtocol

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::ndef::URIProtocol : uint8_t
    +
    +strong
    +
    + +

    URI Identifier Code.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Enumerator
    NA 

    N/A.

    +
    HTTP_WWW 

    http://www.

    +
    HTTPS_WWW 

    https://www.

    +
    HTTP 

    http://

    +
    HTTPS 

    https://

    +
    TEL 

    tel:

    +
    MAILTO 

    mailto:

    +
    FTP_AA 

    ftp://anonymous:anonymous@

    +
    FTP_FTP 

    ftp://ftp.

    +
    FTPS 

    ftps://

    +
    SFTP 

    sftp://

    +
    SMB 

    smb://

    +
    NFS 

    nfs://

    +
    FTP 

    ftp://

    +
    DEV 

    dav://

    +
    NEWS 

    news:

    +
    TELNET 

    telnet://

    +
    IMAP 

    imap:

    +
    RSTP 

    rtsp://

    +
    URN 

    urn:

    +
    POP 

    pop:

    +
    SIP 

    sip:

    +
    SIPS 

    sips:

    +
    TFTP 

    tftp:

    +
    BTSPP 

    btspp://

    +
    BTL2CAP 

    btl2cap://

    +
    BTGOEP 

    btgoep://

    +
    TCPOBEX 

    tcpobex://

    +
    IRDAOBEX 

    irdaobex://

    +
    FILE 

    file://

    +
    URN_EPC_ID 

    urn:epc:id:

    +
    URN_EPC_TAG 

    urn:epc:tag:

    +
    URN_EPC_PAT 

    urn:epc:pat:

    +
    URN_EPC_RAW 

    urn:epc:raw:

    +
    URN_EPC 

    urn:epc:

    +
    NFC 

    urn:nfc:

    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ make_fc_bits()

    + +
    +
    +
    +template<typename... T>
    + + + + + +
    + + + + + + + +
    FileControlTagBits m5::nfc::ndef::type4::make_fc_bits (T... fcs)
    +
    +constexpr
    +
    + +

    Make FileControlBit from FileControlTag.

    +
    Parameters
    + + +
    fcsFileControl(s)
    +
    +
    +
    Returns
    FcBit
    + +
    +
    + +

    ◆ make_tag_bits()

    + +
    +
    +
    +template<typename... T>
    + + + + + +
    + + + + + + + +
    TagBits m5::nfc::ndef::make_tag_bits (T... tags)
    +
    +constexpr
    +
    + +

    Make TagBit from tag.

    +
    Parameters
    + + +
    tagsTag(s)
    +
    +
    +
    Returns
    TagBit
    + +
    +
    +

    Variable Documentation

    + +

    ◆ tagBitsAll

    + +
    +
    + + + + + +
    + + + + +
    TagBits m5::nfc::ndef::tagBitsAll
    +
    +constexpr
    +
    +Initial value:
    =
    +
    make_tag_bits(m5::nfc::ndef::Tag::LockControl, m5::nfc::ndef::Tag::MemoryControl, m5::nfc::ndef::Tag::Message,
    +
    m5::nfc::ndef::Tag::Proprietary, m5::nfc::ndef::Tag::Terminator)
    +
    constexpr TagBits make_tag_bits(T... tags)
    Make TagBit from tag.
    Definition ndef.hpp:95
    +
    +

    All tags.

    + +
    +
    +
    +
    + + + + diff --git a/ndef_8hpp.js b/ndef_8hpp.js new file mode 100644 index 0000000..919855f --- /dev/null +++ b/ndef_8hpp.js @@ -0,0 +1,84 @@ +var ndef_8hpp = +[ + [ "m5::nfc::ndef::type2::CapabilityContainer", "structm5_1_1nfc_1_1ndef_1_1type2_1_1_capability_container.html", null ], + [ "m5::nfc::ndef::type3::AttributeBlock", "structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html", "structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block" ], + [ "m5::nfc::ndef::type4::FileControlTLV", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v" ], + [ "m5::nfc::ndef::type4::CapabilityContainer", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.html", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container" ], + [ "m5::nfc::ndef::type5::CapabilityContainer", "structm5_1_1nfc_1_1ndef_1_1type5_1_1_capability_container.html", null ], + [ "TagBits", "ndef_8hpp.html#a5716a98da0909374b245e22ea5b4bfed", null ], + [ "FileControlTag", "ndef_8hpp.html#a3d88baf2d1668d0f00d9c5a2397f9c2f", [ + [ "Message", "ndef_8hpp.html#a3d88baf2d1668d0f00d9c5a2397f9c2fa4c2a8fe7eaf24721cc7a9f0175115bd4", null ], + [ "Proprietary", "ndef_8hpp.html#a3d88baf2d1668d0f00d9c5a2397f9c2fa03fe683ef28b9ddfe7f658a0f4b3b80e", null ] + ] ], + [ "Tag", "ndef_8hpp.html#ace18f3439d147659696eec175e13e03a", [ + [ "Null", "ndef_8hpp.html#ace18f3439d147659696eec175e13e03aabbb93ef26e3c101ff11cdd21cab08a94", null ], + [ "LockControl", "ndef_8hpp.html#ace18f3439d147659696eec175e13e03aa48c38339a630d01cabdda99ea58ea368", null ], + [ "MemoryControl", "ndef_8hpp.html#ace18f3439d147659696eec175e13e03aa8b38c362d0e19c18c5b556991a14f2b1", null ], + [ "Message", "ndef_8hpp.html#ace18f3439d147659696eec175e13e03aa4c2a8fe7eaf24721cc7a9f0175115bd4", null ], + [ "Proprietary", "ndef_8hpp.html#ace18f3439d147659696eec175e13e03aa03fe683ef28b9ddfe7f658a0f4b3b80e", null ], + [ "Terminator", "ndef_8hpp.html#ace18f3439d147659696eec175e13e03aab420c1d31e69a823fbc30a434907c9c0", null ] + ] ], + [ "URIProtocol", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6", [ + [ "NA", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6ad4cd0dabcf4caa22ad92fab40844c786", null ], + [ "HTTP_WWW", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a610eb6d830ec73ea0cbb0db7e0dd21bb", null ], + [ "HTTPS_WWW", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6ab9522804eaa2e4afccb42a63de1c90a0", null ], + [ "HTTP", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a293c9ea246ff9985dc6f62a650f78986", null ], + [ "HTTPS", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a0e8433f9a404f1f3ba601c14b026d321", null ], + [ "TEL", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a6154785551f14c097a9caf44e74b615e", null ], + [ "MAILTO", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a43b8b3d092408ddc2ae9af844fe50850", null ], + [ "FTP_AA", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a122814ce7a56a5112eb1cff8c5bd3593", null ], + [ "FTP_FTP", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6aec69ec65586bccf2924fd029d1a4141e", null ], + [ "FTPS", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a29f97c79cb913145ca7c7b259f68eda9", null ], + [ "SFTP", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6aea1386cf13bf90b95782349fdd4b2721", null ], + [ "SMB", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6ab4fdd997b1f33e0d4c6964444c2bf399", null ], + [ "NFS", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a1d1a594959ec615f56516f5d0f5e8ddb", null ], + [ "FTP", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6ac728a49363c9a93a43a7e7f232b5a54a", null ], + [ "DEV", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6abfeddf560ff988c07141df6135a9bfcf", null ], + [ "NEWS", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6aff4e2dc4962dc25a1512353299992c8d", null ], + [ "TELNET", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a1360d1787ff8bb4f8eca82602452a58d", null ], + [ "IMAP", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a0b787be1ef17df10d26758673ae24325", null ], + [ "RSTP", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a70c93323ddcb89632da9dcb77ba54844", null ], + [ "URN", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a159673fd09d9000e8d7706ea5a751b10", null ], + [ "POP", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6aefdb39a4c7286afcecf0e8a7435fce6a", null ], + [ "SIP", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a7eb2de9ed94db7230fcafeb1d7c40878", null ], + [ "SIPS", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a44a76d8e5ffed8c0e72f6207902dba14", null ], + [ "TFTP", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a34d3dff1acba95184204f7a379c6d4f7", null ], + [ "BTSPP", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a81090b5fcb6f86a2e1630cbbfbf3662d", null ], + [ "BTL2CAP", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a1ee9bbae71c45ab4397c161feaec4840", null ], + [ "BTGOEP", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6aff6343cef8f89994d9c9eb5df5b71593", null ], + [ "TCPOBEX", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6ae3c51d88bdea51cfc57178bfd6709596", null ], + [ "IRDAOBEX", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a8790d2ac467ea1bef0e6ddd6cdf5c294", null ], + [ "FILE", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a9fc5887c030f7a3e19821ebec457e719", null ], + [ "URN_EPC_ID", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a7c5fab2988fa4a6868131391acb98569", null ], + [ "URN_EPC_TAG", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a21380900a76174819c59015ffcd17f7e", null ], + [ "URN_EPC_PAT", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a0d93e64775449882c412ffc993c2fbe0", null ], + [ "URN_EPC_RAW", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a49194a2bedc87e93c1fa90ed70d440ec", null ], + [ "URN_EPC", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a2d330bbe4ce80a2e335abf1ac0cf557c", null ], + [ "NFC", "ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6ad6fef5d168d085196fddede17c3fdd05", null ] + ] ], + [ "contains_file_control_tag", "ndef_8hpp.html#ab13a263b697300c0277d96271748c4ff", null ], + [ "contains_tag", "ndef_8hpp.html#af53b5020533b07d8aa80fcd661ccbc12", null ], + [ "fc_to_fcbit", "ndef_8hpp.html#a86bd0803acf1015a7d96aafbdad41098", null ], + [ "get_uri_idc_string", "ndef_8hpp.html#a06ad435246f351420fd0f90c562870ea", null ], + [ "is_terminator_tag", "ndef_8hpp.html#ab24ec3033f1d129b0745a0b859e6aef3", null ], + [ "is_valid_tag", "ndef_8hpp.html#ae6dcb2f62fac2fff83b9f02a52656252", null ], + [ "make_fc_bits", "ndef_8hpp.html#a05083607dc86b03cc5e3d77b1f19cb4e", null ], + [ "make_tag_bits", "ndef_8hpp.html#a66bd75961ea80daa382440461c753e39", null ], + [ "tag_to_tagbit", "ndef_8hpp.html#a727b1668ad3afc7b4313e5ed8fbde964", null ], + [ "ACCESS_FREE", "ndef_8hpp.html#abcdf0294fcb1da87bf6cfb1408e10dd6", null ], + [ "ACCESS_PROPRIETARY", "ndef_8hpp.html#a40226b233bf1606213ef34f9d74f3b96", null ], + [ "CC4_MAX_NDEF_LENGTH", "ndef_8hpp.html#afe77fbba2c69cef8db39e3cc7488e5d9", null ], + [ "CC_FILE_ID", "ndef_8hpp.html#abe8819b3fb9efa0ab8de7bf58b36f831", null ], + [ "fcBitsAll", "ndef_8hpp.html#a6d08bca1d9560291af41563234874bc7", null ], + [ "fcBitsMessage", "ndef_8hpp.html#a8556c520132d5996602b4b3815d0107e", null ], + [ "MAGIC_NO_CC4", "ndef_8hpp.html#a308d8a53d9594f26be5d2c675836267f", null ], + [ "MAGIC_NO_CC8", "ndef_8hpp.html#aca5cb6a1db30073fcc361b76dcabe324", null ], + [ "NDEF_AID", "ndef_8hpp.html#a285ab1289637acc0eb4a10024eb5c9af", null ], + [ "NDEF_APP_FID", "ndef_8hpp.html#a06299723b4b46bf31bc4a7c785bd8a39", null ], + [ "NDEF_FILE_ID", "ndef_8hpp.html#ad001c38bd008a9626042aea6a4ee9f7d", null ], + [ "NDEF_MAJOR_VERSION", "ndef_8hpp.html#aeab5133bf9d37bc2944974b1b8212c16", null ], + [ "NDEF_MINOR_VERSION", "ndef_8hpp.html#a0e1df989692be92d642749c670133450", null ], + [ "tagBitsAll", "ndef_8hpp.html#a82a95253d49481ecb6d4bd1189f03814", null ], + [ "tagBitsMessage", "ndef_8hpp.html#a83c9884e68c635024d5742201e08d33b", null ], + [ "TYPE2_CC_BLOCK", "ndef_8hpp.html#a0c826bc41399160779aa043b7ef12fde", null ] +]; \ No newline at end of file diff --git a/ndef_8hpp_source.html b/ndef_8hpp_source.html new file mode 100644 index 0000000..4a2c07c --- /dev/null +++ b/ndef_8hpp_source.html @@ -0,0 +1,729 @@ + + + + + + + +M5Unit-NFC: src/nfc/ndef/ndef.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ndef.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    10#ifndef M5_UNIT_UNIFIED_NFC_NDEF_NDEF_HPP
    +
    11#define M5_UNIT_UNIFIED_NFC_NDEF_NDEF_HPP
    +
    12
    +
    13#include <cstdint>
    +
    14#include <vector>
    +
    15#include <m5_utility/stl/extension.hpp>
    +
    16
    +
    17namespace m5 {
    +
    18namespace nfc {
    +
    23namespace ndef {
    +
    24
    +
    27constexpr uint8_t NDEF_MAJOR_VERSION{1};
    +
    28constexpr uint8_t NDEF_MINOR_VERSION{0};
    +
    29constexpr uint8_t MAGIC_NO_CC4{0xE1};
    +
    30constexpr uint8_t MAGIC_NO_CC8{0xE2};
    +
    31constexpr uint8_t ACCESS_FREE{0x00};
    +
    32constexpr uint8_t ACCESS_PROPRIETARY{0x02};
    +
    33
    +
    34constexpr uint8_t TYPE2_CC_BLOCK{3};
    +
    35constexpr uint16_t CC4_MAX_NDEF_LENGTH{2040};
    +
    37
    +
    +
    42enum class Tag : uint8_t {
    +
    43 Null,
    + + +
    46 Message,
    +
    47 Proprietary = 0xFD,
    + +
    49};
    +
    +
    50
    +
    55using TagBits = uint8_t;
    +
    56
    +
    +
    58constexpr inline TagBits tag_to_tagbit(const Tag t)
    +
    59{
    +
    60 return (t == Tag::Null) ? (1u << 0)
    +
    61 : (t == Tag::LockControl) ? (1u << 1)
    +
    62 : (t == Tag::MemoryControl) ? (1u << 2)
    +
    63 : (t == Tag::Message) ? (1u << 3)
    +
    64 : (t == Tag::Proprietary) ? (1u << 4)
    +
    65 : (t == Tag::Terminator) ? (1u << 5)
    +
    66 : 0u;
    +
    67}
    +
    +
    68
    +
    70template <typename... Ts>
    +
    71struct are_all_tag : std::true_type {
    +
    72};
    +
    73template <typename T, typename... Ts>
    +
    74struct are_all_tag<T, Ts...> : std::integral_constant<bool, std::is_same<Tag, T>::value && are_all_tag<Ts...>::value> {
    +
    75};
    +
    76
    +
    77constexpr TagBits make_tag_bits_impl(TagBits acc)
    +
    78{
    +
    79 return acc;
    +
    80}
    +
    81
    +
    82template <typename... Rest>
    +
    83constexpr TagBits make_tag_bits_impl(TagBits acc, Tag head, Rest... rest)
    +
    84{
    +
    85 return make_tag_bits_impl(acc | tag_to_tagbit(head), rest...);
    +
    86}
    +
    88
    +
    94template <typename... T>
    +
    +
    95constexpr TagBits make_tag_bits(T... tags)
    +
    96{
    +
    97 static_assert(sizeof...(tags) > 0, "At least one Tag is required");
    +
    98 static_assert(are_all_tag<T...>::value, "Arguments must be Tag");
    +
    99 return make_tag_bits_impl(0u, tags...);
    +
    100}
    +
    +
    101
    +
    +
    103inline constexpr bool contains_tag(const TagBits tb, const Tag t)
    +
    104{
    +
    105 return (tb & tag_to_tagbit(t)) != 0;
    +
    106}
    +
    +
    107
    + +
    110 make_tag_bits(m5::nfc::ndef::Tag::LockControl, m5::nfc::ndef::Tag::MemoryControl, m5::nfc::ndef::Tag::Message,
    +
    111 m5::nfc::ndef::Tag::Proprietary, m5::nfc::ndef::Tag::Terminator);
    +
    113constexpr TagBits tagBitsMessage = make_tag_bits(m5::nfc::ndef::Tag::Message);
    +
    114
    +
    +
    116inline bool is_valid_tag(const uint8_t t)
    +
    117{
    +
    118 return t <= m5::stl::to_underlying(Tag::Message) || t == m5::stl::to_underlying(Tag::Proprietary) ||
    +
    119 t == m5::stl::to_underlying(Tag::Terminator);
    +
    120}
    +
    +
    121
    +
    +
    123inline bool is_terminator_tag(const uint8_t t)
    +
    124{
    +
    125 return t == m5::stl::to_underlying(Tag::Terminator);
    +
    126}
    +
    +
    127
    +
    +
    132enum class URIProtocol : uint8_t {
    +
    133 NA,
    +
    134 HTTP_WWW,
    +
    135 HTTPS_WWW,
    +
    136 HTTP,
    +
    137 HTTPS,
    +
    138 TEL,
    +
    139 MAILTO,
    +
    140 FTP_AA,
    +
    141 FTP_FTP,
    +
    142 FTPS,
    +
    143 SFTP,
    +
    144 SMB,
    +
    145 NFS,
    +
    146 FTP,
    +
    147 DEV,
    +
    148 NEWS,
    +
    149 TELNET,
    +
    150 IMAP,
    +
    151 RSTP,
    +
    152 URN,
    +
    153 POP,
    +
    154 SIP,
    +
    155 SIPS,
    +
    156 TFTP,
    +
    157 BTSPP,
    +
    158 BTL2CAP,
    +
    159 BTGOEP,
    +
    160 TCPOBEX,
    +
    161 IRDAOBEX,
    +
    162 FILE,
    +
    163 URN_EPC_ID,
    + + + +
    167 URN_EPC,
    +
    168 NFC,
    +
    169};
    +
    +
    170
    +
    172const char* get_uri_idc_string(const URIProtocol protocol);
    +
    173
    +
    178namespace type2 {
    +
    + +
    184 uint8_t block[4]{};
    +
    185
    +
    186 inline bool valid() const
    +
    187 {
    +
    188 return (block[0] == MAGIC_NO_CC4) && (major_version() >= NDEF_MAJOR_VERSION) &&
    +
    189 ((int16_t)minor_version() >= NDEF_MINOR_VERSION) && ndef_size();
    +
    190 }
    +
    191 inline bool can_read() const
    +
    192 {
    +
    193 return read_access() == ACCESS_FREE;
    +
    194 }
    +
    195 inline bool can_write() const
    +
    196 {
    +
    197 return write_access() == ACCESS_FREE;
    +
    198 }
    +
    199
    +
    200 // Getter
    +
    201 inline uint8_t major_version() const
    +
    202 {
    +
    203 return (block[1] >> 4) & 0x0F;
    +
    204 }
    +
    205 inline uint8_t minor_version() const
    +
    206 {
    +
    207 return block[1] & 0x0F;
    +
    208 }
    +
    209 inline uint16_t ndef_size() const
    +
    210 {
    +
    211 return (uint16_t)block[2] << 3;
    +
    212 }
    +
    213 inline uint8_t read_access() const
    +
    214 {
    +
    215 return (block[3] >> 4) & 0x0F;
    +
    216 }
    +
    217 inline uint8_t write_access() const
    +
    218 {
    +
    219 return block[3] & 0x0F;
    +
    220 }
    +
    221 // Setter
    +
    222 inline void major_version(const uint8_t v)
    +
    223 {
    +
    224 block[1] = (block[1] & 0x0F) | ((v & 0x0F) << 4);
    +
    225 }
    +
    226 inline void minor_version(const uint8_t v)
    +
    227 {
    +
    228 block[1] = (block[1] & 0xF0) | (v & 0x0F);
    +
    229 }
    +
    230 inline void ndef_size(const uint16_t sz)
    +
    231 {
    +
    232 block[2] = (sz > 2040) ? 0 : (sz >> 3);
    +
    233 }
    +
    234 inline void read_access(const uint8_t a)
    +
    235 {
    +
    236 block[3] = (block[3] & 0x0F) | ((a & 0x03) << 4);
    +
    237 }
    +
    238 inline void write_access(const uint8_t a)
    +
    239 {
    +
    240 block[3] = (block[3] & 0xF0) | (a & 0x03);
    +
    241 }
    +
    242};
    +
    +
    243} // namespace type2
    +
    244
    +
    249namespace type3 {
    +
    + +
    255 uint8_t block[16]{};
    +
    256
    +
    257 static constexpr uint8_t DEFAULT_VERSION{0x10};
    +
    258
    +
    +
    263 enum class WriteFlag : uint8_t {
    +
    264 Done,
    +
    265 InProgress = 0x0F,
    +
    266 };
    +
    +
    267
    +
    +
    272 enum class AccessFlag : uint8_t {
    +
    273 ReadOnly,
    +
    274 ReadWrite,
    +
    275 };
    +
    +
    276 AttributeBlock() : block{DEFAULT_VERSION}
    +
    277 {
    +
    278 }
    +
    279
    +
    280 // Getter
    +
    281 inline uint8_t version() const
    +
    282 {
    +
    283 return block[0];
    +
    284 }
    +
    285 inline uint8_t max_block_to_read() const
    +
    286 {
    +
    287 return block[1];
    +
    288 }
    +
    289 inline uint8_t max_block_to_write() const
    +
    290 {
    +
    291 return block[2];
    +
    292 }
    +
    293 inline uint16_t blocks_for_ndef_storage() const
    +
    294 {
    +
    295 return ((uint16_t)block[3] << 8) | block[4];
    +
    296 }
    +
    297 inline WriteFlag write_flag() const
    +
    298 {
    +
    299 return (block[9] == 0) ? WriteFlag::Done : WriteFlag::InProgress;
    +
    300 }
    +
    301 inline AccessFlag access_flag() const
    +
    302 {
    +
    303 return (AccessFlag)block[10];
    +
    304 }
    +
    305 inline uint32_t current_ndef_message_length() const
    +
    306 {
    +
    307 return ((uint32_t)block[11] << 16) | ((uint32_t)block[12] << 8) | block[13];
    +
    308 }
    +
    309 inline uint16_t check_sum() const
    +
    310 {
    +
    311 return ((uint16_t)block[14] << 8) | block[15];
    +
    312 }
    +
    313
    +
    314 // Setter
    +
    315 inline void version(const uint8_t ver)
    +
    316 {
    +
    317 block[0] = ver;
    +
    318 }
    +
    319 inline void max_block_to_read(const uint8_t b)
    +
    320 {
    +
    321 block[1] = b;
    +
    322 }
    +
    323 inline void max_block_to_write(const uint8_t b)
    +
    324 {
    +
    325 block[2] = b;
    +
    326 }
    +
    327 inline void blocks_for_ndef_storage(const uint16_t s)
    +
    328 {
    +
    329 block[3] = s >> 8;
    +
    330 block[4] = s & 0xFF;
    +
    331 }
    +
    332 inline void write_flag(const WriteFlag f)
    +
    333 {
    +
    334 block[9] = m5::stl::to_underlying(f);
    +
    335 }
    +
    336 inline void access_flag(const AccessFlag f)
    +
    337 {
    +
    338 block[10] = m5::stl::to_underlying(f);
    +
    339 }
    +
    340 inline void current_ndef_message_length(const uint32_t len)
    +
    341 {
    +
    342 block[11] = len >> 16;
    +
    343 block[12] = len >> 8;
    +
    344 block[13] = len & 0xFF;
    +
    345 }
    +
    346
    +
    347 //
    +
    348 bool valid() const;
    +
    349 uint16_t calculate_check_sum() const;
    +
    350 uint16_t update_check_sum();
    +
    351};
    +
    +
    352
    +
    353} // namespace type3
    +
    354
    +
    359namespace type4 {
    +
    360
    +
    361constexpr uint16_t CC_FILE_ID{0xE103};
    +
    362constexpr uint8_t NDEF_AID[] = {0xD2, 0x76, 0x00, 0x00, 0x85, 0x01, 0x01};
    +
    363constexpr uint16_t NDEF_APP_FID{0xE110};
    +
    364constexpr uint16_t NDEF_FILE_ID{0xE104};
    +
    365
    +
    +
    370enum class FileControlTag : uint8_t {
    +
    371 Message = 0x04,
    +
    372 Proprietary = 0x05,
    +
    373 // Extended = 0x06, //!< Extended NDEF (Over 32KB) Type 4 Tag Specification v2.0 or later
    +
    374};
    +
    +
    375
    +
    380using FileControlTagBits = uint8_t;
    +
    381
    +
    +
    383constexpr inline FileControlTagBits fc_to_fcbit(const FileControlTag t)
    +
    384{
    +
    385 return (t == FileControlTag::Message) ? (1u << 0) : ((t == FileControlTag::Proprietary) ? (1u << 1) : 0u);
    +
    386}
    +
    +
    387
    +
    389template <typename... Ts>
    +
    390struct are_all_fc : std::true_type {
    +
    391};
    +
    392template <typename T, typename... Ts>
    +
    393struct are_all_fc<T, Ts...>
    +
    394 : std::integral_constant<bool, std::is_same<FileControlTag, T>::value && are_all_fc<Ts...>::value> {
    +
    395};
    +
    396
    +
    397constexpr FileControlTagBits make_fc_bits_impl(FileControlTagBits acc)
    +
    398{
    +
    399 return acc;
    +
    400}
    +
    401
    +
    402template <typename... Rest>
    +
    403constexpr FileControlTagBits make_fc_bits_impl(FileControlTagBits acc, FileControlTag head, Rest... rest)
    +
    404{
    +
    405 return make_fc_bits_impl(acc | fc_to_fcbit(head), rest...);
    +
    406}
    +
    408
    +
    414template <typename... T>
    +
    +
    415constexpr FileControlTagBits make_fc_bits(T... fcs)
    +
    416{
    +
    417 static_assert(sizeof...(fcs) > 0, "At least one Fc is required");
    +
    418 static_assert(are_all_fc<T...>::value, "Arguments must be Fc");
    +
    419 return make_fc_bits_impl(0u, fcs...);
    +
    420}
    +
    +
    421
    +
    +
    423inline constexpr bool contains_file_control_tag(const FileControlTagBits tb, const FileControlTag t)
    +
    424{
    +
    425 return (tb & fc_to_fcbit(t)) != 0;
    +
    426}
    +
    +
    427
    +
    429constexpr FileControlTagBits fcBitsAll = make_fc_bits(FileControlTag::Message, FileControlTag::Proprietary);
    +
    431constexpr FileControlTagBits fcBitsMessage = make_fc_bits(FileControlTag::Message);
    +
    432
    +
    + +
    438 uint8_t tag{};
    +
    439 uint8_t len{};
    +
    440 uint16_t ndef_file_id{};
    +
    441 uint16_t ndef_file_size{};
    +
    442 uint8_t read_access{};
    +
    443 uint8_t write_access{};
    +
    444
    +
    445 inline FileControlTag fctag() const
    +
    446 {
    +
    447 return static_cast<FileControlTag>(this->tag);
    +
    448 }
    +
    449};
    +
    +
    450
    +
    + +
    456 uint16_t cclen{};
    +
    457 uint8_t mapping_version{};
    +
    458 uint16_t mle{};
    +
    459 uint16_t mlc{};
    +
    460 std::vector<FileControlTLV> fctlvs{};
    +
    461
    +
    462 inline uint8_t major_version() const
    +
    463 {
    +
    464 return (mapping_version >> 4) & 0x0F;
    +
    465 }
    +
    466 inline uint8_t minor_version() const
    +
    467 {
    +
    468 return mapping_version & 0x0F;
    +
    469 }
    +
    470 inline bool valid() const
    +
    471 {
    +
    472 return cclen > 7 && !this->fctlvs.empty();
    +
    473 }
    +
    474
    +
    475 inline FileControlTLV fctlv(const uint8_t index) const
    +
    476 {
    +
    477 return index < this->fctlvs.size() ? this->fctlvs[index] : FileControlTLV{};
    +
    478 }
    +
    479 FileControlTLV fctlv(const FileControlTag fc = FileControlTag::Message) const;
    +
    480
    +
    481 bool parse(const uint8_t* buf, const uint16_t len);
    +
    482};
    +
    +
    483
    +
    484} // namespace type4
    +
    485
    +
    490namespace type5 {
    +
    + +
    496 uint8_t block[8]{};
    +
    497
    +
    498 inline bool valid() const
    +
    499 {
    +
    500 return ((block[0] == MAGIC_NO_CC4) || (block[0] == MAGIC_NO_CC8)) && (major_version() >= NDEF_MAJOR_VERSION) &&
    +
    501 ((int16_t)minor_version() >= NDEF_MINOR_VERSION) && ndef_size();
    +
    502 }
    +
    503 inline bool can_read() const
    +
    504 {
    +
    505 return read_access() == ACCESS_FREE;
    +
    506 }
    +
    507 inline bool can_write() const
    +
    508 {
    +
    509 return write_access() == ACCESS_FREE;
    +
    510 }
    +
    511 inline uint8_t size() const
    +
    512 {
    +
    513 return (block[0] == MAGIC_NO_CC4) ? 4 : ((block[0] == MAGIC_NO_CC8) ? 8 : 0);
    +
    514 }
    +
    515 // Getter
    +
    516 inline uint8_t major_version() const
    +
    517 {
    +
    518 return (block[1] >> 6) & 0x03;
    +
    519 }
    +
    520 inline uint8_t minor_version() const
    +
    521 {
    +
    522 return (block[1] >> 4) & 0x03;
    +
    523 }
    +
    524 inline uint16_t ndef_size() const
    +
    525 {
    +
    526 return (block[0] == MAGIC_NO_CC4) ? (((uint16_t)block[2]) << 3)
    +
    527 : (block[0] == MAGIC_NO_CC8) ? (((uint16_t)block[6] << 8) | block[7])
    +
    528 : 0;
    +
    529 }
    +
    530 inline uint8_t read_access() const
    +
    531 {
    +
    532 return (block[1] >> 2) & 0x03;
    +
    533 }
    +
    534 inline uint8_t write_access() const
    +
    535 {
    +
    536 return block[1] & 0x03;
    +
    537 }
    +
    538 inline uint8_t additional_feature() const
    +
    539 {
    +
    540 return block[3];
    +
    541 }
    +
    542 // Setter
    +
    543 inline void major_version(const uint8_t v)
    +
    544 {
    +
    545 block[1] = (block[1] & 0x3F) | ((v & 0x03) << 6);
    +
    546 }
    +
    547 inline void minor_version(const uint8_t v)
    +
    548 {
    +
    549 block[1] = (block[1] & 0xCF) | ((v & 0x03) << 4);
    +
    550 }
    +
    551 inline void ndef_size(const uint16_t sz)
    +
    552 {
    +
    553 if (block[0] == MAGIC_NO_CC4 && sz <= 2040) {
    +
    554 block[2] = (sz >> 3);
    +
    555 } else if (block[0] == MAGIC_NO_CC8) {
    +
    556 block[6] = (sz >> 8);
    +
    557 block[7] = sz & 0xFF;
    +
    558 }
    +
    559 }
    +
    560 inline void read_access(const uint8_t a)
    +
    561 {
    +
    562 block[1] = (block[1] & 0xF3) | ((a & 0x03) << 2);
    +
    563 }
    +
    564 inline void write_access(const uint8_t a)
    +
    565 {
    +
    566 block[1] = (block[1] & 0xFC) | (a & 0x03);
    +
    567 }
    +
    568 inline void additional_feature(const uint8_t af)
    +
    569 {
    +
    570 block[3] = af;
    +
    571 }
    +
    572};
    +
    +
    573} // namespace type5
    +
    574
    +
    575} // namespace ndef
    +
    576} // namespace nfc
    +
    577} // namespace m5
    +
    578
    +
    579#endif
    +
    NFC-A definitions.
    +
    NFC-B definitions.
    +
    NFC-F definitions.
    +
    Top level namespace of M5stack.
    +
    For NDEF.
    +
    NFC related definitions.
    +
    For NDEF Type2.
    +
    For NDEF Type3.
    +
    For NDEF Type4.
    +
    For NDEF Type5.
    +
    NFC-V definitions.
    +
    constexpr FileControlTagBits make_fc_bits(T... fcs)
    Make FileControlBit from FileControlTag.
    Definition ndef.hpp:415
    +
    constexpr uint16_t NDEF_APP_FID
    ISO DF FID for NDEF app.
    Definition ndef.hpp:363
    +
    constexpr uint8_t TYPE2_CC_BLOCK
    Block for CC type2.
    Definition ndef.hpp:34
    +
    constexpr uint8_t NDEF_MINOR_VERSION
    Support minor version.
    Definition ndef.hpp:28
    +
    constexpr uint8_t NDEF_AID[]
    AID for NDEF.
    Definition ndef.hpp:362
    +
    constexpr uint8_t MAGIC_NO_CC4
    4 byte CC
    Definition ndef.hpp:29
    +
    FileControlTag
    File control for File Control TLV for type4.
    Definition ndef.hpp:370
    +
    constexpr uint8_t ACCESS_PROPRIETARY
    Access condition (proprietary)
    Definition ndef.hpp:32
    +
    uint8_t TagBits
    TLV(Tag,Length,Value) tag bit group for type2/5.
    Definition ndef.hpp:55
    +
    constexpr TagBits make_tag_bits(T... tags)
    Make TagBit from tag.
    Definition ndef.hpp:95
    +
    constexpr FileControlTagBits fcBitsAll
    All fcs.
    Definition ndef.hpp:429
    +
    constexpr TagBits tag_to_tagbit(const Tag t)
    Tag to TagBit.
    Definition ndef.hpp:58
    +
    URIProtocol
    URI Identifier Code.
    Definition ndef.hpp:132
    + + + +
    @ FTP_AA
    ftp://anonymous:anonymous@
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    constexpr TagBits tagBitsAll
    All tags.
    Definition ndef.hpp:109
    +
    constexpr TagBits tagBitsMessage
    Message only.
    Definition ndef.hpp:113
    +
    constexpr FileControlTagBits fcBitsMessage
    Message only.
    Definition ndef.hpp:431
    +
    constexpr FileControlTagBits fc_to_fcbit(const FileControlTag t)
    Tag to TagBit.
    Definition ndef.hpp:383
    +
    constexpr bool contains_file_control_tag(const FileControlTagBits tb, const FileControlTag t)
    Check whether FileControlTagBits contains given FileControl.
    Definition ndef.hpp:423
    +
    bool is_terminator_tag(const uint8_t t)
    Is terminator?
    Definition ndef.hpp:123
    +
    constexpr uint8_t ACCESS_FREE
    Access condition (Free access)
    Definition ndef.hpp:31
    +
    constexpr uint16_t CC_FILE_ID
    CC file id.
    Definition ndef.hpp:361
    +
    constexpr uint8_t MAGIC_NO_CC8
    8 byte CC (Type5)
    Definition ndef.hpp:30
    +
    Tag
    TLV(Tag,Length,Value) tag for type2/5.
    Definition ndef.hpp:42
    +
    @ Proprietary
    Proprietary.
    +
    @ LockControl
    Lock control.
    + +
    @ MemoryControl
    Memory control.
    +
    @ Terminator
    Terminator.
    + +
    constexpr uint16_t NDEF_FILE_ID
    ISO EF FID for NDEF file.
    Definition ndef.hpp:364
    +
    bool is_valid_tag(const uint8_t t)
    Is valid tag?
    Definition ndef.hpp:116
    +
    constexpr uint8_t NDEF_MAJOR_VERSION
    Support major version.
    Definition ndef.hpp:27
    +
    constexpr bool contains_tag(const TagBits tb, const Tag t)
    Check whether TagBits contains given Tag.
    Definition ndef.hpp:103
    +
    constexpr uint16_t CC4_MAX_NDEF_LENGTH
    Maximum ndef length for 4 byte CC.
    Definition ndef.hpp:35
    +
    NFC
    NFC type.
    Definition nfc.hpp:27
    +
    Capability container for Type2.
    Definition ndef.hpp:183
    +
    For Type 3 tag (T3T)
    Definition ndef.hpp:254
    +
    AccessFlag
    Permission to read and write.
    Definition ndef.hpp:272
    + + +
    WriteFlag
    Flag for fault tolerance.
    Definition ndef.hpp:263
    + + +
    Capability container for Type4.
    Definition ndef.hpp:455
    +
    uint16_t cclen
    CC length.
    Definition ndef.hpp:456
    +
    uint16_t mlc
    Maximum Lc.
    Definition ndef.hpp:459
    +
    uint16_t mle
    Maximum Le.
    Definition ndef.hpp:458
    +
    uint8_t mapping_version
    Mapping version.
    Definition ndef.hpp:457
    +
    File control TLV.
    Definition ndef.hpp:437
    +
    uint8_t tag
    File control tag.
    Definition ndef.hpp:438
    +
    uint8_t read_access
    Read access.
    Definition ndef.hpp:442
    +
    uint8_t len
    Length.
    Definition ndef.hpp:439
    +
    uint8_t write_access
    Write access.
    Definition ndef.hpp:443
    +
    uint16_t ndef_file_size
    NDEF file size.
    Definition ndef.hpp:441
    +
    uint16_t ndef_file_id
    NDEF file ID.
    Definition ndef.hpp:440
    +
    Capability container for Type5.
    Definition ndef.hpp:495
    +
    +
    + + + + diff --git a/ndef__layer_8cpp.html b/ndef__layer_8cpp.html new file mode 100644 index 0000000..e48c738 --- /dev/null +++ b/ndef__layer_8cpp.html @@ -0,0 +1,138 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/ndef_layer.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ndef_layer.cpp File Reference
    +
    +
    + +

    Common layer for NDEF related. +More...

    +
    #include "ndef_layer.hpp"
    +#include "nfc/ndef/ndef.hpp"
    +#include "nfc/ndef/ndef_tlv.hpp"
    +#include "nfc/a/mifare.hpp"
    +#include "nfc/isoDEP/file_system.hpp"
    +#include "nfc/isoDEP/desfire_file_system.hpp"
    +#include "nfc/ndef/ndef_record.hpp"
    +#include <M5Utility.hpp>
    +#include <functional>
    +#include <algorithm>
    +#include <limits>
    +#include <numeric>
    +
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    Common layer for NDEF related.

    +
    +
    + + + + diff --git a/ndef__layer_8hpp.html b/ndef__layer_8hpp.html new file mode 100644 index 0000000..ee6e907 --- /dev/null +++ b/ndef__layer_8hpp.html @@ -0,0 +1,148 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/ndef_layer.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ndef_layer.hpp File Reference
    +
    +
    + +

    Common layer for NDEF related. +More...

    +
    #include "nfc_layer.hpp"
    +#include "nfc/ndef/ndef.hpp"
    +#include <vector>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  m5::nfc::ndef::NDEFLayer
     NDEF operations layer. More...
     
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    + + + + + +

    +Variables

    +constexpr uint8_t m5::nfc::ndef::NDEF_MAX_UNIT_SIZE_READ {32}
     
    +constexpr uint8_t m5::nfc::ndef::NDEF_MAX_CC_BLOCK_SIZE {32}
     
    +

    Detailed Description

    +

    Common layer for NDEF related.

    +
    +
    + + + + diff --git a/ndef__layer_8hpp.js b/ndef__layer_8hpp.js new file mode 100644 index 0000000..f9ca454 --- /dev/null +++ b/ndef__layer_8hpp.js @@ -0,0 +1,4 @@ +var ndef__layer_8hpp = +[ + [ "m5::nfc::ndef::NDEFLayer", "classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html", "classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer" ] +]; \ No newline at end of file diff --git a/ndef__layer_8hpp_source.html b/ndef__layer_8hpp_source.html new file mode 100644 index 0000000..ccbe4c5 --- /dev/null +++ b/ndef__layer_8hpp_source.html @@ -0,0 +1,225 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/ndef_layer.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ndef_layer.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    10#ifndef M5_UNIT_NFC_NFC_LAYER_NDEF_LAYER_HPP
    +
    11#define M5_UNIT_NFC_NFC_LAYER_NDEF_LAYER_HPP
    +
    12
    +
    13#include "nfc_layer.hpp"
    +
    14#include "nfc/ndef/ndef.hpp"
    +
    15#include <vector>
    +
    16
    +
    17namespace m5 {
    +
    18namespace nfc {
    +
    19class NFCLayerInterface;
    +
    20namespace isodep {
    +
    21class IsoDEP;
    +
    22}
    +
    23namespace ndef {
    +
    24
    +
    25class TLV;
    +
    26class Record;
    +
    27
    +
    28constexpr uint8_t NDEF_MAX_UNIT_SIZE_READ{32};
    +
    29constexpr uint8_t NDEF_MAX_CC_BLOCK_SIZE{32};
    +
    30
    +
    +
    35class NDEFLayer {
    +
    36public:
    +
    37 explicit NDEFLayer(NFCLayerInterface& layer) : _interface{layer}
    +
    38 {
    +
    39 }
    +
    46 bool isValidFormat(bool& valid, const m5::nfc::NFCForumTag ftag);
    +
    47
    +
    55 bool read(const m5::nfc::NFCForumTag ftag, std::vector<m5::nfc::ndef::TLV>& tlvs,
    + +
    65 bool write(const m5::nfc::NFCForumTag ftag, const std::vector<m5::nfc::ndef::TLV>& tlvs, const bool keep = true);
    +
    66
    + +
    77 bool prepare_desfire(const uint32_t max_ndef_size);
    +
    78
    + + + + + +
    109
    +
    110protected:
    +
    111 bool read_capability_container_type4_iso7816(m5::nfc::ndef::type4::CapabilityContainer& cc);
    +
    112 bool read_capability_container_type4_desfire(m5::nfc::ndef::type4::CapabilityContainer& cc);
    +
    113
    +
    114 bool read_type2(std::vector<m5::nfc::ndef::TLV>& tlvs, const m5::nfc::ndef::TagBits tagBits);
    +
    115 bool read_type3(m5::nfc::ndef::TLV& tlv);
    +
    116 bool read_type4(std::vector<m5::nfc::ndef::TLV>& tlvs, const m5::nfc::ndef::type4::FileControlTagBits fcBits);
    +
    117 bool read_type4_iso7816(std::vector<m5::nfc::ndef::TLV>& tlvs,
    +
    118 const m5::nfc::ndef::type4::FileControlTagBits fcBits);
    +
    119 bool read_type4_desfire(std::vector<m5::nfc::ndef::TLV>& tlvs,
    +
    120 const m5::nfc::ndef::type4::FileControlTagBits fcBits);
    +
    121 bool read_type5(std::vector<m5::nfc::ndef::TLV>& tlvs, const m5::nfc::ndef::TagBits tagBits);
    +
    122
    +
    123 bool write_type2(const std::vector<m5::nfc::ndef::TLV>& tlvs, const bool keep);
    +
    124 bool write_type3(const m5::nfc::ndef::TLV& tlv);
    +
    125 bool write_type4(const std::vector<m5::nfc::ndef::TLV>& tlvs);
    +
    126 bool write_type4_iso7816(const std::vector<m5::nfc::ndef::TLV>& tlvs, const type4::CapabilityContainer& cc,
    +
    127 isodep::IsoDEP& dep);
    +
    128 bool write_type4_desfire(const std::vector<m5::nfc::ndef::TLV>& tlvs, const type4::CapabilityContainer& cc,
    +
    129 isodep::IsoDEP& dep);
    +
    130 bool write_type5(const std::vector<m5::nfc::ndef::TLV>& tlvs, const bool keep);
    +
    131
    +
    132 std::vector<m5::nfc::ndef::TLV> merge_tlv(std::vector<m5::nfc::ndef::TLV>& old_tlvs,
    +
    133 const std::vector<m5::nfc::ndef::TLV>& tlvs);
    +
    134
    +
    137
    +
    144 bool read_nfcv(uint8_t* rx, const uint16_t offset, const uint16_t len);
    +
    153 bool write_nfcv(const uint16_t offset, const uint8_t* tx, const uint16_t len);
    +
    155
    +
    156private:
    +
    157 NFCLayerInterface& _interface;
    +
    158};
    +
    +
    159
    +
    160} // namespace ndef
    +
    161} // namespace nfc
    +
    162} // namespace m5
    +
    163
    +
    164#endif
    +
    Common interface for NFC layer.
    Definition nfc_layer.hpp:26
    +
    ISO Data Exchange Protocol.
    Definition isoDEP.hpp:190
    +
    NDEF operations layer.
    Definition ndef_layer.hpp:35
    +
    bool read_nfcv(uint8_t *rx, const uint16_t offset, const uint16_t len)
    Read bytes from arbitrary byte offset (for NFC-V)
    Definition ndef_layer.cpp:1337
    +
    bool readCapabilityContainer(m5::nfc::ndef::type2::CapabilityContainer &cc)
    Read Type2 Capability Container.
    Definition ndef_layer.cpp:622
    +
    bool prepare_desfire_light()
    Prepare NDEF files on MIFARE DESFire Light.
    Definition ndef_layer.cpp:205
    +
    bool writeCapabilityContainer(const m5::nfc::ndef::type5::CapabilityContainer &cc)
    Write Type5 Capability Container.
    Definition ndef_layer.cpp:776
    +
    bool write_nfcv(const uint16_t offset, const uint8_t *tx, const uint16_t len)
    Write bytes to arbitrary byte offset (for NFC-V)
    Definition ndef_layer.cpp:1376
    +
    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.
    Definition ndef_layer.cpp:785
    +
    bool write(const m5::nfc::NFCForumTag ftag, const std::vector< m5::nfc::ndef::TLV > &tlvs, const bool keep=true)
    Write NDEF data.
    Definition ndef_layer.cpp:1425
    +
    bool readAttributeBlock(m5::nfc::ndef::type3::AttributeBlock &ab)
    Read Type3 Attribute Block.
    Definition ndef_layer.cpp:647
    +
    bool isValidFormat(bool &valid, const m5::nfc::NFCForumTag ftag)
    Check whether the tag is in NDEF format.
    Definition ndef_layer.cpp:159
    +
    bool prepare_desfire(const uint32_t max_ndef_size)
    Prepare NDEF files on MIFARE DESFire (EV1/EV2/EV3)
    Definition ndef_layer.cpp:454
    +
    NDEF TLV container.
    Definition ndef_tlv.hpp:27
    +
    For ISO-DEP.
    +
    Top level namespace of M5stack.
    +
    For NDEF.
    +
    NFC related definitions.
    +
    NDEF related.
    +
    uint8_t TagBits
    TLV(Tag,Length,Value) tag bit group for type2/5.
    Definition ndef.hpp:55
    +
    constexpr TagBits tagBitsMessage
    Message only.
    Definition ndef.hpp:113
    +
    NFCForumTag
    NFC Forum Tag Type.
    Definition nfc.hpp:39
    +
    Common layer for NFC related units.
    +
    Capability container for Type2.
    Definition ndef.hpp:183
    +
    For Type 3 tag (T3T)
    Definition ndef.hpp:254
    +
    Capability container for Type4.
    Definition ndef.hpp:455
    +
    Capability container for Type5.
    Definition ndef.hpp:495
    +
    +
    + + + + diff --git a/ndef__record_8cpp.html b/ndef__record_8cpp.html new file mode 100644 index 0000000..cc81b05 --- /dev/null +++ b/ndef__record_8cpp.html @@ -0,0 +1,131 @@ + + + + + + + +M5Unit-NFC: src/nfc/ndef/ndef_record.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ndef_record.cpp File Reference
    +
    +
    + +

    NDEF record. +More...

    +
    #include "ndef_record.hpp"
    +#include "ndef_tlv.hpp"
    +#include <M5Utility.hpp>
    +#include <algorithm>
    +#include <cstring>
    +
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    NDEF record.

    +
    +
    + + + + diff --git a/ndef__record_8hpp.html b/ndef__record_8hpp.html new file mode 100644 index 0000000..9bde564 --- /dev/null +++ b/ndef__record_8hpp.html @@ -0,0 +1,214 @@ + + + + + + + +M5Unit-NFC: src/nfc/ndef/ndef_record.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ndef_record.hpp File Reference
    +
    +
    + +

    NDEF record. +More...

    +
    #include "ndef.hpp"
    +#include <vector>
    +#include <string>
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Classes

    struct  m5::nfc::ndef::Attribute
     NDEF Record attribute (1st byte) More...
     
    class  m5::nfc::ndef::Record
     NDEF Record. More...
     
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    + + + + +

    +Enumerations

    enum class  m5::nfc::ndef::TNF : uint8_t {
    +  Empty +, Wellknown +, MIMEMedia +, URI +,
    +  External +, Unknown +, Unchanged +, Reserved +
    + }
     Type Name Field for NDEF Record. More...
     
    + + + + + + + +

    +Functions

    +bool m5::nfc::ndef::operator== (const Record &a, const Record &b)
     Equal?
     
    +bool m5::nfc::ndef::operator!= (const Record &a, const Record &b)
     Not equal?
     
    +

    Detailed Description

    +

    NDEF record.

    +

    Enumeration Type Documentation

    + +

    ◆ TNF

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::ndef::TNF : uint8_t
    +
    +strong
    +
    + +

    Type Name Field for NDEF Record.

    + + + + + + + + + +
    Enumerator
    Empty 

    Empry.

    +
    Wellknown 

    NFC Forum well-known-type.

    +
    MIMEMedia 

    Media-type as define in RFC2046.

    +
    URI 

    Absolute URI as define in RFC3986.

    +
    External 

    NFC Forum external type.

    +
    Unknown 

    Unknown.

    +
    Unchanged 

    Unchanged.

    +
    Reserved 

    Reserved.

    +
    + +
    +
    +
    +
    + + + + diff --git a/ndef__record_8hpp.js b/ndef__record_8hpp.js new file mode 100644 index 0000000..d611072 --- /dev/null +++ b/ndef__record_8hpp.js @@ -0,0 +1,17 @@ +var ndef__record_8hpp = +[ + [ "m5::nfc::ndef::Attribute", "structm5_1_1nfc_1_1ndef_1_1_attribute.html", null ], + [ "m5::nfc::ndef::Record", "classm5_1_1nfc_1_1ndef_1_1_record.html", "classm5_1_1nfc_1_1ndef_1_1_record" ], + [ "TNF", "ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153", [ + [ "Empty", "ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153ace2c8aed9c2fa0cfbed56cbda4d8bf07", null ], + [ "Wellknown", "ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153a313f0c0c8c4d7402ad3ca82709c6b0b2", null ], + [ "MIMEMedia", "ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153a3b797d40b6c61542a8763c8c2b131e14", null ], + [ "URI", "ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153a8447306210a0972ac94b7d774799df1a", null ], + [ "External", "ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153ab206a1b4ea1097761f78e8876f6da779", null ], + [ "Unknown", "ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153a88183b946cc5f0e8c96b2e66e1c74a7e", null ], + [ "Unchanged", "ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153a5ff3c6978f87d96febfdc8ed3899a97e", null ], + [ "Reserved", "ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153a942d4e37dd5607ab68e54755540d4a47", null ] + ] ], + [ "operator!=", "ndef__record_8hpp.html#a0f260b00747174f0d61a07ff5aff3fa1", null ], + [ "operator==", "ndef__record_8hpp.html#a27688dbdd1bec2a25597aca2512ef9bb", null ] +]; \ No newline at end of file diff --git a/ndef__record_8hpp_source.html b/ndef__record_8hpp_source.html new file mode 100644 index 0000000..0fff39a --- /dev/null +++ b/ndef__record_8hpp_source.html @@ -0,0 +1,382 @@ + + + + + + + +M5Unit-NFC: src/nfc/ndef/ndef_record.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ndef_record.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    10#ifndef M5_UNIT_UNIFIED_NFC_NDEF_NDEF_RECORD_HPP
    +
    11#define M5_UNIT_UNIFIED_NFC_NDEF_NDEF_RECORD_HPP
    +
    12
    +
    13#include "ndef.hpp"
    +
    14#include <vector>
    +
    15#include <string>
    +
    16
    +
    17namespace m5 {
    +
    18namespace nfc {
    +
    19namespace ndef {
    +
    20
    +
    21class TLV;
    +
    22
    +
    +
    27enum class TNF : uint8_t {
    +
    28 Empty,
    +
    29 Wellknown,
    +
    30 MIMEMedia,
    +
    31 URI,
    +
    32 External,
    +
    33 Unknown,
    +
    34 Unchanged,
    +
    35 Reserved,
    +
    36};
    +
    +
    37
    +
    +
    42struct Attribute {
    +
    45 static constexpr uint8_t MB{0x80};
    +
    46 static constexpr uint8_t ME{0x40};
    +
    47 static constexpr uint8_t CF{0x20};
    +
    48 static constexpr uint8_t SR{0x10};
    +
    49 static constexpr uint8_t IL{0x08};
    +
    50 static constexpr uint8_t TNF_MASK{0x07};
    +
    52
    +
    55 inline bool messageBegin() const
    +
    56 {
    +
    57 return value & MB;
    +
    58 }
    +
    59 inline bool messageEnd() const
    +
    60 {
    +
    61 return value & ME;
    +
    62 }
    +
    63 inline bool chunk() const
    +
    64 {
    +
    65 return value & CF;
    +
    66 }
    +
    67 inline bool shortRecord() const
    +
    68 {
    +
    69 return value & SR;
    +
    70 }
    +
    71 inline bool idLength() const
    +
    72 {
    +
    73 return value & IL;
    +
    74 }
    +
    75 inline TNF tnf() const
    +
    76 {
    +
    77 return static_cast<TNF>(value & TNF_MASK);
    +
    78 }
    +
    80
    +
    83 inline void messageBegin(const bool b)
    +
    84 {
    +
    85 value = (value & ~MB) | (b ? MB : 0);
    +
    86 }
    +
    87 inline void messageEnd(const bool b)
    +
    88 {
    +
    89 value = (value & ~ME) | (b ? ME : 0);
    +
    90 }
    +
    91 inline void chunk(const bool b)
    +
    92 {
    +
    93 value = (value & ~CF) | (b ? CF : 0);
    +
    94 }
    +
    95 inline void shortRecord(const bool b)
    +
    96 {
    +
    97 value = (value & ~SR) | (b ? SR : 0);
    +
    98 }
    +
    99 inline void idLength(const bool b)
    +
    100 {
    +
    101 value = (value & ~IL) | (b ? IL : 0);
    +
    102 }
    +
    103 inline void tnf(const TNF t)
    +
    104 {
    +
    105 value = (value & ~TNF_MASK) | (m5::stl::to_underlying(t) & TNF_MASK);
    +
    106 }
    +
    108
    +
    109 uint8_t value{};
    +
    110};
    +
    +
    111
    +
    +
    117class Record {
    +
    118public:
    +
    119 Record() noexcept : Record(TNF::Wellknown)
    +
    120 {
    +
    121 }
    +
    122
    +
    123 explicit Record(const TNF tnf) noexcept
    +
    124 {
    +
    125 _attr.tnf(tnf);
    +
    126 }
    +
    127 ~Record()
    +
    128 {
    +
    129 }
    +
    130
    +
    133 inline Attribute& attribute()
    +
    134 {
    +
    135 return _attr;
    +
    136 }
    +
    137 inline const Attribute& attribute() const
    +
    138 {
    +
    139 return _attr;
    +
    140 }
    +
    141 inline TNF tnf() const
    +
    142 {
    +
    143 return _attr.tnf();
    +
    144 }
    +
    146
    +
    178 inline const char* type() const
    +
    179 {
    +
    180 return _type.c_str();
    +
    181 }
    +
    182 inline void setType(const char* s)
    +
    183 {
    +
    184 _type = s;
    +
    185 }
    +
    187
    +
    +
    191 inline uint32_t identifierSize() const
    +
    192 {
    +
    193 return _id.size();
    +
    194 }
    +
    +
    +
    196 inline const uint8_t* identifier() const
    +
    197 {
    +
    198 return !_id.empty() ? _id.data() : nullptr;
    +
    199 }
    +
    +
    +
    205 inline void setIdentifier(const uint8_t* id, const uint32_t len)
    +
    206 {
    +
    207 if (_attr.tnf() != TNF::Empty && id && len) {
    +
    208 _id = std::vector<uint8_t>(id, id + len);
    +
    209 _attr.idLength(true);
    +
    210 } else {
    +
    211 _id.clear();
    +
    212 _attr.idLength(false);
    +
    213 }
    +
    214 }
    +
    +
    +
    216 inline void clearIdentifier()
    +
    217 {
    +
    218 setIdentifier(nullptr, 0);
    +
    219 }
    +
    +
    221
    +
    225 std::string payloadAsString() const;
    +
    226
    +
    +
    228 inline uint32_t payloadSize() const
    +
    229 {
    +
    230 return _payload.size();
    +
    231 }
    +
    +
    +
    233 inline const uint8_t* payload() const
    +
    234 {
    +
    235 return !_payload.empty() ? _payload.data() : nullptr;
    +
    236 }
    +
    +
    +
    242 inline void setPayload(const uint8_t* data, const uint32_t len)
    +
    243 {
    +
    244 if (_attr.tnf() != TNF::Empty && data && len) {
    +
    245 _payload = std::vector<uint8_t>(data, data + len);
    +
    246 _attr.shortRecord(_payload.size() < 256);
    +
    247 }
    +
    248 }
    +
    +
    250
    +
    253
    +
    260 bool setTextPayload(const char* str, const char* lang);
    +
    268 bool setURIPayload(const char* uri, URIProtocol protocol);
    +
    270
    +
    272 uint32_t required() const;
    +
    273
    +
    281 uint32_t encode(uint8_t* buf, const uint32_t blen) const;
    +
    289 uint32_t decode(const uint8_t* buf, const uint32_t blen);
    +
    290
    +
    292 void clear();
    +
    293
    +
    295 void dump() const;
    +
    296
    +
    297protected:
    +
    298 bool apply_nested_message();
    +
    299 void set_text_payload(const char* str, const char* lang);
    +
    300 void set_uri_payload(const char* uri, URIProtocol protocol);
    +
    301
    +
    302private:
    +
    303 Attribute _attr{};
    +
    304 std::string _type{};
    +
    305 std::vector<uint8_t> _payload{};
    +
    306 std::vector<uint8_t> _id{};
    +
    307
    +
    308 friend bool operator==(const Record& a, const Record& b);
    +
    309};
    +
    +
    310
    +
    +
    312inline bool operator==(const Record& a, const Record& b)
    +
    313{
    +
    314 return a._attr.value == b._attr.value && a._type == b._type && a._payload == b._payload && a._id == b._id;
    +
    315}
    +
    +
    +
    317inline bool operator!=(const Record& a, const Record& b)
    +
    318{
    +
    319 return !(a == b);
    +
    320}
    +
    +
    321
    +
    322} // namespace ndef
    +
    323} // namespace nfc
    +
    324} // namespace m5
    +
    325#endif
    +
    NDEF Record.
    Definition ndef_record.hpp:117
    +
    bool setURIPayload(const char *uri, URIProtocol protocol)
    Set URI to the payload.
    Definition ndef_record.cpp:67
    +
    uint32_t payloadSize() const
    Gets the payload size.
    Definition ndef_record.hpp:228
    +
    const uint8_t * payload() const
    Gets the payload pointer.
    Definition ndef_record.hpp:233
    +
    void clearIdentifier()
    Clear the identifier.
    Definition ndef_record.hpp:216
    +
    friend bool operator==(const Record &a, const Record &b)
    Equal?
    Definition ndef_record.hpp:312
    +
    uint32_t encode(uint8_t *buf, const uint32_t blen) const
    Encode.
    Definition ndef_record.cpp:79
    +
    uint32_t required() const
    Size required for encoding.
    Definition ndef_record.cpp:42
    +
    bool setTextPayload(const char *str, const char *lang)
    Set text to the payload.
    Definition ndef_record.cpp:55
    +
    void clear()
    Clear.
    Definition ndef_record.cpp:286
    +
    void dump() const
    Dump record for debug.
    Definition ndef_record.cpp:294
    +
    std::string payloadAsString() const
    Obtain the payload as a string.
    Definition ndef_record.cpp:216
    +
    const uint8_t * identifier() const
    Gets the identifier pointer.
    Definition ndef_record.hpp:196
    +
    uint32_t decode(const uint8_t *buf, const uint32_t blen)
    Decode.
    Definition ndef_record.cpp:146
    +
    void setIdentifier(const uint8_t *id, const uint32_t len)
    Set the identifier.
    Definition ndef_record.hpp:205
    +
    void setPayload(const uint8_t *data, const uint32_t len)
    Set the payload data.
    Definition ndef_record.hpp:242
    +
    uint32_t identifierSize() const
    Gets the identifier size.
    Definition ndef_record.hpp:191
    +
    NFC-A definitions.
    +
    NFC-B definitions.
    +
    Top level namespace of M5stack.
    +
    For NDEF.
    +
    NFC related definitions.
    +
    NDEF related.
    +
    URIProtocol
    URI Identifier Code.
    Definition ndef.hpp:132
    +
    TNF
    Type Name Field for NDEF Record.
    Definition ndef_record.hpp:27
    +
    @ Wellknown
    NFC Forum well-known-type.
    +
    @ MIMEMedia
    Media-type as define in RFC2046.
    +
    @ Unchanged
    Unchanged.
    +
    @ URI
    Absolute URI as define in RFC3986.
    +
    @ Reserved
    Reserved.
    +
    @ External
    NFC Forum external type.
    + +
    NDEF Record attribute (1st byte)
    Definition ndef_record.hpp:42
    +
    static constexpr uint8_t CF
    Chunked Flag.
    Definition ndef_record.hpp:47
    +
    static constexpr uint8_t ME
    Message End.
    Definition ndef_record.hpp:46
    +
    static constexpr uint8_t MB
    Message Begin.
    Definition ndef_record.hpp:45
    +
    static constexpr uint8_t IL
    ID Length (If disabled (specified as 0), ID LENGTH and ID can be omitted)
    Definition ndef_record.hpp:49
    +
    static constexpr uint8_t TNF_MASK
    Type Name Format.
    Definition ndef_record.hpp:50
    +
    static constexpr uint8_t SR
    Short Flag.
    Definition ndef_record.hpp:48
    +
    +
    + + + + diff --git a/ndef__tlv_8cpp.html b/ndef__tlv_8cpp.html new file mode 100644 index 0000000..5cdefa5 --- /dev/null +++ b/ndef__tlv_8cpp.html @@ -0,0 +1,131 @@ + + + + + + + +M5Unit-NFC: src/nfc/ndef/ndef_tlv.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ndef_tlv.cpp File Reference
    +
    +
    + +

    NDEF TLV. +More...

    +
    #include "ndef_tlv.hpp"
    +#include <M5Utility.hpp>
    +#include <numeric>
    +#include <cinttypes>
    +#include <cstring>
    +
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    NDEF TLV.

    +
    +
    + + + + diff --git a/ndef__tlv_8hpp.html b/ndef__tlv_8hpp.html new file mode 100644 index 0000000..ce6b8fd --- /dev/null +++ b/ndef__tlv_8hpp.html @@ -0,0 +1,138 @@ + + + + + + + +M5Unit-NFC: src/nfc/ndef/ndef_tlv.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ndef_tlv.hpp File Reference
    +
    +
    + +

    NDEF TLV. +More...

    +
    #include "ndef.hpp"
    +#include "ndef_record.hpp"
    +#include <vector>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  m5::nfc::ndef::TLV
     NDEF TLV container. More...
     
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    NDEF TLV.

    +
    +
    + + + + diff --git a/ndef__tlv_8hpp.js b/ndef__tlv_8hpp.js new file mode 100644 index 0000000..8a3aaa2 --- /dev/null +++ b/ndef__tlv_8hpp.js @@ -0,0 +1,4 @@ +var ndef__tlv_8hpp = +[ + [ "m5::nfc::ndef::TLV", "classm5_1_1nfc_1_1ndef_1_1_t_l_v.html", "classm5_1_1nfc_1_1ndef_1_1_t_l_v" ] +]; \ No newline at end of file diff --git a/ndef__tlv_8hpp_source.html b/ndef__tlv_8hpp_source.html new file mode 100644 index 0000000..f7146e8 --- /dev/null +++ b/ndef__tlv_8hpp_source.html @@ -0,0 +1,236 @@ + + + + + + + +M5Unit-NFC: src/nfc/ndef/ndef_tlv.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ndef_tlv.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    10#ifndef M5_UNIT_UNIFIED_NFC_NDEF_NDEF_TLV_HPP
    +
    11#define M5_UNIT_UNIFIED_NFC_NDEF_NDEF_TLV_HPP
    +
    12
    +
    13#include "ndef.hpp"
    +
    14#include "ndef_record.hpp"
    +
    15#include <vector>
    +
    16
    +
    17namespace m5 {
    +
    18namespace nfc {
    +
    19namespace ndef {
    +
    20
    +
    21class Record;
    +
    22
    +
    +
    27class TLV {
    +
    28public:
    +
    29 using container_type = std::vector<Record>;
    +
    30
    +
    32 static const TLV Terminator;
    +
    33
    +
    34 TLV() : TLV(Tag::Null)
    +
    35 {
    +
    36 }
    +
    37 explicit TLV(const Tag t) : _tag{t}
    +
    38 {
    +
    39 }
    +
    40 ~TLV()
    +
    41 {
    +
    42 }
    +
    43
    +
    +
    45 inline Tag tag() const
    +
    46 {
    +
    47 return _tag;
    +
    48 }
    +
    +
    +
    50 inline bool isTerminatorTLV() const
    +
    51 {
    +
    52 return _tag == Tag::Terminator;
    +
    53 }
    +
    +
    +
    55 inline bool isMessageTLV() const
    +
    56 {
    +
    57 return _tag == Tag::Message;
    +
    58 }
    +
    +
    +
    60 inline bool isNullTLV() const
    +
    61 {
    +
    62 return _tag == Tag::Null;
    +
    63 }
    +
    +
    +
    68 inline const container_type& records() const
    +
    69 {
    +
    70 return _records;
    +
    71 }
    +
    +
    +
    76 inline const std::vector<uint8_t>& payload() const
    +
    77 {
    +
    78 return _payload;
    +
    79 }
    +
    +
    +
    84 inline std::vector<uint8_t>& payload()
    +
    85 {
    +
    86 return _payload;
    +
    87 }
    +
    +
    88
    +
    90 uint32_t required() const;
    +
    91
    +
    98 bool push_back(const Record& r);
    +
    99
    +
    101 void pop_back();
    +
    102
    +
    110 uint32_t encode(uint8_t* buf, const uint32_t blen) const;
    +
    118 uint32_t decode(const uint8_t* buf, const uint32_t len);
    +
    119
    +
    124 void clear();
    +
    125
    +
    126 void dump();
    +
    127
    +
    128private:
    +
    129 Tag _tag{};
    +
    130 container_type _records{};
    +
    131 std::vector<uint8_t> _payload{};
    +
    132};
    +
    +
    133} // namespace ndef
    +
    134} // namespace nfc
    +
    135} // namespace m5
    +
    136#endif
    +
    NDEF Record.
    Definition ndef_record.hpp:117
    +
    NDEF TLV container.
    Definition ndef_tlv.hpp:27
    +
    std::vector< uint8_t > & payload()
    Get the payload.
    Definition ndef_tlv.hpp:84
    +
    bool push_back(const Record &r)
    Push back the record.
    Definition ndef_tlv.cpp:111
    +
    Tag tag() const
    Tag.
    Definition ndef_tlv.hpp:45
    +
    void clear()
    Clear internal buffers.
    Definition ndef_tlv.cpp:328
    +
    const std::vector< uint8_t > & payload() const
    Get the payload.
    Definition ndef_tlv.hpp:76
    +
    bool isMessageTLV() const
    Is Message?
    Definition ndef_tlv.hpp:55
    +
    static const TLV Terminator
    Terminator instance.
    Definition ndef_tlv.hpp:32
    +
    void pop_back()
    Removes the last record.
    Definition ndef_tlv.cpp:139
    +
    uint32_t required() const
    Size required for encoding.
    Definition ndef_tlv.cpp:105
    +
    bool isNullTLV() const
    Is Null TLV?
    Definition ndef_tlv.hpp:60
    +
    bool isTerminatorTLV() const
    Is termibator.
    Definition ndef_tlv.hpp:50
    +
    uint32_t decode(const uint8_t *buf, const uint32_t len)
    Decode.
    Definition ndef_tlv.cpp:217
    +
    uint32_t encode(uint8_t *buf, const uint32_t blen) const
    Encode.
    Definition ndef_tlv.cpp:160
    +
    const container_type & records() const
    Get the records.
    Definition ndef_tlv.hpp:68
    +
    Top level namespace of M5stack.
    +
    For NDEF.
    +
    NFC related definitions.
    +
    NDEF related.
    +
    Tag
    TLV(Tag,Length,Value) tag for type2/5.
    Definition ndef.hpp:42
    + +
    NDEF record.
    +
    +
    + + + + diff --git a/nfc_8hpp.html b/nfc_8hpp.html new file mode 100644 index 0000000..8b4d23a --- /dev/null +++ b/nfc_8hpp.html @@ -0,0 +1,322 @@ + + + + + + + +M5Unit-NFC: src/nfc/nfc.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfc.hpp File Reference
    +
    +
    + +

    NFC definitions. +More...

    +
    #include <cstdint>
    +#include "manufacturer_id.hpp"
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    namespace  nfc
     NFC related definitions.
     
    + + + + + + + + + + +

    +Enumerations

    enum class  m5::nfc::NFC : uint8_t {
    +  None +, A +, B +, F +,
    +  V +
    + }
     NFC type. More...
     
    enum class  m5::nfc::NFCForumTag : uint8_t {
    +  None +, Type1 +, Type2 +, Type3 +,
    +  Type4 +, Type5 +
    + }
     NFC Forum Tag Type. More...
     
    enum class  m5::nfc::Bitrate : uint8_t {
    +  Bps106K +, Bps212K +, Bps424K +, Bps848K +,
    +  Invalid = 0xFF +
    + }
     Communication bitrate. More...
     
    + + + + + + + + + + + + + +

    +Functions

    +bool m5::nfc::is_file_system_memory (const file_system_feature_t fsf)
     
    +bool m5::nfc::is_file_system_file (const file_system_feature_t fsf)
     
    +bool m5::nfc::is_file_system_ISO (const file_system_feature_t fsf)
     
    +bool m5::nfc::is_file_system_desfire (const file_system_feature_t fsf)
     
    +bool m5::nfc::is_file_system_desfire_normal (const file_system_feature_t fsf)
     
    +bool m5::nfc::is_file_system_desfire_light (const file_system_feature_t fsf)
     
    + + + + + + + + + + + + + + + + +

    File system (bits)

    +using m5::nfc::file_system_feature_t = uint8_t
     Alias for file_system_feature_t.
     
    +constexpr file_system_feature_t m5::nfc::FILE_SYSTEM_FLAT_MEMORY {0x01}
     Block/Page base R/W (flat memory)
     
    +constexpr file_system_feature_t m5::nfc::FILE_SYSTEM_ISO7816_4 {0x02}
     ISO 7816-4 (multi file base)
     
    +constexpr file_system_feature_t m5::nfc::FILE_SYSTEM_DESFIRE {0x04}
     MIFARE DESFire (multi file base)
     
    +constexpr file_system_feature_t m5::nfc::FILE_SYSTEM_DESFIRE_LIGHT {0x08}
     MIFARE DESFire light (single file base)
     
    +

    Detailed Description

    +

    NFC definitions.

    +

    Enumeration Type Documentation

    + +

    ◆ Bitrate

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::Bitrate : uint8_t
    +
    +strong
    +
    + +

    Communication bitrate.

    + + + + + +
    Enumerator
    Bps106K 

    106K

    +
    Bps212K 

    212K

    +
    Bps424K 

    424K

    +
    Bps848K 

    848K

    +
    + +
    +
    + +

    ◆ NFC

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::NFC : uint8_t
    +
    +strong
    +
    + +

    NFC type.

    + + + + + + +
    Enumerator
    None 

    No mode.

    +

    NFC-A.

    +

    NFC-B.

    +

    NFC-F.

    +

    NFC-V.

    +
    + +
    +
    + +

    ◆ NFCForumTag

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::NFCForumTag : uint8_t
    +
    +strong
    +
    + +

    NFC Forum Tag Type.

    + + + + + + +
    Enumerator
    Type1 

    Type 1 (NFC-A)

    +
    Type2 

    Type 2 (NFC-A)

    +
    Type3 

    Type 3 (NFC-F)

    +
    Type4 

    Type 4 (NFC-A, NFC-B)

    +
    Type5 

    Type 5 ISO/IEC 15693.

    +
    + +
    +
    +
    +
    + + + + diff --git a/nfc_8hpp.js b/nfc_8hpp.js new file mode 100644 index 0000000..608b1b9 --- /dev/null +++ b/nfc_8hpp.js @@ -0,0 +1,30 @@ +var nfc_8hpp = +[ + [ "file_system_feature_t", "nfc_8hpp.html#a14c7cd97b5b6e6bef9a0485ee5b430a3", null ], + [ "Bitrate", "nfc_8hpp.html#a6e4ec7792513939bffd3f557b917d326", [ + [ "Bps106K", "nfc_8hpp.html#a6e4ec7792513939bffd3f557b917d326a98ced0261bfd36e8857b586900ccf1e6", null ], + [ "Bps212K", "nfc_8hpp.html#a6e4ec7792513939bffd3f557b917d326a3a6399f5064660be3047c534c426f951", null ], + [ "Bps424K", "nfc_8hpp.html#a6e4ec7792513939bffd3f557b917d326af446d7e6091a0b02fff080589dc020f2", null ], + [ "Bps848K", "nfc_8hpp.html#a6e4ec7792513939bffd3f557b917d326a022572132d374f84ca57f030cc88099f", null ], + [ "Invalid", "nfc_8hpp.html#a6e4ec7792513939bffd3f557b917d326a4bbb8f967da6d1a610596d7257179c2b", null ] + ] ], + [ "NFC", "nfc_8hpp.html#a5e5f58799f82b1611c0309f953cc2c6f", [ + [ "None", "nfc_8hpp.html#a5e5f58799f82b1611c0309f953cc2c6fa6adf97f83acf6453d4a6a4b1070f3754", null ], + [ "A", "nfc_8hpp.html#a5e5f58799f82b1611c0309f953cc2c6fa7fc56270e7a70fa81a5935b72eacbe29", null ], + [ "B", "nfc_8hpp.html#a5e5f58799f82b1611c0309f953cc2c6fa9d5ed678fe57bcca610140957afab571", null ], + [ "F", "nfc_8hpp.html#a5e5f58799f82b1611c0309f953cc2c6fa800618943025315f869e4e1f09471012", null ], + [ "V", "nfc_8hpp.html#a5e5f58799f82b1611c0309f953cc2c6fa5206560a306a2e085a437fd258eb57ce", null ] + ] ], + [ "NFCForumTag", "nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1", [ + [ "None", "nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1a6adf97f83acf6453d4a6a4b1070f3754", null ], + [ "Type1", "nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1a3fc8355f4568d0bc9fa60829e4db7ad8", null ], + [ "Type2", "nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1a843171beb7019761cbdf01fa3b1b61fb", null ], + [ "Type3", "nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1a459e4c1992412014278341a5705d8aec", null ], + [ "Type4", "nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1a17bc479530517e70b6ce6639d64c9b6b", null ], + [ "Type5", "nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1a5d05e9889bd18763a956959c86940a23", null ] + ] ], + [ "FILE_SYSTEM_DESFIRE", "nfc_8hpp.html#a45cad45fa6d286a94cbe7e38db122ed7", null ], + [ "FILE_SYSTEM_DESFIRE_LIGHT", "nfc_8hpp.html#a7913c5e5556d7531d8b333650eb08f23", null ], + [ "FILE_SYSTEM_FLAT_MEMORY", "nfc_8hpp.html#a395e5c24db3d02f0637dd68801151b5a", null ], + [ "FILE_SYSTEM_ISO7816_4", "nfc_8hpp.html#a76e841dc92d8e14f40548e9a3a25b62b", null ] +]; \ No newline at end of file diff --git a/nfc_8hpp_source.html b/nfc_8hpp_source.html new file mode 100644 index 0000000..e7b0d8f --- /dev/null +++ b/nfc_8hpp_source.html @@ -0,0 +1,226 @@ + + + + + + + +M5Unit-NFC: src/nfc/nfc.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    nfc.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    10#ifndef M5_UNIT_UNIFIED_NFC_NFC_NFC_HPP
    +
    11#define M5_UNIT_UNIFIED_NFC_NFC_NFC_HPP
    +
    12
    +
    13#include <cstdint>
    +
    14#include "manufacturer_id.hpp"
    +
    15
    +
    16namespace m5 {
    +
    21namespace nfc {
    +
    22
    +
    +
    27enum class NFC : uint8_t {
    +
    28 None,
    +
    29 A,
    +
    30 B,
    +
    31 F,
    +
    32 V
    +
    33};
    +
    +
    34
    +
    +
    39enum class NFCForumTag : uint8_t {
    +
    40 None,
    +
    41 Type1,
    +
    42 Type2,
    +
    43 Type3,
    +
    44 Type4,
    +
    45 Type5,
    +
    46};
    +
    +
    47
    +
    +
    52enum class Bitrate : uint8_t {
    +
    53 Bps106K,
    +
    54 Bps212K,
    +
    55 Bps424K,
    +
    56 Bps848K,
    +
    57 Invalid = 0xFF,
    +
    58};
    +
    +
    59
    +
    62using file_system_feature_t = uint8_t;
    + + + + +
    68
    +
    69inline bool is_file_system_memory(const file_system_feature_t fsf)
    +
    70{
    +
    71 return (fsf & FILE_SYSTEM_FLAT_MEMORY);
    +
    72}
    +
    73
    +
    74inline bool is_file_system_file(const file_system_feature_t fsf)
    +
    75{
    +
    76 return (fsf & (FILE_SYSTEM_ISO7816_4 | FILE_SYSTEM_DESFIRE | FILE_SYSTEM_DESFIRE_LIGHT));
    +
    77}
    +
    78
    +
    79inline bool is_file_system_ISO(const file_system_feature_t fsf)
    +
    80{
    +
    81 return (fsf & FILE_SYSTEM_ISO7816_4);
    +
    82}
    +
    83
    +
    84inline bool is_file_system_desfire(const file_system_feature_t fsf)
    +
    85{
    +
    86 return (fsf & (FILE_SYSTEM_DESFIRE | FILE_SYSTEM_DESFIRE_LIGHT));
    +
    87}
    +
    88
    +
    89inline bool is_file_system_desfire_normal(const file_system_feature_t fsf)
    +
    90{
    +
    91 return (fsf & FILE_SYSTEM_DESFIRE);
    +
    92}
    +
    93
    +
    94inline bool is_file_system_desfire_light(const file_system_feature_t fsf)
    +
    95{
    +
    96 return (fsf & FILE_SYSTEM_DESFIRE_LIGHT);
    +
    97}
    +
    98
    +
    99} // namespace nfc
    +
    100} // namespace m5
    +
    101
    +
    102// #include "a/nfca.hpp"
    +
    103// #include "b/nfcb.hpp"
    +
    104// #include "f/nfcf.hpp"
    +
    105// #include "v/nfcv.hpp"
    +
    106// #include "ndef/ndef.hpp"
    +
    107#endif
    +
    Manufacturer ID (UID[0]) definitions for ISO/IEC 14443-3.
    +
    Top level namespace of M5stack.
    +
    NFC related definitions.
    +
    uint8_t file_system_feature_t
    Alias for file_system_feature_t.
    Definition nfc.hpp:62
    +
    constexpr file_system_feature_t FILE_SYSTEM_FLAT_MEMORY
    Block/Page base R/W (flat memory)
    Definition nfc.hpp:63
    +
    constexpr file_system_feature_t FILE_SYSTEM_DESFIRE
    MIFARE DESFire (multi file base)
    Definition nfc.hpp:65
    +
    NFC
    NFC type.
    Definition nfc.hpp:27
    + + + + +
    Bitrate
    Communication bitrate.
    Definition nfc.hpp:52
    + + + + +
    constexpr file_system_feature_t FILE_SYSTEM_ISO7816_4
    ISO 7816-4 (multi file base)
    Definition nfc.hpp:64
    +
    constexpr file_system_feature_t FILE_SYSTEM_DESFIRE_LIGHT
    MIFARE DESFire light (single file base)
    Definition nfc.hpp:66
    +
    NFCForumTag
    NFC Forum Tag Type.
    Definition nfc.hpp:39
    +
    @ Type4
    Type 4 (NFC-A, NFC-B)
    +
    @ Type1
    Type 1 (NFC-A)
    +
    @ Type3
    Type 3 (NFC-F)
    +
    @ Type5
    Type 5 ISO/IEC 15693.
    +
    @ Type2
    Type 2 (NFC-A)
    +
    +
    + + + + diff --git a/nfc__b__file__system_8cpp.html b/nfc__b__file__system_8cpp.html new file mode 100644 index 0000000..61d9259 --- /dev/null +++ b/nfc__b__file__system_8cpp.html @@ -0,0 +1,131 @@ + + + + + + + +M5Unit-NFC: src/nfc/isoDEP/nfc_b_file_system.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfc_b_file_system.cpp File Reference
    +
    +
    + +

    File system base using isoDEP for NFC-B. +More...

    +
    #include "nfc_b_file_system.hpp"
    +#include "nfc/layer/b/nfc_layer_b.hpp"
    +#include "nfc/isoDEP/isoDEP.hpp"
    +#include "nfc/apdu/apdu.hpp"
    +#include <M5Utility.hpp>
    +
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    File system base using isoDEP for NFC-B.

    +
    +
    + + + + diff --git a/nfc__b__file__system_8hpp.html b/nfc__b__file__system_8hpp.html new file mode 100644 index 0000000..2db1c56 --- /dev/null +++ b/nfc__b__file__system_8hpp.html @@ -0,0 +1,136 @@ + + + + + + + +M5Unit-NFC: src/nfc/isoDEP/nfc_b_file_system.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfc_b_file_system.hpp File Reference
    +
    +
    + +

    File system base using isoDEP for NFC-B. +More...

    +
    #include "file_system.hpp"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  m5::nfc::NFCBFileSystem
     File system base using isoDEP for NFC-B. More...
     
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    File system base using isoDEP for NFC-B.

    +
    +
    + + + + diff --git a/nfc__b__file__system_8hpp.js b/nfc__b__file__system_8hpp.js new file mode 100644 index 0000000..91baf07 --- /dev/null +++ b/nfc__b__file__system_8hpp.js @@ -0,0 +1,4 @@ +var nfc__b__file__system_8hpp = +[ + [ "m5::nfc::NFCBFileSystem", "classm5_1_1nfc_1_1_n_f_c_b_file_system.html", null ] +]; \ No newline at end of file diff --git a/nfc__b__file__system_8hpp_source.html b/nfc__b__file__system_8hpp_source.html new file mode 100644 index 0000000..aaff012 --- /dev/null +++ b/nfc__b__file__system_8hpp_source.html @@ -0,0 +1,142 @@ + + + + + + + +M5Unit-NFC: src/nfc/isoDEP/nfc_b_file_system.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    nfc_b_file_system.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    10#ifndef M5_UNIT_UNIFIED_NFC_NFC_ISODEP_NFC_B_FILE_SYSTEM_HPP
    +
    11#define M5_UNIT_UNIFIED_NFC_NFC_ISODEP_NFC_B_FILE_SYSTEM_HPP
    +
    12
    +
    13#include "file_system.hpp"
    +
    14
    +
    15namespace m5 {
    +
    16namespace nfc {
    +
    17class NFCLayerB;
    +
    18
    +
    +
    23class NFCBFileSystem : public FileSystem {
    +
    24public:
    +
    25 explicit NFCBFileSystem(m5::nfc::NFCLayerB& layer);
    +
    26};
    +
    +
    27
    +
    28} // namespace nfc
    +
    29} // namespace m5
    +
    30#endif
    +
    ISO/IEC 7816-4 file system.
    Definition file_system.hpp:81
    +
    File system base using isoDEP for NFC-B.
    Definition nfc_b_file_system.hpp:23
    +
    Common interface layer for each chip of the NFC-B reader.
    Definition nfc_layer_b.hpp:38
    +
    File system base using isoDEP.
    +
    Top level namespace of M5stack.
    +
    NFC related definitions.
    +
    +
    + + + + diff --git a/nfc__layer_8hpp.html b/nfc__layer_8hpp.html new file mode 100644 index 0000000..287433a --- /dev/null +++ b/nfc__layer_8hpp.html @@ -0,0 +1,136 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/nfc_layer.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfc_layer.hpp File Reference
    +
    +
    + +

    Common layer for NFC related units. +More...

    +
    #include "nfc/nfc.hpp"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  m5::nfc::NFCLayerInterface
     Common interface for NFC layer. More...
     
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    Common layer for NFC related units.

    +
    +
    + + + + diff --git a/nfc__layer_8hpp.js b/nfc__layer_8hpp.js new file mode 100644 index 0000000..f772b6b --- /dev/null +++ b/nfc__layer_8hpp.js @@ -0,0 +1,4 @@ +var nfc__layer_8hpp = +[ + [ "m5::nfc::NFCLayerInterface", "classm5_1_1nfc_1_1_n_f_c_layer_interface.html", "classm5_1_1nfc_1_1_n_f_c_layer_interface" ] +]; \ No newline at end of file diff --git a/nfc__layer_8hpp_source.html b/nfc__layer_8hpp_source.html new file mode 100644 index 0000000..28e9440 --- /dev/null +++ b/nfc__layer_8hpp_source.html @@ -0,0 +1,224 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/nfc_layer.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    nfc_layer.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    10#ifndef M5_UNIT_NFC_NFC_LAYER_NFC_LAYER_HPP
    +
    11#define M5_UNIT_NFC_NFC_LAYER_NFC_LAYER_HPP
    +
    12
    +
    13#include "nfc/nfc.hpp"
    +
    14
    +
    15namespace m5 {
    +
    16namespace nfc {
    +
    17
    +
    18namespace isodep {
    +
    19class IsoDEP;
    +
    20}
    +
    21
    +
    + +
    27public:
    +
    + +
    30 {
    +
    31 return m5::nfc::NFCForumTag::None;
    +
    32 }
    +
    +
    + +
    35 {
    +
    36 return file_system_feature_t(0);
    +
    37 }
    +
    +
    + +
    40 {
    +
    41 return nullptr;
    +
    42 }
    +
    +
    44 virtual uint16_t maximum_fifo_depth() const = 0;
    +
    45
    +
    +
    47 virtual bool transceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
    +
    48 const uint32_t timeout_ms)
    +
    49 {
    +
    50 return false;
    +
    51 }
    +
    +
    52
    +
    +
    54 virtual bool transmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms)
    +
    55 {
    +
    56 return false;
    +
    57 }
    +
    +
    +
    59 virtual bool receive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms)
    +
    60 {
    +
    61 return false;
    +
    62 }
    +
    +
    63
    +
    65 virtual bool read(uint8_t* rx, uint16_t& rx_len, const uint16_t saddr) = 0;
    +
    67 virtual bool write(const uint16_t saddr, const uint8_t* tx, const uint16_t tx_len) = 0;
    +
    68
    +
    70 virtual uint16_t first_user_block() const = 0;
    +
    72 virtual uint16_t last_user_block() const = 0;
    +
    74 virtual uint16_t user_area_size() const = 0;
    +
    76 virtual uint16_t unit_size_read() const = 0;
    +
    78 virtual uint16_t unit_size_write() const = 0;
    +
    79
    +
    +
    81 virtual uint8_t maximum_read_blocks() const
    +
    82 {
    +
    83 return 0;
    +
    84 }
    +
    +
    +
    86 virtual uint8_t maximum_write_blocks() const
    +
    87 {
    +
    88 return 0;
    +
    89 }
    +
    +
    90};
    +
    +
    91
    +
    92} // namespace nfc
    +
    93} // namespace m5
    +
    94#endif
    +
    Common interface for NFC layer.
    Definition nfc_layer.hpp:26
    +
    virtual uint8_t maximum_read_blocks() const
    Maximum read blocks for NFC-F.
    Definition nfc_layer.hpp:81
    +
    virtual m5::nfc::isodep::IsoDEP * isoDEP()
    ISO-DEP interface (nullptr if not supported)
    Definition nfc_layer.hpp:39
    +
    virtual bool write(const uint16_t saddr, const uint8_t *tx, const uint16_t tx_len)=0
    Write NDEF (block)
    +
    virtual uint16_t user_area_size() const =0
    User area size (bytes)
    +
    virtual bool transmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
    Transmit only.
    Definition nfc_layer.hpp:54
    +
    virtual uint16_t maximum_fifo_depth() const =0
    Maximum FIFO depth.
    +
    virtual bool read(uint8_t *rx, uint16_t &rx_len, const uint16_t saddr)=0
    Read NDEF (block)
    +
    virtual uint8_t maximum_write_blocks() const
    Maximum write blocks for NFC-F.
    Definition nfc_layer.hpp:86
    +
    virtual uint16_t first_user_block() const =0
    First user block.
    +
    virtual m5::nfc::NFCForumTag supportsNFCTag() const
    activePICC's NDEF type
    Definition nfc_layer.hpp:29
    +
    virtual file_system_feature_t supportsFilesystem() const
    activePICC's File system
    Definition nfc_layer.hpp:34
    +
    virtual bool transceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
    Transceive (RF command)
    Definition nfc_layer.hpp:47
    +
    virtual uint16_t last_user_block() const =0
    Last user block.
    +
    virtual uint16_t unit_size_write() const =0
    Unit size for write.
    +
    virtual bool receive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
    Receive only.
    Definition nfc_layer.hpp:59
    +
    virtual uint16_t unit_size_read() const =0
    Unit size for read.
    +
    ISO Data Exchange Protocol.
    Definition isoDEP.hpp:190
    +
    For ISO-DEP.
    +
    Top level namespace of M5stack.
    +
    NFC related definitions.
    +
    NFC definitions.
    +
    uint8_t file_system_feature_t
    Alias for file_system_feature_t.
    Definition nfc.hpp:62
    +
    NFCForumTag
    NFC Forum Tag Type.
    Definition nfc.hpp:39
    +
    +
    + + + + diff --git a/nfc__layer__a_8cpp.html b/nfc__layer__a_8cpp.html new file mode 100644 index 0000000..f3e80fa --- /dev/null +++ b/nfc__layer__a_8cpp.html @@ -0,0 +1,139 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/a/nfc_layer_a.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfc_layer_a.cpp File Reference
    +
    +
    + +

    Common layer for NFC-A. +More...

    +
    #include "nfc_layer_a.hpp"
    +#include "nfc/ndef/ndef.hpp"
    +#include "nfc/ndef/ndef_tlv.hpp"
    +#include "nfc/isoDEP/file_system.hpp"
    +#include "nfc/isoDEP/desfire_file_system.hpp"
    +#include "nfc/crypto/aes.hpp"
    +#include "nfc/crypto/secure_zero.hpp"
    +#include <inttypes.h>
    +#include <M5Utility.hpp>
    +#include <algorithm>
    +#include <mbedtls/aes.h>
    +#include <esp_random.h>
    +#include <cstring>
    +
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    Common layer for NFC-A.

    +
    +
    + + + + diff --git a/nfc__layer__a_8hpp.html b/nfc__layer__a_8hpp.html new file mode 100644 index 0000000..1cb6f70 --- /dev/null +++ b/nfc__layer__a_8hpp.html @@ -0,0 +1,150 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/a/nfc_layer_a.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfc_layer_a.hpp File Reference
    +
    +
    + +

    Common layer for NFC-A. +More...

    +
    #include "nfc/layer/nfc_layer.hpp"
    +#include "nfc/a/nfca.hpp"
    +#include "nfc/isoDEP/isoDEP.hpp"
    +#include "nfc/layer/ndef_layer.hpp"
    +#include "nfc/ndef/ndef.hpp"
    +#include <vector>
    +#include <memory>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  m5::nfc::NFCLayerA
     Common interface layer for each chip of the NFC-A reader. More...
     
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    Common layer for NFC-A.

    +
    Note
    Glossary
      +
    • PCD: Proximity Coupling Device (reader)
    • +
    • PICC: Proximity Integrated Circuit Card (card/tag, target device)
    • +
    • IDLE/READY/ACTIVE/HALT: ISO14443-3 state names
    • +
    +
    +
    +In NFC Forum (NDEF) context, a PICC is often called a "Tag"
    +
    +
    + + + + diff --git a/nfc__layer__a_8hpp.js b/nfc__layer__a_8hpp.js new file mode 100644 index 0000000..e68eb98 --- /dev/null +++ b/nfc__layer__a_8hpp.js @@ -0,0 +1,4 @@ +var nfc__layer__a_8hpp = +[ + [ "m5::nfc::NFCLayerA", "classm5_1_1nfc_1_1_n_f_c_layer_a.html", "classm5_1_1nfc_1_1_n_f_c_layer_a" ] +]; \ No newline at end of file diff --git a/nfc__layer__a_8hpp_source.html b/nfc__layer__a_8hpp_source.html new file mode 100644 index 0000000..9e24f5b --- /dev/null +++ b/nfc__layer__a_8hpp_source.html @@ -0,0 +1,473 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/a/nfc_layer_a.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    nfc_layer_a.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    17#ifndef M5_UNIT_NFC_NFC_LAYER_NFC_LAYER_A_HPP
    +
    18#define M5_UNIT_NFC_NFC_LAYER_NFC_LAYER_A_HPP
    +
    19
    + +
    21#include "nfc/a/nfca.hpp"
    +
    22#include "nfc/isoDEP/isoDEP.hpp"
    + +
    24#include "nfc/ndef/ndef.hpp"
    +
    25#include <vector>
    +
    26#include <memory>
    +
    27
    +
    28namespace m5 {
    +
    29
    +
    30namespace unit {
    +
    31class UnitMFRC522; // M5Unit-RFID
    +
    32class UnitWS1850S; // M5Unit-RFID
    +
    33class UnitST25R3916;
    +
    34class CapST25R3916;
    +
    35} // namespace unit
    +
    36
    +
    37namespace nfc {
    +
    38
    +
    + +
    44public:
    +
    45 struct Adapter;
    +
    46 explicit NFCLayerA(m5::unit::UnitMFRC522& u); // The implementation of this function is located in M5Unit-RFID
    +
    47 explicit NFCLayerA(m5::unit::UnitWS1850S& u); // The implementation of this function is located in M5Unit-RFID
    + + +
    50
    +
    53 virtual bool transceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
    +
    54 const uint32_t timeout_ms) override;
    +
    55 // virtual bool transmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms) override;
    +
    56 // virtual bool receive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms) override;
    +
    57 virtual m5::nfc::NFCForumTag supportsNFCTag() const override;
    +
    58 virtual file_system_feature_t supportsFilesystem() const override;
    +
    +
    59 virtual m5::nfc::isodep::IsoDEP* isoDEP() override
    +
    60 {
    +
    61 return &_isoDEP;
    +
    62 }
    +
    +
    63 virtual uint16_t maximum_fifo_depth() const override;
    +
    65
    +
    +
    71 inline bool isActive(const m5::nfc::a::PICC& picc) const
    +
    72 {
    +
    73 return _activePICC.valid() && _activePICC == picc;
    +
    74 }
    +
    +
    + +
    81 {
    +
    82 return _activePICC;
    +
    83 }
    +
    +
    84
    +
    87
    +
    93 bool request(uint16_t& atqa);
    +
    100 bool wakeup(uint16_t& atqa);
    +
    101
    +
    111 bool detect(m5::nfc::a::PICC& picc, const uint32_t timeout_ms = 100U);
    +
    121 bool detect(std::vector<m5::nfc::a::PICC>& piccs, const uint32_t timeout_ms = 1000U);
    +
    131 bool select(m5::nfc::a::PICC& picc);
    +
    140 bool activate(const m5::nfc::a::PICC& picc, const bool force_rats = false);
    +
    148 bool reactivate(const m5::nfc::a::PICC& picc, const bool force_rats = false);
    +
    +
    160 inline bool reactivate()
    +
    161 {
    +
    162 return reactivate(_activePICC);
    +
    163 }
    +
    +
    165
    +
    168
    +
    174 bool deactivate();
    +
    175
    +
    183 bool identify(m5::nfc::a::PICC& picc);
    +
    184
    +
    192 bool read4(uint8_t rx[4], const uint8_t addr);
    +
    200 bool read16(uint8_t rx[16], const uint8_t addr);
    +
    211 bool read(uint8_t* rx, uint16_t& rx_len, const uint8_t saddr,
    +
    212 const m5::nfc::a::mifare::classic::Key& key = m5::nfc::a::mifare::classic::DEFAULT_KEY);
    +
    223 bool read(uint8_t* rx, uint16_t& rx_len, const uint8_t saddr, const m5::nfc::a::mifare::plus::AESKey& key);
    +
    224
    +
    236 bool write4(const uint8_t addr, const uint8_t* tx, const uint16_t tx_len, const bool safety = true);
    +
    248 bool write16(const uint8_t addr, const uint8_t* tx, const uint16_t tx_len, const bool safety = true);
    +
    260 bool write(const uint8_t saddr, const uint8_t* tx, const uint16_t tx_len,
    +
    261 const m5::nfc::a::mifare::classic::Key& key = m5::nfc::a::mifare::classic::DEFAULT_KEY);
    +
    272 bool write(const uint8_t addr, const uint8_t* tx, const uint16_t tx_len,
    + +
    274
    +
    281 bool dump(const m5::nfc::a::mifare::classic::Key& mkey = m5::nfc::a::mifare::classic::DEFAULT_KEY);
    +
    289 bool dump(const uint8_t block);
    +
    291
    +
    295
    + +
    302 const uint8_t block, const m5::nfc::a::mifare::classic::Key& key = m5::nfc::a::mifare::classic::DEFAULT_KEY);
    + +
    310 const uint8_t block, const m5::nfc::a::mifare::classic::Key& key = m5::nfc::a::mifare::classic::DEFAULT_KEY);
    +
    311
    +
    341 bool mifareClassicReadAccessCondition(uint8_t& c123, const uint8_t block);
    +
    353 bool mifareClassicWriteAccessCondition(const uint8_t block, const uint8_t c123,
    + + +
    356
    +
    365 bool mifareClassicIsValueBlock(bool& is_value_block, const uint8_t block);
    +
    373 bool mifareClassicReadValueBlock(int32_t& value, const uint8_t block);
    +
    381 bool mifareClassicWriteValueBlock(const uint8_t block, const int32_t value);
    +
    393 bool mifareClassicDecrementValueBlock(const uint8_t block, const uint32_t delta, const bool transfer = true);
    +
    405 bool mifareClassicIncrementValueBlock(const uint8_t block, const uint32_t delta, const bool transfer = true);
    +
    413 bool mifareClassicTransferValueBlock(const uint8_t block);
    +
    421 bool mifareClassicRestoreValueBlock(const uint8_t block);
    +
    423
    +
    427
    + +
    437
    +
    441
    +
    444 bool mifareUltralightCAuthenticate(const uint8_t key[16]);
    +
    446
    +
    450
    + +
    463 const m5::nfc::a::mifare::plus::AESKey& card_config_key = m5::nfc::a::mifare::plus::DEFAULT_KEY,
    +
    464 const m5::nfc::a::mifare::plus::AESKey& card_master_key = m5::nfc::a::mifare::plus::DEFAULT_KEY,
    +
    465 const m5::nfc::a::mifare::plus::AESKey& l2_switch_key = m5::nfc::a::mifare::plus::DEFAULT_KEY,
    +
    466 const m5::nfc::a::mifare::plus::AESKey& l3_switch_key = m5::nfc::a::mifare::plus::DEFAULT_KEY,
    +
    467 const m5::nfc::a::mifare::plus::AESKey& aes_sector_key = m5::nfc::a::mifare::plus::DEFAULT_FF_KEY,
    +
    468 const m5::nfc::a::mifare::classic::Key& key_a = m5::nfc::a::mifare::classic::DEFAULT_KEY,
    +
    469 const m5::nfc::a::mifare::classic::Key& key_b = m5::nfc::a::mifare::classic::DEFAULT_KEY);
    + +
    477 const m5::nfc::a::mifare::plus::AESKey& sl2_switch_key = m5::nfc::a::mifare::plus::DEFAULT_KEY);
    + +
    485 const m5::nfc::a::mifare::plus::AESKey& l3_switch_key = m5::nfc::a::mifare::plus::DEFAULT_KEY);
    +
    486
    +
    488
    +
    492
    +
    497 bool ndefIsValidFormat(bool& valid);
    + +
    508 bool ndefPrepareDesfire(const uint32_t max_ndef_size);
    +
    516 bool ndefRead(m5::nfc::ndef::TLV& msg);
    +
    524 bool ndefRead(std::vector<m5::nfc::ndef::TLV>& tlvs,
    +
    525 const m5::nfc::ndef::TagBits tagBits = m5::nfc::ndef::tagBitsAll);
    +
    534 bool ndefWrite(const m5::nfc::ndef::TLV& msg);
    +
    544 bool ndefWrite(const std::vector<m5::nfc::ndef::TLV>& tlvs);
    +
    546
    +
    547protected:
    +
    548 virtual bool read(uint8_t* rx, uint16_t& rx_len, const uint16_t saddr) override;
    +
    549 virtual bool write(const uint16_t saddr, const uint8_t* tx, const uint16_t tx_len) override;
    +
    +
    550 inline virtual uint16_t first_user_block() const override
    +
    551 {
    +
    552 return _activePICC.firstUserBlock();
    +
    553 }
    +
    +
    +
    554 inline virtual uint16_t last_user_block() const override
    +
    555 {
    +
    556 return _activePICC.lastUserBlock();
    +
    557 }
    +
    +
    +
    558 inline virtual uint16_t user_area_size() const
    +
    559 {
    +
    560 return _activePICC.userAreaSize();
    +
    561 }
    +
    +
    +
    562 inline virtual uint16_t unit_size_read() const override
    +
    563 {
    +
    564 return _activePICC.supportsNFC() ? (_activePICC.isMifareUltralight() ? 16 : 4) : 16;
    +
    565 }
    +
    +
    +
    566 inline virtual uint16_t unit_size_write() const override
    +
    567 {
    +
    568 return (_activePICC.supportsNFC()) ? 4 : 16;
    +
    569 }
    +
    +
    570
    +
    571 bool identify_picc(m5::nfc::a::PICC& picc);
    +
    572 m5::nfc::a::Type identify_picc_st25ta();
    +
    573 uint8_t identify_plus_sl03();
    +
    574
    +
    575 bool read_using_fast(uint8_t* rx, uint16_t& rx_len, const uint8_t saddr);
    +
    576 bool read_using_read16(uint8_t* rx, uint16_t& rx_len, const uint8_t saddr,
    + +
    578 bool write_using_write4(const uint8_t addr, const uint8_t* tx, const uint16_t tx_len);
    +
    579 bool write_using_write16(const uint8_t addr, const uint8_t* tx, const uint16_t tx_len,
    + +
    581
    +
    582 bool nfca_request_ats(m5::nfc::a::ATS& ats, const uint8_t fsdi = 5, const uint8_t cid = 0);
    +
    583 bool nfca_deselect();
    +
    584
    +
    585 bool mifare_get_version_L3(uint8_t ver[8]);
    +
    586 bool mifare_get_version_L4_raw(uint8_t* ver, uint16_t& ver_len);
    +
    587 bool mifare_get_version_L4_wrapped(uint8_t* ver, uint16_t& ver_len);
    +
    588
    +
    589 bool mifare_plus_authenticateAES(const uint16_t key_no, const m5::nfc::a::mifare::plus::AESKey& key);
    +
    590 bool mifare_plus_authenticateAES_L3(const uint16_t key_no, const m5::nfc::a::mifare::plus::AESKey& key);
    +
    591 bool mifare_plus_read_plain_nomac(const uint16_t block, const uint8_t count, std::vector<uint8_t>& out);
    +
    592 bool mifare_plus_read_plain_mac(const uint16_t block, const uint8_t count, std::vector<uint8_t>& out);
    +
    593 bool mifare_plus_read_mac_l4(const uint16_t block, const uint8_t count, std::vector<uint8_t>& out,
    +
    594 const bool plain);
    +
    595 bool mifare_plus_write_mac_l4(const uint16_t block, const uint8_t* data, const uint16_t data_len, const bool plain);
    +
    596
    +
    597 bool mifare_classic_value_block(const m5::nfc::a::Command cmd, const uint8_t block, const uint32_t arg = 0);
    +
    598
    +
    599 bool mifare_ultralightC_authenticate1(uint8_t ek[8]);
    +
    600 bool mifare_ultralightC_authenticate2(uint8_t rx_ek[8], const uint8_t tx_ek[16]);
    +
    601
    +
    602 bool ntag_read_page(uint8_t* rx, uint16_t& rx_len, const uint8_t spage, const uint8_t epage);
    +
    603 bool ntag_write_page(const uint8_t page, const uint8_t tx[4]); // NTAG,UL,ULC
    +
    604
    +
    605 bool dump_sector_structure(const m5::nfc::a::PICC& picc, const m5::nfc::a::mifare::classic::Key& key);
    +
    606 bool dump_sector(const uint8_t sector);
    +
    607 bool dump_sector_mifare_plus_sl3(const uint8_t sector);
    +
    608 bool dump_page_structure(const uint16_t maxPage);
    +
    609 bool dump_page(const uint8_t page, const uint16_t maxPage);
    +
    610 bool dump_mifare_plus_sl3(const m5::nfc::a::mifare::plus::AESKey& key);
    +
    611 bool dump_desfire();
    +
    612 bool dump_desfire_light();
    +
    613 bool dump_st25ta();
    +
    614
    +
    615 static bool push_back_picc(std::vector<m5::nfc::a::PICC>& v, const m5::nfc::a::PICC& picc);
    +
    616
    +
    617protected:
    +
    618 m5::nfc::a::PICC _activePICC{};
    + + +
    621
    +
    622private:
    +
    623 bool mifare_plus_transceive_raw(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len);
    +
    624
    +
    629 struct MifarePlusSession {
    +
    630 bool authenticated{};
    +
    631 uint16_t key_no{};
    +
    632 uint16_t r_ctr{};
    +
    633 uint16_t w_ctr{};
    +
    634 uint8_t frame_num{};
    +
    635 std::array<uint8_t, 4> ti{};
    +
    636 std::array<uint8_t, 16> kenc{};
    +
    637 std::array<uint8_t, 16> kmac{};
    +
    638 };
    +
    639
    +
    640 MifarePlusSession _mfp_session{};
    +
    641 std::unique_ptr<Adapter> _impl;
    +
    642};
    +
    +
    643
    +
    645// Impl for units
    +
    646struct NFCLayerA::Adapter {
    +
    647 virtual ~Adapter() = default;
    +
    648
    +
    649 virtual uint16_t max_fifo_depth() const = 0;
    +
    650
    +
    651 virtual bool transceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
    +
    652 const uint32_t timeout_ms) = 0;
    +
    653
    +
    654 virtual bool request(uint16_t& atqa) = 0;
    +
    655 virtual bool wakeup(uint16_t& atqa) = 0;
    +
    656
    +
    657 virtual bool select(m5::nfc::a::PICC& picc) = 0;
    +
    658 virtual bool activate(const m5::nfc::a::PICC& picc) = 0;
    +
    659 virtual bool hlt() = 0;
    +
    660
    +
    661 virtual bool nfca_read_block(uint8_t rx[16], const uint8_t addr) = 0;
    +
    662 virtual bool nfca_write_block(const uint8_t addr, const uint8_t tx[16]) = 0;
    +
    663 virtual bool mifare_classic_authenticate(const bool auth_a, const m5::nfc::a::PICC& picc, const uint8_t block,
    +
    664 const m5::nfc::a::mifare::classic::Key& key) = 0;
    +
    665 virtual bool mifare_classic_value_block(const m5::nfc::a::Command cmd, const uint8_t block,
    +
    666 const uint32_t arg = 0) = 0;
    +
    667};
    +
    669
    +
    670} // namespace nfc
    +
    671} // namespace m5
    +
    672
    +
    673#endif
    +
    Common interface layer for each chip of the NFC-A reader.
    Definition nfc_layer_a.hpp:43
    +
    bool dump(const m5::nfc::a::mifare::classic::Key &mkey=m5::nfc::a::mifare::classic::DEFAULT_KEY)
    Dump all blocks/files.
    Definition nfc_layer_a.cpp:906
    +
    bool mifareClassicTransferValueBlock(const uint8_t block)
    Transfer inner buffer value to block.
    Definition nfc_layer_a.cpp:1104
    +
    bool request(uint16_t &atqa)
    Send REQA to discover a PICC in IDLE.
    Definition nfc_layer_a.cpp:199
    +
    virtual uint16_t first_user_block() const override
    First user block.
    Definition nfc_layer_a.hpp:550
    +
    bool mifareClassicReadValueBlock(int32_t &value, const uint8_t block)
    Read the specific block as the value block.
    Definition nfc_layer_a.cpp:1050
    +
    bool mifareClassicIsValueBlock(bool &is_value_block, const uint8_t block)
    Is specific block the value block?
    Definition nfc_layer_a.cpp:1018
    +
    bool detect(m5::nfc::a::PICC &picc, const uint32_t timeout_ms=100U)
    Detect single idle PICC.
    Definition nfc_layer_a.cpp:211
    +
    bool mifarePlusUpgradeSecurityLevel2(const m5::nfc::a::mifare::plus::AESKey &sl2_switch_key=m5::nfc::a::mifare::plus::DEFAULT_KEY)
    Upgrade security level to SL2 (AES over CRYPTO1)
    Definition nfc_layer_a.cpp:1312
    +
    bool mifarePlusUpgradeSecurityLevel1(const m5::nfc::a::mifare::plus::AESKey &card_config_key=m5::nfc::a::mifare::plus::DEFAULT_KEY, const m5::nfc::a::mifare::plus::AESKey &card_master_key=m5::nfc::a::mifare::plus::DEFAULT_KEY, const m5::nfc::a::mifare::plus::AESKey &l2_switch_key=m5::nfc::a::mifare::plus::DEFAULT_KEY, const m5::nfc::a::mifare::plus::AESKey &l3_switch_key=m5::nfc::a::mifare::plus::DEFAULT_KEY, const m5::nfc::a::mifare::plus::AESKey &aes_sector_key=m5::nfc::a::mifare::plus::DEFAULT_FF_KEY, const m5::nfc::a::mifare::classic::Key &key_a=m5::nfc::a::mifare::classic::DEFAULT_KEY, const m5::nfc::a::mifare::classic::Key &key_b=m5::nfc::a::mifare::classic::DEFAULT_KEY)
    Upgrade security level to SL1 (Classic compatibility mode)
    Definition nfc_layer_a.cpp:1222
    +
    bool write(const uint8_t saddr, const uint8_t *tx, const uint16_t tx_len, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
    Write any bytes to user area.
    Definition nfc_layer_a.cpp:746
    +
    bool isActive(const m5::nfc::a::PICC &picc) const
    Is the specified PICC currently active?
    Definition nfc_layer_a.hpp:71
    +
    virtual uint16_t last_user_block() const override
    Last user block.
    Definition nfc_layer_a.hpp:554
    +
    virtual file_system_feature_t supportsFilesystem() const override
    activePICC's File system
    Definition nfc_layer_a.cpp:194
    +
    bool activate(const m5::nfc::a::PICC &picc, const bool force_rats=false)
    Activate a specific PICC (anti-collision against the given PICC)
    Definition nfc_layer_a.cpp:274
    +
    bool mifareUltralightCAuthenticate(const uint8_t key[16])
    Authentication for MIFARE UltralightC.
    Definition nfc_layer_a.cpp:1144
    +
    bool mifareUltralightChangeFormatToNDEF()
    Write change to NFC Type-2 (NDEF) format for MIFARE Ultralight/C.
    Definition nfc_layer_a.cpp:1114
    +
    virtual uint16_t user_area_size() const
    User area size (bytes)
    Definition nfc_layer_a.hpp:558
    +
    bool ndefPrepareDesfire(const uint32_t max_ndef_size)
    Prepare NDEF files on MIFARE DESFire (EV1/EV2/EV3)
    Definition nfc_layer_a.cpp:1362
    +
    bool mifareClassicWriteValueBlock(const uint8_t block, const int32_t value)
    Write the specific block as the value block.
    Definition nfc_layer_a.cpp:1077
    +
    bool ndefIsValidFormat(bool &valid)
    Is the PICC data in NDEF format?
    Definition nfc_layer_a.cpp:1348
    +
    bool select(m5::nfc::a::PICC &picc)
    Select a PICC (anti-collision + SELECT cascade to ACTIVE)
    Definition nfc_layer_a.cpp:259
    +
    virtual m5::nfc::isodep::IsoDEP * isoDEP() override
    ISO-DEP interface (nullptr if not supported)
    Definition nfc_layer_a.hpp:59
    +
    bool read16(uint8_t rx[16], const uint8_t addr)
    Read the 1 block / 4 page (16 bytes)
    Definition nfc_layer_a.cpp:520
    +
    bool mifareClassicDecrementValueBlock(const uint8_t block, const uint32_t delta, const bool transfer=true)
    Decrement value of the value block.
    Definition nfc_layer_a.cpp:1088
    +
    const m5::nfc::a::PICC & activatedPICC() const
    Retrieve the currently activated PICC.
    Definition nfc_layer_a.hpp:80
    +
    bool ndefRead(m5::nfc::ndef::TLV &msg)
    Read NDEF Message TLV.
    Definition nfc_layer_a.cpp:1370
    +
    bool write4(const uint8_t addr, const uint8_t *tx, const uint16_t tx_len, const bool safety=true)
    Write the 1 page (4 bytes)
    Definition nfc_layer_a.cpp:698
    +
    bool reactivate()
    Reactivate the previously selected PICC.
    Definition nfc_layer_a.hpp:160
    +
    virtual uint16_t unit_size_read() const override
    Unit size for read.
    Definition nfc_layer_a.hpp:562
    +
    bool identify(m5::nfc::a::PICC &picc)
    Identify the specified PICC type.
    Definition nfc_layer_a.cpp:331
    +
    bool read4(uint8_t rx[4], const uint8_t addr)
    Read the 1 page.
    Definition nfc_layer_a.cpp:502
    +
    bool mifareClassicAuthenticateB(const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
    Authentication by KeyB for MIFARE classic.
    Definition nfc_layer_a.cpp:951
    +
    bool deactivate()
    Send HLTA to the currently selected PICC (deactivate)
    Definition nfc_layer_a.cpp:316
    +
    bool mifareClassicWriteAccessCondition(const uint8_t block, const uint8_t c123, const m5::nfc::a::mifare::classic::Key &akey, const m5::nfc::a::mifare::classic::Key &bkey)
    Write the specific block access conditions.
    Definition nfc_layer_a.cpp:982
    +
    virtual m5::nfc::NFCForumTag supportsNFCTag() const override
    activePICC's NDEF type
    Definition nfc_layer_a.cpp:189
    +
    bool ndefPrepareDesfireLight()
    Prepare NDEF files on MIFARE DESFire Light.
    Definition nfc_layer_a.cpp:1354
    +
    bool mifareClassicAuthenticateA(const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
    Authentication by KeyA for MIFARE classic.
    Definition nfc_layer_a.cpp:946
    +
    bool ndefWrite(const m5::nfc::ndef::TLV &msg)
    Write NDEF message.
    Definition nfc_layer_a.cpp:1387
    +
    virtual uint16_t unit_size_write() const override
    Unit size for write.
    Definition nfc_layer_a.hpp:566
    +
    bool mifarePlusUpgradeSecurityLevel3(const m5::nfc::a::mifare::plus::AESKey &l3_switch_key=m5::nfc::a::mifare::plus::DEFAULT_KEY)
    Upgrade security level to SL3 (AES)
    Definition nfc_layer_a.cpp:1330
    +
    virtual uint16_t maximum_fifo_depth() const override
    Maximum FIFO depth.
    Definition nfc_layer_a.cpp:184
    +
    bool mifareClassicReadAccessCondition(uint8_t &c123, const uint8_t block)
    Read the specific block access conditions.
    Definition nfc_layer_a.cpp:956
    +
    bool mifareClassicRestoreValueBlock(const uint8_t block)
    Restore block value to inner buffer.
    Definition nfc_layer_a.cpp:1109
    +
    bool read(uint8_t *rx, uint16_t &rx_len, const uint8_t saddr, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
    Read any bytes from user area.
    Definition nfc_layer_a.cpp:528
    +
    bool wakeup(uint16_t &atqa)
    Send WUPA to wake a PICC from IDLE or HALT.
    Definition nfc_layer_a.cpp:204
    +
    bool write16(const uint8_t addr, const uint8_t *tx, const uint16_t tx_len, const bool safety=true)
    Write the 1 block / 4 page (16 bytes)
    Definition nfc_layer_a.cpp:714
    +
    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 (RF command)
    Definition nfc_layer_a.cpp:178
    +
    bool mifareClassicIncrementValueBlock(const uint8_t block, const uint32_t delta, const bool transfer=true)
    Increment value of the value block.
    Definition nfc_layer_a.cpp:1096
    +
    Common interface for NFC layer.
    Definition nfc_layer.hpp:26
    +
    ISO Data Exchange Protocol.
    Definition isoDEP.hpp:190
    +
    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:2058
    +
    ST25R3916 Unit.
    Definition unit_ST25R3916.hpp:38
    +
    ISO Data Exchange Protocol.
    +
    std::array< uint8_t, 16 > AESKey
    MIFARE Plus SL2/3 Key (AES)
    Definition mifare.hpp:279
    +
    std::array< uint8_t, 6 > Key
    MIFARE classic Key.
    Definition mifare.hpp:50
    +
    Top level namespace of M5stack.
    +
    NFC related definitions.
    +
    Unit-related namespace.
    +
    NFC-V definitions.
    +
    NDEF related.
    +
    uint8_t TagBits
    TLV(Tag,Length,Value) tag bit group for type2/5.
    Definition ndef.hpp:55
    +
    Common layer for NDEF related.
    +
    uint8_t file_system_feature_t
    Alias for file_system_feature_t.
    Definition nfc.hpp:62
    +
    NFCForumTag
    NFC Forum Tag Type.
    Definition nfc.hpp:39
    +
    Common layer for NFC related units.
    +
    NFC-A definitions.
    +
    Command
    ISO-14443-3/4,MIFARE,NTAG commands.
    Definition nfca.hpp:538
    +
    Type
    Type of the PICC.
    Definition nfca.hpp:31
    +
    Answer to request.
    Definition nfca.hpp:256
    +
    PICC for NFC-A.
    Definition nfca.hpp:335
    +
    uint16_t userAreaSize() const
    Total user area size.
    Definition nfca.hpp:458
    +
    bool supportsNFC() const
    Supports NFC?
    Definition nfca.hpp:487
    +
    uint16_t lastUserBlock() const
    Total size.
    Definition nfca.hpp:473
    +
    bool valid() const
    Valid?
    Definition nfca.hpp:356
    +
    uint16_t firstUserBlock() const
    Gets the first user block/page address.
    Definition nfca.hpp:469
    +
    bool isMifareUltralight() const
    Is MIFARE Ultralight series?
    Definition nfca.hpp:393
    +
    +
    + + + + diff --git a/nfc__layer__a___s_t25_r3916_8cpp.html b/nfc__layer__a___s_t25_r3916_8cpp.html new file mode 100644 index 0000000..f567d2c --- /dev/null +++ b/nfc__layer__a___s_t25_r3916_8cpp.html @@ -0,0 +1,136 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/a/nfc_layer_a_ST25R3916.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfc_layer_a_ST25R3916.cpp File Reference
    +
    +
    + +

    ST25R3916 NFC-A adapter for common layer. +More...

    +
    #include "nfc/layer/a/nfc_layer_a.hpp"
    +#include "nfc/layer/ndef_layer.hpp"
    +#include "unit/unit_ST25R3916.hpp"
    +#include <M5Utility.hpp>
    +
    + + + +

    +Classes

    struct  m5::nfc::PollerST25R3916ForA
     
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    ST25R3916 NFC-A adapter for common layer.

    +
    +
    + + + + diff --git a/nfc__layer__a___s_t25_r3916_8cpp.js b/nfc__layer__a___s_t25_r3916_8cpp.js new file mode 100644 index 0000000..c6c09fa --- /dev/null +++ b/nfc__layer__a___s_t25_r3916_8cpp.js @@ -0,0 +1,4 @@ +var nfc__layer__a___s_t25_r3916_8cpp = +[ + [ "m5::nfc::PollerST25R3916ForA", "structm5_1_1nfc_1_1_poller_s_t25_r3916_for_a.html", null ] +]; \ No newline at end of file diff --git a/nfc__layer__b_8hpp.html b/nfc__layer__b_8hpp.html new file mode 100644 index 0000000..134d61d --- /dev/null +++ b/nfc__layer__b_8hpp.html @@ -0,0 +1,148 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/b/nfc_layer_b.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfc_layer_b.hpp File Reference
    +
    +
    + +

    Common layer for NFC-B. +More...

    +
    #include "nfc/layer/nfc_layer.hpp"
    +#include "nfc/b/nfcb.hpp"
    +#include "nfc/isoDEP/isoDEP.hpp"
    +#include "nfc/layer/ndef_layer.hpp"
    +#include <vector>
    +#include <memory>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  m5::nfc::NFCLayerB
     Common interface layer for each chip of the NFC-B reader. More...
     
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    Common layer for NFC-B.

    +
    Note
    Glossary
      +
    • PCD: Proximity Coupling Device (reader)
    • +
    • PICC: Proximity Integrated Circuit Card (card/tag, target device)
    • +
    +
    +
    +In NFC Forum (NDEF) context, a PICC is often called a "Tag"
    +
    +
    + + + + diff --git a/nfc__layer__b_8hpp.js b/nfc__layer__b_8hpp.js new file mode 100644 index 0000000..910d1c5 --- /dev/null +++ b/nfc__layer__b_8hpp.js @@ -0,0 +1,4 @@ +var nfc__layer__b_8hpp = +[ + [ "m5::nfc::NFCLayerB", "classm5_1_1nfc_1_1_n_f_c_layer_b.html", "classm5_1_1nfc_1_1_n_f_c_layer_b" ] +]; \ No newline at end of file diff --git a/nfc__layer__b_8hpp_source.html b/nfc__layer__b_8hpp_source.html new file mode 100644 index 0000000..65a0474 --- /dev/null +++ b/nfc__layer__b_8hpp_source.html @@ -0,0 +1,309 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/b/nfc_layer_b.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    nfc_layer_b.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    16#ifndef M5_UNIT_NFC_NFC_LAYER_NFC_LAYER_B_HPP
    +
    17#define M5_UNIT_NFC_NFC_LAYER_NFC_LAYER_B_HPP
    +
    18
    + +
    20#include "nfc/b/nfcb.hpp"
    +
    21#include "nfc/isoDEP/isoDEP.hpp"
    + +
    23#include <vector>
    +
    24#include <memory>
    +
    25
    +
    26namespace m5 {
    +
    27
    +
    28namespace unit {
    +
    29class UnitST25R3916;
    +
    30class CapST25R3916;
    +
    31} // namespace unit
    +
    32namespace nfc {
    +
    33
    +
    + +
    39public:
    +
    40 struct Adapter;
    + + +
    43
    +
    44 virtual bool transceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
    +
    45 const uint32_t timeout_ms) override;
    +
    46 virtual bool transmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms) override;
    +
    47 virtual bool receive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms) override;
    +
    +
    48 virtual m5::nfc::isodep::IsoDEP* isoDEP() override
    +
    49 {
    +
    50 return &_isoDEP;
    +
    51 }
    +
    +
    52 virtual uint16_t maximum_fifo_depth() const override;
    +
    53
    +
    +
    59 inline bool isActive(const m5::nfc::b::PICC& picc) const
    +
    60 {
    +
    61 return _activePICC.valid() && _activePICC == picc;
    +
    62 }
    +
    +
    + +
    69 {
    +
    70 return _activePICC;
    +
    71 }
    +
    +
    72
    +
    75
    +
    +
    85 inline bool request(uint8_t* atqb, uint16_t& atqb_len, const uint8_t afi = 0x00,
    +
    86 const m5::nfc::b::Require slots = m5::nfc::b::Require::Slot1)
    +
    87 {
    +
    88 return request_wakeup(atqb, atqb_len, afi, slots, false);
    +
    89 }
    +
    +
    +
    100 inline bool wakeup(uint8_t* atqb, uint16_t& atqb_len, const uint8_t afi = 0x00,
    +
    101 const m5::nfc::b::Require slots = m5::nfc::b::Require::Slot1)
    +
    102 {
    +
    103 return request_wakeup(atqb, atqb_len, afi, slots, true);
    +
    104 }
    +
    +
    105
    +
    114 bool detect(m5::nfc::b::PICC& picc, const uint8_t afi = 0x00, const uint32_t timeout_ms = 100U);
    +
    124 bool detect(std::vector<m5::nfc::b::PICC>& piccs, const uint8_t afi = 0x00, const uint8_t max_piccs = 4,
    +
    125 const uint32_t timeout_ms = 1000U);
    +
    126
    +
    129 bool select(m5::nfc::b::PICC& picc);
    +
    130#if 0
    +
    131 bool activate(m5::nfc::b::PICC& picc);
    +
    132 bool reactivate(const m5::nfc::b::PICC& picc);
    +
    133 inline bool reactivate()
    +
    134 {
    +
    135 return reactivate(_activePICC);
    +
    136 }
    +
    137#endif
    +
    138
    +
    140
    +
    143 bool hlt(const uint8_t pupi[4]);
    +
    144 bool deselect(const uint8_t pupi[4], const uint8_t cid = 0xFF);
    +
    145 bool deactivate();
    +
    147
    +
    148protected:
    +
    149 bool request_wakeup(uint8_t* atqb, uint16_t& atqb_len, const uint8_t afi, const m5::nfc::b::Require slots,
    +
    150 const bool wakeup);
    +
    151
    +
    +
    152 virtual bool read(uint8_t* rx, uint16_t& rx_len, const uint16_t saddr) override
    +
    153 {
    +
    154 return false;
    +
    155 }
    +
    +
    +
    156 virtual bool write(const uint16_t saddr, const uint8_t* tx, const uint16_t tx_len) override
    +
    157 {
    +
    158 return false;
    +
    159 }
    +
    +
    +
    160 inline virtual uint16_t first_user_block() const override
    +
    161 {
    +
    162 return 0;
    +
    163 }
    +
    +
    +
    164 inline virtual uint16_t last_user_block() const override
    +
    165 {
    +
    166 return 0;
    +
    167 }
    +
    +
    +
    168 inline virtual uint16_t user_area_size() const
    +
    169 {
    +
    170 return 0;
    +
    171 }
    +
    +
    +
    172 inline virtual uint16_t unit_size_read() const override
    +
    173 {
    +
    174 return 0;
    +
    175 }
    +
    +
    +
    176 inline virtual uint16_t unit_size_write() const override
    +
    177 {
    +
    178 return 0;
    +
    179 }
    +
    +
    180
    +
    181protected:
    +
    182 m5::nfc::b::PICC _activePICC{};
    + + +
    185
    +
    186private:
    +
    187 std::unique_ptr<Adapter> _impl;
    +
    188};
    +
    +
    189
    +
    191// Impl for units
    +
    192struct NFCLayerB::Adapter {
    +
    193 virtual ~Adapter() = default;
    +
    194
    +
    195 virtual uint16_t max_fifo_depth() const = 0;
    +
    196
    +
    197 virtual bool transceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
    +
    198 const uint32_t timeout_ms) = 0;
    +
    199 virtual bool transmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms) = 0;
    +
    200 virtual bool receive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms) = 0;
    +
    201};
    +
    203
    +
    204} // namespace nfc
    +
    205} // namespace m5
    +
    206
    +
    207#endif
    +
    Common interface layer for each chip of the NFC-B reader.
    Definition nfc_layer_b.hpp:38
    +
    bool isActive(const m5::nfc::b::PICC &picc) const
    Is the specified PICC currently active?
    Definition nfc_layer_b.hpp:59
    +
    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 (RF command)
    Definition nfc_layer_b.cpp:56
    +
    virtual uint16_t unit_size_read() const override
    Unit size for read.
    Definition nfc_layer_b.hpp:172
    +
    virtual bool receive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms) override
    Receive only.
    Definition nfc_layer_b.cpp:67
    +
    virtual uint16_t maximum_fifo_depth() const override
    Maximum FIFO depth.
    Definition nfc_layer_b.cpp:51
    +
    virtual uint16_t last_user_block() const override
    Last user block.
    Definition nfc_layer_b.hpp:164
    +
    virtual bool transmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms) override
    Transmit only.
    Definition nfc_layer_b.cpp:62
    +
    virtual bool read(uint8_t *rx, uint16_t &rx_len, const uint16_t saddr) override
    Read NDEF (block)
    Definition nfc_layer_b.hpp:152
    +
    virtual bool write(const uint16_t saddr, const uint8_t *tx, const uint16_t tx_len) override
    Write NDEF (block)
    Definition nfc_layer_b.hpp:156
    +
    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)
    Send WUPB to wake a PICC from IDLE or HALT.
    Definition nfc_layer_b.hpp:100
    +
    const m5::nfc::b::PICC & activatedPICC() const
    Retrieve the currently activated PICC.
    Definition nfc_layer_b.hpp:68
    +
    virtual uint16_t user_area_size() const
    User area size (bytes)
    Definition nfc_layer_b.hpp:168
    +
    virtual m5::nfc::isodep::IsoDEP * isoDEP() override
    ISO-DEP interface (nullptr if not supported)
    Definition nfc_layer_b.hpp:48
    +
    virtual uint16_t unit_size_write() const override
    Unit size for write.
    Definition nfc_layer_b.hpp:176
    +
    bool detect(m5::nfc::b::PICC &picc, const uint8_t afi=0x00, const uint32_t timeout_ms=100U)
    Detect single idle PICC.
    Definition nfc_layer_b.cpp:72
    +
    bool select(m5::nfc::b::PICC &picc)
    Send REQB to discover a PICC in IDLE.
    Definition nfc_layer_b.cpp:113
    +
    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)
    Send REQB to discover a PICC in IDLE.
    Definition nfc_layer_b.hpp:85
    +
    virtual uint16_t first_user_block() const override
    First user block.
    Definition nfc_layer_b.hpp:160
    +
    Common interface for NFC layer.
    Definition nfc_layer.hpp:26
    +
    ISO Data Exchange Protocol.
    Definition isoDEP.hpp:190
    +
    NDEF operations layer.
    Definition ndef_layer.hpp:35
    +
    ST25R3916 unit in CapCC1101 (SPI)
    Definition unit_ST25R3916.hpp:2058
    +
    ST25R3916 Unit.
    Definition unit_ST25R3916.hpp:38
    +
    ISO Data Exchange Protocol.
    +
    Top level namespace of M5stack.
    +
    NFC related definitions.
    +
    Unit-related namespace.
    +
    Common layer for NDEF related.
    +
    Common layer for NFC related units.
    +
    NFC-B definitions.
    +
    Require
    Number of slots required in the request/wakeup.
    Definition nfcb.hpp:39
    +
    PICC for NFC-B.
    Definition nfcb.hpp:99
    +
    bool valid() const
    Valid?
    Definition nfcb.hpp:115
    +
    +
    + + + + diff --git a/nfc__layer__b___s_t25_r3916_8cpp.html b/nfc__layer__b___s_t25_r3916_8cpp.html new file mode 100644 index 0000000..e6df547 --- /dev/null +++ b/nfc__layer__b___s_t25_r3916_8cpp.html @@ -0,0 +1,136 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/b/nfc_layer_b_ST25R3916.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfc_layer_b_ST25R3916.cpp File Reference
    +
    +
    + +

    ST25R3916 NFC-B adapter for common layer. +More...

    +
    #include "nfc/layer/b/nfc_layer_b.hpp"
    +#include "nfc/layer/ndef_layer.hpp"
    +#include "unit/unit_ST25R3916.hpp"
    +#include <M5Utility.hpp>
    +
    + + + +

    +Classes

    struct  m5::nfc::AdapterST25R3916ForB
     
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    ST25R3916 NFC-B adapter for common layer.

    +
    +
    + + + + diff --git a/nfc__layer__b___s_t25_r3916_8cpp.js b/nfc__layer__b___s_t25_r3916_8cpp.js new file mode 100644 index 0000000..30dda62 --- /dev/null +++ b/nfc__layer__b___s_t25_r3916_8cpp.js @@ -0,0 +1,4 @@ +var nfc__layer__b___s_t25_r3916_8cpp = +[ + [ "m5::nfc::AdapterST25R3916ForB", "structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_b.html", null ] +]; \ No newline at end of file diff --git a/nfc__layer__f_8cpp.html b/nfc__layer__f_8cpp.html new file mode 100644 index 0000000..a893fc3 --- /dev/null +++ b/nfc__layer__f_8cpp.html @@ -0,0 +1,133 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/f/nfc_layer_f.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfc_layer_f.cpp File Reference
    +
    +
    + +

    Common layer for NFC-F. +More...

    +
    #include "nfc_layer_f.hpp"
    +#include "nfc/ndef/ndef.hpp"
    +#include "nfc/ndef/ndef_tlv.hpp"
    +#include <inttypes.h>
    +#include <M5Utility.hpp>
    +#include <algorithm>
    +#include <esp_random.h>
    +
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    Common layer for NFC-F.

    +
    +
    + + + + diff --git a/nfc__layer__f_8hpp.html b/nfc__layer__f_8hpp.html new file mode 100644 index 0000000..1c331b3 --- /dev/null +++ b/nfc__layer__f_8hpp.html @@ -0,0 +1,147 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/f/nfc_layer_f.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfc_layer_f.hpp File Reference
    +
    +
    + +

    Common layer for NFC-F. +More...

    +
    #include "nfc/layer/nfc_layer.hpp"
    +#include "nfc/f/nfcf.hpp"
    +#include "nfc/layer/ndef_layer.hpp"
    +#include <vector>
    +#include <memory>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  m5::nfc::NFCLayerF
     Common interface layer for each chip of the NFC-F reader. More...
     
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    Common layer for NFC-F.

    +
    Note
    Glossary
      +
    • PCD: Proximity Coupling Device (reader)
    • +
    • PICC: Proximity Integrated Circuit Card (card/tag, target device)
    • +
    +
    +
    +In NFC Forum (NDEF) context, a PICC is often called a "Tag"
    +
    +
    + + + + diff --git a/nfc__layer__f_8hpp.js b/nfc__layer__f_8hpp.js new file mode 100644 index 0000000..c548a2f --- /dev/null +++ b/nfc__layer__f_8hpp.js @@ -0,0 +1,4 @@ +var nfc__layer__f_8hpp = +[ + [ "m5::nfc::NFCLayerF", "classm5_1_1nfc_1_1_n_f_c_layer_f.html", "classm5_1_1nfc_1_1_n_f_c_layer_f" ] +]; \ No newline at end of file diff --git a/nfc__layer__f_8hpp_source.html b/nfc__layer__f_8hpp_source.html new file mode 100644 index 0000000..4793783 --- /dev/null +++ b/nfc__layer__f_8hpp_source.html @@ -0,0 +1,405 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/f/nfc_layer_f.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    nfc_layer_f.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    16#ifndef M5_UNIT_NFC_NFC_LAYER_NFC_LAYER_F_HPP
    +
    17#define M5_UNIT_NFC_NFC_LAYER_NFC_LAYER_F_HPP
    +
    18
    + +
    20#include "nfc/f/nfcf.hpp"
    + +
    22#include <vector>
    +
    23#include <memory>
    +
    24
    +
    25namespace m5 {
    +
    26namespace unit {
    +
    27class UnitST25R3916;
    +
    28class CapST25R3916;
    +
    29} // namespace unit
    +
    30
    +
    31namespace nfc {
    +
    32
    +
    + +
    38public:
    +
    39 struct Adapter;
    + + +
    42
    +
    43 virtual uint16_t maximum_fifo_depth() const override;
    +
    44
    +
    +
    50 inline bool isActive(const m5::nfc::f::PICC& picc) const
    +
    51 {
    +
    52 return _activePICC.valid() && _activePICC == picc;
    +
    53 }
    +
    +
    + +
    60 {
    +
    61 return _activePICC;
    +
    62 }
    +
    +
    63
    +
    66
    +
    75 bool polling(m5::nfc::f::PICC& picc, const uint16_t system_code, const m5::nfc::f::RequestCode request_code,
    +
    76 const m5::nfc::f::TimeSlot time_slot);
    +
    77
    +
    85 bool detect(m5::nfc::f::PICC& picc, const uint32_t timeout_ms = 100U);
    +
    +
    94 inline bool detect(std::vector<m5::nfc::f::PICC>& piccs,
    +
    95 m5::nfc::f::TimeSlot time_slot = m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms = 500U)
    +
    96 {
    +
    97 return detect(piccs, nullptr, 0, time_slot, timeout_ms);
    +
    98 }
    +
    +
    +
    109 inline bool detect(std::vector<m5::nfc::f::PICC>& piccs, const uint16_t private_code,
    +
    110 m5::nfc::f::TimeSlot time_slot = m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms = 500U)
    +
    111 {
    +
    112 return detect(piccs, &private_code, 1, time_slot, timeout_ms);
    +
    113 }
    +
    +
    126 bool detect(std::vector<m5::nfc::f::PICC>& piccs, const uint16_t* private_code, const uint8_t pc_size,
    +
    127 m5::nfc::f::TimeSlot time_slot = m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms = 500U);
    +
    128
    +
    135 bool activate(const m5::nfc::f::PICC& picc);
    +
    +
    142 inline bool reactivate(const m5::nfc::f::PICC& picc)
    +
    143 {
    +
    144 return activate(picc);
    +
    145 }
    +
    +
    147
    +
    150
    +
    155 bool deactivate();
    +
    156
    +
    164 bool requestService(uint16_t& key_version, const uint16_t node_code);
    +
    173 bool requestService(uint16_t key_version[], const uint16_t* node_code, const uint8_t node_num);
    +
    174
    +
    + +
    182 {
    +
    183 return _activePICC.valid() && request_response_impl(_activePICC, mode);
    +
    184 }
    +
    +
    185
    +
    193 bool requestSystemCode(uint16_t code_list[255], uint8_t& code_num);
    +
    194
    +
    200 bool dump();
    +
    207 bool dump(const m5::nfc::f::block_t block);
    +
    209
    +
    212
    +
    +
    219 inline bool read16(uint8_t rx[16], const m5::nfc::f::block_t block,
    +
    220 const uint16_t service_code = m5::nfc::f::service_random_read)
    +
    221 {
    +
    222 return read16(rx, &block, 1, service_code);
    +
    223 }
    +
    +
    233 bool read16(uint8_t rx[16], const m5::nfc::f::block_t* block, const uint8_t block_num,
    +
    234 const uint16_t service_code = m5::nfc::f::service_random_read);
    +
    235
    +
    245 bool read(uint8_t* rx, uint16_t& rx_len, const m5::nfc::f::block_t sblock);
    +
    246
    +
    +
    258 inline bool read(uint8_t* rx, uint16_t& rx_len, const m5::nfc::f::block_t* block_list, const uint8_t block_num,
    +
    259 const uint16_t* service_code, const uint8_t service_num)
    +
    260 {
    +
    261 return _activePICC.valid() &&
    +
    262 read_without_encryption_impl(rx, rx_len, block_list, block_num, service_code, service_num, _activePICC);
    +
    263 }
    +
    +
    264
    +
    274 bool write16(const m5::nfc::f::block_t block, const uint8_t tx[16], const uint16_t tx_len);
    +
    283 bool write(const m5::nfc::f::block_t sblock, const uint8_t* tx, const uint16_t tx_len);
    +
    284
    +
    290 bool clearSPAD();
    +
    291
    +
    293
    +
    297
    +
    304 bool internalAuthenticate(const uint8_t ck[16], const uint16_t ckv, const uint8_t rc[16]);
    +
    311 bool externalAuthenticate(const uint8_t ck[16], const uint16_t ckv);
    +
    312
    +
    + +
    314 {
    +
    315 _authenticated = false;
    +
    316 }
    +
    +
    317
    +
    325 bool readWithMAC16(uint8_t rx[16], const m5::nfc::f::block_t block);
    +
    326
    +
    336 bool writeWithMAC16(const m5::nfc::f::block_t block, const uint8_t tx[16], const uint16_t tx_len);
    +
    338
    +
    342
    +
    347 bool ndefIsValidFormat(bool& valid);
    +
    355 bool ndefRead(m5::nfc::ndef::TLV& msg);
    +
    363 bool ndefWrite(const m5::nfc::ndef::TLV& msg);
    +
    364
    +
    371 bool writeSupportNDEF(const bool enabled);
    +
    373
    +
    374protected:
    +
    375 virtual bool read(uint8_t* rx, uint16_t& rx_len, const uint16_t saddr) override;
    +
    376 virtual bool write(const uint16_t saddr, const uint8_t* tx, const uint16_t tx_len) override;
    +
    +
    377 inline virtual uint16_t first_user_block() const override
    +
    378 {
    +
    379 return _activePICC.firstUserBlock();
    +
    380 }
    +
    +
    +
    381 inline virtual uint16_t last_user_block() const override
    +
    382 {
    +
    383 return _activePICC.lastUserBlock();
    +
    384 }
    +
    +
    +
    385 inline virtual uint16_t user_area_size() const
    +
    386 {
    +
    387 return _activePICC.userAreaSize();
    +
    388 }
    +
    +
    +
    389 inline virtual uint16_t unit_size_read() const override
    +
    390 {
    +
    391 return 16;
    +
    392 }
    +
    +
    +
    393 inline virtual uint16_t unit_size_write() const override
    +
    394 {
    +
    395 return 16;
    +
    396 }
    +
    +
    +
    397 inline virtual uint8_t maximum_read_blocks() const override
    +
    398 {
    +
    399 return _activePICC.maximumReadBlocks();
    +
    400 }
    +
    +
    +
    401 inline virtual uint8_t maximum_write_blocks() const override
    +
    402 {
    +
    403 return _activePICC.maximumWriteBlocks();
    +
    404 }
    +
    +
    405
    +
    406 bool request_response_impl(const m5::nfc::f::PICC& picc, m5::nfc::f::standard::Mode& mode);
    +
    407 bool read_without_encryption_impl(uint8_t* rx, uint16_t& rx_len, const m5::nfc::f::block_t* block_list,
    +
    408 const uint8_t block_num, const uint16_t* service_code, const uint8_t service_num,
    +
    409 const m5::nfc::f::PICC& picc);
    +
    410 bool write_without_encryption_impl(const m5::nfc::f::PICC& picc, const m5::nfc::f::block_t* block_list,
    +
    411 const uint8_t block_num, const uint16_t* service_code, const uint8_t service_num,
    +
    412 const uint8_t* tx, const uint16_t tx_len);
    +
    413
    +
    414 bool dump_felica_lite();
    +
    415 bool dump_felica_lite_s();
    +
    416 bool dump_block(m5::nfc::f::block_t block);
    +
    417
    +
    418 bool internal_authenticate_lite_s(const uint8_t ck[16], const uint16_t ckv, const uint8_t rc[16],
    +
    419 const bool include_wcnt = false);
    +
    420 bool external_authenticate_lite_s(const uint8_t ck[16], const uint16_t ckv);
    +
    421
    +
    422protected:
    +
    423 m5::nfc::f::PICC _activePICC{};
    +
    424
    +
    425private:
    +
    426 std::unique_ptr<Adapter> _impl;
    + +
    428 union {
    +
    429 uint8_t _sk[16]{};
    +
    430 struct {
    +
    431 uint8_t _sk1[8];
    +
    432 uint8_t _sk2[8];
    +
    433 };
    +
    434 };
    +
    435 uint8_t _rc[16]{};
    +
    436 bool _authenticated{};
    +
    437};
    +
    +
    438
    +
    440// Impl for units
    +
    441struct NFCLayerF::Adapter {
    +
    442 virtual ~Adapter() = default;
    +
    443
    +
    444 virtual uint16_t max_fifo_depth() const = 0;
    +
    445 virtual bool transceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
    +
    446 const uint32_t timeout_ms) = 0;
    +
    447};
    +
    449
    +
    450} // namespace nfc
    +
    451} // namespace m5
    +
    452#endif
    +
    Common interface layer for each chip of the NFC-F reader.
    Definition nfc_layer_f.hpp:37
    +
    bool read16(uint8_t rx[16], const m5::nfc::f::block_t block, const uint16_t service_code=m5::nfc::f::service_random_read)
    Read the 1 block with service code.
    Definition nfc_layer_f.hpp:219
    +
    bool ndefWrite(const m5::nfc::ndef::TLV &msg)
    Write NDEF message TLV.
    Definition nfc_layer_f.cpp:783
    +
    bool requestService(uint16_t &key_version, const uint16_t node_code)
    Request service.
    Definition nfc_layer_f.cpp:311
    +
    bool requestResponse(m5::nfc::f::standard::Mode &mode)
    Request response.
    Definition nfc_layer_f.hpp:181
    +
    bool read(uint8_t *rx, uint16_t &rx_len, const m5::nfc::f::block_t sblock)
    Read any bytes from user area.
    Definition nfc_layer_f.cpp:494
    +
    virtual uint16_t first_user_block() const override
    First user block.
    Definition nfc_layer_f.hpp:377
    +
    bool writeWithMAC16(const m5::nfc::f::block_t block, const uint8_t tx[16], const uint16_t tx_len)
    Write the 1 block.
    Definition nfc_layer_f.cpp:684
    +
    virtual uint16_t unit_size_read() const override
    Unit size for read.
    Definition nfc_layer_f.hpp:389
    +
    virtual uint8_t maximum_read_blocks() const override
    Maximum read blocks for NFC-F.
    Definition nfc_layer_f.hpp:397
    +
    bool detect(std::vector< m5::nfc::f::PICC > &piccs, m5::nfc::f::TimeSlot time_slot=m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms=500U)
    Detect PICCs.
    Definition nfc_layer_f.hpp:94
    +
    virtual uint16_t maximum_fifo_depth() const override
    Maximum FIFO depth.
    Definition nfc_layer_f.cpp:82
    +
    bool readWithMAC16(uint8_t rx[16], const m5::nfc::f::block_t block)
    Read the 1 block.
    Definition nfc_layer_f.cpp:546
    +
    bool dump()
    Dump all blocks.
    Definition nfc_layer_f.cpp:814
    +
    virtual uint16_t unit_size_write() const override
    Unit size for write.
    Definition nfc_layer_f.hpp:393
    +
    bool isActive(const m5::nfc::f::PICC &picc) const
    Is the specified PICC currently active?
    Definition nfc_layer_f.hpp:50
    +
    bool detect(std::vector< m5::nfc::f::PICC > &piccs, const uint16_t private_code, m5::nfc::f::TimeSlot time_slot=m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms=500U)
    Detect PICCs matching the specified system code.
    Definition nfc_layer_f.hpp:109
    +
    bool reactivate(const m5::nfc::f::PICC &picc)
    Activate a specific PICC.
    Definition nfc_layer_f.hpp:142
    +
    virtual uint16_t last_user_block() const override
    Last user block.
    Definition nfc_layer_f.hpp:381
    +
    bool detect(m5::nfc::f::PICC &picc, const uint32_t timeout_ms=100U)
    Detect single PICC.
    Definition nfc_layer_f.cpp:121
    +
    bool deactivate()
    Deactivate PICC.
    Definition nfc_layer_f.cpp:304
    +
    bool clearSPAD()
    Clear SPAD_0 - 13.
    Definition nfc_layer_f.cpp:739
    +
    void clearAuthenticate()
    Internal authentication.
    Definition nfc_layer_f.hpp:313
    +
    bool ndefRead(m5::nfc::ndef::TLV &msg)
    Read NDEF Message TLV.
    Definition nfc_layer_f.cpp:771
    +
    virtual uint16_t user_area_size() const
    User area size (bytes)
    Definition nfc_layer_f.hpp:385
    +
    bool externalAuthenticate(const uint8_t ck[16], const uint16_t ckv)
    External authentication.
    Definition nfc_layer_f.cpp:753
    +
    bool write(const m5::nfc::f::block_t sblock, const uint8_t *tx, const uint16_t tx_len)
    Write any bytes to user area.
    Definition nfc_layer_f.cpp:618
    +
    virtual uint8_t maximum_write_blocks() const override
    Maximum write blocks for NFC-F.
    Definition nfc_layer_f.hpp:401
    +
    bool activate(const m5::nfc::f::PICC &picc)
    Activate a specific PICC.
    Definition nfc_layer_f.cpp:294
    +
    bool writeSupportNDEF(const bool enabled)
    Write changes for NDEF Support.
    Definition nfc_layer_f.cpp:789
    +
    bool ndefIsValidFormat(bool &valid)
    Is the PICC data in NDEF format?
    Definition nfc_layer_f.cpp:765
    +
    bool internalAuthenticate(const uint8_t ck[16], const uint16_t ckv, const uint8_t rc[16])
    Internal authentication.
    Definition nfc_layer_f.cpp:745
    +
    const m5::nfc::f::PICC & activatedPICC() const
    Retrieve the currently activated PICC.
    Definition nfc_layer_f.hpp:59
    +
    bool polling(m5::nfc::f::PICC &picc, const uint16_t system_code, const m5::nfc::f::RequestCode request_code, const m5::nfc::f::TimeSlot time_slot)
    Polling.
    Definition nfc_layer_f.cpp:87
    +
    bool read(uint8_t *rx, uint16_t &rx_len, const m5::nfc::f::block_t *block_list, const uint8_t block_num, const uint16_t *service_code, const uint8_t service_num)
    Read the specified block list and service codes.
    Definition nfc_layer_f.hpp:258
    +
    bool requestSystemCode(uint16_t code_list[255], uint8_t &code_num)
    Request system code.
    Definition nfc_layer_f.cpp:397
    +
    bool write16(const m5::nfc::f::block_t block, const uint8_t tx[16], const uint16_t tx_len)
    Write the 1 block.
    Definition nfc_layer_f.cpp:608
    +
    Common interface for NFC layer.
    Definition nfc_layer.hpp:26
    +
    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:2058
    +
    ST25R3916 Unit.
    Definition unit_ST25R3916.hpp:38
    +
    Top level namespace of M5stack.
    +
    NFC related definitions.
    +
    Unit-related namespace.
    +
    Common layer for NDEF related.
    +
    Common layer for NFC related units.
    +
    NFC-F definitions.
    +
    TimeSlot
    Timeslot value for Polling.
    Definition nfcf.hpp:107
    +
    Mode
    Mode for Standard.
    Definition nfcf.hpp:236
    +
    RequestCode
    Request code for Polling.
    Definition nfcf.hpp:97
    +
    PICC information for NFC-F.
    Definition nfcf.hpp:381
    +
    uint16_t userAreaSize() const
    Total user area size.
    Definition nfcf.hpp:403
    +
    uint16_t lastUserBlock() const
    Gets the last user block.
    Definition nfcf.hpp:413
    +
    uint8_t maximumWriteBlocks() const
    Maximum number of blocks that can be write simultaneously.
    Definition nfcf.hpp:429
    +
    uint16_t firstUserBlock() const
    Gets the first user block.
    Definition nfcf.hpp:408
    +
    uint8_t maximumReadBlocks() const
    Maximum number of blocks that can be read simultaneously.
    Definition nfcf.hpp:424
    +
    bool valid() const
    Valid for detection?
    Definition nfcf.cpp:310
    +
    Block list element.
    Definition nfcf.hpp:147
    +
    +
    + + + + diff --git a/nfc__layer__f___s_t25_r3916_8cpp.html b/nfc__layer__f___s_t25_r3916_8cpp.html new file mode 100644 index 0000000..820fc4c --- /dev/null +++ b/nfc__layer__f___s_t25_r3916_8cpp.html @@ -0,0 +1,136 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/f/nfc_layer_f_ST25R3916.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfc_layer_f_ST25R3916.cpp File Reference
    +
    +
    + +

    ST25R3916 NFC-F adapter for common layer. +More...

    +
    #include "nfc/layer/f/nfc_layer_f.hpp"
    +#include "nfc/layer/ndef_layer.hpp"
    +#include "unit/unit_ST25R3916.hpp"
    +#include <M5Utility.hpp>
    +
    + + + +

    +Classes

    struct  m5::nfc::AdapterST25R3916ForF
     
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    ST25R3916 NFC-F adapter for common layer.

    +
    +
    + + + + diff --git a/nfc__layer__f___s_t25_r3916_8cpp.js b/nfc__layer__f___s_t25_r3916_8cpp.js new file mode 100644 index 0000000..4753213 --- /dev/null +++ b/nfc__layer__f___s_t25_r3916_8cpp.js @@ -0,0 +1,4 @@ +var nfc__layer__f___s_t25_r3916_8cpp = +[ + [ "m5::nfc::AdapterST25R3916ForF", "structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_f.html", null ] +]; \ No newline at end of file diff --git a/nfc__layer__v_8cpp.html b/nfc__layer__v_8cpp.html new file mode 100644 index 0000000..89698b2 --- /dev/null +++ b/nfc__layer__v_8cpp.html @@ -0,0 +1,134 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/v/nfc_layer_v.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfc_layer_v.cpp File Reference
    +
    +
    + +

    Common layer for NFC-V. +More...

    +
    #include "nfc_layer_v.hpp"
    +#include "nfc/manufacturer_id.hpp"
    +#include "nfc/ndef/ndef.hpp"
    +#include "nfc/ndef/ndef_tlv.hpp"
    +#include <inttypes.h>
    +#include <M5Utility.hpp>
    +#include <algorithm>
    +#include <esp_random.h>
    +
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    Common layer for NFC-V.

    +
    +
    + + + + diff --git a/nfc__layer__v_8hpp.html b/nfc__layer__v_8hpp.html new file mode 100644 index 0000000..4f3c88b --- /dev/null +++ b/nfc__layer__v_8hpp.html @@ -0,0 +1,147 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/v/nfc_layer_v.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfc_layer_v.hpp File Reference
    +
    +
    + +

    Common layer for NFC-V. +More...

    +
    #include "nfc/layer/nfc_layer.hpp"
    +#include "nfc/v/nfcv.hpp"
    +#include "nfc/layer/ndef_layer.hpp"
    +#include <vector>
    +#include <memory>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  m5::nfc::NFCLayerV
     Common interface layer for each chip of the NFC-V reader. More...
     
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    Common layer for NFC-V.

    +
    Note
    Glossary
      +
    • PCD: Proximity Coupling Device (reader)
    • +
    • PICC: Proximity Integrated Circuit Card (card/tag, target device)
    • +
    +
    +
    +In NFC Forum (NDEF) context, a PICC is often called a "Tag"
    +
    +
    + + + + diff --git a/nfc__layer__v_8hpp.js b/nfc__layer__v_8hpp.js new file mode 100644 index 0000000..8098ab4 --- /dev/null +++ b/nfc__layer__v_8hpp.js @@ -0,0 +1,4 @@ +var nfc__layer__v_8hpp = +[ + [ "m5::nfc::NFCLayerV", "classm5_1_1nfc_1_1_n_f_c_layer_v.html", "classm5_1_1nfc_1_1_n_f_c_layer_v" ] +]; \ No newline at end of file diff --git a/nfc__layer__v_8hpp_source.html b/nfc__layer__v_8hpp_source.html new file mode 100644 index 0000000..20ea8a7 --- /dev/null +++ b/nfc__layer__v_8hpp_source.html @@ -0,0 +1,306 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/v/nfc_layer_v.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    nfc_layer_v.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    16#ifndef M5_UNIT_NFC_NFC_LAYER_NFC_LAYER_V_HPP
    +
    17#define M5_UNIT_NFC_NFC_LAYER_NFC_LAYER_V_HPP
    +
    18
    + +
    20#include "nfc/v/nfcv.hpp"
    + +
    22#include <vector>
    +
    23#include <memory>
    +
    24
    +
    25namespace m5 {
    +
    26namespace unit {
    +
    27class UnitST25R3916;
    +
    28class CapST25R3916;
    +
    29} // namespace unit
    +
    30namespace nfc {
    +
    31
    +
    + +
    37public:
    +
    38 struct Adapter;
    + + +
    41
    +
    42 virtual uint16_t maximum_fifo_depth() const override;
    +
    43
    +
    +
    49 inline bool isActive(const m5::nfc::v::PICC& picc) const
    +
    50 {
    +
    51 return _activePICC.valid() && _activePICC == picc;
    +
    52 }
    +
    +
    + +
    59 {
    +
    60 return _activePICC;
    +
    61 }
    +
    +
    62
    +
    63 // @brief Get current modulation mode
    +
    64 inline m5::nfc::v::ModulationMode modulationMode() const
    +
    65 {
    +
    66 return _modulation;
    +
    67 }
    +
    68 // @brief Set current modulation mode
    +
    69 inline void setModulationMode(const m5::nfc::v::ModulationMode mode)
    +
    70 {
    +
    71 _modulation = mode;
    +
    72 }
    +
    73
    +
    76
    +
    83 bool detect(m5::nfc::v::PICC& picc, const uint32_t timeout_ms = 50U);
    +
    91 bool detect(std::vector<m5::nfc::v::PICC>& piccs, const uint32_t timeout_ms = 1000U);
    +
    92
    +
    100 bool activate(const m5::nfc::v::PICC& picc);
    +
    101
    +
    102 bool reactivate(const m5::nfc::v::PICC& picc);
    +
    +
    103 inline bool reactivate()
    +
    104 {
    +
    105 return reactivate(_activePICC);
    +
    106 }
    +
    +
    108
    +
    111
    +
    117 bool deactivate();
    +
    126 bool readBlock(uint8_t rx[32], const uint16_t block);
    +
    135 bool writeBlock(const uint16_t block, const uint8_t* tx, const uint8_t tx_len);
    +
    144 virtual bool read(uint8_t* rx, uint16_t& rx_len, const uint16_t sblock) override;
    +
    154 virtual bool write(const uint16_t sblock, const uint8_t* tx, const uint16_t tx_len) override;
    +
    155
    +
    160 bool dump();
    +
    166 bool dump(const uint16_t block);
    +
    168
    +
    172
    +
    177 bool ndefIsValidFormat(bool& valid);
    + + +
    197 bool ndefRead(m5::nfc::ndef::TLV& msg);
    +
    206 bool ndefWrite(const m5::nfc::ndef::TLV& msg);
    +
    208
    +
    209protected:
    +
    210 bool dump_all();
    +
    211 bool dump_block(const uint16_t block);
    +
    212
    +
    213 bool detect_single(m5::nfc::v::PICC& picc);
    +
    214 bool get_system_information(m5::nfc::v::PICC& picc);
    +
    215 bool get_system_information_ext(m5::nfc::v::PICC& picc);
    +
    216 bool read_block_ext(uint8_t rx[32], const m5::nfc::v::PICC& picc, const uint16_t block);
    +
    217 bool write_block_ext(const m5::nfc::v::PICC& picc, const uint16_t block, const uint8_t* tx, const uint8_t tx_len);
    +
    218 bool reset_to_ready(const m5::nfc::v::PICC* picc);
    +
    219 bool stay_quiet(const m5::nfc::v::PICC& picc);
    +
    220
    +
    +
    221 virtual uint16_t first_user_block() const override
    +
    222 {
    +
    223 return _activePICC.firstUserBlock();
    +
    224 }
    +
    +
    +
    225 virtual uint16_t last_user_block() const override
    +
    226 {
    +
    227 return _activePICC.lastUserBlock();
    +
    228 }
    +
    +
    +
    229 inline virtual uint16_t user_area_size() const
    +
    230 {
    +
    231 return _activePICC.userAreaSize();
    +
    232 }
    +
    +
    +
    233 inline virtual uint16_t unit_size_read() const override
    +
    234 {
    +
    235 return _activePICC.block_size;
    +
    236 }
    +
    +
    +
    237 inline virtual uint16_t unit_size_write() const override
    +
    238 {
    +
    239 return _activePICC.block_size;
    +
    240 }
    +
    +
    241
    +
    242protected:
    +
    243 m5::nfc::v::PICC _activePICC{};
    +
    244
    +
    245private:
    +
    246 std::unique_ptr<Adapter> _impl;
    + +
    248 m5::nfc::v::ModulationMode _modulation{m5::nfc::v::ModulationMode::OneOf4};
    +
    249};
    +
    +
    250
    +
    252// Impl for units
    +
    253struct NFCLayerV::Adapter {
    +
    254 virtual ~Adapter() = default;
    +
    255 virtual uint16_t max_fifo_depth() const = 0;
    +
    256
    +
    257 virtual bool transceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
    +
    258 const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode) = 0;
    +
    259 virtual bool transmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms,
    +
    260 const m5::nfc::v::ModulationMode mode) = 0;
    +
    261 virtual bool receive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms) = 0;
    +
    262};
    +
    264
    +
    265} // namespace nfc
    +
    266} // namespace m5
    +
    267#endif
    +
    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:225
    +
    bool ndefWrite(const m5::nfc::ndef::TLV &msg)
    Write NDEF message.
    Definition nfc_layer_v.cpp:430
    +
    bool detect(m5::nfc::v::PICC &picc, const uint32_t timeout_ms=50U)
    Detect single ready PICC.
    Definition nfc_layer_v.cpp:80
    +
    bool ndefIsValidFormat(bool &valid)
    Is the PICC data in NDEF format?
    Definition nfc_layer_v.cpp:403
    +
    virtual uint16_t user_area_size() const
    User area size (bytes)
    Definition nfc_layer_v.hpp:229
    +
    virtual uint16_t unit_size_write() const override
    Unit size for write.
    Definition nfc_layer_v.hpp:237
    +
    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:288
    +
    bool ndefReadCapabilityContainer(m5::nfc::ndef::type5::CapabilityContainer &cc)
    Read Type5 Capability Container.
    Definition nfc_layer_v.cpp:408
    +
    bool deactivate()
    Send Reset to ready to the currently selected PICC (deactivate)
    Definition nfc_layer_v.cpp:187
    +
    bool ndefRead(m5::nfc::ndef::TLV &msg)
    Read NDEF Message TLV.
    Definition nfc_layer_v.cpp:418
    +
    virtual uint16_t first_user_block() const override
    First user block.
    Definition nfc_layer_v.hpp:221
    +
    bool writeBlock(const uint16_t block, const uint8_t *tx, const uint8_t tx_len)
    Write single block.
    Definition nfc_layer_v.cpp:319
    +
    bool dump()
    Dump all blocks.
    Definition nfc_layer_v.cpp:628
    +
    bool readBlock(uint8_t rx[32], const uint16_t block)
    Read single block.
    Definition nfc_layer_v.cpp:197
    +
    bool activate(const m5::nfc::v::PICC &picc)
    Activate a specific PICC.
    Definition nfc_layer_v.cpp:155
    +
    bool ndefWriteCapabilityContainer(const m5::nfc::ndef::type5::CapabilityContainer &cc)
    Write Type5 Capability Container.
    Definition nfc_layer_v.cpp:413
    +
    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:368
    +
    virtual uint16_t maximum_fifo_depth() const override
    Maximum FIFO depth.
    Definition nfc_layer_v.cpp:75
    +
    virtual uint16_t unit_size_read() const override
    Unit size for read.
    Definition nfc_layer_v.hpp:233
    +
    bool reactivate()
    Detect single ready PICC.
    Definition nfc_layer_v.hpp:103
    +
    const m5::nfc::v::PICC & activatedPICC() const
    Retrieve the currently activated PICC.
    Definition nfc_layer_v.hpp:58
    +
    bool isActive(const m5::nfc::v::PICC &picc) const
    Is the specified PICC currently active?
    Definition nfc_layer_v.hpp:49
    +
    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:2058
    +
    ST25R3916 Unit.
    Definition unit_ST25R3916.hpp:38
    +
    Top level namespace of M5stack.
    +
    NFC related definitions.
    +
    Unit-related namespace.
    +
    Common layer for NDEF related.
    +
    Common layer for NFC related units.
    +
    NFC-V definitions.
    +
    ModulationMode
    Definition nfcv.hpp:73
    +
    Capability container for Type5.
    Definition ndef.hpp:495
    +
    PICC for NFC-V.
    Definition nfcv.hpp:88
    +
    uint16_t userAreaSize() const
    Total user area size.
    Definition nfcv.hpp:121
    +
    uint16_t lastUserBlock() const
    Gets the last user block.
    Definition nfcv.hpp:137
    +
    uint16_t firstUserBlock() const
    Gets the first user block.
    Definition nfcv.hpp:132
    +
    uint8_t block_size
    Byte size of 1 block.
    Definition nfcv.hpp:94
    +
    +
    + + + + diff --git a/nfc__layer__v___s_t25_r3916_8cpp.html b/nfc__layer__v___s_t25_r3916_8cpp.html new file mode 100644 index 0000000..641d917 --- /dev/null +++ b/nfc__layer__v___s_t25_r3916_8cpp.html @@ -0,0 +1,136 @@ + + + + + + + +M5Unit-NFC: src/nfc/layer/v/nfc_layer_v_ST25R3916.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfc_layer_v_ST25R3916.cpp File Reference
    +
    +
    + +

    ST25R3916 NFC-V adapter for common layer. +More...

    +
    #include "nfc/layer/v/nfc_layer_v.hpp"
    +#include "nfc/layer/ndef_layer.hpp"
    +#include "unit/unit_ST25R3916.hpp"
    +#include <M5Utility.hpp>
    +
    + + + +

    +Classes

    struct  m5::nfc::AdapterST25R3916ForV
     
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    ST25R3916 NFC-V adapter for common layer.

    +
    +
    + + + + diff --git a/nfc__layer__v___s_t25_r3916_8cpp.js b/nfc__layer__v___s_t25_r3916_8cpp.js new file mode 100644 index 0000000..a4637f9 --- /dev/null +++ b/nfc__layer__v___s_t25_r3916_8cpp.js @@ -0,0 +1,4 @@ +var nfc__layer__v___s_t25_r3916_8cpp = +[ + [ "m5::nfc::AdapterST25R3916ForV", "structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_v.html", null ] +]; \ No newline at end of file diff --git a/nfca_8cpp.html b/nfca_8cpp.html new file mode 100644 index 0000000..b21fd43 --- /dev/null +++ b/nfca_8cpp.html @@ -0,0 +1,242 @@ + + + + + + + +M5Unit-NFC: src/nfc/a/nfca.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfca.cpp File Reference
    +
    +
    + +

    NFC-A definitions. +More...

    +
    #include "nfca.hpp"
    +#include <M5Utility.hpp>
    +
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    +uint16_t m5::nfc::a::get_number_of_blocks (const Type t)
     Gets the number of blocks.
     
    +uint16_t m5::nfc::a::get_number_of_user_blocks (const Type t)
     Gets the number of user blocks.
     
    +uint16_t m5::nfc::a::get_user_area_size (const Type t)
     Gets the user area bytes.
     
    uint16_t m5::nfc::a::get_unit_size (const Type t)
     Get the unit size of 1 block / 1 page.
     
    +uint16_t m5::nfc::a::get_number_of_sectors (const Type t)
     Gets the number of sectors.
     
    +uint16_t m5::nfc::a::get_first_user_block (const Type t)
     Gets the first user area block.
     
    +uint16_t m5::nfc::a::get_last_user_block (const Type t)
     Gets the last user area block.
     
    +bool m5::nfc::a::is_user_block (const Type t, const uint16_t block)
     Is block user area?
     
    +file_system_feature_t m5::nfc::a::get_file_system_feature (const Type t)
     Get file system fearure bits.
     
    Type m5::nfc::a::sak_to_type (const uint8_t sak)
     Inferring the type from SAK.
     
    +Type m5::nfc::a::version3_to_type (const uint8_t info[8])
     Inferring the type from GetVersion L3.
     
    +Type m5::nfc::a::version4_to_type (uint8_t &sub, const uint8_t info[8])
     Inferring the type from GetVersion L4.
     
    +Type m5::nfc::a::historical_bytes_to_type (uint8_t &sub, const uint16_t atqa, const uint8_t sak, const uint8_t *bytes, const uint8_t len)
     Historical bytes to type.
     
    +const uint8_t * m5::nfc::a::get_version3_response (const Type t)
     Gets the GET_VERSION(L3) response for emulation.
     
    +uint8_t m5::nfc::a::calculate_bcc8 (const uint8_t *data, const uint32_t len)
     Calculate bcc8.
     
    +m5::nfc::NFCForumTag m5::nfc::a::get_nfc_forum_tag_type (const Type t)
     Get NFC Forum Tag Type from PICC type.
     
    +

    Detailed Description

    +

    NFC-A definitions.

    +

    Function Documentation

    + +

    ◆ get_unit_size()

    + +
    +
    + + + + + + + +
    uint16_t m5::nfc::a::get_unit_size (const Type t)
    +
    + +

    Get the unit size of 1 block / 1 page.

    +
    Return values
    + + + +
    !=0 Unit size
    ==0 Does not have a unit size
    +
    +
    + +
    +
    + +

    ◆ sak_to_type()

    + +
    +
    + + + + + + + +
    Type m5::nfc::a::sak_to_type (const uint8_t sak)
    +
    + +

    Inferring the type from SAK.

    +
    Returns
    Type
    +
    Warning
    This is a preliminary diagnosis, a more accurate diagnosis is required
    + +
    +
    +
    +
    + + + + diff --git a/nfca_8cpp.js b/nfca_8cpp.js new file mode 100644 index 0000000..117e341 --- /dev/null +++ b/nfca_8cpp.js @@ -0,0 +1,19 @@ +var nfca_8cpp = +[ + [ "calculate_bcc8", "nfca_8cpp.html#a2f00ebbaee2d5c4267682a346251feaa", null ], + [ "get_file_system_feature", "nfca_8cpp.html#a5f4eb62eb93a95c6f3d8a82ffc1dfa8a", null ], + [ "get_first_user_block", "nfca_8cpp.html#af1221607496388f9a78ea472230e68ba", null ], + [ "get_last_user_block", "nfca_8cpp.html#a56472040cbc607773f2dd4d64e7ad3d3", null ], + [ "get_nfc_forum_tag_type", "nfca_8cpp.html#a2b812e490b87a87814c33bb3f3b64904", null ], + [ "get_number_of_blocks", "nfca_8cpp.html#a9de505e4515436fb3b2ab99ffd6d1fc0", null ], + [ "get_number_of_sectors", "nfca_8cpp.html#a676326bf06691aca5ec34684cb005d67", null ], + [ "get_number_of_user_blocks", "nfca_8cpp.html#a90f81b2afbf160114f08f351e7b6c16f", null ], + [ "get_unit_size", "nfca_8cpp.html#a3e93f331f794cfd3ec5e1c7115e7bef5", null ], + [ "get_user_area_size", "nfca_8cpp.html#aad24687ca20e8b303110f5bd6b399263", null ], + [ "get_version3_response", "nfca_8cpp.html#acf8a3d3a8f2d6c01750bc4b7b99a9472", null ], + [ "historical_bytes_to_type", "nfca_8cpp.html#ada4876b0d15c060036b8f88ee1e81297", null ], + [ "is_user_block", "nfca_8cpp.html#ad5568cdfb2f1c3f2e8b866a504615de6", null ], + [ "sak_to_type", "nfca_8cpp.html#aba956d86d9cb908086a4e3b3b55b8bd6", null ], + [ "version3_to_type", "nfca_8cpp.html#a1c36af0eeed9f0cae6f19adeaac0522b", null ], + [ "version4_to_type", "nfca_8cpp.html#a897ff51a5eccfd505aeec8f2c66c7e31", null ] +]; \ No newline at end of file diff --git a/nfca_8hpp.html b/nfca_8hpp.html new file mode 100644 index 0000000..ad814b8 --- /dev/null +++ b/nfca_8hpp.html @@ -0,0 +1,729 @@ + + + + + + + +M5Unit-NFC: src/nfc/a/nfca.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfca.hpp File Reference
    +
    +
    + +

    NFC-A definitions. +More...

    +
    #include "nfc/nfc.hpp"
    +#include "mifare.hpp"
    +#include <cstdint>
    +#include <string>
    +#include <cstring>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + +

    +Classes

    struct  m5::nfc::a::ATS
     Answer to request. More...
     
    struct  m5::nfc::a::PICC
     PICC for NFC-A. More...
     
    struct  m5::nfc::a::st25ta::SystemFile
     ST25TA series system file. More...
     
    + + + + + + + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    namespace  a
     NFC-A definitions.
     
    namespace  st25ta
     For ST25TA series.
     
    + + + + + + + + + + + + + +

    +Enumerations

    enum class  m5::nfc::a::Type : uint8_t {
    +  Unknown +, MIFARE_Classic_Mini +, MIFARE_Classic_1K +, MIFARE_Classic_2K +,
    +  MIFARE_Classic_4K +, MIFARE_Ultralight +, MIFARE_Ultralight_EV1_1 +, MIFARE_Ultralight_EV1_2 +,
    +  MIFARE_Ultralight_Nano +, MIFARE_UltralightC +, NTAG_203 +, NTAG_210u +,
    +  NTAG_210 +, NTAG_212 +, NTAG_213 +, NTAG_215 +,
    +  NTAG_216 +, ST25TA_512B +, ST25TA_2K +, ST25TA_16K +,
    +  ST25TA_64K +, ISO_14443_4 +, MIFARE_Plus_2K +, MIFARE_Plus_4K +,
    +  MIFARE_Plus_SE +, MIFARE_DESFire_2K +, MIFARE_DESFire_4K +, MIFARE_DESFire_8K +,
    +  MIFARE_DESFire_Light +, NTAG_4XX +, ISO_18092 +
    + }
     Type of the PICC. More...
     
    enum class  m5::nfc::a::SubTypePlus : uint8_t {
    +  None +, EV1 +, EV2 +, S +,
    +  X +, X_OR_EV +
    + }
     Sub type for MIFARE Plus.
     
    enum  m5::nfc::a::SubTypeDESFire : uint8_t { None +, EV1 +, EV2 +, EV3 + }
     Sub type for MIFARE DESFire.
     
    enum class  m5::nfc::a::Command : uint8_t {
    +  REQA = 0x26 +, WUPA = 0x52 +, HLTA = 0x50 +, SELECT_CL1 = 0x93 +,
    +  SELECT_CL2 = 0x95 +, SELECT_CL3 = 0x97 +, SELCT_CL1_OPT = 0x92 +, SELCT_CL2_OPT = 0x94 +,
    +  SELCT_CL3_OPT = 0x96 +, READ = 0x30 +, RATS = 0xE0 +, DESELECT = 0xC2 +,
    +  AUTH_WITH_KEY_A = 0x60 +, AUTH_WITH_KEY_B = 0x61 +, AUTHENTICATE_1 = 0x1A +, AUTHENTICATE_2 = 0xAF +,
    +  WRITE_BLOCK = 0xA0 +, DECREMENT = 0xC0 +, INCREMENT = 0xC1 +, RESTORE = 0xC2 +,
    +  TRANSFER = 0xB0 +, PERSONALIZE_UID_USAGE = 0x40 +, SET_MOD_TYPE = 0x43 +, WRITE_PERSO = 0xA8 +,
    +  COMMIT_PERSO = 0xAA +, WRITE_PAGE = 0xA2 +, GET_VERSION = 0x60 +, FAST_READ = 0x3A +,
    +  READ_CNT = 0x39 +, PWD_AUTH = 0x1B +, READ_SIG = 0x3C +, WRITE_SIG = 0xA9 +,
    +  LOCK_SIG = 0xAC +
    + }
     ISO-14443-3/4,MIFARE,NTAG commands. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    +m5::nfc::NFCForumTag m5::nfc::a::get_nfc_forum_tag_type (const Type t)
     Get NFC Forum Tag Type from PICC type.
     
    +bool m5::nfc::a::is_mifare_classic (const Type t)
     Is type MIFARE Classic?
     
    +bool m5::nfc::a::is_mifare_ultralight (const Type t)
     Is type MIFARE Ultralight series?
     
    +bool m5::nfc::a::is_ntag2 (const Type t)
     Is type NTAG2xx?
     
    +bool m5::nfc::a::is_ntag4 (const Type t)
     Is type NTAG4xx?
     
    +bool m5::nfc::a::is_mifare_plus (const Type t)
     Is type MIFARE Plus?
     
    +bool m5::nfc::a::is_mifare_classic_compatible (const Type t, const uint8_t sl)
     Is type MIFARE classic compatible? (Plus SL1)
     
    +bool m5::nfc::a::is_mifare_desfire (const Type t)
     Is type MIFARE DESFire?
     
    +bool m5::nfc::a::is_mifare (const Type t)
     Is type MIFARE?
     
    +bool m5::nfc::a::is_st25ta (const Type t)
     Is ST25TA series?
     
    +bool m5::nfc::a::is_iso14443_4 (const Type t)
     Is ISO 14443-4?
     
    +bool m5::nfc::a::is_iso14443_3 (const Type t)
     Is ISO 14443-3?
     
    +bool m5::nfc::a::supports_NFC (const Type t)
     Does the specified type function as NFC?
     
    +bool m5::nfc::a::has_fast_read (const Type t)
     Has FAST_READ command?
     
    +bool m5::nfc::a::has_sak_dependent_bit (const uint8_t sak)
     SAK uncompleted?
     
    +bool m5::nfc::a::is_sak_completed_14443_4 (const uint8_t sak)
     SAK completed? (Complies with ISO/IEC 14443-4)
     
    +bool m5::nfc::a::is_sak_completed (const uint8_t sak)
     SAK completed? (Does not comply with ISO/IEC 14443-4)
     
    Type m5::nfc::a::sak_to_type (const uint8_t sak)
     Inferring the type from SAK.
     
    +Type m5::nfc::a::version3_to_type (const uint8_t info[8])
     Inferring the type from GetVersion L3.
     
    +Type m5::nfc::a::version4_to_type (uint8_t &sub, const uint8_t info[8])
     Inferring the type from GetVersion L4.
     
    +Type m5::nfc::a::historical_bytes_to_type (uint8_t &sub, const uint16_t atqa, const uint8_t sak, const uint8_t *bytes, const uint8_t len)
     Historical bytes to type.
     
    +uint16_t m5::nfc::a::get_number_of_blocks (const Type t)
     Gets the number of blocks.
     
    +uint16_t m5::nfc::a::get_number_of_user_blocks (const Type t)
     Gets the number of user blocks.
     
    +uint16_t m5::nfc::a::get_user_area_size (const Type t)
     Gets the user area bytes.
     
    uint16_t m5::nfc::a::get_unit_size (const Type t)
     Get the unit size of 1 block / 1 page.
     
    +uint16_t m5::nfc::a::get_number_of_sectors (const Type t)
     Gets the number of sectors.
     
    +uint16_t m5::nfc::a::get_first_user_block (const Type t)
     Gets the first user area block.
     
    +uint16_t m5::nfc::a::get_last_user_block (const Type t)
     Gets the last user area block.
     
    +bool m5::nfc::a::is_user_block (const Type t, const uint16_t block)
     Is block user area?
     
    +file_system_feature_t m5::nfc::a::get_file_system_feature (const Type t)
     Get file system fearure bits.
     
    +bool m5::nfc::a::is_file_system_memory (const Type t)
     Memory file system?
     
    +bool m5::nfc::a::is_file_system_file (const Type t)
     File base file system?
     
    +uint8_t m5::nfc::a::calculate_bcc8 (const uint8_t *data, const uint32_t len)
     Calculate bcc8.
     
    +const uint8_t * m5::nfc::a::get_version3_response (const Type t)
     Gets the GET_VERSION(L3) response for emulation.
     
    +bool m5::nfc::a::operator== (const PICC &a, const PICC &b)
     Equal?
     
    +bool m5::nfc::a::operator!= (const PICC &a, const PICC &b)
     Not equal?
     
    +Type m5::nfc::a::st25ta::get_type (const uint8_t ic_ref_or_product_code)
     Gets the type from IC reference or product code.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    +constexpr uint16_t m5::nfc::a::st25ta::SYSTEM_FILE_ID {0xE101}
     System file for ST25TA.
     
    Timeout
    +constexpr uint32_t m5::nfc::a::TIMEOUT_REQ_WUP {4}
     
    +constexpr uint32_t m5::nfc::a::TIMEOUT_SELECT {8}
     
    +constexpr uint32_t m5::nfc::a::TIMEOUT_ANTICOLL {8}
     
    +constexpr uint32_t m5::nfc::a::TIMEOUT_HALT {2}
     
    +constexpr uint32_t m5::nfc::a::TIMEOUT_GET_VERSION {5}
     
    +constexpr uint32_t m5::nfc::a::TIMEOUT_3DES {10}
     
    +constexpr uint32_t m5::nfc::a::TIMEOUT_AUTH1 {4}
     
    +constexpr uint32_t m5::nfc::a::TIMEOUT_AUTH2 {16}
     
    +constexpr uint32_t m5::nfc::a::TIMEOUT_READ {12}
     
    +constexpr uint32_t m5::nfc::a::TIMEOUT_FAST_READ {2}
     
    +constexpr uint32_t m5::nfc::a::TIMEOUT_FAST_READ_4PAGE {4}
     
    +constexpr uint32_t m5::nfc::a::TIMEOUT_FAST_READ_12PAGE {4}
     
    +constexpr uint32_t m5::nfc::a::TIMEOUT_FAST_READ_32PAGE {12}
     
    +constexpr uint32_t m5::nfc::a::TIMEOUT_WRITE1 {5}
     
    +constexpr uint32_t m5::nfc::a::TIMEOUT_WRITE2 {10}
     
    +constexpr uint32_t m5::nfc::a::TIMEOUT_VALUE_BLOCK {5}
     
    +constexpr uint32_t m5::nfc::a::TIMEOUT_RATS {5}
     
    +constexpr uint32_t m5::nfc::a::TIMEOUT_DESELECT {8}
     
    4bit ACK
    +constexpr uint8_t m5::nfc::a::ACK_NIBBLE {0x0A}
     
    Identifier
    +constexpr uint8_t m5::nfc::a::st25ta::IC_REFERENCE_ST25TA512B {0xE5}
     
    +constexpr uint8_t m5::nfc::a::st25ta::IC_REFERENCE_ST25TA02KB {0xE2}
     
    +constexpr uint8_t m5::nfc::a::st25ta::IC_REFERENCE_ST25TA02KB_D {0xF2}
     
    +constexpr uint8_t m5::nfc::a::st25ta::IC_REFERENCE_ST25TA02KB_P {0xA2}
     
    +constexpr uint8_t m5::nfc::a::st25ta::PRODUCT_CODE_ST25TA16K {0xC5}
     
    +constexpr uint8_t m5::nfc::a::st25ta::PRODUCT_CODE_ST25TA64K {0xC4}
     
    +

    Detailed Description

    +

    NFC-A definitions.

    +

    Enumeration Type Documentation

    + +

    ◆ Command

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::a::Command : uint8_t
    +
    +strong
    +
    + +

    ISO-14443-3/4,MIFARE,NTAG commands.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Enumerator
    REQA 

    Reequest.

    +
    WUPA 

    Wake-up.

    +
    HLTA 

    Halt.

    +
    SELECT_CL1 

    Anticollison/Select CL1.

    +
    SELECT_CL2 

    Anticollison/Select CL2.

    +
    SELECT_CL3 

    Anticollison/Select CL3.

    +
    SELCT_CL1_OPT 

    Select CL1 and switch bit rate to fc/64 after receive SAK.

    +
    SELCT_CL2_OPT 

    Select CL2 and switch bit rate to fc/64 after receive SAK.

    +
    SELCT_CL3_OPT 

    Select CL3 and switch bit rate to fc/64 after receive SAK.

    +
    READ 

    Read.

    +
    RATS 

    Request for Answer to Select.

    +
    DESELECT 

    DESELECT.

    +
    AUTH_WITH_KEY_A 

    MIFARE Classic. Authentication with Key A.

    +
    AUTH_WITH_KEY_B 

    MIFARE Classic. Authentication with Key B.

    +
    AUTHENTICATE_1 

    MIFARE UltralightC. Authentication 1st.

    +
    AUTHENTICATE_2 

    MIFARE UltralightC. Authentication 2nd.

    +
    WRITE_BLOCK 

    MIFARE Classic. write.

    +
    DECREMENT 

    MIFARE Classic. decrement value block.

    +
    INCREMENT 

    MIFARE Classic. increment value block.

    +
    RESTORE 

    MIFARE Classic. reads the contents of a value block into the internal Transfer Buffer.

    +
    TRANSFER 

    MIFARE Classic. writes the contents of the internal Transfer Buffer to a block.

    +
    PERSONALIZE_UID_USAGE 

    MIFARE Classic Personalize UID Usage.

    +
    SET_MOD_TYPE 

    MIFARE Classic SET_MOD_TYPE.

    +
    WRITE_PERSO 

    MIFARE Plus. WritePerso.

    +
    COMMIT_PERSO 

    MIFARE Plus. CommitPerso.

    +
    WRITE_PAGE 

    MIFARE Ultralight/C and NTAG write.

    +
    GET_VERSION 

    NTAG 21x/UL EV1,Nano Gets the version information.

    +
    FAST_READ 

    NTAG 21x. excluding 210u. Read multiple pages.

    +
    READ_CNT 

    NTAG 213/5/6. Read counter value.

    +
    PWD_AUTH 

    NTAG 21x excluding 210u. Authentication for protected area.

    +
    READ_SIG 

    NTAG 21x Read NXP ECC signature.

    +
    WRITE_SIG 

    NTAG 210u Write custom signature.

    +
    LOCK_SIG 

    NTAG 210u Lock/Unlock signature.

    +
    + +
    +
    + +

    ◆ Type

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::a::Type : uint8_t
    +
    +strong
    +
    + +

    Type of the PICC.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Enumerator
    Unknown 

    Unknown type.

    +
    MIFARE_Classic_Mini 

    Also known as MIFARE Standard mini.

    +
    MIFARE_Classic_1K 

    Also known as MIFARE Standard 1K.

    +
    MIFARE_Classic_2K 

    Also known as MIFARE Standard 2K.

    +
    MIFARE_Classic_4K 

    Also known as MIFARE Standard 4K.

    +
    MIFARE_Ultralight 

    MIFARE Ultralight.

    +
    MIFARE_Ultralight_EV1_1 

    MIFARE Ultralight EV1 MF0UL11.

    +
    MIFARE_Ultralight_EV1_2 

    MIFARE Ultralight EV1 MF0UL21.

    +
    MIFARE_Ultralight_Nano 

    MIFARE Ultralight Nano.

    +
    MIFARE_UltralightC 

    MIFARE UltralightC.

    +
    NTAG_203 

    NTAG 203.

    +
    NTAG_210u 

    NTAG 210ÎĽ

    +
    NTAG_210 

    NTAG 210.

    +
    NTAG_212 

    NTAG 212.

    +
    NTAG_213 

    NTAG 213.

    +
    NTAG_215 

    NTAG 215.

    +
    NTAG_216 

    NTAG 216.

    +
    ST25TA_512B 

    ST25TA512B.

    +
    ST25TA_2K 

    ST25TA02K.

    +
    ST25TA_16K 

    ST25TA16K.

    +
    ST25TA_64K 

    ST25TA64K.

    +
    ISO_14443_4 

    PICC compliant with ISO/IEC 14443-4.

    +
    MIFARE_Plus_2K 

    MIFARE Plus 2K.

    +
    MIFARE_Plus_4K 

    MIFARE Plus 4K.

    +
    MIFARE_Plus_SE 

    MIFARE Plus SE 1K.

    +
    MIFARE_DESFire_2K 

    MIFARE DESFire 2K.

    +
    MIFARE_DESFire_4K 

    MIFARE DESFire 4K.

    +
    MIFARE_DESFire_8K 

    MIFARE DESFire 8K.

    +
    MIFARE_DESFire_Light 

    MIFARE DESFire Light.

    +
    NTAG_4XX 

    NTAG 4XX.

    +
    ISO_18092 

    PICC compliant with ISO/IEC 18092.

    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ get_unit_size()

    + +
    +
    + + + + + + + +
    uint16_t m5::nfc::a::get_unit_size (const Type t)
    +
    + +

    Get the unit size of 1 block / 1 page.

    +
    Return values
    + + + +
    !=0 Unit size
    ==0 Does not have a unit size
    +
    +
    + +
    +
    + +

    ◆ sak_to_type()

    + +
    +
    + + + + + + + +
    Type m5::nfc::a::sak_to_type (const uint8_t sak)
    +
    + +

    Inferring the type from SAK.

    +
    Returns
    Type
    +
    Warning
    This is a preliminary diagnosis, a more accurate diagnosis is required
    + +
    +
    +
    +
    + + + + diff --git a/nfca_8hpp.js b/nfca_8hpp.js new file mode 100644 index 0000000..c5f00bb --- /dev/null +++ b/nfca_8hpp.js @@ -0,0 +1,126 @@ +var nfca_8hpp = +[ + [ "m5::nfc::a::ATS", "structm5_1_1nfc_1_1a_1_1_a_t_s.html", "structm5_1_1nfc_1_1a_1_1_a_t_s" ], + [ "m5::nfc::a::PICC", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html", "structm5_1_1nfc_1_1a_1_1_p_i_c_c" ], + [ "m5::nfc::a::st25ta::SystemFile", "structm5_1_1nfc_1_1a_1_1st25ta_1_1_system_file.html", null ], + [ "Command", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90ac", [ + [ "REQA", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acad7bd76c9aadbfa1c3d7fbde38f278e78", null ], + [ "WUPA", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acad3d299158514dd7779be84e08f22d4cc", null ], + [ "HLTA", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca56861bff3805bf618d0a05acf1e9585e", null ], + [ "SELECT_CL1", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca81083ce659b99b238c270d153b25af0f", null ], + [ "SELECT_CL2", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acaaf74037b8890996366fbedace9a9ff34", null ], + [ "SELECT_CL3", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca5fdb231b8f1cea8829c098e15b575509", null ], + [ "SELCT_CL1_OPT", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca77458195bc59b3b4e06827e8e3c2238a", null ], + [ "SELCT_CL2_OPT", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acabc4882721d4cd97d7f3436557089a38d", null ], + [ "SELCT_CL3_OPT", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acac72062bb69c053a12c34f8b80770570e", null ], + [ "READ", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca3466fab4975481651940ed328aa990e4", null ], + [ "RATS", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca105e4919a5c861ae6a88ce3d7a7232de", null ], + [ "DESELECT", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca20966192c0ca6aed708795436471f682", null ], + [ "AUTH_WITH_KEY_A", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca0db1d590ee3ee184bcee04fc55706124", null ], + [ "AUTH_WITH_KEY_B", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca79a7294470ab78375c65a19305472b90", null ], + [ "AUTHENTICATE_1", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca93212f2ffd18edd8f99e219703157dcc", null ], + [ "AUTHENTICATE_2", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acacffcddc772d283e504c84f0272d3ee46", null ], + [ "WRITE_BLOCK", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca440f90e159a38a725e9fba3b31c89aa0", null ], + [ "DECREMENT", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acac0ffa6e46086551bc5113d1238faf106", null ], + [ "INCREMENT", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca90cf1f5206b348a822cc1a453a587534", null ], + [ "RESTORE", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acac95fa04340c629ddfa2d38e285e59245", null ], + [ "TRANSFER", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acaeb5ddb3b6096fb90ff720d9c3e2a6628", null ], + [ "PERSONALIZE_UID_USAGE", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca2468279bd72ec32c6968805408a791b9", null ], + [ "SET_MOD_TYPE", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acaba0d17aac1240ee37f6c7650fbe88877", null ], + [ "WRITE_PERSO", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acafe631de96c11edb259243ecd01d0d0d2", null ], + [ "COMMIT_PERSO", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca300625364a3273e9c05258572e9b2fc7", null ], + [ "WRITE_PAGE", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca6a23337128cbd492957f1253a696044e", null ], + [ "GET_VERSION", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca3e4d39d03ce99d4daaab3749af67ff13", null ], + [ "FAST_READ", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca5b6e85f572e9f04e0ce673ed57d63b4b", null ], + [ "READ_CNT", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acae5b12698b003a4e8fa1a5d2537802447", null ], + [ "PWD_AUTH", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acab9f3cd7a5e7fde4d914d0e58628e0746", null ], + [ "READ_SIG", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acae3862d0b16eab4f9489ac7f7f39e8655", null ], + [ "WRITE_SIG", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acae844e66ca82dcaa9faaf0b44c866a42c", null ], + [ "LOCK_SIG", "nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca229bbf49bdf5d7f5e0e759e078b11984", null ] + ] ], + [ "SubTypeDESFire", "nfca_8hpp.html#ae2129568177f072e3f1b1d0bae2f2341", [ + [ "None", "nfca_8hpp.html#ae2129568177f072e3f1b1d0bae2f2341a4a961c76a0128d05a15ba4bb546c95cf", null ], + [ "EV1", "nfca_8hpp.html#ae2129568177f072e3f1b1d0bae2f2341a575d9a64ddd78c58d7f3c69449fa6100", null ], + [ "EV2", "nfca_8hpp.html#ae2129568177f072e3f1b1d0bae2f2341aaedc722809a77e0609ee45c9a7209699", null ], + [ "EV3", "nfca_8hpp.html#ae2129568177f072e3f1b1d0bae2f2341ac904898497cecb14229541c1c40ea6e9", null ] + ] ], + [ "SubTypePlus", "nfca_8hpp.html#afd9353ea57cde9b113a3ec6d6191664f", [ + [ "None", "nfca_8hpp.html#afd9353ea57cde9b113a3ec6d6191664fa6adf97f83acf6453d4a6a4b1070f3754", null ], + [ "EV1", "nfca_8hpp.html#afd9353ea57cde9b113a3ec6d6191664fab2c07736f033ebbc0b4b79ba53bc2f0f", null ], + [ "EV2", "nfca_8hpp.html#afd9353ea57cde9b113a3ec6d6191664fa1a7ab73e85c2672b88e6c4748f5ed479", null ], + [ "S", "nfca_8hpp.html#afd9353ea57cde9b113a3ec6d6191664fa5dbc98dcc983a70728bd082d1a47546e", null ], + [ "X", "nfca_8hpp.html#afd9353ea57cde9b113a3ec6d6191664fa02129bb861061d1a052c592e2dc6b383", null ], + [ "X_OR_EV", "nfca_8hpp.html#afd9353ea57cde9b113a3ec6d6191664faf6f271cf84d31d1861e5680c41d70e32", null ] + ] ], + [ "Type", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9", [ + [ "Unknown", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a88183b946cc5f0e8c96b2e66e1c74a7e", null ], + [ "MIFARE_Classic_Mini", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a4fe50583f84464fb1c953d580f6e161f", null ], + [ "MIFARE_Classic_1K", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a885bf4a9627b8f569c641a5c9b1f17d0", null ], + [ "MIFARE_Classic_2K", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9aebf3f45c13853244047f9c4ee9bfdb93", null ], + [ "MIFARE_Classic_4K", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9af3a58c5e5fe7dd21fffa7e40f437245c", null ], + [ "MIFARE_Ultralight", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a6591940064506c23ff6b6ba078c91376", null ], + [ "MIFARE_Ultralight_EV1_1", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a0461b90b9920b9c4b1aab58e453d6fa5", null ], + [ "MIFARE_Ultralight_EV1_2", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a0bb8b6c6d660b13d53a47087d3eb23d0", null ], + [ "MIFARE_Ultralight_Nano", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a3417432797b50ed949c95e771f71c4a7", null ], + [ "MIFARE_UltralightC", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a9be14fcfd48418057018a4fdc4a15e11", null ], + [ "NTAG_203", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a7b40ce30595f4bd206ade201da8d29ee", null ], + [ "NTAG_210u", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a348ce2863a7bca1a7fa60cb0dbe666ba", null ], + [ "NTAG_210", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9ae6e82df8e5684b0c2caac42233144ecf", null ], + [ "NTAG_212", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a2f55bc6a25763536d7476378eb6cb65d", null ], + [ "NTAG_213", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a28e799698d4e8f7ea5cecfafdbb9bb7a", null ], + [ "NTAG_215", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a4175799ea4ce591a0797676b68d82fe6", null ], + [ "NTAG_216", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a93f5a9b6399d7a5544876358c861b04a", null ], + [ "ST25TA_512B", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9af7bbb5d12506ae279de0dc8b644788be", null ], + [ "ST25TA_2K", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a2980dcc143a44439c9c9368dbb65bed6", null ], + [ "ST25TA_16K", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a78a9873dc3bbd596ce9f73a162ff9e85", null ], + [ "ST25TA_64K", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a79c10fde203bf93198572ae4555f5f85", null ], + [ "ISO_14443_4", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9afa9e9f88672e820b61f058ca42323bb7", null ], + [ "MIFARE_Plus_2K", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9aa99a32edc51c1e4a35bb462cd6a63107", null ], + [ "MIFARE_Plus_4K", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a23dfdac1eb44aacf66b01c02a3ec6a28", null ], + [ "MIFARE_Plus_SE", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9aa6c76c717d761fabff1600bcce01102d", null ], + [ "MIFARE_DESFire_2K", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a520aede6c95d19df20939d3b54c0a38b", null ], + [ "MIFARE_DESFire_4K", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a41a2a80772adcae1b466b583d351fac8", null ], + [ "MIFARE_DESFire_8K", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a70aa200ac0fb56ca9b8f5b0a773ce6c5", null ], + [ "MIFARE_DESFire_Light", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9ad0fd58a3c82a0fd97e41c1fe1e3690b5", null ], + [ "NTAG_4XX", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a327c9572a3acf7762731393d101cbd65", null ], + [ "ISO_18092", "nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9ad68f4a068cb3b370cffbffd6312931fd", null ] + ] ], + [ "calculate_bcc8", "nfca_8hpp.html#a2f00ebbaee2d5c4267682a346251feaa", null ], + [ "get_file_system_feature", "nfca_8hpp.html#a5f4eb62eb93a95c6f3d8a82ffc1dfa8a", null ], + [ "get_first_user_block", "nfca_8hpp.html#af1221607496388f9a78ea472230e68ba", null ], + [ "get_last_user_block", "nfca_8hpp.html#a56472040cbc607773f2dd4d64e7ad3d3", null ], + [ "get_nfc_forum_tag_type", "nfca_8hpp.html#a2b812e490b87a87814c33bb3f3b64904", null ], + [ "get_number_of_blocks", "nfca_8hpp.html#a9de505e4515436fb3b2ab99ffd6d1fc0", null ], + [ "get_number_of_sectors", "nfca_8hpp.html#a676326bf06691aca5ec34684cb005d67", null ], + [ "get_number_of_user_blocks", "nfca_8hpp.html#a90f81b2afbf160114f08f351e7b6c16f", null ], + [ "get_type", "nfca_8hpp.html#a2d5c5a55d9dbf508cb4fab2b0a7a3f24", null ], + [ "get_unit_size", "nfca_8hpp.html#a3e93f331f794cfd3ec5e1c7115e7bef5", null ], + [ "get_user_area_size", "nfca_8hpp.html#aad24687ca20e8b303110f5bd6b399263", null ], + [ "get_version3_response", "nfca_8hpp.html#acf8a3d3a8f2d6c01750bc4b7b99a9472", null ], + [ "has_fast_read", "nfca_8hpp.html#a93c19461ed1494462e3b7da394cc8cee", null ], + [ "has_sak_dependent_bit", "nfca_8hpp.html#abc51c5a960972570a4bf6da0876541c0", null ], + [ "historical_bytes_to_type", "nfca_8hpp.html#ada4876b0d15c060036b8f88ee1e81297", null ], + [ "is_file_system_file", "nfca_8hpp.html#afbc51163bb9d06aa2d4d78bef4e99365", null ], + [ "is_file_system_memory", "nfca_8hpp.html#a01bc1d95019f0f2247fc5a6494c7da26", null ], + [ "is_iso14443_3", "nfca_8hpp.html#a1e0bb0c2934cf966515e67720500d0a8", null ], + [ "is_iso14443_4", "nfca_8hpp.html#a921cc53e1ae6ed8b23a334f3bc2bf0b2", null ], + [ "is_mifare", "nfca_8hpp.html#a73dd2bd204c94f0609d92fe881437084", null ], + [ "is_mifare_classic", "nfca_8hpp.html#aff355cbd00ee527fa9fa5e797895bd07", null ], + [ "is_mifare_classic_compatible", "nfca_8hpp.html#aab3301d301ddd00ea67b1b737376c021", null ], + [ "is_mifare_desfire", "nfca_8hpp.html#a0b4e052a262a225acbb161354266ea5d", null ], + [ "is_mifare_plus", "nfca_8hpp.html#ae7580ee2e43c1349e4e90d6e4443abb4", null ], + [ "is_mifare_ultralight", "nfca_8hpp.html#abbf43a3ba65f0b362de47ed4382e38ce", null ], + [ "is_ntag2", "nfca_8hpp.html#a5183fa6cbb067b3a4aa00dad6c4c56aa", null ], + [ "is_ntag4", "nfca_8hpp.html#a49181c1838c1e0df61a9599b4fd6d621", null ], + [ "is_sak_completed", "nfca_8hpp.html#a6316020b27e82ca7c8bbf5a66cc00381", null ], + [ "is_sak_completed_14443_4", "nfca_8hpp.html#a71761585d3b73c7fe363568554722239", null ], + [ "is_st25ta", "nfca_8hpp.html#a9d4572c50dafd47bdc9d0f5bc81ccc7c", null ], + [ "is_user_block", "nfca_8hpp.html#ad5568cdfb2f1c3f2e8b866a504615de6", null ], + [ "operator!=", "nfca_8hpp.html#aae4e036a81bf97f2133c38ec1ec54af4", null ], + [ "operator==", "nfca_8hpp.html#a613b44aedafa4a844d37f94af2a07955", null ], + [ "sak_to_type", "nfca_8hpp.html#aba956d86d9cb908086a4e3b3b55b8bd6", null ], + [ "supports_NFC", "nfca_8hpp.html#a5e813cdf62d4a05e10dde34e64e21f1b", null ], + [ "version3_to_type", "nfca_8hpp.html#a1c36af0eeed9f0cae6f19adeaac0522b", null ], + [ "version4_to_type", "nfca_8hpp.html#a897ff51a5eccfd505aeec8f2c66c7e31", null ], + [ "SYSTEM_FILE_ID", "nfca_8hpp.html#a7c7f622ddfabdf37d3cc05b5240f27c3", null ] +]; \ No newline at end of file diff --git a/nfca_8hpp_source.html b/nfca_8hpp_source.html new file mode 100644 index 0000000..a49e47e --- /dev/null +++ b/nfca_8hpp_source.html @@ -0,0 +1,943 @@ + + + + + + + +M5Unit-NFC: src/nfc/a/nfca.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    nfca.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    10#ifndef M5_UNIT_UNIFIED_NFC_NFC_A_NFCA_HPP
    +
    11#define M5_UNIT_UNIFIED_NFC_NFC_A_NFCA_HPP
    +
    12
    +
    13#include "nfc/nfc.hpp"
    +
    14#include "mifare.hpp"
    +
    15#include <cstdint>
    +
    16#include <string>
    +
    17#include <cstring>
    +
    18
    +
    19namespace m5 {
    +
    20namespace nfc {
    +
    25namespace a {
    +
    26
    +
    +
    31enum class Type : uint8_t {
    +
    32 Unknown,
    +
    33
    + + + + +
    38
    + + + + + +
    44
    +
    45 NTAG_203,
    +
    46 NTAG_210u,
    +
    47 NTAG_210,
    +
    48 NTAG_212,
    +
    49 NTAG_213,
    +
    50 NTAG_215,
    +
    51 NTAG_216,
    +
    52
    + +
    54 ST25TA_2K,
    + + +
    57
    + +
    59
    + + + +
    63
    + + + + +
    68
    +
    69 NTAG_4XX,
    +
    70
    +
    71 ISO_18092,
    +
    72
    +
    73 // NotCompleted = 0xFF, //!< SAK indicates UID is not complete
    +
    74};
    +
    +
    75
    +
    +
    80enum class SubTypePlus : uint8_t {
    +
    81 None,
    +
    82 EV1,
    +
    83 EV2,
    +
    84 S,
    +
    85 X,
    +
    86 X_OR_EV,
    +
    87};
    +
    +
    88
    +
    +
    93enum SubTypeDESFire : uint8_t {
    +
    94 None,
    +
    95 EV1,
    +
    96 EV2,
    +
    97 EV3,
    +
    98};
    +
    +
    99
    +
    101m5::nfc::NFCForumTag get_nfc_forum_tag_type(const Type t);
    +
    102
    +
    +
    104inline bool is_mifare_classic(const Type t)
    +
    105{
    +
    106 return t >= Type::MIFARE_Classic_Mini && t <= Type::MIFARE_Classic_4K;
    +
    107}
    +
    +
    108
    +
    +
    110inline bool is_mifare_ultralight(const Type t)
    +
    111{
    +
    112 return t >= Type::MIFARE_Ultralight && t <= Type::MIFARE_UltralightC;
    +
    113}
    +
    +
    114
    +
    +
    116inline bool is_ntag2(const Type t)
    +
    117{
    +
    118 return t >= Type::NTAG_203 && t <= Type::NTAG_216;
    +
    119}
    +
    +
    120
    +
    +
    122inline bool is_ntag4(const Type t)
    +
    123{
    +
    124 return t == Type::NTAG_4XX;
    +
    125}
    +
    +
    126
    +
    +
    128inline bool is_mifare_plus(const Type t)
    +
    129{
    +
    130 return t >= Type::MIFARE_Plus_2K && t <= Type::MIFARE_Plus_SE;
    +
    131}
    +
    +
    132
    +
    +
    134inline bool is_mifare_classic_compatible(const Type t, const uint8_t sl)
    +
    135{
    +
    136 return is_mifare_plus(t) && (sl == 1);
    +
    137}
    +
    +
    138
    +
    +
    140inline bool is_mifare_desfire(const Type t)
    +
    141{
    +
    142 return t >= Type::MIFARE_DESFire_2K && t <= Type::MIFARE_DESFire_Light;
    +
    143}
    +
    +
    144
    +
    +
    146inline bool is_mifare(const Type t)
    +
    147{
    + +
    149}
    +
    +
    150
    +
    +
    152inline bool is_st25ta(const Type t)
    +
    153{
    +
    154 return t >= Type::ST25TA_2K && t <= Type::ST25TA_64K;
    +
    155}
    +
    +
    156
    +
    +
    158inline bool is_iso14443_4(const Type t)
    +
    159{
    +
    160 return is_mifare_plus(t) || is_mifare_desfire(t) || is_st25ta(t) || (t == Type::ISO_14443_4);
    +
    161}
    +
    +
    162
    +
    +
    164inline bool is_iso14443_3(const Type t)
    +
    165{
    +
    166 return !is_iso14443_4(t);
    +
    167}
    +
    +
    168
    +
    +
    170inline bool supports_NFC(const Type t)
    +
    171{
    +
    172 return (t >= Type::MIFARE_Ultralight && t <= Type::MIFARE_UltralightC) || is_ntag2(t);
    +
    173}
    +
    +
    174
    +
    +
    176inline bool has_fast_read(const Type t)
    +
    177{
    +
    178 return t >= Type::NTAG_210 && t <= Type::NTAG_216;
    +
    179}
    +
    +
    180
    +
    +
    182inline bool has_sak_dependent_bit(const uint8_t sak)
    +
    183{
    +
    184 return (sak & 0x04);
    +
    185}
    +
    +
    186
    +
    +
    188inline bool is_sak_completed_14443_4(const uint8_t sak)
    +
    189{
    +
    190 return ((sak & 0x24) == 0x20);
    +
    191}
    +
    +
    +
    193inline bool is_sak_completed(const uint8_t sak)
    +
    194{
    +
    195 return ((sak & 0x24) == 0x00);
    +
    196}
    +
    +
    197
    +
    203Type sak_to_type(const uint8_t sak);
    +
    205Type version3_to_type(const uint8_t info[8]);
    +
    207Type version4_to_type(uint8_t& sub, const uint8_t info[8]);
    +
    209Type historical_bytes_to_type(uint8_t& sub, const uint16_t atqa, const uint8_t sak, const uint8_t* bytes,
    +
    210 const uint8_t len);
    +
    211
    +
    213uint16_t get_number_of_blocks(const Type t);
    +
    215uint16_t get_number_of_user_blocks(const Type t);
    +
    217uint16_t get_user_area_size(const Type t);
    +
    223uint16_t get_unit_size(const Type t);
    +
    225uint16_t get_number_of_sectors(const Type t);
    +
    227uint16_t get_first_user_block(const Type t);
    +
    229uint16_t get_last_user_block(const Type t);
    +
    231bool is_user_block(const Type t, const uint16_t block);
    +
    232
    +
    234file_system_feature_t get_file_system_feature(const Type t);
    +
    +
    236inline bool is_file_system_memory(const Type t)
    +
    237{
    + +
    239}
    +
    +
    +
    241inline bool is_file_system_file(const Type t)
    +
    242{
    + +
    244}
    +
    +
    245
    +
    247uint8_t calculate_bcc8(const uint8_t* data, const uint32_t len);
    +
    248
    +
    250const uint8_t* get_version3_response(const Type t);
    +
    251
    +
    +
    256struct ATS {
    +
    257 union {
    +
    258 uint8_t header[5]{};
    +
    259 struct {
    +
    260 uint8_t TL;
    +
    261 uint8_t T0;
    +
    262 uint8_t TA;
    +
    263 uint8_t TB;
    +
    264 uint8_t TC;
    +
    265 };
    +
    266 };
    +
    267 std::array<uint8_t, 32> historical{};
    +
    268 uint8_t historical_len{};
    +
    269
    +
    270 inline bool validTA() const
    +
    271 {
    +
    272 return T0 & 0x10;
    +
    273 }
    +
    274 inline bool validTB() const
    +
    275 {
    +
    276 return T0 & 0x20;
    +
    277 }
    +
    278 inline bool validTC() const
    +
    279 {
    +
    280 return T0 & 0x40;
    +
    281 }
    +
    282 inline uint8_t fsci() const
    +
    283 {
    +
    284 return T0 & 0x0F;
    +
    285 }
    +
    286 inline Bitrate maximumBitrateDR() const
    +
    287 {
    +
    288 return validTA() ? static_cast<Bitrate>(TA & 0x07) : Bitrate::Invalid;
    +
    289 }
    +
    290 inline Bitrate maximumBitrateDS() const
    +
    291 {
    +
    292 return validTA() ? static_cast<Bitrate>((TA >> 4) & 0x07) : Bitrate::Invalid;
    +
    293 }
    +
    294 inline bool supportsAsymmetricSpeed() const
    +
    295 {
    +
    296 return validTA() && (TA & 0x80);
    +
    297 }
    +
    298 inline uint8_t fwi() const
    +
    299 {
    +
    300 return validTB() ? (TB >> 4) : 0x00;
    +
    301 }
    +
    302 inline uint8_t sfgi() const
    +
    303 {
    +
    304 return validTB() ? (TB & 0x0F) : 0x00;
    +
    305 }
    +
    306 inline uint32_t sfgt_fc() const
    +
    307 {
    +
    308 const uint8_t v = sfgi();
    +
    309 return (v == 0 || v == 15) ? 0u : (256u * 16u * (1u << v));
    +
    310 }
    +
    311 inline uint32_t sfgt_ms(const float fc) const
    +
    312 {
    +
    313 const uint32_t sfgt = sfgt_fc();
    +
    314 if (!sfgt || fc <= 0.0f) {
    +
    315 return 0;
    +
    316 }
    +
    317 const float us = (static_cast<float>(sfgt) / fc) * 1e6f;
    +
    318 uint32_t ms = static_cast<uint32_t>(us / 1000.f);
    +
    319 return ms ? ms : 1;
    +
    320 }
    +
    321 inline bool supportsNAD() const
    +
    322 {
    +
    323 return validTC() && (TC & 0x01);
    +
    324 }
    +
    325 inline bool supportsCID() const
    +
    326 {
    +
    327 return validTC() && (TC & 0x02);
    +
    328 }
    +
    329};
    +
    +
    330
    +
    +
    335struct PICC {
    +
    336 uint8_t _pad{};
    + +
    338 uint8_t sak{};
    +
    339 uint8_t size{};
    +
    340 uint8_t uid[10]{};
    +
    341 uint16_t atqa{};
    +
    342 uint16_t blocks{};
    + +
    345 union {
    +
    346 uint8_t sub_type{};
    + + +
    349 };
    +
    351 union {
    +
    352 uint8_t security_level{};
    +
    353 };
    +
    354
    +
    +
    356 inline bool valid() const
    +
    357 {
    +
    358 return (size == 4 || size == 7 || size == 10) && (type != Type::Unknown) &&
    + +
    360 }
    +
    +
    +
    362 void tail4(uint8_t buf[4]) const
    +
    363 {
    +
    364 if (buf) {
    +
    365 memcpy(buf, uid + size - 4, 4);
    +
    366 }
    +
    367 }
    +
    +
    368 std::string uidAsString() const;
    +
    369 std::string typeAsString() const;
    +
    370
    +
    378 bool emulate(const Type t, const uint8_t* uid, const uint8_t uid_len);
    +
    379
    +
    +
    383 inline bool isMifare() const
    +
    384 {
    +
    385 return is_mifare(type);
    +
    386 }
    +
    +
    +
    388 inline bool isMifareClassic() const
    +
    389 {
    + +
    391 }
    +
    +
    +
    393 inline bool isMifareUltralight() const
    +
    394 {
    + +
    396 }
    +
    +
    +
    398 inline bool isMifarePlus() const
    +
    399 {
    +
    400 return is_mifare_plus(type);
    +
    401 }
    +
    +
    +
    403 inline bool isMifarePlusX() const
    +
    404 {
    +
    405 return is_mifare_plus(type) && sub_type_plus == SubTypePlus::X;
    +
    406 }
    +
    +
    +
    408 inline bool isMifarePlusS() const
    +
    409 {
    +
    410 return is_mifare_plus(type) && sub_type_plus == SubTypePlus::S;
    +
    411 }
    +
    +
    +
    413 inline bool isMifarePlusSE() const
    +
    414 {
    +
    415 return type == Type::MIFARE_Plus_SE;
    +
    416 }
    +
    +
    +
    418 inline bool requiresPlusSL3PlainRead() const
    +
    419 {
    +
    420 return isMifarePlusS() || isMifarePlusSE();
    +
    421 }
    +
    +
    +
    422 inline bool isMifareClassicCompatible() const
    +
    423 {
    + +
    425 }
    +
    +
    +
    427 inline bool isMifareDESFire() const
    +
    428 {
    +
    429 return is_mifare_desfire(type);
    +
    430 }
    +
    +
    +
    432 inline bool isNTAG2() const
    +
    433 {
    +
    434 return is_ntag2(type);
    +
    435 }
    +
    +
    +
    437 inline bool isISO14443_4() const
    +
    438 {
    +
    439 return is_iso14443_4(type);
    +
    440 }
    +
    +
    +
    442 inline bool isST25TA() const
    +
    443 {
    +
    444 return is_st25ta(type);
    +
    445 }
    +
    +
    447
    +
    +
    451 inline uint16_t totalSize() const
    +
    452 {
    +
    453 return valid()
    + +
    455 : 0;
    +
    456 }
    +
    +
    +
    458 inline uint16_t userAreaSize() const
    +
    459 {
    +
    460 return valid() ? get_user_area_size(type) : 0;
    +
    461 }
    +
    +
    +
    463 inline uint16_t unitSize() const
    +
    464 {
    +
    465 return valid() ? get_unit_size(type) : 0;
    +
    466 }
    +
    +
    467
    +
    +
    469 inline uint16_t firstUserBlock() const
    +
    470 {
    +
    471 return valid() ? get_first_user_block(type) : 0xFFFF;
    +
    472 }
    +
    +
    +
    473 inline uint16_t lastUserBlock() const
    +
    474 {
    +
    475 return valid() ? get_last_user_block(type) : 0xFFFF;
    +
    476 }
    +
    +
    +
    478 inline bool isUserBlock(const uint8_t block) const
    +
    479 {
    +
    480 return valid() ? is_user_block(type, block) : false;
    +
    481 }
    +
    +
    483
    +
    +
    487 inline bool supportsNFC() const
    +
    488 {
    +
    489 return valid() && supports_NFC(type);
    +
    490 }
    +
    +
    +
    492 inline bool supportsNDEF() const
    +
    493 {
    +
    494 return valid() && nfcForumTagType() != NFCForumTag::None;
    +
    495 }
    +
    +
    + +
    498 {
    + +
    500 }
    +
    +
    +
    502 inline bool canFastRead() const
    +
    503 {
    +
    504 return valid() && has_fast_read(type);
    +
    505 }
    +
    +
    + +
    508 {
    +
    509 return valid() ? get_file_system_feature(type) : 0;
    +
    510 }
    +
    +
    +
    511 inline bool isFileSystemMemory() const
    +
    512 {
    +
    513 return valid() && is_file_system_memory(type);
    +
    514 }
    +
    +
    +
    515 inline bool isFileSystemFile() const
    +
    516 {
    +
    517 return valid() && is_file_system_file(type);
    +
    518 }
    +
    +
    520};
    +
    +
    521
    +
    +
    523inline bool operator==(const PICC& a, const PICC& b)
    +
    524{
    +
    525 return (a.size == b.size) && (a.sak == b.sak) && (a.type == b.type) && (a.blocks == b.blocks) &&
    +
    526 std::memcmp(a.uid, b.uid, 10) == 0;
    +
    527}
    +
    +
    +
    529inline bool operator!=(const PICC& a, const PICC& b)
    +
    530{
    +
    531 return !(a == b);
    +
    532}
    +
    +
    533
    +
    +
    538enum class Command : uint8_t {
    +
    539 // ISO/IEC 14443-3
    +
    540 REQA = 0x26,
    +
    541 WUPA = 0x52,
    +
    542 HLTA = 0x50,
    +
    543 SELECT_CL1 = 0x93,
    +
    544 SELECT_CL2 = 0x95,
    +
    545 SELECT_CL3 = 0x97,
    +
    546 SELCT_CL1_OPT = 0x92,
    +
    547 SELCT_CL2_OPT = 0x94,
    +
    548 SELCT_CL3_OPT = 0x96,
    +
    549 READ = 0x30,
    +
    550 // ISO/IEC 14443-4
    +
    551 RATS = 0xE0,
    +
    552 DESELECT = 0xC2,
    +
    553 // MIFARE
    +
    554 AUTH_WITH_KEY_A = 0x60,
    +
    555 AUTH_WITH_KEY_B = 0x61,
    +
    556 AUTHENTICATE_1 = 0x1A,
    +
    557 AUTHENTICATE_2 = 0xAF,
    +
    558 WRITE_BLOCK = 0xA0,
    +
    559 DECREMENT = 0xC0,
    +
    560 INCREMENT = 0xC1,
    +
    561 RESTORE = 0xC2,
    +
    562 TRANSFER = 0xB0,
    +
    563 PERSONALIZE_UID_USAGE = 0x40,
    +
    564 SET_MOD_TYPE = 0x43,
    +
    565 WRITE_PERSO = 0xA8,
    +
    566 COMMIT_PERSO = 0xAA,
    +
    567 // MIFARE,NTAG
    +
    568 WRITE_PAGE = 0xA2,
    +
    569 // NTAG
    +
    570 GET_VERSION = 0x60,
    +
    571 FAST_READ = 0x3A,
    +
    572 READ_CNT = 0x39,
    +
    573 PWD_AUTH = 0x1B,
    +
    574 READ_SIG = 0x3C,
    +
    575 WRITE_SIG = 0xA9,
    +
    576 LOCK_SIG = 0xAC,
    +
    577};
    +
    +
    578
    +
    581constexpr uint32_t TIMEOUT_REQ_WUP{4}; // 4
    +
    582constexpr uint32_t TIMEOUT_SELECT{8}; // 4
    +
    583constexpr uint32_t TIMEOUT_ANTICOLL{8}; // 8
    +
    584constexpr uint32_t TIMEOUT_HALT{2};
    +
    585constexpr uint32_t TIMEOUT_GET_VERSION{5}; // 5
    +
    586constexpr uint32_t TIMEOUT_3DES{10};
    +
    587constexpr uint32_t TIMEOUT_AUTH1{4}; // 2
    +
    588constexpr uint32_t TIMEOUT_AUTH2{16}; // 10
    +
    589constexpr uint32_t TIMEOUT_READ{12};
    +
    590constexpr uint32_t TIMEOUT_FAST_READ{2};
    +
    591constexpr uint32_t TIMEOUT_FAST_READ_4PAGE{4}; // 3.7
    +
    592constexpr uint32_t TIMEOUT_FAST_READ_12PAGE{4}; // 3.7
    +
    593constexpr uint32_t TIMEOUT_FAST_READ_32PAGE{12}; // 11.8
    +
    594constexpr uint32_t TIMEOUT_WRITE1{5};
    +
    595constexpr uint32_t TIMEOUT_WRITE2{10};
    +
    596constexpr uint32_t TIMEOUT_VALUE_BLOCK{5}; // Value block operation
    +
    597constexpr uint32_t TIMEOUT_RATS{5};
    +
    598constexpr uint32_t TIMEOUT_DESELECT{8};
    +
    600
    +
    603constexpr uint8_t ACK_NIBBLE{0x0A};
    +
    605
    +
    610namespace st25ta {
    +
    611constexpr uint16_t SYSTEM_FILE_ID{0xE101};
    +
    612
    +
    615constexpr uint8_t IC_REFERENCE_ST25TA512B{0xE5};
    +
    616constexpr uint8_t IC_REFERENCE_ST25TA02KB{0xE2};
    +
    617constexpr uint8_t IC_REFERENCE_ST25TA02KB_D{0xF2};
    +
    618constexpr uint8_t IC_REFERENCE_ST25TA02KB_P{0xA2};
    +
    619constexpr uint8_t PRODUCT_CODE_ST25TA16K{0xC5};
    +
    620constexpr uint8_t PRODUCT_CODE_ST25TA64K{0xC4};
    +
    622
    +
    +
    624inline Type get_type(const uint8_t ic_ref_or_product_code)
    +
    625{
    +
    626 return (ic_ref_or_product_code == IC_REFERENCE_ST25TA512B)
    +
    627 ? Type::ST25TA_512B
    +
    628 : ((ic_ref_or_product_code == IC_REFERENCE_ST25TA02KB ||
    +
    629 ic_ref_or_product_code == IC_REFERENCE_ST25TA02KB_D ||
    +
    630 ic_ref_or_product_code == IC_REFERENCE_ST25TA02KB_P)
    +
    631 ? Type::ST25TA_2K
    +
    632 : ((ic_ref_or_product_code == PRODUCT_CODE_ST25TA16K) ? Type::ST25TA_16K
    +
    633 : (ic_ref_or_product_code == PRODUCT_CODE_ST25TA64K) ? Type::ST25TA_64K
    +
    634 : Type::Unknown));
    +
    635}
    +
    +
    636
    +
    + +
    642#if 0
    +
    647 struct ST25TA02K {
    +
    648 uint16_t sflen;
    +
    649 uint8_t gpo_config;
    +
    650 uint8_t event_counter_config;
    +
    651 uint8_t counter[3];
    +
    652 uint8_t product_version;
    +
    653 uint8_t uid[7];
    +
    654 uint16_t memory_size;
    +
    655 uint8_t ic_reference_code;
    +
    656 } __attribute__((packed));
    +
    657
    +
    659 struct ST25TA16K {
    +
    660 uint16_t sflen;
    +
    661 uint8_t reserved[6];
    +
    662 uint8_t uid[7];
    +
    663 uint16_t memory_size;
    +
    664 uint8_t product_code;
    +
    665 } __attribute__((packed_));
    +
    666
    +
    668 struct ST25TA64K {
    +
    669 uint16_t sflen;
    +
    670 uint8_t reserved[6];
    +
    671 uint8_t uid[7];
    +
    672 uint16_t memory_size;
    +
    673 uint8_t product_code;
    +
    674 } __attribute__((packed));
    +
    675
    +
    676 union{
    +
    677 block[18]{};
    +
    678 ST25TA02K st25ta02k;
    +
    679 ST25TA16K st25ta02k;
    +
    680 ST25TA64K st25ta02k;
    +
    681 };
    +
    682#else
    +
    683 uint8_t block[18]{};
    +
    684#endif
    +
    685 inline Type type() const
    +
    686 {
    +
    687 return get_type(block[17]);
    +
    688 }
    +
    689} __attribute__((packed));
    +
    +
    690
    +
    691} // namespace st25ta
    +
    692
    +
    693} // namespace a
    +
    694} // namespace nfc
    +
    695} // namespace m5
    +
    696
    +
    697#endif
    +
    MIFARE definitions.
    +
    NFC-A definitions.
    +
    NFC-B definitions.
    +
    Top level namespace of M5stack.
    +
    NFC related definitions.
    +
    For ST25TA series.
    +
    NFC-V definitions.
    +
    NFC definitions.
    +
    uint8_t file_system_feature_t
    Alias for file_system_feature_t.
    Definition nfc.hpp:62
    +
    constexpr file_system_feature_t FILE_SYSTEM_FLAT_MEMORY
    Block/Page base R/W (flat memory)
    Definition nfc.hpp:63
    +
    constexpr file_system_feature_t FILE_SYSTEM_DESFIRE
    MIFARE DESFire (multi file base)
    Definition nfc.hpp:65
    +
    Bitrate
    Communication bitrate.
    Definition nfc.hpp:52
    +
    constexpr file_system_feature_t FILE_SYSTEM_ISO7816_4
    ISO 7816-4 (multi file base)
    Definition nfc.hpp:64
    +
    NFCForumTag
    NFC Forum Tag Type.
    Definition nfc.hpp:39
    +
    m5::nfc::NFCForumTag get_nfc_forum_tag_type(const Type t)
    Get NFC Forum Tag Type from PICC type.
    Definition nfca.cpp:591
    +
    uint16_t get_unit_size(const Type t)
    Get the unit size of 1 block / 1 page.
    Definition nfca.cpp:341
    +
    uint16_t get_last_user_block(const Type t)
    Gets the last user area block.
    Definition nfca.cpp:358
    +
    file_system_feature_t get_file_system_feature(const Type t)
    Get file system fearure bits.
    Definition nfca.cpp:376
    +
    uint16_t get_number_of_blocks(const Type t)
    Gets the number of blocks.
    Definition nfca.cpp:321
    +
    uint16_t get_user_area_size(const Type t)
    Gets the user area bytes.
    Definition nfca.cpp:335
    +
    bool is_user_block(const Type t, const uint16_t block)
    Is block user area?
    Definition nfca.cpp:364
    +
    uint16_t get_first_user_block(const Type t)
    Gets the first user area block.
    Definition nfca.cpp:352
    +
    bool is_file_system_memory(const Type t)
    Memory file system?
    Definition nfca.hpp:236
    +
    bool is_mifare_desfire(const Type t)
    Is type MIFARE DESFire?
    Definition nfca.hpp:140
    +
    Command
    ISO-14443-3/4,MIFARE,NTAG commands.
    Definition nfca.hpp:538
    +
    @ AUTH_WITH_KEY_A
    MIFARE Classic. Authentication with Key A.
    +
    @ RATS
    Request for Answer to Select.
    + +
    @ LOCK_SIG
    NTAG 210u Lock/Unlock signature.
    +
    @ PERSONALIZE_UID_USAGE
    MIFARE Classic Personalize UID Usage.
    +
    @ COMMIT_PERSO
    MIFARE Plus. CommitPerso.
    + +
    @ GET_VERSION
    NTAG 21x/UL EV1,Nano Gets the version information.
    +
    @ WRITE_BLOCK
    MIFARE Classic. write.
    + +
    @ FAST_READ
    NTAG 21x. excluding 210u. Read multiple pages.
    +
    @ SELECT_CL3
    Anticollison/Select CL3.
    +
    @ WRITE_PAGE
    MIFARE Ultralight/C and NTAG write.
    +
    @ SELCT_CL1_OPT
    Select CL1 and switch bit rate to fc/64 after receive SAK.
    +
    @ AUTH_WITH_KEY_B
    MIFARE Classic. Authentication with Key B.
    +
    @ SELECT_CL1
    Anticollison/Select CL1.
    +
    @ INCREMENT
    MIFARE Classic. increment value block.
    +
    @ AUTHENTICATE_1
    MIFARE UltralightC. Authentication 1st.
    +
    @ SELECT_CL2
    Anticollison/Select CL2.
    +
    @ PWD_AUTH
    NTAG 21x excluding 210u. Authentication for protected area.
    +
    @ SET_MOD_TYPE
    MIFARE Classic SET_MOD_TYPE.
    +
    @ SELCT_CL2_OPT
    Select CL2 and switch bit rate to fc/64 after receive SAK.
    +
    @ DECREMENT
    MIFARE Classic. decrement value block.
    +
    @ SELCT_CL3_OPT
    Select CL3 and switch bit rate to fc/64 after receive SAK.
    +
    @ RESTORE
    MIFARE Classic. reads the contents of a value block into the internal Transfer Buffer.
    +
    @ AUTHENTICATE_2
    MIFARE UltralightC. Authentication 2nd.
    + + +
    @ READ_SIG
    NTAG 21x Read NXP ECC signature.
    +
    @ READ_CNT
    NTAG 213/5/6. Read counter value.
    +
    @ WRITE_SIG
    NTAG 210u Write custom signature.
    +
    @ TRANSFER
    MIFARE Classic. writes the contents of the internal Transfer Buffer to a block.
    +
    @ WRITE_PERSO
    MIFARE Plus. WritePerso.
    +
    bool is_iso14443_3(const Type t)
    Is ISO 14443-3?
    Definition nfca.hpp:164
    +
    Type get_type(const uint8_t ic_ref_or_product_code)
    Gets the type from IC reference or product code.
    Definition nfca.hpp:624
    +
    bool is_ntag4(const Type t)
    Is type NTAG4xx?
    Definition nfca.hpp:122
    +
    bool is_ntag2(const Type t)
    Is type NTAG2xx?
    Definition nfca.hpp:116
    +
    bool supports_NFC(const Type t)
    Does the specified type function as NFC?
    Definition nfca.hpp:170
    +
    bool operator==(const PICC &a, const PICC &b)
    Equal?
    Definition nfca.hpp:523
    +
    bool is_sak_completed(const uint8_t sak)
    SAK completed? (Does not comply with ISO/IEC 14443-4)
    Definition nfca.hpp:193
    +
    bool is_sak_completed_14443_4(const uint8_t sak)
    SAK completed? (Complies with ISO/IEC 14443-4)
    Definition nfca.hpp:188
    +
    bool is_mifare(const Type t)
    Is type MIFARE?
    Definition nfca.hpp:146
    +
    constexpr uint16_t SYSTEM_FILE_ID
    System file for ST25TA.
    Definition nfca.hpp:611
    +
    bool is_iso14443_4(const Type t)
    Is ISO 14443-4?
    Definition nfca.hpp:158
    +
    bool has_fast_read(const Type t)
    Has FAST_READ command?
    Definition nfca.hpp:176
    +
    bool is_st25ta(const Type t)
    Is ST25TA series?
    Definition nfca.hpp:152
    +
    bool is_mifare_classic_compatible(const Type t, const uint8_t sl)
    Is type MIFARE classic compatible? (Plus SL1)
    Definition nfca.hpp:134
    +
    bool operator!=(const PICC &a, const PICC &b)
    Not equal?
    Definition nfca.hpp:529
    +
    Type
    Type of the PICC.
    Definition nfca.hpp:31
    +
    @ MIFARE_Ultralight_EV1_1
    MIFARE Ultralight EV1 MF0UL11.
    +
    @ MIFARE_Ultralight_EV1_2
    MIFARE Ultralight EV1 MF0UL21.
    +
    @ MIFARE_Plus_4K
    MIFARE Plus 4K.
    +
    @ NTAG_213
    NTAG 213.
    +
    @ ST25TA_2K
    ST25TA02K.
    +
    @ NTAG_212
    NTAG 212.
    +
    @ NTAG_4XX
    NTAG 4XX.
    +
    @ MIFARE_Ultralight_Nano
    MIFARE Ultralight Nano.
    +
    @ NTAG_210u
    NTAG 210ÎĽ
    +
    @ NTAG_215
    NTAG 215.
    +
    @ MIFARE_DESFire_4K
    MIFARE DESFire 4K.
    +
    @ MIFARE_Classic_Mini
    Also known as MIFARE Standard mini.
    +
    @ MIFARE_DESFire_2K
    MIFARE DESFire 2K.
    +
    @ MIFARE_Ultralight
    MIFARE Ultralight.
    +
    @ MIFARE_DESFire_8K
    MIFARE DESFire 8K.
    +
    @ ST25TA_16K
    ST25TA16K.
    +
    @ ST25TA_64K
    ST25TA64K.
    +
    @ NTAG_203
    NTAG 203.
    +
    @ Unknown
    Unknown type.
    +
    @ MIFARE_Classic_1K
    Also known as MIFARE Standard 1K.
    +
    @ NTAG_216
    NTAG 216.
    +
    @ MIFARE_UltralightC
    MIFARE UltralightC.
    +
    @ MIFARE_Plus_SE
    MIFARE Plus SE 1K.
    +
    @ MIFARE_Plus_2K
    MIFARE Plus 2K.
    +
    @ MIFARE_DESFire_Light
    MIFARE DESFire Light.
    +
    @ ISO_18092
    PICC compliant with ISO/IEC 18092.
    +
    @ NTAG_210
    NTAG 210.
    +
    @ MIFARE_Classic_2K
    Also known as MIFARE Standard 2K.
    +
    @ MIFARE_Classic_4K
    Also known as MIFARE Standard 4K.
    +
    @ ST25TA_512B
    ST25TA512B.
    +
    @ ISO_14443_4
    PICC compliant with ISO/IEC 14443-4.
    +
    bool is_mifare_ultralight(const Type t)
    Is type MIFARE Ultralight series?
    Definition nfca.hpp:110
    +
    bool has_sak_dependent_bit(const uint8_t sak)
    SAK uncompleted?
    Definition nfca.hpp:182
    +
    SubTypeDESFire
    Sub type for MIFARE DESFire.
    Definition nfca.hpp:93
    +
    bool is_mifare_plus(const Type t)
    Is type MIFARE Plus?
    Definition nfca.hpp:128
    +
    bool is_file_system_file(const Type t)
    File base file system?
    Definition nfca.hpp:241
    +
    SubTypePlus
    Sub type for MIFARE Plus.
    Definition nfca.hpp:80
    +
    bool is_mifare_classic(const Type t)
    Is type MIFARE Classic?
    Definition nfca.hpp:104
    +
    Answer to request.
    Definition nfca.hpp:256
    +
    uint8_t TA
    Interface DS/DR.
    Definition nfca.hpp:262
    +
    uint8_t historical_len
    Length of historical bytes.
    Definition nfca.hpp:268
    +
    std::array< uint8_t, 32 > historical
    Historical bytes(optional)
    Definition nfca.hpp:267
    +
    uint8_t TL
    Length byte.
    Definition nfca.hpp:260
    +
    uint8_t T0
    Format byte.
    Definition nfca.hpp:261
    +
    uint8_t TC
    Code protocol options.
    Definition nfca.hpp:264
    +
    uint8_t TB
    Interface FWI/SFGI.
    Definition nfca.hpp:263
    +
    PICC for NFC-A.
    Definition nfca.hpp:335
    +
    uint8_t sak
    The SAK (Select acknowledge) returned from the PICC after successful selection.
    Definition nfca.hpp:338
    +
    file_system_feature_t fileSystemFeature() const
    File system features.
    Definition nfca.hpp:507
    +
    bool isFileSystemFile() const
    Supports NFC?
    Definition nfca.hpp:515
    +
    uint16_t userAreaSize() const
    Total user area size.
    Definition nfca.hpp:458
    +
    bool supportsNFC() const
    Supports NFC?
    Definition nfca.hpp:487
    +
    uint16_t atqa
    ATQA.
    Definition nfca.hpp:341
    +
    bool isMifareClassic() const
    Is MIFARE classic? (include Plus compatible SL)
    Definition nfca.hpp:388
    +
    uint8_t size
    UID size 4, 7 or 10.
    Definition nfca.hpp:339
    +
    uint16_t lastUserBlock() const
    Total size.
    Definition nfca.hpp:473
    +
    bool isFileSystemMemory() const
    Supports NFC?
    Definition nfca.hpp:511
    +
    bool isMifareClassicCompatible() const
    Is MIFARE?
    Definition nfca.hpp:422
    +
    bool isMifare() const
    Is MIFARE?
    Definition nfca.hpp:383
    +
    bool isMifarePlusSE() const
    Is MIFARE Plus SE?
    Definition nfca.hpp:413
    +
    std::string typeAsString() const
    Gets the type string.
    Definition nfca.cpp:609
    +
    uint8_t security_level
    Security level for Plus.
    Definition nfca.hpp:352
    +
    bool valid() const
    Valid?
    Definition nfca.hpp:356
    +
    ATS ats
    Definition nfca.hpp:343
    +
    bool isST25TA() const
    Is ST25TA?
    Definition nfca.hpp:442
    +
    uint16_t firstUserBlock() const
    Gets the first user block/page address.
    Definition nfca.hpp:469
    +
    void tail4(uint8_t buf[4]) const
    Retrieve the last 4 bytes of UID.
    Definition nfca.hpp:362
    +
    uint16_t unitSize() const
    Read/Write unit size.
    Definition nfca.hpp:463
    +
    SubTypePlus sub_type_plus
    For Plus.
    Definition nfca.hpp:347
    +
    bool emulate(const Type t, const uint8_t *uid, const uint8_t uid_len)
    Emulation settings.
    Definition nfca.cpp:641
    +
    bool isMifareUltralight() const
    Is MIFARE Ultralight series?
    Definition nfca.hpp:393
    +
    uint16_t blocks
    Number of the blocks or pages.
    Definition nfca.hpp:342
    +
    bool isNTAG2() const
    Is NTAG?
    Definition nfca.hpp:432
    +
    bool isMifarePlusS() const
    Is MIFARE Plus S?
    Definition nfca.hpp:408
    +
    bool requiresPlusSL3PlainRead() const
    Requires plain mode for SL3 read? (Plus S and SE don't support encrypted read)
    Definition nfca.hpp:418
    +
    std::string uidAsString() const
    Gets the uid string.
    Definition nfca.cpp:597
    +
    bool supportsNDEF() const
    Supports NDEF?
    Definition nfca.hpp:492
    +
    uint16_t totalSize() const
    Total size.
    Definition nfca.hpp:451
    +
    uint8_t uid[10]
    uid (Valid up to the value of size)
    Definition nfca.hpp:340
    +
    bool isMifarePlusX() const
    Is MIFARE Plus X?
    Definition nfca.hpp:403
    +
    bool isISO14443_4() const
    Is ISO1443-4?
    Definition nfca.hpp:437
    +
    SubTypeDESFire sub_type_desfire
    For DESFire.
    Definition nfca.hpp:348
    +
    uint8_t sub_type
    uint8_t access
    Definition nfca.hpp:346
    +
    bool isMifarePlus() const
    Is MIFARE Plus?
    Definition nfca.hpp:398
    +
    bool isMifareDESFire() const
    Is MIFARE DESFire? (include Light)
    Definition nfca.hpp:427
    +
    bool isUserBlock(const uint8_t block) const
    Is user block?
    Definition nfca.hpp:478
    +
    Type type
    PICC type.
    Definition nfca.hpp:337
    +
    bool canFastRead() const
    Can use FAST_READ command?
    Definition nfca.hpp:502
    +
    NFCForumTag nfcForumTagType() const
    NFC ForumTag.
    Definition nfca.hpp:497
    +
    ST25TA series system file.
    Definition nfca.hpp:641
    +
    +
    + + + + diff --git a/nfcb_8cpp.html b/nfcb_8cpp.html new file mode 100644 index 0000000..6526c9e --- /dev/null +++ b/nfcb_8cpp.html @@ -0,0 +1,136 @@ + + + + + + + +M5Unit-NFC: src/nfc/b/nfcb.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfcb.cpp File Reference
    +
    +
    + +

    NFC-B definitions. +More...

    +
    #include "nfcb.hpp"
    +#include <M5Utility.hpp>
    +
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    + + + + + +

    +Functions

    ATQB protocol
    +uint16_t m5::nfc::b::maximum_frame_length (const uint8_t protocol[3])
     Get maximum frame length from protocol bytes.
     
    +

    Detailed Description

    +

    NFC-B definitions.

    +
    +
    + + + + diff --git a/nfcb_8cpp.js b/nfcb_8cpp.js new file mode 100644 index 0000000..bb03d6a --- /dev/null +++ b/nfcb_8cpp.js @@ -0,0 +1,4 @@ +var nfcb_8cpp = +[ + [ "maximum_frame_length", "nfcb_8cpp.html#af1d62bed3e0436e8c41b431303432a00", null ] +]; \ No newline at end of file diff --git a/nfcb_8hpp.html b/nfcb_8hpp.html new file mode 100644 index 0000000..f6bdc7e --- /dev/null +++ b/nfcb_8hpp.html @@ -0,0 +1,326 @@ + + + + + + + +M5Unit-NFC: src/nfc/b/nfcb.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfcb.hpp File Reference
    +
    +
    + +

    NFC-B definitions. +More...

    +
    #include "nfc/nfc.hpp"
    +#include <cstdint>
    +#include <string>
    +#include <cstring>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    struct  m5::nfc::b::PICC
     PICC for NFC-B. More...
     
    + + + + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    namespace  b
     NFC-B definitions.
     
    + + + + + + + + + + +

    +Enumerations

    enum class  m5::nfc::b::Type : uint8_t { Unknown +, Unclassified + }
     Type of the PICC. More...
     
    enum class  m5::nfc::b::Require : uint8_t {
    +  Slot1 +, Slot2 +, Slot4 +, Slot8 +,
    +  Slot16 +
    + }
     Number of slots required in the request/wakeup.
     
    enum class  m5::nfc::b::Command : uint8_t {
    +  REQ_WUPB = 0x05 +, ATTRIB = 0x1D +, HLTB = 0x50 +, DESELECT = 0xC2 +,
    +  DESELECT_WITH_CID = 0xCA +
    + }
     ISO/IEC 14443 Type B command (Layer 3 / activation) More...
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    +bool m5::nfc::b::operator== (const PICC &a, const PICC &b)
     Equal?
     
    +bool m5::nfc::b::operator!= (const PICC &a, const PICC &b)
     Not equal?
     
    ATQB protocol
    +uint16_t m5::nfc::b::maximum_frame_length (const uint8_t protocol[3])
     Get maximum frame length from protocol bytes.
     
    +uint8_t m5::nfc::b::maximum_frame_length_bits (const uint8_t protocol[3])
     Get maximum frame length from protocol bytes.
     
    +bool m5::nfc::b::supports_iso14443_4 (const uint8_t protocol[3])
     Supports ISO/IEC 14443-4?
     
    +uint8_t m5::nfc::b::get_frame_option (const uint8_t protocol[3])
     Gets the frame option bits.
     
    +uint8_t m5::nfc::b::get_fwi (const uint8_t protocol[3])
     Gets the FWI.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    +constexpr uint8_t m5::nfc::b::ATQB_LENGTH {11}
     ATQB length pupi(4) + application(4) + protocol(3)
     
    Communication speed bits
    +constexpr uint8_t m5::nfc::b::COMMUNICATION_SAME_SPEED {0x80}
     
    +constexpr uint8_t m5::nfc::b::COMMUNICATION_SPPED_106K {0X00}
     
    +constexpr uint8_t m5::nfc::b::COMMUNICATION_SPPED_212K_FROM_PICC {0X10}
     
    +constexpr uint8_t m5::nfc::b::COMMUNICATION_SPPED_424K_FROM_PICC {0X20}
     
    +constexpr uint8_t m5::nfc::b::COMMUNICATION_SPPED_847K_FROM_PICC {0X40}
     
    +constexpr uint8_t m5::nfc::b::COMMUNICATION_SPPED_212K_TO_PICC {0X01}
     
    +constexpr uint8_t m5::nfc::b::COMMUNICATION_SPPED_424K_TO_PICC {0X02}
     
    +constexpr uint8_t m5::nfc::b::COMMUNICATION_SPPED_847K_TO_PICC {0X04}
     
    Frame option bits
    +const uint8_t m5::nfc::b::FRAME_OPTION_NAD {0x02}
     
    +const uint8_t m5::nfc::b::FRAME_OPTION_CID {0x01}
     
    Timeout
    +constexpr uint32_t m5::nfc::b::TIMEOUT_REQ_WUP_B {5}
     
    +constexpr uint32_t m5::nfc::b::TIMEOUT_ATTRIB {5}
     
    +constexpr uint32_t m5::nfc::b::TIMEOUT_HLTB {5}
     
    +constexpr uint32_t m5::nfc::b::TIMEOUT_DESELECT {5}
     
    +

    Detailed Description

    +

    NFC-B definitions.

    +

    Enumeration Type Documentation

    + +

    ◆ Command

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::b::Command : uint8_t
    +
    +strong
    +
    + +

    ISO/IEC 14443 Type B command (Layer 3 / activation)

    + + + + + + +
    Enumerator
    REQ_WUPB 

    Request/Wakeup Type B.

    +
    ATTRIB 

    Attribute (activate ISO-DEP)

    +
    HLTB 

    Halt Type B (rarely used)

    +
    DESELECT 

    DESELECT.

    +
    DESELECT_WITH_CID 

    DESELECT with CID.

    +
    + +
    +
    + +

    ◆ Type

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::b::Type : uint8_t
    +
    +strong
    +
    + +

    Type of the PICC.

    + + + +
    Enumerator
    Unknown 

    Unknown type.

    +
    Unclassified 

    Unclassified.

    +
    + +
    +
    +
    +
    + + + + diff --git a/nfcb_8hpp.js b/nfcb_8hpp.js new file mode 100644 index 0000000..ed71e15 --- /dev/null +++ b/nfcb_8hpp.js @@ -0,0 +1,30 @@ +var nfcb_8hpp = +[ + [ "m5::nfc::b::PICC", "structm5_1_1nfc_1_1b_1_1_p_i_c_c.html", "structm5_1_1nfc_1_1b_1_1_p_i_c_c" ], + [ "Command", "nfcb_8hpp.html#ae2a856e80084be96e7eab93c4007af8c", [ + [ "REQ_WUPB", "nfcb_8hpp.html#ae2a856e80084be96e7eab93c4007af8cacf8fbe52b35ccf31d879b73fa27243af", null ], + [ "ATTRIB", "nfcb_8hpp.html#ae2a856e80084be96e7eab93c4007af8caa7e69c53dafaa5a0100d3d1ba0f7cb6c", null ], + [ "HLTB", "nfcb_8hpp.html#ae2a856e80084be96e7eab93c4007af8ca64f2b46f660a112d2cc1a68e522cb0e0", null ], + [ "DESELECT", "nfcb_8hpp.html#ae2a856e80084be96e7eab93c4007af8ca20966192c0ca6aed708795436471f682", null ], + [ "DESELECT_WITH_CID", "nfcb_8hpp.html#ae2a856e80084be96e7eab93c4007af8cae86ed6981f29d2df796b5eb1eda2f3e8", null ] + ] ], + [ "Require", "nfcb_8hpp.html#aa906fade1b147b015c38f75b7f4a0fcd", [ + [ "Slot1", "nfcb_8hpp.html#aa906fade1b147b015c38f75b7f4a0fcdae88c874b75305f81e897b8e8fec372a3", null ], + [ "Slot2", "nfcb_8hpp.html#aa906fade1b147b015c38f75b7f4a0fcda0f93d2ac970ec933f0c16225d67747bd", null ], + [ "Slot4", "nfcb_8hpp.html#aa906fade1b147b015c38f75b7f4a0fcda99f22e8284d0b005ed31e67773a56152", null ], + [ "Slot8", "nfcb_8hpp.html#aa906fade1b147b015c38f75b7f4a0fcda279b9715da666d337d3d864475e91573", null ], + [ "Slot16", "nfcb_8hpp.html#aa906fade1b147b015c38f75b7f4a0fcdafce938c6cedc868ed01f8782c0b868f7", null ] + ] ], + [ "Type", "nfcb_8hpp.html#a6aa79586df8f19ed0e9a839d7d2ca0cb", [ + [ "Unknown", "nfcb_8hpp.html#a6aa79586df8f19ed0e9a839d7d2ca0cba88183b946cc5f0e8c96b2e66e1c74a7e", null ], + [ "Unclassified", "nfcb_8hpp.html#a6aa79586df8f19ed0e9a839d7d2ca0cba3336022d50ad5765c5db6964d942f5e1", null ] + ] ], + [ "get_frame_option", "nfcb_8hpp.html#a1343a19de345d27d6e04966318ab2a38", null ], + [ "get_fwi", "nfcb_8hpp.html#ac471991e55ecc4ecd3daace0720ec4ba", null ], + [ "maximum_frame_length", "nfcb_8hpp.html#af1d62bed3e0436e8c41b431303432a00", null ], + [ "maximum_frame_length_bits", "nfcb_8hpp.html#ac5a5d80ef3490cda922538211023db99", null ], + [ "operator!=", "nfcb_8hpp.html#ac3bd576be01a287cbdf7d6f6ff7d59f2", null ], + [ "operator==", "nfcb_8hpp.html#a2bfee8da3fdce40cdd70ebb5eaaf0dc3", null ], + [ "supports_iso14443_4", "nfcb_8hpp.html#a9c051e67a823a3666937bfa9b003d45f", null ], + [ "ATQB_LENGTH", "nfcb_8hpp.html#a9cbb42aa665db121b23fc1097c741b41", null ] +]; \ No newline at end of file diff --git a/nfcb_8hpp_source.html b/nfcb_8hpp_source.html new file mode 100644 index 0000000..28e0bbd --- /dev/null +++ b/nfcb_8hpp_source.html @@ -0,0 +1,313 @@ + + + + + + + +M5Unit-NFC: src/nfc/b/nfcb.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    nfcb.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    10#ifndef M5_UNIT_UNIFIED_NFC_NFC_B_NFCB_HPP
    +
    11#define M5_UNIT_UNIFIED_NFC_NFC_B_NFCB_HPP
    +
    12
    +
    13#include "nfc/nfc.hpp"
    +
    14#include <cstdint>
    +
    15#include <string>
    +
    16#include <cstring>
    +
    17
    +
    18namespace m5 {
    +
    19namespace nfc {
    +
    24namespace b {
    +
    25
    +
    +
    30enum class Type : uint8_t {
    +
    31 Unknown,
    + +
    33};
    +
    +
    34
    +
    +
    39enum class Require : uint8_t {
    +
    40 Slot1,
    +
    41 Slot2,
    +
    42 Slot4,
    +
    43 Slot8,
    +
    44 Slot16,
    +
    45};
    +
    +
    46
    +
    47constexpr uint8_t ATQB_LENGTH{11};
    +
    48
    +
    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};
    +
    60
    +
    63const uint8_t FRAME_OPTION_NAD{0x02};
    +
    64const uint8_t FRAME_OPTION_CID{0x01};
    +
    66
    +
    70uint16_t maximum_frame_length(const uint8_t protocol[3]);
    +
    71
    +
    +
    72inline uint8_t maximum_frame_length_bits(const uint8_t protocol[3])
    +
    73{
    +
    74 return protocol ? protocol[1] >> 4 : 0x0F;
    +
    75}
    +
    +
    76
    +
    +
    78inline bool supports_iso14443_4(const uint8_t protocol[3])
    +
    79{
    +
    80 return protocol ? ((protocol[1] & 0x0F) & 0x01) : false;
    +
    81}
    +
    +
    82
    +
    +
    84inline uint8_t get_frame_option(const uint8_t protocol[3])
    +
    85{
    +
    86 return protocol ? (protocol[2] & 0x03) : 0x00;
    +
    87}
    +
    +
    +
    89inline uint8_t get_fwi(const uint8_t protocol[3])
    +
    90{
    +
    91 return protocol ? ((protocol[2] >> 4) & 0x0F) : 0x0F /*RFU*/;
    +
    92}
    +
    +
    94
    +
    +
    99struct PICC {
    +
    100 uint8_t uid[8]{};
    +
    101 union {
    +
    102 uint8_t atqb[ATQB_LENGTH]{};
    +
    103 struct {
    +
    104 uint8_t pupi[4];
    +
    105 uint8_t application[4];
    +
    106 uint8_t protocol[3];
    +
    107 // uint8_t cid[1];
    +
    108 } __attribute__((packed));
    +
    109 } __attribute__((packed));
    +
    110 Type type{Type::Unknown};
    +
    111 uint8_t cid{};
    +
    112 uint8_t option{};
    +
    113
    +
    +
    115 inline bool valid() const
    +
    116 {
    +
    117 return isISO14443_4();
    +
    118 }
    +
    +
    119
    +
    120 std::string pupiAsString() const;
    +
    121 std::string typeAsString() const;
    +
    122
    +
    +
    126 inline bool isISO14443_4() const
    +
    127 {
    + +
    129 }
    +
    +
    131
    +
    134 inline bool supportsNAD() const
    +
    135 {
    +
    136 return get_frame_option(protocol) & FRAME_OPTION_NAD;
    +
    137 }
    +
    138 inline bool supportsCID() const
    +
    139 {
    +
    140 return get_frame_option(protocol) & FRAME_OPTION_CID;
    +
    141 }
    +
    142 inline uint16_t maximumFrameLength() const
    +
    143 {
    +
    144 return maximum_frame_length(protocol);
    +
    145 }
    +
    146 inline uint8_t maximumFrameLengthBits() const
    +
    147 {
    +
    148 return maximum_frame_length_bits(protocol);
    +
    149 }
    +
    150 inline uint8_t communicationSpeed() const
    +
    151 {
    +
    152 return protocol[0];
    +
    153 }
    +
    154 inline uint8_t fwi() const
    +
    155 {
    +
    156 return get_fwi(protocol);
    +
    157 }
    +
    159};
    +
    +
    160
    +
    +
    162inline bool operator==(const PICC& a, const PICC& b)
    +
    163{
    +
    164 return std::memcmp(a.atqb, b.atqb, sizeof(a.atqb)) == 0;
    +
    165}
    +
    +
    +
    167inline bool operator!=(const PICC& a, const PICC& b)
    +
    168{
    +
    169 return !(a == b);
    +
    170}
    +
    +
    171
    +
    +
    176enum class Command : uint8_t {
    +
    177 // ISO/IEC 14443B
    +
    178 REQ_WUPB = 0x05,
    +
    179 ATTRIB = 0x1D,
    +
    180 HLTB = 0x50,
    +
    181 // ISO/IEC 14443-4
    +
    182 DESELECT = 0xC2,
    +
    183 DESELECT_WITH_CID = 0xCA,
    +
    184};
    +
    +
    185
    +
    188constexpr uint32_t TIMEOUT_REQ_WUP_B{5};
    +
    189constexpr uint32_t TIMEOUT_ATTRIB{5};
    +
    190constexpr uint32_t TIMEOUT_HLTB{5};
    +
    191constexpr uint32_t TIMEOUT_DESELECT{5};
    +
    193
    +
    194} // namespace b
    +
    195} // namespace nfc
    +
    196} // namespace m5
    +
    197#endif
    +
    NFC-A definitions.
    +
    NFC-B definitions.
    +
    Top level namespace of M5stack.
    +
    NFC related definitions.
    +
    NFC definitions.
    +
    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
    +
    +
    + + + + diff --git a/nfcf_8cpp.html b/nfcf_8cpp.html new file mode 100644 index 0000000..564e473 --- /dev/null +++ b/nfcf_8cpp.html @@ -0,0 +1,329 @@ + + + + + + + +M5Unit-NFC: src/nfc/f/nfcf.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfcf.cpp File Reference
    +
    +
    + +

    NFC-F definitions. +More...

    +
    #include "nfcf.hpp"
    +#include <M5Utility.hpp>
    +#include <algorithm>
    +
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    +uint16_t m5::nfc::f::get_maximum_block (const Type t)
     Gets the maximum block.
     
    +uint16_t m5::nfc::f::get_number_of_user_blocks (const Type t)
     Gets the number of user blocks.
     
    +uint16_t m5::nfc::f::get_first_user_block (const Type t)
     Gets the first user area block number.
     
    +uint16_t m5::nfc::f::get_last_user_block (const Type t)
     Gets the last user area block number.
     
    +uint8_t m5::nfc::f::get_maximum_read_blocks (const Type t)
     Maximum number of blocks that can be read simultaneously.
     
    +uint8_t m5::nfc::f::get_maximum_write_blocks (const Type t)
     Maximum number of blocks that can be write simultaneously.
     
    +bool m5::nfc::f::is_read_only_lite (const block_t block)
     Is read only block (Permissions are not considered)
     
    +bool m5::nfc::f::is_read_only_lite_s (const block_t block)
     Is read only block (Permissions are not considered)
     
    +bool m5::nfc::f::can_read_lite (const block_t block)
     Can the value of the specified block be read? (Permissions are not considered)
     
    +bool m5::nfc::f::can_read_lite_s (const block_t block)
     Can the value of the specified block be read? (Permissions are not considered)
     
    +bool m5::nfc::f::operator== (const PICC &a, const PICC &b)
     Equal? (Only IDm,PMm)
     
    For MAC
    bool m5::nfc::f::make_session_key (uint8_t sk[16], const uint8_t ck[16], const uint8_t rc[16])
     Make session key.
     
    bool m5::nfc::f::generate_mac (uint8_t mac[8], const uint8_t *plain, uint32_t plain_len, const uint8_t *block_data, uint32_t block_len, const uint8_t sk1[8], const uint8_t sk2[8], const uint8_t rc[16])
     Generate MAC.
     
    bool m5::nfc::f::make_personalized_card_key_lite_s (uint8_t card_key[16], const uint8_t master_key[24], const uint8_t id_block[16])
     Generate personalized card key for FeliCa Lite-S.
     
    +

    Detailed Description

    +

    NFC-F definitions.

    +

    Function Documentation

    + +

    ◆ generate_mac()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool m5::nfc::f::generate_mac (uint8_t mac[8],
    const uint8_t * plain,
    uint32_t plain_len,
    const uint8_t * block_data,
    uint32_t block_len,
    const uint8_t sk1[8],
    const uint8_t sk2[8],
    const uint8_t rc[16] )
    +
    + +

    Generate MAC.

    +
    Parameters
    + + + + + + + + + +
    [out]macMAC
    plainPlain blocks (If nullptr, do not use)
    plain_numNumber of plain (If zero, do not use)
    block_dataBlock data
    block_lenLength of block_data
    sk1Session key 1
    sk2Session key 2
    rcRandom challenge
    +
    +
    +
    Returns
    True if successful
    + +
    +
    + +

    ◆ make_personalized_card_key_lite_s()

    + +
    +
    + + + + + + + + + + + + + + + + +
    bool m5::nfc::f::make_personalized_card_key_lite_s (uint8_t card_key[16],
    const uint8_t master_key[24],
    const uint8_t id_block[16] )
    +
    + +

    Generate personalized card key for FeliCa Lite-S.

    +
    Parameters
    + + + + +
    [out]card_keyPersonalized card key (16 bytes)
    master_keyPersonalized master key (24 bytes)
    id_blockID block value (16 bytes)
    +
    +
    +
    Returns
    True if successful
    + +
    +
    + +

    ◆ make_session_key()

    + +
    +
    + + + + + + + + + + + + + + + + +
    bool m5::nfc::f::make_session_key (uint8_t sk[16],
    const uint8_t ck[16],
    const uint8_t rc[16] )
    +
    + +

    Make session key.

    +
    Parameters
    + + + + +
    [out]skSession key (sk1 8byte + sk2 8byte)
    ckCard key
    rcRandom challenge
    +
    +
    +
    Returns
    True if successful
    + +
    +
    +
    +
    + + + + diff --git a/nfcf_8cpp.js b/nfcf_8cpp.js new file mode 100644 index 0000000..34394d9 --- /dev/null +++ b/nfcf_8cpp.js @@ -0,0 +1,17 @@ +var nfcf_8cpp = +[ + [ "can_read_lite", "nfcf_8cpp.html#af9eb100b9b9cd033fad82fca3470a7ee", null ], + [ "can_read_lite_s", "nfcf_8cpp.html#a9c037fc0ecb47e8ca767344be267ff1f", null ], + [ "generate_mac", "nfcf_8cpp.html#a613b055c6f55fe0ac94694c262238bbd", null ], + [ "get_first_user_block", "nfcf_8cpp.html#a57800978f3b9fda6a89ffcf36c12f6dd", null ], + [ "get_last_user_block", "nfcf_8cpp.html#a87199c49f43628671b18166f6109c746", null ], + [ "get_maximum_block", "nfcf_8cpp.html#abd6a4ea21d882749c7a2bfb347975623", null ], + [ "get_maximum_read_blocks", "nfcf_8cpp.html#acdfb3dc62b558211198bba69f2a18427", null ], + [ "get_maximum_write_blocks", "nfcf_8cpp.html#a5d0e04aab8ed4be98fba915dc96f57cb", null ], + [ "get_number_of_user_blocks", "nfcf_8cpp.html#ad17a8af57383f9e4559a8352404000df", null ], + [ "is_read_only_lite", "nfcf_8cpp.html#af04bf1c332c7652d0279807a8eebec9d", null ], + [ "is_read_only_lite_s", "nfcf_8cpp.html#af179bb4b95076fce93c9aac02c0deb72", null ], + [ "make_personalized_card_key_lite_s", "nfcf_8cpp.html#a926f212f3a65e9312101a1ce9d8733ca", null ], + [ "make_session_key", "nfcf_8cpp.html#a79ce96cae934525470db73d1df2de74a", null ], + [ "operator==", "nfcf_8cpp.html#a9d5df6f8cc40e297cb675451d4f20774", null ] +]; \ No newline at end of file diff --git a/nfcf_8hpp.html b/nfcf_8hpp.html new file mode 100644 index 0000000..65dbf96 --- /dev/null +++ b/nfcf_8hpp.html @@ -0,0 +1,966 @@ + + + + + + + +M5Unit-NFC: src/nfc/f/nfcf.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfcf.hpp File Reference
    +
    +
    + +

    NFC-F definitions. +More...

    +
    #include "nfc/nfc.hpp"
    +#include <cstdint>
    +#include <string>
    +#include <array>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + +

    +Classes

    struct  m5::nfc::f::block_t
     Block list element. More...
     
    struct  m5::nfc::f::PICC
     PICC information for NFC-F. More...
     
    struct  m5::nfc::f::REG
     Subtract Register Block Data. More...
     
    + + + + + + + + + + + + + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    namespace  f
     NFC-F definitions.
     
    namespace  standard
     For FeliCa Standard.
     
    namespace  m5::nfc::f::lite
     For FeliCa Lite.
     
    namespace  m5::nfc::f::lite_s
     For FeliCa Lite-S.
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Enumerations

    enum class  m5::nfc::f::Type : uint8_t {
    +  Unknown +, FeliCaStandard +, FeliCaLite +, FeliCaLiteS +,
    +  FeliCaPlug +
    + }
     Type of the PICC. More...
     
    enum class  m5::nfc::f::CommandCode : uint8_t {
    +  Polling +, RequestService = 0x02 +, RequestResponse = 0x04 +, ReadWithoutEncryption = 0x06 +,
    +  WriteWithoutEncryption = 0x08 +, RequestSystemCode = 0x0C +
    + }
     NFC-F Command code.
     
    enum class  m5::nfc::f::ResponseCode : uint8_t {
    +  Polling = 0x01 +, RequestService = 0x03 +, RequestResponse = 0x05 +, ReadWithoutEncryption = 0x07 +,
    +  WriteWithoutEncryption = 0x09 +, RequestSystemCode = 0x0D +
    + }
     NFC-F Response code.
     
    enum class  m5::nfc::f::RequestCode : uint8_t { None +, SystemCode +, CommunicationPerformance + }
     Request code for Polling. More...
     
    enum class  m5::nfc::f::TimeSlot : uint8_t {
    +  Slot1 +, Slot2 +, Slot4 = 0x03 +, Slot8 = 0x07 +,
    +  Slot16 = 0x0F +
    + }
     Timeslot value for Polling.
     
    enum class  m5::nfc::f::standard::Mode : uint8_t { Mode0 +, Mode1 +, Mode2 +, Mode3 + }
     Mode for Standard. More...
     
    enum class  m5::nfc::f::lite_s::Mode : uint8_t { m5::nfc::f::lite_s::Mode00 +, m5::nfc::f::lite_s::Mode01 +, m5::nfc::f::lite_s::Mode10 +, m5::nfc::f::lite_s::Mode11 + }
     Mode for LiteS. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    +m5::nfc::NFCForumTag m5::nfc::f::get_nfc_forum_tag_type (const Type t)
     Get NFC Forum Tag Type from PICC type.
     
    +constexpr uint8_t m5::nfc::f::timeslot_to_slot (const TimeSlot ts)
     TimeSlot to the number of the slot.
     
    +uint16_t m5::nfc::f::get_maximum_block (const Type t)
     Gets the maximum block.
     
    +uint16_t m5::nfc::f::get_number_of_user_blocks (const Type t)
     Gets the number of user blocks.
     
    +uint16_t m5::nfc::f::get_user_area_size (const Type t)
     Gets the user area bytes.
     
    +uint16_t m5::nfc::f::get_first_user_block (const Type t)
     Gets the first user area block number.
     
    +uint16_t m5::nfc::f::get_last_user_block (const Type t)
     Gets the last user area block number.
     
    +bool m5::nfc::f::is_user_block (const Type t, const uint16_t block)
     Is block user area?
     
    +uint8_t m5::nfc::f::get_maximum_read_blocks (const Type t)
     Maximum number of blocks that can be read simultaneously.
     
    +uint8_t m5::nfc::f::get_maximum_write_blocks (const Type t)
     Maximum number of blocks that can be write simultaneously.
     
    +bool m5::nfc::f::is_read_only_lite (const block_t block)
     Is read only block (Permissions are not considered)
     
    +bool m5::nfc::f::is_read_only_lite_s (const block_t block)
     Is read only block (Permissions are not considered)
     
    +bool m5::nfc::f::can_read_lite (const block_t block)
     Can the value of the specified block be read? (Permissions are not considered)
     
    +bool m5::nfc::f::can_read_lite_s (const block_t block)
     Can the value of the specified block be read? (Permissions are not considered)
     
    +bool m5::nfc::f::operator== (const PICC &a, const PICC &b)
     Equal? (Only IDm,PMm)
     
    +bool m5::nfc::f::operator!= (const PICC &a, const PICC &b)
     Not equal?
     
    For MAC
    bool m5::nfc::f::make_session_key (uint8_t sk[16], const uint8_t ck[16], const uint8_t rc[16])
     Make session key.
     
    bool m5::nfc::f::generate_mac (uint8_t mac[8], const uint8_t *plain, uint32_t plain_len, const uint8_t *block_data, uint32_t block_len, const uint8_t sk1[8], const uint8_t sk2[8], const uint8_t rc[16])
     Generate MAC.
     
    bool m5::nfc::f::make_personalized_card_key_lite_s (uint8_t card_key[16], const uint8_t master_key[24], const uint8_t id_block[16])
     Generate personalized card key for FeliCa Lite-S.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    +constexpr uint8_t m5::nfc::f::FELICA_ID_LENGTH {8}
     
    +constexpr uint8_t m5::nfc::f::FELICA_MAX_BLOCKS {8}
     
    +constexpr uint16_t m5::nfc::f::FELICA_MAX_PACKET_LENGTH_REQUEST_SERVICE {1 + 8 + 1 + 2 * 255}
     
    +constexpr uint16_t m5::nfc::f::FELICA_MAX_PACKET_LENGTH_REQUEST_RESPONSE {1 + 8 + 1}
     
    +constexpr uint16_t m5::nfc::f::FELICA_MAX_PACKET_LENGTH_REQUEST_SYSTEM_CODE {1 + 8 + 1 + 2 * 255}
     
    SystemCode
    +constexpr uint16_t m5::nfc::f::system_code_wildcard {0xFFFF}
     Wildcard.
     
    +constexpr uint16_t m5::nfc::f::system_code_ndef {0x12FC}
     NDEF.
     
    +constexpr uint16_t m5::nfc::f::system_code_felica_secure_id {0x957A}
     FeliCa secure ID.
     
    +constexpr uint16_t m5::nfc::f::system_code_shared {0xFE00}
     Shared area.
     
    +constexpr uint16_t m5::nfc::f::system_code_lite {0x88B4}
     Lite, Lite-S.
     
    +constexpr uint16_t m5::nfc::f::system_code_felica_plug {0xFEE1}
     FeliCa Plug.
     
    Service attribute
    +constexpr uint16_t m5::nfc::f::service_random_read_write_auth {0x0008}
     Random,Read/write,Authentication required (S)
     
    +constexpr uint16_t m5::nfc::f::service_random_read_write {0x0009}
     Random,Read/write,No authentication required (S, L, LS)
     
    +constexpr uint16_t m5::nfc::f::service_random_read_auth {0x000A}
     Random,Read only,No authentication required (S)
     
    +constexpr uint16_t m5::nfc::f::service_random_read {0x000B}
     Random,Read only,No authentication required (S,LS)
     
    +constexpr uint16_t m5::nfc::f::service_cyclic_read_write_auth {0x000C}
     Cyclic,Read/write,Authentication required(S)
     
    +constexpr uint16_t m5::nfc::f::service_cyclic_read_write {0x000D}
     Cyclic,Read/write,No athentication required(S)
     
    +constexpr uint16_t m5::nfc::f::service_cyclic_read_auth {0x000E}
     Cyclic,Read only,Authentication required(S)
     
    +constexpr uint16_t m5::nfc::f::service_cyclic_read {0x000F}
     Cyclic,Read only,No authentication required(S)
     
    +constexpr uint16_t m5::nfc::f::service_parse_direct_auth {0x0100}
     Random,Read/write,Authentication required (S)
     
    +constexpr uint16_t m5::nfc::f::service_parse_direct {0x0101}
     Random,Read/write,Authentication required (S)
     
    +constexpr uint16_t m5::nfc::f::service_parse_cacheback_auth {0x0102}
     Random,Read/write,Authentication required (S)
     
    +constexpr uint16_t m5::nfc::f::service_parse_cacheback {0x0103}
     Random,Read/write,Authentication required (S)
     
    +constexpr uint16_t m5::nfc::f::service_parse_decrement_auth {0x0104}
     Random,Read/write,Authentication required (S)
     
    +constexpr uint16_t m5::nfc::f::service_parse_decrement {0x0105}
     Random,Read/write,Authentication required (S)
     
    +constexpr uint16_t m5::nfc::f::service_parse_increment_auth {0x0106}
     Random,Read/write,Authentication required (S)
     
    +constexpr uint16_t m5::nfc::f::service_parse_increment {0x0107}
     Random,Read/write,Authentication required (S)
     
    Block
    +constexpr block_t m5::nfc::f::lite::S_PAD0 {0x00}
     
    +constexpr block_t m5::nfc::f::lite::S_PAD1 {0x01}
     
    +constexpr block_t m5::nfc::f::lite::S_PAD2 {0x02}
     
    +constexpr block_t m5::nfc::f::lite::S_PAD3 {0x03}
     
    +constexpr block_t m5::nfc::f::lite::S_PAD4 {0x04}
     
    +constexpr block_t m5::nfc::f::lite::S_PAD5 {0x05}
     
    +constexpr block_t m5::nfc::f::lite::S_PAD6 {0x06}
     
    +constexpr block_t m5::nfc::f::lite::S_PAD7 {0x07}
     
    +constexpr block_t m5::nfc::f::lite::S_PAD8 {0x08}
     
    +constexpr block_t m5::nfc::f::lite::S_PAD9 {0x09}
     
    +constexpr block_t m5::nfc::f::lite::S_PAD10 {0x0A}
     
    +constexpr block_t m5::nfc::f::lite::S_PAD11 {0x0B}
     
    +constexpr block_t m5::nfc::f::lite::S_PAD12 {0X0C}
     
    +constexpr block_t m5::nfc::f::lite::S_PAD13 {0x0D}
     
    +constexpr block_t m5::nfc::f::lite::REG {0x0E}
     
    +constexpr block_t m5::nfc::f::lite::RC {0x80}
     
    +constexpr block_t m5::nfc::f::lite::MAC {0x81}
     
    +constexpr block_t m5::nfc::f::lite::ID {0x082}
     
    +constexpr block_t m5::nfc::f::lite::D_ID {0x83}
     
    +constexpr block_t m5::nfc::f::lite::SER_C {0x84}
     
    +constexpr block_t m5::nfc::f::lite::SYS_C {0x85}
     
    +constexpr block_t m5::nfc::f::lite::CKV {0x86}
     
    +constexpr block_t m5::nfc::f::lite::CK {0x87}
     
    +constexpr block_t m5::nfc::f::lite::MC {0x88}
     
    Block
    +constexpr block_t m5::nfc::f::lite_s::S_PAD0 {0x00}
     
    +constexpr block_t m5::nfc::f::lite_s::S_PAD1 {0x01}
     
    +constexpr block_t m5::nfc::f::lite_s::S_PAD2 {0x02}
     
    +constexpr block_t m5::nfc::f::lite_s::S_PAD3 {0x03}
     
    +constexpr block_t m5::nfc::f::lite_s::S_PAD4 {0x04}
     
    +constexpr block_t m5::nfc::f::lite_s::S_PAD5 {0x05}
     
    +constexpr block_t m5::nfc::f::lite_s::S_PAD6 {0x06}
     
    +constexpr block_t m5::nfc::f::lite_s::S_PAD7 {0x07}
     
    +constexpr block_t m5::nfc::f::lite_s::S_PAD8 {0x08}
     
    +constexpr block_t m5::nfc::f::lite_s::S_PAD9 {0x09}
     
    +constexpr block_t m5::nfc::f::lite_s::S_PAD10 {0x0A}
     
    +constexpr block_t m5::nfc::f::lite_s::S_PAD11 {0x0B}
     
    +constexpr block_t m5::nfc::f::lite_s::S_PAD12 {0X0C}
     
    +constexpr block_t m5::nfc::f::lite_s::S_PAD13 {0x0D}
     
    +constexpr block_t m5::nfc::f::lite_s::REG {0x0E}
     
    +constexpr block_t m5::nfc::f::lite_s::RC {0x80}
     
    +constexpr block_t m5::nfc::f::lite_s::MAC {0x81}
     
    +constexpr block_t m5::nfc::f::lite_s::ID {0x082}
     
    +constexpr block_t m5::nfc::f::lite_s::D_ID {0x83}
     
    +constexpr block_t m5::nfc::f::lite_s::SER_C {0x84}
     
    +constexpr block_t m5::nfc::f::lite_s::SYS_C {0x85}
     
    +constexpr block_t m5::nfc::f::lite_s::CKV {0x86}
     
    +constexpr block_t m5::nfc::f::lite_s::CK {0x87}
     
    +constexpr block_t m5::nfc::f::lite_s::MC {0x88}
     
    +constexpr block_t m5::nfc::f::lite_s::WCNT {0x90}
     
    +constexpr block_t m5::nfc::f::lite_s::MAC_A {0x91}
     
    +constexpr block_t m5::nfc::f::lite_s::STATE {0x92}
     
    +constexpr block_t m5::nfc::f::lite_s::CRC_CHECK {0xA0}
     
    RequestService
    +constexpr uint16_t m5::nfc::f::NODE_SYSTEM_KEY {0xFFFF}
     Retrieving the System Key Version.
     
    +constexpr uint16_t m5::nfc::f::KEY_VERIOSN_NONE {0xFFFF}
     No key version exists.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    Format bits

    +using m5::nfc::f::Format = uint8_t
     Support ISO/IEC18092.
     
    +constexpr Format m5::nfc::f::format_nfcip1 {0x0001}
     Support ISO/IEC18092.
     
    +constexpr Format m5::nfc::f::format_lite {0x0002}
     Lite or Lite-S.
     
    +constexpr Format m5::nfc::f::format_private {0x0004}
     Has private area.
     
    +constexpr Format m5::nfc::f::format_ndef {0x0008}
     Support NDEF.
     
    +constexpr Format m5::nfc::f::format_shared {0x0010}
     Has shared area.
     
    +constexpr Format m5::nfc::f::format_secure {0x0020}
     FeliCa Secure ID.
     
    +constexpr Format m5::nfc::f::format_felica_plug {0x0040}
     FeliCa Plug.
     
    + + + + + + + +

    Timeout

    constexpr uint32_t m5::nfc::f::TIMEOUT_POLLING {5}
     
    constexpr uint32_t m5::nfc::f::TIMEOUT_POLLING_PICC {2}
     
    bool m5::nfc::f::can_write_reg (const REG &o, const REG &n)
     
    +

    Detailed Description

    +

    NFC-F definitions.

    +

    Enumeration Type Documentation

    + +

    ◆ Mode

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::f::standard::Mode : uint8_t
    +
    +strong
    +
    + +

    Mode for Standard.

    + + + + + +
    Enumerator
    Mode0 

    Power was supplied to the PICC.

    +
    Mode1 

    Certification for PICC has been completed (Auth1)

    +
    Mode2 

    After mutual authentication is complete (Auth2)

    +
    Mode3 

    After registering area services or executing system partitioning.

    +
    + +
    +
    + +

    ◆ RequestCode

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::f::RequestCode : uint8_t
    +
    +strong
    +
    + +

    Request code for Polling.

    + + + + +
    Enumerator
    None 

    No request.

    +
    SystemCode 

    Request system code.

    +
    CommunicationPerformance 

    Request communication performance.

    +
    + +
    +
    + +

    ◆ Type

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::f::Type : uint8_t
    +
    +strong
    +
    + +

    Type of the PICC.

    + + + + + + +
    Enumerator
    Unknown 

    Unknown type.

    +
    FeliCaStandard 

    Standard.

    +
    FeliCaLite 

    Lite.

    +
    FeliCaLiteS 

    Lite-S.

    +
    FeliCaPlug 

    Plug.

    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ can_write_reg()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    bool m5::nfc::f::can_write_reg (const REG & o,
    const REG & n )
    +
    +inline
    +
    +

    brief Is the new value writable?

    Parameters
    + + + +
    oOld REG value
    NewREG value
    +
    +
    +
    Returns
    true if writable
    + +
    +
    + +

    ◆ generate_mac()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool m5::nfc::f::generate_mac (uint8_t mac[8],
    const uint8_t * plain,
    uint32_t plain_len,
    const uint8_t * block_data,
    uint32_t block_len,
    const uint8_t sk1[8],
    const uint8_t sk2[8],
    const uint8_t rc[16] )
    +
    + +

    Generate MAC.

    +
    Parameters
    + + + + + + + + + +
    [out]macMAC
    plainPlain blocks (If nullptr, do not use)
    plain_numNumber of plain (If zero, do not use)
    block_dataBlock data
    block_lenLength of block_data
    sk1Session key 1
    sk2Session key 2
    rcRandom challenge
    +
    +
    +
    Returns
    True if successful
    + +
    +
    + +

    ◆ make_personalized_card_key_lite_s()

    + +
    +
    + + + + + + + + + + + + + + + + +
    bool m5::nfc::f::make_personalized_card_key_lite_s (uint8_t card_key[16],
    const uint8_t master_key[24],
    const uint8_t id_block[16] )
    +
    + +

    Generate personalized card key for FeliCa Lite-S.

    +
    Parameters
    + + + + +
    [out]card_keyPersonalized card key (16 bytes)
    master_keyPersonalized master key (24 bytes)
    id_blockID block value (16 bytes)
    +
    +
    +
    Returns
    True if successful
    + +
    +
    + +

    ◆ make_session_key()

    + +
    +
    + + + + + + + + + + + + + + + + +
    bool m5::nfc::f::make_session_key (uint8_t sk[16],
    const uint8_t ck[16],
    const uint8_t rc[16] )
    +
    + +

    Make session key.

    +
    Parameters
    + + + + +
    [out]skSession key (sk1 8byte + sk2 8byte)
    ckCard key
    rcRandom challenge
    +
    +
    +
    Returns
    True if successful
    + +
    +
    +

    Variable Documentation

    + +

    ◆ TIMEOUT_POLLING

    + +
    +
    + + + + + +
    + + + + +
    uint32_t m5::nfc::f::TIMEOUT_POLLING {5}
    +
    +constexpr
    +
    +

    brief Is the new value writable?

    Parameters
    + + + +
    oOld REG value
    NewREG value
    +
    +
    +
    Returns
    true if writable
    + +
    +
    + +

    ◆ TIMEOUT_POLLING_PICC

    + +
    +
    + + + + + +
    + + + + +
    uint32_t m5::nfc::f::TIMEOUT_POLLING_PICC {2}
    +
    +constexpr
    +
    +

    brief Is the new value writable?

    Parameters
    + + + +
    oOld REG value
    NewREG value
    +
    +
    +
    Returns
    true if writable
    + +
    +
    +
    +
    + + + + diff --git a/nfcf_8hpp.js b/nfcf_8hpp.js new file mode 100644 index 0000000..b5adfaf --- /dev/null +++ b/nfcf_8hpp.js @@ -0,0 +1,107 @@ +var nfcf_8hpp = +[ + [ "m5::nfc::f::block_t", "structm5_1_1nfc_1_1f_1_1block__t.html", "structm5_1_1nfc_1_1f_1_1block__t" ], + [ "m5::nfc::f::PICC", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html", "structm5_1_1nfc_1_1f_1_1_p_i_c_c" ], + [ "m5::nfc::f::REG", "unionm5_1_1nfc_1_1f_1_1_r_e_g.html", "unionm5_1_1nfc_1_1f_1_1_r_e_g" ], + [ "Format", "nfcf_8hpp.html#aae6a013f27fd62f19dfdd6959ed679e9", null ], + [ "CommandCode", "nfcf_8hpp.html#a5cc4c0eab77c7e2ae44f9549f695d52d", [ + [ "Polling", "nfcf_8hpp.html#a5cc4c0eab77c7e2ae44f9549f695d52dade20877b0f870524114c6e0a571dcc6b", null ], + [ "RequestService", "nfcf_8hpp.html#a5cc4c0eab77c7e2ae44f9549f695d52da265d02b0f236e5b116643dc9597598ee", null ], + [ "RequestResponse", "nfcf_8hpp.html#a5cc4c0eab77c7e2ae44f9549f695d52da04e1a7b57858a71de114414bb56400bb", null ], + [ "ReadWithoutEncryption", "nfcf_8hpp.html#a5cc4c0eab77c7e2ae44f9549f695d52dade4e6162af0eceb989357437568e98c6", null ], + [ "WriteWithoutEncryption", "nfcf_8hpp.html#a5cc4c0eab77c7e2ae44f9549f695d52da4465ac7bec4a63d3fdf24050db1651d5", null ], + [ "RequestSystemCode", "nfcf_8hpp.html#a5cc4c0eab77c7e2ae44f9549f695d52dae2113f6021419fffe34b60d97a64ff36", null ] + ] ], + [ "Mode", "nfcf_8hpp.html#a8205d1ee70e7b5a0d9c073f9e8916b90", [ + [ "Mode00", "nfcf_8hpp.html#a8205d1ee70e7b5a0d9c073f9e8916b90ada3f9688888dfbaa06ca923662130978", null ], + [ "Mode01", "nfcf_8hpp.html#a8205d1ee70e7b5a0d9c073f9e8916b90ae2094a9b36ca75c979deaf1a582fbfc5", null ], + [ "Mode10", "nfcf_8hpp.html#a8205d1ee70e7b5a0d9c073f9e8916b90a8fec38fc491b842379a834279aa2ca03", null ], + [ "Mode11", "nfcf_8hpp.html#a8205d1ee70e7b5a0d9c073f9e8916b90a4bc80f64d5ab44497ce35569d1bc12b4", null ] + ] ], + [ "Mode", "nfcf_8hpp.html#a6959bdf0a008260dcec938adc6a7db5c", [ + [ "Mode0", "nfcf_8hpp.html#a6959bdf0a008260dcec938adc6a7db5ca315436bae0e85636381fc939db06aee5", null ], + [ "Mode1", "nfcf_8hpp.html#a6959bdf0a008260dcec938adc6a7db5ca7a2ea225a084605104f8c39b3ae9657c", null ], + [ "Mode2", "nfcf_8hpp.html#a6959bdf0a008260dcec938adc6a7db5ca04c542f260d16590ec60c594f67a30e7", null ], + [ "Mode3", "nfcf_8hpp.html#a6959bdf0a008260dcec938adc6a7db5cab68fa4884da8d22e83f37b4f209295f1", null ] + ] ], + [ "RequestCode", "nfcf_8hpp.html#aa85476c3807a205b8d13cb06347bb144", [ + [ "None", "nfcf_8hpp.html#aa85476c3807a205b8d13cb06347bb144a6adf97f83acf6453d4a6a4b1070f3754", null ], + [ "SystemCode", "nfcf_8hpp.html#aa85476c3807a205b8d13cb06347bb144a1eeecf7b9a1ca67f7b230b65716a19d6", null ], + [ "CommunicationPerformance", "nfcf_8hpp.html#aa85476c3807a205b8d13cb06347bb144a3ce9c6f141a2a97b4e9504272d3efc98", null ] + ] ], + [ "ResponseCode", "nfcf_8hpp.html#a360c75b595fa2e5fa9988959168746df", [ + [ "Polling", "nfcf_8hpp.html#a360c75b595fa2e5fa9988959168746dfade20877b0f870524114c6e0a571dcc6b", null ], + [ "RequestService", "nfcf_8hpp.html#a360c75b595fa2e5fa9988959168746dfa265d02b0f236e5b116643dc9597598ee", null ], + [ "RequestResponse", "nfcf_8hpp.html#a360c75b595fa2e5fa9988959168746dfa04e1a7b57858a71de114414bb56400bb", null ], + [ "ReadWithoutEncryption", "nfcf_8hpp.html#a360c75b595fa2e5fa9988959168746dfade4e6162af0eceb989357437568e98c6", null ], + [ "WriteWithoutEncryption", "nfcf_8hpp.html#a360c75b595fa2e5fa9988959168746dfa4465ac7bec4a63d3fdf24050db1651d5", null ], + [ "RequestSystemCode", "nfcf_8hpp.html#a360c75b595fa2e5fa9988959168746dfae2113f6021419fffe34b60d97a64ff36", null ] + ] ], + [ "TimeSlot", "nfcf_8hpp.html#a1ca4eeb3808f5d0529b603128edc5b84", [ + [ "Slot1", "nfcf_8hpp.html#a1ca4eeb3808f5d0529b603128edc5b84ae88c874b75305f81e897b8e8fec372a3", null ], + [ "Slot2", "nfcf_8hpp.html#a1ca4eeb3808f5d0529b603128edc5b84a0f93d2ac970ec933f0c16225d67747bd", null ], + [ "Slot4", "nfcf_8hpp.html#a1ca4eeb3808f5d0529b603128edc5b84a99f22e8284d0b005ed31e67773a56152", null ], + [ "Slot8", "nfcf_8hpp.html#a1ca4eeb3808f5d0529b603128edc5b84a279b9715da666d337d3d864475e91573", null ], + [ "Slot16", "nfcf_8hpp.html#a1ca4eeb3808f5d0529b603128edc5b84afce938c6cedc868ed01f8782c0b868f7", null ] + ] ], + [ "Type", "nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96f", [ + [ "Unknown", "nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96fa88183b946cc5f0e8c96b2e66e1c74a7e", null ], + [ "FeliCaStandard", "nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96facac4693ba70e855674fafee447e1b759", null ], + [ "FeliCaLite", "nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96fabb274ba4f79260fac1cceb11d9504a91", null ], + [ "FeliCaLiteS", "nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96fa6478df87d6ba411e0bb4c7824085bc01", null ], + [ "FeliCaPlug", "nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96fa2672a11e5105880c01910d1c337e4bcb", null ] + ] ], + [ "can_read_lite", "nfcf_8hpp.html#af9eb100b9b9cd033fad82fca3470a7ee", null ], + [ "can_read_lite_s", "nfcf_8hpp.html#a9c037fc0ecb47e8ca767344be267ff1f", null ], + [ "can_write_reg", "nfcf_8hpp.html#a68e8144e7658b6822c286efd5fd46cab", null ], + [ "generate_mac", "nfcf_8hpp.html#a613b055c6f55fe0ac94694c262238bbd", null ], + [ "get_first_user_block", "nfcf_8hpp.html#a57800978f3b9fda6a89ffcf36c12f6dd", null ], + [ "get_last_user_block", "nfcf_8hpp.html#a87199c49f43628671b18166f6109c746", null ], + [ "get_maximum_block", "nfcf_8hpp.html#abd6a4ea21d882749c7a2bfb347975623", null ], + [ "get_maximum_read_blocks", "nfcf_8hpp.html#acdfb3dc62b558211198bba69f2a18427", null ], + [ "get_maximum_write_blocks", "nfcf_8hpp.html#a5d0e04aab8ed4be98fba915dc96f57cb", null ], + [ "get_nfc_forum_tag_type", "nfcf_8hpp.html#ac45986717903a578a3dc4c59da17f298", null ], + [ "get_number_of_user_blocks", "nfcf_8hpp.html#ad17a8af57383f9e4559a8352404000df", null ], + [ "get_user_area_size", "nfcf_8hpp.html#aa8fa452b71d896b1fb7ed52eab69a8d2", null ], + [ "is_read_only_lite", "nfcf_8hpp.html#af04bf1c332c7652d0279807a8eebec9d", null ], + [ "is_read_only_lite_s", "nfcf_8hpp.html#af179bb4b95076fce93c9aac02c0deb72", null ], + [ "is_user_block", "nfcf_8hpp.html#a0e2254c895998ba49f34dbe5f93cfe23", null ], + [ "make_personalized_card_key_lite_s", "nfcf_8hpp.html#a926f212f3a65e9312101a1ce9d8733ca", null ], + [ "make_session_key", "nfcf_8hpp.html#a79ce96cae934525470db73d1df2de74a", null ], + [ "operator!=", "nfcf_8hpp.html#a5d6416a6b1df2234e88bfd1b78e8a52b", null ], + [ "operator==", "nfcf_8hpp.html#a9d5df6f8cc40e297cb675451d4f20774", null ], + [ "timeslot_to_slot", "nfcf_8hpp.html#a89d13d59812d64bb13835a45aebebeba", null ], + [ "format_felica_plug", "nfcf_8hpp.html#a703ced21afb41aef9aa9f100b80b25ce", null ], + [ "format_lite", "nfcf_8hpp.html#afe6ad9f347b81b810097fd17b31af8d2", null ], + [ "format_ndef", "nfcf_8hpp.html#ab430bcb9ae317feae37a1a7f1364f544", null ], + [ "format_nfcip1", "nfcf_8hpp.html#aa521daa7bf5e75d10fa21e848654c2be", null ], + [ "format_private", "nfcf_8hpp.html#a2ddee2f888ea8483516ca0d5c09f9935", null ], + [ "format_secure", "nfcf_8hpp.html#a9adc4af29d0d219c1804748d6c7aef48", null ], + [ "format_shared", "nfcf_8hpp.html#a2e51494ec684f04fe85652cfca51b19d", null ], + [ "KEY_VERIOSN_NONE", "nfcf_8hpp.html#a826f0b02bdb00fafe162f52e5a90c7c4", null ], + [ "NODE_SYSTEM_KEY", "nfcf_8hpp.html#aea1e9a30d61d21a485d0f00785b030d2", null ], + [ "service_cyclic_read", "nfcf_8hpp.html#ad932724434468d099da3f88fd3ea3131", null ], + [ "service_cyclic_read_auth", "nfcf_8hpp.html#ab3f37f14f630750fae7a1015a24d158f", null ], + [ "service_cyclic_read_write", "nfcf_8hpp.html#ac244ed94137bfb4a42dc4cb9539fa00c", null ], + [ "service_cyclic_read_write_auth", "nfcf_8hpp.html#a7827a434c6e681ebf2a94da09ac935e1", null ], + [ "service_parse_cacheback", "nfcf_8hpp.html#a2fac017d2e051772fd2b3e1e43f0c50c", null ], + [ "service_parse_cacheback_auth", "nfcf_8hpp.html#a1d17392cf32de3b4c93e851e3bf4862b", null ], + [ "service_parse_decrement", "nfcf_8hpp.html#ad9a3c4163a53990d8a994c4bd0d78908", null ], + [ "service_parse_decrement_auth", "nfcf_8hpp.html#a32c126ea71f639f747e3de1520d054dc", null ], + [ "service_parse_direct", "nfcf_8hpp.html#a9a8429d9d2a55a4366b5ced92dfa5d48", null ], + [ "service_parse_direct_auth", "nfcf_8hpp.html#a79f5298b66bb05349cebe3d7b2793fd3", null ], + [ "service_parse_increment", "nfcf_8hpp.html#af6667e88bbf020556ad1d7a1492af337", null ], + [ "service_parse_increment_auth", "nfcf_8hpp.html#a5878b0feb6beec1c2aee07fdd49d8cec", null ], + [ "service_random_read", "nfcf_8hpp.html#aa34539f8d3d332d33990ae18cf63ec52", null ], + [ "service_random_read_auth", "nfcf_8hpp.html#a5b2562fa6829d1e1b1adde7ab8a79e3a", null ], + [ "service_random_read_write", "nfcf_8hpp.html#a22c27e0c42a8e14db11ed926e20b50d7", null ], + [ "service_random_read_write_auth", "nfcf_8hpp.html#a425db1e4f06b88c8d011a4271bee8fa3", null ], + [ "system_code_felica_plug", "nfcf_8hpp.html#a429e821de9621a46cf40349fd964d89f", null ], + [ "system_code_felica_secure_id", "nfcf_8hpp.html#ad8380cc3ac96fab0ea0b1c22e7ef008b", null ], + [ "system_code_lite", "nfcf_8hpp.html#aed3fbe9519884df27578df4e3ec7730b", null ], + [ "system_code_ndef", "nfcf_8hpp.html#aafc54fae843e05f63e3f8ab7b3941464", null ], + [ "system_code_shared", "nfcf_8hpp.html#a2e036876dc05e21ffb6d8ff76c2f8cd7", null ], + [ "system_code_wildcard", "nfcf_8hpp.html#add8594506fbb8c50eabd0c0104aee674", null ], + [ "TIMEOUT_POLLING", "nfcf_8hpp.html#a1498621ff0ef623b709209aaa8b475a8", null ], + [ "TIMEOUT_POLLING_PICC", "nfcf_8hpp.html#a4871355553bd0305670405655de9d4ee", null ] +]; \ No newline at end of file diff --git a/nfcf_8hpp_source.html b/nfcf_8hpp_source.html new file mode 100644 index 0000000..a504de2 --- /dev/null +++ b/nfcf_8hpp_source.html @@ -0,0 +1,730 @@ + + + + + + + +M5Unit-NFC: src/nfc/f/nfcf.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    nfcf.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    10#ifndef M5_UNIT_UNIFIED_NFC_NFC_F_NFCF_HPP
    +
    11#define M5_UNIT_UNIFIED_NFC_NFC_F_NFCF_HPP
    +
    12
    +
    13#include "nfc/nfc.hpp"
    +
    14#include <cstdint>
    +
    15#include <string>
    +
    16#include <array>
    +
    17
    +
    18namespace m5 {
    +
    19namespace nfc {
    +
    24namespace f {
    +
    25
    +
    +
    30enum class Type : uint8_t {
    +
    31 Unknown,
    + + + + +
    36 // FeliCaLink, //!< Link
    +
    37};
    +
    +
    38
    +
    +
    40inline m5::nfc::NFCForumTag get_nfc_forum_tag_type(const Type t)
    +
    41{
    +
    42 return (t != Type::Unknown) ? NFCForumTag::Type3 : NFCForumTag::None;
    +
    43}
    +
    +
    44
    +
    47using Format = uint8_t;
    +
    48constexpr Format format_nfcip1{0x0001};
    +
    49constexpr Format format_lite{0x0002};
    +
    50constexpr Format format_private{0x0004};
    +
    51constexpr Format format_ndef{0x0008};
    +
    52constexpr Format format_shared{0x0010};
    +
    53constexpr Format format_secure{0x0020};
    +
    54constexpr Format format_felica_plug{0x0040};
    +
    56
    +
    +
    61enum class CommandCode : uint8_t {
    +
    62 Polling,
    +
    63 RequestService = 0x02,
    +
    64 RequestResponse = 0x04,
    +
    65 ReadWithoutEncryption = 0x06,
    +
    66 WriteWithoutEncryption = 0x08,
    +
    67 RequestSystemCode = 0x0C,
    +
    68};
    +
    +
    69
    +
    +
    74enum class ResponseCode : uint8_t {
    +
    75 Polling = 0x01,
    +
    76 RequestService = 0x03,
    +
    77 RequestResponse = 0x05,
    +
    78 ReadWithoutEncryption = 0x07,
    +
    79 WriteWithoutEncryption = 0x09,
    +
    80 RequestSystemCode = 0x0D,
    +
    81};
    +
    +
    82
    +
    85constexpr uint16_t system_code_wildcard{0xFFFF};
    +
    86constexpr uint16_t system_code_ndef{0x12FC};
    +
    87constexpr uint16_t system_code_felica_secure_id{0x957A};
    +
    88constexpr uint16_t system_code_shared{0xFE00};
    +
    89constexpr uint16_t system_code_lite{0x88B4};
    +
    90constexpr uint16_t system_code_felica_plug{0xFEE1};
    +
    92
    +
    +
    97enum class RequestCode : uint8_t {
    +
    98 None,
    + + +
    101};
    +
    +
    102
    +
    107enum class TimeSlot : uint8_t { Slot1, Slot2, Slot4 = 0x03, Slot8 = 0x07, Slot16 = 0x0F };
    +
    108
    +
    +
    110inline constexpr uint8_t timeslot_to_slot(const TimeSlot ts)
    +
    111{
    +
    112 return (ts == TimeSlot::Slot16) ? 16
    +
    113 : (ts == TimeSlot::Slot8) ? 8
    +
    114 : (ts == TimeSlot::Slot4) ? 4
    +
    115 : (ts == TimeSlot::Slot2) ? 2
    +
    116 : (ts == TimeSlot::Slot1) ? 1
    +
    117 : 0; // Illegal
    +
    118}
    +
    +
    119
    +
    122// Random service
    +
    123constexpr uint16_t service_random_read_write_auth{0x0008};
    +
    124constexpr uint16_t service_random_read_write{0x0009};
    +
    125constexpr uint16_t service_random_read_auth{0x000A};
    +
    126constexpr uint16_t service_random_read{0x000B};
    +
    127// Cyclic service
    +
    128constexpr uint16_t service_cyclic_read_write_auth{0x000C};
    +
    129constexpr uint16_t service_cyclic_read_write{0x000D};
    +
    130constexpr uint16_t service_cyclic_read_auth{0x000E};
    +
    131constexpr uint16_t service_cyclic_read{0x000F};
    +
    132// Parse service
    +
    133constexpr uint16_t service_parse_direct_auth{0x0100};
    +
    134constexpr uint16_t service_parse_direct{0x0101};
    +
    135constexpr uint16_t service_parse_cacheback_auth{0x0102};
    +
    136constexpr uint16_t service_parse_cacheback{0x0103};
    +
    137constexpr uint16_t service_parse_decrement_auth{0x0104};
    +
    138constexpr uint16_t service_parse_decrement{0x0105};
    +
    139constexpr uint16_t service_parse_increment_auth{0x0106};
    +
    140constexpr uint16_t service_parse_increment{0x0107};
    +
    142
    +
    +
    147struct block_t {
    +
    148 uint8_t pad{};
    +
    149 uint8_t header{};
    +
    150 uint16_t number{};
    +
    151
    +
    152 inline constexpr block_t() : block_t(0)
    +
    153 {
    +
    154 }
    +
    155
    +
    156 // Allow implicit type conversion
    +
    157 inline constexpr block_t(const uint16_t num, const uint8_t access = 0, const uint8_t order = 0)
    +
    158 : header{(uint8_t)(((num > 0xFF) ? 0x00 : 0x80) | ((access & 0x07) << 4) | (order & 0x0F))}, number{num}
    +
    159 {
    +
    160 }
    +
    161
    +
    162 static block_t from(const uint8_t v[3])
    +
    163 {
    +
    164 block_t b{0xFFFFu};
    +
    165 if (v) {
    +
    166 b.header = v[0];
    +
    167 b.number = v[1];
    +
    168 if (b.is_3byte()) {
    +
    169 b.number |= (uint16_t)v[2] << 8;
    +
    170 }
    +
    171 }
    +
    172 return b;
    +
    173 }
    +
    174
    +
    175 inline constexpr bool is_2byte() const
    +
    176 {
    +
    177 return (header & 0x80) != 0;
    +
    178 }
    +
    179 inline constexpr bool is_3byte() const
    +
    180 {
    +
    181 return (header & 0x80) == 0;
    +
    182 }
    +
    183 inline constexpr uint8_t access_mode() const
    +
    184 {
    +
    185 return (header >> 4) & 0x07;
    +
    186 }
    +
    187 inline constexpr uint8_t order() const
    +
    188 {
    +
    189 return (header & 0x0F);
    +
    190 }
    +
    191 inline constexpr uint16_t block() const
    +
    192 {
    +
    193 return number;
    +
    194 }
    +
    195
    +
    196 inline void block(const uint16_t num)
    +
    197 {
    +
    198 number = num;
    +
    199 header = (header & ~0x80) | (num > 0xFF ? 0x00 : 0x80);
    +
    200 }
    +
    201 inline void access_mode(const uint8_t a)
    +
    202 {
    +
    203 header = (header & ~(0x07 << 4)) | ((a & 0x07) << 4);
    +
    204 }
    +
    205 inline void order(const uint8_t o)
    +
    206 {
    +
    207 header = (header & ~0x0F) | (o & 0x0F);
    +
    208 }
    +
    209
    +
    210 inline operator uint16_t() const
    +
    211 {
    +
    212 return block();
    +
    213 }
    +
    214
    +
    215 uint8_t store(uint8_t buf[3]) const
    +
    216 {
    +
    217 uint8_t idx{};
    +
    218 buf[idx++] = header;
    +
    219 buf[idx++] = number & 0xFF;
    +
    220 if (is_3byte()) {
    +
    221 buf[idx++] = number >> 8;
    +
    222 }
    +
    223 return idx;
    +
    224 }
    +
    225};
    +
    +
    226
    +
    231namespace standard {
    +
    +
    236enum class Mode : uint8_t {
    +
    237 Mode0,
    +
    238 Mode1,
    +
    239 Mode2,
    +
    240 Mode3,
    +
    241
    +
    242};
    +
    +
    243} // namespace standard
    +
    244
    +
    +
    249namespace lite {
    +
    251
    +
    254constexpr block_t S_PAD0{0x00};
    +
    255constexpr block_t S_PAD1{0x01};
    +
    256constexpr block_t S_PAD2{0x02};
    +
    257constexpr block_t S_PAD3{0x03};
    +
    258constexpr block_t S_PAD4{0x04};
    +
    259constexpr block_t S_PAD5{0x05};
    +
    260constexpr block_t S_PAD6{0x06};
    +
    261constexpr block_t S_PAD7{0x07};
    +
    262constexpr block_t S_PAD8{0x08};
    +
    263constexpr block_t S_PAD9{0x09};
    +
    264constexpr block_t S_PAD10{0x0A};
    +
    265constexpr block_t S_PAD11{0x0B};
    +
    266constexpr block_t S_PAD12{0X0C};
    +
    267constexpr block_t S_PAD13{0x0D};
    +
    268constexpr block_t REG{0x0E};
    +
    269constexpr block_t RC{0x80};
    +
    270constexpr block_t MAC{0x81};
    +
    271constexpr block_t ID{0x082};
    +
    272constexpr block_t D_ID{0x83};
    +
    273constexpr block_t SER_C{0x84};
    +
    274constexpr block_t SYS_C{0x85};
    +
    275constexpr block_t CKV{0x86};
    +
    276constexpr block_t CK{0x87};
    +
    277constexpr block_t MC{0x88};
    +
    279
    +
    280} // namespace lite
    +
    +
    281
    +
    +
    286namespace lite_s {
    +
    287
    +
    +
    292enum class Mode : uint8_t {
    +
    293 Mode00,
    +
    294 Mode01,
    +
    295 Mode10,
    +
    296 Mode11,
    +
    297};
    +
    +
    298
    +
    301constexpr block_t S_PAD0{0x00}; // Same as Lite
    +
    302constexpr block_t S_PAD1{0x01}; // Same as Lite
    +
    303constexpr block_t S_PAD2{0x02}; // Same as Lite
    +
    304constexpr block_t S_PAD3{0x03}; // Same as Lite
    +
    305constexpr block_t S_PAD4{0x04}; // Same as Lite
    +
    306constexpr block_t S_PAD5{0x05}; // Same as Lite
    +
    307constexpr block_t S_PAD6{0x06}; // Same as Lite
    +
    308constexpr block_t S_PAD7{0x07}; // Same as Lite
    +
    309constexpr block_t S_PAD8{0x08}; // Same as Lite
    +
    310constexpr block_t S_PAD9{0x09}; // Same as Lite
    +
    311constexpr block_t S_PAD10{0x0A}; // Same as Lite
    +
    312constexpr block_t S_PAD11{0x0B}; // Same as Lite
    +
    313constexpr block_t S_PAD12{0X0C}; // Same as Lite
    +
    314constexpr block_t S_PAD13{0x0D}; // Same as Lite
    +
    315constexpr block_t REG{0x0E}; // Same as Lite
    +
    316constexpr block_t RC{0x80}; // Same as Lite
    +
    317constexpr block_t MAC{0x81}; // Same as Lite
    +
    318constexpr block_t ID{0x082}; // Same as Lite
    +
    319constexpr block_t D_ID{0x83}; // Same as Lite
    +
    320constexpr block_t SER_C{0x84}; // Same as Lite
    +
    321constexpr block_t SYS_C{0x85}; // Same as Lite
    +
    322constexpr block_t CKV{0x86}; // Same as Lite
    +
    323constexpr block_t CK{0x87}; // Same as Lite
    +
    324constexpr block_t MC{0x88}; // Same as Lite
    +
    325constexpr block_t WCNT{0x90};
    +
    326constexpr block_t MAC_A{0x91};
    +
    327constexpr block_t STATE{0x92};
    +
    328constexpr block_t CRC_CHECK{0xA0};
    +
    330
    +
    331} // namespace lite_s
    +
    +
    332
    +
    334uint16_t get_maximum_block(const Type t);
    +
    336uint16_t get_number_of_user_blocks(const Type t);
    +
    +
    338inline uint16_t get_user_area_size(const Type t)
    +
    339{
    +
    340 return 16 * get_number_of_user_blocks(t);
    +
    341}
    +
    +
    343uint16_t get_first_user_block(const Type t);
    +
    345uint16_t get_last_user_block(const Type t);
    +
    +
    347inline bool is_user_block(const Type t, const uint16_t block)
    +
    348{
    +
    349 return (block >= get_first_user_block(t)) && (block <= get_last_user_block(t));
    +
    350}
    +
    +
    352uint8_t get_maximum_read_blocks(const Type t);
    +
    354uint8_t get_maximum_write_blocks(const Type t);
    +
    355
    +
    357bool is_read_only_lite(const block_t block);
    +
    359bool is_read_only_lite_s(const block_t block);
    +
    361bool can_read_lite(const block_t block);
    +
    363bool can_read_lite_s(const block_t block);
    +
    364
    +
    367constexpr uint16_t NODE_SYSTEM_KEY{0xFFFF};
    +
    368constexpr uint16_t KEY_VERIOSN_NONE{0xFFFF};
    +
    370
    +
    371constexpr uint8_t FELICA_ID_LENGTH{8};
    +
    372constexpr uint8_t FELICA_MAX_BLOCKS{8};
    +
    373constexpr uint16_t FELICA_MAX_PACKET_LENGTH_REQUEST_SERVICE{1 + 8 + 1 + 2 * 255};
    +
    374constexpr uint16_t FELICA_MAX_PACKET_LENGTH_REQUEST_RESPONSE{1 + 8 + 1};
    +
    375constexpr uint16_t FELICA_MAX_PACKET_LENGTH_REQUEST_SYSTEM_CODE{1 + 8 + 1 + 2 * 255};
    +
    376
    +
    +
    381struct PICC {
    +
    382 union {
    +
    383 uint8_t m[16]{};
    +
    384 struct {
    +
    385 uint8_t idm[FELICA_ID_LENGTH];
    +
    386 uint8_t pmm[FELICA_ID_LENGTH];
    +
    387 };
    +
    388 };
    +
    389 uint16_t request_data{};
    + + + +
    393 uint8_t _pad{}; // padding
    +
    394 uint16_t dfc_format{};
    +
    395 uint16_t emulation_sc{};
    +
    396
    +
    398 bool valid() const;
    +
    400 bool validEmulation() const;
    +
    401
    +
    +
    403 inline uint16_t userAreaSize() const
    +
    404 {
    +
    405 return valid() ? get_user_area_size(type) : 0;
    +
    406 }
    +
    +
    +
    408 inline uint16_t firstUserBlock() const
    +
    409 {
    +
    410 return valid() ? get_first_user_block(type) : 0xFFFF;
    +
    411 }
    +
    +
    +
    413 inline uint16_t lastUserBlock() const
    +
    414 {
    +
    415 return valid() ? get_last_user_block(type) : 0xFFFF;
    +
    416 }
    +
    +
    +
    418 inline bool isUserBlock(const block_t block) const
    +
    419 {
    +
    420 return is_user_block(type, block);
    +
    421 }
    +
    +
    422
    +
    +
    424 inline uint8_t maximumReadBlocks() const
    +
    425 {
    + +
    427 }
    +
    +
    +
    429 inline uint8_t maximumWriteBlocks() const
    +
    430 {
    + +
    432 }
    +
    +
    433
    +
    +
    435 inline bool checkFormat(const Format f) const
    +
    436 {
    +
    437 return (format & f) != 0;
    +
    438 }
    +
    +
    +
    440 inline bool supportsNDEF() const
    +
    441 {
    +
    442 return checkFormat(format_ndef);
    +
    443 }
    +
    +
    444
    +
    + +
    447 {
    +
    448 return get_nfc_forum_tag_type(type);
    +
    449 }
    +
    +
    450
    +
    459 bool emulate(const Type t, const uint8_t idm[FELICA_ID_LENGTH], const uint8_t pmm[FELICA_ID_LENGTH],
    +
    460 const uint16_t sc = 0);
    +
    461
    +
    463 std::string idmAsString() const;
    +
    465 std::string pmmAsString() const;
    +
    467 std::string typeAsString() const;
    +
    468};
    +
    +
    469
    +
    471bool operator==(const PICC& a, const PICC& b);
    +
    +
    473inline bool operator!=(const PICC& a, const PICC& b)
    +
    474{
    +
    475 return !(a == b);
    +
    476}
    +
    +
    477
    +
    480// constexpr uint32_t TIMEOUT_POLLING{3};
    +
    481constexpr uint32_t TIMEOUT_POLLING{5};
    +
    482constexpr uint32_t TIMEOUT_POLLING_PICC{2}; // 2 ms per PICC
    +
    483
    +
    +
    488union REG {
    +
    489 uint8_t reg[16]{};
    +
    490 struct {
    +
    491 uint8_t reg_a[4]; // RegA (LE)
    +
    492 uint8_t reg_b[4]; // RegB (LE)
    +
    493 uint8_t reg_c[8]; // RegC (BE)
    +
    494 } __attribute__((packed));
    +
    495
    +
    496 REG()
    +
    497 {
    +
    498 }
    +
    499
    +
    +
    501 inline uint32_t regA() const
    +
    502 {
    +
    503 return ((uint32_t)reg_a[3] << 24) | ((uint32_t)reg_a[2] << 16) | ((uint32_t)reg_a[1] << 8) |
    +
    504 ((uint32_t)reg_a[0]);
    +
    505 }
    +
    +
    +
    507 inline uint32_t regB() const
    +
    508 {
    +
    509 return ((uint32_t)reg_b[3] << 24) | ((uint32_t)reg_b[2] << 16) | ((uint32_t)reg_b[1] << 8) |
    +
    510 ((uint32_t)reg_b[0]);
    +
    511 }
    +
    +
    +
    513 inline uint64_t regC() const
    +
    514 {
    +
    515 return ((uint64_t)reg_c[0] << 56) | ((uint64_t)reg_c[1] << 48) | ((uint64_t)reg_c[2] << 40) |
    +
    516 ((uint64_t)reg_c[3] << 32) | ((uint64_t)reg_c[4] << 24) | ((uint64_t)reg_c[5] << 16) |
    +
    517 ((uint64_t)reg_c[6] << 8) | ((uint64_t)reg_c[7]);
    +
    518 }
    +
    +
    +
    520 void regA(const uint32_t v)
    +
    521 {
    +
    522 reg_a[0] = v & 0xFF;
    +
    523 reg_a[1] = v >> 8;
    +
    524 reg_a[2] = v >> 16;
    +
    525 reg_a[3] = v >> 24;
    +
    526 }
    +
    +
    +
    528 void regB(const uint32_t v)
    +
    529 {
    +
    530 reg_b[0] = v & 0xFF;
    +
    531 reg_b[1] = v >> 8;
    +
    532 reg_b[2] = v >> 16;
    +
    533 reg_b[3] = v >> 24;
    +
    534 }
    +
    +
    +
    536 void regC(const uint64_t v)
    +
    537 {
    +
    538 reg_c[7] = v & 0xFF;
    +
    539 reg_c[6] = v >> 8;
    +
    540 reg_c[5] = v >> 16;
    +
    541 reg_c[4] = v >> 24;
    +
    542 reg_c[3] = v >> 32;
    +
    543 reg_c[2] = v >> 40;
    +
    544 reg_c[1] = v >> 48;
    +
    545 reg_c[0] = v >> 56;
    +
    546 }
    +
    +
    547
    +
    548 inline operator const uint8_t*() const
    +
    549 {
    +
    550 return reg;
    +
    551 }
    +
    552 inline operator uint8_t*()
    +
    553 {
    +
    554 return reg;
    +
    555 }
    +
    556} __attribute__((packed));
    +
    +
    557
    +
    +
    564inline bool can_write_reg(const REG& o, const REG& n)
    +
    565{
    +
    566 return (o.regA() >= n.regA()) && (o.regB() >= n.regB());
    +
    567}
    +
    +
    568
    +
    571
    +
    578bool make_session_key(uint8_t sk[16], const uint8_t ck[16], const uint8_t rc[16]);
    +
    579
    +
    592bool generate_mac(uint8_t mac[8], const uint8_t* plain, uint32_t plain_len, const uint8_t* block_data,
    +
    593 uint32_t block_len, const uint8_t sk1[8], const uint8_t sk2[8], const uint8_t rc[16]);
    +
    594
    +
    602bool make_personalized_card_key_lite_s(uint8_t card_key[16], const uint8_t master_key[24], const uint8_t id_block[16]);
    +
    603
    +
    605
    +
    606} // namespace f
    +
    607} // namespace nfc
    +
    608} // namespace m5
    +
    609#endif
    +
    NFC-A definitions.
    +
    NFC-B definitions.
    +
    NFC-F definitions.
    +
    Mode
    Mode for LiteS.
    Definition nfcf.hpp:292
    +
    @ Mode11
    External authentication complete, polling response not possible.
    +
    @ Mode10
    External authentication complete, polling response possible.
    +
    @ Mode00
    External authentication incomplete, polling response possible.
    +
    @ Mode01
    External authentication incomplete, polling response not possible.
    +
    Top level namespace of M5stack.
    +
    NFC related definitions.
    +
    For FeliCa Standard.
    +
    NFC-V definitions.
    +
    NFC definitions.
    +
    NFCForumTag
    NFC Forum Tag Type.
    Definition nfc.hpp:39
    +
    uint16_t get_number_of_user_blocks(const Type t)
    Gets the number of user blocks.
    Definition nfca.cpp:327
    +
    uint8_t get_maximum_write_blocks(const Type t)
    Maximum number of blocks that can be write simultaneously.
    Definition nfcf.cpp:112
    +
    uint16_t get_maximum_block(const Type t)
    Gets the maximum block.
    Definition nfcf.cpp:80
    +
    uint8_t get_maximum_read_blocks(const Type t)
    Maximum number of blocks that can be read simultaneously.
    Definition nfcf.cpp:106
    +
    constexpr uint32_t TIMEOUT_POLLING
    Definition nfcf.hpp:481
    +
    TimeSlot
    Timeslot value for Polling.
    Definition nfcf.hpp:107
    +
    constexpr uint16_t service_parse_cacheback_auth
    Random,Read/write,Authentication required (S)
    Definition nfcf.hpp:135
    +
    constexpr uint16_t service_random_read_write
    Random,Read/write,No authentication required (S, L, LS)
    Definition nfcf.hpp:124
    +
    constexpr Format format_private
    Has private area.
    Definition nfcf.hpp:50
    +
    constexpr uint16_t system_code_shared
    Shared area.
    Definition nfcf.hpp:88
    +
    constexpr Format format_shared
    Has shared area.
    Definition nfcf.hpp:52
    +
    constexpr uint16_t service_parse_cacheback
    Random,Read/write,Authentication required (S)
    Definition nfcf.hpp:136
    +
    constexpr uint16_t service_parse_decrement_auth
    Random,Read/write,Authentication required (S)
    Definition nfcf.hpp:137
    +
    ResponseCode
    NFC-F Response code.
    Definition nfcf.hpp:74
    +
    constexpr uint16_t service_random_read_write_auth
    Random,Read/write,Authentication required (S)
    Definition nfcf.hpp:123
    +
    constexpr uint16_t system_code_felica_plug
    FeliCa Plug.
    Definition nfcf.hpp:90
    +
    constexpr uint32_t TIMEOUT_POLLING_PICC
    Definition nfcf.hpp:482
    +
    constexpr uint16_t service_parse_increment_auth
    Random,Read/write,Authentication required (S)
    Definition nfcf.hpp:139
    +
    constexpr uint16_t service_random_read_auth
    Random,Read only,No authentication required (S)
    Definition nfcf.hpp:125
    +
    CommandCode
    NFC-F Command code.
    Definition nfcf.hpp:61
    +
    bool can_write_reg(const REG &o, const REG &n)
    Definition nfcf.hpp:564
    +
    Mode
    Mode for Standard.
    Definition nfcf.hpp:236
    +
    @ Mode2
    After mutual authentication is complete (Auth2)
    +
    @ Mode0
    Power was supplied to the PICC.
    +
    @ Mode1
    Certification for PICC has been completed (Auth1)
    +
    @ Mode3
    After registering area services or executing system partitioning.
    +
    Type
    Type of the PICC.
    Definition nfcf.hpp:30
    + +
    @ FeliCaLiteS
    Lite-S.
    + +
    @ FeliCaStandard
    Standard.
    +
    constexpr Format format_felica_plug
    FeliCa Plug.
    Definition nfcf.hpp:54
    +
    constexpr uint16_t service_cyclic_read_write_auth
    Cyclic,Read/write,Authentication required(S)
    Definition nfcf.hpp:128
    +
    constexpr uint16_t service_parse_direct_auth
    Random,Read/write,Authentication required (S)
    Definition nfcf.hpp:133
    +
    constexpr uint16_t KEY_VERIOSN_NONE
    No key version exists.
    Definition nfcf.hpp:368
    +
    constexpr uint8_t timeslot_to_slot(const TimeSlot ts)
    TimeSlot to the number of the slot.
    Definition nfcf.hpp:110
    +
    constexpr uint16_t service_parse_direct
    Random,Read/write,Authentication required (S)
    Definition nfcf.hpp:134
    +
    constexpr Format format_secure
    FeliCa Secure ID.
    Definition nfcf.hpp:53
    +
    constexpr uint16_t service_random_read
    Random,Read only,No authentication required (S,LS)
    Definition nfcf.hpp:126
    +
    constexpr Format format_nfcip1
    Support ISO/IEC18092.
    Definition nfcf.hpp:48
    +
    RequestCode
    Request code for Polling.
    Definition nfcf.hpp:97
    +
    @ SystemCode
    Request system code.
    +
    @ CommunicationPerformance
    Request communication performance.
    +
    uint8_t Format
    Support ISO/IEC18092.
    Definition nfcf.hpp:47
    +
    constexpr uint16_t system_code_ndef
    NDEF.
    Definition nfcf.hpp:86
    +
    constexpr uint16_t service_cyclic_read_auth
    Cyclic,Read only,Authentication required(S)
    Definition nfcf.hpp:130
    +
    constexpr Format format_ndef
    Support NDEF.
    Definition nfcf.hpp:51
    +
    constexpr uint16_t service_cyclic_read_write
    Cyclic,Read/write,No athentication required(S)
    Definition nfcf.hpp:129
    +
    constexpr uint16_t system_code_felica_secure_id
    FeliCa secure ID.
    Definition nfcf.hpp:87
    +
    constexpr uint16_t service_cyclic_read
    Cyclic,Read only,No authentication required(S)
    Definition nfcf.hpp:131
    +
    constexpr uint16_t service_parse_decrement
    Random,Read/write,Authentication required (S)
    Definition nfcf.hpp:138
    +
    constexpr uint16_t system_code_wildcard
    Wildcard.
    Definition nfcf.hpp:85
    +
    constexpr uint16_t NODE_SYSTEM_KEY
    Retrieving the System Key Version.
    Definition nfcf.hpp:367
    +
    constexpr uint16_t system_code_lite
    Lite, Lite-S.
    Definition nfcf.hpp:89
    +
    constexpr uint16_t service_parse_increment
    Random,Read/write,Authentication required (S)
    Definition nfcf.hpp:140
    +
    constexpr Format format_lite
    Lite or Lite-S.
    Definition nfcf.hpp:49
    +
    PICC information for NFC-F.
    Definition nfcf.hpp:381
    +
    NFCForumTag nfcForumTagType() const
    NFC ForumTag.
    Definition nfcf.hpp:446
    +
    uint16_t userAreaSize() const
    Total user area size.
    Definition nfcf.hpp:403
    +
    std::string typeAsString() const
    Gets the type string.
    Definition nfcf.cpp:333
    +
    bool supportsNDEF() const
    Supports NDEF?
    Definition nfcf.hpp:440
    +
    uint16_t dfc_format
    DFC format ID:0x82[8,9] BE if format include DFC.
    Definition nfcf.hpp:394
    +
    bool validEmulation() const
    Valid for emulation?
    Definition nfcf.cpp:317
    +
    Format format
    Format type group bits.
    Definition nfcf.hpp:392
    +
    uint16_t lastUserBlock() const
    Gets the last user block.
    Definition nfcf.hpp:413
    +
    uint8_t idm[FELICA_ID_LENGTH]
    Manufacture ID.
    Definition nfcf.hpp:385
    +
    RequestCode request_code
    Tyepe of the request_data.
    Definition nfcf.hpp:390
    +
    std::string pmmAsString() const
    Gets the PMm string.
    Definition nfcf.cpp:328
    +
    bool checkFormat(const Format f) const
    Check format.
    Definition nfcf.hpp:435
    +
    uint8_t pmm[FELICA_ID_LENGTH]
    Manufacture Parameter.
    Definition nfcf.hpp:386
    +
    uint8_t maximumWriteBlocks() const
    Maximum number of blocks that can be write simultaneously.
    Definition nfcf.hpp:429
    +
    bool emulate(const Type t, const uint8_t idm[FELICA_ID_LENGTH], const uint8_t pmm[FELICA_ID_LENGTH], const uint16_t sc=0)
    Emulation settings.
    Definition nfcf.cpp:339
    +
    uint16_t request_data
    Any request data if exists.
    Definition nfcf.hpp:389
    +
    uint16_t firstUserBlock() const
    Gets the first user block.
    Definition nfcf.hpp:408
    +
    Type type
    PICC Type.
    Definition nfcf.hpp:391
    +
    uint8_t maximumReadBlocks() const
    Maximum number of blocks that can be read simultaneously.
    Definition nfcf.hpp:424
    +
    bool isUserBlock(const block_t block) const
    Is user block?
    Definition nfcf.hpp:418
    +
    std::string idmAsString() const
    Gets the IDm string.
    Definition nfcf.cpp:323
    +
    uint16_t emulation_sc
    System code for emulation.
    Definition nfcf.hpp:395
    +
    bool valid() const
    Valid for detection?
    Definition nfcf.cpp:310
    +
    Block list element.
    Definition nfcf.hpp:147
    +
    uint16_t number
    block number (using low byte if 2 byte mode)
    Definition nfcf.hpp:150
    +
    uint8_t header
    size:1 access:3 order:4
    Definition nfcf.hpp:149
    +
    Subtract Register Block Data.
    Definition nfcf.hpp:488
    +
    uint64_t regC() const
    Gets the RegC.
    Definition nfcf.hpp:513
    +
    void regC(const uint64_t v)
    Set the RegC.
    Definition nfcf.hpp:536
    +
    void regB(const uint32_t v)
    Set the RegB.
    Definition nfcf.hpp:528
    +
    void regA(const uint32_t v)
    Set the RegA.
    Definition nfcf.hpp:520
    +
    uint32_t regA() const
    Gets the RegA.
    Definition nfcf.hpp:501
    +
    uint32_t regB() const
    Gets the RegB.
    Definition nfcf.hpp:507
    +
    +
    + + + + diff --git a/nfcv_8hpp.html b/nfcv_8hpp.html new file mode 100644 index 0000000..2a1a874 --- /dev/null +++ b/nfcv_8hpp.html @@ -0,0 +1,529 @@ + + + + + + + +M5Unit-NFC: src/nfc/v/nfcv.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nfcv.hpp File Reference
    +
    +
    + +

    NFC-V definitions. +More...

    +
    #include "nfc/nfc.hpp"
    +#include <cstdint>
    +#include <string>
    +#include <cstring>
    +#include <vector>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    struct  m5::nfc::v::PICC
     PICC for NFC-V. More...
     
    + + + + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    namespace  v
     NFC-V definitions.
     
    + + + + + + + + + +

    +Enumerations

    enum class  m5::nfc::v::Type : uint8_t {
    +  Unknown +, NXP_ICODE_SLI +, NXP_ICODE_SLIX +, NXP_ICODE_SLIX_2 +,
    +  NXP +, TI_TAGIT_2048 +, TI_TAGIT_HF_I +, TI_TAGIT_HF_I_Plus +,
    +  TI_TAGIT_HF_I_Pro +, TI +, ST_LRI +, ST_ST25V +,
    +  ST_ST25DV +, ST +, Fujitsu_FRAM +, Fujitsu +,
    +  Unclassified +
    + }
     Type of the PICC. More...
     
    enum class  m5::nfc::v::ModulationMode : uint8_t { OneOf4 +, OneOf256 + }
     
    enum class  m5::nfc::v::Command : uint8_t {
    +  Inventory = 0x01 +, StayQuiet = 0x02 +, Select = 0x25 +, ResetToReady = 0x26 +,
    +  GetSystemInformaion = 0x2B +, ExtendedGetSystemInfo = 0x3B +, ReadSingleBlock = 0x20 +, ExtendedReadSingleBlock = 0x30 +,
    +  WriteSingleBlock = 0x21 +, ExtendedWriteSingleBlock = 0x31 +
    + }
     ISO/IEC 15693 Command. More...
     
    + + + + + + + + + + + + + + + + + + + +

    +Functions

    +m5::nfc::NFCForumTag m5::nfc::v::get_nfc_forum_tag_type (const Type t)
     Get NFC Forum Tag Type from PICC type.
     
    +bool m5::nfc::v::operator== (const PICC &a, const PICC &b)
     Equal?
     
    +bool m5::nfc::v::operator!= (const PICC &a, const PICC &b)
     Not equal?
     
    Type m5::nfc::v::identify_type (const PICC &picc)
     Identify the type from Manufacturer Code, IC Identifier, IC Reference.
     
    uint32_t m5::nfc::v::encode_VCD (std::vector< uint8_t > &out, const ModulationMode mode, const uint8_t *buffer, const uint32_t length, const bool high_rate=true, const bool add_crc=true)
     Encode to VCD frame.
     
    bool m5::nfc::v::decode_VICC (std::vector< uint8_t > &out, const uint8_t *buffer, const uint32_t length, const uint32_t ignore_bits=16)
     Decode from VICC frame.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    Request flags
    +const uint8_t m5::nfc::v::option_flag {0x40}
     
    +const uint8_t m5::nfc::v::address_flag {0x20}
     
    +const uint8_t m5::nfc::v::select_flag {0x10}
     
    +const uint8_t m5::nfc::v::inventory_flag {0x04}
     
    +const uint8_t m5::nfc::v::data_rate_flag {0x02}
     
    +const uint8_t m5::nfc::v::subcarrior_flag {0x01}
     
    +const uint8_t m5::nfc::v::nb_slots_flag {0x20}
     
    +const uint8_t m5::nfc::v::AFI_flag {0x10}
     
    +constexpr uint8_t m5::nfc::v::MAX_BLOCK_SIZE {32}
     
    Timeout
    +constexpr uint32_t m5::nfc::v::TIMEOUT_INVENTORY {16}
     
    +constexpr uint32_t m5::nfc::v::TIMEOUT_STAY_QUIET {16}
     
    +constexpr uint32_t m5::nfc::v::TIMEOUT_SELECT {16}
     
    +constexpr uint32_t m5::nfc::v::TIMEOUT_RESET_TO_READY {16}
     
    +constexpr uint32_t m5::nfc::v::TIMEOUT_GET_SYSTEM_INFORMATION {20}
     
    +constexpr uint32_t m5::nfc::v::TIMEOUT_READ_SINGLE_BLOCK {20}
     
    +constexpr uint32_t m5::nfc::v::TIMEOUT_WRITE_SINGLE_BLOCK {30}
     
    +

    Detailed Description

    +

    NFC-V definitions.

    +

    Enumeration Type Documentation

    + +

    ◆ Command

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::v::Command : uint8_t
    +
    +strong
    +
    + +

    ISO/IEC 15693 Command.

    + + + + + + + + + + + +
    Enumerator
    Inventory 

    IVENTORY.

    +
    StayQuiet 

    STAY QUIET.

    +
    Select 

    SELECT.

    +
    ResetToReady 

    RESET TO READY.

    +
    GetSystemInformaion 

    GET SYSTEM INFORMATION.

    +
    ExtendedGetSystemInfo 

    EXTENDED GET SYSTEM INFORMATION.

    +
    ReadSingleBlock 

    READ SINGLE BLOCK.

    +
    ExtendedReadSingleBlock 

    EXTENDED READ SINGLE BLOCK.

    +
    WriteSingleBlock 

    WRITE SINGLE BLOCK.

    +
    ExtendedWriteSingleBlock 

    EXTENDED WRITE SINGLE BLOCK.

    +
    + +
    +
    + +

    ◆ ModulationMode

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::v::ModulationMode : uint8_t
    +
    +strong
    +
    + + + +
    Enumerator
    OneOf4 

    1 out of 4 pulse-position modulation

    +
    OneOf256 

    1 out of 256 pulse-position modulation

    +
    + +
    +
    + +

    ◆ Type

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::v::Type : uint8_t
    +
    +strong
    +
    + +

    Type of the PICC.

    + + + + + + + + + + + + + + + + + + +
    Enumerator
    Unknown 

    Unknown type.

    +
    NXP_ICODE_SLI 

    ICODE SLI.

    +
    NXP_ICODE_SLIX 

    ICODE SLIX.

    +
    NXP_ICODE_SLIX_2 

    ICODE SLIX2.

    +
    NXP 

    NXP (Unclassified)

    +
    TI_TAGIT_2048 

    Tag-it 2048.

    +
    TI_TAGIT_HF_I 

    Tag-it HF-I Standard.

    +
    TI_TAGIT_HF_I_Plus 

    Tag-it HF-I Plus.

    +
    TI_TAGIT_HF_I_Pro 

    Tag-it HF-I Pro.

    +
    TI 

    TI (Unclassified)

    +
    ST_LRI 

    ST LRI.

    +
    ST_ST25V 

    ST25V.

    +
    ST_ST25DV 

    ST25DV.

    +
    ST 

    ST (Unclassified)

    +
    Fujitsu_FRAM 

    FRAM.

    +
    Fujitsu 

    Fujitsu (Unclassified)

    +
    Unclassified 

    Unclassified.

    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ decode_VICC()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    bool m5::nfc::v::decode_VICC (std::vector< uint8_t > & out,
    const uint8_t * buffer,
    const uint32_t length,
    const uint32_t ignore_bits = 16 )
    +
    + +

    Decode from VICC frame.

    +
    Parameters
    + + + + +
    outOutput buffer
    bufferInput buffer
    lengthInput buffer length
    +
    +
    +
    Returns
    True if successful
    + +
    +
    + +

    ◆ encode_VCD()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    uint32_t m5::nfc::v::encode_VCD (std::vector< uint8_t > & out,
    const ModulationMode mode,
    const uint8_t * buffer,
    const uint32_t length,
    const bool high_rate = true,
    const bool add_crc = true )
    +
    + +

    Encode to VCD frame.

    +
    Parameters
    + + + + + + + +
    outOutput buffer
    modeModulationMode
    bufferInput buffer (allow nullptr )
    lengthInput buffer length (allow 0)
    high_rateHigh data rate if true
    add_crcAppend CRC16 if true
    +
    +
    +
    Returns
    Encoded size in bytes, or 0 on error
    +
    Note
    Make EOF only if buffer is nullptr and length is 0
    + +
    +
    + +

    ◆ identify_type()

    + +
    +
    + + + + + + + +
    Type m5::nfc::v::identify_type (const PICC & picc)
    +
    + +

    Identify the type from Manufacturer Code, IC Identifier, IC Reference.

    +
    Returns
    Type
    +
    Warning
    Not all tags can be identified
    +
    +If identification is impossible, Unclassified is returned
    + +
    +
    +
    +
    + + + + diff --git a/nfcv_8hpp.js b/nfcv_8hpp.js new file mode 100644 index 0000000..578e0d7 --- /dev/null +++ b/nfcv_8hpp.js @@ -0,0 +1,42 @@ +var nfcv_8hpp = +[ + [ "m5::nfc::v::PICC", "structm5_1_1nfc_1_1v_1_1_p_i_c_c.html", "structm5_1_1nfc_1_1v_1_1_p_i_c_c" ], + [ "Command", "nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665", [ + [ "Inventory", "nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665a4d604dd8f008145471dc845683399189", null ], + [ "StayQuiet", "nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665ae4408f60e028773308e82551836d726b", null ], + [ "Select", "nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665ae0626222614bdee31951d84c64e5e9ff", null ], + [ "ResetToReady", "nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665aaa50b9e7396c2397b860d5c1a96b68a0", null ], + [ "GetSystemInformaion", "nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665a3a52b5070d76c0420ebb20c27f0245c3", null ], + [ "ExtendedGetSystemInfo", "nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665a467655381b250e323dc4602a34042aec", null ], + [ "ReadSingleBlock", "nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665ad69a55353d7d8baf25db134591f4dd19", null ], + [ "ExtendedReadSingleBlock", "nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665a0be6a3722fb223e6b44152b59e8ce890", null ], + [ "WriteSingleBlock", "nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665aec468a6afe871d6c4210e8573e0728f9", null ], + [ "ExtendedWriteSingleBlock", "nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665a9caeb24c8f5e7d8cdc4304d5d72b18b2", null ] + ] ], + [ "ModulationMode", "nfcv_8hpp.html#aba1eff44affc1b08f4f4792a10d50240", [ + [ "OneOf4", "nfcv_8hpp.html#aba1eff44affc1b08f4f4792a10d50240a78e9406b6f730c444a589f91bfe09613", null ], + [ "OneOf256", "nfcv_8hpp.html#aba1eff44affc1b08f4f4792a10d50240a170b807ee3b24e7ed1bd9268de10c2e4", null ] + ] ], + [ "Type", "nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0a", [ + [ "Unknown", "nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa88183b946cc5f0e8c96b2e66e1c74a7e", null ], + [ "NXP_ICODE_SLI", "nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa207aaada4da22517a2da85561d2864b9", null ], + [ "NXP_ICODE_SLIX", "nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aad77a0b9d83149e70f1568aa3410659ee", null ], + [ "NXP_ICODE_SLIX_2", "nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa2f22e309e6dd43a737c096587fe73323", null ], + [ "NXP", "nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aaab174cf654efc28e4b7c7adb1b57e5fa", null ], + [ "TI_TAGIT_2048", "nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa1b673238aff76b2058bcb24791fac1c2", null ], + [ "TI_TAGIT_HF_I", "nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa24465f610f082f61b77474c8f0f2984c", null ], + [ "TI_TAGIT_HF_I_Plus", "nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa6c94cea8874fa9beb4542eafaa23ff7b", null ], + [ "TI_TAGIT_HF_I_Pro", "nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa675cf1945d721a33d53bff5abbb977c3", null ], + [ "TI", "nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aaa316c795d70a350e00b1ac22da664e38", null ], + [ "ST_LRI", "nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aaa1e8ead2187c115f97614e937a890f33", null ], + [ "ST_ST25V", "nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aaf1a7a7fa1a71d905f7885cd087b08ad5", null ], + [ "ST_ST25DV", "nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa1785759bfa19c1b8ab3430fe2704521d", null ], + [ "ST", "nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aaec8e57d71f07e31203035548b79d03c8", null ], + [ "Fujitsu_FRAM", "nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa83aa9cd674ce75d50214b184503787d6", null ], + [ "Fujitsu", "nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa053f42c6bae3432cae270ea978f7e638", null ], + [ "Unclassified", "nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa3336022d50ad5765c5db6964d942f5e1", null ] + ] ], + [ "get_nfc_forum_tag_type", "nfcv_8hpp.html#a49b9842ab7f389211c7cc9299cedc40b", null ], + [ "operator!=", "nfcv_8hpp.html#a3aac55a9610fa6bc574cb7d3d5dce671", null ], + [ "operator==", "nfcv_8hpp.html#a04b09eb24f7e2bab1244be40dbee3304", null ] +]; \ No newline at end of file diff --git a/nfcv_8hpp_source.html b/nfcv_8hpp_source.html new file mode 100644 index 0000000..0e38885 --- /dev/null +++ b/nfcv_8hpp_source.html @@ -0,0 +1,344 @@ + + + + + + + +M5Unit-NFC: src/nfc/v/nfcv.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    nfcv.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    10#ifndef M5_UNIT_UNIFIED_NFC_NFC_V_NFCV_HPP
    +
    11#define M5_UNIT_UNIFIED_NFC_NFC_V_NFCV_HPP
    +
    12
    +
    13#include "nfc/nfc.hpp"
    +
    14#include <cstdint>
    +
    15#include <string>
    +
    16#include <cstring>
    +
    17#include <vector>
    +
    18
    +
    19namespace m5 {
    +
    20namespace nfc {
    +
    25namespace v {
    +
    26
    +
    +
    31enum class Type : uint8_t {
    +
    32 Unknown,
    +
    33
    + + + +
    37 NXP,
    +
    38
    + + + + +
    43 TI,
    +
    44
    +
    45 ST_LRI,
    +
    46 ST_ST25V,
    +
    47 ST_ST25DV,
    +
    48 ST,
    +
    49
    + +
    51 Fujitsu,
    +
    52
    +
    53 Unclassified,
    +
    54};
    +
    +
    55
    +
    58const uint8_t option_flag{0x40};
    +
    59const uint8_t address_flag{0x20};
    +
    60const uint8_t select_flag{0x10};
    +
    61const uint8_t inventory_flag{0x04};
    +
    62const uint8_t data_rate_flag{0x02};
    +
    63const uint8_t subcarrior_flag{0x01};
    +
    64const uint8_t nb_slots_flag{0x20}; // if inventory_flag is 1
    +
    65const uint8_t AFI_flag{0x10}; // // if inventory_flag is 1
    +
    66constexpr uint8_t MAX_BLOCK_SIZE{32};
    +
    68
    +
    +
    73enum class ModulationMode : uint8_t {
    +
    74 OneOf4,
    +
    75 OneOf256,
    +
    76};
    +
    +
    77
    +
    +
    79inline m5::nfc::NFCForumTag get_nfc_forum_tag_type(const Type t)
    +
    80{
    +
    81 return (t != Type::Unknown) ? NFCForumTag::Type5 : NFCForumTag::None;
    +
    82}
    +
    +
    83
    +
    +
    88struct PICC {
    +
    89 uint8_t uid[8]{};
    + +
    91 uint8_t dsfID{};
    +
    92 uint8_t afi{};
    +
    93 uint8_t icRef{};
    +
    94 uint8_t block_size{};
    +
    95 uint8_t _pad{}; //
    +
    96 uint16_t blocks{};
    +
    97
    +
    98 inline bool valid() const
    +
    99 {
    +
    100 return (uid[0] == 0xE0) && blocks && block_size;
    +
    101 }
    +
    102 inline uint8_t manufacturerCode() const
    +
    103 {
    +
    104 return valid() ? uid[1] : 0xFF;
    +
    105 }
    +
    106 inline uint8_t icIdentifier() const
    +
    107 {
    +
    108 return valid() ? uid[2] : 0x00;
    +
    109 }
    +
    110 inline uint8_t icReference() const
    +
    111 {
    +
    112 return valid() ? icRef : 0xFF;
    +
    113 }
    +
    114
    +
    115 //
    +
    116 inline uint16_t totalSize() const
    +
    117 {
    +
    118 return blocks * block_size;
    +
    119 }
    +
    +
    121 inline uint16_t userAreaSize() const
    +
    122 {
    +
    123 return totalSize(); // Same as totalSize
    +
    124 }
    +
    +
    + +
    127 {
    +
    128 return get_nfc_forum_tag_type(type);
    +
    129 }
    +
    +
    130
    +
    +
    132 inline uint16_t firstUserBlock() const
    +
    133 {
    +
    134 return valid() ? 0 : 0xFFFF;
    +
    135 }
    +
    +
    +
    137 inline uint16_t lastUserBlock() const
    +
    138 {
    +
    139 return valid() ? (blocks - 1) : 0xFFFF;
    +
    140 }
    +
    +
    141
    +
    143 std::string uidAsString() const;
    +
    145 std::string typeAsString() const;
    +
    146};
    +
    +
    147
    +
    +
    149inline bool operator==(const PICC& a, const PICC& b)
    +
    150{
    +
    151 return std::memcmp(a.uid, b.uid, 8) == 0;
    +
    152}
    +
    +
    +
    154inline bool operator!=(const PICC& a, const PICC& b)
    +
    155{
    +
    156 return !(a == b);
    +
    157}
    +
    +
    158
    +
    165Type identify_type(const PICC& picc);
    +
    166
    +
    +
    171enum class Command : uint8_t {
    +
    172 Inventory = 0x01,
    +
    173 StayQuiet = 0x02,
    +
    174 Select = 0x25,
    +
    175 ResetToReady = 0x26,
    +
    176 GetSystemInformaion = 0x2B,
    +
    177 ExtendedGetSystemInfo = 0x3B,
    +
    178 ReadSingleBlock = 0x20,
    + +
    180 WriteSingleBlock = 0x21,
    + +
    182};
    +
    +
    183
    +
    186constexpr uint32_t TIMEOUT_INVENTORY{16};
    +
    187constexpr uint32_t TIMEOUT_STAY_QUIET{16};
    +
    188constexpr uint32_t TIMEOUT_SELECT{16};
    +
    189constexpr uint32_t TIMEOUT_RESET_TO_READY{16};
    +
    190constexpr uint32_t TIMEOUT_GET_SYSTEM_INFORMATION{20};
    +
    191constexpr uint32_t TIMEOUT_READ_SINGLE_BLOCK{20};
    +
    192constexpr uint32_t TIMEOUT_WRITE_SINGLE_BLOCK{30};
    +
    194
    +
    206uint32_t encode_VCD(std::vector<uint8_t>& out, const ModulationMode mode, const uint8_t* buffer, const uint32_t length,
    +
    207 const bool high_rate = true, const bool add_crc = true);
    +
    208
    +
    216bool decode_VICC(std::vector<uint8_t>& out, const uint8_t* buffer, const uint32_t length,
    +
    217 const uint32_t ignore_bits = 16);
    +
    218
    +
    219} // namespace v
    +
    220} // namespace nfc
    +
    221} // namespace m5
    +
    222#endif
    + +
    @ NXP
    NXP Semiconductors.
    +
    NFC-A definitions.
    +
    NFC-B definitions.
    +
    Top level namespace of M5stack.
    +
    NFC related definitions.
    +
    NFC-V definitions.
    +
    NFC definitions.
    +
    NFCForumTag
    NFC Forum Tag Type.
    Definition nfc.hpp:39
    +
    Type
    Type of the PICC.
    Definition nfcv.hpp:31
    +
    @ ST_ST25DV
    ST25DV.
    +
    @ TI_TAGIT_2048
    Tag-it 2048.
    +
    @ NXP_ICODE_SLI
    ICODE SLI.
    +
    @ TI_TAGIT_HF_I
    Tag-it HF-I Standard.
    +
    @ NXP_ICODE_SLIX_2
    ICODE SLIX2.
    +
    @ TI_TAGIT_HF_I_Pro
    Tag-it HF-I Pro.
    +
    @ TI_TAGIT_HF_I_Plus
    Tag-it HF-I Plus.
    + + +
    @ TI
    TI (Unclassified)
    +
    @ NXP_ICODE_SLIX
    ICODE SLIX.
    +
    @ ST
    ST (Unclassified)
    + +
    Command
    ISO/IEC 15693 Command.
    Definition nfcv.hpp:171
    +
    @ ExtendedReadSingleBlock
    EXTENDED READ SINGLE BLOCK.
    +
    @ GetSystemInformaion
    GET SYSTEM INFORMATION.
    +
    @ ExtendedGetSystemInfo
    EXTENDED GET SYSTEM INFORMATION.
    +
    @ Inventory
    IVENTORY.
    +
    @ ExtendedWriteSingleBlock
    EXTENDED WRITE SINGLE BLOCK.
    +
    @ ResetToReady
    RESET TO READY.
    +
    @ ReadSingleBlock
    READ SINGLE BLOCK.
    + +
    @ StayQuiet
    STAY QUIET.
    +
    @ WriteSingleBlock
    WRITE SINGLE BLOCK.
    +
    ModulationMode
    Definition nfcv.hpp:73
    +
    @ OneOf256
    1 out of 256 pulse-position modulation
    +
    @ OneOf4
    1 out of 4 pulse-position modulation
    +
    PICC for NFC-V.
    Definition nfcv.hpp:88
    +
    std::string uidAsString() const
    Gets the uid string.
    Definition nfcv.cpp:375
    +
    uint16_t userAreaSize() const
    Total user area size.
    Definition nfcv.hpp:121
    +
    Type type
    Type.
    Definition nfcv.hpp:90
    +
    uint16_t lastUserBlock() const
    Gets the last user block.
    Definition nfcv.hpp:137
    +
    uint8_t afi
    Application Family Identifier.
    Definition nfcv.hpp:92
    +
    NFCForumTag nfcForumTagType() const
    NFC ForumTag.
    Definition nfcv.hpp:126
    +
    uint8_t uid[8]
    UID (MSB-first)
    Definition nfcv.hpp:89
    +
    uint16_t blocks
    Number of blocks.
    Definition nfcv.hpp:96
    +
    std::string typeAsString() const
    Gets the type string.
    Definition nfcv.cpp:385
    +
    uint16_t firstUserBlock() const
    Gets the first user block.
    Definition nfcv.hpp:132
    +
    uint8_t dsfID
    Data Storage Format Identifier.
    Definition nfcv.hpp:91
    +
    uint8_t block_size
    Byte size of 1 block.
    Definition nfcv.hpp:94
    +
    uint8_t icRef
    IC Reference.
    Definition nfcv.hpp:93
    +
    +
    + + + + diff --git a/open.png b/open.png new file mode 100644 index 0000000..30f75c7 Binary files /dev/null and b/open.png differ diff --git a/pages.html b/pages.html new file mode 100644 index 0000000..900eaf5 --- /dev/null +++ b/pages.html @@ -0,0 +1,116 @@ + + + + + + + +M5Unit-NFC: Related Pages + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    + + +
     Todo List
    +
    +
    +
    + + + + diff --git a/plus.svg b/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/plusd.svg b/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/resize.js b/resize.js new file mode 100644 index 0000000..7d8cdc7 --- /dev/null +++ b/resize.js @@ -0,0 +1,145 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function initResizable(treeview) { + let sidenav,navtree,content,header,footer,barWidth=6; + const RESIZE_COOKIE_NAME = ''+'width'; + + function resizeWidth() { + const sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + function restoreWidth(navWidth) { + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + } + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight(treeview) { + const headerHeight = header.outerHeight(); + const windowHeight = $(window).height(); + let contentHeight; + if (treeview) + { + const footerHeight = footer.outerHeight(); + let navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + } + else + { + contentHeight = windowHeight - headerHeight; + } + content.css({height:contentHeight + "px"}); + if (location.hash.slice(1)) { + (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); + } + } + + function collapseExpand() { + let newWidth; + if (sidenav.width()>0) { + newWidth=0; + } else { + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + const sidenavWidth = $(sidenav).outerWidth(); + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + header = $("#top"); + content = $("#doc-content"); + footer = $("#nav-path"); + sidenav = $("#side-nav"); + if (!treeview) { +// title = $("#titlearea"); +// titleH = $(title).height(); +// let animating = false; +// content.on("scroll", function() { +// slideOpts = { duration: 200, +// step: function() { +// contentHeight = $(window).height() - header.outerHeight(); +// content.css({ height : contentHeight + "px" }); +// }, +// done: function() { animating=false; } +// }; +// if (content.scrollTop()>titleH && title.css('display')!='none' && !animating) { +// title.slideUp(slideOpts); +// animating=true; +// } else if (content.scrollTop()<=titleH && title.css('display')=='none' && !animating) { +// title.slideDown(slideOpts); +// animating=true; +// } +// }); + } else { + navtree = $("#nav-tree"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + } + $(window).resize(function() { resizeHeight(treeview); }); + if (treeview) + { + const device = navigator.userAgent.toLowerCase(); + const touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + if (width) { restoreWidth(width); } else { resizeWidth(); } + } + resizeHeight(treeview); + const url = location.href; + const i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + const _preventDefault = function(evt) { evt.preventDefault(); }; + if (treeview) + { + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + } + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 0000000..46b725b --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,52 @@ +var searchData= +[ + ['a_0',['A',['../nfc_8hpp.html#a5e5f58799f82b1611c0309f953cc2c6fa7fc56270e7a70fa81a5935b72eacbe29',1,'m5::nfc']]], + ['a_1',['a',['../namespacea.html',1,'']]], + ['a3logics_2',['A3logics',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a0f14f0f3b8e7ce6704498270bd16cc4c',1,'m5::nfc']]], + ['access_5fdenied_3',['access_denied',['../mifare_8hpp.html#a667835d11b4fe871db88689e34d99c50',1,'m5::nfc::a::mifare::desfire']]], + ['access_5ffree_4',['ACCESS_FREE',['../ndef_8hpp.html#abcdf0294fcb1da87bf6cfb1408e10dd6',1,'m5::nfc::ndef']]], + ['access_5ffree_5',['access_free',['../mifare_8hpp.html#a5234cb215582f80f8a6eea74ccc0f00a',1,'m5::nfc::a::mifare::desfire']]], + ['access_5fproprietary_6',['ACCESS_PROPRIETARY',['../ndef_8hpp.html#a40226b233bf1606213ef34f9d74f3b96',1,'m5::nfc::ndef']]], + ['access_5frights_7',['access_rights',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#ade79b7a85ce77945160f292cfb6ddf3e',1,'m5::nfc::a::mifare::desfire::NdefFormatOptions']]], + ['accessflag_8',['AccessFlag',['../structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html#a1a43484f01b9e89ab972227fddeaf508',1,'m5::nfc::ndef::type3::AttributeBlock']]], + ['activate_9',['activate',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a48ebe154a123b7213cb9783b6b0d24dd',1,'m5::nfc::NFCLayerA::activate()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#acb1e41eb54c5b681ca9ae7cd376d2eec',1,'m5::nfc::NFCLayerF::activate()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#aaddc0e4e632f6991267ffdffe68913f2',1,'m5::nfc::NFCLayerV::activate()']]], + ['activatedpicc_10',['activatedPICC',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a88b5213b7feafcec4c5e0e12d53d1a8c',1,'m5::nfc::NFCLayerA::activatedPICC()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a43e13b709e37cda6e0bd2e63ec0db114',1,'m5::nfc::NFCLayerB::activatedPICC()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#adca10cd40a000169aab21a481b71af39',1,'m5::nfc::NFCLayerF::activatedPICC()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#ad967723ec85d3aab6e535348aac36995',1,'m5::nfc::NFCLayerV::activatedPICC()']]], + ['adapterst25r3916forb_11',['AdapterST25R3916ForB',['../structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_b.html',1,'m5::nfc']]], + ['adapterst25r3916forf_12',['AdapterST25R3916ForF',['../structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_f.html',1,'m5::nfc']]], + ['adapterst25r3916forv_13',['AdapterST25R3916ForV',['../structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_v.html',1,'m5::nfc']]], + ['advancedfilmdevice_14',['AdvancedFilmDevice',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a6d2c13d4fb2828f5bf62181e863e3bd0',1,'m5::nfc']]], + ['aes_15',['AES',['../desfire__file__system_8hpp.html#a87fa07187f0a1c6976f12ab14bb0fd80a76b7593457e2ab50befe2dcd63cf388f',1,'m5::nfc::a::mifare::desfire']]], + ['aes_2ecpp_16',['aes.cpp',['../aes_8cpp.html',1,'']]], + ['aes_2ehpp_17',['aes.hpp',['../aes_8hpp.html',1,'']]], + ['aes_5fcbc_5fcrypt_18',['aes_cbc_crypt',['../aes_8cpp.html#ad26d67e84a0c1c2ae9d4c027d8c2d66a',1,'m5::nfc::crypto']]], + ['aes_5fecb_5fencrypt_19',['aes_ecb_encrypt',['../aes_8cpp.html#a3be0738c24fac6d2216486db30bb064c',1,'m5::nfc::crypto']]], + ['aeskey_20',['AESKey',['../mifare_8hpp.html#a3eeb737dbb14ec10fceed6a5286b961e',1,'m5::nfc::a::mifare::plus']]], + ['afi_21',['afi',['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#a797a51b710825e4c850283a209b8a0e8',1,'m5::nfc::v::PICC']]], + ['aid_22',['aid',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#a19016341f9f07f15b653b46fbcbef4ff',1,'m5::nfc::a::mifare::desfire::NdefFormatOptions']]], + ['amic_23',['Amic',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a172ef6a8a53f514ea87693dcf5104f61',1,'m5::nfc']]], + ['angstrem_24',['Angstrem',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ab164bc345168b3e3f5fe3c25be80bf4a',1,'m5::nfc']]], + ['angstremt_25',['AngstremT',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a9f1cc74db71195bb3ae8bd29f60d7bfb',1,'m5::nfc']]], + ['apdu_26',['apdu',['../namespaceapdu.html',1,'']]], + ['apdu_2ecpp_27',['apdu.cpp',['../apdu_8cpp.html',1,'']]], + ['apdu_2ehpp_28',['apdu.hpp',['../apdu_8hpp.html',1,'']]], + ['app_5fmaster_5fkey_29',['app_master_key',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#a54c42690bb99589dfc2afe2a7a68f7d4',1,'m5::nfc::a::mifare::desfire::NdefFormatOptions']]], + ['application_30',['application',['../structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#a5412e31da035eff9e65bffa3b8eed91c',1,'m5::nfc::b::PICC']]], + ['ask_31',['Ask',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aa0b271a9d8aa8e7473922164d6a1c03c',1,'m5::nfc']]], + ['atmel_32',['Atmel',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52abed89e32bb03bc7e71ebbf7729f9d4ce',1,'m5::nfc']]], + ['atqa_33',['atqa',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a1a157206c1e284f35800957be98f92fa',1,'m5::nfc::a::PICC']]], + ['atqb_34',['atqb',['../structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#a0252e34d67f8ae056b7ecc811f9b68ec',1,'m5::nfc::b::PICC']]], + ['atqb_5flength_35',['ATQB_LENGTH',['../nfcb_8hpp.html#a9cbb42aa665db121b23fc1097c741b41',1,'m5::nfc::b']]], + ['ats_36',['ATS',['../structm5_1_1nfc_1_1a_1_1_a_t_s.html',1,'m5::nfc::a']]], + ['ats_37',['ats',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a68d17440a48d97f25290999c8fdc6840',1,'m5::nfc::a::PICC']]], + ['attrib_38',['ATTRIB',['../nfcb_8hpp.html#ae2a856e80084be96e7eab93c4007af8caa7e69c53dafaa5a0100d3d1ba0f7cb6c',1,'m5::nfc::b']]], + ['attribute_39',['Attribute',['../structm5_1_1nfc_1_1ndef_1_1_attribute.html',1,'m5::nfc::ndef']]], + ['attributeblock_40',['AttributeBlock',['../structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html',1,'m5::nfc::ndef::type3']]], + ['austriamicrosys_41',['Austriamicrosys',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ad8305ff2f27c59e18110cbdf899aa5d4',1,'m5::nfc']]], + ['auth_5fmode_42',['auth_mode',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#abf82006c53af7a40aafb1675c93e7d28',1,'m5::nfc::a::mifare::desfire::NdefFormatOptions']]], + ['auth_5fwith_5fkey_5fa_43',['AUTH_WITH_KEY_A',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca0db1d590ee3ee184bcee04fc55706124',1,'m5::nfc::a']]], + ['auth_5fwith_5fkey_5fb_44',['AUTH_WITH_KEY_B',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca79a7294470ab78375c65a19305472b90',1,'m5::nfc::a']]], + ['authenticate_5f1_45',['AUTHENTICATE_1',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca93212f2ffd18edd8f99e219703157dcc',1,'m5::nfc::a']]], + ['authenticate_5f2_46',['AUTHENTICATE_2',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acacffcddc772d283e504c84f0272d3ee46',1,'m5::nfc::a']]], + ['authmode_47',['AuthMode',['../desfire__file__system_8hpp.html#a87fa07187f0a1c6976f12ab14bb0fd80',1,'m5::nfc::a::mifare::desfire']]], + ['auto_48',['Auto',['../desfire__file__system_8hpp.html#a87fa07187f0a1c6976f12ab14bb0fd80a06b9281e396db002010bde1de57262eb',1,'m5::nfc::a::mifare::desfire']]] +]; diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 0000000..e6c161e --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['b_0',['B',['../nfc_8hpp.html#a5e5f58799f82b1611c0309f953cc2c6fa9d5ed678fe57bcca610140957afab571',1,'m5::nfc']]], + ['b_1',['b',['../namespaceb.html',1,'']]], + ['balluff_2',['Balluff',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af1381fc3f7b86fb8c1908f55248dc32f',1,'m5::nfc']]], + ['beedar_3',['Beedar',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a4ad0814e3406019c523943745de9112c',1,'m5::nfc']]], + ['begin_4',['begin',['../classm5_1_1nfc_1_1_emulation_layer_a.html#a7bb388444ceae8784ebc6713af5c4651',1,'m5::nfc::EmulationLayerA::begin()'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#ac1cbcb81905c6cbb6fa939f254486bf8',1,'m5::nfc::EmulationLayerF::begin()']]], + ['bitrate_5',['Bitrate',['../nfc_8hpp.html#a6e4ec7792513939bffd3f557b917d326',1,'m5::nfc']]], + ['block_5fsize_6',['block_size',['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#af42ccce36d6668456d8055043ad9a00e',1,'m5::nfc::v::PICC']]], + ['block_5ft_7',['block_t',['../structm5_1_1nfc_1_1f_1_1block__t.html',1,'m5::nfc::f']]], + ['blocks_8',['blocks',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a902e293ed65336d8da47cfa75426c9c6',1,'m5::nfc::a::PICC::blocks'],['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#abd192cfb8ee34dd6a291131bc466f596',1,'m5::nfc::v::PICC::blocks']]], + ['bps106k_9',['Bps106K',['../nfc_8hpp.html#a6e4ec7792513939bffd3f557b917d326a98ced0261bfd36e8857b586900ccf1e6',1,'m5::nfc']]], + ['bps212k_10',['Bps212K',['../nfc_8hpp.html#a6e4ec7792513939bffd3f557b917d326a3a6399f5064660be3047c534c426f951',1,'m5::nfc']]], + ['bps424k_11',['Bps424K',['../nfc_8hpp.html#a6e4ec7792513939bffd3f557b917d326af446d7e6091a0b02fff080589dc020f2',1,'m5::nfc']]], + ['bps848k_12',['Bps848K',['../nfc_8hpp.html#a6e4ec7792513939bffd3f557b917d326a022572132d374f84ca57f030cc88099f',1,'m5::nfc']]], + ['bpskstream_13',['BPSKStream',['../_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982ade52e7ae5435b39795190c9c64ea3025',1,'m5::unit::st25r3916']]], + ['broadcom_14',['Broadcom',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a93933c6ca68705cf2c6eee19987428b0',1,'m5::nfc']]], + ['btgoep_15',['BTGOEP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6aff6343cef8f89994d9c9eb5df5b71593',1,'m5::nfc::ndef']]], + ['btl2cap_16',['BTL2CAP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a1ee9bbae71c45ab4397c161feaec4840',1,'m5::nfc::ndef']]], + ['btspp_17',['BTSPP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a81090b5fcb6f86a2e1630cbbfbf3662d',1,'m5::nfc::ndef']]] +]; diff --git a/search/all_10.js b/search/all_10.js new file mode 100644 index 0000000..909f979 --- /dev/null +++ b/search/all_10.js @@ -0,0 +1,153 @@ +var searchData= +[ + ['rats_0',['RATS',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca105e4919a5c861ae6a88ce3d7a7232de',1,'m5::nfc::a']]], + ['reactivate_1',['reactivate',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a049d81ed5c360b26c4dbf8d93b8e0e46',1,'m5::nfc::NFCLayerA::reactivate(const m5::nfc::a::PICC &picc, const bool force_rats=false)'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a9a8e6e8c38c98228e83974bd6584f42e',1,'m5::nfc::NFCLayerA::reactivate()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a923fe889716bb854eb3301021c8aab06',1,'m5::nfc::NFCLayerF::reactivate()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#aa891ec87b5e896fef8806e5b8783022d',1,'m5::nfc::NFCLayerV::reactivate(const m5::nfc::v::PICC &picc)'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#ad53738b47506d3d0c4f6ff31509c24dd',1,'m5::nfc::NFCLayerV::reactivate()']]], + ['read_2',['READ',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca3466fab4975481651940ed328aa990e4',1,'m5::nfc::a']]], + ['read_3',['read',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#af03e1b30f185127ecd3efe7c2e69562d',1,'m5::nfc::NFCLayerA::read(uint8_t *rx, uint16_t &rx_len, const uint8_t saddr, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#abba78cd657f6823e23452c10749676f7',1,'m5::nfc::NFCLayerA::read(uint8_t *rx, uint16_t &rx_len, const uint8_t saddr, const m5::nfc::a::mifare::plus::AESKey &key)'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#afdc37ce8de471e4c439eed5abd73f4be',1,'m5::nfc::NFCLayerA::read(uint8_t *rx, uint16_t &rx_len, const uint16_t saddr) override'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a4120d13050d0fe0ed607b9e762623111',1,'m5::nfc::NFCLayerB::read()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a240d28b530067a9fcdc8c71757d38cf6',1,'m5::nfc::NFCLayerF::read(uint8_t *rx, uint16_t &rx_len, const m5::nfc::f::block_t sblock)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ae221de1f093613ca44369d3ca97ac9b0',1,'m5::nfc::NFCLayerF::read(uint8_t *rx, uint16_t &rx_len, const m5::nfc::f::block_t *block_list, const uint8_t block_num, const uint16_t *service_code, const uint8_t service_num)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ae283e46dc39f2c24898458aeef09fb75',1,'m5::nfc::NFCLayerF::read(uint8_t *rx, uint16_t &rx_len, const uint16_t saddr) override'],['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a580f8cf9637e0dd00db5abb6c1ae6064',1,'m5::nfc::ndef::NDEFLayer::read()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a928d6df7e722c2cf0f44b78eb9d818cf',1,'m5::nfc::NFCLayerInterface::read()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a4e8459bbef08fd87a6b7baff52ac4f00',1,'m5::nfc::NFCLayerV::read()']]], + ['read16_4',['read16',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a80e45ceb5b4bdf04ac2a667fde3b92ee',1,'m5::nfc::NFCLayerA::read16()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a089dbc2c19a53d7df1e8dd07af25647d',1,'m5::nfc::NFCLayerF::read16(uint8_t rx[16], const m5::nfc::f::block_t block, const uint16_t service_code=m5::nfc::f::service_random_read)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#add666921e4988c41198b5eb2d575f081',1,'m5::nfc::NFCLayerF::read16(uint8_t rx[16], const m5::nfc::f::block_t *block, const uint8_t block_num, const uint16_t service_code=m5::nfc::f::service_random_read)']]], + ['read4_5',['read4',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#ab668e6b37b0a4263efc29ee97ec2f44d',1,'m5::nfc::NFCLayerA']]], + ['read_5faccess_6',['read_access',['../structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html#a2f690a048b8283318d558bafc4a5ec01',1,'m5::nfc::ndef::type4::FileControlTLV']]], + ['read_5fcnt_7',['READ_CNT',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acae5b12698b003a4e8fa1a5d2537802447',1,'m5::nfc::a']]], + ['read_5fnfcv_8',['read_nfcv',['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a1b87db303260ea4eecda8da79d947222',1,'m5::nfc::ndef::NDEFLayer']]], + ['read_5fsig_9',['READ_SIG',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acae3862d0b16eab4f9489ac7f7f39e8655',1,'m5::nfc::a']]], + ['read_5fwrite_5fblock_10',['READ_WRITE_BLOCK',['../mifare_8hpp.html#a04d7e469a5bf13381ff82b9b2e5c2d12',1,'m5::nfc::a::mifare::classic']]], + ['readadconverteroutput_11',['readADConverterOutput',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a08062fdb097c796921ceccf297c02baa',1,'m5::unit::UnitST25R3916']]], + ['readamplitudemeasurementautoaveragingdisplay_12',['readAmplitudeMeasurementAutoAveragingDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad9c562ef698193dfdcd8152d89a6808e',1,'m5::unit::UnitST25R3916']]], + ['readamplitudemeasurementconfiguration_13',['readAmplitudeMeasurementConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a735cf92a6a7265ddbd42057ae27cc851',1,'m5::unit::UnitST25R3916']]], + ['readamplitudemeasurementdisplay_14',['readAmplitudeMeasurementDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a7f2866153d7282686e2a482bf6125a44',1,'m5::unit::UnitST25R3916']]], + ['readamplitudemeasurementreference_15',['readAmplitudeMeasurementReference',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae3f712eccbc6dd5c7a4202b9bbf8139d',1,'m5::unit::UnitST25R3916']]], + ['readantennatuningcontrol_16',['readAntennaTuningControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1f9d97b1e13ae888d2cef4711ff32a67',1,'m5::unit::UnitST25R3916']]], + ['readantennatuningcontrol1_17',['readAntennaTuningControl1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a10780e22ce1bba9f8ca10ffef99126aa',1,'m5::unit::UnitST25R3916']]], + ['readantennatuningcontrol2_18',['readAntennaTuningControl2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#acb5ed058550c0ac513fcffdf827efa3e',1,'m5::unit::UnitST25R3916']]], + ['readattributeblock_19',['readAttributeBlock',['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a904fcac13e7ecff4b8ec67bb75adbd4a',1,'m5::nfc::ndef::NDEFLayer']]], + ['readauxiliarydefinition_20',['readAuxiliaryDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aef044b2425921b6dab7d5fb5045f5cbb',1,'m5::unit::UnitST25R3916']]], + ['readauxiliarydisplay_21',['readAuxiliaryDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#af4c3076825b4c3fbd847ad006e9df668',1,'m5::unit::UnitST25R3916']]], + ['readauxiliarymodulationsetting_22',['readAuxiliaryModulationSetting',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a55ab0a4af4c4d4021faa279be557139f',1,'m5::unit::UnitST25R3916']]], + ['readbinary_23',['readBinary',['../classm5_1_1nfc_1_1_file_system.html#af8344fcc7e41b13312461afa8801fb24',1,'m5::nfc::FileSystem']]], + ['readbitratedefinition_24',['readBitrateDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a4831930991b3ab2a58ec033a62a56042',1,'m5::unit::UnitST25R3916']]], + ['readbitratedetectiondisplay_25',['readBitrateDetectionDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ac5900a5c4b61b34783324d30673f3bc0',1,'m5::unit::UnitST25R3916']]], + ['readblock_26',['readBlock',['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#aa7871ddea482ddf11320d89268a40877',1,'m5::nfc::NFCLayerV']]], + ['readcapabilitycontainer_27',['readCapabilityContainer',['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a4840b2bddf145c2b82ede77c297a43b4',1,'m5::nfc::ndef::NDEFLayer::readCapabilityContainer(m5::nfc::ndef::type2::CapabilityContainer &cc)'],['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a304ecb7680aa44482bdb6df7cc562df3',1,'m5::nfc::ndef::NDEFLayer::readCapabilityContainer(m5::nfc::ndef::type4::CapabilityContainer &cc)'],['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a9cdcf11726672111ab0836b085792d81',1,'m5::nfc::ndef::NDEFLayer::readCapabilityContainer(m5::nfc::ndef::type5::CapabilityContainer &cc)']]], + ['readcapacitancemeasurementautoaveragingdisplay_28',['readCapacitanceMeasurementAutoAveragingDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a038ac0e9d02b15c6c1b8d0014f7e4fbc',1,'m5::unit::UnitST25R3916']]], + ['readcapacitancemeasurementconfiguration_29',['readCapacitanceMeasurementConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ac62b0d695772486df92ba9e50c0df1f1',1,'m5::unit::UnitST25R3916']]], + ['readcapacitancemeasurementdisplay_30',['readCapacitanceMeasurementDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a77839fb29fd9e45929dcdceff3d0fdb1',1,'m5::unit::UnitST25R3916']]], + ['readcapacitancemeasurementreference_31',['readCapacitanceMeasurementReference',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a2b05c3b934c32655a75f97bbe9a8eec4',1,'m5::unit::UnitST25R3916']]], + ['readcapacitivesensorcontrol_32',['readCapacitiveSensorControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#abdb6610ef390550da5dfc56d10ff30ce',1,'m5::unit::UnitST25R3916']]], + ['readcapacitivesensordisplay_33',['readCapacitiveSensorDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aafdba06d3e7d440eca36b1f9bf8a22f2',1,'m5::unit::UnitST25R3916']]], + ['readcollisiondisplay_34',['readCollisionDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9f35c902bccd6314ab956a625a0b2a29',1,'m5::unit::UnitST25R3916']]], + ['readcorrelatorconfiguration_35',['readCorrelatorConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aa4024b881cf7f9541c15bef662997e1e',1,'m5::unit::UnitST25R3916']]], + ['readcorrelatorconfiguration1_36',['readCorrelatorConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae737fc7f43faf3d550d0ad069e8f0ccd',1,'m5::unit::UnitST25R3916']]], + ['readcorrelatorconfiguration2_37',['readCorrelatorConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#accf80af0ec691e8c74de111f19112086',1,'m5::unit::UnitST25R3916']]], + ['readdata_38',['readData',['../classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.html#ab5694060981744a4ea1f79db5711a3ce',1,'m5::nfc::a::mifare::desfire::DESFireFileSystem']]], + ['reademdsuppressionconfiguration_39',['readEMDSuppressionConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a88fb2f73a2c4fb430b17293a0761fbf3',1,'m5::unit::UnitST25R3916']]], + ['readerrorandwakeupinterrupt_40',['readErrorAndWakeupInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a218162c4dd414da630479020930824d0',1,'m5::unit::UnitST25R3916']]], + ['readexternalfielddetectoractivationthreshold_41',['readExternalFieldDetectorActivationThreshold',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a19defbfd6df303cf0c6d77187a711917',1,'m5::unit::UnitST25R3916']]], + ['readexternalfielddetectordeactivationthreshold_42',['readExternalFieldDetectorDeactivationThreshold',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9fcc8625df4b8153a684ab70afea66f0',1,'m5::unit::UnitST25R3916']]], + ['readfifo_43',['readFIFO',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a71755c04ed3c946627235e14aeb95992',1,'m5::unit::UnitST25R3916']]], + ['readfifosize_44',['readFIFOSize',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#abde9373b1ae0e83f385840adc30c541c',1,'m5::unit::UnitST25R3916']]], + ['readfifostatus_45',['readFIFOStatus',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a005f3a955c7fbbc2584d9d1c95889c62',1,'m5::unit::UnitST25R3916']]], + ['readfifostatus1_46',['readFIFOStatus1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a4dec1b712b681cfd1716e1d407a1697c',1,'m5::unit::UnitST25R3916']]], + ['readfifostatus2_47',['readFIFOStatus2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a4f428fb7e83f3c278a48ae1e660afba7',1,'m5::unit::UnitST25R3916']]], + ['readgainreductionstate_48',['readGainReductionState',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a739a60b7d77e403b0fd16064dae5dff1',1,'m5::unit::UnitST25R3916']]], + ['readgeneralpurposetimer_49',['readGeneralPurposeTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a93b67a62685adc21aa4a82084a3ea617',1,'m5::unit::UnitST25R3916']]], + ['readgeneralpurposetimer1_50',['readGeneralPurposeTimer1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab97ff2440fb3d95622cc29049eaf3ae3',1,'m5::unit::UnitST25R3916']]], + ['readgeneralpurposetimer2_51',['readGeneralPurposeTimer2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a86ded49224044850eec4343ed93e6136',1,'m5::unit::UnitST25R3916']]], + ['readicidentity_52',['readICIdentity',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1bc7876fc2ca2be617212b85c037edf9',1,'m5::unit::UnitST25R3916']]], + ['readinterrupts_53',['readInterrupts',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1fcb93657f8d96923033431eeade2e32',1,'m5::unit::UnitST25R3916']]], + ['readioconfiguration_54',['readIOConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9d6d2a62bb832c8f6c9980c8b4890b56',1,'m5::unit::UnitST25R3916']]], + ['readioconfiguration1_55',['readIOConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae4cde7bd48d0471543bc0a9ac3d5519b',1,'m5::unit::UnitST25R3916']]], + ['readioconfiguration2_56',['readIOConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a27cbc2f8ed7707a5bf74466ea0ebf6db',1,'m5::unit::UnitST25R3916']]], + ['readmaininterrupt_57',['readMainInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a7f06768804f96003a4c34cf3a79f591f',1,'m5::unit::UnitST25R3916']]], + ['readmaskerrorandwakeupinterrupt_58',['readMaskErrorAndWakeupInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9a1201113079152da88ed03d53538a18',1,'m5::unit::UnitST25R3916']]], + ['readmaskinterrupts_59',['readMaskInterrupts',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a583760a81ec99d5b8b8ac321350431e8',1,'m5::unit::UnitST25R3916']]], + ['readmaskmaininterrupt_60',['readMaskMainInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a04b32e2a469ac22281947743d316fce3',1,'m5::unit::UnitST25R3916']]], + ['readmaskpassivetargetinterrupt_61',['readMaskPassiveTargetInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5994da7a2e869936cfbad46a8ca4d93e',1,'m5::unit::UnitST25R3916']]], + ['readmaskreceivetimer_62',['readMaskReceiveTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0d33cefab2853f7506f76a20b1ccd694',1,'m5::unit::UnitST25R3916']]], + ['readmasktimerandnfcinterrupt_63',['readMaskTimerAndNFCInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a50e39e51b2f818f1dbe232b303b474ba',1,'m5::unit::UnitST25R3916']]], + ['readmodedefinition_64',['readModeDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae205db89775d4798803f4551a963fa45',1,'m5::unit::UnitST25R3916']]], + ['readnfcfieldonguardtimer_65',['readNFCFieldOnGuardTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ac8bfa17c5cabf97af93ef08e9ce05d82',1,'m5::unit::UnitST25R3916']]], + ['readnfcip1passivetargetdefinition_66',['readNFCIP1PassiveTargetDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a264a3b794e12367b9bd391e66364ed48',1,'m5::unit::UnitST25R3916']]], + ['readnoresponsetimer_67',['readNoResponseTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#abdb1b4f3c8399e79047063c9630ab33d',1,'m5::unit::UnitST25R3916']]], + ['readnoresponsetimer1_68',['readNoResponseTimer1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab7c3b048b1cfdbac22c26b0670d164ba',1,'m5::unit::UnitST25R3916']]], + ['readnoresponsetimer2_69',['readNoResponseTimer2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae641dcf3d5913e00f3c9271ef4cca71e',1,'m5::unit::UnitST25R3916']]], + ['readnumberoftransmittedbytes_70',['readNumberOfTransmittedBytes',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad88d3fb6bc69bc36016dee6d3c18e6da',1,'m5::unit::UnitST25R3916']]], + ['readnumberoftransmittedbytes1_71',['readNumberOfTransmittedBytes1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a7f67ad01708120ad13d82bd5c547204e',1,'m5::unit::UnitST25R3916']]], + ['readnumberoftransmittedbytes2_72',['readNumberOfTransmittedBytes2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#af9667f157df14cee9b9683a7f797f0d5',1,'m5::unit::UnitST25R3916']]], + ['readonly_73',['ReadOnly',['../structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html#a1a43484f01b9e89ab972227fddeaf508a131fb182a881796e7606ed6da27f1197',1,'m5::nfc::ndef::type3::AttributeBlock']]], + ['readoperationcontrol_74',['readOperationControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a071187a782adc59a24ee547e3bd688d3',1,'m5::unit::UnitST25R3916']]], + ['readovershootprotectionconfiguration_75',['readOvershootProtectionConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a29940289a38fec6374e2ab83913a1ac3',1,'m5::unit::UnitST25R3916']]], + ['readovershootprotectionconfiguration1_76',['readOvershootProtectionConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a8a843d901b4cc762b2f475ef9c4ba847',1,'m5::unit::UnitST25R3916']]], + ['readovershootprotectionconfiguration2_77',['readOvershootProtectionConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aa4c056de4b328cd9daa3daee2cd3128d',1,'m5::unit::UnitST25R3916']]], + ['readp2preceiverconfiguration_78',['readP2PReceiverConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a8f63fe063f9c5259e1be0cf409ea2967',1,'m5::unit::UnitST25R3916']]], + ['readpassivetargetdisplay_79',['readPassiveTargetDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ade3074e98b95d15d0bee2f3645a0671b',1,'m5::unit::UnitST25R3916']]], + ['readpassivetargetinterrupt_80',['readPassiveTargetInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0f09777cae214492f36d42622e4ceafe',1,'m5::unit::UnitST25R3916']]], + ['readpassivetargetmodulation_81',['readPassiveTargetModulation',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#afec086fb283d8deb51618628d6af0198',1,'m5::unit::UnitST25R3916']]], + ['readphasemeasurementautoaveragingdisplay_82',['readPhaseMeasurementAutoAveragingDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a012e6d0be9b214d7faff9aec4e68a1e8',1,'m5::unit::UnitST25R3916']]], + ['readphasemeasurementconfiguration_83',['readPhaseMeasurementConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a679e7263cfa373bcb28d5a0652c050d1',1,'m5::unit::UnitST25R3916']]], + ['readphasemeasurementdisplay_84',['readPhaseMeasurementDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae33d45840047077cb237b33be2524738',1,'m5::unit::UnitST25R3916']]], + ['readphasemeasurementreference_85',['readPhaseMeasurementReference',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab650256ac000e08eb1d3a084ab74d1c1',1,'m5::unit::UnitST25R3916']]], + ['readppon2fieldwaiting_86',['readPPON2FieldWaiting',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad0f10895c515d966a744b18001c22c08',1,'m5::unit::UnitST25R3916']]], + ['readreceiverconfiguration_87',['readReceiverConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a60203aa11d73ec598f2940d51e716888',1,'m5::unit::UnitST25R3916']]], + ['readreceiverconfiguration1_88',['readReceiverConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aefeca1ad098a7109af3a66ecfa67a866',1,'m5::unit::UnitST25R3916']]], + ['readreceiverconfiguration2_89',['readReceiverConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a68cbfcac8dddb4c7a4f703f433f6e8c9',1,'m5::unit::UnitST25R3916']]], + ['readreceiverconfiguration3_90',['readReceiverConfiguration3',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a2334efea87ad7d6366d6cec34b3a19dc',1,'m5::unit::UnitST25R3916']]], + ['readreceiverconfiguration4_91',['readReceiverConfiguration4',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#abcb65704d88d708d968e09c830b7c0e6',1,'m5::unit::UnitST25R3916']]], + ['readregulatordisplay_92',['readRegulatorDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a99fb3f9b3dc657f9b0c92337732b9a4b',1,'m5::unit::UnitST25R3916']]], + ['readregulatorvoltagecontrol_93',['readRegulatorVoltageControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1a2f39d9ff99a395899c117f7c7faade',1,'m5::unit::UnitST25R3916']]], + ['readresistiveammodulation_94',['readResistiveAMModulation',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#af66d31379de5808c079847ef657d301a',1,'m5::unit::UnitST25R3916']]], + ['readrssidisplay_95',['readRSSIDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae6e30c9913f6d4c417ae3ee6ad75fb23',1,'m5::unit::UnitST25R3916']]], + ['readsettingsfelica_96',['readSettingsFelica',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a311f409703ca9492d5a8c6196728bb36',1,'m5::unit::UnitST25R3916']]], + ['readsettingsiso14443a_97',['readSettingsISO14443A',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a6aa21d1b259476495db6a030ef30076f',1,'m5::unit::UnitST25R3916']]], + ['readsettingsiso14443b_98',['readSettingsISO14443B',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#acc79c90b6b22d5a91d0ffcbf1ea84cd1',1,'m5::unit::UnitST25R3916']]], + ['readsingleblock_99',['ReadSingleBlock',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665ad69a55353d7d8baf25db134591f4dd19',1,'m5::nfc::v']]], + ['readsquelchtimer_100',['readSquelchTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0d1ee83144400dc5d8209df7b59f726b',1,'m5::unit::UnitST25R3916']]], + ['readstreammodedefinition_101',['readStreamModeDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a521cad377d4792f4deef4f7c226df969',1,'m5::unit::UnitST25R3916']]], + ['readsubcarrierstarttimer_102',['readSubcarrierStartTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a247cc45b2d42913eae92814211a661d8',1,'m5::unit::UnitST25R3916']]], + ['readtimerandemvcontrol_103',['readTimerAndEMVControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab6420afa36465e873a2ef42fe594c68b',1,'m5::unit::UnitST25R3916']]], + ['readtimerandnfcinterrupt_104',['readTimerAndNFCInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0f36f70969df4707858a8ed090ce3d7d',1,'m5::unit::UnitST25R3916']]], + ['readtxdriver_105',['readTXDriver',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9844f6043bc46f47cb25174948ac1ce2',1,'m5::unit::UnitST25R3916']]], + ['readtxdrivertiming_106',['readTXDriverTiming',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#afcea42102730d1aabaa5770d285e750d',1,'m5::unit::UnitST25R3916']]], + ['readtxdrivertimingdisplay_107',['readTXDriverTimingDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a41843d8909be31377a79ed97b589a078',1,'m5::unit::UnitST25R3916']]], + ['readundershootprotectionconfiguration_108',['readUndershootProtectionConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5a5a56230bbd7c570cfb44630206cf26',1,'m5::unit::UnitST25R3916']]], + ['readundershootprotectionconfiguration1_109',['readUndershootProtectionConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad446e3139d061ee14da240c1dac998d5',1,'m5::unit::UnitST25R3916']]], + ['readundershootprotectionconfiguration2_110',['readUndershootProtectionConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aee2b97fb54b873cebe17a4b9d8962076',1,'m5::unit::UnitST25R3916']]], + ['readwakeuptimercontrol_111',['readWakeupTimerControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad9f4154143bf86dbed3b06028dd49f65',1,'m5::unit::UnitST25R3916']]], + ['readwithmac16_112',['readWithMAC16',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a603413d14aae3edf6cf6ab8ced48aa09',1,'m5::nfc::NFCLayerF']]], + ['readwrite_113',['ReadWrite',['../structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html#a1a43484f01b9e89ab972227fddeaf508a70a2a84088d405a2e3f1e3accaa16723',1,'m5::nfc::ndef::type3::AttributeBlock']]], + ['realtek_114',['Realtek',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52abe40f32919f3a7ab684c228c46aa65c9',1,'m5::nfc']]], + ['receive_115',['receive',['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a1f583ba3a2213ecd3d8c9012080c34ea',1,'m5::nfc::NFCLayerB::receive()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#aeceacd2519f94efd0deaaa1b56d3831c',1,'m5::nfc::NFCLayerInterface::receive()']]], + ['record_116',['Record',['../classm5_1_1nfc_1_1ndef_1_1_record.html',1,'m5::nfc::ndef']]], + ['records_117',['records',['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#af29acd8396d9c52414a1c3ff17281ef8',1,'m5::nfc::ndef::TLV']]], + ['reg_118',['REG',['../unionm5_1_1nfc_1_1f_1_1_r_e_g.html',1,'m5::nfc::f']]], + ['rega_119',['regA',['../unionm5_1_1nfc_1_1f_1_1_r_e_g.html#a65f9d61fefa9bfc6cc698fa6735c64a8',1,'m5::nfc::f::REG::regA() const'],['../unionm5_1_1nfc_1_1f_1_1_r_e_g.html#a403e0738100b0b778ebe016dc2b66743',1,'m5::nfc::f::REG::regA(const uint32_t v)']]], + ['regb_120',['regB',['../unionm5_1_1nfc_1_1f_1_1_r_e_g.html#a697ea41ac2e098f30305697f8bdb828c',1,'m5::nfc::f::REG::regB() const'],['../unionm5_1_1nfc_1_1f_1_1_r_e_g.html#a3809c945b5741992b1b2b93433041119',1,'m5::nfc::f::REG::regB(const uint32_t v)']]], + ['regc_121',['regC',['../unionm5_1_1nfc_1_1f_1_1_r_e_g.html#a18363858e069b905ea04b9de8d2c3809',1,'m5::nfc::f::REG::regC() const'],['../unionm5_1_1nfc_1_1f_1_1_r_e_g.html#a29c4f22a2d7699d3b6831e872686d088',1,'m5::nfc::f::REG::regC(const uint64_t v)']]], + ['regval_122',['regval',['../namespaceregval.html',1,'']]], + ['renesaselectronics_123',['RenesasElectronics',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a7050614b5099a7e516d86b0b3f813169',1,'m5::nfc']]], + ['renesastechnology_124',['RenesasTechnology',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae68db2e7905c0a38950967691e7e2038',1,'m5::nfc']]], + ['req_5fwupb_125',['REQ_WUPB',['../nfcb_8hpp.html#ae2a856e80084be96e7eab93c4007af8cacf8fbe52b35ccf31d879b73fa27243af',1,'m5::nfc::b']]], + ['reqa_126',['REQA',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acad7bd76c9aadbfa1c3d7fbde38f278e78',1,'m5::nfc::a']]], + ['request_127',['request',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a0db4941c60b2f67a8415ef2fd505ead4',1,'m5::nfc::NFCLayerA::request()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#af30da614d7bdcfd7829d70dcd23d9b18',1,'m5::nfc::NFCLayerB::request()']]], + ['request_5fcode_128',['request_code',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a4997c0cf13eff03c2ad30f207d7fe77b',1,'m5::nfc::f::PICC']]], + ['request_5fdata_129',['request_data',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ac0edd79a2abaa04fb42e8bd6d716eed2',1,'m5::nfc::f::PICC']]], + ['requestcode_130',['RequestCode',['../nfcf_8hpp.html#aa85476c3807a205b8d13cb06347bb144',1,'m5::nfc::f']]], + ['requestresponse_131',['requestResponse',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a173474e60fa825cca43c1f96c2d23648',1,'m5::nfc::NFCLayerF']]], + ['requestservice_132',['requestService',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a122ec944def369e0b084f8f1f3d14e7e',1,'m5::nfc::NFCLayerF::requestService(uint16_t &key_version, const uint16_t node_code)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ad064c3162f02f483ef7672a885a7e778',1,'m5::nfc::NFCLayerF::requestService(uint16_t key_version[], const uint16_t *node_code, const uint8_t node_num)']]], + ['requestsystemcode_133',['requestSystemCode',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#aeedd43471a62cde89d8b62229ba3c19d',1,'m5::nfc::NFCLayerF']]], + ['require_134',['Require',['../nfcb_8hpp.html#aa906fade1b147b015c38f75b7f4a0fcd',1,'m5::nfc::b']]], + ['required_135',['required',['../classm5_1_1nfc_1_1ndef_1_1_record.html#a7a23c577e74fe4cf86c61c351125798c',1,'m5::nfc::ndef::Record::required()'],['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#ab2ce3a26b5fdc7cd0714954a1abd93a8',1,'m5::nfc::ndef::TLV::required()']]], + ['required_5fread_5fkey_5fno_5ffrom_5faccess_5frights_136',['required_read_key_no_from_access_rights',['../mifare_8hpp.html#a0431c9806ae0c3dca72b0d2e1c68efd8',1,'m5::nfc::a::mifare::desfire']]], + ['required_5fwrite_5fkey_5fno_5ffrom_5faccess_5frights_137',['required_write_key_no_from_access_rights',['../mifare_8hpp.html#abf8d199a4af41bae63909d3f4e1a5aaf',1,'m5::nfc::a::mifare::desfire']]], + ['requiresplussl3plainread_138',['requiresPlusSL3PlainRead',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a9e70b140d26dd6edd723e6831153c798',1,'m5::nfc::a::PICC']]], + ['reserved_139',['Reserved',['../ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153a942d4e37dd5607ab68e54755540d4a47',1,'m5::nfc::ndef']]], + ['resettoready_140',['ResetToReady',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665aaa50b9e7396c2397b860d5c1a96b68a0',1,'m5::nfc::v']]], + ['response_5fbytes_5fstill_5favailable_141',['RESPONSE_BYTES_STILL_AVAILABLE',['../apdu_8hpp.html#a526ff7f8c3bf24f7a29439dfd8c94abf',1,'m5::nfc::apdu']]], + ['response_5fok_142',['RESPONSE_OK',['../apdu_8hpp.html#a1b669f6a49f7093762d3dad36c420b6a',1,'m5::nfc::apdu']]], + ['responsecode_143',['ResponseCode',['../nfcf_8hpp.html#a360c75b595fa2e5fa9988959168746df',1,'m5::nfc::f']]], + ['restore_144',['RESTORE',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acac95fa04340c629ddfa2d38e285e59245',1,'m5::nfc::a']]], + ['rfidsec_145',['Rfidsec',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af13065a643218726322db94094519d49',1,'m5::nfc']]], + ['ricoh_146',['Ricoh',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ad1756d23d0eb2b335751132a660378e1',1,'m5::nfc']]], + ['rightplug_147',['RightPlug',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ab3c4563a2cb61660e3ac39c69ed77e38',1,'m5::nfc']]], + ['rstp_148',['RSTP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a70c93323ddcb89632da9dcb77ba54844',1,'m5::nfc::ndef']]], + ['rxinfo_149',['RxInfo',['../structm5_1_1nfc_1_1isodep_1_1_rx_info.html',1,'m5::nfc::isodep']]] +]; diff --git a/search/all_11.js b/search/all_11.js new file mode 100644 index 0000000..28496dd --- /dev/null +++ b/search/all_11.js @@ -0,0 +1,110 @@ +var searchData= +[ + ['sak_0',['sak',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a037deab28cf7d25627502f33a1324c60',1,'m5::nfc::a::PICC']]], + ['sak_5fto_5ftype_1',['sak_to_type',['../nfca_8cpp.html#aba956d86d9cb908086a4e3b3b55b8bd6',1,'m5::nfc::a']]], + ['samsung_2',['Samsung',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a3910b1e0ccab19bc46fd9db27cca49c9',1,'m5::nfc']]], + ['schweizer_3',['Schweizer',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a9912c9330e203d0dc109bf7e74e09e51',1,'m5::nfc']]], + ['secure_5fzero_2ehpp_4',['secure_zero.hpp',['../secure__zero_8hpp.html',1,'']]], + ['security_5flevel_5',['security_level',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a5c796f74a22e9f7fa2b1dfd33d1ef04a',1,'m5::nfc::a::PICC']]], + ['selct_5fcl1_5fopt_6',['SELCT_CL1_OPT',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca77458195bc59b3b4e06827e8e3c2238a',1,'m5::nfc::a']]], + ['selct_5fcl2_5fopt_7',['SELCT_CL2_OPT',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acabc4882721d4cd97d7f3436557089a38d',1,'m5::nfc::a']]], + ['selct_5fcl3_5fopt_8',['SELCT_CL3_OPT',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acac72062bb69c053a12c34f8b80770570e',1,'m5::nfc::a']]], + ['select_9',['Select',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665ae0626222614bdee31951d84c64e5e9ff',1,'m5::nfc::v']]], + ['select_10',['select',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a6c5ba9ff6ce1ad9c5c2ec5adf17a9299',1,'m5::nfc::NFCLayerA::select()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#ad7936a932130b4514d04a225c10e4305',1,'m5::nfc::NFCLayerB::select()']]], + ['select_5fcl1_11',['SELECT_CL1',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca81083ce659b99b238c270d153b25af0f',1,'m5::nfc::a']]], + ['select_5fcl2_12',['SELECT_CL2',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acaaf74037b8890996366fbedace9a9ff34',1,'m5::nfc::a']]], + ['select_5fcl3_13',['SELECT_CL3',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca5fdb231b8f1cea8829c098e15b575509',1,'m5::nfc::a']]], + ['selectby_14',['SelectBy',['../apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ad',1,'m5::nfc::apdu']]], + ['selectbydfname_15',['selectByDfName',['../classm5_1_1nfc_1_1_file_system.html#ae89a1668d4bd55d89e06760ac5471db8',1,'m5::nfc::FileSystem']]], + ['selectbyfileid_16',['selectByFileId',['../classm5_1_1nfc_1_1_file_system.html#ac36340e28a4f58001fca8d8e277b3ff9',1,'m5::nfc::FileSystem']]], + ['selectbypath_17',['selectByPath',['../classm5_1_1nfc_1_1_file_system.html#ad9a976bf6364804939ccaf30beaab14b',1,'m5::nfc::FileSystem']]], + ['selectdfnameauto_18',['selectDfNameAuto',['../classm5_1_1nfc_1_1_file_system.html#a5dcce8b2abc183d2397bae156ba3be15',1,'m5::nfc::FileSystem']]], + ['selectfile_19',['selectFile',['../classm5_1_1nfc_1_1_file_system.html#ae60578d2b25f1a7c34773ff445859cc5',1,'m5::nfc::FileSystem']]], + ['selectfileidauto_20',['selectFileIdAuto',['../classm5_1_1nfc_1_1_file_system.html#a0503db312968888ab64f023916a7c682',1,'m5::nfc::FileSystem']]], + ['selectmasterfile_21',['selectMasterFile',['../classm5_1_1nfc_1_1_file_system.html#a6abdc8aa28226e0bd5d908aaa7dcc8e1',1,'m5::nfc::FileSystem']]], + ['selectoccurrence_22',['SelectOccurrence',['../apdu_8hpp.html#a74836436e907c80c9a02040d912e6400',1,'m5::nfc::apdu']]], + ['selectparent_23',['selectParent',['../classm5_1_1nfc_1_1_file_system.html#ac79680652b300a039327a87c48162c56',1,'m5::nfc::FileSystem']]], + ['selectresponse_24',['SelectResponse',['../apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbf',1,'m5::nfc::apdu']]], + ['service_5fcyclic_5fread_25',['service_cyclic_read',['../nfcf_8hpp.html#ad932724434468d099da3f88fd3ea3131',1,'m5::nfc::f']]], + ['service_5fcyclic_5fread_5fauth_26',['service_cyclic_read_auth',['../nfcf_8hpp.html#ab3f37f14f630750fae7a1015a24d158f',1,'m5::nfc::f']]], + ['service_5fcyclic_5fread_5fwrite_27',['service_cyclic_read_write',['../nfcf_8hpp.html#ac244ed94137bfb4a42dc4cb9539fa00c',1,'m5::nfc::f']]], + ['service_5fcyclic_5fread_5fwrite_5fauth_28',['service_cyclic_read_write_auth',['../nfcf_8hpp.html#a7827a434c6e681ebf2a94da09ac935e1',1,'m5::nfc::f']]], + ['service_5fparse_5fcacheback_29',['service_parse_cacheback',['../nfcf_8hpp.html#a2fac017d2e051772fd2b3e1e43f0c50c',1,'m5::nfc::f']]], + ['service_5fparse_5fcacheback_5fauth_30',['service_parse_cacheback_auth',['../nfcf_8hpp.html#a1d17392cf32de3b4c93e851e3bf4862b',1,'m5::nfc::f']]], + ['service_5fparse_5fdecrement_31',['service_parse_decrement',['../nfcf_8hpp.html#ad9a3c4163a53990d8a994c4bd0d78908',1,'m5::nfc::f']]], + ['service_5fparse_5fdecrement_5fauth_32',['service_parse_decrement_auth',['../nfcf_8hpp.html#a32c126ea71f639f747e3de1520d054dc',1,'m5::nfc::f']]], + ['service_5fparse_5fdirect_33',['service_parse_direct',['../nfcf_8hpp.html#a9a8429d9d2a55a4366b5ced92dfa5d48',1,'m5::nfc::f']]], + ['service_5fparse_5fdirect_5fauth_34',['service_parse_direct_auth',['../nfcf_8hpp.html#a79f5298b66bb05349cebe3d7b2793fd3',1,'m5::nfc::f']]], + ['service_5fparse_5fincrement_35',['service_parse_increment',['../nfcf_8hpp.html#af6667e88bbf020556ad1d7a1492af337',1,'m5::nfc::f']]], + ['service_5fparse_5fincrement_5fauth_36',['service_parse_increment_auth',['../nfcf_8hpp.html#a5878b0feb6beec1c2aee07fdd49d8cec',1,'m5::nfc::f']]], + ['service_5frandom_5fread_37',['service_random_read',['../nfcf_8hpp.html#aa34539f8d3d332d33990ae18cf63ec52',1,'m5::nfc::f']]], + ['service_5frandom_5fread_5fauth_38',['service_random_read_auth',['../nfcf_8hpp.html#a5b2562fa6829d1e1b1adde7ab8a79e3a',1,'m5::nfc::f']]], + ['service_5frandom_5fread_5fwrite_39',['service_random_read_write',['../nfcf_8hpp.html#a22c27e0c42a8e14db11ed926e20b50d7',1,'m5::nfc::f']]], + ['service_5frandom_5fread_5fwrite_5fauth_40',['service_random_read_write_auth',['../nfcf_8hpp.html#a425db1e4f06b88c8d011a4271bee8fa3',1,'m5::nfc::f']]], + ['ses_5fenc_5fkey_41',['ses_enc_key',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.html#a49c7fbe792521b030aa55f74368304e1',1,'m5::nfc::a::mifare::desfire::Ev2Context']]], + ['ses_5fmac_5fkey_42',['ses_mac_key',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.html#a09912df153379313310f709203ed750f',1,'m5::nfc::a::mifare::desfire::Ev2Context']]], + ['set_5fmod_5ftype_43',['SET_MOD_TYPE',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acaba0d17aac1240ee37f6c7650fbe88877',1,'m5::nfc::a']]], + ['setexpiredtime_44',['setExpiredTime',['../classm5_1_1nfc_1_1_emulation_layer_a.html#a82370280351c601e7b6092e28132e3ef',1,'m5::nfc::EmulationLayerA::setExpiredTime()'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#a16832ef764ed5d2d4b9053e8e424df38',1,'m5::nfc::EmulationLayerF::setExpiredTime()']]], + ['setidentifier_45',['setIdentifier',['../classm5_1_1nfc_1_1ndef_1_1_record.html#ae58c57b3a64ea9994961324f8eb5489e',1,'m5::nfc::ndef::Record']]], + ['setpayload_46',['setPayload',['../classm5_1_1nfc_1_1ndef_1_1_record.html#ae8e62dbadd7289e91d80df78572c4958',1,'m5::nfc::ndef::Record']]], + ['settextpayload_47',['setTextPayload',['../classm5_1_1nfc_1_1ndef_1_1_record.html#a8b2d1b07c095b9878b5468c3934a17bc',1,'m5::nfc::ndef::Record']]], + ['seturipayload_48',['setURIPayload',['../classm5_1_1nfc_1_1ndef_1_1_record.html#a170c8e9afe7d6631c6d6a7f062fed1f5',1,'m5::nfc::ndef::Record']]], + ['seveney_49',['Seveney',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a5bf2f4937e41119c04ca437d5337855e',1,'m5::nfc']]], + ['sftp_50',['SFTP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6aea1386cf13bf90b95782349fdd4b2721',1,'m5::nfc::ndef']]], + ['shanghaibelling_51',['ShanghaiBelling',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a69e4f3e4cba7e91551b1e52951dfc289',1,'m5::nfc']]], + ['shanghaifeiju_52',['ShanghaiFeiju',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aec591a6589d51a86517eed3879d66b9e',1,'m5::nfc']]], + ['sharp_53',['Sharp',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a60c17eb98355db0fe5ce016db6c6f444',1,'m5::nfc']]], + ['siliconcraft_54',['SiliconCraft',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af0c09f2970c50cc8ce0cea76e12bc1ee',1,'m5::nfc']]], + ['silterra_55',['Silterra',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a65e2e06f5a3dbc97fcbe65d9e2d7436c',1,'m5::nfc']]], + ['sip_56',['SIP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a7eb2de9ed94db7230fcafeb1d7c40878',1,'m5::nfc::ndef']]], + ['sips_57',['SIPS',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a44a76d8e5ffed8c0e72f6207902dba14',1,'m5::nfc::ndef']]], + ['size_58',['size',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a31e8276c30c6254efd6db9dd8be2a2ed',1,'m5::nfc::a::PICC']]], + ['smartrac_59',['Smartrac',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a7b1f028b1ba664bc6886edb089274e93',1,'m5::nfc']]], + ['smb_60',['SMB',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6ab4fdd997b1f33e0d4c6964444c2bf399',1,'m5::nfc::ndef']]], + ['sonix_61',['Sonix',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aca1ad40112d92766444ed8719401940e',1,'m5::nfc']]], + ['sony_62',['Sony',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a2da860f7216f34598e5cdc6fd7e3098c',1,'m5::nfc']]], + ['spirtech_63',['Spirtech',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a4fe0880a4ecce14a41cc572dbaf849ec',1,'m5::nfc']]], + ['sr_64',['SR',['../structm5_1_1nfc_1_1ndef_1_1_attribute.html#ae26c481b3a9bb479b5f56e121e679581',1,'m5::nfc::ndef::Attribute']]], + ['st_65',['ST',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aaec8e57d71f07e31203035548b79d03c8',1,'m5::nfc::v']]], + ['st25r3916_66',['st25r3916',['../namespacest25r3916.html',1,'']]], + ['st25r3916_5fdefinition_2ehpp_67',['ST25R3916_definition.hpp',['../_s_t25_r3916__definition_8hpp.html',1,'']]], + ['st25ta_68',['st25ta',['../namespacest25ta.html',1,'']]], + ['st25ta_5f16k_69',['ST25TA_16K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a78a9873dc3bbd596ce9f73a162ff9e85',1,'m5::nfc::a']]], + ['st25ta_5f2k_70',['ST25TA_2K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a2980dcc143a44439c9c9368dbb65bed6',1,'m5::nfc::a']]], + ['st25ta_5f512b_71',['ST25TA_512B',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9af7bbb5d12506ae279de0dc8b644788be',1,'m5::nfc::a']]], + ['st25ta_5f64k_72',['ST25TA_64K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a79c10fde203bf93198572ae4555f5f85',1,'m5::nfc::a']]], + ['st_5flri_73',['ST_LRI',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aaa1e8ead2187c115f97614e937a890f33',1,'m5::nfc::v']]], + ['st_5fst25dv_74',['ST_ST25DV',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa1785759bfa19c1b8ab3430fe2704521d',1,'m5::nfc::v']]], + ['st_5fst25v_75',['ST_ST25V',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aaf1a7a7fa1a71d905f7885cd087b08ad5',1,'m5::nfc::v']]], + ['standard_76',['standard',['../namespacestandard.html',1,'']]], + ['starchip_77',['Starchip',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a294fcd514234790185adc4c2771b0839',1,'m5::nfc']]], + ['state_78',['State',['../classm5_1_1nfc_1_1_emulation_layer_a.html#a714fb8378088e999ee8726f2431718cb',1,'m5::nfc::EmulationLayerA::State'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#a7a1e6960bbca8aee87834ba027fa5890',1,'m5::nfc::EmulationLayerF::State']]], + ['state_79',['state',['../classm5_1_1nfc_1_1_emulation_layer_a.html#ae825e954296b17714c73850a674e4461',1,'m5::nfc::EmulationLayerA::state()'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#a1940d738cb0030cf5c4f6bc0a366a57c',1,'m5::nfc::EmulationLayerF::state()']]], + ['status_5fcode_80',['status_code',['../desfire__file__system_8hpp.html#ac48e82125fa96801b0ceae50e510fc26',1,'m5::nfc::a::mifare::desfire']]], + ['stayquiet_81',['StayQuiet',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665ae4408f60e028773308e82551836d726b',1,'m5::nfc::v']]], + ['stmicroelectronics_82',['STMicroelectronics',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac38884ab3cf908c2798725960369391b',1,'m5::nfc']]], + ['stop_5femulation_83',['stop_emulation',['../structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a.html#a242c96ae280a9d827084035edaa6db40',1,'m5::nfc::ListenerST25R3916ForA::stop_emulation()'],['../structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f.html#a5bee1c348c5bded09f8b5d9e41903632',1,'m5::nfc::ListenerST25R3916ForF::stop_emulation()']]], + ['sub_5ftype_84',['sub_type',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ac38cd85467e9116e07f3a585ef47f61c',1,'m5::nfc::a::PICC']]], + ['sub_5ftype_5fdesfire_85',['sub_type_desfire',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ac36e07ce6857bf9473a1d03691b2f48b',1,'m5::nfc::a::PICC']]], + ['sub_5ftype_5fplus_86',['sub_type_plus',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a8cfbe1ee998f679f7fa70b388bc43565',1,'m5::nfc::a::PICC']]], + ['subcarrierstream_87',['SubCarrierStream',['../_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982a0615d29cf2685c8c5e6d10e6fbb563ad',1,'m5::unit::st25r3916']]], + ['subtypedesfire_88',['SubTypeDESFire',['../nfca_8hpp.html#ae2129568177f072e3f1b1d0bae2f2341',1,'m5::nfc::a']]], + ['subtypeplus_89',['SubTypePlus',['../nfca_8hpp.html#afd9353ea57cde9b113a3ec6d6191664f',1,'m5::nfc::a']]], + ['successfully_5f1_90',['SUCCESSFULLY_1',['../apdu_8hpp.html#a64594933a9df521c8ebaafa07ece39e8',1,'m5::nfc::apdu']]], + ['successfully_5f2_91',['SUCCESSFULLY_2',['../apdu_8hpp.html#a3758d358b5278fdb64b90cffcb4f0a64',1,'m5::nfc::apdu']]], + ['supports_5fiso14443_5f4_92',['supports_iso14443_4',['../nfcb_8hpp.html#a9c051e67a823a3666937bfa9b003d45f',1,'m5::nfc::b']]], + ['supports_5fnfc_93',['supports_NFC',['../nfca_8hpp.html#a5e813cdf62d4a05e10dde34e64e21f1b',1,'m5::nfc::a']]], + ['supportsfilesystem_94',['supportsFilesystem',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a439668b546644bf82e4bf402806c4fc3',1,'m5::nfc::NFCLayerA::supportsFilesystem()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#ab85c55ea62d2ef6d735b94ef906b25e0',1,'m5::nfc::NFCLayerInterface::supportsFilesystem()']]], + ['supportsndef_95',['supportsNDEF',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#aac42c420ff4003971cd9b97734300cdd',1,'m5::nfc::a::PICC::supportsNDEF()'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a246d933e11c4c723a25b97a6ed18a5b2',1,'m5::nfc::f::PICC::supportsNDEF()']]], + ['supportsnfc_96',['supportsNFC',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a13e5f8003b32199e33633f2e7959ad5a',1,'m5::nfc::a::PICC']]], + ['supportsnfctag_97',['supportsNFCTag',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac9a9341857b32fa2016d93e2dce4d053',1,'m5::nfc::NFCLayerA::supportsNFCTag()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#ab1d3234d299dfef18bb456b1cc2ae17f',1,'m5::nfc::NFCLayerInterface::supportsNFCTag()']]], + ['system_5fcode_5ffelica_5fplug_98',['system_code_felica_plug',['../nfcf_8hpp.html#a429e821de9621a46cf40349fd964d89f',1,'m5::nfc::f']]], + ['system_5fcode_5ffelica_5fsecure_5fid_99',['system_code_felica_secure_id',['../nfcf_8hpp.html#ad8380cc3ac96fab0ea0b1c22e7ef008b',1,'m5::nfc::f']]], + ['system_5fcode_5flite_100',['system_code_lite',['../nfcf_8hpp.html#aed3fbe9519884df27578df4e3ec7730b',1,'m5::nfc::f']]], + ['system_5fcode_5fndef_101',['system_code_ndef',['../nfcf_8hpp.html#aafc54fae843e05f63e3f8ab7b3941464',1,'m5::nfc::f']]], + ['system_5fcode_5fshared_102',['system_code_shared',['../nfcf_8hpp.html#a2e036876dc05e21ffb6d8ff76c2f8cd7',1,'m5::nfc::f']]], + ['system_5fcode_5fwildcard_103',['system_code_wildcard',['../nfcf_8hpp.html#add8594506fbb8c50eabd0c0104aee674',1,'m5::nfc::f']]], + ['system_5ffile_5fid_104',['SYSTEM_FILE_ID',['../nfca_8hpp.html#a7c7f622ddfabdf37d3cc05b5240f27c3',1,'m5::nfc::a::st25ta']]], + ['systemcode_105',['SystemCode',['../nfcf_8hpp.html#aa85476c3807a205b8d13cb06347bb144a1eeecf7b9a1ca67f7b230b65716a19d6',1,'m5::nfc::f']]], + ['systemfile_106',['SystemFile',['../structm5_1_1nfc_1_1a_1_1st25ta_1_1_system_file.html',1,'m5::nfc::a::st25ta']]] +]; diff --git a/search/all_12.js b/search/all_12.js new file mode 100644 index 0000000..6035233 --- /dev/null +++ b/search/all_12.js @@ -0,0 +1,64 @@ +var searchData= +[ + ['t0_0',['T0',['../structm5_1_1nfc_1_1a_1_1_a_t_s.html#aac7db3aa00bb7e1fc1ce0d0328b5c629',1,'m5::nfc::a::ATS']]], + ['ta_1',['TA',['../structm5_1_1nfc_1_1a_1_1_a_t_s.html#a39ce056c762c05ad369fbf223c2d2a62',1,'m5::nfc::a::ATS']]], + ['tag_2',['Tag',['../ndef_8hpp.html#ace18f3439d147659696eec175e13e03a',1,'m5::nfc::ndef']]], + ['tag_3',['tag',['../structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#ac1307ea0301b70d618bd97927c9bf5ce',1,'m5::nfc::apdu::TLV::tag'],['../structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html#a213d9e339d36b6ce0c88fdb44ce19318',1,'m5::nfc::ndef::type4::FileControlTLV::tag'],['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a27d60314383f0b0655137a1f9b1590fe',1,'m5::nfc::ndef::TLV::tag()']]], + ['tag_5flen_4',['tag_len',['../structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#a6d0ee1d7ab0eb35aeaa7e34c22f4fa97',1,'m5::nfc::apdu::TLV']]], + ['tag_5fto_5ftagbit_5',['tag_to_tagbit',['../ndef_8hpp.html#a727b1668ad3afc7b4313e5ed8fbde964',1,'m5::nfc::ndef']]], + ['tagbits_6',['TagBits',['../ndef_8hpp.html#a5716a98da0909374b245e22ea5b4bfed',1,'m5::nfc::ndef']]], + ['tagbitsall_7',['tagBitsAll',['../ndef_8hpp.html#a82a95253d49481ecb6d4bd1189f03814',1,'m5::nfc::ndef']]], + ['tagbitsmessage_8',['tagBitsMessage',['../ndef_8hpp.html#a83c9884e68c635024d5742201e08d33b',1,'m5::nfc::ndef']]], + ['tagsys_9',['Tagsys',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af0681a809fe90639fc06c2d693182818',1,'m5::nfc']]], + ['tail4_10',['tail4',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a77112543127cf68a1d6ae55bb32dddc6',1,'m5::nfc::a::PICC']]], + ['targetoperationmode_11',['TargetOperationMode',['../_s_t25_r3916__definition_8hpp.html#a7d85ed3cdee95b0eab2dff6373824137',1,'m5::unit::st25r3916']]], + ['tb_12',['TB',['../structm5_1_1nfc_1_1a_1_1_a_t_s.html#abfb034e28bc33ffd205caee37b2df67b',1,'m5::nfc::a::ATS']]], + ['tc_13',['TC',['../structm5_1_1nfc_1_1a_1_1_a_t_s.html#ab0dde24942d4ce8c6e027703c8c0f5cc',1,'m5::nfc::a::ATS']]], + ['tcpobex_14',['TCPOBEX',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6ae3c51d88bdea51cfc57178bfd6709596',1,'m5::nfc::ndef']]], + ['tel_15',['TEL',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a6154785551f14c097a9caf44e74b615e',1,'m5::nfc::ndef']]], + ['telnet_16',['TELNET',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a1360d1787ff8bb4f8eca82602452a58d',1,'m5::nfc::ndef']]], + ['tendyron_17',['Tendyron',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a4e6a90f67cdf2dfc7bb127ee0b489ae4',1,'m5::nfc']]], + ['terminator_18',['Terminator',['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a93ba58b6b9bc299cbabb03a48e9cacce',1,'m5::nfc::ndef::TLV::Terminator'],['../ndef_8hpp.html#ace18f3439d147659696eec175e13e03aab420c1d31e69a823fbc30a434907c9c0',1,'Terminatorm5::nfc::ndef']]], + ['texasinstruments_19',['TexasInstruments',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a67e54b1ee931f3f4bddfefa5fbde5fd8',1,'m5::nfc']]], + ['tftp_20',['TFTP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a34d3dff1acba95184204f7a379c6d4f7',1,'m5::nfc::ndef']]], + ['ti_21',['TI',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aaa316c795d70a350e00b1ac22da664e38',1,'m5::nfc::v']]], + ['ti_22',['ti',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.html#a4eb47e559ae1ad74b76facc5c377dcc6',1,'m5::nfc::a::mifare::desfire::Ev2Context']]], + ['ti_5ftagit_5f2048_23',['TI_TAGIT_2048',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa1b673238aff76b2058bcb24791fac1c2',1,'m5::nfc::v']]], + ['ti_5ftagit_5fhf_5fi_24',['TI_TAGIT_HF_I',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa24465f610f082f61b77474c8f0f2984c',1,'m5::nfc::v']]], + ['ti_5ftagit_5fhf_5fi_5fplus_25',['TI_TAGIT_HF_I_Plus',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa6c94cea8874fa9beb4542eafaa23ff7b',1,'m5::nfc::v']]], + ['ti_5ftagit_5fhf_5fi_5fpro_26',['TI_TAGIT_HF_I_Pro',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa675cf1945d721a33d53bff5abbb977c3',1,'m5::nfc::v']]], + ['timeout_5fpolling_27',['TIMEOUT_POLLING',['../nfcf_8hpp.html#a1498621ff0ef623b709209aaa8b475a8',1,'m5::nfc::f']]], + ['timeout_5fpolling_5fpicc_28',['TIMEOUT_POLLING_PICC',['../nfcf_8hpp.html#a4871355553bd0305670405655de9d4ee',1,'m5::nfc::f']]], + ['timeslot_29',['TimeSlot',['../nfcf_8hpp.html#a1ca4eeb3808f5d0529b603128edc5b84',1,'m5::nfc::f']]], + ['timeslot_5fto_5fslot_30',['timeslot_to_slot',['../nfcf_8hpp.html#a89d13d59812d64bb13835a45aebebeba',1,'m5::nfc::f']]], + ['tl_31',['TL',['../structm5_1_1nfc_1_1a_1_1_a_t_s.html#a88b4f44f50c94c6ce8778fbea194222e',1,'m5::nfc::a::ATS']]], + ['tlv_32',['TLV',['../structm5_1_1nfc_1_1apdu_1_1_t_l_v.html',1,'m5::nfc::apdu::TLV'],['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html',1,'m5::nfc::ndef::TLV']]], + ['tnf_33',['TNF',['../ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153',1,'m5::nfc::ndef']]], + ['tnf_5fmask_34',['TNF_MASK',['../structm5_1_1nfc_1_1ndef_1_1_attribute.html#ace067393b087c51dae3370d646a74f02',1,'m5::nfc::ndef::Attribute']]], + ['to_5ftlv_35',['to_tlv',['../structm5_1_1nfc_1_1_f_c_p.html#a166ffbcf090d17218dee8049bfd16468',1,'m5::nfc::FCP']]], + ['todo_20list_36',['Todo List',['../todo.html',1,'']]], + ['toptroniq_37',['TopTroniq',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aaad87bb774ff9febfd6acedddcf4549e',1,'m5::nfc']]], + ['toshiba_38',['Toshiba',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a0e550130373c0857829991e1767bc46d',1,'m5::nfc']]], + ['totalsize_39',['totalSize',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#aad93bf88a9b215b3f332598cddc0d845',1,'m5::nfc::a::PICC']]], + ['transceive_40',['transceive',['../classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html#a54e5ddd52a865d0efb6682f92bde48a1',1,'m5::nfc::isodep::IsoDEP::transceive()'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#af922fdf273e872f865fb78312796393b',1,'m5::nfc::NFCLayerA::transceive()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a122b2ce7114b2c5ed04e7b7457c2e098',1,'m5::nfc::NFCLayerB::transceive()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#acaed9934c5c5b9e261d9bbcaa404517f',1,'m5::nfc::NFCLayerInterface::transceive()']]], + ['transceiveapdu_41',['transceiveAPDU',['../classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html#ad5dfa0961e8b2acaef1c67658f1be5fb',1,'m5::nfc::isodep::IsoDEP']]], + ['transceiveinf_42',['transceiveINF',['../classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html#a65c3e66cf72e3b5004385ceb8527b665',1,'m5::nfc::isodep::IsoDEP']]], + ['transcore_43',['Transcore',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a376312b3b2f150923acc3164132d87c8',1,'m5::nfc']]], + ['transfer_44',['TRANSFER',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acaeb5ddb3b6096fb90ff720d9c3e2a6628',1,'m5::nfc::a']]], + ['transmit_45',['transmit',['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a3f248f568f9ce9526593e1eb194073f4',1,'m5::nfc::NFCLayerB::transmit()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a47a89384937e84ac348053ec57daa022',1,'m5::nfc::NFCLayerInterface::transmit()']]], + ['tubitakbilgem_46',['TubitakBilgem',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a8fb60ad690955805f9e98eabda5db0a4',1,'m5::nfc']]], + ['tx_5fam_5fmodulation_47',['tx_am_modulation',['../structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html#ab9efa0d30fee6b2b0bf121c466853804',1,'m5::unit::UnitST25R3916::config_t']]], + ['type_48',['Type',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9',1,'m5::nfc::a::Type'],['../nfcb_8hpp.html#a6aa79586df8f19ed0e9a839d7d2ca0cb',1,'m5::nfc::b::Type'],['../nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96f',1,'m5::nfc::f::Type'],['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0a',1,'m5::nfc::v::Type']]], + ['type_49',['type',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ada7c2c38321cb04221fec20dc2f18313',1,'m5::nfc::a::PICC::type'],['../structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#ae26c005a7ef1c7640e119ea311dc1bc9',1,'m5::nfc::b::PICC::type'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ac61ed02400e19194b6827cb208846119',1,'m5::nfc::f::PICC::type'],['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#a2133556ef417bf8287d3f0f2ebbe1d77',1,'m5::nfc::v::PICC::type']]], + ['type1_50',['Type1',['../nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1a3fc8355f4568d0bc9fa60829e4db7ad8',1,'m5::nfc']]], + ['type2_51',['Type2',['../nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1a843171beb7019761cbdf01fa3b1b61fb',1,'m5::nfc']]], + ['type2_52',['type2',['../namespacetype2.html',1,'']]], + ['type2_5fcc_5fblock_53',['TYPE2_CC_BLOCK',['../ndef_8hpp.html#a0c826bc41399160779aa043b7ef12fde',1,'m5::nfc::ndef']]], + ['type3_54',['Type3',['../nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1a459e4c1992412014278341a5705d8aec',1,'m5::nfc']]], + ['type3_55',['type3',['../namespacetype3.html',1,'']]], + ['type4_56',['Type4',['../nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1a17bc479530517e70b6ce6639d64c9b6b',1,'m5::nfc']]], + ['type4_57',['type4',['../namespacetype4.html',1,'']]], + ['type5_58',['Type5',['../nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1a5d05e9889bd18763a956959c86940a23',1,'m5::nfc']]], + ['type5_59',['type5',['../namespacetype5.html',1,'']]], + ['typeasstring_60',['typeAsString',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a5b8d16fa65412e2ff95e3d54e4c8fb51',1,'m5::nfc::a::PICC::typeAsString()'],['../structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#a12e00acfe9513ea113749e52ea2d5f05',1,'m5::nfc::b::PICC::typeAsString()'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a19ed1943e3a20f5d160801d85e1281b0',1,'m5::nfc::f::PICC::typeAsString()'],['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#abde2784c120f6ae46dfa44416541adf5',1,'m5::nfc::v::PICC::typeAsString()']]] +]; diff --git a/search/all_13.js b/search/all_13.js new file mode 100644 index 0000000..3b9de10 --- /dev/null +++ b/search/all_13.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['uid_0',['uid',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ab8f56c8ab8b31cfaada10cf58cb6777a',1,'m5::nfc::a::PICC::uid'],['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#ab47e56e7662a75946f2a2046852bba0e',1,'m5::nfc::v::PICC::uid']]], + ['uidasstring_1',['uidAsString',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#aa76b3265d8c81ffbb94ef3552fc3d9c2',1,'m5::nfc::a::PICC::uidAsString()'],['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#a092ec7d234407a44662af837d3be9c82',1,'m5::nfc::v::PICC::uidAsString()']]], + ['unchanged_2',['Unchanged',['../ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153a5ff3c6978f87d96febfdc8ed3899a97e',1,'m5::nfc::ndef']]], + ['unclassified_3',['Unclassified',['../nfcb_8hpp.html#a6aa79586df8f19ed0e9a839d7d2ca0cba3336022d50ad5765c5db6964d942f5e1',1,'Unclassifiedm5::nfc::b'],['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa3336022d50ad5765c5db6964d942f5e1',1,'Unclassifiedm5::nfc::v']]], + ['unicore_4',['Unicore',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a2a13fbcc37fec7b1f6f03573faab4157',1,'m5::nfc']]], + ['unit_5',['unit',['../namespaceunit.html',1,'']]], + ['unit_5fsize_5fread_6',['unit_size_read',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#aa249c4d6c5425dbf0f79ae9d29be3540',1,'m5::nfc::NFCLayerA::unit_size_read()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a19d4d6e76db9241d8e5a79c180acaba3',1,'m5::nfc::NFCLayerB::unit_size_read()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a34ca54b19d762ad541378304dd751175',1,'m5::nfc::NFCLayerF::unit_size_read()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#af6f048fb639f13e8758521cca31d266f',1,'m5::nfc::NFCLayerInterface::unit_size_read()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#ac9c6c45e5861251841cda8b80479aaf5',1,'m5::nfc::NFCLayerV::unit_size_read()']]], + ['unit_5fsize_5fwrite_7',['unit_size_write',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#ad24a58b5b02a26316e0c14bda504e243',1,'m5::nfc::NFCLayerA::unit_size_write()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#ac3993de89564964f63a7a0035b0837eb',1,'m5::nfc::NFCLayerB::unit_size_write()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a66f6f636a210a8a78f41a94cfc7bcfee',1,'m5::nfc::NFCLayerF::unit_size_write()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#aea557041dda4472c73ef6c99909d3f71',1,'m5::nfc::NFCLayerInterface::unit_size_write()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a49d0f37b6e33138a43ea3160bb757382',1,'m5::nfc::NFCLayerV::unit_size_write()']]], + ['unit_5fst25r3916_2ecpp_8',['unit_ST25R3916.cpp',['../unit___s_t25_r3916_8cpp.html',1,'']]], + ['unit_5fst25r3916_2ehpp_9',['unit_ST25R3916.hpp',['../unit___s_t25_r3916_8hpp.html',1,'']]], + ['unit_5fst25r3916_5fnfca_2ecpp_10',['unit_ST25R3916_nfca.cpp',['../unit___s_t25_r3916__nfca_8cpp.html',1,'']]], + ['unit_5fst25r3916_5fnfcb_2ecpp_11',['unit_ST25R3916_nfcb.cpp',['../unit___s_t25_r3916__nfcb_8cpp.html',1,'']]], + ['unit_5fst25r3916_5fnfcf_2ecpp_12',['unit_ST25R3916_nfcf.cpp',['../unit___s_t25_r3916__nfcf_8cpp.html',1,'']]], + ['unit_5fst25r3916_5fnfcv_2ecpp_13',['unit_ST25R3916_nfcv.cpp',['../unit___s_t25_r3916__nfcv_8cpp.html',1,'']]], + ['unit_5fst25r3916_5futil_2ecpp_14',['unit_ST25R3916_util.cpp',['../unit___s_t25_r3916__util_8cpp.html',1,'']]], + ['unitnfc_15',['UnitNFC',['../_m5_unit_unified_n_f_c_8hpp.html#a7bb1459243ff855f3e17fa41b45425ef',1,'m5::unit']]], + ['unitsize_16',['unitSize',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a7856eef603d29b83e27ffd42a6b8e145',1,'m5::nfc::a::PICC']]], + ['unitst25r3916_17',['UnitST25R3916',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html',1,'m5::unit']]], + ['unknown_18',['Unknown',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a88183b946cc5f0e8c96b2e66e1c74a7e',1,'Unknownm5::nfc::a'],['../nfcb_8hpp.html#a6aa79586df8f19ed0e9a839d7d2ca0cba88183b946cc5f0e8c96b2e66e1c74a7e',1,'Unknownm5::nfc::b'],['../nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96fa88183b946cc5f0e8c96b2e66e1c74a7e',1,'Unknownm5::nfc::f'],['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a88183b946cc5f0e8c96b2e66e1c74a7e',1,'Unknownm5::nfc'],['../ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153a88183b946cc5f0e8c96b2e66e1c74a7e',1,'Unknownm5::nfc::ndef'],['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa88183b946cc5f0e8c96b2e66e1c74a7e',1,'Unknownm5::nfc::v']]], + ['update_19',['update',['../classm5_1_1nfc_1_1_emulation_layer_a.html#adf2e24dfe90f26d56de0263ea6a2bbea',1,'m5::nfc::EmulationLayerA::update()'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#ae11b35c780ce6c3432790f08a3384ad2',1,'m5::nfc::EmulationLayerF::update()']]], + ['updatebinary_20',['updateBinary',['../classm5_1_1nfc_1_1_file_system.html#a8f2444c246a4483c633feb0831b1221a',1,'m5::nfc::FileSystem']]], + ['uri_21',['URI',['../ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153a8447306210a0972ac94b7d774799df1a',1,'m5::nfc::ndef']]], + ['uriprotocol_22',['URIProtocol',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6',1,'m5::nfc::ndef']]], + ['urn_23',['URN',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a159673fd09d9000e8d7706ea5a751b10',1,'m5::nfc::ndef']]], + ['urn_5fepc_24',['URN_EPC',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a2d330bbe4ce80a2e335abf1ac0cf557c',1,'m5::nfc::ndef']]], + ['urn_5fepc_5fid_25',['URN_EPC_ID',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a7c5fab2988fa4a6868131391acb98569',1,'m5::nfc::ndef']]], + ['urn_5fepc_5fpat_26',['URN_EPC_PAT',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a0d93e64775449882c412ffc993c2fbe0',1,'m5::nfc::ndef']]], + ['urn_5fepc_5fraw_27',['URN_EPC_RAW',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a49194a2bedc87e93c1fa90ed70d440ec',1,'m5::nfc::ndef']]], + ['urn_5fepc_5ftag_28',['URN_EPC_TAG',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a21380900a76174819c59015ffcd17f7e',1,'m5::nfc::ndef']]], + ['user_5farea_5fsize_29',['user_area_size',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a569a7bfed33c5202acacb045b39519a2',1,'m5::nfc::NFCLayerA::user_area_size()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a5f42174f261408428c47686a8c2a7bc7',1,'m5::nfc::NFCLayerB::user_area_size()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ac08779e3debb8d158e3aa213677d6a92',1,'m5::nfc::NFCLayerF::user_area_size()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a4109e617694aad4a02ecc6c2a3ba42b0',1,'m5::nfc::NFCLayerInterface::user_area_size()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a47fa999d2496dbfe1477966e0c878fc8',1,'m5::nfc::NFCLayerV::user_area_size()']]], + ['userareasize_30',['userAreaSize',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a13570108ce5e10a9f91495c254c5156d',1,'m5::nfc::a::PICC::userAreaSize()'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a19b5720e144a758fc9a26d9045fc35c2',1,'m5::nfc::f::PICC::userAreaSize()'],['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#a104c470214bfaa328415fe87292731eb',1,'m5::nfc::v::PICC::userAreaSize()']]], + ['userstar_31',['Userstar',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ab8d78b0485750b2e278bf1cec2a6ce93',1,'m5::nfc']]], + ['using_5firq_32',['using_irq',['../structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html#a677517debf6d590c88db914a3dde2137',1,'m5::unit::UnitST25R3916::config_t']]] +]; diff --git a/search/all_14.js b/search/all_14.js new file mode 100644 index 0000000..a71be39 --- /dev/null +++ b/search/all_14.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['v_0',['V',['../nfc_8hpp.html#a5e5f58799f82b1611c0309f953cc2c6fa5206560a306a2e085a437fd258eb57ce',1,'m5::nfc']]], + ['v_1',['v',['../namespacev.html',1,'v'],['../structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#a62f5cacf0a1d57d2e0b0f5c328755697',1,'m5::nfc::apdu::TLV::v']]], + ['valid_2',['valid',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a6332d499b3dd5c2c5c1d2bc8e4ae812b',1,'m5::nfc::a::PICC::valid()'],['../structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#a67d3842dce9b225cafb7d89e712ddc25',1,'m5::nfc::b::PICC::valid()'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#af69afa2b56967446faeeec15e9785f3a',1,'m5::nfc::f::PICC::valid() const']]], + ['validemulation_3',['validEmulation',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a38bab55d286773192148fd6d21cfb42b',1,'m5::nfc::f::PICC']]], + ['value_5fblock_5fnon_5frechargeable_4',['VALUE_BLOCK_NON_RECHARGEABLE',['../mifare_8hpp.html#a30a1c1073fca2491088351e917667d0e',1,'m5::nfc::a::mifare::classic']]], + ['value_5fblock_5frechargeable_5',['VALUE_BLOCK_RECHARGEABLE',['../mifare_8hpp.html#a0f1353490d06daa12f2cfd17a693eaba',1,'m5::nfc::a::mifare::classic']]], + ['vdd_5fvoltage_5f5v_6',['vdd_voltage_5V',['../structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html#a75a9212de180d0a2619def500a2f5192',1,'m5::unit::UnitST25R3916::config_t']]], + ['verayo_7',['Verayo',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af8b4d80e862711cdca5a259baf3992f1',1,'m5::nfc']]], + ['verify_8',['verify',['../classm5_1_1nfc_1_1_file_system.html#aade1aedc4b5cf2f31953c6f8f978503e',1,'m5::nfc::FileSystem']]], + ['verifyglobal_9',['verifyGlobal',['../classm5_1_1nfc_1_1_file_system.html#acd43241f62d9deae34791dcad13bce00',1,'m5::nfc::FileSystem']]], + ['verifyspecific_10',['verifySpecific',['../classm5_1_1nfc_1_1_file_system.html#a4a12bd685852b6fd2619b01fe52710aa',1,'m5::nfc::FileSystem']]], + ['verisiti_11',['Verisiti',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a12a39ecd974a9cfc102360a5518e958a',1,'m5::nfc']]], + ['version3_5fto_5ftype_12',['version3_to_type',['../nfca_8cpp.html#a1c36af0eeed9f0cae6f19adeaac0522b',1,'m5::nfc::a']]], + ['version4_5fto_5ftype_13',['version4_to_type',['../nfca_8cpp.html#a897ff51a5eccfd505aeec8f2c66c7e31',1,'m5::nfc::a']]] +]; diff --git a/search/all_15.js b/search/all_15.js new file mode 100644 index 0000000..6357e3b --- /dev/null +++ b/search/all_15.js @@ -0,0 +1,96 @@ +var searchData= +[ + ['wakeup_0',['wakeup',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#af0ee18fb7743f541ce135af87c950275',1,'m5::nfc::NFCLayerA::wakeup()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a43d82222e2f7947b2e52e2c4a10f5dcc',1,'m5::nfc::NFCLayerB::wakeup()']]], + ['wearlinks_1',['Wearlinks',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a24d12a85aeb5793ca07358a5ea1c6417',1,'m5::nfc']]], + ['wellknown_2',['Wellknown',['../ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153a313f0c0c8c4d7402ad3ca82709c6b0b2',1,'m5::nfc::ndef']]], + ['wisesec_3',['Wisesec',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aa85491a5f53c64f5d548e2a9a93452d8',1,'m5::nfc']]], + ['write_4',['write',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a23492234bf6f5701225f7cc5943d1912',1,'m5::nfc::NFCLayerA::write(const uint8_t saddr, const uint8_t *tx, const uint16_t tx_len, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a5940b86e65b0fad0af0a04378b3e27d2',1,'m5::nfc::NFCLayerA::write(const uint8_t addr, const uint8_t *tx, const uint16_t tx_len, const m5::nfc::a::mifare::plus::AESKey &key)'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a3c982e97ad6b66ffb9aa6f685e3f7869',1,'m5::nfc::NFCLayerA::write(const uint16_t saddr, const uint8_t *tx, const uint16_t tx_len) override'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a4283e90fffaadbda8ab352ec153cd893',1,'m5::nfc::NFCLayerB::write()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ac21ff34e93d4973fca6eccdaf093f79f',1,'m5::nfc::NFCLayerF::write(const m5::nfc::f::block_t sblock, const uint8_t *tx, const uint16_t tx_len)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a9ab7eb934accdfa3335a9c4cd6eed63e',1,'m5::nfc::NFCLayerF::write(const uint16_t saddr, const uint8_t *tx, const uint16_t tx_len) override'],['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a8f14a849a885e8af39483ad4d2d887b5',1,'m5::nfc::ndef::NDEFLayer::write()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a2d84b6050dfca9671d317f9bcbac6943',1,'m5::nfc::NFCLayerInterface::write()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#ab7f845ecfb606ad7b55b6e1a450e0ba4',1,'m5::nfc::NFCLayerV::write()']]], + ['write16_5',['write16',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#af7efea879304539a9874d23e5c957f74',1,'m5::nfc::NFCLayerA::write16()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#afb06a34128696f7c450a212258409834',1,'m5::nfc::NFCLayerF::write16()']]], + ['write4_6',['write4',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a972e8373f292165448f7a5d384a9f875',1,'m5::nfc::NFCLayerA']]], + ['write_5faccess_7',['write_access',['../structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html#abd3975e52acc6e88d3570dbd9213e0b5',1,'m5::nfc::ndef::type4::FileControlTLV']]], + ['write_5fblock_8',['WRITE_BLOCK',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca440f90e159a38a725e9fba3b31c89aa0',1,'m5::nfc::a']]], + ['write_5fnfcv_9',['write_nfcv',['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a5332d964b6e308fef3007629e1be272a',1,'m5::nfc::ndef::NDEFLayer']]], + ['write_5fpage_10',['WRITE_PAGE',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca6a23337128cbd492957f1253a696044e',1,'m5::nfc::a']]], + ['write_5fperso_11',['WRITE_PERSO',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acafe631de96c11edb259243ecd01d0d0d2',1,'m5::nfc::a']]], + ['write_5fsig_12',['WRITE_SIG',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acae844e66ca82dcaa9faaf0b44c866a42c',1,'m5::nfc::a']]], + ['writeamplitudemeasurementconfiguration_13',['writeAmplitudeMeasurementConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a28d6a72e573ba74f3348ad1930b12767',1,'m5::unit::UnitST25R3916']]], + ['writeamplitudemeasurementreference_14',['writeAmplitudeMeasurementReference',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1d4a230e1fa5c48333d27ea42bae6b8a',1,'m5::unit::UnitST25R3916']]], + ['writeantennatuningcontrol_15',['writeAntennaTuningControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#acdf0f45529429a32c3677ef00686e3b0',1,'m5::unit::UnitST25R3916']]], + ['writeantennatuningcontrol1_16',['writeAntennaTuningControl1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a25256ff24318016b4b653e5b453fdffe',1,'m5::unit::UnitST25R3916']]], + ['writeantennatuningcontrol2_17',['writeAntennaTuningControl2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ada6322920860d4d8d98dc161ddf2eb0f',1,'m5::unit::UnitST25R3916']]], + ['writeauxiliarydefinition_18',['writeAuxiliaryDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ac8d7d92a8030d3b02b6220bbaf05c49b',1,'m5::unit::UnitST25R3916']]], + ['writeauxiliarymodulationsetting_19',['writeAuxiliaryModulationSetting',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aafc70db540cbc2c925ba545babfbc094',1,'m5::unit::UnitST25R3916']]], + ['writebitrate_20',['writeBitrate',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a87cba17683c2f98573cda17304e77268',1,'m5::unit::UnitST25R3916']]], + ['writebitratedefinition_21',['writeBitrateDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a42187cb9c60bfdb2a113b59634a1438d',1,'m5::unit::UnitST25R3916']]], + ['writeblock_22',['writeBlock',['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a92f5e3d2cbd0001320b3ac25203d7101',1,'m5::nfc::NFCLayerV']]], + ['writecapabilitycontainer_23',['writeCapabilityContainer',['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a4b90b611b7d80579e47d79e73adf4a6b',1,'m5::nfc::ndef::NDEFLayer']]], + ['writecapacitancemeasurementconfiguration_24',['writeCapacitanceMeasurementConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aff11bbe3aff6b2df8e2fa707eb6ec599',1,'m5::unit::UnitST25R3916']]], + ['writecapacitancemeasurementreference_25',['writeCapacitanceMeasurementReference',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a55a196c933376127aea0c782e331d6c5',1,'m5::unit::UnitST25R3916']]], + ['writecapacitivesensorcontrol_26',['writeCapacitiveSensorControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a50da49150540a52ef911af33eab02ddf',1,'m5::unit::UnitST25R3916']]], + ['writecorrelatorconfiguration_27',['writeCorrelatorConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a16ec6a993ee499b9a6a511b776ad3688',1,'m5::unit::UnitST25R3916']]], + ['writecorrelatorconfiguration1_28',['writeCorrelatorConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a544a93d81296700ecae1992d9f04f37f',1,'m5::unit::UnitST25R3916']]], + ['writecorrelatorconfiguration2_29',['writeCorrelatorConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5af372abb32472b2154ec1d34643ac94',1,'m5::unit::UnitST25R3916']]], + ['writedirectcommand_30',['writeDirectCommand',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a16cae8501a7e689c426c4d35fe4edbfa',1,'m5::unit::UnitST25R3916']]], + ['writeemdsuppressionconfiguration_31',['writeEMDSuppressionConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a08207f5df9d91971cbc812b759f1bdac',1,'m5::unit::UnitST25R3916']]], + ['writeexternalfielddetectoractivationthreshold_32',['writeExternalFieldDetectorActivationThreshold',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1f8a711c7b085f53cc6c6d9d25eb15e2',1,'m5::unit::UnitST25R3916']]], + ['writeexternalfielddetectordeactivationthreshold_33',['writeExternalFieldDetectorDeactivationThreshold',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a170aadcabb38fec9dcefd6c02797a43b',1,'m5::unit::UnitST25R3916']]], + ['writefifo_34',['writeFIFO',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5776719d2e0c52c802da429aeb105957',1,'m5::unit::UnitST25R3916']]], + ['writeflag_35',['WriteFlag',['../structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html#a410e6ca7e4263d60017086ae8e5027f9',1,'m5::nfc::ndef::type3::AttributeBlock']]], + ['writegeneralpurposetimer_36',['writeGeneralPurposeTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5e8817eeaeb1da5c0737f45eaf4770cf',1,'m5::unit::UnitST25R3916']]], + ['writegeneralpurposetimer1_37',['writeGeneralPurposeTimer1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aae5e1e9cfe450f481c74b68e6044463b',1,'m5::unit::UnitST25R3916']]], + ['writegeneralpurposetimer2_38',['writeGeneralPurposeTimer2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a3bc4aa64b609a1d29e26fb946af7c23d',1,'m5::unit::UnitST25R3916']]], + ['writeinitiatoroperationmode_39',['writeInitiatorOperationMode',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a6af0ec856808713241824480ff85abf7',1,'m5::unit::UnitST25R3916']]], + ['writeioconfiguration_40',['writeIOConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a2ff95a22623efee299fb6030c864b880',1,'m5::unit::UnitST25R3916']]], + ['writeioconfiguration1_41',['writeIOConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0cd27f50622b6cb3224b857667e701e4',1,'m5::unit::UnitST25R3916']]], + ['writeioconfiguration2_42',['writeIOConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a8dfb0671ef5c77315e5dff8b3f071c74',1,'m5::unit::UnitST25R3916']]], + ['writemaskerrorandwakeupinterrupt_43',['writeMaskErrorAndWakeupInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a84be453fab2b2533c6fa11adcf320e0f',1,'m5::unit::UnitST25R3916']]], + ['writemaskinterrupts_44',['writeMaskInterrupts',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#abea1541fc106bc20b0d88acb3c89dc6b',1,'m5::unit::UnitST25R3916']]], + ['writemaskmaininterrupt_45',['writeMaskMainInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9d488b87822d8dd4bd65a7e8ba6c5a9f',1,'m5::unit::UnitST25R3916']]], + ['writemaskpassivetargetinterrupt_46',['writeMaskPassiveTargetInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aa71d6d949fb09cc1802b93936adb2ecf',1,'m5::unit::UnitST25R3916']]], + ['writemaskreceivetimer_47',['writeMaskReceiveTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a14ff8477eb6e599ef090ce70286c337b',1,'m5::unit::UnitST25R3916']]], + ['writemasktimerandnfcinterrupt_48',['writeMaskTimerAndNFCInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0133a724e1f5d7d0d16adec3aeea1fc8',1,'m5::unit::UnitST25R3916']]], + ['writemodedefinition_49',['writeModeDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad11bcb754688beb10d72898975289553',1,'m5::unit::UnitST25R3916']]], + ['writenfcfieldonguardtimer_50',['writeNFCFieldOnGuardTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a7dd6fa32d3dc96aac26603f9677c96ca',1,'m5::unit::UnitST25R3916']]], + ['writenfcip1passivetargetdefinition_51',['writeNFCIP1PassiveTargetDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ac327fac77452a89f614ee75fdbe2f9c9',1,'m5::unit::UnitST25R3916']]], + ['writenoresponsetimer_52',['writeNoResponseTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a21e6c59ac29b033801de1a40f92a4eda',1,'m5::unit::UnitST25R3916']]], + ['writenoresponsetimer1_53',['writeNoResponseTimer1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a77dafefff7b5a8242f6ce6f8ae67a024',1,'m5::unit::UnitST25R3916']]], + ['writenoresponsetimer2_54',['writeNoResponseTimer2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a6f55ccc0572d222962884676f87e52b0',1,'m5::unit::UnitST25R3916']]], + ['writenumberoftransmittedbytes_55',['writeNumberOfTransmittedBytes',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a162257c59213ed34ce1b18f86a8f0476',1,'m5::unit::UnitST25R3916::writeNumberOfTransmittedBytes(const uint16_t value)'],['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab9720070ee17448df04e9b876603fb1a',1,'m5::unit::UnitST25R3916::writeNumberOfTransmittedBytes(const uint16_t bytes, const uint8_t bits)']]], + ['writenumberoftransmittedbytes1_56',['writeNumberOfTransmittedBytes1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a75124e7cf3a6f1fcfc910640d9dfd3f5',1,'m5::unit::UnitST25R3916']]], + ['writenumberoftransmittedbytes2_57',['writeNumberOfTransmittedBytes2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9226a717c07d7be70b4366084582e038',1,'m5::unit::UnitST25R3916']]], + ['writeoperationcontrol_58',['writeOperationControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a516b34b93a3a4fd4a43b538ee8309703',1,'m5::unit::UnitST25R3916']]], + ['writeovershootprotectionconfiguration_59',['writeOvershootProtectionConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1faa39edb5f375b9579f79b2ecb131fd',1,'m5::unit::UnitST25R3916']]], + ['writeovershootprotectionconfiguration1_60',['writeOvershootProtectionConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#af7cbd5d9d33a52058dbd1c0e2d6de49d',1,'m5::unit::UnitST25R3916']]], + ['writeovershootprotectionconfiguration2_61',['writeOvershootProtectionConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5b062b9ce0f228d8e11c65cbbc8a6113',1,'m5::unit::UnitST25R3916']]], + ['writep2preceiverconfiguration_62',['writeP2PReceiverConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a6cf660e1ff08b85b3f8ab15c016be2e0',1,'m5::unit::UnitST25R3916']]], + ['writepassivetargetmodulation_63',['writePassiveTargetModulation',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a80fff17ada1806c6d679b8f3ed744052',1,'m5::unit::UnitST25R3916']]], + ['writephasemeasurementconfiguration_64',['writePhaseMeasurementConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a8cf6dcbd164572b3e227e6d84f619993',1,'m5::unit::UnitST25R3916']]], + ['writephasemeasurementreference_65',['writePhaseMeasurementReference',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a87decdabd824001e6d110aba7e32f544',1,'m5::unit::UnitST25R3916']]], + ['writeppon2fieldwaiting_66',['writePPON2FieldWaiting',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a3fe4c51a9d5484dcee572b3902b61b83',1,'m5::unit::UnitST25R3916']]], + ['writereceiverconfiguration_67',['writeReceiverConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aac46525d412463c4bb62723595d172db',1,'m5::unit::UnitST25R3916']]], + ['writereceiverconfiguration1_68',['writeReceiverConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a92d7c10a6637a1cf3ffc3ed259331c4e',1,'m5::unit::UnitST25R3916']]], + ['writereceiverconfiguration2_69',['writeReceiverConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae584060521c664be3a95019a4781d76c',1,'m5::unit::UnitST25R3916']]], + ['writereceiverconfiguration3_70',['writeReceiverConfiguration3',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#abeb96ed126791715662ec18f15d15f91',1,'m5::unit::UnitST25R3916']]], + ['writereceiverconfiguration4_71',['writeReceiverConfiguration4',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a29c409732b3f410f97c0ea4b334cdf7c',1,'m5::unit::UnitST25R3916']]], + ['writeregulatorvoltagecontrol_72',['writeRegulatorVoltageControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a8fde3d4ca0e50c5bdc91e8234626a686',1,'m5::unit::UnitST25R3916']]], + ['writeresistiveammodulation_73',['writeResistiveAMModulation',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0779edf80d6b5ed2ba4ff8199edec986',1,'m5::unit::UnitST25R3916']]], + ['writesettingsfelica_74',['writeSettingsFelica',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#abbe87a909501f2c0bb098706731f2b5c',1,'m5::unit::UnitST25R3916']]], + ['writesettingsiso14443a_75',['writeSettingsISO14443A',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a26e0a01a8912e23945098eb822d5da36',1,'m5::unit::UnitST25R3916']]], + ['writesettingsiso14443b_76',['writeSettingsISO14443B',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a3fb7e423a9431dffab6eb8bcf8f3b074',1,'m5::unit::UnitST25R3916']]], + ['writesingleblock_77',['WriteSingleBlock',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665aec468a6afe871d6c4210e8573e0728f9',1,'m5::nfc::v']]], + ['writesquelchtimer_78',['writeSquelchTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab9f3ebd8b6b39acb14a18d2cfa844700',1,'m5::unit::UnitST25R3916']]], + ['writestreammodedefinition_79',['writeStreamModeDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae1129dad075f55d3702b76d568bae13f',1,'m5::unit::UnitST25R3916']]], + ['writesubcarrierstarttimer_80',['writeSubcarrierStartTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#af58bbb322d1f8197dbe5c38305de6d81',1,'m5::unit::UnitST25R3916']]], + ['writesupportndef_81',['writeSupportNDEF',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#acbea08d87d6b3991eedc426a8f7b0abd',1,'m5::nfc::NFCLayerF']]], + ['writetargetoperationmode_82',['writeTargetOperationMode',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a189474854e43bdc2181ddf3deb50bfd6',1,'m5::unit::UnitST25R3916']]], + ['writetimerandemvcontrol_83',['writeTimerAndEMVControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a913bf7975a2571f9ab09bbcf9c36ccb7',1,'m5::unit::UnitST25R3916']]], + ['writetxdriver_84',['writeTXDriver',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aea12d9308b63c40166c97656d14eeac7',1,'m5::unit::UnitST25R3916']]], + ['writetxdrivertiming_85',['writeTXDriverTiming',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a53fb2f7909f24276f81872bd31582144',1,'m5::unit::UnitST25R3916']]], + ['writeundershootprotectionconfiguration_86',['writeUndershootProtectionConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aee178f1500656e07c8d6e22a7387a915',1,'m5::unit::UnitST25R3916']]], + ['writeundershootprotectionconfiguration1_87',['writeUndershootProtectionConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a28af928272e427c8471973e2a0d46701',1,'m5::unit::UnitST25R3916']]], + ['writeundershootprotectionconfiguration2_88',['writeUndershootProtectionConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a8ead7162a23c729bbe2c2f0608a5531d',1,'m5::unit::UnitST25R3916']]], + ['writewakeuptimercontrol_89',['writeWakeupTimerControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a44f7501715f47862dc579338dec83fcb',1,'m5::unit::UnitST25R3916']]], + ['writewithmac16_90',['writeWithMAC16',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a34899dba220ca49f9762bc5a0d9db3c3',1,'m5::nfc::NFCLayerF']]], + ['wrong_5flength_5fle_91',['WRONG_LENGTH_LE',['../apdu_8hpp.html#a47cfe093613fbd3f11fcf22156238da3',1,'m5::nfc::apdu']]], + ['wupa_92',['WUPA',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acad3d299158514dd7779be84e08f22d4cc',1,'m5::nfc::a']]] +]; diff --git a/search/all_16.js b/search/all_16.js new file mode 100644 index 0000000..742e62f --- /dev/null +++ b/search/all_16.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xicor_0',['Xicor',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a72f8810468816d80ddeaf9a547ae7f57',1,'m5::nfc']]] +]; diff --git a/search/all_17.js b/search/all_17.js new file mode 100644 index 0000000..2f5de83 --- /dev/null +++ b/search/all_17.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['yubico_0',['Yubico',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ad64537cc32debef2d5eed7f739f6ea5c',1,'m5::nfc']]] +]; diff --git a/search/all_18.js b/search/all_18.js new file mode 100644 index 0000000..201dafd --- /dev/null +++ b/search/all_18.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['zmd_0',['Zmd',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a5991100c55aafa3a1a3f972dfae45b88',1,'m5::nfc']]] +]; diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 0000000..6547186 --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,49 @@ +var searchData= +[ + ['calculate_5fbcc8_0',['calculate_bcc8',['../nfca_8cpp.html#a2f00ebbaee2d5c4267682a346251feaa',1,'m5::nfc::a']]], + ['can_5fread_5flite_1',['can_read_lite',['../nfcf_8cpp.html#af9eb100b9b9cd033fad82fca3470a7ee',1,'m5::nfc::f']]], + ['can_5fread_5flite_5fs_2',['can_read_lite_s',['../nfcf_8cpp.html#a9c037fc0ecb47e8ca767344be267ff1f',1,'m5::nfc::f']]], + ['can_5fvalue_5fblock_5fpermission_3',['can_value_block_permission',['../mifare_8hpp.html#a639759a346abd881a51ac7a774a9ac5f',1,'m5::nfc::a::mifare::classic']]], + ['can_5fwrite_5freg_4',['can_write_reg',['../nfcf_8hpp.html#a68e8144e7658b6822c286efd5fd46cab',1,'m5::nfc::f']]], + ['canfastread_5',['canFastRead',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#aeb26679f8fde4dab879c1584dc08a9ec',1,'m5::nfc::a::PICC']]], + ['capabilitycontainer_6',['CapabilityContainer',['../structm5_1_1nfc_1_1ndef_1_1type2_1_1_capability_container.html',1,'m5::nfc::ndef::type2::CapabilityContainer'],['../structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.html',1,'m5::nfc::ndef::type4::CapabilityContainer'],['../structm5_1_1nfc_1_1ndef_1_1type5_1_1_capability_container.html',1,'m5::nfc::ndef::type5::CapabilityContainer']]], + ['capcc1101nfc_7',['CapCC1101NFC',['../_m5_unit_unified_n_f_c_8hpp.html#a1b2e13f576a9dfc7d2d036ee1e39557c',1,'m5::unit']]], + ['capst25r3916_8',['CapST25R3916',['../classm5_1_1unit_1_1_cap_s_t25_r3916.html',1,'m5::unit']]], + ['cc_9',['cc',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#ae82aa1845d65b2ed1a1c4b0a0b55f701',1,'m5::nfc::a::mifare::desfire::NdefFormatOptions']]], + ['cc4_5fmax_5fndef_5flength_10',['CC4_MAX_NDEF_LENGTH',['../ndef_8hpp.html#afe77fbba2c69cef8db39e3cc7488e5d9',1,'m5::nfc::ndef']]], + ['cc_5ffile_5fid_11',['CC_FILE_ID',['../ndef_8hpp.html#abe8819b3fb9efa0ab8de7bf58b36f831',1,'m5::nfc::ndef::type4']]], + ['cc_5ffile_5fno_12',['cc_file_no',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#af2ec02f3700dea4a2ac1100e359268bc',1,'m5::nfc::a::mifare::desfire::NdefFormatOptions']]], + ['cc_5ffile_5fsize_13',['cc_file_size',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#ad729145c078d56c3d450c5cd793f76f2',1,'m5::nfc::a::mifare::desfire::NdefFormatOptions']]], + ['cclen_14',['cclen',['../structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.html#a07deffc4b5c59b15100d9577a6a8b939',1,'m5::nfc::ndef::type4::CapabilityContainer']]], + ['ceitec_15',['Ceitec',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a2629a2e19e2b5645fe6a5429c7519d64',1,'m5::nfc']]], + ['celisic_16',['Celisic',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a55f066c966b1346813c56745a550fe87',1,'m5::nfc']]], + ['cf_17',['CF',['../structm5_1_1nfc_1_1ndef_1_1_attribute.html#a2f286b3829c338152ab06cb5f58e88d3',1,'m5::nfc::ndef::Attribute']]], + ['checkformat_18',['checkFormat',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a77e3b5039aeabc5046b4d73ee2a6315f',1,'m5::nfc::f::PICC']]], + ['childdf_19',['ChildDf',['../apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada7998394ef65789d8e3a93fb947d3c8a5',1,'m5::nfc::apdu']]], + ['chinavision_20',['ChinaVision',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af1e67e05c8364092e64e22c052d345f5',1,'m5::nfc']]], + ['cid_21',['cid',['../structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#a327f3caf6e1bfca0542d268969bb2ad6',1,'m5::nfc::b::PICC']]], + ['classic_22',['classic',['../namespaceclassic.html',1,'']]], + ['clear_23',['clear',['../classm5_1_1nfc_1_1ndef_1_1_record.html#a971de976a6c0b032885218fcac7b0b0a',1,'m5::nfc::ndef::Record::clear()'],['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a511a1e56db5880593d3fad076a69ade1',1,'m5::nfc::ndef::TLV::clear()']]], + ['clearauthenticate_24',['clearAuthenticate',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ab684a8b787b35c412f1355628d69bc21',1,'m5::nfc::NFCLayerF']]], + ['clearidentifier_25',['clearIdentifier',['../classm5_1_1nfc_1_1ndef_1_1_record.html#a3747f61f495e7b0480f29bbf49bea74c',1,'m5::nfc::ndef::Record']]], + ['clearinterrupts_26',['clearInterrupts',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a25a241c7f5ebb034e2785f4870ec2f1f',1,'m5::unit::UnitST25R3916']]], + ['clearspad_27',['clearSPAD',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ab313782218cdc477b5aaccab7ca19f1f',1,'m5::nfc::NFCLayerF']]], + ['cmac_5faes_5f128_28',['cmac_aes_128',['../aes_8cpp.html#a5431d20eb1034f57fe7aecefc43c30ce',1,'m5::nfc::crypto']]], + ['cmac_5fsubkeys_29',['cmac_subkeys',['../aes_8cpp.html#a66b0e9249a6eb7b35e20d249ead7c9bf',1,'m5::nfc::crypto']]], + ['cmd_5fctr_30',['cmd_ctr',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.html#a3ea99289cfb114a546654344323e5212',1,'m5::nfc::a::mifare::desfire::Ev2Context']]], + ['comm_5fmode_31',['comm_mode',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#a67e81fc849ac63494f8192e9c3593c44',1,'m5::nfc::a::mifare::desfire::NdefFormatOptions']]], + ['command_32',['Command',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90ac',1,'m5::nfc::a::Command'],['../nfcb_8hpp.html#ae2a856e80084be96e7eab93c4007af8c',1,'m5::nfc::b::Command'],['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665',1,'m5::nfc::v::Command']]], + ['commandcode_33',['CommandCode',['../nfcf_8hpp.html#a5cc4c0eab77c7e2ae44f9549f695d52d',1,'m5::nfc::f']]], + ['commit_5fperso_34',['COMMIT_PERSO',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca300625364a3273e9c05258572e9b2fc7',1,'m5::nfc::a']]], + ['communicationperformance_35',['CommunicationPerformance',['../nfcf_8hpp.html#aa85476c3807a205b8d13cb06347bb144a3ce9c6f141a2a97b4e9504272d3efc98',1,'m5::nfc::f']]], + ['config_36',['config',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aabb68cc4bd6e506278046a30aac55951',1,'m5::unit::UnitST25R3916::config()'],['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a39c9d2cb43565b25f5017b578209b406',1,'m5::unit::UnitST25R3916::config(const config_t &cfg)']]], + ['config_5ft_37',['config_t',['../structm5_1_1nfc_1_1isodep_1_1config__t.html',1,'m5::nfc::isodep::config_t'],['../structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html',1,'m5::unit::UnitST25R3916::config_t']]], + ['configureemulationmode_38',['configureEmulationMode',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad3bc74449f1d118182bbf52bf28dd59c',1,'m5::unit::UnitST25R3916']]], + ['configurenfcmode_39',['configureNFCMode',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a715ab9ee391f7f06134943c4b30787c0',1,'m5::unit::UnitST25R3916']]], + ['contains_5ffile_5fcontrol_5ftag_40',['contains_file_control_tag',['../ndef_8hpp.html#ab13a263b697300c0277d96271748c4ff',1,'m5::nfc::ndef::type4']]], + ['contains_5ftag_41',['contains_tag',['../ndef_8hpp.html#af53b5020533b07d8aa80fcd661ccbc12',1,'m5::nfc::ndef']]], + ['createfile_42',['createFile',['../classm5_1_1nfc_1_1_file_system.html#acb403719f85fc87ff2901b8e8f0a303e',1,'m5::nfc::FileSystem::createFile(const uint8_t *fcp, const uint16_t fcp_len)'],['../classm5_1_1nfc_1_1_file_system.html#ae7ffa364dd69d2dedca69716c8ece7d9',1,'m5::nfc::FileSystem::createFile(const FCP &fcp)'],['../classm5_1_1nfc_1_1_file_system.html#aacf63bc6287f35f95469bf824b9748c4',1,'m5::nfc::FileSystem::createFile(const uint16_t fid, const uint16_t file_size)']]], + ['createtransactionmacfileev2full_43',['createTransactionMACFileEV2Full',['../classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.html#a7e373ffbab93e8db14e2b125dc3830e5',1,'m5::nfc::a::mifare::desfire::DESFireFileSystem']]], + ['crypto1_44',['Crypto1',['../classm5_1_1nfc_1_1a_1_1mifare_1_1classic_1_1_crypto1.html',1,'m5::nfc::a::mifare::classic']]], + ['cylink_45',['Cylink',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af10e0dbef40a6e27efbb533cf53de944',1,'m5::nfc']]] +]; diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 0000000..d595b05 --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,40 @@ +var searchData= +[ + ['dallasmaxim_0',['DallasMaxim',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aebfb6d61188b3d1bcfb800f1803819a5',1,'m5::nfc']]], + ['deactivate_1',['deactivate',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac1bb18ba571351953246a97168e30c79',1,'m5::nfc::NFCLayerA::deactivate()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#aa34354dea55ce71e7c70aecb1ec22a8a',1,'m5::nfc::NFCLayerF::deactivate()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a5afa6b43399feb102a08f80f8d767b91',1,'m5::nfc::NFCLayerV::deactivate()']]], + ['decode_2',['decode',['../classm5_1_1nfc_1_1ndef_1_1_record.html#adeaae2985edd51a8db464fbe57e1ee5c',1,'m5::nfc::ndef::Record::decode()'],['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#acff3b1b7b7de44f89daf5c5533eec441',1,'m5::nfc::ndef::TLV::decode()']]], + ['decode_5faccess_5fbits_3',['decode_access_bits',['../mifare_8cpp.html#ac16996d9234a9a5fc2467a4925d30142',1,'m5::nfc::a::mifare::classic::decode_access_bits(uint8_t permissions[4], const uint8_t ab0, const uint8_t ab1, const uint8_t ab2)'],['../mifare_8hpp.html#a0d89db3c0149f002ec87be13d36f1e87',1,'m5::nfc::a::mifare::classic::decode_access_bits(uint8_t permissions[4], const uint8_t abits[3])']]], + ['decode_5fvalue_5fblock_4',['decode_value_block',['../mifare_8cpp.html#ae593ad8d9608d30bed275a3e33e8bcfa',1,'m5::nfc::a::mifare::classic']]], + ['decrement_5',['DECREMENT',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acac0ffa6e46086551bc5113d1238faf106',1,'m5::nfc::a']]], + ['default_5fff_5fkey_6',['DEFAULT_FF_KEY',['../mifare_8hpp.html#a89347d3e0455feacfeba6f8c4d44c647',1,'m5::nfc::a::mifare::plus']]], + ['default_5fkey_7',['DEFAULT_KEY',['../mifare_8hpp.html#a0ea83570acb8b6017bf8a38c07efa8c3',1,'m5::nfc::a::mifare::classic::DEFAULT_KEY'],['../mifare_8hpp.html#a06b7ed4d6092d2a0852fc3be19d2e8a3',1,'m5::nfc::a::mifare::plus::DEFAULT_KEY']]], + ['deletetransactionmacfileev2full_8',['deleteTransactionMACFileEV2Full',['../classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.html#ad4353f36d67cd46983a3cf2018f337bf',1,'m5::nfc::a::mifare::desfire::DESFireFileSystem']]], + ['delta_9',['Delta',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52adb1f4ab5845def61a83d5df13e0c2397',1,'m5::nfc']]], + ['des_10',['DES',['../desfire__file__system_8hpp.html#a87fa07187f0a1c6976f12ab14bb0fd80a80ac4ad5ef5d93178348c18272df6bd3',1,'m5::nfc::a::mifare::desfire']]], + ['deselect_11',['DESELECT',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca20966192c0ca6aed708795436471f682',1,'DESELECTm5::nfc::a'],['../nfcb_8hpp.html#ae2a856e80084be96e7eab93c4007af8ca20966192c0ca6aed708795436471f682',1,'DESELECTm5::nfc::b']]], + ['deselect_5fwith_5fcid_12',['DESELECT_WITH_CID',['../nfcb_8hpp.html#ae2a856e80084be96e7eab93c4007af8cae86ed6981f29d2df796b5eb1eda2f3e8',1,'m5::nfc::b']]], + ['desfire_13',['desfire',['../namespacedesfire.html',1,'']]], + ['desfire_5faid_5ft_14',['desfire_aid_t',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1desfire__aid__t.html',1,'m5::nfc::a::mifare::desfire']]], + ['desfire_5fcc_5ffile_5fno_15',['DESFIRE_CC_FILE_NO',['../mifare_8hpp.html#a04da257d20f082d0eb3b911d53752b2e',1,'m5::nfc::a::mifare::desfire']]], + ['desfire_5ffile_5fsystem_2ecpp_16',['desfire_file_system.cpp',['../desfire__file__system_8cpp.html',1,'']]], + ['desfire_5ffile_5fsystem_2ehpp_17',['desfire_file_system.hpp',['../desfire__file__system_8hpp.html',1,'']]], + ['desfire_5flight_5fcc_5ffile_5fid_18',['DESFIRE_LIGHT_CC_FILE_ID',['../mifare_8hpp.html#a65284c0e4f952f83d1dc571cf8577e4b',1,'m5::nfc::a::mifare::desfire']]], + ['desfire_5flight_5fcc_5ffile_5fno_19',['DESFIRE_LIGHT_CC_FILE_NO',['../mifare_8hpp.html#a7d2c3293ccc91642582b264e48aa2eac',1,'m5::nfc::a::mifare::desfire']]], + ['desfire_5flight_5fdf_5ffid_20',['DESFIRE_LIGHT_DF_FID',['../mifare_8hpp.html#a9a5bacd3729c9b05077d5042954bba17',1,'m5::nfc::a::mifare::desfire']]], + ['desfire_5flight_5fndef_5ffile_5fid_21',['DESFIRE_LIGHT_NDEF_FILE_ID',['../mifare_8hpp.html#a5b7888d4ba7b1504a6aafee0ac8a6305',1,'m5::nfc::a::mifare::desfire']]], + ['desfire_5flight_5fndef_5ffile_5fno_22',['DESFIRE_LIGHT_NDEF_FILE_NO',['../mifare_8hpp.html#a9d9253ad7867d9d7c4c5e9334f96178d',1,'m5::nfc::a::mifare::desfire']]], + ['desfire_5flight_5fndef_5ffile_5fsize_23',['DESFIRE_LIGHT_NDEF_FILE_SIZE',['../mifare_8hpp.html#aa06fccad5fb69776ce10301e5ec6cb74',1,'m5::nfc::a::mifare::desfire']]], + ['desfire_5fndef_5faid_24',['DESFIRE_NDEF_AID',['../mifare_8hpp.html#ac3aee62d580501a37dd86f750121fab2',1,'m5::nfc::a::mifare::desfire']]], + ['desfire_5fndef_5fapp_5fid_25',['DESFIRE_NDEF_APP_ID',['../mifare_8hpp.html#a9bac1030f86091cfdf850efb0c51cf60',1,'m5::nfc::a::mifare::desfire']]], + ['desfire_5fndef_5ffile_5fno_26',['DESFIRE_NDEF_FILE_NO',['../mifare_8hpp.html#a50ab50fcb1652e29d4a49e5915901447',1,'m5::nfc::a::mifare::desfire']]], + ['desfirefilesystem_27',['DESFireFileSystem',['../classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.html',1,'m5::nfc::a::mifare::desfire']]], + ['detect_28',['detect',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a1b671840e2fce10e1d7a800fe084e2ab',1,'m5::nfc::NFCLayerA::detect(m5::nfc::a::PICC &picc, const uint32_t timeout_ms=100U)'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a69c8817ff9ebea44fcb39aca0217c990',1,'m5::nfc::NFCLayerA::detect(std::vector< m5::nfc::a::PICC > &piccs, const uint32_t timeout_ms=1000U)'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#ad3698c3813530c3d6d039ddef69a6726',1,'m5::nfc::NFCLayerB::detect(m5::nfc::b::PICC &picc, const uint8_t afi=0x00, const uint32_t timeout_ms=100U)'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#afef900848a56b2e124205e31a136827d',1,'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)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a9fa7a8af76839d34cac5f331f977e720',1,'m5::nfc::NFCLayerF::detect(m5::nfc::f::PICC &picc, const uint32_t timeout_ms=100U)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a4a11ce7567ba28e73b190fc8f85a80c8',1,'m5::nfc::NFCLayerF::detect(std::vector< m5::nfc::f::PICC > &piccs, m5::nfc::f::TimeSlot time_slot=m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms=500U)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a8bb0ddf3d83e1a97f6a48a0785843677',1,'m5::nfc::NFCLayerF::detect(std::vector< m5::nfc::f::PICC > &piccs, const uint16_t private_code, m5::nfc::f::TimeSlot time_slot=m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms=500U)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a43a7d253f38a6e04193d357315a4146d',1,'m5::nfc::NFCLayerF::detect(std::vector< m5::nfc::f::PICC > &piccs, const uint16_t *private_code, const uint8_t pc_size, m5::nfc::f::TimeSlot time_slot=m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms=500U)'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a21fe559bf013ae298db9fb62edb39039',1,'m5::nfc::NFCLayerV::detect(m5::nfc::v::PICC &picc, const uint32_t timeout_ms=50U)'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a14d3001bb4b854a265370125d9242a47',1,'m5::nfc::NFCLayerV::detect(std::vector< m5::nfc::v::PICC > &piccs, const uint32_t timeout_ms=1000U)']]], + ['dev_29',['DEV',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6abfeddf560ff988c07141df6135a9bfcf',1,'m5::nfc::ndef']]], + ['dfc_5fformat_30',['dfc_format',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a259230acc28cc4aaf634364234eb59a6',1,'m5::nfc::f::PICC']]], + ['dfname_31',['DfName',['../apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada6bf1a0b1d6bc92eae6416611613dbafe',1,'m5::nfc::apdu']]], + ['disablefield_32',['disableField',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab7a099701e8553ff6f4f21933df5c923',1,'m5::unit::UnitST25R3916']]], + ['done_33',['Done',['../structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html#a410e6ca7e4263d60017086ae8e5027f9af92965e2c8a7afb3c1b9a5c09a263636',1,'m5::nfc::ndef::type3::AttributeBlock']]], + ['dsfid_34',['dsfID',['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#ad577c3635840c6be9200029c89afac6b',1,'m5::nfc::v::PICC']]], + ['dump_35',['dump',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a0c0801275c5203877f67619d338fc3f6',1,'m5::nfc::NFCLayerA::dump(const m5::nfc::a::mifare::classic::Key &mkey=m5::nfc::a::mifare::classic::DEFAULT_KEY)'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#afa531eb85895947d8fd8c64a6c935635',1,'m5::nfc::NFCLayerA::dump(const uint8_t block)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a65609df72661c064e263393568a4ee94',1,'m5::nfc::NFCLayerF::dump()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a63227192207ac7e9765d7614a9ec56e8',1,'m5::nfc::NFCLayerF::dump(const m5::nfc::f::block_t block)'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a991bdbbe91ba9dca88c2ec25253e5abf',1,'m5::nfc::NFCLayerV::dump()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a871b0d7f0f4c020aea717899b6e53fc0',1,'m5::nfc::NFCLayerV::dump(const uint16_t block)'],['../classm5_1_1nfc_1_1ndef_1_1_record.html#aafd086e92751abae204ecde8d213da5c',1,'m5::nfc::ndef::Record::dump()']]], + ['dump_5ftlv_36',['dump_tlv',['../apdu_8cpp.html#aefdcb0a0692e4e97f13e6a5f7a140ade',1,'m5::nfc::apdu']]] +]; diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 0000000..2e7dafd --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,32 @@ +var searchData= +[ + ['efundercurrentdf_0',['EfUnderCurrentDf',['../apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada127a046b88390d6cf9d13d8f74d04778',1,'m5::nfc::apdu']]], + ['emmicroelectronic_1',['EmMicroelectronic',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af65389b034b137aea1aac82e3757af1f',1,'m5::nfc']]], + ['emosyn_2',['Emosyn',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae8de91691abd6da4ed775cbfadd55b9c',1,'m5::nfc']]], + ['emosynem_3',['EmosynEM',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a7cc36687d5a3eac280901dd6ed55917d',1,'m5::nfc']]], + ['empty_4',['Empty',['../ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153ace2c8aed9c2fa0cfbed56cbda4d8bf07',1,'m5::nfc::ndef']]], + ['emulate_5',['emulate',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a8e148e1ece9558110be9723557ab9984',1,'m5::nfc::a::PICC::emulate()'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ab87ee26752ef4249f240922b6d33a93c',1,'m5::nfc::f::PICC::emulate()']]], + ['emulatepicc_6',['emulatePICC',['../classm5_1_1nfc_1_1_emulation_layer_a.html#a28dc0f0938b70793e278be544e7a6713',1,'m5::nfc::EmulationLayerA::emulatePICC()'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#a4982b0e08aad7ef968b7be3ae62a6d56',1,'m5::nfc::EmulationLayerF::emulatePICC()']]], + ['emulation_7',['emulation',['../structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html#aaf309530d5992a1090bc62e4d13e8e2b',1,'m5::unit::UnitST25R3916::config_t']]], + ['emulation_5flayer_5fa_2ecpp_8',['emulation_layer_a.cpp',['../emulation__layer__a_8cpp.html',1,'']]], + ['emulation_5flayer_5fa_2ehpp_9',['emulation_layer_a.hpp',['../emulation__layer__a_8hpp.html',1,'']]], + ['emulation_5flayer_5fa_5fst25r3916_2ecpp_10',['emulation_layer_a_ST25R3916.cpp',['../emulation__layer__a___s_t25_r3916_8cpp.html',1,'']]], + ['emulation_5flayer_5ff_2ecpp_11',['emulation_layer_f.cpp',['../emulation__layer__f_8cpp.html',1,'']]], + ['emulation_5flayer_5ff_2ehpp_12',['emulation_layer_f.hpp',['../emulation__layer__f_8hpp.html',1,'']]], + ['emulation_5flayer_5ff_5fst25r3916_2ecpp_13',['emulation_layer_f_ST25R3916.cpp',['../emulation__layer__f___s_t25_r3916_8cpp.html',1,'']]], + ['emulation_5fsc_14',['emulation_sc',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#af525e296d36658fdda374724ce5de6ef',1,'m5::nfc::f::PICC']]], + ['emulationlayera_15',['EmulationLayerA',['../classm5_1_1nfc_1_1_emulation_layer_a.html',1,'m5::nfc::EmulationLayerA'],['../classm5_1_1nfc_1_1_emulation_layer_a.html#a0a9a8fdc2afd980d8e069b5354866950',1,'m5::nfc::EmulationLayerA::EmulationLayerA(m5::unit::UnitST25R3916 &u)'],['../classm5_1_1nfc_1_1_emulation_layer_a.html#ad7628497d7b17701284bea33282fc1ca',1,'m5::nfc::EmulationLayerA::EmulationLayerA(m5::unit::CapST25R3916 &u)']]], + ['emulationlayerf_16',['EmulationLayerF',['../classm5_1_1nfc_1_1_emulation_layer_f.html',1,'m5::nfc::EmulationLayerF'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#a2628058a439c3138d0c78a8a43616d08',1,'m5::nfc::EmulationLayerF::EmulationLayerF(m5::unit::UnitST25R3916 &u)'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#acd32305a8dad49c1e78735e04acfd9e5',1,'m5::nfc::EmulationLayerF::EmulationLayerF(m5::unit::CapST25R3916 &u)']]], + ['enablefield_17',['enableField',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad8ec70245d36b1be5d23872eeb17474e',1,'m5::unit::UnitST25R3916']]], + ['encode_18',['encode',['../classm5_1_1nfc_1_1ndef_1_1_record.html#a6a4da09ffe10b063c174c9e4c5e5ad3a',1,'m5::nfc::ndef::Record::encode()'],['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#ad6f904f81efecc20d4864a9a08681421',1,'m5::nfc::ndef::TLV::encode()']]], + ['encode_5faccess_5fbits_19',['encode_access_bits',['../mifare_8cpp.html#abf7a51fcc17ccc900b3fbdcf26b585d2',1,'m5::nfc::a::mifare::classic::encode_access_bits(uint8_t abits[3], const uint8_t p0, const uint8_t p1, const uint8_t p2, const uint8_t p3)'],['../mifare_8hpp.html#a9bbff8328dfb21ac5d098b075abb1f97',1,'m5::nfc::a::mifare::classic::encode_access_bits(uint8_t abits[3], const uint8_t permissions[4])']]], + ['encode_5fvalue_5fblock_20',['encode_value_block',['../mifare_8cpp.html#a0378982e28186360ac9eb38fa3128c3a',1,'m5::nfc::a::mifare::classic']]], + ['end_21',['end',['../classm5_1_1nfc_1_1_emulation_layer_a.html#a07691cfc18445903313a853d5e0d1fd1',1,'m5::nfc::EmulationLayerA::end()'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#a945ed86f7503a178aa759bc89f1acaec',1,'m5::nfc::EmulationLayerF::end()']]], + ['ev2context_22',['Ev2Context',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.html',1,'m5::nfc::a::mifare::desfire']]], + ['expiredtime_23',['expiredTime',['../classm5_1_1nfc_1_1_emulation_layer_a.html#ab6075f2492e9f9fd2b55fc087eca146d',1,'m5::nfc::EmulationLayerA::expiredTime()'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#ac6e55ae14a26c808058d04af3b486672',1,'m5::nfc::EmulationLayerF::expiredTime()']]], + ['extendedgetsysteminfo_24',['ExtendedGetSystemInfo',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665a467655381b250e323dc4602a34042aec',1,'m5::nfc::v']]], + ['extendedreadsingleblock_25',['ExtendedReadSingleBlock',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665a0be6a3722fb223e6b44152b59e8ce890',1,'m5::nfc::v']]], + ['extendedwritesingleblock_26',['ExtendedWriteSingleBlock',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665a9caeb24c8f5e7d8cdc4304d5d72b18b2',1,'m5::nfc::v']]], + ['external_27',['External',['../ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153ab206a1b4ea1097761f78e8876f6da779',1,'m5::nfc::ndef']]], + ['externalauthenticate_28',['externalAuthenticate',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ac1af90c0d51679b17f6683363f2e10e5',1,'m5::nfc::NFCLayerF']]] +]; diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 0000000..42ecb5e --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,62 @@ +var searchData= +[ + ['f_0',['F',['../nfc_8hpp.html#a5e5f58799f82b1611c0309f953cc2c6fa800618943025315f869e4e1f09471012',1,'m5::nfc']]], + ['f_1',['f',['../namespacef.html',1,'']]], + ['fast_5fread_2',['FAST_READ',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca5b6e85f572e9f04e0ce673ed57d63b4b',1,'m5::nfc::a']]], + ['fc_5fto_5ffcbit_3',['fc_to_fcbit',['../ndef_8hpp.html#a86bd0803acf1015a7d96aafbdad41098',1,'m5::nfc::ndef::type4']]], + ['fcbitsall_4',['fcBitsAll',['../ndef_8hpp.html#a6d08bca1d9560291af41563234874bc7',1,'m5::nfc::ndef::type4']]], + ['fcbitsmessage_5',['fcBitsMessage',['../ndef_8hpp.html#a8556c520132d5996602b4b3815d0107e',1,'m5::nfc::ndef::type4']]], + ['fci_6',['FCI',['../apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbfa74198f9e44085e24bba72b3ccac4c13a',1,'m5::nfc::apdu']]], + ['fcp_7',['FCP',['../structm5_1_1nfc_1_1_f_c_p.html',1,'m5::nfc::FCP'],['../apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbfaa7c815fafe60ae637d38216fa6300395',1,'FCPm5::nfc::apdu']]], + ['felica_8',['FeliCa',['../_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982a2980dbc2442917a5c692c841d9f75bf3',1,'m5::unit::st25r3916']]], + ['felica_9',['Felica',['../_s_t25_r3916__definition_8hpp.html#a7d85ed3cdee95b0eab2dff6373824137aaa0cab77c3a886a6845b072c65998bb0',1,'m5::unit::st25r3916']]], + ['felicabitrate_10',['FelicaBitrate',['../_s_t25_r3916__definition_8hpp.html#a7d85ed3cdee95b0eab2dff6373824137a6a423d5a4a5fcd692e78eb20f8af274f',1,'m5::unit::st25r3916']]], + ['felicalite_11',['FeliCaLite',['../nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96fabb274ba4f79260fac1cceb11d9504a91',1,'m5::nfc::f']]], + ['felicalites_12',['FeliCaLiteS',['../nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96fa6478df87d6ba411e0bb4c7824085bc01',1,'m5::nfc::f']]], + ['felicaplug_13',['FeliCaPlug',['../nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96fa2672a11e5105880c01910d1c337e4bcb',1,'m5::nfc::f']]], + ['felicastandard_14',['FeliCaStandard',['../nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96facac4693ba70e855674fafee447e1b759',1,'m5::nfc::f']]], + ['fid_15',['fid',['../structm5_1_1nfc_1_1_f_c_p.html#a49e96cebffbeb575f85c7c0934b35e0b',1,'m5::nfc::FCP']]], + ['file_16',['FILE',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a9fc5887c030f7a3e19821ebec457e719',1,'m5::nfc::ndef']]], + ['file_5fdescriptor_17',['file_descriptor',['../structm5_1_1nfc_1_1_f_c_p.html#ab543ee3b32ec8a43c41b3ed4307c50dc',1,'m5::nfc::FCP']]], + ['file_5fno_5ft_18',['file_no_t',['../desfire__file__system_8hpp.html#a289b29edf73add42154f1ae61497b5db',1,'m5::nfc::a::mifare::desfire']]], + ['file_5fsize_19',['file_size',['../structm5_1_1nfc_1_1_f_c_p.html#aa011c00c6d1551c0a57d9094ff807850',1,'m5::nfc::FCP']]], + ['file_5fsize_5ftag_20',['file_size_tag',['../structm5_1_1nfc_1_1_f_c_p.html#af5a5d46832dffbb42948b79a6efc26d2',1,'m5::nfc::FCP']]], + ['file_5fsystem_2ecpp_21',['file_system.cpp',['../file__system_8cpp.html',1,'']]], + ['file_5fsystem_2ehpp_22',['file_system.hpp',['../file__system_8hpp.html',1,'']]], + ['file_5fsystem_5fdesfire_23',['FILE_SYSTEM_DESFIRE',['../nfc_8hpp.html#a45cad45fa6d286a94cbe7e38db122ed7',1,'m5::nfc']]], + ['file_5fsystem_5fdesfire_5flight_24',['FILE_SYSTEM_DESFIRE_LIGHT',['../nfc_8hpp.html#a7913c5e5556d7531d8b333650eb08f23',1,'m5::nfc']]], + ['file_5fsystem_5ffeature_5ft_25',['file_system_feature_t',['../nfc_8hpp.html#a14c7cd97b5b6e6bef9a0485ee5b430a3',1,'m5::nfc']]], + ['file_5fsystem_5fflat_5fmemory_26',['FILE_SYSTEM_FLAT_MEMORY',['../nfc_8hpp.html#a395e5c24db3d02f0637dd68801151b5a',1,'m5::nfc']]], + ['file_5fsystem_5fiso7816_5f4_27',['FILE_SYSTEM_ISO7816_4',['../nfc_8hpp.html#a76e841dc92d8e14f40548e9a3a25b62b',1,'m5::nfc']]], + ['filecontroltag_28',['FileControlTag',['../ndef_8hpp.html#a3d88baf2d1668d0f00d9c5a2397f9c2f',1,'m5::nfc::ndef::type4']]], + ['filecontroltlv_29',['FileControlTLV',['../structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html',1,'m5::nfc::ndef::type4']]], + ['fileid_30',['FileId',['../apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada225a9460e6eedf7af126fdc580345881',1,'m5::nfc::apdu']]], + ['filerename_31',['FileRename',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename.html',1,'m5::nfc::a::mifare::desfire']]], + ['filesettings_32',['FileSettings',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_settings.html',1,'m5::nfc::a::mifare::desfire']]], + ['filesystem_33',['FileSystem',['../classm5_1_1nfc_1_1_file_system.html',1,'m5::nfc']]], + ['filesystemfeature_34',['fileSystemFeature',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a0de7a89418eff85bd4bb791046d64e83',1,'m5::nfc::a::PICC']]], + ['first_5fuser_5fblock_35',['first_user_block',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a12e0b5658e8ed72322d01fc247801ba0',1,'m5::nfc::NFCLayerA::first_user_block()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#afa2dbc0f285d67cefe5fdc9193784672',1,'m5::nfc::NFCLayerB::first_user_block()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a25f967cdd0b42931f81251a6de95ee1d',1,'m5::nfc::NFCLayerF::first_user_block()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a9f7d7f4be1107c1a09325596de06fd54',1,'m5::nfc::NFCLayerInterface::first_user_block()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a87013386596202ac4d100d6217f050f3',1,'m5::nfc::NFCLayerV::first_user_block()']]], + ['firstoronly_36',['FirstOrOnly',['../apdu_8hpp.html#a74836436e907c80c9a02040d912e6400a703aba6102ad8dd4829bc645f464c0b0',1,'m5::nfc::apdu']]], + ['firstuserblock_37',['firstUserBlock',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a74c5f76b9399c37a5a14d936d353429b',1,'m5::nfc::a::PICC::firstUserBlock()'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ac3b14091a6e255fdd111dc5058106573',1,'m5::nfc::f::PICC::firstUserBlock()'],['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#acd18f06e674304f3dc4b9c497d2db1f3',1,'m5::nfc::v::PICC::firstUserBlock()']]], + ['fmd_38',['FMD',['../apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbfa4b25de86ef47d3b09525b1176978b34d',1,'m5::nfc::apdu']]], + ['format_39',['Format',['../nfcf_8hpp.html#aae6a013f27fd62f19dfdd6959ed679e9',1,'m5::nfc::f']]], + ['format_40',['format',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a3c8e889e88a8a234e71ccb9a45166a18',1,'m5::nfc::f::PICC']]], + ['format_5ffelica_5fplug_41',['format_felica_plug',['../nfcf_8hpp.html#a703ced21afb41aef9aa9f100b80b25ce',1,'m5::nfc::f']]], + ['format_5flite_42',['format_lite',['../nfcf_8hpp.html#afe6ad9f347b81b810097fd17b31af8d2',1,'m5::nfc::f']]], + ['format_5fndef_43',['format_ndef',['../nfcf_8hpp.html#ab430bcb9ae317feae37a1a7f1364f544',1,'m5::nfc::f']]], + ['format_5fnfcip1_44',['format_nfcip1',['../nfcf_8hpp.html#aa521daa7bf5e75d10fa21e848654c2be',1,'m5::nfc::f']]], + ['format_5fprivate_45',['format_private',['../nfcf_8hpp.html#a2ddee2f888ea8483516ca0d5c09f9935',1,'m5::nfc::f']]], + ['format_5fsecure_46',['format_secure',['../nfcf_8hpp.html#a9adc4af29d0d219c1804748d6c7aef48',1,'m5::nfc::f']]], + ['format_5fshared_47',['format_shared',['../nfcf_8hpp.html#a2e51494ec684f04fe85652cfca51b19d',1,'m5::nfc::f']]], + ['fraunhoferipms_48',['FraunhoferIpms',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac98ec4b6eacfeddc9c9e98805db4f108',1,'m5::nfc']]], + ['freevision_49',['Freevision',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae1f17c7686d52051f430b8ffeb8ee7ed',1,'m5::nfc']]], + ['fsci_5fto_5ffsc_50',['fsci_to_fsc',['../iso_d_e_p_8hpp.html#a0b90bcfb046d66851dff723aff035867',1,'m5::nfc::isodep']]], + ['ftp_51',['FTP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6ac728a49363c9a93a43a7e7f232b5a54a',1,'m5::nfc::ndef']]], + ['ftp_5faa_52',['FTP_AA',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a122814ce7a56a5112eb1cff8c5bd3593',1,'m5::nfc::ndef']]], + ['ftp_5fftp_53',['FTP_FTP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6aec69ec65586bccf2924fd029d1a4141e',1,'m5::nfc::ndef']]], + ['ftps_54',['FTPS',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a29f97c79cb913145ca7c7b259f68eda9',1,'m5::nfc::ndef']]], + ['fudan_55',['Fudan',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae4322c6191d730dac2105a2299a0c25b',1,'m5::nfc']]], + ['fujitsu_56',['Fujitsu',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a053f42c6bae3432cae270ea978f7e638',1,'Fujitsum5::nfc'],['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa053f42c6bae3432cae270ea978f7e638',1,'Fujitsum5::nfc::v']]], + ['fujitsu_5ffram_57',['Fujitsu_FRAM',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa83aa9cd674ce75d50214b184503787d6',1,'m5::nfc::v']]], + ['fwi_5fto_5fms_58',['fwi_to_ms',['../iso_d_e_p_8cpp.html#a9c9dd562bc432a87e23b1f8388e581d5',1,'m5::nfc::isodep']]] +]; diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 0000000..871fc63 --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['gantner_0',['Gantner',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a4708c93c4fb98a43a312831f0818dc59',1,'m5::nfc']]], + ['gemalto_1',['Gemalto',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ad81109d17c9fbdda036e968d76790932',1,'m5::nfc']]], + ['generate_5fmac_2',['generate_mac',['../nfcf_8cpp.html#a613b055c6f55fe0ac94694c262238bbd',1,'m5::nfc::f']]], + ['gentag_3',['Gentag',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac130b81932c3dafacf1396f6577c82c0',1,'m5::nfc']]], + ['get_5ffile_5fsystem_5ffeature_4',['get_file_system_feature',['../nfca_8cpp.html#a5f4eb62eb93a95c6f3d8a82ffc1dfa8a',1,'m5::nfc::a']]], + ['get_5ffirst_5fuser_5fblock_5',['get_first_user_block',['../nfca_8cpp.html#af1221607496388f9a78ea472230e68ba',1,'m5::nfc::a::get_first_user_block()'],['../nfcf_8cpp.html#a57800978f3b9fda6a89ffcf36c12f6dd',1,'m5::nfc::f::get_first_user_block()']]], + ['get_5fframe_5foption_6',['get_frame_option',['../nfcb_8hpp.html#a1343a19de345d27d6e04966318ab2a38',1,'m5::nfc::b']]], + ['get_5ffwi_7',['get_fwi',['../nfcb_8hpp.html#ac471991e55ecc4ecd3daace0720ec4ba',1,'m5::nfc::b']]], + ['get_5flast_5fuser_5fblock_8',['get_last_user_block',['../nfca_8cpp.html#a56472040cbc607773f2dd4d64e7ad3d3',1,'m5::nfc::a::get_last_user_block()'],['../nfcf_8cpp.html#a87199c49f43628671b18166f6109c746',1,'m5::nfc::f::get_last_user_block(const Type t)']]], + ['get_5fmaximum_5fblock_9',['get_maximum_block',['../nfcf_8cpp.html#abd6a4ea21d882749c7a2bfb347975623',1,'m5::nfc::f']]], + ['get_5fmaximum_5fread_5fblocks_10',['get_maximum_read_blocks',['../nfcf_8cpp.html#acdfb3dc62b558211198bba69f2a18427',1,'m5::nfc::f']]], + ['get_5fmaximum_5fwrite_5fblocks_11',['get_maximum_write_blocks',['../nfcf_8cpp.html#a5d0e04aab8ed4be98fba915dc96f57cb',1,'m5::nfc::f']]], + ['get_5fnfc_5fforum_5ftag_5ftype_12',['get_nfc_forum_tag_type',['../nfca_8cpp.html#a2b812e490b87a87814c33bb3f3b64904',1,'m5::nfc::a::get_nfc_forum_tag_type()'],['../nfcf_8hpp.html#ac45986717903a578a3dc4c59da17f298',1,'m5::nfc::f::get_nfc_forum_tag_type()'],['../nfcv_8hpp.html#a49b9842ab7f389211c7cc9299cedc40b',1,'m5::nfc::v::get_nfc_forum_tag_type()']]], + ['get_5fnumber_5fof_5fblocks_13',['get_number_of_blocks',['../nfca_8cpp.html#a9de505e4515436fb3b2ab99ffd6d1fc0',1,'m5::nfc::a']]], + ['get_5fnumber_5fof_5fsectors_14',['get_number_of_sectors',['../nfca_8cpp.html#a676326bf06691aca5ec34684cb005d67',1,'m5::nfc::a']]], + ['get_5fnumber_5fof_5fuser_5fblocks_15',['get_number_of_user_blocks',['../nfca_8cpp.html#a90f81b2afbf160114f08f351e7b6c16f',1,'m5::nfc::a::get_number_of_user_blocks()'],['../nfcf_8cpp.html#ad17a8af57383f9e4559a8352404000df',1,'m5::nfc::f::get_number_of_user_blocks()']]], + ['get_5fpermission_5foffset_16',['get_permission_offset',['../mifare_8hpp.html#ae4443b2bcf8e3735873b160d4aa69bad',1,'m5::nfc::a::mifare::classic']]], + ['get_5fsector_17',['get_sector',['../mifare_8hpp.html#a7d1a956b1580c8ef841113b53af0b9c5',1,'m5::nfc::a::mifare::classic']]], + ['get_5fsector_5ftrailer_5fblock_18',['get_sector_trailer_block',['../mifare_8hpp.html#afb8a0492f36aef7d5989faec3371876b',1,'m5::nfc::a::mifare::classic']]], + ['get_5fsector_5ftrailer_5fblock_5ffrom_5fsector_19',['get_sector_trailer_block_from_sector',['../mifare_8hpp.html#ae34e37b263820c44fcfd84ce3f3c5d61',1,'m5::nfc::a::mifare::classic']]], + ['get_5ftype_20',['get_type',['../nfca_8hpp.html#a2d5c5a55d9dbf508cb4fab2b0a7a3f24',1,'m5::nfc::a::st25ta']]], + ['get_5funit_5fsize_21',['get_unit_size',['../nfca_8cpp.html#a3e93f331f794cfd3ec5e1c7115e7bef5',1,'m5::nfc::a']]], + ['get_5furi_5fidc_5fstring_22',['get_uri_idc_string',['../ndef_8cpp.html#a06ad435246f351420fd0f90c562870ea',1,'m5::nfc::ndef']]], + ['get_5fuser_5farea_5fsize_23',['get_user_area_size',['../nfca_8cpp.html#aad24687ca20e8b303110f5bd6b399263',1,'m5::nfc::a::get_user_area_size()'],['../nfcf_8hpp.html#aa8fa452b71d896b1fb7ed52eab69a8d2',1,'m5::nfc::f::get_user_area_size()']]], + ['get_5fversion_24',['GET_VERSION',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca3e4d39d03ce99d4daaab3749af67ff13',1,'m5::nfc::a']]], + ['get_5fversion3_5fresponse_25',['get_version3_response',['../nfca_8cpp.html#acf8a3d3a8f2d6c01750bc4b7b99a9472',1,'m5::nfc::a']]], + ['getsysteminformaion_26',['GetSystemInformaion',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665a3a52b5070d76c0420ebb20c27f0245c3',1,'m5::nfc::v']]], + ['giantec_27',['Giantec',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a46de37a8bba55c26ae51a0dfb25d9588',1,'m5::nfc']]], + ['gieseckedevrient_28',['GieseckeDevrient',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a03e90cd6ff114c4c65759d84ffcefa6b',1,'m5::nfc']]], + ['guangzhousysur_29',['GuangzhouSysur',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a093d625de0dfea2426765a3bc319abbb',1,'m5::nfc']]] +]; diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 0000000..55a68b9 --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['has_5ffast_5fread_0',['has_fast_read',['../nfca_8hpp.html#a93c19461ed1494462e3b7da394cc8cee',1,'m5::nfc::a']]], + ['has_5fsak_5fdependent_5fbit_1',['has_sak_dependent_bit',['../nfca_8hpp.html#abc51c5a960972570a4bf6da0876541c0',1,'m5::nfc::a']]], + ['header_2',['header',['../structm5_1_1nfc_1_1f_1_1block__t.html#a744a7f95e6dd3082d954c7014f0530f8',1,'m5::nfc::f::block_t']]], + ['hidglobal_3',['HidGlobal',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a4ab9474eb236654f13ca79351f17811f',1,'m5::nfc']]], + ['historical_4',['historical',['../structm5_1_1nfc_1_1a_1_1_a_t_s.html#a6aef2d0ecc433934d2bdaf9baa87e1ca',1,'m5::nfc::a::ATS']]], + ['historical_5fbytes_5fto_5ftype_5',['historical_bytes_to_type',['../nfca_8cpp.html#ada4876b0d15c060036b8f88ee1e81297',1,'m5::nfc::a']]], + ['historical_5flen_6',['historical_len',['../structm5_1_1nfc_1_1a_1_1_a_t_s.html#a417bdba772f804afba6cb722d7857298',1,'m5::nfc::a::ATS']]], + ['hitachi_7',['Hitachi',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac76e5f5afd86d0ca4d39ff7bb3fd722d',1,'m5::nfc']]], + ['hitachiulsi_8',['HitachiUlsi',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ab9c7b1758e2866e63d2b7032e97519fb',1,'m5::nfc']]], + ['hlta_9',['HLTA',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca56861bff3805bf618d0a05acf1e9585e',1,'m5::nfc::a']]], + ['hltb_10',['HLTB',['../nfcb_8hpp.html#ae2a856e80084be96e7eab93c4007af8ca64f2b46f660a112d2cc1a68e522cb0e0',1,'m5::nfc::b']]], + ['hmt_11',['Hmt',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac74b16e4e10cd1c81587d247b2027e4c',1,'m5::nfc']]], + ['holtek_12',['Holtek',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a37bccf898dd6469a4dd10f82a5cc47a0',1,'m5::nfc']]], + ['http_13',['HTTP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a293c9ea246ff9985dc6f62a650f78986',1,'m5::nfc::ndef']]], + ['http_5fwww_14',['HTTP_WWW',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a610eb6d830ec73ea0cbb0db7e0dd21bb',1,'m5::nfc::ndef']]], + ['https_15',['HTTPS',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a0e8433f9a404f1f3ba601c14b026d321',1,'m5::nfc::ndef']]], + ['https_5fwww_16',['HTTPS_WWW',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6ab9522804eaa2e4afccb42a63de1c90a0',1,'m5::nfc::ndef']]], + ['huada_17',['Huada',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a722e7803fa055c9334fa490aeebc0730',1,'m5::nfc']]], + ['hynix_18',['Hynix',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a3934b9f6b38739f963327cc4b064e01f',1,'m5::nfc']]] +]; diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 0000000..f815f8f --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,83 @@ +var searchData= +[ + ['icref_0',['icRef',['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#af8991c3df46a22dc1813fb62ff50f867',1,'m5::nfc::v::PICC']]], + ['identifier_1',['identifier',['../classm5_1_1nfc_1_1ndef_1_1_record.html#ad1b2fab80216ddd14c0b06502d31a707',1,'m5::nfc::ndef::Record']]], + ['identifiersize_2',['identifierSize',['../classm5_1_1nfc_1_1ndef_1_1_record.html#af60a22933abd389082980c943def5ee3',1,'m5::nfc::ndef::Record']]], + ['identify_3',['identify',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#aaae6d1f24bed2b0e6bb13697fd11a9e5',1,'m5::nfc::NFCLayerA']]], + ['idm_4',['idm',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a4835868074d0ca82eade8bd58bae6d69',1,'m5::nfc::f::PICC']]], + ['idmasstring_5',['idmAsString',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ae9d6e0cdb4d3bdfbe96e1acd8b35d6f6',1,'m5::nfc::f::PICC']]], + ['idsmicrochip_6',['IdsMicrochip',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af7f51efd70b299e12224567cd5f770c5',1,'m5::nfc']]], + ['il_7',['IL',['../structm5_1_1nfc_1_1ndef_1_1_attribute.html#abcc268759d9f0afddb42facae947da77',1,'m5::nfc::ndef::Attribute']]], + ['imap_8',['IMAP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a0b787be1ef17df10d26758673ae24325',1,'m5::nfc::ndef']]], + ['impinj_9',['Impinj',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a880a57662cac3d08b47887189cfdf8fc',1,'m5::nfc']]], + ['increment_10',['INCREMENT',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca90cf1f5206b348a822cc1a453a587534',1,'m5::nfc::a']]], + ['infineon_11',['Infineon',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a1b71a9f258eec6d3c04498379ad293a0',1,'m5::nfc']]], + ['initiatoroperationmode_12',['InitiatorOperationMode',['../_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982',1,'m5::unit::st25r3916']]], + ['innovision_13',['Innovision',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac8c39a20f148af971c5a093ae8e180bc',1,'m5::nfc']]], + ['inprogress_14',['InProgress',['../structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html#a410e6ca7e4263d60017086ae8e5027f9a12d868c18cb29bf58f02b504be9033fd',1,'m5::nfc::ndef::type3::AttributeBlock']]], + ['ins_15',['INS',['../apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45',1,'m5::nfc::apdu']]], + ['insidetechnology_16',['InsideTechnology',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52afd293c248037daa2f4b675057d1ab9e3',1,'m5::nfc']]], + ['intel_17',['Intel',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aff97a9fdede09eaf6e1c8ec9f6a61dd5',1,'m5::nfc']]], + ['internalauthenticate_18',['internalAuthenticate',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ad82b91839ba166ddf3436bf778c53ca2',1,'m5::nfc::NFCLayerF']]], + ['invengo_19',['Invengo',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a7dd26199a38f403dc6c36623131bd550',1,'m5::nfc']]], + ['inventory_20',['Inventory',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665a4d604dd8f008145471dc845683399189',1,'m5::nfc::v']]], + ['irdaobex_21',['IRDAOBEX',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a8790d2ac467ea1bef0e6ddd6cdf5c294',1,'m5::nfc::ndef']]], + ['irq_22',['irq',['../structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html#aa5b72ea81b2cdf42644ddf560caf367f',1,'m5::unit::UnitST25R3916::config_t']]], + ['is_5fduplicate_23',['is_duplicate',['../desfire__file__system_8hpp.html#a53b4e87ed3527faa024b6671690cc8e6',1,'m5::nfc::a::mifare::desfire']]], + ['is_5ffile_5fsystem_5ffile_24',['is_file_system_file',['../nfca_8hpp.html#afbc51163bb9d06aa2d4d78bef4e99365',1,'m5::nfc::a']]], + ['is_5ffile_5fsystem_5fmemory_25',['is_file_system_memory',['../nfca_8hpp.html#a01bc1d95019f0f2247fc5a6494c7da26',1,'m5::nfc::a']]], + ['is_5fiso14443_5f3_26',['is_iso14443_3',['../nfca_8hpp.html#a1e0bb0c2934cf966515e67720500d0a8',1,'m5::nfc::a']]], + ['is_5fiso14443_5f4_27',['is_iso14443_4',['../nfca_8hpp.html#a921cc53e1ae6ed8b23a334f3bc2bf0b2',1,'m5::nfc::a']]], + ['is_5fmifare_28',['is_mifare',['../nfca_8hpp.html#a73dd2bd204c94f0609d92fe881437084',1,'m5::nfc::a']]], + ['is_5fmifare_5fclassic_29',['is_mifare_classic',['../nfca_8hpp.html#aff355cbd00ee527fa9fa5e797895bd07',1,'m5::nfc::a']]], + ['is_5fmifare_5fclassic_5fcompatible_30',['is_mifare_classic_compatible',['../nfca_8hpp.html#aab3301d301ddd00ea67b1b737376c021',1,'m5::nfc::a']]], + ['is_5fmifare_5fdesfire_31',['is_mifare_desfire',['../nfca_8hpp.html#a0b4e052a262a225acbb161354266ea5d',1,'m5::nfc::a']]], + ['is_5fmifare_5fplus_32',['is_mifare_plus',['../nfca_8hpp.html#ae7580ee2e43c1349e4e90d6e4443abb4',1,'m5::nfc::a']]], + ['is_5fmifare_5fultralight_33',['is_mifare_ultralight',['../nfca_8hpp.html#abbf43a3ba65f0b362de47ed4382e38ce',1,'m5::nfc::a']]], + ['is_5fmore_34',['is_more',['../desfire__file__system_8hpp.html#a044c0ecbff9667d3b30b6f09852b3671',1,'m5::nfc::a::mifare::desfire']]], + ['is_5fntag2_35',['is_ntag2',['../nfca_8hpp.html#a5183fa6cbb067b3a4aa00dad6c4c56aa',1,'m5::nfc::a']]], + ['is_5fntag4_36',['is_ntag4',['../nfca_8hpp.html#a49181c1838c1e0df61a9599b4fd6d621',1,'m5::nfc::a']]], + ['is_5fread_5fonly_5flite_37',['is_read_only_lite',['../nfcf_8cpp.html#af04bf1c332c7652d0279807a8eebec9d',1,'m5::nfc::f']]], + ['is_5fread_5fonly_5flite_5fs_38',['is_read_only_lite_s',['../nfcf_8cpp.html#af179bb4b95076fce93c9aac02c0deb72',1,'m5::nfc::f']]], + ['is_5fresponse_5fok_39',['is_response_OK',['../apdu_8hpp.html#a8661d1015977051ff244e69214a9f244',1,'m5::nfc::apdu::is_response_OK(const uint16_t sw12)'],['../apdu_8hpp.html#a02f2cf412748d5964bb0034cb40dd622',1,'m5::nfc::apdu::is_response_OK(const uint8_t sw[2])'],['../apdu_8hpp.html#adba4a567d412579a8447c2da5425e935',1,'m5::nfc::apdu::is_response_OK(const uint8_t sw1, const uint8_t sw2)']]], + ['is_5fsak_5fcompleted_40',['is_sak_completed',['../nfca_8hpp.html#a6316020b27e82ca7c8bbf5a66cc00381',1,'m5::nfc::a']]], + ['is_5fsak_5fcompleted_5f14443_5f4_41',['is_sak_completed_14443_4',['../nfca_8hpp.html#a71761585d3b73c7fe363568554722239',1,'m5::nfc::a']]], + ['is_5fsector_5ftrailer_5fblock_42',['is_sector_trailer_block',['../mifare_8hpp.html#a13f7a151f4f03e07a3cee1b669836019',1,'m5::nfc::a::mifare::classic']]], + ['is_5fst25ta_43',['is_st25ta',['../nfca_8hpp.html#a9d4572c50dafd47bdc9d0f5bc81ccc7c',1,'m5::nfc::a']]], + ['is_5fsuccessful_44',['is_successful',['../desfire__file__system_8hpp.html#aaacf49946d7267b32be70c6cd5f178f1',1,'m5::nfc::a::mifare::desfire']]], + ['is_5fterminator_5ftag_45',['is_terminator_tag',['../ndef_8hpp.html#ab24ec3033f1d129b0745a0b859e6aef3',1,'m5::nfc::ndef']]], + ['is_5fuser_5fblock_46',['is_user_block',['../nfca_8cpp.html#ad5568cdfb2f1c3f2e8b866a504615de6',1,'m5::nfc::a::is_user_block()'],['../nfcf_8hpp.html#a0e2254c895998ba49f34dbe5f93cfe23',1,'m5::nfc::f::is_user_block()']]], + ['is_5fvalid_5ftag_47',['is_valid_tag',['../ndef_8hpp.html#ae6dcb2f62fac2fff83b9f02a52656252',1,'m5::nfc::ndef']]], + ['isactive_48',['isActive',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a2865997fa2380a732230f9eb49a86a8c',1,'m5::nfc::NFCLayerA::isActive()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a11b95164e1ef71d9dfce3cad9ab3da29',1,'m5::nfc::NFCLayerB::isActive()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a7322e1fce003b6e46b97e3f22ee5426c',1,'m5::nfc::NFCLayerF::isActive()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#af49881f7956101a57692b9c4a28b61ef',1,'m5::nfc::NFCLayerV::isActive()']]], + ['isfilesystemfile_49',['isFileSystemFile',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a0f3383ce7c3852a045c2bf31101767cd',1,'m5::nfc::a::PICC']]], + ['isfilesystemmemory_50',['isFileSystemMemory',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a3a9e7c3c8284f0470fc6d28a9b0b1bb7',1,'m5::nfc::a::PICC']]], + ['isiso14443_5f4_51',['isISO14443_4',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ac177ad2e1fb7b4a409d1426d682105bd',1,'m5::nfc::a::PICC::isISO14443_4()'],['../structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#a7d8d9bd5c71fedb940098e2b5b6530ac',1,'m5::nfc::b::PICC::isISO14443_4()']]], + ['ismessagetlv_52',['isMessageTLV',['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a9388477e6870fd2f02d3c4532da655fc',1,'m5::nfc::ndef::TLV']]], + ['ismifare_53',['isMifare',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a5116b9ad475f7af0ec25cc4b66a5810b',1,'m5::nfc::a::PICC']]], + ['ismifareclassic_54',['isMifareClassic',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a21fcd6de5187d4a0a89fae5b10f76ad8',1,'m5::nfc::a::PICC']]], + ['ismifareclassiccompatible_55',['isMifareClassicCompatible',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a508df2de55b8c4ea57b32079ce272a48',1,'m5::nfc::a::PICC']]], + ['ismifaredesfire_56',['isMifareDESFire',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ad0673467160266853fe627752b66c320',1,'m5::nfc::a::PICC']]], + ['ismifareplus_57',['isMifarePlus',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ac576c8e46ed249dafeee13a87aaceffb',1,'m5::nfc::a::PICC']]], + ['ismifarepluss_58',['isMifarePlusS',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a99c9f87543996a12a39173dfb34edfdd',1,'m5::nfc::a::PICC']]], + ['ismifareplusse_59',['isMifarePlusSE',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a542372967ed8d66b81e516a577c05ffd',1,'m5::nfc::a::PICC']]], + ['ismifareplusx_60',['isMifarePlusX',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#abc2eb6ac544e02926b29b1cf83448f39',1,'m5::nfc::a::PICC']]], + ['ismifareultralight_61',['isMifareUltralight',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a8f0546bace218cbda64584054e5863db',1,'m5::nfc::a::PICC']]], + ['isnfcmode_62',['isNFCMode',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a895b6141ec3be0964c15ce788ceb434d',1,'m5::unit::UnitST25R3916']]], + ['isntag2_63',['isNTAG2',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a921b4be25c7923c4b7f68351d26cf734',1,'m5::nfc::a::PICC']]], + ['isnulltlv_64',['isNullTLV',['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#ac47de838e481a6c48dfccd2dee8dcc07',1,'m5::nfc::ndef::TLV']]], + ['iso14443a_65',['ISO14443A',['../_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982a4e73d2cbb6b026e3362f1627b91f28e5',1,'ISO14443Am5::unit::st25r3916'],['../_s_t25_r3916__definition_8hpp.html#a7d85ed3cdee95b0eab2dff6373824137a4e73d2cbb6b026e3362f1627b91f28e5',1,'ISO14443Am5::unit::st25r3916']]], + ['iso14443abitrate_66',['ISO14443ABitrate',['../_s_t25_r3916__definition_8hpp.html#a7d85ed3cdee95b0eab2dff6373824137a7fc22f6cc29c597048b17b6db90613e9',1,'m5::unit::st25r3916']]], + ['iso14443b_67',['ISO14443B',['../_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982a83d3cb2d1335620163a683ea43dc5e0b',1,'m5::unit::st25r3916']]], + ['iso_5f14443_5f4_68',['ISO_14443_4',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9afa9e9f88672e820b61f058ca42323bb7',1,'m5::nfc::a']]], + ['iso_5f18092_69',['ISO_18092',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9ad68f4a068cb3b370cffbffd6312931fd',1,'m5::nfc::a']]], + ['isodep_70',['IsoDEP',['../classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html',1,'m5::nfc::isodep']]], + ['isodep_71',['isoDEP',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a7959e21229eebefebf607d65dd2ca8cd',1,'m5::nfc::NFCLayerA::isoDEP()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a8f40ff3e5e6bc0018e3e635229c1cbbc',1,'m5::nfc::NFCLayerB::isoDEP()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a2d1a4a1c91d0a054640c806f8ba9d42f',1,'m5::nfc::NFCLayerInterface::isoDEP()']]], + ['isodep_72',['isodep',['../namespaceisodep.html',1,'']]], + ['isodep_2ecpp_73',['isoDEP.cpp',['../iso_d_e_p_8cpp.html',1,'']]], + ['isodep_2ehpp_74',['isoDEP.hpp',['../iso_d_e_p_8hpp.html',1,'']]], + ['issm_75',['Issm',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a5e5fca57283852e1ea45f23382e906d9',1,'m5::nfc']]], + ['isst25ta_76',['isST25TA',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a6b515216b97bd8384aac681c0cc96bea',1,'m5::nfc::a::PICC']]], + ['isterminatortlv_77',['isTerminatorTLV',['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#ac945d81eab0f1763d351a1d899bc05f3',1,'m5::nfc::ndef::TLV']]], + ['isuserblock_78',['isUserBlock',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ad40b59ec2192f8b801bbce3753398c28',1,'m5::nfc::a::PICC::isUserBlock()'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ad84ac714bd3397f8cb173b7b8651ff0c',1,'m5::nfc::f::PICC::isUserBlock()']]], + ['isvalidformat_79',['isValidFormat',['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a9bd9f2c96b4ef91fa2c34e456dc16c13',1,'m5::nfc::ndef::NDEFLayer']]] +]; diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 0000000..77dca89 --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['key_0',['Key',['../mifare_8hpp.html#af1db86974ac295e399755ea6fb89e792',1,'m5::nfc::a::mifare::classic']]], + ['key_5fsettings1_1',['key_settings1',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#a01ec5ab667daa4c7a6ba34e656c0a5e8',1,'m5::nfc::a::mifare::desfire::NdefFormatOptions']]], + ['key_5fsettings2_2',['key_settings2',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#ae7a773580607eadcca503bd8a10a3724',1,'m5::nfc::a::mifare::desfire::NdefFormatOptions']]], + ['key_5fveriosn_5fnone_3',['KEY_VERIOSN_NONE',['../nfcf_8hpp.html#a826f0b02bdb00fafe162f52e5a90c7c4',1,'m5::nfc::f']]], + ['kovio_4',['Kovio',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae04e18f6c05ae7f22b3f84810232ddf7',1,'m5::nfc']]] +]; diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 0000000..3b6edb6 --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['last_0',['Last',['../apdu_8hpp.html#a74836436e907c80c9a02040d912e6400ad55b30607c2a9a2616347d6edb789f6b',1,'m5::nfc::apdu']]], + ['last_5fuser_5fblock_1',['last_user_block',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a347f20c1818de724908bba309e42909f',1,'m5::nfc::NFCLayerA::last_user_block()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a36c1c50e191cbcc8755456520c61561d',1,'m5::nfc::NFCLayerB::last_user_block()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a956455e727841c422a74291153826b23',1,'m5::nfc::NFCLayerF::last_user_block()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#ad3718fd96e63ae118ec7f46f65ad9dce',1,'m5::nfc::NFCLayerInterface::last_user_block()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a14c86c20699947d6b66b7d039ba87d0f',1,'m5::nfc::NFCLayerV::last_user_block()']]], + ['lastselectdata_2',['lastSelectData',['../classm5_1_1nfc_1_1_file_system.html#a7d501a0770b5a34d349e5809b4f895f4',1,'m5::nfc::FileSystem']]], + ['lastuserblock_3',['lastUserBlock',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a3a89f0ac9f0e12dabd86b4cd45d760de',1,'m5::nfc::a::PICC::lastUserBlock()'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a3e1acb785f96fe267425388e2519b544',1,'m5::nfc::f::PICC::lastUserBlock()'],['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#a5fa2805be205b881abbc014edd16514d',1,'m5::nfc::v::PICC::lastUserBlock()']]], + ['legic_4',['Legic',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a8e1dad2094b9d0f7df48aed4f7423a29',1,'m5::nfc']]], + ['len_5',['len',['../structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#a23282914a0c23b080895fb06291de1aa',1,'m5::nfc::apdu::TLV::len'],['../structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html#a82f1b76ce19c48b20b426d9ccd88145d',1,'m5::nfc::ndef::type4::FileControlTLV::len']]], + ['lg_6',['LG',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a3138b8e6061fdf7cfaaa79279175cbcd',1,'m5::nfc']]], + ['list_7',['Todo List',['../todo.html',1,'']]], + ['listenerst25r3916fora_8',['ListenerST25R3916ForA',['../structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a.html',1,'m5::nfc']]], + ['listenerst25r3916forf_9',['ListenerST25R3916ForF',['../structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f.html',1,'m5::nfc']]], + ['lock_5fsig_10',['LOCK_SIG',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca229bbf49bdf5d7f5e0e759e078b11984',1,'m5::nfc::a']]], + ['lockcontrol_11',['LockControl',['../ndef_8hpp.html#ace18f3439d147659696eec175e13e03aa48c38339a630d01cabdda99ea58ea368',1,'m5::nfc::ndef']]], + ['lsitec_12',['LsiTec',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a9b9abf8402a7357bfc8a4972855eb0c1',1,'m5::nfc']]] +]; diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 0000000..3231354 --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,104 @@ +var searchData= +[ + ['m5_0',['m5',['../namespacem5.html',1,'']]], + ['m5_3a_3anfc_3a_3af_3a_3alite_1',['lite',['../namespacem5_1_1nfc_1_1f_1_1lite.html',1,'m5::nfc::f']]], + ['m5_3a_3anfc_3a_3af_3a_3alite_5fs_2',['lite_s',['../namespacem5_1_1nfc_1_1f_1_1lite__s.html',1,'m5::nfc::f']]], + ['m5unit_20nfc_3',['M5Unit-NFC',['../index.html',1,'']]], + ['m5unitunifiednfc_2ehpp_4',['M5UnitUnifiedNFC.hpp',['../_m5_unit_unified_n_f_c_8hpp.html',1,'']]], + ['magellan_5',['Magellan',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a1054a39cbec2d48f2b30147ddba51b60',1,'m5::nfc']]], + ['magic_5fno_5fcc4_6',['MAGIC_NO_CC4',['../ndef_8hpp.html#a308d8a53d9594f26be5d2c675836267f',1,'m5::nfc::ndef']]], + ['magic_5fno_5fcc8_7',['MAGIC_NO_CC8',['../ndef_8hpp.html#aca5cb6a1db30073fcc361b76dcabe324',1,'m5::nfc::ndef']]], + ['mailto_8',['MAILTO',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a43b8b3d092408ddc2ae9af844fe50850',1,'m5::nfc::ndef']]], + ['make_5fapdu_5fcase1_9',['make_apdu_case1',['../apdu_8hpp.html#a3f8d54d3187aa2aebd756f6da9523351',1,'m5::nfc::apdu']]], + ['make_5fapdu_5fcase2_10',['make_apdu_case2',['../apdu_8hpp.html#a4a2d632c8b477931e48b04663927ce01',1,'m5::nfc::apdu']]], + ['make_5fapdu_5fcase3_11',['make_apdu_case3',['../apdu_8hpp.html#aca08fb7d12f53387b2a9d8350e01499d',1,'m5::nfc::apdu']]], + ['make_5fapdu_5fcase4_12',['make_apdu_case4',['../apdu_8hpp.html#aa98f1a34a0201b9011bab4fe0c3af7ff',1,'m5::nfc::apdu']]], + ['make_5fapdu_5fcommand_13',['make_apdu_command',['../apdu_8cpp.html#ade33069f0d2d930a92d79591644b8ed8',1,'m5::nfc::apdu']]], + ['make_5ffc_5fbits_14',['make_fc_bits',['../ndef_8hpp.html#a05083607dc86b03cc5e3d77b1f19cb4e',1,'m5::nfc::ndef::type4']]], + ['make_5fnative_5fwrap_5fcommand_15',['make_native_wrap_command',['../desfire__file__system_8cpp.html#a5a527aa739178651a434b5907e22d7b3',1,'m5::nfc::a::mifare::desfire']]], + ['make_5fpersonalized_5fcard_5fkey_5flite_5fs_16',['make_personalized_card_key_lite_s',['../nfcf_8cpp.html#a926f212f3a65e9312101a1ce9d8733ca',1,'m5::nfc::f']]], + ['make_5fsession_5fkey_17',['make_session_key',['../nfcf_8cpp.html#a79ce96cae934525470db73d1df2de74a',1,'m5::nfc::f']]], + ['make_5ftag_5fbits_18',['make_tag_bits',['../ndef_8hpp.html#a66bd75961ea80daa382440461c753e39',1,'m5::nfc::ndef']]], + ['malaysiamicro_19',['MalaysiaMicro',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52acee877b78c56f95d998c9b5113c18519',1,'m5::nfc']]], + ['manufacturer_5fid_2ehpp_20',['manufacturer_id.hpp',['../manufacturer__id_8hpp.html',1,'']]], + ['manufacturerid_21',['ManufacturerId',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52',1,'m5::nfc']]], + ['mapping_5fversion_22',['mapping_version',['../structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.html#a79706bac5c75f18a30cd5c1975c19616',1,'m5::nfc::ndef::type4::CapabilityContainer']]], + ['masktech_23',['Masktech',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a612c3eab9458bb721f9f906f3265625b',1,'m5::nfc']]], + ['master_5ffile_5fid_24',['master_file_id',['../apdu_8hpp.html#a78d50d5bfaabce84eeec859500b2422d',1,'m5::nfc::apdu']]], + ['matsushita_25',['Matsushita',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a6a9eb6ca4f97808c45c01063c5f45d97',1,'m5::nfc']]], + ['max_5ffifo_5fdepth_26',['MAX_FIFO_DEPTH',['../_s_t25_r3916__definition_8hpp.html#a23d8ebdc9efd6affca9566a3ad523108',1,'m5::unit::st25r3916']]], + ['maximum_5ffifo_5fdepth_27',['maximum_fifo_depth',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#adc1ce9c8c03feea93406d287df7b355b',1,'m5::nfc::NFCLayerA::maximum_fifo_depth()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a282835821d919abdf7625609e3bf9d33',1,'m5::nfc::NFCLayerB::maximum_fifo_depth()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a5de1bdcebe2ccdb11afce01c935dc02c',1,'m5::nfc::NFCLayerF::maximum_fifo_depth()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a4ac8de121c4bea7c52fd304956b01c82',1,'m5::nfc::NFCLayerInterface::maximum_fifo_depth()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#ac5bc6049f86f77f97fd363a096be8800',1,'m5::nfc::NFCLayerV::maximum_fifo_depth()']]], + ['maximum_5ffile_5fno_28',['MAXIMUM_FILE_NO',['../desfire__file__system_8hpp.html#a25dc413db08d6739bacf7c73e3c15845',1,'m5::nfc::a::mifare::desfire']]], + ['maximum_5ffiles_29',['MAXIMUM_FILES',['../desfire__file__system_8hpp.html#a7c16fac19c4923b99c260753d2798ad5',1,'m5::nfc::a::mifare::desfire']]], + ['maximum_5fframe_5flength_30',['maximum_frame_length',['../nfcb_8cpp.html#af1d62bed3e0436e8c41b431303432a00',1,'m5::nfc::b']]], + ['maximum_5fframe_5flength_5fbits_31',['maximum_frame_length_bits',['../nfcb_8hpp.html#ac5a5d80ef3490cda922538211023db99',1,'m5::nfc::b']]], + ['maximum_5fread_5fblocks_32',['maximum_read_blocks',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a3b3990b2beea5f67e15f08c4ba99c796',1,'m5::nfc::NFCLayerF::maximum_read_blocks()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a1b452839287e760cea354845bb6e7e0a',1,'m5::nfc::NFCLayerInterface::maximum_read_blocks()']]], + ['maximum_5fwrite_5fblocks_33',['maximum_write_blocks',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#acac7c970e5610b59b0f81e508e636b6d',1,'m5::nfc::NFCLayerF::maximum_write_blocks()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a94e218fa9ee80900a96cdaded7d1d5f6',1,'m5::nfc::NFCLayerInterface::maximum_write_blocks()']]], + ['maximumreadblocks_34',['maximumReadBlocks',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ad034f19064f3e2e66e13758a72e38b23',1,'m5::nfc::f::PICC']]], + ['maximumwriteblocks_35',['maximumWriteBlocks',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ab1ca680451a84ccf5b3bda589fb03ca3',1,'m5::nfc::f::PICC']]], + ['mb_36',['MB',['../structm5_1_1nfc_1_1ndef_1_1_attribute.html#a6f92590475ac4f362476493d31384676',1,'m5::nfc::ndef::Attribute']]], + ['me_37',['ME',['../structm5_1_1nfc_1_1ndef_1_1_attribute.html#a67ff94b882addccc5e2be2df54b59f76',1,'m5::nfc::ndef::Attribute']]], + ['mediatek_38',['Mediatek',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a0d1a8643ff45ff9cbdb8ec3915c0f674',1,'m5::nfc']]], + ['melexis_39',['Melexis',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a9f3451b6a6b2570d821b0cdbabaf0d75',1,'m5::nfc']]], + ['memorycontrol_40',['MemoryControl',['../ndef_8hpp.html#ace18f3439d147659696eec175e13e03aa8b38c362d0e19c18c5b556991a14f2b1',1,'m5::nfc::ndef']]], + ['message_41',['Message',['../ndef_8hpp.html#ace18f3439d147659696eec175e13e03aa4c2a8fe7eaf24721cc7a9f0175115bd4',1,'Messagem5::nfc::ndef'],['../ndef_8hpp.html#a3d88baf2d1668d0f00d9c5a2397f9c2fa4c2a8fe7eaf24721cc7a9f0175115bd4',1,'Messagem5::nfc::ndef::type4']]], + ['microsensys_42',['Microsensys',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a585ac9c856d20c86b3199e2f97382f7c',1,'m5::nfc']]], + ['mifare_43',['mifare',['../namespacemifare.html',1,'']]], + ['mifare_2ecpp_44',['mifare.cpp',['../mifare_8cpp.html',1,'']]], + ['mifare_2ehpp_45',['mifare.hpp',['../mifare_8hpp.html',1,'']]], + ['mifare_5fclassic_5f1k_46',['MIFARE_Classic_1K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a885bf4a9627b8f569c641a5c9b1f17d0',1,'m5::nfc::a']]], + ['mifare_5fclassic_5f2k_47',['MIFARE_Classic_2K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9aebf3f45c13853244047f9c4ee9bfdb93',1,'m5::nfc::a']]], + ['mifare_5fclassic_5f4k_48',['MIFARE_Classic_4K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9af3a58c5e5fe7dd21fffa7e40f437245c',1,'m5::nfc::a']]], + ['mifare_5fclassic_5fcrypto1_2ehpp_49',['mifare_classic_crypto1.hpp',['../mifare__classic__crypto1_8hpp.html',1,'']]], + ['mifare_5fclassic_5fmini_50',['MIFARE_Classic_Mini',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a4fe50583f84464fb1c953d580f6e161f',1,'m5::nfc::a']]], + ['mifare_5fdesfire_5f2k_51',['MIFARE_DESFire_2K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a520aede6c95d19df20939d3b54c0a38b',1,'m5::nfc::a']]], + ['mifare_5fdesfire_5f4k_52',['MIFARE_DESFire_4K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a41a2a80772adcae1b466b583d351fac8',1,'m5::nfc::a']]], + ['mifare_5fdesfire_5f8k_53',['MIFARE_DESFire_8K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a70aa200ac0fb56ca9b8f5b0a773ce6c5',1,'m5::nfc::a']]], + ['mifare_5fdesfire_5flight_54',['MIFARE_DESFire_Light',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9ad0fd58a3c82a0fd97e41c1fe1e3690b5',1,'m5::nfc::a']]], + ['mifare_5fplus_5f2k_55',['MIFARE_Plus_2K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9aa99a32edc51c1e4a35bb462cd6a63107',1,'m5::nfc::a']]], + ['mifare_5fplus_5f4k_56',['MIFARE_Plus_4K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a23dfdac1eb44aacf66b01c02a3ec6a28',1,'m5::nfc::a']]], + ['mifare_5fplus_5fse_57',['MIFARE_Plus_SE',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9aa6c76c717d761fabff1600bcce01102d',1,'m5::nfc::a']]], + ['mifare_5fultralight_58',['MIFARE_Ultralight',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a6591940064506c23ff6b6ba078c91376',1,'m5::nfc::a']]], + ['mifare_5fultralight_5fev1_5f1_59',['MIFARE_Ultralight_EV1_1',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a0461b90b9920b9c4b1aab58e453d6fa5',1,'m5::nfc::a']]], + ['mifare_5fultralight_5fev1_5f2_60',['MIFARE_Ultralight_EV1_2',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a0bb8b6c6d660b13d53a47087d3eb23d0',1,'m5::nfc::a']]], + ['mifare_5fultralight_5fnano_61',['MIFARE_Ultralight_Nano',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a3417432797b50ed949c95e771f71c4a7',1,'m5::nfc::a']]], + ['mifare_5fultralightc_62',['MIFARE_UltralightC',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a9be14fcfd48418057018a4fdc4a15e11',1,'m5::nfc::a']]], + ['mifareclassicauthenticatea_63',['mifareClassicAuthenticateA',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#ace7c09b993fdabbea85583b2e9f4d49c',1,'m5::nfc::NFCLayerA::mifareClassicAuthenticateA()'],['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#afbf8c3d8c5f90f735187d6ed5276f07a',1,'m5::unit::UnitST25R3916::mifareClassicAuthenticateA()']]], + ['mifareclassicauthenticateb_64',['mifareClassicAuthenticateB',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac0661dac6e7ca06ef108871cc822b2c8',1,'m5::nfc::NFCLayerA::mifareClassicAuthenticateB()'],['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a53e9646474a0a2c27dde6e156b646f0b',1,'m5::unit::UnitST25R3916::mifareClassicAuthenticateB()']]], + ['mifareclassicdecrementvalueblock_65',['mifareClassicDecrementValueBlock',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a86871cce9cdaf6ebb5bb2bdfdf860248',1,'m5::nfc::NFCLayerA']]], + ['mifareclassicincrementvalueblock_66',['mifareClassicIncrementValueBlock',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#afdcc37375bccbdf436826b2f1f973212',1,'m5::nfc::NFCLayerA']]], + ['mifareclassicisvalueblock_67',['mifareClassicIsValueBlock',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a193ff49621bbb0b026c4439781803f03',1,'m5::nfc::NFCLayerA']]], + ['mifareclassicreadaccesscondition_68',['mifareClassicReadAccessCondition',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#add99392d776e0757afc345dabec6dffd',1,'m5::nfc::NFCLayerA']]], + ['mifareclassicreadvalueblock_69',['mifareClassicReadValueBlock',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a147ccb42b8a90d435c7018595e980026',1,'m5::nfc::NFCLayerA']]], + ['mifareclassicrestorevalueblock_70',['mifareClassicRestoreValueBlock',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#aebcd787d8bc53fd994135a0507f80abe',1,'m5::nfc::NFCLayerA']]], + ['mifareclassictransfervalueblock_71',['mifareClassicTransferValueBlock',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a0d05ef0dfeba94dfee5ecfeae7363776',1,'m5::nfc::NFCLayerA']]], + ['mifareclassicvalueblock_72',['mifareClassicValueBlock',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a989a9e6f48697e254582e47e8e39ddc8',1,'m5::unit::UnitST25R3916']]], + ['mifareclassicwriteaccesscondition_73',['mifareClassicWriteAccessCondition',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac3d2c944c286800b9e1147674172f248',1,'m5::nfc::NFCLayerA']]], + ['mifareclassicwritevalueblock_74',['mifareClassicWriteValueBlock',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a654141401bac8480c56593bf476a822a',1,'m5::nfc::NFCLayerA']]], + ['mifareplusupgradesecuritylevel1_75',['mifarePlusUpgradeSecurityLevel1',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a1c80db943efcf56c086c5d70ac1ad0d4',1,'m5::nfc::NFCLayerA']]], + ['mifareplusupgradesecuritylevel2_76',['mifarePlusUpgradeSecurityLevel2',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a1c28bbf7fb09613378f7bc3150d091f7',1,'m5::nfc::NFCLayerA']]], + ['mifareplusupgradesecuritylevel3_77',['mifarePlusUpgradeSecurityLevel3',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#ad305314219e83a82d21ed46c163e18b1',1,'m5::nfc::NFCLayerA']]], + ['mifareultralightcauthenticate_78',['mifareUltralightCAuthenticate',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a4d73b0666a5550b26b70cfbcc24bb6c4',1,'m5::nfc::NFCLayerA']]], + ['mifareultralightchangeformattondef_79',['mifareUltralightChangeFormatToNDEF',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a55e8d544bdd962d449d1b033fbc8bd75',1,'m5::nfc::NFCLayerA']]], + ['mikron_80',['Mikron',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af9ff1352d0b347fc14825ad997aa4fe5',1,'m5::nfc']]], + ['mimemedia_81',['MIMEMedia',['../ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153a3b797d40b6c61542a8763c8c2b131e14',1,'m5::nfc::ndef']]], + ['minimum_5ffile_5fno_82',['MINIMUM_FILE_NO',['../desfire__file__system_8hpp.html#a7e744743d08b8420d7e969f3df682be8',1,'m5::nfc::a::mifare::desfire']]], + ['mitsubishi_83',['Mitsubishi',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a2fab5d8de22382790ca8eeb34d389b73',1,'m5::nfc']]], + ['mlc_84',['mlc',['../structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.html#a21c08a70c675ae1064885efb866e9d85',1,'m5::nfc::ndef::type4::CapabilityContainer']]], + ['mle_85',['mle',['../structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.html#a418b248673f5174571abd7f1c55755fb',1,'m5::nfc::ndef::type4::CapabilityContainer']]], + ['mode_86',['Mode',['../nfcf_8hpp.html#a6959bdf0a008260dcec938adc6a7db5c',1,'m5::nfc::f::standard::Mode'],['../namespacem5_1_1nfc_1_1f_1_1lite__s.html#a8205d1ee70e7b5a0d9c073f9e8916b90',1,'m5::nfc::f::lite_s::Mode']]], + ['mode_87',['mode',['../structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html#a8cacea206ebc77e6fe882f08c642c21a',1,'m5::unit::UnitST25R3916::config_t']]], + ['mode0_88',['Mode0',['../nfcf_8hpp.html#a6959bdf0a008260dcec938adc6a7db5ca315436bae0e85636381fc939db06aee5',1,'m5::nfc::f::standard']]], + ['mode00_89',['Mode00',['../namespacem5_1_1nfc_1_1f_1_1lite__s.html#a8205d1ee70e7b5a0d9c073f9e8916b90ada3f9688888dfbaa06ca923662130978',1,'m5::nfc::f::lite_s']]], + ['mode01_90',['Mode01',['../namespacem5_1_1nfc_1_1f_1_1lite__s.html#a8205d1ee70e7b5a0d9c073f9e8916b90ae2094a9b36ca75c979deaf1a582fbfc5',1,'m5::nfc::f::lite_s']]], + ['mode1_91',['Mode1',['../nfcf_8hpp.html#a6959bdf0a008260dcec938adc6a7db5ca7a2ea225a084605104f8c39b3ae9657c',1,'m5::nfc::f::standard']]], + ['mode10_92',['Mode10',['../namespacem5_1_1nfc_1_1f_1_1lite__s.html#a8205d1ee70e7b5a0d9c073f9e8916b90a8fec38fc491b842379a834279aa2ca03',1,'m5::nfc::f::lite_s']]], + ['mode11_93',['Mode11',['../namespacem5_1_1nfc_1_1f_1_1lite__s.html#a8205d1ee70e7b5a0d9c073f9e8916b90a4bc80f64d5ab44497ce35569d1bc12b4',1,'m5::nfc::f::lite_s']]], + ['mode2_94',['Mode2',['../nfcf_8hpp.html#a6959bdf0a008260dcec938adc6a7db5ca04c542f260d16590ec60c594f67a30e7',1,'m5::nfc::f::standard']]], + ['mode3_95',['Mode3',['../nfcf_8hpp.html#a6959bdf0a008260dcec938adc6a7db5cab68fa4884da8d22e83f37b4f209295f1',1,'m5::nfc::f::standard']]], + ['modulationmode_96',['ModulationMode',['../nfcv_8hpp.html#aba1eff44affc1b08f4f4792a10d50240',1,'m5::nfc::v']]], + ['motorola_97',['Motorola',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a2ed1afe3c9215523e4272f46e6186b31',1,'m5::nfc']]], + ['mstar_98',['Mstar',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a1447363e9eef717d4c85472496648bb1',1,'m5::nfc']]], + ['multibytemarker_99',['MultibyteMarker',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae6ff72d7749e09da7eaaee01a5b553f3',1,'m5::nfc']]], + ['mutosmart_100',['MutoSmart',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aab1d882780c905696cfa077c628c50a9',1,'m5::nfc']]] +]; diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 0000000..c9e82c1 --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,108 @@ +var searchData= +[ + ['na_0',['NA',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6ad4cd0dabcf4caa22ad92fab40844c786',1,'m5::nfc::ndef']]], + ['ndef_1',['ndef',['../namespacendef.html',1,'']]], + ['ndef_2ecpp_2',['ndef.cpp',['../ndef_8cpp.html',1,'']]], + ['ndef_2ehpp_3',['ndef.hpp',['../ndef_8hpp.html',1,'']]], + ['ndef_5faid_4',['NDEF_AID',['../ndef_8hpp.html#a285ab1289637acc0eb4a10024eb5c9af',1,'m5::nfc::ndef::type4']]], + ['ndef_5fapp_5ffid_5',['NDEF_APP_FID',['../ndef_8hpp.html#a06299723b4b46bf31bc4a7c785bd8a39',1,'m5::nfc::ndef::type4']]], + ['ndef_5ffile_5fid_6',['NDEF_FILE_ID',['../ndef_8hpp.html#ad001c38bd008a9626042aea6a4ee9f7d',1,'m5::nfc::ndef::type4']]], + ['ndef_5ffile_5fid_7',['ndef_file_id',['../structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html#af16c9822651aeb39c6f40a2a4d0472be',1,'m5::nfc::ndef::type4::FileControlTLV']]], + ['ndef_5ffile_5fno_8',['ndef_file_no',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#aeeddf954a83b9e560020d75ca45ba0f5',1,'m5::nfc::a::mifare::desfire::NdefFormatOptions']]], + ['ndef_5ffile_5fsize_9',['ndef_file_size',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#a9264ee8dc52c9f803d39af55ca08eff2',1,'m5::nfc::a::mifare::desfire::NdefFormatOptions::ndef_file_size'],['../structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html#aca80e358b4e069110c6cf4f5bd95fd5d',1,'m5::nfc::ndef::type4::FileControlTLV::ndef_file_size']]], + ['ndef_5flayer_2ecpp_10',['ndef_layer.cpp',['../ndef__layer_8cpp.html',1,'']]], + ['ndef_5flayer_2ehpp_11',['ndef_layer.hpp',['../ndef__layer_8hpp.html',1,'']]], + ['ndef_5fmajor_5fversion_12',['NDEF_MAJOR_VERSION',['../ndef_8hpp.html#aeab5133bf9d37bc2944974b1b8212c16',1,'m5::nfc::ndef']]], + ['ndef_5fminor_5fversion_13',['NDEF_MINOR_VERSION',['../ndef_8hpp.html#a0e1df989692be92d642749c670133450',1,'m5::nfc::ndef']]], + ['ndef_5frecord_2ecpp_14',['ndef_record.cpp',['../ndef__record_8cpp.html',1,'']]], + ['ndef_5frecord_2ehpp_15',['ndef_record.hpp',['../ndef__record_8hpp.html',1,'']]], + ['ndef_5ftlv_2ecpp_16',['ndef_tlv.cpp',['../ndef__tlv_8cpp.html',1,'']]], + ['ndef_5ftlv_2ehpp_17',['ndef_tlv.hpp',['../ndef__tlv_8hpp.html',1,'']]], + ['ndefformatoptions_18',['NdefFormatOptions',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html',1,'m5::nfc::a::mifare::desfire']]], + ['ndefisvalidformat_19',['ndefIsValidFormat',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a67ad153f9d8d8a13d05bc4b8048dbf7b',1,'m5::nfc::NFCLayerA::ndefIsValidFormat()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ad1520432e55adb603947654d20161360',1,'m5::nfc::NFCLayerF::ndefIsValidFormat()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a2a850165ceb42a91169fac1b6aaef55c',1,'m5::nfc::NFCLayerV::ndefIsValidFormat()']]], + ['ndeflayer_20',['NDEFLayer',['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html',1,'m5::nfc::ndef']]], + ['ndefpreparedesfire_21',['ndefPrepareDesfire',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a59f94b281ece2f3f24ec537613b7b2c1',1,'m5::nfc::NFCLayerA']]], + ['ndefpreparedesfirelight_22',['ndefPrepareDesfireLight',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#acd1252e937569b38de4d1e0c15d7217d',1,'m5::nfc::NFCLayerA']]], + ['ndefread_23',['ndefRead',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a9434350fb2af7119b16cdcb1170fb66b',1,'m5::nfc::NFCLayerA::ndefRead(m5::nfc::ndef::TLV &msg)'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a873bfadfc460abc6742b06fcbc6c63dd',1,'m5::nfc::NFCLayerA::ndefRead(std::vector< m5::nfc::ndef::TLV > &tlvs, const m5::nfc::ndef::TagBits tagBits=m5::nfc::ndef::tagBitsAll)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#abe7f8fa12217d61879a285a6f49e3dc7',1,'m5::nfc::NFCLayerF::ndefRead()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a70860961bacb0e5b48af02f58600d3af',1,'m5::nfc::NFCLayerV::ndefRead(m5::nfc::ndef::TLV &msg)']]], + ['ndefreadcapabilitycontainer_24',['ndefReadCapabilityContainer',['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a520d660f41006af09c2475652df9a2fe',1,'m5::nfc::NFCLayerV']]], + ['ndefwrite_25',['ndefWrite',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#ad2434059c53afed91402c9ccffd156b6',1,'m5::nfc::NFCLayerA::ndefWrite(const m5::nfc::ndef::TLV &msg)'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a65823efd2a5958d16857bee1ae9bf050',1,'m5::nfc::NFCLayerA::ndefWrite(const std::vector< m5::nfc::ndef::TLV > &tlvs)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a090972d382390655204396fa987ed61b',1,'m5::nfc::NFCLayerF::ndefWrite()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a1c516b5988e3eebb4d6effc29f284c2b',1,'m5::nfc::NFCLayerV::ndefWrite(const m5::nfc::ndef::TLV &msg)']]], + ['ndefwritecapabilitycontainer_26',['ndefWriteCapabilityContainer',['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#ab32fa4e8ef5c36caabbae5804a4742e5',1,'m5::nfc::NFCLayerV']]], + ['nec_27',['NEC',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a7e70c0503999340437163065dbd1b1b7',1,'m5::nfc']]], + ['new_5ffile_5fid_28',['new_file_id',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename.html#a07ce29cbaba0b257bb68b91d70121b45',1,'m5::nfc::a::mifare::desfire::FileRename']]], + ['new_5ffile_5fno_29',['new_file_no',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename.html#aae67c09f69a3c885f2c43422bb45194a',1,'m5::nfc::a::mifare::desfire::FileRename']]], + ['news_30',['NEWS',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6aff4e2dc4962dc25a1512353299992c8d',1,'m5::nfc::ndef']]], + ['next_31',['Next',['../apdu_8hpp.html#a74836436e907c80c9a02040d912e6400a10ac3d04253ef7e1ddc73e6091c0cd55',1,'m5::nfc::apdu']]], + ['nfc_32',['NFC',['../index.html',1,'M5Unit-NFC'],['../nfc_8hpp.html#a5e5f58799f82b1611c0309f953cc2c6f',1,'m5::nfc::NFC'],['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6ad6fef5d168d085196fddede17c3fdd05',1,'NFCm5::nfc::ndef']]], + ['nfc_33',['nfc',['../namespacenfc.html',1,'']]], + ['nfc_2ehpp_34',['nfc.hpp',['../nfc_8hpp.html',1,'']]], + ['nfc_5fb_5ffile_5fsystem_2ecpp_35',['nfc_b_file_system.cpp',['../nfc__b__file__system_8cpp.html',1,'']]], + ['nfc_5fb_5ffile_5fsystem_2ehpp_36',['nfc_b_file_system.hpp',['../nfc__b__file__system_8hpp.html',1,'']]], + ['nfc_5flayer_2ehpp_37',['nfc_layer.hpp',['../nfc__layer_8hpp.html',1,'']]], + ['nfc_5flayer_5fa_2ecpp_38',['nfc_layer_a.cpp',['../nfc__layer__a_8cpp.html',1,'']]], + ['nfc_5flayer_5fa_2ehpp_39',['nfc_layer_a.hpp',['../nfc__layer__a_8hpp.html',1,'']]], + ['nfc_5flayer_5fa_5fst25r3916_2ecpp_40',['nfc_layer_a_ST25R3916.cpp',['../nfc__layer__a___s_t25_r3916_8cpp.html',1,'']]], + ['nfc_5flayer_5fb_2ehpp_41',['nfc_layer_b.hpp',['../nfc__layer__b_8hpp.html',1,'']]], + ['nfc_5flayer_5fb_5fst25r3916_2ecpp_42',['nfc_layer_b_ST25R3916.cpp',['../nfc__layer__b___s_t25_r3916_8cpp.html',1,'']]], + ['nfc_5flayer_5ff_2ecpp_43',['nfc_layer_f.cpp',['../nfc__layer__f_8cpp.html',1,'']]], + ['nfc_5flayer_5ff_2ehpp_44',['nfc_layer_f.hpp',['../nfc__layer__f_8hpp.html',1,'']]], + ['nfc_5flayer_5ff_5fst25r3916_2ecpp_45',['nfc_layer_f_ST25R3916.cpp',['../nfc__layer__f___s_t25_r3916_8cpp.html',1,'']]], + ['nfc_5flayer_5fv_2ecpp_46',['nfc_layer_v.cpp',['../nfc__layer__v_8cpp.html',1,'']]], + ['nfc_5flayer_5fv_2ehpp_47',['nfc_layer_v.hpp',['../nfc__layer__v_8hpp.html',1,'']]], + ['nfc_5flayer_5fv_5fst25r3916_2ecpp_48',['nfc_layer_v_ST25R3916.cpp',['../nfc__layer__v___s_t25_r3916_8cpp.html',1,'']]], + ['nfca_2ecpp_49',['nfca.cpp',['../nfca_8cpp.html',1,'']]], + ['nfca_2ehpp_50',['nfca.hpp',['../nfca_8hpp.html',1,'']]], + ['nfcahlt_51',['nfcaHlt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0bec5e210dc09b9c795515c81680b835',1,'m5::unit::UnitST25R3916']]], + ['nfcareadblock_52',['nfcaReadBlock',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9523eab08f4d93610e00a704ab6a9167',1,'m5::unit::UnitST25R3916']]], + ['nfcareceive_53',['nfcaReceive',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5d3ce8cc0fd99a213ec877ac47e50e7e',1,'m5::unit::UnitST25R3916']]], + ['nfcarequest_54',['nfcaRequest',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a456d6d1ac55f39190130d6e8a8e19325',1,'m5::unit::UnitST25R3916']]], + ['nfcaselect_55',['nfcaSelect',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae43fbcbaee6d34aa9880edbb49b6cd4b',1,'m5::unit::UnitST25R3916']]], + ['nfcaselectwithanticollision_56',['nfcaSelectWithAnticollision',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#af2e97b7a81262b6673e97831b3272716',1,'m5::unit::UnitST25R3916']]], + ['nfcatransceive_57',['nfcaTransceive',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a195e53574c9750b2db85e6cd1073782f',1,'m5::unit::UnitST25R3916']]], + ['nfcatransmit_58',['nfcaTransmit',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a936ca379b6f45afcdae154651a90f87d',1,'m5::unit::UnitST25R3916']]], + ['nfcawakeup_59',['nfcaWakeup',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aad481829ef58b733871deb7514a0d14d',1,'m5::unit::UnitST25R3916']]], + ['nfcawriteblock_60',['nfcaWriteBlock',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a4254b99d3e82fda6c33274629a93bd26',1,'m5::unit::UnitST25R3916']]], + ['nfcb_2ecpp_61',['nfcb.cpp',['../nfcb_8cpp.html',1,'']]], + ['nfcb_2ehpp_62',['nfcb.hpp',['../nfcb_8hpp.html',1,'']]], + ['nfcbfilesystem_63',['NFCBFileSystem',['../classm5_1_1nfc_1_1_n_f_c_b_file_system.html',1,'m5::nfc']]], + ['nfcbreceive_64',['nfcbReceive',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aed444774f99efb57bfd6cfcf8bdd3cf3',1,'m5::unit::UnitST25R3916']]], + ['nfcbtransceive_65',['nfcbTransceive',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad43bdfb9e2bbf3f77e73e587b96dae15',1,'m5::unit::UnitST25R3916']]], + ['nfcbtransmit_66',['nfcbTransmit',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a2980eca4a872ad9b4ce4e1d59abbd0d2',1,'m5::unit::UnitST25R3916']]], + ['nfcf_2ecpp_67',['nfcf.cpp',['../nfcf_8cpp.html',1,'']]], + ['nfcf_2ehpp_68',['nfcf.hpp',['../nfcf_8hpp.html',1,'']]], + ['nfcforumtag_69',['NFCForumTag',['../nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1',1,'m5::nfc']]], + ['nfcforumtagtype_70',['nfcForumTagType',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#aed933bf1d35a885069480677e64fdb7c',1,'m5::nfc::a::PICC::nfcForumTagType()'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a022a996aef9698d70c080d53ef53e553',1,'m5::nfc::f::PICC::nfcForumTagType()'],['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#ab302f6c57c2b7b7391a5ab34ad3a6896',1,'m5::nfc::v::PICC::nfcForumTagType()']]], + ['nfcforumtype1_71',['NFCForumType1',['../_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982a2477a3d7e824a688688b07b1977e53e2',1,'m5::unit::st25r3916']]], + ['nfcfreceive_72',['nfcfReceive',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae7abd1cdd9f45be22707d34286d4e13b',1,'m5::unit::UnitST25R3916']]], + ['nfcftransceive_73',['nfcfTransceive',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5d461d5845636d6aae46342078285ec5',1,'m5::unit::UnitST25R3916']]], + ['nfcftransmit_74',['nfcfTransmit',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#af78d82f081370f995cd9742c18b2a306',1,'m5::unit::UnitST25R3916']]], + ['nfcip1_75',['NFCIP1',['../_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982a47b3e6d28090c5f54b07211d5b45ae90',1,'NFCIP1m5::unit::st25r3916'],['../_s_t25_r3916__definition_8hpp.html#a7d85ed3cdee95b0eab2dff6373824137a47b3e6d28090c5f54b07211d5b45ae90',1,'NFCIP1m5::unit::st25r3916']]], + ['nfclayera_76',['NFCLayerA',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html',1,'m5::nfc']]], + ['nfclayerb_77',['NFCLayerB',['../classm5_1_1nfc_1_1_n_f_c_layer_b.html',1,'m5::nfc']]], + ['nfclayerf_78',['NFCLayerF',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html',1,'m5::nfc']]], + ['nfclayerinterface_79',['NFCLayerInterface',['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html',1,'m5::nfc']]], + ['nfclayerv_80',['NFCLayerV',['../classm5_1_1nfc_1_1_n_f_c_layer_v.html',1,'m5::nfc']]], + ['nfcmode_81',['NFCMode',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ac3814eadfaf2a9a941dcce095919d832',1,'m5::unit::UnitST25R3916']]], + ['nfcv_2ehpp_82',['nfcv.hpp',['../nfcv_8hpp.html',1,'']]], + ['nfcvreceive_83',['nfcvReceive',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a3ffab61575579456fe24755aaab02c52',1,'m5::unit::UnitST25R3916']]], + ['nfcvtransceive_84',['nfcvTransceive',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a704c7a5d4d9d278c1f9d24355810a630',1,'m5::unit::UnitST25R3916']]], + ['nfcvtransmit_85',['nfcvTransmit',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad04893a317904806982917e07a002e5b',1,'m5::unit::UnitST25R3916']]], + ['nfs_86',['NFS',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a1d1a594959ec615f56516f5d0f5e8ddb',1,'m5::nfc::ndef']]], + ['nitecrest_87',['Nitecrest',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52abea429b0656e0205f1fa32769cc10919',1,'m5::nfc']]], + ['node_5fsystem_5fkey_88',['NODE_SYSTEM_KEY',['../nfcf_8hpp.html#aea1e9a30d61d21a485d0f00785b030d2',1,'m5::nfc::f']]], + ['none_89',['None',['../apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbfa6adf97f83acf6453d4a6a4b1070f3754',1,'Nonem5::nfc::apdu'],['../nfcf_8hpp.html#aa85476c3807a205b8d13cb06347bb144a6adf97f83acf6453d4a6a4b1070f3754',1,'Nonem5::nfc::f'],['../nfc_8hpp.html#a5e5f58799f82b1611c0309f953cc2c6fa6adf97f83acf6453d4a6a4b1070f3754',1,'Nonem5::nfc']]], + ['nordic_90',['Nordic',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a460ebccd86ebc5e464cdc933b95a6fe0',1,'m5::nfc']]], + ['ntag_5f203_91',['NTAG_203',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a7b40ce30595f4bd206ade201da8d29ee',1,'m5::nfc::a']]], + ['ntag_5f210_92',['NTAG_210',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9ae6e82df8e5684b0c2caac42233144ecf',1,'m5::nfc::a']]], + ['ntag_5f210u_93',['NTAG_210u',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a348ce2863a7bca1a7fa60cb0dbe666ba',1,'m5::nfc::a']]], + ['ntag_5f212_94',['NTAG_212',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a2f55bc6a25763536d7476378eb6cb65d',1,'m5::nfc::a']]], + ['ntag_5f213_95',['NTAG_213',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a28e799698d4e8f7ea5cecfafdbb9bb7a',1,'m5::nfc::a']]], + ['ntag_5f215_96',['NTAG_215',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a4175799ea4ce591a0797676b68d82fe6',1,'m5::nfc::a']]], + ['ntag_5f216_97',['NTAG_216',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a93f5a9b6399d7a5544876358c861b04a',1,'m5::nfc::a']]], + ['ntag_5f4xx_98',['NTAG_4XX',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a327c9572a3acf7762731393d101cbd65',1,'m5::nfc::a']]], + ['null_99',['Null',['../ndef_8hpp.html#ace18f3439d147659696eec175e13e03aabbb93ef26e3c101ff11cdd21cab08a94',1,'m5::nfc::ndef']]], + ['number_100',['number',['../structm5_1_1nfc_1_1f_1_1block__t.html#a0a9859e92e34f031853778759ca7965a',1,'m5::nfc::f::block_t']]], + ['nxp_101',['NXP',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aab174cf654efc28e4b7c7adb1b57e5fa',1,'NXPm5::nfc'],['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aaab174cf654efc28e4b7c7adb1b57e5fa',1,'NXPm5::nfc::v']]], + ['nxp_5ficode_5fsli_102',['NXP_ICODE_SLI',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa207aaada4da22517a2da85561d2864b9',1,'m5::nfc::v']]], + ['nxp_5ficode_5fslix_103',['NXP_ICODE_SLIX',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aad77a0b9d83149e70f1568aa3410659ee',1,'m5::nfc::v']]], + ['nxp_5ficode_5fslix_5f2_104',['NXP_ICODE_SLIX_2',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa2f22e309e6dd43a737c096587fe73323',1,'m5::nfc::v']]] +]; diff --git a/search/all_d.js b/search/all_d.js new file mode 100644 index 0000000..bd6019b --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['oberthur_0',['Oberthur',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a31917a5f060e2593e6ddf934dc6cea73',1,'m5::nfc']]], + ['oki_1',['Oki',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae9619561af4f8c522aebc15da688378c',1,'m5::nfc']]], + ['old_5ffile_5fno_2',['old_file_no',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename.html#ab49c910280d5e9aca2c8a2846117f11b',1,'m5::nfc::a::mifare::desfire::FileRename']]], + ['oneof256_3',['OneOf256',['../nfcv_8hpp.html#aba1eff44affc1b08f4f4792a10d50240a170b807ee3b24e7ed1bd9268de10c2e4',1,'m5::nfc::v']]], + ['oneof4_4',['OneOf4',['../nfcv_8hpp.html#aba1eff44affc1b08f4f4792a10d50240a78e9406b6f730c444a589f91bfe09613',1,'m5::nfc::v']]], + ['onsemiconductor_5',['OnSemiconductor',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af41a64871e7c90d91b575294be5d6831',1,'m5::nfc']]], + ['operator_21_3d_6',['operator!=',['../nfca_8hpp.html#aae4e036a81bf97f2133c38ec1ec54af4',1,'m5::nfc::a::operator!=()'],['../nfcb_8hpp.html#ac3bd576be01a287cbdf7d6f6ff7d59f2',1,'m5::nfc::b::operator!=()'],['../nfcf_8hpp.html#a5d6416a6b1df2234e88bfd1b78e8a52b',1,'m5::nfc::f::operator!=()'],['../ndef__record_8hpp.html#a0f260b00747174f0d61a07ff5aff3fa1',1,'m5::nfc::ndef::operator!=()'],['../nfcv_8hpp.html#a3aac55a9610fa6bc574cb7d3d5dce671',1,'m5::nfc::v::operator!=()']]], + ['operator_3d_3d_7',['operator==',['../classm5_1_1nfc_1_1ndef_1_1_record.html#a3e7f7c256eb7d9deb3bacb503e530793',1,'m5::nfc::ndef::Record::operator=='],['../nfca_8hpp.html#a613b44aedafa4a844d37f94af2a07955',1,'m5::nfc::a::operator==()'],['../nfcb_8hpp.html#a2bfee8da3fdce40cdd70ebb5eaaf0dc3',1,'m5::nfc::b::operator==()'],['../nfcf_8cpp.html#a9d5df6f8cc40e297cb675451d4f20774',1,'m5::nfc::f::operator==()'],['../ndef__record_8hpp.html#a27688dbdd1bec2a25597aca2512ef9bb',1,'m5::nfc::ndef::operator==()'],['../nfcv_8hpp.html#a04b09eb24f7e2bab1244be40dbee3304',1,'m5::nfc::v::operator==()']]], + ['orga_8',['Orga',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac253e738c5afc685dd2bc5c9a3e4eaee',1,'m5::nfc']]] +]; diff --git a/search/all_e.js b/search/all_e.js new file mode 100644 index 0000000..6fa5cb9 --- /dev/null +++ b/search/all_e.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['parentdf_0',['ParentDf',['../apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08adae0b5d60e5eea9e28524ae742a4a85b61',1,'m5::nfc::apdu']]], + ['parse_5ftlv_1',['parse_tlv',['../apdu_8cpp.html#a5f63415d23f1838b2cf7a294cad86ec1',1,'m5::nfc::apdu']]], + ['parsefci_2',['parseFCI',['../file__system_8cpp.html#a6f37bce98efe295da49502e417d2375a',1,'m5::nfc']]], + ['pathfromcurrentdf_3',['PathFromCurrentDf',['../apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08adada937e05c426e8439cd1f4130d69562a',1,'m5::nfc::apdu']]], + ['pathfrommf_4',['PathFromMf',['../apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08adabf1f53068262ad6525671112c94790cb',1,'m5::nfc::apdu']]], + ['payload_5',['payload',['../classm5_1_1nfc_1_1ndef_1_1_record.html#a277f654c9f1e6cc2000a41531befb09c',1,'m5::nfc::ndef::Record::payload()'],['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a8cd8fac4f01ea81f13186128ad54cb96',1,'m5::nfc::ndef::TLV::payload() const'],['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a154c89885e3320cd90b299a23b037018',1,'m5::nfc::ndef::TLV::payload()']]], + ['payloadasstring_6',['payloadAsString',['../classm5_1_1nfc_1_1ndef_1_1_record.html#acf8cc597c825300d9e0eff4ec239cb7c',1,'m5::nfc::ndef::Record']]], + ['payloadsize_7',['payloadSize',['../classm5_1_1nfc_1_1ndef_1_1_record.html#a22e7e4a8281b52ecd93ce557cff1693d',1,'m5::nfc::ndef::Record']]], + ['personalize_5fuid_5fusage_8',['PERSONALIZE_UID_USAGE',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca2468279bd72ec32c6968805408a791b9',1,'m5::nfc::a']]], + ['picc_9',['PICC',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html',1,'m5::nfc::a::PICC'],['../structm5_1_1nfc_1_1b_1_1_p_i_c_c.html',1,'m5::nfc::b::PICC'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html',1,'m5::nfc::f::PICC'],['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html',1,'m5::nfc::v::PICC']]], + ['picc_5fmaster_5fkey_10',['picc_master_key',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#aa7685c814ba73c1b407f71a848f081ef',1,'m5::nfc::a::mifare::desfire::NdefFormatOptions']]], + ['plus_11',['plus',['../namespaceplus.html',1,'']]], + ['pmm_12',['pmm',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a98b1fadb1fee84982f07020c3254770c',1,'m5::nfc::f::PICC']]], + ['pmmasstring_13',['pmmAsString',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a6a7775e4b7939567da6e2d42f3ff877a',1,'m5::nfc::f::PICC']]], + ['pollerst25r3916fora_14',['PollerST25R3916ForA',['../structm5_1_1nfc_1_1_poller_s_t25_r3916_for_a.html',1,'m5::nfc']]], + ['polling_15',['polling',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ade2cd62f823c42002b8e472037df8a47',1,'m5::nfc::NFCLayerF']]], + ['pop_16',['POP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6aefdb39a4c7286afcecf0e8a7435fce6a',1,'m5::nfc::ndef']]], + ['pop_5fback_17',['pop_back',['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a9a83f92eaac4493a7bd7f516ccb5be73',1,'m5::nfc::ndef::TLV']]], + ['pragmatic_18',['Pragmatic',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a7e2928368546bde6a197d5d7f5706255',1,'m5::nfc']]], + ['prepare_5fdesfire_19',['prepare_desfire',['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#ad093796b168367bb3cf196a48c3230d1',1,'m5::nfc::ndef::NDEFLayer']]], + ['prepare_5fdesfire_5flight_20',['prepare_desfire_light',['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a49c6be48be0fe9201f21262263582cbb',1,'m5::nfc::ndef::NDEFLayer']]], + ['previous_21',['Previous',['../apdu_8hpp.html#a74836436e907c80c9a02040d912e6400add1f775e443ff3b9a89270713580a51b',1,'m5::nfc::apdu']]], + ['productivityeng_22',['ProductivityEng',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a6a0bc7a392f90bd8c5291600b784da03',1,'m5::nfc']]], + ['proprietary_23',['Proprietary',['../ndef_8hpp.html#ace18f3439d147659696eec175e13e03aa03fe683ef28b9ddfe7f658a0f4b3b80e',1,'Proprietarym5::nfc::ndef'],['../ndef_8hpp.html#a3d88baf2d1668d0f00d9c5a2397f9c2fa03fe683ef28b9ddfe7f658a0f4b3b80e',1,'Proprietarym5::nfc::ndef::type4']]], + ['protocol_24',['protocol',['../structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#ad41073dd71001ab521af81aa03a515a9',1,'m5::nfc::b::PICC']]], + ['pt_5fmemory_5fa_5flength_25',['PT_MEMORY_A_LENGTH',['../_s_t25_r3916__definition_8hpp.html#a3bc9e99c48ede032ca794e0c603fd891',1,'m5::unit::st25r3916']]], + ['pt_5fmemory_5ff_5flength_26',['PT_MEMORY_F_LENGTH',['../_s_t25_r3916__definition_8hpp.html#a361ca243f632742c4209b56fc345b3f2',1,'m5::unit::st25r3916']]], + ['pt_5fmemory_5flength_27',['PT_MEMORY_LENGTH',['../_s_t25_r3916__definition_8hpp.html#a9565d3846f7a247a56a64301963ab0e5',1,'m5::unit::st25r3916']]], + ['pt_5fmemory_5ftsn_5flength_28',['PT_MEMORY_TSN_LENGTH',['../_s_t25_r3916__definition_8hpp.html#af19f6154dc73afac408fc566197a5f10',1,'m5::unit::st25r3916']]], + ['pupi_29',['pupi',['../structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#ae3e1adb868ee8822a21be9a140f852c8',1,'m5::nfc::b::PICC']]], + ['pupiasstring_30',['pupiAsString',['../structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#a3851bbb69376426d24e43174e85048d9',1,'m5::nfc::b::PICC']]], + ['push_5fback_31',['push_back',['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a15bee7516420140983d422a2fd3a951c',1,'m5::nfc::ndef::TLV']]], + ['pwd_5fauth_32',['PWD_AUTH',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acab9f3cd7a5e7fde4d914d0e58628e0746',1,'m5::nfc::a']]] +]; diff --git a/search/all_f.js b/search/all_f.js new file mode 100644 index 0000000..637b1ec --- /dev/null +++ b/search/all_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['qualcomm_0',['Qualcomm',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac9b0cb53646238b8c03fb69b8f331220',1,'m5::nfc']]], + ['quanray_1',['Quanray',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a250bdc4ed0d3979efa85515ce5cd06ec',1,'m5::nfc']]] +]; diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 0000000..53badf6 --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['adapterst25r3916forb_0',['AdapterST25R3916ForB',['../structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_b.html',1,'m5::nfc']]], + ['adapterst25r3916forf_1',['AdapterST25R3916ForF',['../structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_f.html',1,'m5::nfc']]], + ['adapterst25r3916forv_2',['AdapterST25R3916ForV',['../structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_v.html',1,'m5::nfc']]], + ['ats_3',['ATS',['../structm5_1_1nfc_1_1a_1_1_a_t_s.html',1,'m5::nfc::a']]], + ['attribute_4',['Attribute',['../structm5_1_1nfc_1_1ndef_1_1_attribute.html',1,'m5::nfc::ndef']]], + ['attributeblock_5',['AttributeBlock',['../structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html',1,'m5::nfc::ndef::type3']]] +]; diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 0000000..f32b09c --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['block_5ft_0',['block_t',['../structm5_1_1nfc_1_1f_1_1block__t.html',1,'m5::nfc::f']]] +]; diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 0000000..ad32523 --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['capabilitycontainer_0',['CapabilityContainer',['../structm5_1_1nfc_1_1ndef_1_1type2_1_1_capability_container.html',1,'m5::nfc::ndef::type2::CapabilityContainer'],['../structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.html',1,'m5::nfc::ndef::type4::CapabilityContainer'],['../structm5_1_1nfc_1_1ndef_1_1type5_1_1_capability_container.html',1,'m5::nfc::ndef::type5::CapabilityContainer']]], + ['capst25r3916_1',['CapST25R3916',['../classm5_1_1unit_1_1_cap_s_t25_r3916.html',1,'m5::unit']]], + ['config_5ft_2',['config_t',['../structm5_1_1nfc_1_1isodep_1_1config__t.html',1,'m5::nfc::isodep::config_t'],['../structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html',1,'m5::unit::UnitST25R3916::config_t']]], + ['crypto1_3',['Crypto1',['../classm5_1_1nfc_1_1a_1_1mifare_1_1classic_1_1_crypto1.html',1,'m5::nfc::a::mifare::classic']]] +]; diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 0000000..71665fa --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['desfire_5faid_5ft_0',['desfire_aid_t',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1desfire__aid__t.html',1,'m5::nfc::a::mifare::desfire']]], + ['desfirefilesystem_1',['DESFireFileSystem',['../classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.html',1,'m5::nfc::a::mifare::desfire']]] +]; diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 0000000..9cc4566 --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['emulationlayera_0',['EmulationLayerA',['../classm5_1_1nfc_1_1_emulation_layer_a.html',1,'m5::nfc']]], + ['emulationlayerf_1',['EmulationLayerF',['../classm5_1_1nfc_1_1_emulation_layer_f.html',1,'m5::nfc']]], + ['ev2context_2',['Ev2Context',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.html',1,'m5::nfc::a::mifare::desfire']]] +]; diff --git a/search/classes_5.js b/search/classes_5.js new file mode 100644 index 0000000..d2ed53c --- /dev/null +++ b/search/classes_5.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['fcp_0',['FCP',['../structm5_1_1nfc_1_1_f_c_p.html',1,'m5::nfc']]], + ['filecontroltlv_1',['FileControlTLV',['../structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html',1,'m5::nfc::ndef::type4']]], + ['filerename_2',['FileRename',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename.html',1,'m5::nfc::a::mifare::desfire']]], + ['filesettings_3',['FileSettings',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_settings.html',1,'m5::nfc::a::mifare::desfire']]], + ['filesystem_4',['FileSystem',['../classm5_1_1nfc_1_1_file_system.html',1,'m5::nfc']]] +]; diff --git a/search/classes_6.js b/search/classes_6.js new file mode 100644 index 0000000..b1a4976 --- /dev/null +++ b/search/classes_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['isodep_0',['IsoDEP',['../classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html',1,'m5::nfc::isodep']]] +]; diff --git a/search/classes_7.js b/search/classes_7.js new file mode 100644 index 0000000..852f44f --- /dev/null +++ b/search/classes_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['listenerst25r3916fora_0',['ListenerST25R3916ForA',['../structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a.html',1,'m5::nfc']]], + ['listenerst25r3916forf_1',['ListenerST25R3916ForF',['../structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f.html',1,'m5::nfc']]] +]; diff --git a/search/classes_8.js b/search/classes_8.js new file mode 100644 index 0000000..ed7cbff --- /dev/null +++ b/search/classes_8.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['ndefformatoptions_0',['NdefFormatOptions',['../structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html',1,'m5::nfc::a::mifare::desfire']]], + ['ndeflayer_1',['NDEFLayer',['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html',1,'m5::nfc::ndef']]], + ['nfcbfilesystem_2',['NFCBFileSystem',['../classm5_1_1nfc_1_1_n_f_c_b_file_system.html',1,'m5::nfc']]], + ['nfclayera_3',['NFCLayerA',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html',1,'m5::nfc']]], + ['nfclayerb_4',['NFCLayerB',['../classm5_1_1nfc_1_1_n_f_c_layer_b.html',1,'m5::nfc']]], + ['nfclayerf_5',['NFCLayerF',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html',1,'m5::nfc']]], + ['nfclayerinterface_6',['NFCLayerInterface',['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html',1,'m5::nfc']]], + ['nfclayerv_7',['NFCLayerV',['../classm5_1_1nfc_1_1_n_f_c_layer_v.html',1,'m5::nfc']]] +]; diff --git a/search/classes_9.js b/search/classes_9.js new file mode 100644 index 0000000..2fc1fbb --- /dev/null +++ b/search/classes_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['picc_0',['PICC',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html',1,'m5::nfc::a::PICC'],['../structm5_1_1nfc_1_1b_1_1_p_i_c_c.html',1,'m5::nfc::b::PICC'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html',1,'m5::nfc::f::PICC'],['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html',1,'m5::nfc::v::PICC']]], + ['pollerst25r3916fora_1',['PollerST25R3916ForA',['../structm5_1_1nfc_1_1_poller_s_t25_r3916_for_a.html',1,'m5::nfc']]] +]; diff --git a/search/classes_a.js b/search/classes_a.js new file mode 100644 index 0000000..4fc6a8c --- /dev/null +++ b/search/classes_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['record_0',['Record',['../classm5_1_1nfc_1_1ndef_1_1_record.html',1,'m5::nfc::ndef']]], + ['reg_1',['REG',['../unionm5_1_1nfc_1_1f_1_1_r_e_g.html',1,'m5::nfc::f']]], + ['rxinfo_2',['RxInfo',['../structm5_1_1nfc_1_1isodep_1_1_rx_info.html',1,'m5::nfc::isodep']]] +]; diff --git a/search/classes_b.js b/search/classes_b.js new file mode 100644 index 0000000..dacfb82 --- /dev/null +++ b/search/classes_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['systemfile_0',['SystemFile',['../structm5_1_1nfc_1_1a_1_1st25ta_1_1_system_file.html',1,'m5::nfc::a::st25ta']]] +]; diff --git a/search/classes_c.js b/search/classes_c.js new file mode 100644 index 0000000..ee491a9 --- /dev/null +++ b/search/classes_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tlv_0',['TLV',['../structm5_1_1nfc_1_1apdu_1_1_t_l_v.html',1,'m5::nfc::apdu::TLV'],['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html',1,'m5::nfc::ndef::TLV']]] +]; diff --git a/search/classes_d.js b/search/classes_d.js new file mode 100644 index 0000000..cadabaa --- /dev/null +++ b/search/classes_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unitst25r3916_0',['UnitST25R3916',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html',1,'m5::unit']]] +]; diff --git a/search/close.svg b/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/search/enums_0.js b/search/enums_0.js new file mode 100644 index 0000000..47d8653 --- /dev/null +++ b/search/enums_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['accessflag_0',['AccessFlag',['../structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html#a1a43484f01b9e89ab972227fddeaf508',1,'m5::nfc::ndef::type3::AttributeBlock']]], + ['authmode_1',['AuthMode',['../desfire__file__system_8hpp.html#a87fa07187f0a1c6976f12ab14bb0fd80',1,'m5::nfc::a::mifare::desfire']]] +]; diff --git a/search/enums_1.js b/search/enums_1.js new file mode 100644 index 0000000..d632eee --- /dev/null +++ b/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bitrate_0',['Bitrate',['../nfc_8hpp.html#a6e4ec7792513939bffd3f557b917d326',1,'m5::nfc']]] +]; diff --git a/search/enums_2.js b/search/enums_2.js new file mode 100644 index 0000000..7764178 --- /dev/null +++ b/search/enums_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['command_0',['Command',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90ac',1,'m5::nfc::a::Command'],['../nfcb_8hpp.html#ae2a856e80084be96e7eab93c4007af8c',1,'m5::nfc::b::Command'],['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665',1,'m5::nfc::v::Command']]], + ['commandcode_1',['CommandCode',['../nfcf_8hpp.html#a5cc4c0eab77c7e2ae44f9549f695d52d',1,'m5::nfc::f']]] +]; diff --git a/search/enums_3.js b/search/enums_3.js new file mode 100644 index 0000000..dd35da6 --- /dev/null +++ b/search/enums_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['filecontroltag_0',['FileControlTag',['../ndef_8hpp.html#a3d88baf2d1668d0f00d9c5a2397f9c2f',1,'m5::nfc::ndef::type4']]] +]; diff --git a/search/enums_4.js b/search/enums_4.js new file mode 100644 index 0000000..71cf6e7 --- /dev/null +++ b/search/enums_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['initiatoroperationmode_0',['InitiatorOperationMode',['../_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982',1,'m5::unit::st25r3916']]], + ['ins_1',['INS',['../apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45',1,'m5::nfc::apdu']]] +]; diff --git a/search/enums_5.js b/search/enums_5.js new file mode 100644 index 0000000..48907db --- /dev/null +++ b/search/enums_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['manufacturerid_0',['ManufacturerId',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52',1,'m5::nfc']]], + ['mode_1',['Mode',['../nfcf_8hpp.html#a6959bdf0a008260dcec938adc6a7db5c',1,'m5::nfc::f::standard::Mode'],['../namespacem5_1_1nfc_1_1f_1_1lite__s.html#a8205d1ee70e7b5a0d9c073f9e8916b90',1,'m5::nfc::f::lite_s::Mode']]], + ['modulationmode_2',['ModulationMode',['../nfcv_8hpp.html#aba1eff44affc1b08f4f4792a10d50240',1,'m5::nfc::v']]] +]; diff --git a/search/enums_6.js b/search/enums_6.js new file mode 100644 index 0000000..333c96a --- /dev/null +++ b/search/enums_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['nfc_0',['NFC',['../nfc_8hpp.html#a5e5f58799f82b1611c0309f953cc2c6f',1,'m5::nfc']]], + ['nfcforumtag_1',['NFCForumTag',['../nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1',1,'m5::nfc']]] +]; diff --git a/search/enums_7.js b/search/enums_7.js new file mode 100644 index 0000000..32470a7 --- /dev/null +++ b/search/enums_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['requestcode_0',['RequestCode',['../nfcf_8hpp.html#aa85476c3807a205b8d13cb06347bb144',1,'m5::nfc::f']]], + ['require_1',['Require',['../nfcb_8hpp.html#aa906fade1b147b015c38f75b7f4a0fcd',1,'m5::nfc::b']]], + ['responsecode_2',['ResponseCode',['../nfcf_8hpp.html#a360c75b595fa2e5fa9988959168746df',1,'m5::nfc::f']]] +]; diff --git a/search/enums_8.js b/search/enums_8.js new file mode 100644 index 0000000..fe4d5bb --- /dev/null +++ b/search/enums_8.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['selectby_0',['SelectBy',['../apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ad',1,'m5::nfc::apdu']]], + ['selectoccurrence_1',['SelectOccurrence',['../apdu_8hpp.html#a74836436e907c80c9a02040d912e6400',1,'m5::nfc::apdu']]], + ['selectresponse_2',['SelectResponse',['../apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbf',1,'m5::nfc::apdu']]], + ['state_3',['State',['../classm5_1_1nfc_1_1_emulation_layer_a.html#a714fb8378088e999ee8726f2431718cb',1,'m5::nfc::EmulationLayerA::State'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#a7a1e6960bbca8aee87834ba027fa5890',1,'m5::nfc::EmulationLayerF::State']]], + ['subtypedesfire_4',['SubTypeDESFire',['../nfca_8hpp.html#ae2129568177f072e3f1b1d0bae2f2341',1,'m5::nfc::a']]], + ['subtypeplus_5',['SubTypePlus',['../nfca_8hpp.html#afd9353ea57cde9b113a3ec6d6191664f',1,'m5::nfc::a']]] +]; diff --git a/search/enums_9.js b/search/enums_9.js new file mode 100644 index 0000000..78c8cd3 --- /dev/null +++ b/search/enums_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['tag_0',['Tag',['../ndef_8hpp.html#ace18f3439d147659696eec175e13e03a',1,'m5::nfc::ndef']]], + ['targetoperationmode_1',['TargetOperationMode',['../_s_t25_r3916__definition_8hpp.html#a7d85ed3cdee95b0eab2dff6373824137',1,'m5::unit::st25r3916']]], + ['timeslot_2',['TimeSlot',['../nfcf_8hpp.html#a1ca4eeb3808f5d0529b603128edc5b84',1,'m5::nfc::f']]], + ['tnf_3',['TNF',['../ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153',1,'m5::nfc::ndef']]], + ['type_4',['Type',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9',1,'m5::nfc::a::Type'],['../nfcb_8hpp.html#a6aa79586df8f19ed0e9a839d7d2ca0cb',1,'m5::nfc::b::Type'],['../nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96f',1,'m5::nfc::f::Type'],['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0a',1,'m5::nfc::v::Type']]] +]; diff --git a/search/enums_a.js b/search/enums_a.js new file mode 100644 index 0000000..7d1cff8 --- /dev/null +++ b/search/enums_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['uriprotocol_0',['URIProtocol',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6',1,'m5::nfc::ndef']]] +]; diff --git a/search/enums_b.js b/search/enums_b.js new file mode 100644 index 0000000..40907ad --- /dev/null +++ b/search/enums_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['writeflag_0',['WriteFlag',['../structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html#a410e6ca7e4263d60017086ae8e5027f9',1,'m5::nfc::ndef::type3::AttributeBlock']]] +]; diff --git a/search/enumvalues_0.js b/search/enumvalues_0.js new file mode 100644 index 0000000..2a49dd5 --- /dev/null +++ b/search/enumvalues_0.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['a_0',['A',['../nfc_8hpp.html#a5e5f58799f82b1611c0309f953cc2c6fa7fc56270e7a70fa81a5935b72eacbe29',1,'m5::nfc']]], + ['a3logics_1',['A3logics',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a0f14f0f3b8e7ce6704498270bd16cc4c',1,'m5::nfc']]], + ['advancedfilmdevice_2',['AdvancedFilmDevice',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a6d2c13d4fb2828f5bf62181e863e3bd0',1,'m5::nfc']]], + ['aes_3',['AES',['../desfire__file__system_8hpp.html#a87fa07187f0a1c6976f12ab14bb0fd80a76b7593457e2ab50befe2dcd63cf388f',1,'m5::nfc::a::mifare::desfire']]], + ['amic_4',['Amic',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a172ef6a8a53f514ea87693dcf5104f61',1,'m5::nfc']]], + ['angstrem_5',['Angstrem',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ab164bc345168b3e3f5fe3c25be80bf4a',1,'m5::nfc']]], + ['angstremt_6',['AngstremT',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a9f1cc74db71195bb3ae8bd29f60d7bfb',1,'m5::nfc']]], + ['ask_7',['Ask',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aa0b271a9d8aa8e7473922164d6a1c03c',1,'m5::nfc']]], + ['atmel_8',['Atmel',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52abed89e32bb03bc7e71ebbf7729f9d4ce',1,'m5::nfc']]], + ['attrib_9',['ATTRIB',['../nfcb_8hpp.html#ae2a856e80084be96e7eab93c4007af8caa7e69c53dafaa5a0100d3d1ba0f7cb6c',1,'m5::nfc::b']]], + ['austriamicrosys_10',['Austriamicrosys',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ad8305ff2f27c59e18110cbdf899aa5d4',1,'m5::nfc']]], + ['auth_5fwith_5fkey_5fa_11',['AUTH_WITH_KEY_A',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca0db1d590ee3ee184bcee04fc55706124',1,'m5::nfc::a']]], + ['auth_5fwith_5fkey_5fb_12',['AUTH_WITH_KEY_B',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca79a7294470ab78375c65a19305472b90',1,'m5::nfc::a']]], + ['authenticate_5f1_13',['AUTHENTICATE_1',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca93212f2ffd18edd8f99e219703157dcc',1,'m5::nfc::a']]], + ['authenticate_5f2_14',['AUTHENTICATE_2',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acacffcddc772d283e504c84f0272d3ee46',1,'m5::nfc::a']]], + ['auto_15',['Auto',['../desfire__file__system_8hpp.html#a87fa07187f0a1c6976f12ab14bb0fd80a06b9281e396db002010bde1de57262eb',1,'m5::nfc::a::mifare::desfire']]] +]; diff --git a/search/enumvalues_1.js b/search/enumvalues_1.js new file mode 100644 index 0000000..50f9b57 --- /dev/null +++ b/search/enumvalues_1.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['b_0',['B',['../nfc_8hpp.html#a5e5f58799f82b1611c0309f953cc2c6fa9d5ed678fe57bcca610140957afab571',1,'m5::nfc']]], + ['balluff_1',['Balluff',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af1381fc3f7b86fb8c1908f55248dc32f',1,'m5::nfc']]], + ['beedar_2',['Beedar',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a4ad0814e3406019c523943745de9112c',1,'m5::nfc']]], + ['bps106k_3',['Bps106K',['../nfc_8hpp.html#a6e4ec7792513939bffd3f557b917d326a98ced0261bfd36e8857b586900ccf1e6',1,'m5::nfc']]], + ['bps212k_4',['Bps212K',['../nfc_8hpp.html#a6e4ec7792513939bffd3f557b917d326a3a6399f5064660be3047c534c426f951',1,'m5::nfc']]], + ['bps424k_5',['Bps424K',['../nfc_8hpp.html#a6e4ec7792513939bffd3f557b917d326af446d7e6091a0b02fff080589dc020f2',1,'m5::nfc']]], + ['bps848k_6',['Bps848K',['../nfc_8hpp.html#a6e4ec7792513939bffd3f557b917d326a022572132d374f84ca57f030cc88099f',1,'m5::nfc']]], + ['bpskstream_7',['BPSKStream',['../_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982ade52e7ae5435b39795190c9c64ea3025',1,'m5::unit::st25r3916']]], + ['broadcom_8',['Broadcom',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a93933c6ca68705cf2c6eee19987428b0',1,'m5::nfc']]], + ['btgoep_9',['BTGOEP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6aff6343cef8f89994d9c9eb5df5b71593',1,'m5::nfc::ndef']]], + ['btl2cap_10',['BTL2CAP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a1ee9bbae71c45ab4397c161feaec4840',1,'m5::nfc::ndef']]], + ['btspp_11',['BTSPP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a81090b5fcb6f86a2e1630cbbfbf3662d',1,'m5::nfc::ndef']]] +]; diff --git a/search/enumvalues_10.js b/search/enumvalues_10.js new file mode 100644 index 0000000..678920f --- /dev/null +++ b/search/enumvalues_10.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['rats_0',['RATS',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca105e4919a5c861ae6a88ce3d7a7232de',1,'m5::nfc::a']]], + ['read_1',['READ',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca3466fab4975481651940ed328aa990e4',1,'m5::nfc::a']]], + ['read_5fcnt_2',['READ_CNT',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acae5b12698b003a4e8fa1a5d2537802447',1,'m5::nfc::a']]], + ['read_5fsig_3',['READ_SIG',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acae3862d0b16eab4f9489ac7f7f39e8655',1,'m5::nfc::a']]], + ['readonly_4',['ReadOnly',['../structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html#a1a43484f01b9e89ab972227fddeaf508a131fb182a881796e7606ed6da27f1197',1,'m5::nfc::ndef::type3::AttributeBlock']]], + ['readsingleblock_5',['ReadSingleBlock',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665ad69a55353d7d8baf25db134591f4dd19',1,'m5::nfc::v']]], + ['readwrite_6',['ReadWrite',['../structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html#a1a43484f01b9e89ab972227fddeaf508a70a2a84088d405a2e3f1e3accaa16723',1,'m5::nfc::ndef::type3::AttributeBlock']]], + ['realtek_7',['Realtek',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52abe40f32919f3a7ab684c228c46aa65c9',1,'m5::nfc']]], + ['renesaselectronics_8',['RenesasElectronics',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a7050614b5099a7e516d86b0b3f813169',1,'m5::nfc']]], + ['renesastechnology_9',['RenesasTechnology',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae68db2e7905c0a38950967691e7e2038',1,'m5::nfc']]], + ['req_5fwupb_10',['REQ_WUPB',['../nfcb_8hpp.html#ae2a856e80084be96e7eab93c4007af8cacf8fbe52b35ccf31d879b73fa27243af',1,'m5::nfc::b']]], + ['reqa_11',['REQA',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acad7bd76c9aadbfa1c3d7fbde38f278e78',1,'m5::nfc::a']]], + ['reserved_12',['Reserved',['../ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153a942d4e37dd5607ab68e54755540d4a47',1,'m5::nfc::ndef']]], + ['resettoready_13',['ResetToReady',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665aaa50b9e7396c2397b860d5c1a96b68a0',1,'m5::nfc::v']]], + ['restore_14',['RESTORE',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acac95fa04340c629ddfa2d38e285e59245',1,'m5::nfc::a']]], + ['rfidsec_15',['Rfidsec',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af13065a643218726322db94094519d49',1,'m5::nfc']]], + ['ricoh_16',['Ricoh',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ad1756d23d0eb2b335751132a660378e1',1,'m5::nfc']]], + ['rightplug_17',['RightPlug',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ab3c4563a2cb61660e3ac39c69ed77e38',1,'m5::nfc']]], + ['rstp_18',['RSTP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a70c93323ddcb89632da9dcb77ba54844',1,'m5::nfc::ndef']]] +]; diff --git a/search/enumvalues_11.js b/search/enumvalues_11.js new file mode 100644 index 0000000..c6df723 --- /dev/null +++ b/search/enumvalues_11.js @@ -0,0 +1,40 @@ +var searchData= +[ + ['samsung_0',['Samsung',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a3910b1e0ccab19bc46fd9db27cca49c9',1,'m5::nfc']]], + ['schweizer_1',['Schweizer',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a9912c9330e203d0dc109bf7e74e09e51',1,'m5::nfc']]], + ['selct_5fcl1_5fopt_2',['SELCT_CL1_OPT',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca77458195bc59b3b4e06827e8e3c2238a',1,'m5::nfc::a']]], + ['selct_5fcl2_5fopt_3',['SELCT_CL2_OPT',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acabc4882721d4cd97d7f3436557089a38d',1,'m5::nfc::a']]], + ['selct_5fcl3_5fopt_4',['SELCT_CL3_OPT',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acac72062bb69c053a12c34f8b80770570e',1,'m5::nfc::a']]], + ['select_5',['Select',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665ae0626222614bdee31951d84c64e5e9ff',1,'m5::nfc::v']]], + ['select_5fcl1_6',['SELECT_CL1',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca81083ce659b99b238c270d153b25af0f',1,'m5::nfc::a']]], + ['select_5fcl2_7',['SELECT_CL2',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acaaf74037b8890996366fbedace9a9ff34',1,'m5::nfc::a']]], + ['select_5fcl3_8',['SELECT_CL3',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca5fdb231b8f1cea8829c098e15b575509',1,'m5::nfc::a']]], + ['set_5fmod_5ftype_9',['SET_MOD_TYPE',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acaba0d17aac1240ee37f6c7650fbe88877',1,'m5::nfc::a']]], + ['seveney_10',['Seveney',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a5bf2f4937e41119c04ca437d5337855e',1,'m5::nfc']]], + ['sftp_11',['SFTP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6aea1386cf13bf90b95782349fdd4b2721',1,'m5::nfc::ndef']]], + ['shanghaibelling_12',['ShanghaiBelling',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a69e4f3e4cba7e91551b1e52951dfc289',1,'m5::nfc']]], + ['shanghaifeiju_13',['ShanghaiFeiju',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aec591a6589d51a86517eed3879d66b9e',1,'m5::nfc']]], + ['sharp_14',['Sharp',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a60c17eb98355db0fe5ce016db6c6f444',1,'m5::nfc']]], + ['siliconcraft_15',['SiliconCraft',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af0c09f2970c50cc8ce0cea76e12bc1ee',1,'m5::nfc']]], + ['silterra_16',['Silterra',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a65e2e06f5a3dbc97fcbe65d9e2d7436c',1,'m5::nfc']]], + ['sip_17',['SIP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a7eb2de9ed94db7230fcafeb1d7c40878',1,'m5::nfc::ndef']]], + ['sips_18',['SIPS',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a44a76d8e5ffed8c0e72f6207902dba14',1,'m5::nfc::ndef']]], + ['smartrac_19',['Smartrac',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a7b1f028b1ba664bc6886edb089274e93',1,'m5::nfc']]], + ['smb_20',['SMB',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6ab4fdd997b1f33e0d4c6964444c2bf399',1,'m5::nfc::ndef']]], + ['sonix_21',['Sonix',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aca1ad40112d92766444ed8719401940e',1,'m5::nfc']]], + ['sony_22',['Sony',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a2da860f7216f34598e5cdc6fd7e3098c',1,'m5::nfc']]], + ['spirtech_23',['Spirtech',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a4fe0880a4ecce14a41cc572dbaf849ec',1,'m5::nfc']]], + ['st_24',['ST',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aaec8e57d71f07e31203035548b79d03c8',1,'m5::nfc::v']]], + ['st25ta_5f16k_25',['ST25TA_16K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a78a9873dc3bbd596ce9f73a162ff9e85',1,'m5::nfc::a']]], + ['st25ta_5f2k_26',['ST25TA_2K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a2980dcc143a44439c9c9368dbb65bed6',1,'m5::nfc::a']]], + ['st25ta_5f512b_27',['ST25TA_512B',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9af7bbb5d12506ae279de0dc8b644788be',1,'m5::nfc::a']]], + ['st25ta_5f64k_28',['ST25TA_64K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a79c10fde203bf93198572ae4555f5f85',1,'m5::nfc::a']]], + ['st_5flri_29',['ST_LRI',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aaa1e8ead2187c115f97614e937a890f33',1,'m5::nfc::v']]], + ['st_5fst25dv_30',['ST_ST25DV',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa1785759bfa19c1b8ab3430fe2704521d',1,'m5::nfc::v']]], + ['st_5fst25v_31',['ST_ST25V',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aaf1a7a7fa1a71d905f7885cd087b08ad5',1,'m5::nfc::v']]], + ['starchip_32',['Starchip',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a294fcd514234790185adc4c2771b0839',1,'m5::nfc']]], + ['stayquiet_33',['StayQuiet',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665ae4408f60e028773308e82551836d726b',1,'m5::nfc::v']]], + ['stmicroelectronics_34',['STMicroelectronics',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac38884ab3cf908c2798725960369391b',1,'m5::nfc']]], + ['subcarrierstream_35',['SubCarrierStream',['../_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982a0615d29cf2685c8c5e6d10e6fbb563ad',1,'m5::unit::st25r3916']]], + ['systemcode_36',['SystemCode',['../nfcf_8hpp.html#aa85476c3807a205b8d13cb06347bb144a1eeecf7b9a1ca67f7b230b65716a19d6',1,'m5::nfc::f']]] +]; diff --git a/search/enumvalues_12.js b/search/enumvalues_12.js new file mode 100644 index 0000000..5c5c4a0 --- /dev/null +++ b/search/enumvalues_12.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['tagsys_0',['Tagsys',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af0681a809fe90639fc06c2d693182818',1,'m5::nfc']]], + ['tcpobex_1',['TCPOBEX',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6ae3c51d88bdea51cfc57178bfd6709596',1,'m5::nfc::ndef']]], + ['tel_2',['TEL',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a6154785551f14c097a9caf44e74b615e',1,'m5::nfc::ndef']]], + ['telnet_3',['TELNET',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a1360d1787ff8bb4f8eca82602452a58d',1,'m5::nfc::ndef']]], + ['tendyron_4',['Tendyron',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a4e6a90f67cdf2dfc7bb127ee0b489ae4',1,'m5::nfc']]], + ['terminator_5',['Terminator',['../ndef_8hpp.html#ace18f3439d147659696eec175e13e03aab420c1d31e69a823fbc30a434907c9c0',1,'m5::nfc::ndef']]], + ['texasinstruments_6',['TexasInstruments',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a67e54b1ee931f3f4bddfefa5fbde5fd8',1,'m5::nfc']]], + ['tftp_7',['TFTP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a34d3dff1acba95184204f7a379c6d4f7',1,'m5::nfc::ndef']]], + ['ti_8',['TI',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aaa316c795d70a350e00b1ac22da664e38',1,'m5::nfc::v']]], + ['ti_5ftagit_5f2048_9',['TI_TAGIT_2048',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa1b673238aff76b2058bcb24791fac1c2',1,'m5::nfc::v']]], + ['ti_5ftagit_5fhf_5fi_10',['TI_TAGIT_HF_I',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa24465f610f082f61b77474c8f0f2984c',1,'m5::nfc::v']]], + ['ti_5ftagit_5fhf_5fi_5fplus_11',['TI_TAGIT_HF_I_Plus',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa6c94cea8874fa9beb4542eafaa23ff7b',1,'m5::nfc::v']]], + ['ti_5ftagit_5fhf_5fi_5fpro_12',['TI_TAGIT_HF_I_Pro',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa675cf1945d721a33d53bff5abbb977c3',1,'m5::nfc::v']]], + ['toptroniq_13',['TopTroniq',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aaad87bb774ff9febfd6acedddcf4549e',1,'m5::nfc']]], + ['toshiba_14',['Toshiba',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a0e550130373c0857829991e1767bc46d',1,'m5::nfc']]], + ['transcore_15',['Transcore',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a376312b3b2f150923acc3164132d87c8',1,'m5::nfc']]], + ['transfer_16',['TRANSFER',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acaeb5ddb3b6096fb90ff720d9c3e2a6628',1,'m5::nfc::a']]], + ['tubitakbilgem_17',['TubitakBilgem',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a8fb60ad690955805f9e98eabda5db0a4',1,'m5::nfc']]], + ['type1_18',['Type1',['../nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1a3fc8355f4568d0bc9fa60829e4db7ad8',1,'m5::nfc']]], + ['type2_19',['Type2',['../nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1a843171beb7019761cbdf01fa3b1b61fb',1,'m5::nfc']]], + ['type3_20',['Type3',['../nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1a459e4c1992412014278341a5705d8aec',1,'m5::nfc']]], + ['type4_21',['Type4',['../nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1a17bc479530517e70b6ce6639d64c9b6b',1,'m5::nfc']]], + ['type5_22',['Type5',['../nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1a5d05e9889bd18763a956959c86940a23',1,'m5::nfc']]] +]; diff --git a/search/enumvalues_13.js b/search/enumvalues_13.js new file mode 100644 index 0000000..9be2fae --- /dev/null +++ b/search/enumvalues_13.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['unchanged_0',['Unchanged',['../ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153a5ff3c6978f87d96febfdc8ed3899a97e',1,'m5::nfc::ndef']]], + ['unclassified_1',['Unclassified',['../nfcb_8hpp.html#a6aa79586df8f19ed0e9a839d7d2ca0cba3336022d50ad5765c5db6964d942f5e1',1,'Unclassifiedm5::nfc::b'],['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa3336022d50ad5765c5db6964d942f5e1',1,'Unclassifiedm5::nfc::v']]], + ['unicore_2',['Unicore',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a2a13fbcc37fec7b1f6f03573faab4157',1,'m5::nfc']]], + ['unknown_3',['Unknown',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a88183b946cc5f0e8c96b2e66e1c74a7e',1,'Unknownm5::nfc::a'],['../nfcb_8hpp.html#a6aa79586df8f19ed0e9a839d7d2ca0cba88183b946cc5f0e8c96b2e66e1c74a7e',1,'Unknownm5::nfc::b'],['../nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96fa88183b946cc5f0e8c96b2e66e1c74a7e',1,'Unknownm5::nfc::f'],['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a88183b946cc5f0e8c96b2e66e1c74a7e',1,'Unknownm5::nfc'],['../ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153a88183b946cc5f0e8c96b2e66e1c74a7e',1,'Unknownm5::nfc::ndef'],['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa88183b946cc5f0e8c96b2e66e1c74a7e',1,'Unknownm5::nfc::v']]], + ['uri_4',['URI',['../ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153a8447306210a0972ac94b7d774799df1a',1,'m5::nfc::ndef']]], + ['urn_5',['URN',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a159673fd09d9000e8d7706ea5a751b10',1,'m5::nfc::ndef']]], + ['urn_5fepc_6',['URN_EPC',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a2d330bbe4ce80a2e335abf1ac0cf557c',1,'m5::nfc::ndef']]], + ['urn_5fepc_5fid_7',['URN_EPC_ID',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a7c5fab2988fa4a6868131391acb98569',1,'m5::nfc::ndef']]], + ['urn_5fepc_5fpat_8',['URN_EPC_PAT',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a0d93e64775449882c412ffc993c2fbe0',1,'m5::nfc::ndef']]], + ['urn_5fepc_5fraw_9',['URN_EPC_RAW',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a49194a2bedc87e93c1fa90ed70d440ec',1,'m5::nfc::ndef']]], + ['urn_5fepc_5ftag_10',['URN_EPC_TAG',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a21380900a76174819c59015ffcd17f7e',1,'m5::nfc::ndef']]], + ['userstar_11',['Userstar',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ab8d78b0485750b2e278bf1cec2a6ce93',1,'m5::nfc']]] +]; diff --git a/search/enumvalues_14.js b/search/enumvalues_14.js new file mode 100644 index 0000000..181ef90 --- /dev/null +++ b/search/enumvalues_14.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['v_0',['V',['../nfc_8hpp.html#a5e5f58799f82b1611c0309f953cc2c6fa5206560a306a2e085a437fd258eb57ce',1,'m5::nfc']]], + ['verayo_1',['Verayo',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af8b4d80e862711cdca5a259baf3992f1',1,'m5::nfc']]], + ['verisiti_2',['Verisiti',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a12a39ecd974a9cfc102360a5518e958a',1,'m5::nfc']]] +]; diff --git a/search/enumvalues_15.js b/search/enumvalues_15.js new file mode 100644 index 0000000..6e81a0c --- /dev/null +++ b/search/enumvalues_15.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['wearlinks_0',['Wearlinks',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a24d12a85aeb5793ca07358a5ea1c6417',1,'m5::nfc']]], + ['wellknown_1',['Wellknown',['../ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153a313f0c0c8c4d7402ad3ca82709c6b0b2',1,'m5::nfc::ndef']]], + ['wisesec_2',['Wisesec',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aa85491a5f53c64f5d548e2a9a93452d8',1,'m5::nfc']]], + ['write_5fblock_3',['WRITE_BLOCK',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca440f90e159a38a725e9fba3b31c89aa0',1,'m5::nfc::a']]], + ['write_5fpage_4',['WRITE_PAGE',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca6a23337128cbd492957f1253a696044e',1,'m5::nfc::a']]], + ['write_5fperso_5',['WRITE_PERSO',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acafe631de96c11edb259243ecd01d0d0d2',1,'m5::nfc::a']]], + ['write_5fsig_6',['WRITE_SIG',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acae844e66ca82dcaa9faaf0b44c866a42c',1,'m5::nfc::a']]], + ['writesingleblock_7',['WriteSingleBlock',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665aec468a6afe871d6c4210e8573e0728f9',1,'m5::nfc::v']]], + ['wupa_8',['WUPA',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acad3d299158514dd7779be84e08f22d4cc',1,'m5::nfc::a']]] +]; diff --git a/search/enumvalues_16.js b/search/enumvalues_16.js new file mode 100644 index 0000000..742e62f --- /dev/null +++ b/search/enumvalues_16.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xicor_0',['Xicor',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a72f8810468816d80ddeaf9a547ae7f57',1,'m5::nfc']]] +]; diff --git a/search/enumvalues_17.js b/search/enumvalues_17.js new file mode 100644 index 0000000..2f5de83 --- /dev/null +++ b/search/enumvalues_17.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['yubico_0',['Yubico',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ad64537cc32debef2d5eed7f739f6ea5c',1,'m5::nfc']]] +]; diff --git a/search/enumvalues_18.js b/search/enumvalues_18.js new file mode 100644 index 0000000..201dafd --- /dev/null +++ b/search/enumvalues_18.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['zmd_0',['Zmd',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a5991100c55aafa3a1a3f972dfae45b88',1,'m5::nfc']]] +]; diff --git a/search/enumvalues_2.js b/search/enumvalues_2.js new file mode 100644 index 0000000..d81570e --- /dev/null +++ b/search/enumvalues_2.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['ceitec_0',['Ceitec',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a2629a2e19e2b5645fe6a5429c7519d64',1,'m5::nfc']]], + ['celisic_1',['Celisic',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a55f066c966b1346813c56745a550fe87',1,'m5::nfc']]], + ['childdf_2',['ChildDf',['../apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada7998394ef65789d8e3a93fb947d3c8a5',1,'m5::nfc::apdu']]], + ['chinavision_3',['ChinaVision',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af1e67e05c8364092e64e22c052d345f5',1,'m5::nfc']]], + ['commit_5fperso_4',['COMMIT_PERSO',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca300625364a3273e9c05258572e9b2fc7',1,'m5::nfc::a']]], + ['communicationperformance_5',['CommunicationPerformance',['../nfcf_8hpp.html#aa85476c3807a205b8d13cb06347bb144a3ce9c6f141a2a97b4e9504272d3efc98',1,'m5::nfc::f']]], + ['cylink_6',['Cylink',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af10e0dbef40a6e27efbb533cf53de944',1,'m5::nfc']]] +]; diff --git a/search/enumvalues_3.js b/search/enumvalues_3.js new file mode 100644 index 0000000..232794f --- /dev/null +++ b/search/enumvalues_3.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['dallasmaxim_0',['DallasMaxim',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aebfb6d61188b3d1bcfb800f1803819a5',1,'m5::nfc']]], + ['decrement_1',['DECREMENT',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acac0ffa6e46086551bc5113d1238faf106',1,'m5::nfc::a']]], + ['delta_2',['Delta',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52adb1f4ab5845def61a83d5df13e0c2397',1,'m5::nfc']]], + ['des_3',['DES',['../desfire__file__system_8hpp.html#a87fa07187f0a1c6976f12ab14bb0fd80a80ac4ad5ef5d93178348c18272df6bd3',1,'m5::nfc::a::mifare::desfire']]], + ['deselect_4',['DESELECT',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca20966192c0ca6aed708795436471f682',1,'DESELECTm5::nfc::a'],['../nfcb_8hpp.html#ae2a856e80084be96e7eab93c4007af8ca20966192c0ca6aed708795436471f682',1,'DESELECTm5::nfc::b']]], + ['deselect_5fwith_5fcid_5',['DESELECT_WITH_CID',['../nfcb_8hpp.html#ae2a856e80084be96e7eab93c4007af8cae86ed6981f29d2df796b5eb1eda2f3e8',1,'m5::nfc::b']]], + ['dev_6',['DEV',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6abfeddf560ff988c07141df6135a9bfcf',1,'m5::nfc::ndef']]], + ['dfname_7',['DfName',['../apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada6bf1a0b1d6bc92eae6416611613dbafe',1,'m5::nfc::apdu']]], + ['done_8',['Done',['../structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html#a410e6ca7e4263d60017086ae8e5027f9af92965e2c8a7afb3c1b9a5c09a263636',1,'m5::nfc::ndef::type3::AttributeBlock']]] +]; diff --git a/search/enumvalues_4.js b/search/enumvalues_4.js new file mode 100644 index 0000000..9911bd4 --- /dev/null +++ b/search/enumvalues_4.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['efundercurrentdf_0',['EfUnderCurrentDf',['../apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada127a046b88390d6cf9d13d8f74d04778',1,'m5::nfc::apdu']]], + ['emmicroelectronic_1',['EmMicroelectronic',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af65389b034b137aea1aac82e3757af1f',1,'m5::nfc']]], + ['emosyn_2',['Emosyn',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae8de91691abd6da4ed775cbfadd55b9c',1,'m5::nfc']]], + ['emosynem_3',['EmosynEM',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a7cc36687d5a3eac280901dd6ed55917d',1,'m5::nfc']]], + ['empty_4',['Empty',['../ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153ace2c8aed9c2fa0cfbed56cbda4d8bf07',1,'m5::nfc::ndef']]], + ['extendedgetsysteminfo_5',['ExtendedGetSystemInfo',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665a467655381b250e323dc4602a34042aec',1,'m5::nfc::v']]], + ['extendedreadsingleblock_6',['ExtendedReadSingleBlock',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665a0be6a3722fb223e6b44152b59e8ce890',1,'m5::nfc::v']]], + ['extendedwritesingleblock_7',['ExtendedWriteSingleBlock',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665a9caeb24c8f5e7d8cdc4304d5d72b18b2',1,'m5::nfc::v']]], + ['external_8',['External',['../ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153ab206a1b4ea1097761f78e8876f6da779',1,'m5::nfc::ndef']]] +]; diff --git a/search/enumvalues_5.js b/search/enumvalues_5.js new file mode 100644 index 0000000..573bcf6 --- /dev/null +++ b/search/enumvalues_5.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['f_0',['F',['../nfc_8hpp.html#a5e5f58799f82b1611c0309f953cc2c6fa800618943025315f869e4e1f09471012',1,'m5::nfc']]], + ['fast_5fread_1',['FAST_READ',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca5b6e85f572e9f04e0ce673ed57d63b4b',1,'m5::nfc::a']]], + ['fci_2',['FCI',['../apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbfa74198f9e44085e24bba72b3ccac4c13a',1,'m5::nfc::apdu']]], + ['fcp_3',['FCP',['../apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbfaa7c815fafe60ae637d38216fa6300395',1,'m5::nfc::apdu']]], + ['felica_4',['FeliCa',['../_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982a2980dbc2442917a5c692c841d9f75bf3',1,'m5::unit::st25r3916']]], + ['felica_5',['Felica',['../_s_t25_r3916__definition_8hpp.html#a7d85ed3cdee95b0eab2dff6373824137aaa0cab77c3a886a6845b072c65998bb0',1,'m5::unit::st25r3916']]], + ['felicabitrate_6',['FelicaBitrate',['../_s_t25_r3916__definition_8hpp.html#a7d85ed3cdee95b0eab2dff6373824137a6a423d5a4a5fcd692e78eb20f8af274f',1,'m5::unit::st25r3916']]], + ['felicalite_7',['FeliCaLite',['../nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96fabb274ba4f79260fac1cceb11d9504a91',1,'m5::nfc::f']]], + ['felicalites_8',['FeliCaLiteS',['../nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96fa6478df87d6ba411e0bb4c7824085bc01',1,'m5::nfc::f']]], + ['felicaplug_9',['FeliCaPlug',['../nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96fa2672a11e5105880c01910d1c337e4bcb',1,'m5::nfc::f']]], + ['felicastandard_10',['FeliCaStandard',['../nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96facac4693ba70e855674fafee447e1b759',1,'m5::nfc::f']]], + ['file_11',['FILE',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a9fc5887c030f7a3e19821ebec457e719',1,'m5::nfc::ndef']]], + ['fileid_12',['FileId',['../apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada225a9460e6eedf7af126fdc580345881',1,'m5::nfc::apdu']]], + ['firstoronly_13',['FirstOrOnly',['../apdu_8hpp.html#a74836436e907c80c9a02040d912e6400a703aba6102ad8dd4829bc645f464c0b0',1,'m5::nfc::apdu']]], + ['fmd_14',['FMD',['../apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbfa4b25de86ef47d3b09525b1176978b34d',1,'m5::nfc::apdu']]], + ['fraunhoferipms_15',['FraunhoferIpms',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac98ec4b6eacfeddc9c9e98805db4f108',1,'m5::nfc']]], + ['freevision_16',['Freevision',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae1f17c7686d52051f430b8ffeb8ee7ed',1,'m5::nfc']]], + ['ftp_17',['FTP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6ac728a49363c9a93a43a7e7f232b5a54a',1,'m5::nfc::ndef']]], + ['ftp_5faa_18',['FTP_AA',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a122814ce7a56a5112eb1cff8c5bd3593',1,'m5::nfc::ndef']]], + ['ftp_5fftp_19',['FTP_FTP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6aec69ec65586bccf2924fd029d1a4141e',1,'m5::nfc::ndef']]], + ['ftps_20',['FTPS',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a29f97c79cb913145ca7c7b259f68eda9',1,'m5::nfc::ndef']]], + ['fudan_21',['Fudan',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae4322c6191d730dac2105a2299a0c25b',1,'m5::nfc']]], + ['fujitsu_22',['Fujitsu',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a053f42c6bae3432cae270ea978f7e638',1,'Fujitsum5::nfc'],['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa053f42c6bae3432cae270ea978f7e638',1,'Fujitsum5::nfc::v']]], + ['fujitsu_5ffram_23',['Fujitsu_FRAM',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa83aa9cd674ce75d50214b184503787d6',1,'m5::nfc::v']]] +]; diff --git a/search/enumvalues_6.js b/search/enumvalues_6.js new file mode 100644 index 0000000..a7ef8fd --- /dev/null +++ b/search/enumvalues_6.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['gantner_0',['Gantner',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a4708c93c4fb98a43a312831f0818dc59',1,'m5::nfc']]], + ['gemalto_1',['Gemalto',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ad81109d17c9fbdda036e968d76790932',1,'m5::nfc']]], + ['gentag_2',['Gentag',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac130b81932c3dafacf1396f6577c82c0',1,'m5::nfc']]], + ['get_5fversion_3',['GET_VERSION',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca3e4d39d03ce99d4daaab3749af67ff13',1,'m5::nfc::a']]], + ['getsysteminformaion_4',['GetSystemInformaion',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665a3a52b5070d76c0420ebb20c27f0245c3',1,'m5::nfc::v']]], + ['giantec_5',['Giantec',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a46de37a8bba55c26ae51a0dfb25d9588',1,'m5::nfc']]], + ['gieseckedevrient_6',['GieseckeDevrient',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a03e90cd6ff114c4c65759d84ffcefa6b',1,'m5::nfc']]], + ['guangzhousysur_7',['GuangzhouSysur',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a093d625de0dfea2426765a3bc319abbb',1,'m5::nfc']]] +]; diff --git a/search/enumvalues_7.js b/search/enumvalues_7.js new file mode 100644 index 0000000..2f5dd3b --- /dev/null +++ b/search/enumvalues_7.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['hidglobal_0',['HidGlobal',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a4ab9474eb236654f13ca79351f17811f',1,'m5::nfc']]], + ['hitachi_1',['Hitachi',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac76e5f5afd86d0ca4d39ff7bb3fd722d',1,'m5::nfc']]], + ['hitachiulsi_2',['HitachiUlsi',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ab9c7b1758e2866e63d2b7032e97519fb',1,'m5::nfc']]], + ['hlta_3',['HLTA',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca56861bff3805bf618d0a05acf1e9585e',1,'m5::nfc::a']]], + ['hltb_4',['HLTB',['../nfcb_8hpp.html#ae2a856e80084be96e7eab93c4007af8ca64f2b46f660a112d2cc1a68e522cb0e0',1,'m5::nfc::b']]], + ['hmt_5',['Hmt',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac74b16e4e10cd1c81587d247b2027e4c',1,'m5::nfc']]], + ['holtek_6',['Holtek',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a37bccf898dd6469a4dd10f82a5cc47a0',1,'m5::nfc']]], + ['http_7',['HTTP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a293c9ea246ff9985dc6f62a650f78986',1,'m5::nfc::ndef']]], + ['http_5fwww_8',['HTTP_WWW',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a610eb6d830ec73ea0cbb0db7e0dd21bb',1,'m5::nfc::ndef']]], + ['https_9',['HTTPS',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a0e8433f9a404f1f3ba601c14b026d321',1,'m5::nfc::ndef']]], + ['https_5fwww_10',['HTTPS_WWW',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6ab9522804eaa2e4afccb42a63de1c90a0',1,'m5::nfc::ndef']]], + ['huada_11',['Huada',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a722e7803fa055c9334fa490aeebc0730',1,'m5::nfc']]], + ['hynix_12',['Hynix',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a3934b9f6b38739f963327cc4b064e01f',1,'m5::nfc']]] +]; diff --git a/search/enumvalues_8.js b/search/enumvalues_8.js new file mode 100644 index 0000000..6d0d048 --- /dev/null +++ b/search/enumvalues_8.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['idsmicrochip_0',['IdsMicrochip',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af7f51efd70b299e12224567cd5f770c5',1,'m5::nfc']]], + ['imap_1',['IMAP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a0b787be1ef17df10d26758673ae24325',1,'m5::nfc::ndef']]], + ['impinj_2',['Impinj',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a880a57662cac3d08b47887189cfdf8fc',1,'m5::nfc']]], + ['increment_3',['INCREMENT',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca90cf1f5206b348a822cc1a453a587534',1,'m5::nfc::a']]], + ['infineon_4',['Infineon',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a1b71a9f258eec6d3c04498379ad293a0',1,'m5::nfc']]], + ['innovision_5',['Innovision',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac8c39a20f148af971c5a093ae8e180bc',1,'m5::nfc']]], + ['inprogress_6',['InProgress',['../structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html#a410e6ca7e4263d60017086ae8e5027f9a12d868c18cb29bf58f02b504be9033fd',1,'m5::nfc::ndef::type3::AttributeBlock']]], + ['insidetechnology_7',['InsideTechnology',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52afd293c248037daa2f4b675057d1ab9e3',1,'m5::nfc']]], + ['intel_8',['Intel',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aff97a9fdede09eaf6e1c8ec9f6a61dd5',1,'m5::nfc']]], + ['invengo_9',['Invengo',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a7dd26199a38f403dc6c36623131bd550',1,'m5::nfc']]], + ['inventory_10',['Inventory',['../nfcv_8hpp.html#a82f91becfd0bad97f0e5216c10d5e665a4d604dd8f008145471dc845683399189',1,'m5::nfc::v']]], + ['irdaobex_11',['IRDAOBEX',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a8790d2ac467ea1bef0e6ddd6cdf5c294',1,'m5::nfc::ndef']]], + ['iso14443a_12',['ISO14443A',['../_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982a4e73d2cbb6b026e3362f1627b91f28e5',1,'ISO14443Am5::unit::st25r3916'],['../_s_t25_r3916__definition_8hpp.html#a7d85ed3cdee95b0eab2dff6373824137a4e73d2cbb6b026e3362f1627b91f28e5',1,'ISO14443Am5::unit::st25r3916']]], + ['iso14443abitrate_13',['ISO14443ABitrate',['../_s_t25_r3916__definition_8hpp.html#a7d85ed3cdee95b0eab2dff6373824137a7fc22f6cc29c597048b17b6db90613e9',1,'m5::unit::st25r3916']]], + ['iso14443b_14',['ISO14443B',['../_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982a83d3cb2d1335620163a683ea43dc5e0b',1,'m5::unit::st25r3916']]], + ['iso_5f14443_5f4_15',['ISO_14443_4',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9afa9e9f88672e820b61f058ca42323bb7',1,'m5::nfc::a']]], + ['iso_5f18092_16',['ISO_18092',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9ad68f4a068cb3b370cffbffd6312931fd',1,'m5::nfc::a']]], + ['issm_17',['Issm',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a5e5fca57283852e1ea45f23382e906d9',1,'m5::nfc']]] +]; diff --git a/search/enumvalues_9.js b/search/enumvalues_9.js new file mode 100644 index 0000000..97f993f --- /dev/null +++ b/search/enumvalues_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kovio_0',['Kovio',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae04e18f6c05ae7f22b3f84810232ddf7',1,'m5::nfc']]] +]; diff --git a/search/enumvalues_a.js b/search/enumvalues_a.js new file mode 100644 index 0000000..89cf93c --- /dev/null +++ b/search/enumvalues_a.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['last_0',['Last',['../apdu_8hpp.html#a74836436e907c80c9a02040d912e6400ad55b30607c2a9a2616347d6edb789f6b',1,'m5::nfc::apdu']]], + ['legic_1',['Legic',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a8e1dad2094b9d0f7df48aed4f7423a29',1,'m5::nfc']]], + ['lg_2',['LG',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a3138b8e6061fdf7cfaaa79279175cbcd',1,'m5::nfc']]], + ['lock_5fsig_3',['LOCK_SIG',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca229bbf49bdf5d7f5e0e759e078b11984',1,'m5::nfc::a']]], + ['lockcontrol_4',['LockControl',['../ndef_8hpp.html#ace18f3439d147659696eec175e13e03aa48c38339a630d01cabdda99ea58ea368',1,'m5::nfc::ndef']]], + ['lsitec_5',['LsiTec',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a9b9abf8402a7357bfc8a4972855eb0c1',1,'m5::nfc']]] +]; diff --git a/search/enumvalues_b.js b/search/enumvalues_b.js new file mode 100644 index 0000000..a4332e3 --- /dev/null +++ b/search/enumvalues_b.js @@ -0,0 +1,44 @@ +var searchData= +[ + ['magellan_0',['Magellan',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a1054a39cbec2d48f2b30147ddba51b60',1,'m5::nfc']]], + ['mailto_1',['MAILTO',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a43b8b3d092408ddc2ae9af844fe50850',1,'m5::nfc::ndef']]], + ['malaysiamicro_2',['MalaysiaMicro',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52acee877b78c56f95d998c9b5113c18519',1,'m5::nfc']]], + ['masktech_3',['Masktech',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a612c3eab9458bb721f9f906f3265625b',1,'m5::nfc']]], + ['matsushita_4',['Matsushita',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a6a9eb6ca4f97808c45c01063c5f45d97',1,'m5::nfc']]], + ['mediatek_5',['Mediatek',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a0d1a8643ff45ff9cbdb8ec3915c0f674',1,'m5::nfc']]], + ['melexis_6',['Melexis',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a9f3451b6a6b2570d821b0cdbabaf0d75',1,'m5::nfc']]], + ['memorycontrol_7',['MemoryControl',['../ndef_8hpp.html#ace18f3439d147659696eec175e13e03aa8b38c362d0e19c18c5b556991a14f2b1',1,'m5::nfc::ndef']]], + ['message_8',['Message',['../ndef_8hpp.html#ace18f3439d147659696eec175e13e03aa4c2a8fe7eaf24721cc7a9f0175115bd4',1,'Messagem5::nfc::ndef'],['../ndef_8hpp.html#a3d88baf2d1668d0f00d9c5a2397f9c2fa4c2a8fe7eaf24721cc7a9f0175115bd4',1,'Messagem5::nfc::ndef::type4']]], + ['microsensys_9',['Microsensys',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a585ac9c856d20c86b3199e2f97382f7c',1,'m5::nfc']]], + ['mifare_5fclassic_5f1k_10',['MIFARE_Classic_1K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a885bf4a9627b8f569c641a5c9b1f17d0',1,'m5::nfc::a']]], + ['mifare_5fclassic_5f2k_11',['MIFARE_Classic_2K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9aebf3f45c13853244047f9c4ee9bfdb93',1,'m5::nfc::a']]], + ['mifare_5fclassic_5f4k_12',['MIFARE_Classic_4K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9af3a58c5e5fe7dd21fffa7e40f437245c',1,'m5::nfc::a']]], + ['mifare_5fclassic_5fmini_13',['MIFARE_Classic_Mini',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a4fe50583f84464fb1c953d580f6e161f',1,'m5::nfc::a']]], + ['mifare_5fdesfire_5f2k_14',['MIFARE_DESFire_2K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a520aede6c95d19df20939d3b54c0a38b',1,'m5::nfc::a']]], + ['mifare_5fdesfire_5f4k_15',['MIFARE_DESFire_4K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a41a2a80772adcae1b466b583d351fac8',1,'m5::nfc::a']]], + ['mifare_5fdesfire_5f8k_16',['MIFARE_DESFire_8K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a70aa200ac0fb56ca9b8f5b0a773ce6c5',1,'m5::nfc::a']]], + ['mifare_5fdesfire_5flight_17',['MIFARE_DESFire_Light',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9ad0fd58a3c82a0fd97e41c1fe1e3690b5',1,'m5::nfc::a']]], + ['mifare_5fplus_5f2k_18',['MIFARE_Plus_2K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9aa99a32edc51c1e4a35bb462cd6a63107',1,'m5::nfc::a']]], + ['mifare_5fplus_5f4k_19',['MIFARE_Plus_4K',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a23dfdac1eb44aacf66b01c02a3ec6a28',1,'m5::nfc::a']]], + ['mifare_5fplus_5fse_20',['MIFARE_Plus_SE',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9aa6c76c717d761fabff1600bcce01102d',1,'m5::nfc::a']]], + ['mifare_5fultralight_21',['MIFARE_Ultralight',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a6591940064506c23ff6b6ba078c91376',1,'m5::nfc::a']]], + ['mifare_5fultralight_5fev1_5f1_22',['MIFARE_Ultralight_EV1_1',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a0461b90b9920b9c4b1aab58e453d6fa5',1,'m5::nfc::a']]], + ['mifare_5fultralight_5fev1_5f2_23',['MIFARE_Ultralight_EV1_2',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a0bb8b6c6d660b13d53a47087d3eb23d0',1,'m5::nfc::a']]], + ['mifare_5fultralight_5fnano_24',['MIFARE_Ultralight_Nano',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a3417432797b50ed949c95e771f71c4a7',1,'m5::nfc::a']]], + ['mifare_5fultralightc_25',['MIFARE_UltralightC',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a9be14fcfd48418057018a4fdc4a15e11',1,'m5::nfc::a']]], + ['mikron_26',['Mikron',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af9ff1352d0b347fc14825ad997aa4fe5',1,'m5::nfc']]], + ['mimemedia_27',['MIMEMedia',['../ndef__record_8hpp.html#a43d1cb99aeb4fdf193bba66a6b4e7153a3b797d40b6c61542a8763c8c2b131e14',1,'m5::nfc::ndef']]], + ['mitsubishi_28',['Mitsubishi',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a2fab5d8de22382790ca8eeb34d389b73',1,'m5::nfc']]], + ['mode0_29',['Mode0',['../nfcf_8hpp.html#a6959bdf0a008260dcec938adc6a7db5ca315436bae0e85636381fc939db06aee5',1,'m5::nfc::f::standard']]], + ['mode00_30',['Mode00',['../namespacem5_1_1nfc_1_1f_1_1lite__s.html#a8205d1ee70e7b5a0d9c073f9e8916b90ada3f9688888dfbaa06ca923662130978',1,'m5::nfc::f::lite_s']]], + ['mode01_31',['Mode01',['../namespacem5_1_1nfc_1_1f_1_1lite__s.html#a8205d1ee70e7b5a0d9c073f9e8916b90ae2094a9b36ca75c979deaf1a582fbfc5',1,'m5::nfc::f::lite_s']]], + ['mode1_32',['Mode1',['../nfcf_8hpp.html#a6959bdf0a008260dcec938adc6a7db5ca7a2ea225a084605104f8c39b3ae9657c',1,'m5::nfc::f::standard']]], + ['mode10_33',['Mode10',['../namespacem5_1_1nfc_1_1f_1_1lite__s.html#a8205d1ee70e7b5a0d9c073f9e8916b90a8fec38fc491b842379a834279aa2ca03',1,'m5::nfc::f::lite_s']]], + ['mode11_34',['Mode11',['../namespacem5_1_1nfc_1_1f_1_1lite__s.html#a8205d1ee70e7b5a0d9c073f9e8916b90a4bc80f64d5ab44497ce35569d1bc12b4',1,'m5::nfc::f::lite_s']]], + ['mode2_35',['Mode2',['../nfcf_8hpp.html#a6959bdf0a008260dcec938adc6a7db5ca04c542f260d16590ec60c594f67a30e7',1,'m5::nfc::f::standard']]], + ['mode3_36',['Mode3',['../nfcf_8hpp.html#a6959bdf0a008260dcec938adc6a7db5cab68fa4884da8d22e83f37b4f209295f1',1,'m5::nfc::f::standard']]], + ['motorola_37',['Motorola',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a2ed1afe3c9215523e4272f46e6186b31',1,'m5::nfc']]], + ['mstar_38',['Mstar',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a1447363e9eef717d4c85472496648bb1',1,'m5::nfc']]], + ['multibytemarker_39',['MultibyteMarker',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae6ff72d7749e09da7eaaee01a5b553f3',1,'m5::nfc']]], + ['mutosmart_40',['MutoSmart',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aab1d882780c905696cfa077c628c50a9',1,'m5::nfc']]] +]; diff --git a/search/enumvalues_c.js b/search/enumvalues_c.js new file mode 100644 index 0000000..e8a1e7e --- /dev/null +++ b/search/enumvalues_c.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['na_0',['NA',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6ad4cd0dabcf4caa22ad92fab40844c786',1,'m5::nfc::ndef']]], + ['nec_1',['NEC',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a7e70c0503999340437163065dbd1b1b7',1,'m5::nfc']]], + ['news_2',['NEWS',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6aff4e2dc4962dc25a1512353299992c8d',1,'m5::nfc::ndef']]], + ['next_3',['Next',['../apdu_8hpp.html#a74836436e907c80c9a02040d912e6400a10ac3d04253ef7e1ddc73e6091c0cd55',1,'m5::nfc::apdu']]], + ['nfc_4',['NFC',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6ad6fef5d168d085196fddede17c3fdd05',1,'m5::nfc::ndef']]], + ['nfcforumtype1_5',['NFCForumType1',['../_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982a2477a3d7e824a688688b07b1977e53e2',1,'m5::unit::st25r3916']]], + ['nfcip1_6',['NFCIP1',['../_s_t25_r3916__definition_8hpp.html#a4b62cbbb0eb6e6a282d422eff3018982a47b3e6d28090c5f54b07211d5b45ae90',1,'NFCIP1m5::unit::st25r3916'],['../_s_t25_r3916__definition_8hpp.html#a7d85ed3cdee95b0eab2dff6373824137a47b3e6d28090c5f54b07211d5b45ae90',1,'NFCIP1m5::unit::st25r3916']]], + ['nfs_7',['NFS',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6a1d1a594959ec615f56516f5d0f5e8ddb',1,'m5::nfc::ndef']]], + ['nitecrest_8',['Nitecrest',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52abea429b0656e0205f1fa32769cc10919',1,'m5::nfc']]], + ['none_9',['None',['../apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbfa6adf97f83acf6453d4a6a4b1070f3754',1,'Nonem5::nfc::apdu'],['../nfcf_8hpp.html#aa85476c3807a205b8d13cb06347bb144a6adf97f83acf6453d4a6a4b1070f3754',1,'Nonem5::nfc::f'],['../nfc_8hpp.html#a5e5f58799f82b1611c0309f953cc2c6fa6adf97f83acf6453d4a6a4b1070f3754',1,'Nonem5::nfc']]], + ['nordic_10',['Nordic',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a460ebccd86ebc5e464cdc933b95a6fe0',1,'m5::nfc']]], + ['ntag_5f203_11',['NTAG_203',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a7b40ce30595f4bd206ade201da8d29ee',1,'m5::nfc::a']]], + ['ntag_5f210_12',['NTAG_210',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9ae6e82df8e5684b0c2caac42233144ecf',1,'m5::nfc::a']]], + ['ntag_5f210u_13',['NTAG_210u',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a348ce2863a7bca1a7fa60cb0dbe666ba',1,'m5::nfc::a']]], + ['ntag_5f212_14',['NTAG_212',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a2f55bc6a25763536d7476378eb6cb65d',1,'m5::nfc::a']]], + ['ntag_5f213_15',['NTAG_213',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a28e799698d4e8f7ea5cecfafdbb9bb7a',1,'m5::nfc::a']]], + ['ntag_5f215_16',['NTAG_215',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a4175799ea4ce591a0797676b68d82fe6',1,'m5::nfc::a']]], + ['ntag_5f216_17',['NTAG_216',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a93f5a9b6399d7a5544876358c861b04a',1,'m5::nfc::a']]], + ['ntag_5f4xx_18',['NTAG_4XX',['../nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9a327c9572a3acf7762731393d101cbd65',1,'m5::nfc::a']]], + ['null_19',['Null',['../ndef_8hpp.html#ace18f3439d147659696eec175e13e03aabbb93ef26e3c101ff11cdd21cab08a94',1,'m5::nfc::ndef']]], + ['nxp_20',['NXP',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52aab174cf654efc28e4b7c7adb1b57e5fa',1,'NXPm5::nfc'],['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aaab174cf654efc28e4b7c7adb1b57e5fa',1,'NXPm5::nfc::v']]], + ['nxp_5ficode_5fsli_21',['NXP_ICODE_SLI',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa207aaada4da22517a2da85561d2864b9',1,'m5::nfc::v']]], + ['nxp_5ficode_5fslix_22',['NXP_ICODE_SLIX',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aad77a0b9d83149e70f1568aa3410659ee',1,'m5::nfc::v']]], + ['nxp_5ficode_5fslix_5f2_23',['NXP_ICODE_SLIX_2',['../nfcv_8hpp.html#a5aa34c03e26801066d48119cab74dd0aa2f22e309e6dd43a737c096587fe73323',1,'m5::nfc::v']]] +]; diff --git a/search/enumvalues_d.js b/search/enumvalues_d.js new file mode 100644 index 0000000..b751d79 --- /dev/null +++ b/search/enumvalues_d.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['oberthur_0',['Oberthur',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a31917a5f060e2593e6ddf934dc6cea73',1,'m5::nfc']]], + ['oki_1',['Oki',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ae9619561af4f8c522aebc15da688378c',1,'m5::nfc']]], + ['oneof256_2',['OneOf256',['../nfcv_8hpp.html#aba1eff44affc1b08f4f4792a10d50240a170b807ee3b24e7ed1bd9268de10c2e4',1,'m5::nfc::v']]], + ['oneof4_3',['OneOf4',['../nfcv_8hpp.html#aba1eff44affc1b08f4f4792a10d50240a78e9406b6f730c444a589f91bfe09613',1,'m5::nfc::v']]], + ['onsemiconductor_4',['OnSemiconductor',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52af41a64871e7c90d91b575294be5d6831',1,'m5::nfc']]], + ['orga_5',['Orga',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac253e738c5afc685dd2bc5c9a3e4eaee',1,'m5::nfc']]] +]; diff --git a/search/enumvalues_e.js b/search/enumvalues_e.js new file mode 100644 index 0000000..3957c52 --- /dev/null +++ b/search/enumvalues_e.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['parentdf_0',['ParentDf',['../apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08adae0b5d60e5eea9e28524ae742a4a85b61',1,'m5::nfc::apdu']]], + ['pathfromcurrentdf_1',['PathFromCurrentDf',['../apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08adada937e05c426e8439cd1f4130d69562a',1,'m5::nfc::apdu']]], + ['pathfrommf_2',['PathFromMf',['../apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08adabf1f53068262ad6525671112c94790cb',1,'m5::nfc::apdu']]], + ['personalize_5fuid_5fusage_3',['PERSONALIZE_UID_USAGE',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90aca2468279bd72ec32c6968805408a791b9',1,'m5::nfc::a']]], + ['pop_4',['POP',['../ndef_8hpp.html#a7b108ad368053dd0056d9e0dccdb7bd6aefdb39a4c7286afcecf0e8a7435fce6a',1,'m5::nfc::ndef']]], + ['pragmatic_5',['Pragmatic',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a7e2928368546bde6a197d5d7f5706255',1,'m5::nfc']]], + ['previous_6',['Previous',['../apdu_8hpp.html#a74836436e907c80c9a02040d912e6400add1f775e443ff3b9a89270713580a51b',1,'m5::nfc::apdu']]], + ['productivityeng_7',['ProductivityEng',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a6a0bc7a392f90bd8c5291600b784da03',1,'m5::nfc']]], + ['proprietary_8',['Proprietary',['../ndef_8hpp.html#ace18f3439d147659696eec175e13e03aa03fe683ef28b9ddfe7f658a0f4b3b80e',1,'Proprietarym5::nfc::ndef'],['../ndef_8hpp.html#a3d88baf2d1668d0f00d9c5a2397f9c2fa03fe683ef28b9ddfe7f658a0f4b3b80e',1,'Proprietarym5::nfc::ndef::type4']]], + ['pwd_5fauth_9',['PWD_AUTH',['../nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90acab9f3cd7a5e7fde4d914d0e58628e0746',1,'m5::nfc::a']]] +]; diff --git a/search/enumvalues_f.js b/search/enumvalues_f.js new file mode 100644 index 0000000..637b1ec --- /dev/null +++ b/search/enumvalues_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['qualcomm_0',['Qualcomm',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52ac9b0cb53646238b8c03fb69b8f331220',1,'m5::nfc']]], + ['quanray_1',['Quanray',['../manufacturer__id_8hpp.html#aae5fb117206b5b278632bbf99d1e4f52a250bdc4ed0d3979efa85515ce5cd06ec',1,'m5::nfc']]] +]; diff --git a/search/files_0.js b/search/files_0.js new file mode 100644 index 0000000..07e46d8 --- /dev/null +++ b/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['aes_2ecpp_0',['aes.cpp',['../aes_8cpp.html',1,'']]], + ['aes_2ehpp_1',['aes.hpp',['../aes_8hpp.html',1,'']]], + ['apdu_2ecpp_2',['apdu.cpp',['../apdu_8cpp.html',1,'']]], + ['apdu_2ehpp_3',['apdu.hpp',['../apdu_8hpp.html',1,'']]] +]; diff --git a/search/files_1.js b/search/files_1.js new file mode 100644 index 0000000..1839ed5 --- /dev/null +++ b/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['desfire_5ffile_5fsystem_2ecpp_0',['desfire_file_system.cpp',['../desfire__file__system_8cpp.html',1,'']]], + ['desfire_5ffile_5fsystem_2ehpp_1',['desfire_file_system.hpp',['../desfire__file__system_8hpp.html',1,'']]] +]; diff --git a/search/files_2.js b/search/files_2.js new file mode 100644 index 0000000..2924bc2 --- /dev/null +++ b/search/files_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['emulation_5flayer_5fa_2ecpp_0',['emulation_layer_a.cpp',['../emulation__layer__a_8cpp.html',1,'']]], + ['emulation_5flayer_5fa_2ehpp_1',['emulation_layer_a.hpp',['../emulation__layer__a_8hpp.html',1,'']]], + ['emulation_5flayer_5fa_5fst25r3916_2ecpp_2',['emulation_layer_a_ST25R3916.cpp',['../emulation__layer__a___s_t25_r3916_8cpp.html',1,'']]], + ['emulation_5flayer_5ff_2ecpp_3',['emulation_layer_f.cpp',['../emulation__layer__f_8cpp.html',1,'']]], + ['emulation_5flayer_5ff_2ehpp_4',['emulation_layer_f.hpp',['../emulation__layer__f_8hpp.html',1,'']]], + ['emulation_5flayer_5ff_5fst25r3916_2ecpp_5',['emulation_layer_f_ST25R3916.cpp',['../emulation__layer__f___s_t25_r3916_8cpp.html',1,'']]] +]; diff --git a/search/files_3.js b/search/files_3.js new file mode 100644 index 0000000..28379ff --- /dev/null +++ b/search/files_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['file_5fsystem_2ecpp_0',['file_system.cpp',['../file__system_8cpp.html',1,'']]], + ['file_5fsystem_2ehpp_1',['file_system.hpp',['../file__system_8hpp.html',1,'']]] +]; diff --git a/search/files_4.js b/search/files_4.js new file mode 100644 index 0000000..cc26fc0 --- /dev/null +++ b/search/files_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['isodep_2ecpp_0',['isoDEP.cpp',['../iso_d_e_p_8cpp.html',1,'']]], + ['isodep_2ehpp_1',['isoDEP.hpp',['../iso_d_e_p_8hpp.html',1,'']]] +]; diff --git a/search/files_5.js b/search/files_5.js new file mode 100644 index 0000000..c2bb304 --- /dev/null +++ b/search/files_5.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['m5unitunifiednfc_2ehpp_0',['M5UnitUnifiedNFC.hpp',['../_m5_unit_unified_n_f_c_8hpp.html',1,'']]], + ['manufacturer_5fid_2ehpp_1',['manufacturer_id.hpp',['../manufacturer__id_8hpp.html',1,'']]], + ['mifare_2ecpp_2',['mifare.cpp',['../mifare_8cpp.html',1,'']]], + ['mifare_2ehpp_3',['mifare.hpp',['../mifare_8hpp.html',1,'']]], + ['mifare_5fclassic_5fcrypto1_2ehpp_4',['mifare_classic_crypto1.hpp',['../mifare__classic__crypto1_8hpp.html',1,'']]] +]; diff --git a/search/files_6.js b/search/files_6.js new file mode 100644 index 0000000..1cce743 --- /dev/null +++ b/search/files_6.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['ndef_2ecpp_0',['ndef.cpp',['../ndef_8cpp.html',1,'']]], + ['ndef_2ehpp_1',['ndef.hpp',['../ndef_8hpp.html',1,'']]], + ['ndef_5flayer_2ecpp_2',['ndef_layer.cpp',['../ndef__layer_8cpp.html',1,'']]], + ['ndef_5flayer_2ehpp_3',['ndef_layer.hpp',['../ndef__layer_8hpp.html',1,'']]], + ['ndef_5frecord_2ecpp_4',['ndef_record.cpp',['../ndef__record_8cpp.html',1,'']]], + ['ndef_5frecord_2ehpp_5',['ndef_record.hpp',['../ndef__record_8hpp.html',1,'']]], + ['ndef_5ftlv_2ecpp_6',['ndef_tlv.cpp',['../ndef__tlv_8cpp.html',1,'']]], + ['ndef_5ftlv_2ehpp_7',['ndef_tlv.hpp',['../ndef__tlv_8hpp.html',1,'']]], + ['nfc_2ehpp_8',['nfc.hpp',['../nfc_8hpp.html',1,'']]], + ['nfc_5fb_5ffile_5fsystem_2ecpp_9',['nfc_b_file_system.cpp',['../nfc__b__file__system_8cpp.html',1,'']]], + ['nfc_5fb_5ffile_5fsystem_2ehpp_10',['nfc_b_file_system.hpp',['../nfc__b__file__system_8hpp.html',1,'']]], + ['nfc_5flayer_2ehpp_11',['nfc_layer.hpp',['../nfc__layer_8hpp.html',1,'']]], + ['nfc_5flayer_5fa_2ecpp_12',['nfc_layer_a.cpp',['../nfc__layer__a_8cpp.html',1,'']]], + ['nfc_5flayer_5fa_2ehpp_13',['nfc_layer_a.hpp',['../nfc__layer__a_8hpp.html',1,'']]], + ['nfc_5flayer_5fa_5fst25r3916_2ecpp_14',['nfc_layer_a_ST25R3916.cpp',['../nfc__layer__a___s_t25_r3916_8cpp.html',1,'']]], + ['nfc_5flayer_5fb_2ehpp_15',['nfc_layer_b.hpp',['../nfc__layer__b_8hpp.html',1,'']]], + ['nfc_5flayer_5fb_5fst25r3916_2ecpp_16',['nfc_layer_b_ST25R3916.cpp',['../nfc__layer__b___s_t25_r3916_8cpp.html',1,'']]], + ['nfc_5flayer_5ff_2ecpp_17',['nfc_layer_f.cpp',['../nfc__layer__f_8cpp.html',1,'']]], + ['nfc_5flayer_5ff_2ehpp_18',['nfc_layer_f.hpp',['../nfc__layer__f_8hpp.html',1,'']]], + ['nfc_5flayer_5ff_5fst25r3916_2ecpp_19',['nfc_layer_f_ST25R3916.cpp',['../nfc__layer__f___s_t25_r3916_8cpp.html',1,'']]], + ['nfc_5flayer_5fv_2ecpp_20',['nfc_layer_v.cpp',['../nfc__layer__v_8cpp.html',1,'']]], + ['nfc_5flayer_5fv_2ehpp_21',['nfc_layer_v.hpp',['../nfc__layer__v_8hpp.html',1,'']]], + ['nfc_5flayer_5fv_5fst25r3916_2ecpp_22',['nfc_layer_v_ST25R3916.cpp',['../nfc__layer__v___s_t25_r3916_8cpp.html',1,'']]], + ['nfca_2ecpp_23',['nfca.cpp',['../nfca_8cpp.html',1,'']]], + ['nfca_2ehpp_24',['nfca.hpp',['../nfca_8hpp.html',1,'']]], + ['nfcb_2ecpp_25',['nfcb.cpp',['../nfcb_8cpp.html',1,'']]], + ['nfcb_2ehpp_26',['nfcb.hpp',['../nfcb_8hpp.html',1,'']]], + ['nfcf_2ecpp_27',['nfcf.cpp',['../nfcf_8cpp.html',1,'']]], + ['nfcf_2ehpp_28',['nfcf.hpp',['../nfcf_8hpp.html',1,'']]], + ['nfcv_2ehpp_29',['nfcv.hpp',['../nfcv_8hpp.html',1,'']]] +]; diff --git a/search/files_7.js b/search/files_7.js new file mode 100644 index 0000000..a8d7b6f --- /dev/null +++ b/search/files_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['secure_5fzero_2ehpp_0',['secure_zero.hpp',['../secure__zero_8hpp.html',1,'']]], + ['st25r3916_5fdefinition_2ehpp_1',['ST25R3916_definition.hpp',['../_s_t25_r3916__definition_8hpp.html',1,'']]] +]; diff --git a/search/files_8.js b/search/files_8.js new file mode 100644 index 0000000..dd52d2a --- /dev/null +++ b/search/files_8.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['unit_5fst25r3916_2ecpp_0',['unit_ST25R3916.cpp',['../unit___s_t25_r3916_8cpp.html',1,'']]], + ['unit_5fst25r3916_2ehpp_1',['unit_ST25R3916.hpp',['../unit___s_t25_r3916_8hpp.html',1,'']]], + ['unit_5fst25r3916_5fnfca_2ecpp_2',['unit_ST25R3916_nfca.cpp',['../unit___s_t25_r3916__nfca_8cpp.html',1,'']]], + ['unit_5fst25r3916_5fnfcb_2ecpp_3',['unit_ST25R3916_nfcb.cpp',['../unit___s_t25_r3916__nfcb_8cpp.html',1,'']]], + ['unit_5fst25r3916_5fnfcf_2ecpp_4',['unit_ST25R3916_nfcf.cpp',['../unit___s_t25_r3916__nfcf_8cpp.html',1,'']]], + ['unit_5fst25r3916_5fnfcv_2ecpp_5',['unit_ST25R3916_nfcv.cpp',['../unit___s_t25_r3916__nfcv_8cpp.html',1,'']]], + ['unit_5fst25r3916_5futil_2ecpp_6',['unit_ST25R3916_util.cpp',['../unit___s_t25_r3916__util_8cpp.html',1,'']]] +]; diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 0000000..511e13e --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['activate_0',['activate',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a48ebe154a123b7213cb9783b6b0d24dd',1,'m5::nfc::NFCLayerA::activate()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#acb1e41eb54c5b681ca9ae7cd376d2eec',1,'m5::nfc::NFCLayerF::activate()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#aaddc0e4e632f6991267ffdffe68913f2',1,'m5::nfc::NFCLayerV::activate()']]], + ['activatedpicc_1',['activatedPICC',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a88b5213b7feafcec4c5e0e12d53d1a8c',1,'m5::nfc::NFCLayerA::activatedPICC()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a43e13b709e37cda6e0bd2e63ec0db114',1,'m5::nfc::NFCLayerB::activatedPICC()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#adca10cd40a000169aab21a481b71af39',1,'m5::nfc::NFCLayerF::activatedPICC()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#ad967723ec85d3aab6e535348aac36995',1,'m5::nfc::NFCLayerV::activatedPICC()']]], + ['aes_5fcbc_5fcrypt_2',['aes_cbc_crypt',['../aes_8cpp.html#ad26d67e84a0c1c2ae9d4c027d8c2d66a',1,'m5::nfc::crypto']]], + ['aes_5fecb_5fencrypt_3',['aes_ecb_encrypt',['../aes_8cpp.html#a3be0738c24fac6d2216486db30bb064c',1,'m5::nfc::crypto']]] +]; diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 0000000..4e42dc8 --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['begin_0',['begin',['../classm5_1_1nfc_1_1_emulation_layer_a.html#a7bb388444ceae8784ebc6713af5c4651',1,'m5::nfc::EmulationLayerA::begin()'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#ac1cbcb81905c6cbb6fa939f254486bf8',1,'m5::nfc::EmulationLayerF::begin()']]] +]; diff --git a/search/functions_10.js b/search/functions_10.js new file mode 100644 index 0000000..873e842 --- /dev/null +++ b/search/functions_10.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['tag_0',['tag',['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a27d60314383f0b0655137a1f9b1590fe',1,'m5::nfc::ndef::TLV']]], + ['tag_5fto_5ftagbit_1',['tag_to_tagbit',['../ndef_8hpp.html#a727b1668ad3afc7b4313e5ed8fbde964',1,'m5::nfc::ndef']]], + ['tail4_2',['tail4',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a77112543127cf68a1d6ae55bb32dddc6',1,'m5::nfc::a::PICC']]], + ['timeslot_5fto_5fslot_3',['timeslot_to_slot',['../nfcf_8hpp.html#a89d13d59812d64bb13835a45aebebeba',1,'m5::nfc::f']]], + ['to_5ftlv_4',['to_tlv',['../structm5_1_1nfc_1_1_f_c_p.html#a166ffbcf090d17218dee8049bfd16468',1,'m5::nfc::FCP']]], + ['totalsize_5',['totalSize',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#aad93bf88a9b215b3f332598cddc0d845',1,'m5::nfc::a::PICC']]], + ['transceive_6',['transceive',['../classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html#a54e5ddd52a865d0efb6682f92bde48a1',1,'m5::nfc::isodep::IsoDEP::transceive()'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#af922fdf273e872f865fb78312796393b',1,'m5::nfc::NFCLayerA::transceive()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a122b2ce7114b2c5ed04e7b7457c2e098',1,'m5::nfc::NFCLayerB::transceive()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#acaed9934c5c5b9e261d9bbcaa404517f',1,'m5::nfc::NFCLayerInterface::transceive()']]], + ['transceiveapdu_7',['transceiveAPDU',['../classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html#ad5dfa0961e8b2acaef1c67658f1be5fb',1,'m5::nfc::isodep::IsoDEP']]], + ['transceiveinf_8',['transceiveINF',['../classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html#a65c3e66cf72e3b5004385ceb8527b665',1,'m5::nfc::isodep::IsoDEP']]], + ['transmit_9',['transmit',['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a3f248f568f9ce9526593e1eb194073f4',1,'m5::nfc::NFCLayerB::transmit()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a47a89384937e84ac348053ec57daa022',1,'m5::nfc::NFCLayerInterface::transmit()']]], + ['typeasstring_10',['typeAsString',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a5b8d16fa65412e2ff95e3d54e4c8fb51',1,'m5::nfc::a::PICC::typeAsString()'],['../structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#a12e00acfe9513ea113749e52ea2d5f05',1,'m5::nfc::b::PICC::typeAsString()'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a19ed1943e3a20f5d160801d85e1281b0',1,'m5::nfc::f::PICC::typeAsString()'],['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#abde2784c120f6ae46dfa44416541adf5',1,'m5::nfc::v::PICC::typeAsString()']]] +]; diff --git a/search/functions_11.js b/search/functions_11.js new file mode 100644 index 0000000..0ca7b19 --- /dev/null +++ b/search/functions_11.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['uidasstring_0',['uidAsString',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#aa76b3265d8c81ffbb94ef3552fc3d9c2',1,'m5::nfc::a::PICC::uidAsString()'],['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#a092ec7d234407a44662af837d3be9c82',1,'m5::nfc::v::PICC::uidAsString()']]], + ['unit_5fsize_5fread_1',['unit_size_read',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#aa249c4d6c5425dbf0f79ae9d29be3540',1,'m5::nfc::NFCLayerA::unit_size_read()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a19d4d6e76db9241d8e5a79c180acaba3',1,'m5::nfc::NFCLayerB::unit_size_read()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a34ca54b19d762ad541378304dd751175',1,'m5::nfc::NFCLayerF::unit_size_read()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#af6f048fb639f13e8758521cca31d266f',1,'m5::nfc::NFCLayerInterface::unit_size_read()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#ac9c6c45e5861251841cda8b80479aaf5',1,'m5::nfc::NFCLayerV::unit_size_read()']]], + ['unit_5fsize_5fwrite_2',['unit_size_write',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#ad24a58b5b02a26316e0c14bda504e243',1,'m5::nfc::NFCLayerA::unit_size_write()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#ac3993de89564964f63a7a0035b0837eb',1,'m5::nfc::NFCLayerB::unit_size_write()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a66f6f636a210a8a78f41a94cfc7bcfee',1,'m5::nfc::NFCLayerF::unit_size_write()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#aea557041dda4472c73ef6c99909d3f71',1,'m5::nfc::NFCLayerInterface::unit_size_write()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a49d0f37b6e33138a43ea3160bb757382',1,'m5::nfc::NFCLayerV::unit_size_write()']]], + ['unitsize_3',['unitSize',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a7856eef603d29b83e27ffd42a6b8e145',1,'m5::nfc::a::PICC']]], + ['update_4',['update',['../classm5_1_1nfc_1_1_emulation_layer_a.html#adf2e24dfe90f26d56de0263ea6a2bbea',1,'m5::nfc::EmulationLayerA::update()'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#ae11b35c780ce6c3432790f08a3384ad2',1,'m5::nfc::EmulationLayerF::update()']]], + ['updatebinary_5',['updateBinary',['../classm5_1_1nfc_1_1_file_system.html#a8f2444c246a4483c633feb0831b1221a',1,'m5::nfc::FileSystem']]], + ['user_5farea_5fsize_6',['user_area_size',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a569a7bfed33c5202acacb045b39519a2',1,'m5::nfc::NFCLayerA::user_area_size()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a5f42174f261408428c47686a8c2a7bc7',1,'m5::nfc::NFCLayerB::user_area_size()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ac08779e3debb8d158e3aa213677d6a92',1,'m5::nfc::NFCLayerF::user_area_size()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a4109e617694aad4a02ecc6c2a3ba42b0',1,'m5::nfc::NFCLayerInterface::user_area_size()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a47fa999d2496dbfe1477966e0c878fc8',1,'m5::nfc::NFCLayerV::user_area_size()']]], + ['userareasize_7',['userAreaSize',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a13570108ce5e10a9f91495c254c5156d',1,'m5::nfc::a::PICC::userAreaSize()'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a19b5720e144a758fc9a26d9045fc35c2',1,'m5::nfc::f::PICC::userAreaSize()'],['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#a104c470214bfaa328415fe87292731eb',1,'m5::nfc::v::PICC::userAreaSize()']]] +]; diff --git a/search/functions_12.js b/search/functions_12.js new file mode 100644 index 0000000..9769c03 --- /dev/null +++ b/search/functions_12.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['valid_0',['valid',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a6332d499b3dd5c2c5c1d2bc8e4ae812b',1,'m5::nfc::a::PICC::valid()'],['../structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#a67d3842dce9b225cafb7d89e712ddc25',1,'m5::nfc::b::PICC::valid()'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#af69afa2b56967446faeeec15e9785f3a',1,'m5::nfc::f::PICC::valid() const']]], + ['validemulation_1',['validEmulation',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a38bab55d286773192148fd6d21cfb42b',1,'m5::nfc::f::PICC']]], + ['verify_2',['verify',['../classm5_1_1nfc_1_1_file_system.html#aade1aedc4b5cf2f31953c6f8f978503e',1,'m5::nfc::FileSystem']]], + ['verifyglobal_3',['verifyGlobal',['../classm5_1_1nfc_1_1_file_system.html#acd43241f62d9deae34791dcad13bce00',1,'m5::nfc::FileSystem']]], + ['verifyspecific_4',['verifySpecific',['../classm5_1_1nfc_1_1_file_system.html#a4a12bd685852b6fd2619b01fe52710aa',1,'m5::nfc::FileSystem']]], + ['version3_5fto_5ftype_5',['version3_to_type',['../nfca_8cpp.html#a1c36af0eeed9f0cae6f19adeaac0522b',1,'m5::nfc::a']]], + ['version4_5fto_5ftype_6',['version4_to_type',['../nfca_8cpp.html#a897ff51a5eccfd505aeec8f2c66c7e31',1,'m5::nfc::a']]] +]; diff --git a/search/functions_13.js b/search/functions_13.js new file mode 100644 index 0000000..809b190 --- /dev/null +++ b/search/functions_13.js @@ -0,0 +1,84 @@ +var searchData= +[ + ['wakeup_0',['wakeup',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#af0ee18fb7743f541ce135af87c950275',1,'m5::nfc::NFCLayerA::wakeup()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a43d82222e2f7947b2e52e2c4a10f5dcc',1,'m5::nfc::NFCLayerB::wakeup()']]], + ['write_1',['write',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a23492234bf6f5701225f7cc5943d1912',1,'m5::nfc::NFCLayerA::write(const uint8_t saddr, const uint8_t *tx, const uint16_t tx_len, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a5940b86e65b0fad0af0a04378b3e27d2',1,'m5::nfc::NFCLayerA::write(const uint8_t addr, const uint8_t *tx, const uint16_t tx_len, const m5::nfc::a::mifare::plus::AESKey &key)'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a3c982e97ad6b66ffb9aa6f685e3f7869',1,'m5::nfc::NFCLayerA::write(const uint16_t saddr, const uint8_t *tx, const uint16_t tx_len) override'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a4283e90fffaadbda8ab352ec153cd893',1,'m5::nfc::NFCLayerB::write()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ac21ff34e93d4973fca6eccdaf093f79f',1,'m5::nfc::NFCLayerF::write(const m5::nfc::f::block_t sblock, const uint8_t *tx, const uint16_t tx_len)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a9ab7eb934accdfa3335a9c4cd6eed63e',1,'m5::nfc::NFCLayerF::write(const uint16_t saddr, const uint8_t *tx, const uint16_t tx_len) override'],['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a8f14a849a885e8af39483ad4d2d887b5',1,'m5::nfc::ndef::NDEFLayer::write()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a2d84b6050dfca9671d317f9bcbac6943',1,'m5::nfc::NFCLayerInterface::write()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#ab7f845ecfb606ad7b55b6e1a450e0ba4',1,'m5::nfc::NFCLayerV::write()']]], + ['write16_2',['write16',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#af7efea879304539a9874d23e5c957f74',1,'m5::nfc::NFCLayerA::write16()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#afb06a34128696f7c450a212258409834',1,'m5::nfc::NFCLayerF::write16()']]], + ['write4_3',['write4',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a972e8373f292165448f7a5d384a9f875',1,'m5::nfc::NFCLayerA']]], + ['write_5fnfcv_4',['write_nfcv',['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a5332d964b6e308fef3007629e1be272a',1,'m5::nfc::ndef::NDEFLayer']]], + ['writeamplitudemeasurementconfiguration_5',['writeAmplitudeMeasurementConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a28d6a72e573ba74f3348ad1930b12767',1,'m5::unit::UnitST25R3916']]], + ['writeamplitudemeasurementreference_6',['writeAmplitudeMeasurementReference',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1d4a230e1fa5c48333d27ea42bae6b8a',1,'m5::unit::UnitST25R3916']]], + ['writeantennatuningcontrol_7',['writeAntennaTuningControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#acdf0f45529429a32c3677ef00686e3b0',1,'m5::unit::UnitST25R3916']]], + ['writeantennatuningcontrol1_8',['writeAntennaTuningControl1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a25256ff24318016b4b653e5b453fdffe',1,'m5::unit::UnitST25R3916']]], + ['writeantennatuningcontrol2_9',['writeAntennaTuningControl2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ada6322920860d4d8d98dc161ddf2eb0f',1,'m5::unit::UnitST25R3916']]], + ['writeauxiliarydefinition_10',['writeAuxiliaryDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ac8d7d92a8030d3b02b6220bbaf05c49b',1,'m5::unit::UnitST25R3916']]], + ['writeauxiliarymodulationsetting_11',['writeAuxiliaryModulationSetting',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aafc70db540cbc2c925ba545babfbc094',1,'m5::unit::UnitST25R3916']]], + ['writebitrate_12',['writeBitrate',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a87cba17683c2f98573cda17304e77268',1,'m5::unit::UnitST25R3916']]], + ['writebitratedefinition_13',['writeBitrateDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a42187cb9c60bfdb2a113b59634a1438d',1,'m5::unit::UnitST25R3916']]], + ['writeblock_14',['writeBlock',['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a92f5e3d2cbd0001320b3ac25203d7101',1,'m5::nfc::NFCLayerV']]], + ['writecapabilitycontainer_15',['writeCapabilityContainer',['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a4b90b611b7d80579e47d79e73adf4a6b',1,'m5::nfc::ndef::NDEFLayer']]], + ['writecapacitancemeasurementconfiguration_16',['writeCapacitanceMeasurementConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aff11bbe3aff6b2df8e2fa707eb6ec599',1,'m5::unit::UnitST25R3916']]], + ['writecapacitancemeasurementreference_17',['writeCapacitanceMeasurementReference',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a55a196c933376127aea0c782e331d6c5',1,'m5::unit::UnitST25R3916']]], + ['writecapacitivesensorcontrol_18',['writeCapacitiveSensorControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a50da49150540a52ef911af33eab02ddf',1,'m5::unit::UnitST25R3916']]], + ['writecorrelatorconfiguration_19',['writeCorrelatorConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a16ec6a993ee499b9a6a511b776ad3688',1,'m5::unit::UnitST25R3916']]], + ['writecorrelatorconfiguration1_20',['writeCorrelatorConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a544a93d81296700ecae1992d9f04f37f',1,'m5::unit::UnitST25R3916']]], + ['writecorrelatorconfiguration2_21',['writeCorrelatorConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5af372abb32472b2154ec1d34643ac94',1,'m5::unit::UnitST25R3916']]], + ['writedirectcommand_22',['writeDirectCommand',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a16cae8501a7e689c426c4d35fe4edbfa',1,'m5::unit::UnitST25R3916']]], + ['writeemdsuppressionconfiguration_23',['writeEMDSuppressionConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a08207f5df9d91971cbc812b759f1bdac',1,'m5::unit::UnitST25R3916']]], + ['writeexternalfielddetectoractivationthreshold_24',['writeExternalFieldDetectorActivationThreshold',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1f8a711c7b085f53cc6c6d9d25eb15e2',1,'m5::unit::UnitST25R3916']]], + ['writeexternalfielddetectordeactivationthreshold_25',['writeExternalFieldDetectorDeactivationThreshold',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a170aadcabb38fec9dcefd6c02797a43b',1,'m5::unit::UnitST25R3916']]], + ['writefifo_26',['writeFIFO',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5776719d2e0c52c802da429aeb105957',1,'m5::unit::UnitST25R3916']]], + ['writegeneralpurposetimer_27',['writeGeneralPurposeTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5e8817eeaeb1da5c0737f45eaf4770cf',1,'m5::unit::UnitST25R3916']]], + ['writegeneralpurposetimer1_28',['writeGeneralPurposeTimer1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aae5e1e9cfe450f481c74b68e6044463b',1,'m5::unit::UnitST25R3916']]], + ['writegeneralpurposetimer2_29',['writeGeneralPurposeTimer2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a3bc4aa64b609a1d29e26fb946af7c23d',1,'m5::unit::UnitST25R3916']]], + ['writeinitiatoroperationmode_30',['writeInitiatorOperationMode',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a6af0ec856808713241824480ff85abf7',1,'m5::unit::UnitST25R3916']]], + ['writeioconfiguration_31',['writeIOConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a2ff95a22623efee299fb6030c864b880',1,'m5::unit::UnitST25R3916']]], + ['writeioconfiguration1_32',['writeIOConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0cd27f50622b6cb3224b857667e701e4',1,'m5::unit::UnitST25R3916']]], + ['writeioconfiguration2_33',['writeIOConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a8dfb0671ef5c77315e5dff8b3f071c74',1,'m5::unit::UnitST25R3916']]], + ['writemaskerrorandwakeupinterrupt_34',['writeMaskErrorAndWakeupInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a84be453fab2b2533c6fa11adcf320e0f',1,'m5::unit::UnitST25R3916']]], + ['writemaskinterrupts_35',['writeMaskInterrupts',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#abea1541fc106bc20b0d88acb3c89dc6b',1,'m5::unit::UnitST25R3916']]], + ['writemaskmaininterrupt_36',['writeMaskMainInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9d488b87822d8dd4bd65a7e8ba6c5a9f',1,'m5::unit::UnitST25R3916']]], + ['writemaskpassivetargetinterrupt_37',['writeMaskPassiveTargetInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aa71d6d949fb09cc1802b93936adb2ecf',1,'m5::unit::UnitST25R3916']]], + ['writemaskreceivetimer_38',['writeMaskReceiveTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a14ff8477eb6e599ef090ce70286c337b',1,'m5::unit::UnitST25R3916']]], + ['writemasktimerandnfcinterrupt_39',['writeMaskTimerAndNFCInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0133a724e1f5d7d0d16adec3aeea1fc8',1,'m5::unit::UnitST25R3916']]], + ['writemodedefinition_40',['writeModeDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad11bcb754688beb10d72898975289553',1,'m5::unit::UnitST25R3916']]], + ['writenfcfieldonguardtimer_41',['writeNFCFieldOnGuardTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a7dd6fa32d3dc96aac26603f9677c96ca',1,'m5::unit::UnitST25R3916']]], + ['writenfcip1passivetargetdefinition_42',['writeNFCIP1PassiveTargetDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ac327fac77452a89f614ee75fdbe2f9c9',1,'m5::unit::UnitST25R3916']]], + ['writenoresponsetimer_43',['writeNoResponseTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a21e6c59ac29b033801de1a40f92a4eda',1,'m5::unit::UnitST25R3916']]], + ['writenoresponsetimer1_44',['writeNoResponseTimer1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a77dafefff7b5a8242f6ce6f8ae67a024',1,'m5::unit::UnitST25R3916']]], + ['writenoresponsetimer2_45',['writeNoResponseTimer2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a6f55ccc0572d222962884676f87e52b0',1,'m5::unit::UnitST25R3916']]], + ['writenumberoftransmittedbytes_46',['writeNumberOfTransmittedBytes',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a162257c59213ed34ce1b18f86a8f0476',1,'m5::unit::UnitST25R3916::writeNumberOfTransmittedBytes(const uint16_t value)'],['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab9720070ee17448df04e9b876603fb1a',1,'m5::unit::UnitST25R3916::writeNumberOfTransmittedBytes(const uint16_t bytes, const uint8_t bits)']]], + ['writenumberoftransmittedbytes1_47',['writeNumberOfTransmittedBytes1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a75124e7cf3a6f1fcfc910640d9dfd3f5',1,'m5::unit::UnitST25R3916']]], + ['writenumberoftransmittedbytes2_48',['writeNumberOfTransmittedBytes2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9226a717c07d7be70b4366084582e038',1,'m5::unit::UnitST25R3916']]], + ['writeoperationcontrol_49',['writeOperationControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a516b34b93a3a4fd4a43b538ee8309703',1,'m5::unit::UnitST25R3916']]], + ['writeovershootprotectionconfiguration_50',['writeOvershootProtectionConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1faa39edb5f375b9579f79b2ecb131fd',1,'m5::unit::UnitST25R3916']]], + ['writeovershootprotectionconfiguration1_51',['writeOvershootProtectionConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#af7cbd5d9d33a52058dbd1c0e2d6de49d',1,'m5::unit::UnitST25R3916']]], + ['writeovershootprotectionconfiguration2_52',['writeOvershootProtectionConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5b062b9ce0f228d8e11c65cbbc8a6113',1,'m5::unit::UnitST25R3916']]], + ['writep2preceiverconfiguration_53',['writeP2PReceiverConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a6cf660e1ff08b85b3f8ab15c016be2e0',1,'m5::unit::UnitST25R3916']]], + ['writepassivetargetmodulation_54',['writePassiveTargetModulation',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a80fff17ada1806c6d679b8f3ed744052',1,'m5::unit::UnitST25R3916']]], + ['writephasemeasurementconfiguration_55',['writePhaseMeasurementConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a8cf6dcbd164572b3e227e6d84f619993',1,'m5::unit::UnitST25R3916']]], + ['writephasemeasurementreference_56',['writePhaseMeasurementReference',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a87decdabd824001e6d110aba7e32f544',1,'m5::unit::UnitST25R3916']]], + ['writeppon2fieldwaiting_57',['writePPON2FieldWaiting',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a3fe4c51a9d5484dcee572b3902b61b83',1,'m5::unit::UnitST25R3916']]], + ['writereceiverconfiguration_58',['writeReceiverConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aac46525d412463c4bb62723595d172db',1,'m5::unit::UnitST25R3916']]], + ['writereceiverconfiguration1_59',['writeReceiverConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a92d7c10a6637a1cf3ffc3ed259331c4e',1,'m5::unit::UnitST25R3916']]], + ['writereceiverconfiguration2_60',['writeReceiverConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae584060521c664be3a95019a4781d76c',1,'m5::unit::UnitST25R3916']]], + ['writereceiverconfiguration3_61',['writeReceiverConfiguration3',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#abeb96ed126791715662ec18f15d15f91',1,'m5::unit::UnitST25R3916']]], + ['writereceiverconfiguration4_62',['writeReceiverConfiguration4',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a29c409732b3f410f97c0ea4b334cdf7c',1,'m5::unit::UnitST25R3916']]], + ['writeregulatorvoltagecontrol_63',['writeRegulatorVoltageControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a8fde3d4ca0e50c5bdc91e8234626a686',1,'m5::unit::UnitST25R3916']]], + ['writeresistiveammodulation_64',['writeResistiveAMModulation',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0779edf80d6b5ed2ba4ff8199edec986',1,'m5::unit::UnitST25R3916']]], + ['writesettingsfelica_65',['writeSettingsFelica',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#abbe87a909501f2c0bb098706731f2b5c',1,'m5::unit::UnitST25R3916']]], + ['writesettingsiso14443a_66',['writeSettingsISO14443A',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a26e0a01a8912e23945098eb822d5da36',1,'m5::unit::UnitST25R3916']]], + ['writesettingsiso14443b_67',['writeSettingsISO14443B',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a3fb7e423a9431dffab6eb8bcf8f3b074',1,'m5::unit::UnitST25R3916']]], + ['writesquelchtimer_68',['writeSquelchTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab9f3ebd8b6b39acb14a18d2cfa844700',1,'m5::unit::UnitST25R3916']]], + ['writestreammodedefinition_69',['writeStreamModeDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae1129dad075f55d3702b76d568bae13f',1,'m5::unit::UnitST25R3916']]], + ['writesubcarrierstarttimer_70',['writeSubcarrierStartTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#af58bbb322d1f8197dbe5c38305de6d81',1,'m5::unit::UnitST25R3916']]], + ['writesupportndef_71',['writeSupportNDEF',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#acbea08d87d6b3991eedc426a8f7b0abd',1,'m5::nfc::NFCLayerF']]], + ['writetargetoperationmode_72',['writeTargetOperationMode',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a189474854e43bdc2181ddf3deb50bfd6',1,'m5::unit::UnitST25R3916']]], + ['writetimerandemvcontrol_73',['writeTimerAndEMVControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a913bf7975a2571f9ab09bbcf9c36ccb7',1,'m5::unit::UnitST25R3916']]], + ['writetxdriver_74',['writeTXDriver',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aea12d9308b63c40166c97656d14eeac7',1,'m5::unit::UnitST25R3916']]], + ['writetxdrivertiming_75',['writeTXDriverTiming',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a53fb2f7909f24276f81872bd31582144',1,'m5::unit::UnitST25R3916']]], + ['writeundershootprotectionconfiguration_76',['writeUndershootProtectionConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aee178f1500656e07c8d6e22a7387a915',1,'m5::unit::UnitST25R3916']]], + ['writeundershootprotectionconfiguration1_77',['writeUndershootProtectionConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a28af928272e427c8471973e2a0d46701',1,'m5::unit::UnitST25R3916']]], + ['writeundershootprotectionconfiguration2_78',['writeUndershootProtectionConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a8ead7162a23c729bbe2c2f0608a5531d',1,'m5::unit::UnitST25R3916']]], + ['writewakeuptimercontrol_79',['writeWakeupTimerControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a44f7501715f47862dc579338dec83fcb',1,'m5::unit::UnitST25R3916']]], + ['writewithmac16_80',['writeWithMAC16',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a34899dba220ca49f9762bc5a0d9db3c3',1,'m5::nfc::NFCLayerF']]] +]; diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 0000000..78946dd --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['calculate_5fbcc8_0',['calculate_bcc8',['../nfca_8cpp.html#a2f00ebbaee2d5c4267682a346251feaa',1,'m5::nfc::a']]], + ['can_5fread_5flite_1',['can_read_lite',['../nfcf_8cpp.html#af9eb100b9b9cd033fad82fca3470a7ee',1,'m5::nfc::f']]], + ['can_5fread_5flite_5fs_2',['can_read_lite_s',['../nfcf_8cpp.html#a9c037fc0ecb47e8ca767344be267ff1f',1,'m5::nfc::f']]], + ['can_5fvalue_5fblock_5fpermission_3',['can_value_block_permission',['../mifare_8hpp.html#a639759a346abd881a51ac7a774a9ac5f',1,'m5::nfc::a::mifare::classic']]], + ['can_5fwrite_5freg_4',['can_write_reg',['../nfcf_8hpp.html#a68e8144e7658b6822c286efd5fd46cab',1,'m5::nfc::f']]], + ['canfastread_5',['canFastRead',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#aeb26679f8fde4dab879c1584dc08a9ec',1,'m5::nfc::a::PICC']]], + ['checkformat_6',['checkFormat',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a77e3b5039aeabc5046b4d73ee2a6315f',1,'m5::nfc::f::PICC']]], + ['clear_7',['clear',['../classm5_1_1nfc_1_1ndef_1_1_record.html#a971de976a6c0b032885218fcac7b0b0a',1,'m5::nfc::ndef::Record::clear()'],['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a511a1e56db5880593d3fad076a69ade1',1,'m5::nfc::ndef::TLV::clear()']]], + ['clearauthenticate_8',['clearAuthenticate',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ab684a8b787b35c412f1355628d69bc21',1,'m5::nfc::NFCLayerF']]], + ['clearidentifier_9',['clearIdentifier',['../classm5_1_1nfc_1_1ndef_1_1_record.html#a3747f61f495e7b0480f29bbf49bea74c',1,'m5::nfc::ndef::Record']]], + ['clearinterrupts_10',['clearInterrupts',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a25a241c7f5ebb034e2785f4870ec2f1f',1,'m5::unit::UnitST25R3916']]], + ['clearspad_11',['clearSPAD',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ab313782218cdc477b5aaccab7ca19f1f',1,'m5::nfc::NFCLayerF']]], + ['cmac_5faes_5f128_12',['cmac_aes_128',['../aes_8cpp.html#a5431d20eb1034f57fe7aecefc43c30ce',1,'m5::nfc::crypto']]], + ['cmac_5fsubkeys_13',['cmac_subkeys',['../aes_8cpp.html#a66b0e9249a6eb7b35e20d249ead7c9bf',1,'m5::nfc::crypto']]], + ['config_14',['config',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aabb68cc4bd6e506278046a30aac55951',1,'m5::unit::UnitST25R3916::config()'],['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a39c9d2cb43565b25f5017b578209b406',1,'m5::unit::UnitST25R3916::config(const config_t &cfg)']]], + ['configureemulationmode_15',['configureEmulationMode',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad3bc74449f1d118182bbf52bf28dd59c',1,'m5::unit::UnitST25R3916']]], + ['configurenfcmode_16',['configureNFCMode',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a715ab9ee391f7f06134943c4b30787c0',1,'m5::unit::UnitST25R3916']]], + ['contains_5ffile_5fcontrol_5ftag_17',['contains_file_control_tag',['../ndef_8hpp.html#ab13a263b697300c0277d96271748c4ff',1,'m5::nfc::ndef::type4']]], + ['contains_5ftag_18',['contains_tag',['../ndef_8hpp.html#af53b5020533b07d8aa80fcd661ccbc12',1,'m5::nfc::ndef']]], + ['createfile_19',['createFile',['../classm5_1_1nfc_1_1_file_system.html#acb403719f85fc87ff2901b8e8f0a303e',1,'m5::nfc::FileSystem::createFile(const uint8_t *fcp, const uint16_t fcp_len)'],['../classm5_1_1nfc_1_1_file_system.html#ae7ffa364dd69d2dedca69716c8ece7d9',1,'m5::nfc::FileSystem::createFile(const FCP &fcp)'],['../classm5_1_1nfc_1_1_file_system.html#aacf63bc6287f35f95469bf824b9748c4',1,'m5::nfc::FileSystem::createFile(const uint16_t fid, const uint16_t file_size)']]], + ['createtransactionmacfileev2full_20',['createTransactionMACFileEV2Full',['../classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.html#a7e373ffbab93e8db14e2b125dc3830e5',1,'m5::nfc::a::mifare::desfire::DESFireFileSystem']]] +]; diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 0000000..0430edb --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['deactivate_0',['deactivate',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac1bb18ba571351953246a97168e30c79',1,'m5::nfc::NFCLayerA::deactivate()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#aa34354dea55ce71e7c70aecb1ec22a8a',1,'m5::nfc::NFCLayerF::deactivate()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a5afa6b43399feb102a08f80f8d767b91',1,'m5::nfc::NFCLayerV::deactivate()']]], + ['decode_1',['decode',['../classm5_1_1nfc_1_1ndef_1_1_record.html#adeaae2985edd51a8db464fbe57e1ee5c',1,'m5::nfc::ndef::Record::decode()'],['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#acff3b1b7b7de44f89daf5c5533eec441',1,'m5::nfc::ndef::TLV::decode()']]], + ['decode_5faccess_5fbits_2',['decode_access_bits',['../mifare_8cpp.html#ac16996d9234a9a5fc2467a4925d30142',1,'m5::nfc::a::mifare::classic::decode_access_bits(uint8_t permissions[4], const uint8_t ab0, const uint8_t ab1, const uint8_t ab2)'],['../mifare_8hpp.html#a0d89db3c0149f002ec87be13d36f1e87',1,'m5::nfc::a::mifare::classic::decode_access_bits(uint8_t permissions[4], const uint8_t abits[3])']]], + ['decode_5fvalue_5fblock_3',['decode_value_block',['../mifare_8cpp.html#ae593ad8d9608d30bed275a3e33e8bcfa',1,'m5::nfc::a::mifare::classic']]], + ['deletetransactionmacfileev2full_4',['deleteTransactionMACFileEV2Full',['../classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.html#ad4353f36d67cd46983a3cf2018f337bf',1,'m5::nfc::a::mifare::desfire::DESFireFileSystem']]], + ['detect_5',['detect',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a1b671840e2fce10e1d7a800fe084e2ab',1,'m5::nfc::NFCLayerA::detect(m5::nfc::a::PICC &picc, const uint32_t timeout_ms=100U)'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a69c8817ff9ebea44fcb39aca0217c990',1,'m5::nfc::NFCLayerA::detect(std::vector< m5::nfc::a::PICC > &piccs, const uint32_t timeout_ms=1000U)'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#ad3698c3813530c3d6d039ddef69a6726',1,'m5::nfc::NFCLayerB::detect(m5::nfc::b::PICC &picc, const uint8_t afi=0x00, const uint32_t timeout_ms=100U)'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#afef900848a56b2e124205e31a136827d',1,'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)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a9fa7a8af76839d34cac5f331f977e720',1,'m5::nfc::NFCLayerF::detect(m5::nfc::f::PICC &picc, const uint32_t timeout_ms=100U)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a4a11ce7567ba28e73b190fc8f85a80c8',1,'m5::nfc::NFCLayerF::detect(std::vector< m5::nfc::f::PICC > &piccs, m5::nfc::f::TimeSlot time_slot=m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms=500U)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a8bb0ddf3d83e1a97f6a48a0785843677',1,'m5::nfc::NFCLayerF::detect(std::vector< m5::nfc::f::PICC > &piccs, const uint16_t private_code, m5::nfc::f::TimeSlot time_slot=m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms=500U)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a43a7d253f38a6e04193d357315a4146d',1,'m5::nfc::NFCLayerF::detect(std::vector< m5::nfc::f::PICC > &piccs, const uint16_t *private_code, const uint8_t pc_size, m5::nfc::f::TimeSlot time_slot=m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms=500U)'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a21fe559bf013ae298db9fb62edb39039',1,'m5::nfc::NFCLayerV::detect(m5::nfc::v::PICC &picc, const uint32_t timeout_ms=50U)'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a14d3001bb4b854a265370125d9242a47',1,'m5::nfc::NFCLayerV::detect(std::vector< m5::nfc::v::PICC > &piccs, const uint32_t timeout_ms=1000U)']]], + ['disablefield_6',['disableField',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab7a099701e8553ff6f4f21933df5c923',1,'m5::unit::UnitST25R3916']]], + ['dump_7',['dump',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a0c0801275c5203877f67619d338fc3f6',1,'m5::nfc::NFCLayerA::dump(const m5::nfc::a::mifare::classic::Key &mkey=m5::nfc::a::mifare::classic::DEFAULT_KEY)'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#afa531eb85895947d8fd8c64a6c935635',1,'m5::nfc::NFCLayerA::dump(const uint8_t block)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a65609df72661c064e263393568a4ee94',1,'m5::nfc::NFCLayerF::dump()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a63227192207ac7e9765d7614a9ec56e8',1,'m5::nfc::NFCLayerF::dump(const m5::nfc::f::block_t block)'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a991bdbbe91ba9dca88c2ec25253e5abf',1,'m5::nfc::NFCLayerV::dump()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a871b0d7f0f4c020aea717899b6e53fc0',1,'m5::nfc::NFCLayerV::dump(const uint16_t block)'],['../classm5_1_1nfc_1_1ndef_1_1_record.html#aafd086e92751abae204ecde8d213da5c',1,'m5::nfc::ndef::Record::dump()']]], + ['dump_5ftlv_8',['dump_tlv',['../apdu_8cpp.html#aefdcb0a0692e4e97f13e6a5f7a140ade',1,'m5::nfc::apdu']]] +]; diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 0000000..4757b3a --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['emulate_0',['emulate',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a8e148e1ece9558110be9723557ab9984',1,'m5::nfc::a::PICC::emulate()'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ab87ee26752ef4249f240922b6d33a93c',1,'m5::nfc::f::PICC::emulate()']]], + ['emulatepicc_1',['emulatePICC',['../classm5_1_1nfc_1_1_emulation_layer_a.html#a28dc0f0938b70793e278be544e7a6713',1,'m5::nfc::EmulationLayerA::emulatePICC()'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#a4982b0e08aad7ef968b7be3ae62a6d56',1,'m5::nfc::EmulationLayerF::emulatePICC()']]], + ['emulationlayera_2',['EmulationLayerA',['../classm5_1_1nfc_1_1_emulation_layer_a.html#a0a9a8fdc2afd980d8e069b5354866950',1,'m5::nfc::EmulationLayerA::EmulationLayerA(m5::unit::UnitST25R3916 &u)'],['../classm5_1_1nfc_1_1_emulation_layer_a.html#ad7628497d7b17701284bea33282fc1ca',1,'m5::nfc::EmulationLayerA::EmulationLayerA(m5::unit::CapST25R3916 &u)']]], + ['emulationlayerf_3',['EmulationLayerF',['../classm5_1_1nfc_1_1_emulation_layer_f.html#a2628058a439c3138d0c78a8a43616d08',1,'m5::nfc::EmulationLayerF::EmulationLayerF(m5::unit::UnitST25R3916 &u)'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#acd32305a8dad49c1e78735e04acfd9e5',1,'m5::nfc::EmulationLayerF::EmulationLayerF(m5::unit::CapST25R3916 &u)']]], + ['enablefield_4',['enableField',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad8ec70245d36b1be5d23872eeb17474e',1,'m5::unit::UnitST25R3916']]], + ['encode_5',['encode',['../classm5_1_1nfc_1_1ndef_1_1_record.html#a6a4da09ffe10b063c174c9e4c5e5ad3a',1,'m5::nfc::ndef::Record::encode()'],['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#ad6f904f81efecc20d4864a9a08681421',1,'m5::nfc::ndef::TLV::encode()']]], + ['encode_5faccess_5fbits_6',['encode_access_bits',['../mifare_8cpp.html#abf7a51fcc17ccc900b3fbdcf26b585d2',1,'m5::nfc::a::mifare::classic::encode_access_bits(uint8_t abits[3], const uint8_t p0, const uint8_t p1, const uint8_t p2, const uint8_t p3)'],['../mifare_8hpp.html#a9bbff8328dfb21ac5d098b075abb1f97',1,'m5::nfc::a::mifare::classic::encode_access_bits(uint8_t abits[3], const uint8_t permissions[4])']]], + ['encode_5fvalue_5fblock_7',['encode_value_block',['../mifare_8cpp.html#a0378982e28186360ac9eb38fa3128c3a',1,'m5::nfc::a::mifare::classic']]], + ['end_8',['end',['../classm5_1_1nfc_1_1_emulation_layer_a.html#a07691cfc18445903313a853d5e0d1fd1',1,'m5::nfc::EmulationLayerA::end()'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#a945ed86f7503a178aa759bc89f1acaec',1,'m5::nfc::EmulationLayerF::end()']]], + ['expiredtime_9',['expiredTime',['../classm5_1_1nfc_1_1_emulation_layer_a.html#ab6075f2492e9f9fd2b55fc087eca146d',1,'m5::nfc::EmulationLayerA::expiredTime()'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#ac6e55ae14a26c808058d04af3b486672',1,'m5::nfc::EmulationLayerF::expiredTime()']]], + ['externalauthenticate_10',['externalAuthenticate',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ac1af90c0d51679b17f6683363f2e10e5',1,'m5::nfc::NFCLayerF']]] +]; diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 0000000..c741d6d --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['fc_5fto_5ffcbit_0',['fc_to_fcbit',['../ndef_8hpp.html#a86bd0803acf1015a7d96aafbdad41098',1,'m5::nfc::ndef::type4']]], + ['filesystemfeature_1',['fileSystemFeature',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a0de7a89418eff85bd4bb791046d64e83',1,'m5::nfc::a::PICC']]], + ['first_5fuser_5fblock_2',['first_user_block',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a12e0b5658e8ed72322d01fc247801ba0',1,'m5::nfc::NFCLayerA::first_user_block()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#afa2dbc0f285d67cefe5fdc9193784672',1,'m5::nfc::NFCLayerB::first_user_block()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a25f967cdd0b42931f81251a6de95ee1d',1,'m5::nfc::NFCLayerF::first_user_block()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a9f7d7f4be1107c1a09325596de06fd54',1,'m5::nfc::NFCLayerInterface::first_user_block()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a87013386596202ac4d100d6217f050f3',1,'m5::nfc::NFCLayerV::first_user_block()']]], + ['firstuserblock_3',['firstUserBlock',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a74c5f76b9399c37a5a14d936d353429b',1,'m5::nfc::a::PICC::firstUserBlock()'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ac3b14091a6e255fdd111dc5058106573',1,'m5::nfc::f::PICC::firstUserBlock()'],['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#acd18f06e674304f3dc4b9c497d2db1f3',1,'m5::nfc::v::PICC::firstUserBlock()']]], + ['fsci_5fto_5ffsc_4',['fsci_to_fsc',['../iso_d_e_p_8hpp.html#a0b90bcfb046d66851dff723aff035867',1,'m5::nfc::isodep']]], + ['fwi_5fto_5fms_5',['fwi_to_ms',['../iso_d_e_p_8cpp.html#a9c9dd562bc432a87e23b1f8388e581d5',1,'m5::nfc::isodep']]] +]; diff --git a/search/functions_6.js b/search/functions_6.js new file mode 100644 index 0000000..616b808 --- /dev/null +++ b/search/functions_6.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['generate_5fmac_0',['generate_mac',['../nfcf_8cpp.html#a613b055c6f55fe0ac94694c262238bbd',1,'m5::nfc::f']]], + ['get_5ffile_5fsystem_5ffeature_1',['get_file_system_feature',['../nfca_8cpp.html#a5f4eb62eb93a95c6f3d8a82ffc1dfa8a',1,'m5::nfc::a']]], + ['get_5ffirst_5fuser_5fblock_2',['get_first_user_block',['../nfca_8cpp.html#af1221607496388f9a78ea472230e68ba',1,'m5::nfc::a::get_first_user_block()'],['../nfcf_8cpp.html#a57800978f3b9fda6a89ffcf36c12f6dd',1,'m5::nfc::f::get_first_user_block()']]], + ['get_5fframe_5foption_3',['get_frame_option',['../nfcb_8hpp.html#a1343a19de345d27d6e04966318ab2a38',1,'m5::nfc::b']]], + ['get_5ffwi_4',['get_fwi',['../nfcb_8hpp.html#ac471991e55ecc4ecd3daace0720ec4ba',1,'m5::nfc::b']]], + ['get_5flast_5fuser_5fblock_5',['get_last_user_block',['../nfca_8cpp.html#a56472040cbc607773f2dd4d64e7ad3d3',1,'m5::nfc::a::get_last_user_block()'],['../nfcf_8cpp.html#a87199c49f43628671b18166f6109c746',1,'m5::nfc::f::get_last_user_block(const Type t)']]], + ['get_5fmaximum_5fblock_6',['get_maximum_block',['../nfcf_8cpp.html#abd6a4ea21d882749c7a2bfb347975623',1,'m5::nfc::f']]], + ['get_5fmaximum_5fread_5fblocks_7',['get_maximum_read_blocks',['../nfcf_8cpp.html#acdfb3dc62b558211198bba69f2a18427',1,'m5::nfc::f']]], + ['get_5fmaximum_5fwrite_5fblocks_8',['get_maximum_write_blocks',['../nfcf_8cpp.html#a5d0e04aab8ed4be98fba915dc96f57cb',1,'m5::nfc::f']]], + ['get_5fnfc_5fforum_5ftag_5ftype_9',['get_nfc_forum_tag_type',['../nfca_8cpp.html#a2b812e490b87a87814c33bb3f3b64904',1,'m5::nfc::a::get_nfc_forum_tag_type()'],['../nfcf_8hpp.html#ac45986717903a578a3dc4c59da17f298',1,'m5::nfc::f::get_nfc_forum_tag_type()'],['../nfcv_8hpp.html#a49b9842ab7f389211c7cc9299cedc40b',1,'m5::nfc::v::get_nfc_forum_tag_type()']]], + ['get_5fnumber_5fof_5fblocks_10',['get_number_of_blocks',['../nfca_8cpp.html#a9de505e4515436fb3b2ab99ffd6d1fc0',1,'m5::nfc::a']]], + ['get_5fnumber_5fof_5fsectors_11',['get_number_of_sectors',['../nfca_8cpp.html#a676326bf06691aca5ec34684cb005d67',1,'m5::nfc::a']]], + ['get_5fnumber_5fof_5fuser_5fblocks_12',['get_number_of_user_blocks',['../nfca_8cpp.html#a90f81b2afbf160114f08f351e7b6c16f',1,'m5::nfc::a::get_number_of_user_blocks()'],['../nfcf_8cpp.html#ad17a8af57383f9e4559a8352404000df',1,'m5::nfc::f::get_number_of_user_blocks()']]], + ['get_5fpermission_5foffset_13',['get_permission_offset',['../mifare_8hpp.html#ae4443b2bcf8e3735873b160d4aa69bad',1,'m5::nfc::a::mifare::classic']]], + ['get_5fsector_14',['get_sector',['../mifare_8hpp.html#a7d1a956b1580c8ef841113b53af0b9c5',1,'m5::nfc::a::mifare::classic']]], + ['get_5fsector_5ftrailer_5fblock_15',['get_sector_trailer_block',['../mifare_8hpp.html#afb8a0492f36aef7d5989faec3371876b',1,'m5::nfc::a::mifare::classic']]], + ['get_5fsector_5ftrailer_5fblock_5ffrom_5fsector_16',['get_sector_trailer_block_from_sector',['../mifare_8hpp.html#ae34e37b263820c44fcfd84ce3f3c5d61',1,'m5::nfc::a::mifare::classic']]], + ['get_5ftype_17',['get_type',['../nfca_8hpp.html#a2d5c5a55d9dbf508cb4fab2b0a7a3f24',1,'m5::nfc::a::st25ta']]], + ['get_5funit_5fsize_18',['get_unit_size',['../nfca_8cpp.html#a3e93f331f794cfd3ec5e1c7115e7bef5',1,'m5::nfc::a']]], + ['get_5furi_5fidc_5fstring_19',['get_uri_idc_string',['../ndef_8cpp.html#a06ad435246f351420fd0f90c562870ea',1,'m5::nfc::ndef']]], + ['get_5fuser_5farea_5fsize_20',['get_user_area_size',['../nfca_8cpp.html#aad24687ca20e8b303110f5bd6b399263',1,'m5::nfc::a::get_user_area_size()'],['../nfcf_8hpp.html#aa8fa452b71d896b1fb7ed52eab69a8d2',1,'m5::nfc::f::get_user_area_size()']]], + ['get_5fversion3_5fresponse_21',['get_version3_response',['../nfca_8cpp.html#acf8a3d3a8f2d6c01750bc4b7b99a9472',1,'m5::nfc::a']]] +]; diff --git a/search/functions_7.js b/search/functions_7.js new file mode 100644 index 0000000..8e3e4ee --- /dev/null +++ b/search/functions_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['has_5ffast_5fread_0',['has_fast_read',['../nfca_8hpp.html#a93c19461ed1494462e3b7da394cc8cee',1,'m5::nfc::a']]], + ['has_5fsak_5fdependent_5fbit_1',['has_sak_dependent_bit',['../nfca_8hpp.html#abc51c5a960972570a4bf6da0876541c0',1,'m5::nfc::a']]], + ['historical_5fbytes_5fto_5ftype_2',['historical_bytes_to_type',['../nfca_8cpp.html#ada4876b0d15c060036b8f88ee1e81297',1,'m5::nfc::a']]] +]; diff --git a/search/functions_8.js b/search/functions_8.js new file mode 100644 index 0000000..16fac2d --- /dev/null +++ b/search/functions_8.js @@ -0,0 +1,55 @@ +var searchData= +[ + ['identifier_0',['identifier',['../classm5_1_1nfc_1_1ndef_1_1_record.html#ad1b2fab80216ddd14c0b06502d31a707',1,'m5::nfc::ndef::Record']]], + ['identifiersize_1',['identifierSize',['../classm5_1_1nfc_1_1ndef_1_1_record.html#af60a22933abd389082980c943def5ee3',1,'m5::nfc::ndef::Record']]], + ['identify_2',['identify',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#aaae6d1f24bed2b0e6bb13697fd11a9e5',1,'m5::nfc::NFCLayerA']]], + ['idmasstring_3',['idmAsString',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ae9d6e0cdb4d3bdfbe96e1acd8b35d6f6',1,'m5::nfc::f::PICC']]], + ['internalauthenticate_4',['internalAuthenticate',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ad82b91839ba166ddf3436bf778c53ca2',1,'m5::nfc::NFCLayerF']]], + ['is_5fduplicate_5',['is_duplicate',['../desfire__file__system_8hpp.html#a53b4e87ed3527faa024b6671690cc8e6',1,'m5::nfc::a::mifare::desfire']]], + ['is_5ffile_5fsystem_5ffile_6',['is_file_system_file',['../nfca_8hpp.html#afbc51163bb9d06aa2d4d78bef4e99365',1,'m5::nfc::a']]], + ['is_5ffile_5fsystem_5fmemory_7',['is_file_system_memory',['../nfca_8hpp.html#a01bc1d95019f0f2247fc5a6494c7da26',1,'m5::nfc::a']]], + ['is_5fiso14443_5f3_8',['is_iso14443_3',['../nfca_8hpp.html#a1e0bb0c2934cf966515e67720500d0a8',1,'m5::nfc::a']]], + ['is_5fiso14443_5f4_9',['is_iso14443_4',['../nfca_8hpp.html#a921cc53e1ae6ed8b23a334f3bc2bf0b2',1,'m5::nfc::a']]], + ['is_5fmifare_10',['is_mifare',['../nfca_8hpp.html#a73dd2bd204c94f0609d92fe881437084',1,'m5::nfc::a']]], + ['is_5fmifare_5fclassic_11',['is_mifare_classic',['../nfca_8hpp.html#aff355cbd00ee527fa9fa5e797895bd07',1,'m5::nfc::a']]], + ['is_5fmifare_5fclassic_5fcompatible_12',['is_mifare_classic_compatible',['../nfca_8hpp.html#aab3301d301ddd00ea67b1b737376c021',1,'m5::nfc::a']]], + ['is_5fmifare_5fdesfire_13',['is_mifare_desfire',['../nfca_8hpp.html#a0b4e052a262a225acbb161354266ea5d',1,'m5::nfc::a']]], + ['is_5fmifare_5fplus_14',['is_mifare_plus',['../nfca_8hpp.html#ae7580ee2e43c1349e4e90d6e4443abb4',1,'m5::nfc::a']]], + ['is_5fmifare_5fultralight_15',['is_mifare_ultralight',['../nfca_8hpp.html#abbf43a3ba65f0b362de47ed4382e38ce',1,'m5::nfc::a']]], + ['is_5fmore_16',['is_more',['../desfire__file__system_8hpp.html#a044c0ecbff9667d3b30b6f09852b3671',1,'m5::nfc::a::mifare::desfire']]], + ['is_5fntag2_17',['is_ntag2',['../nfca_8hpp.html#a5183fa6cbb067b3a4aa00dad6c4c56aa',1,'m5::nfc::a']]], + ['is_5fntag4_18',['is_ntag4',['../nfca_8hpp.html#a49181c1838c1e0df61a9599b4fd6d621',1,'m5::nfc::a']]], + ['is_5fread_5fonly_5flite_19',['is_read_only_lite',['../nfcf_8cpp.html#af04bf1c332c7652d0279807a8eebec9d',1,'m5::nfc::f']]], + ['is_5fread_5fonly_5flite_5fs_20',['is_read_only_lite_s',['../nfcf_8cpp.html#af179bb4b95076fce93c9aac02c0deb72',1,'m5::nfc::f']]], + ['is_5fresponse_5fok_21',['is_response_OK',['../apdu_8hpp.html#a8661d1015977051ff244e69214a9f244',1,'m5::nfc::apdu::is_response_OK(const uint16_t sw12)'],['../apdu_8hpp.html#a02f2cf412748d5964bb0034cb40dd622',1,'m5::nfc::apdu::is_response_OK(const uint8_t sw[2])'],['../apdu_8hpp.html#adba4a567d412579a8447c2da5425e935',1,'m5::nfc::apdu::is_response_OK(const uint8_t sw1, const uint8_t sw2)']]], + ['is_5fsak_5fcompleted_22',['is_sak_completed',['../nfca_8hpp.html#a6316020b27e82ca7c8bbf5a66cc00381',1,'m5::nfc::a']]], + ['is_5fsak_5fcompleted_5f14443_5f4_23',['is_sak_completed_14443_4',['../nfca_8hpp.html#a71761585d3b73c7fe363568554722239',1,'m5::nfc::a']]], + ['is_5fsector_5ftrailer_5fblock_24',['is_sector_trailer_block',['../mifare_8hpp.html#a13f7a151f4f03e07a3cee1b669836019',1,'m5::nfc::a::mifare::classic']]], + ['is_5fst25ta_25',['is_st25ta',['../nfca_8hpp.html#a9d4572c50dafd47bdc9d0f5bc81ccc7c',1,'m5::nfc::a']]], + ['is_5fsuccessful_26',['is_successful',['../desfire__file__system_8hpp.html#aaacf49946d7267b32be70c6cd5f178f1',1,'m5::nfc::a::mifare::desfire']]], + ['is_5fterminator_5ftag_27',['is_terminator_tag',['../ndef_8hpp.html#ab24ec3033f1d129b0745a0b859e6aef3',1,'m5::nfc::ndef']]], + ['is_5fuser_5fblock_28',['is_user_block',['../nfca_8cpp.html#ad5568cdfb2f1c3f2e8b866a504615de6',1,'m5::nfc::a::is_user_block()'],['../nfcf_8hpp.html#a0e2254c895998ba49f34dbe5f93cfe23',1,'m5::nfc::f::is_user_block()']]], + ['is_5fvalid_5ftag_29',['is_valid_tag',['../ndef_8hpp.html#ae6dcb2f62fac2fff83b9f02a52656252',1,'m5::nfc::ndef']]], + ['isactive_30',['isActive',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a2865997fa2380a732230f9eb49a86a8c',1,'m5::nfc::NFCLayerA::isActive()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a11b95164e1ef71d9dfce3cad9ab3da29',1,'m5::nfc::NFCLayerB::isActive()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a7322e1fce003b6e46b97e3f22ee5426c',1,'m5::nfc::NFCLayerF::isActive()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#af49881f7956101a57692b9c4a28b61ef',1,'m5::nfc::NFCLayerV::isActive()']]], + ['isfilesystemfile_31',['isFileSystemFile',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a0f3383ce7c3852a045c2bf31101767cd',1,'m5::nfc::a::PICC']]], + ['isfilesystemmemory_32',['isFileSystemMemory',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a3a9e7c3c8284f0470fc6d28a9b0b1bb7',1,'m5::nfc::a::PICC']]], + ['isiso14443_5f4_33',['isISO14443_4',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ac177ad2e1fb7b4a409d1426d682105bd',1,'m5::nfc::a::PICC::isISO14443_4()'],['../structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#a7d8d9bd5c71fedb940098e2b5b6530ac',1,'m5::nfc::b::PICC::isISO14443_4()']]], + ['ismessagetlv_34',['isMessageTLV',['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a9388477e6870fd2f02d3c4532da655fc',1,'m5::nfc::ndef::TLV']]], + ['ismifare_35',['isMifare',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a5116b9ad475f7af0ec25cc4b66a5810b',1,'m5::nfc::a::PICC']]], + ['ismifareclassic_36',['isMifareClassic',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a21fcd6de5187d4a0a89fae5b10f76ad8',1,'m5::nfc::a::PICC']]], + ['ismifareclassiccompatible_37',['isMifareClassicCompatible',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a508df2de55b8c4ea57b32079ce272a48',1,'m5::nfc::a::PICC']]], + ['ismifaredesfire_38',['isMifareDESFire',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ad0673467160266853fe627752b66c320',1,'m5::nfc::a::PICC']]], + ['ismifareplus_39',['isMifarePlus',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ac576c8e46ed249dafeee13a87aaceffb',1,'m5::nfc::a::PICC']]], + ['ismifarepluss_40',['isMifarePlusS',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a99c9f87543996a12a39173dfb34edfdd',1,'m5::nfc::a::PICC']]], + ['ismifareplusse_41',['isMifarePlusSE',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a542372967ed8d66b81e516a577c05ffd',1,'m5::nfc::a::PICC']]], + ['ismifareplusx_42',['isMifarePlusX',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#abc2eb6ac544e02926b29b1cf83448f39',1,'m5::nfc::a::PICC']]], + ['ismifareultralight_43',['isMifareUltralight',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a8f0546bace218cbda64584054e5863db',1,'m5::nfc::a::PICC']]], + ['isnfcmode_44',['isNFCMode',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a895b6141ec3be0964c15ce788ceb434d',1,'m5::unit::UnitST25R3916']]], + ['isntag2_45',['isNTAG2',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a921b4be25c7923c4b7f68351d26cf734',1,'m5::nfc::a::PICC']]], + ['isnulltlv_46',['isNullTLV',['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#ac47de838e481a6c48dfccd2dee8dcc07',1,'m5::nfc::ndef::TLV']]], + ['isodep_47',['isoDEP',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a7959e21229eebefebf607d65dd2ca8cd',1,'m5::nfc::NFCLayerA::isoDEP()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a8f40ff3e5e6bc0018e3e635229c1cbbc',1,'m5::nfc::NFCLayerB::isoDEP()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a2d1a4a1c91d0a054640c806f8ba9d42f',1,'m5::nfc::NFCLayerInterface::isoDEP()']]], + ['isst25ta_48',['isST25TA',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a6b515216b97bd8384aac681c0cc96bea',1,'m5::nfc::a::PICC']]], + ['isterminatortlv_49',['isTerminatorTLV',['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#ac945d81eab0f1763d351a1d899bc05f3',1,'m5::nfc::ndef::TLV']]], + ['isuserblock_50',['isUserBlock',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ad40b59ec2192f8b801bbce3753398c28',1,'m5::nfc::a::PICC::isUserBlock()'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ad84ac714bd3397f8cb173b7b8651ff0c',1,'m5::nfc::f::PICC::isUserBlock()']]], + ['isvalidformat_51',['isValidFormat',['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a9bd9f2c96b4ef91fa2c34e456dc16c13',1,'m5::nfc::ndef::NDEFLayer']]] +]; diff --git a/search/functions_9.js b/search/functions_9.js new file mode 100644 index 0000000..5c12258 --- /dev/null +++ b/search/functions_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['last_5fuser_5fblock_0',['last_user_block',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a347f20c1818de724908bba309e42909f',1,'m5::nfc::NFCLayerA::last_user_block()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a36c1c50e191cbcc8755456520c61561d',1,'m5::nfc::NFCLayerB::last_user_block()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a956455e727841c422a74291153826b23',1,'m5::nfc::NFCLayerF::last_user_block()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#ad3718fd96e63ae118ec7f46f65ad9dce',1,'m5::nfc::NFCLayerInterface::last_user_block()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a14c86c20699947d6b66b7d039ba87d0f',1,'m5::nfc::NFCLayerV::last_user_block()']]], + ['lastselectdata_1',['lastSelectData',['../classm5_1_1nfc_1_1_file_system.html#a7d501a0770b5a34d349e5809b4f895f4',1,'m5::nfc::FileSystem']]], + ['lastuserblock_2',['lastUserBlock',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a3a89f0ac9f0e12dabd86b4cd45d760de',1,'m5::nfc::a::PICC::lastUserBlock()'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a3e1acb785f96fe267425388e2519b544',1,'m5::nfc::f::PICC::lastUserBlock()'],['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#a5fa2805be205b881abbc014edd16514d',1,'m5::nfc::v::PICC::lastUserBlock()']]] +]; diff --git a/search/functions_a.js b/search/functions_a.js new file mode 100644 index 0000000..24fcddd --- /dev/null +++ b/search/functions_a.js @@ -0,0 +1,37 @@ +var searchData= +[ + ['make_5fapdu_5fcase1_0',['make_apdu_case1',['../apdu_8hpp.html#a3f8d54d3187aa2aebd756f6da9523351',1,'m5::nfc::apdu']]], + ['make_5fapdu_5fcase2_1',['make_apdu_case2',['../apdu_8hpp.html#a4a2d632c8b477931e48b04663927ce01',1,'m5::nfc::apdu']]], + ['make_5fapdu_5fcase3_2',['make_apdu_case3',['../apdu_8hpp.html#aca08fb7d12f53387b2a9d8350e01499d',1,'m5::nfc::apdu']]], + ['make_5fapdu_5fcase4_3',['make_apdu_case4',['../apdu_8hpp.html#aa98f1a34a0201b9011bab4fe0c3af7ff',1,'m5::nfc::apdu']]], + ['make_5fapdu_5fcommand_4',['make_apdu_command',['../apdu_8cpp.html#ade33069f0d2d930a92d79591644b8ed8',1,'m5::nfc::apdu']]], + ['make_5ffc_5fbits_5',['make_fc_bits',['../ndef_8hpp.html#a05083607dc86b03cc5e3d77b1f19cb4e',1,'m5::nfc::ndef::type4']]], + ['make_5fnative_5fwrap_5fcommand_6',['make_native_wrap_command',['../desfire__file__system_8cpp.html#a5a527aa739178651a434b5907e22d7b3',1,'m5::nfc::a::mifare::desfire']]], + ['make_5fpersonalized_5fcard_5fkey_5flite_5fs_7',['make_personalized_card_key_lite_s',['../nfcf_8cpp.html#a926f212f3a65e9312101a1ce9d8733ca',1,'m5::nfc::f']]], + ['make_5fsession_5fkey_8',['make_session_key',['../nfcf_8cpp.html#a79ce96cae934525470db73d1df2de74a',1,'m5::nfc::f']]], + ['make_5ftag_5fbits_9',['make_tag_bits',['../ndef_8hpp.html#a66bd75961ea80daa382440461c753e39',1,'m5::nfc::ndef']]], + ['maximum_5ffifo_5fdepth_10',['maximum_fifo_depth',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#adc1ce9c8c03feea93406d287df7b355b',1,'m5::nfc::NFCLayerA::maximum_fifo_depth()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a282835821d919abdf7625609e3bf9d33',1,'m5::nfc::NFCLayerB::maximum_fifo_depth()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a5de1bdcebe2ccdb11afce01c935dc02c',1,'m5::nfc::NFCLayerF::maximum_fifo_depth()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a4ac8de121c4bea7c52fd304956b01c82',1,'m5::nfc::NFCLayerInterface::maximum_fifo_depth()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#ac5bc6049f86f77f97fd363a096be8800',1,'m5::nfc::NFCLayerV::maximum_fifo_depth()']]], + ['maximum_5fframe_5flength_11',['maximum_frame_length',['../nfcb_8cpp.html#af1d62bed3e0436e8c41b431303432a00',1,'m5::nfc::b']]], + ['maximum_5fframe_5flength_5fbits_12',['maximum_frame_length_bits',['../nfcb_8hpp.html#ac5a5d80ef3490cda922538211023db99',1,'m5::nfc::b']]], + ['maximum_5fread_5fblocks_13',['maximum_read_blocks',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a3b3990b2beea5f67e15f08c4ba99c796',1,'m5::nfc::NFCLayerF::maximum_read_blocks()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a1b452839287e760cea354845bb6e7e0a',1,'m5::nfc::NFCLayerInterface::maximum_read_blocks()']]], + ['maximum_5fwrite_5fblocks_14',['maximum_write_blocks',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#acac7c970e5610b59b0f81e508e636b6d',1,'m5::nfc::NFCLayerF::maximum_write_blocks()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a94e218fa9ee80900a96cdaded7d1d5f6',1,'m5::nfc::NFCLayerInterface::maximum_write_blocks()']]], + ['maximumreadblocks_15',['maximumReadBlocks',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ad034f19064f3e2e66e13758a72e38b23',1,'m5::nfc::f::PICC']]], + ['maximumwriteblocks_16',['maximumWriteBlocks',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ab1ca680451a84ccf5b3bda589fb03ca3',1,'m5::nfc::f::PICC']]], + ['mifareclassicauthenticatea_17',['mifareClassicAuthenticateA',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#ace7c09b993fdabbea85583b2e9f4d49c',1,'m5::nfc::NFCLayerA::mifareClassicAuthenticateA()'],['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#afbf8c3d8c5f90f735187d6ed5276f07a',1,'m5::unit::UnitST25R3916::mifareClassicAuthenticateA()']]], + ['mifareclassicauthenticateb_18',['mifareClassicAuthenticateB',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac0661dac6e7ca06ef108871cc822b2c8',1,'m5::nfc::NFCLayerA::mifareClassicAuthenticateB()'],['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a53e9646474a0a2c27dde6e156b646f0b',1,'m5::unit::UnitST25R3916::mifareClassicAuthenticateB()']]], + ['mifareclassicdecrementvalueblock_19',['mifareClassicDecrementValueBlock',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a86871cce9cdaf6ebb5bb2bdfdf860248',1,'m5::nfc::NFCLayerA']]], + ['mifareclassicincrementvalueblock_20',['mifareClassicIncrementValueBlock',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#afdcc37375bccbdf436826b2f1f973212',1,'m5::nfc::NFCLayerA']]], + ['mifareclassicisvalueblock_21',['mifareClassicIsValueBlock',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a193ff49621bbb0b026c4439781803f03',1,'m5::nfc::NFCLayerA']]], + ['mifareclassicreadaccesscondition_22',['mifareClassicReadAccessCondition',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#add99392d776e0757afc345dabec6dffd',1,'m5::nfc::NFCLayerA']]], + ['mifareclassicreadvalueblock_23',['mifareClassicReadValueBlock',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a147ccb42b8a90d435c7018595e980026',1,'m5::nfc::NFCLayerA']]], + ['mifareclassicrestorevalueblock_24',['mifareClassicRestoreValueBlock',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#aebcd787d8bc53fd994135a0507f80abe',1,'m5::nfc::NFCLayerA']]], + ['mifareclassictransfervalueblock_25',['mifareClassicTransferValueBlock',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a0d05ef0dfeba94dfee5ecfeae7363776',1,'m5::nfc::NFCLayerA']]], + ['mifareclassicvalueblock_26',['mifareClassicValueBlock',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a989a9e6f48697e254582e47e8e39ddc8',1,'m5::unit::UnitST25R3916']]], + ['mifareclassicwriteaccesscondition_27',['mifareClassicWriteAccessCondition',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac3d2c944c286800b9e1147674172f248',1,'m5::nfc::NFCLayerA']]], + ['mifareclassicwritevalueblock_28',['mifareClassicWriteValueBlock',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a654141401bac8480c56593bf476a822a',1,'m5::nfc::NFCLayerA']]], + ['mifareplusupgradesecuritylevel1_29',['mifarePlusUpgradeSecurityLevel1',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a1c80db943efcf56c086c5d70ac1ad0d4',1,'m5::nfc::NFCLayerA']]], + ['mifareplusupgradesecuritylevel2_30',['mifarePlusUpgradeSecurityLevel2',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a1c28bbf7fb09613378f7bc3150d091f7',1,'m5::nfc::NFCLayerA']]], + ['mifareplusupgradesecuritylevel3_31',['mifarePlusUpgradeSecurityLevel3',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#ad305314219e83a82d21ed46c163e18b1',1,'m5::nfc::NFCLayerA']]], + ['mifareultralightcauthenticate_32',['mifareUltralightCAuthenticate',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a4d73b0666a5550b26b70cfbcc24bb6c4',1,'m5::nfc::NFCLayerA']]], + ['mifareultralightchangeformattondef_33',['mifareUltralightChangeFormatToNDEF',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a55e8d544bdd962d449d1b033fbc8bd75',1,'m5::nfc::NFCLayerA']]] +]; diff --git a/search/functions_b.js b/search/functions_b.js new file mode 100644 index 0000000..9700a30 --- /dev/null +++ b/search/functions_b.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['ndefisvalidformat_0',['ndefIsValidFormat',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a67ad153f9d8d8a13d05bc4b8048dbf7b',1,'m5::nfc::NFCLayerA::ndefIsValidFormat()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ad1520432e55adb603947654d20161360',1,'m5::nfc::NFCLayerF::ndefIsValidFormat()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a2a850165ceb42a91169fac1b6aaef55c',1,'m5::nfc::NFCLayerV::ndefIsValidFormat()']]], + ['ndefpreparedesfire_1',['ndefPrepareDesfire',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a59f94b281ece2f3f24ec537613b7b2c1',1,'m5::nfc::NFCLayerA']]], + ['ndefpreparedesfirelight_2',['ndefPrepareDesfireLight',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#acd1252e937569b38de4d1e0c15d7217d',1,'m5::nfc::NFCLayerA']]], + ['ndefread_3',['ndefRead',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a9434350fb2af7119b16cdcb1170fb66b',1,'m5::nfc::NFCLayerA::ndefRead(m5::nfc::ndef::TLV &msg)'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a873bfadfc460abc6742b06fcbc6c63dd',1,'m5::nfc::NFCLayerA::ndefRead(std::vector< m5::nfc::ndef::TLV > &tlvs, const m5::nfc::ndef::TagBits tagBits=m5::nfc::ndef::tagBitsAll)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#abe7f8fa12217d61879a285a6f49e3dc7',1,'m5::nfc::NFCLayerF::ndefRead()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a70860961bacb0e5b48af02f58600d3af',1,'m5::nfc::NFCLayerV::ndefRead(m5::nfc::ndef::TLV &msg)']]], + ['ndefreadcapabilitycontainer_4',['ndefReadCapabilityContainer',['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a520d660f41006af09c2475652df9a2fe',1,'m5::nfc::NFCLayerV']]], + ['ndefwrite_5',['ndefWrite',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#ad2434059c53afed91402c9ccffd156b6',1,'m5::nfc::NFCLayerA::ndefWrite(const m5::nfc::ndef::TLV &msg)'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a65823efd2a5958d16857bee1ae9bf050',1,'m5::nfc::NFCLayerA::ndefWrite(const std::vector< m5::nfc::ndef::TLV > &tlvs)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a090972d382390655204396fa987ed61b',1,'m5::nfc::NFCLayerF::ndefWrite()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a1c516b5988e3eebb4d6effc29f284c2b',1,'m5::nfc::NFCLayerV::ndefWrite(const m5::nfc::ndef::TLV &msg)']]], + ['ndefwritecapabilitycontainer_6',['ndefWriteCapabilityContainer',['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#ab32fa4e8ef5c36caabbae5804a4742e5',1,'m5::nfc::NFCLayerV']]], + ['nfcahlt_7',['nfcaHlt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0bec5e210dc09b9c795515c81680b835',1,'m5::unit::UnitST25R3916']]], + ['nfcareadblock_8',['nfcaReadBlock',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9523eab08f4d93610e00a704ab6a9167',1,'m5::unit::UnitST25R3916']]], + ['nfcareceive_9',['nfcaReceive',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5d3ce8cc0fd99a213ec877ac47e50e7e',1,'m5::unit::UnitST25R3916']]], + ['nfcarequest_10',['nfcaRequest',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a456d6d1ac55f39190130d6e8a8e19325',1,'m5::unit::UnitST25R3916']]], + ['nfcaselect_11',['nfcaSelect',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae43fbcbaee6d34aa9880edbb49b6cd4b',1,'m5::unit::UnitST25R3916']]], + ['nfcaselectwithanticollision_12',['nfcaSelectWithAnticollision',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#af2e97b7a81262b6673e97831b3272716',1,'m5::unit::UnitST25R3916']]], + ['nfcatransceive_13',['nfcaTransceive',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a195e53574c9750b2db85e6cd1073782f',1,'m5::unit::UnitST25R3916']]], + ['nfcatransmit_14',['nfcaTransmit',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a936ca379b6f45afcdae154651a90f87d',1,'m5::unit::UnitST25R3916']]], + ['nfcawakeup_15',['nfcaWakeup',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aad481829ef58b733871deb7514a0d14d',1,'m5::unit::UnitST25R3916']]], + ['nfcawriteblock_16',['nfcaWriteBlock',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a4254b99d3e82fda6c33274629a93bd26',1,'m5::unit::UnitST25R3916']]], + ['nfcbreceive_17',['nfcbReceive',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aed444774f99efb57bfd6cfcf8bdd3cf3',1,'m5::unit::UnitST25R3916']]], + ['nfcbtransceive_18',['nfcbTransceive',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad43bdfb9e2bbf3f77e73e587b96dae15',1,'m5::unit::UnitST25R3916']]], + ['nfcbtransmit_19',['nfcbTransmit',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a2980eca4a872ad9b4ce4e1d59abbd0d2',1,'m5::unit::UnitST25R3916']]], + ['nfcforumtagtype_20',['nfcForumTagType',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#aed933bf1d35a885069480677e64fdb7c',1,'m5::nfc::a::PICC::nfcForumTagType()'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a022a996aef9698d70c080d53ef53e553',1,'m5::nfc::f::PICC::nfcForumTagType()'],['../structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#ab302f6c57c2b7b7391a5ab34ad3a6896',1,'m5::nfc::v::PICC::nfcForumTagType()']]], + ['nfcfreceive_21',['nfcfReceive',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae7abd1cdd9f45be22707d34286d4e13b',1,'m5::unit::UnitST25R3916']]], + ['nfcftransceive_22',['nfcfTransceive',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5d461d5845636d6aae46342078285ec5',1,'m5::unit::UnitST25R3916']]], + ['nfcftransmit_23',['nfcfTransmit',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#af78d82f081370f995cd9742c18b2a306',1,'m5::unit::UnitST25R3916']]], + ['nfcmode_24',['NFCMode',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ac3814eadfaf2a9a941dcce095919d832',1,'m5::unit::UnitST25R3916']]], + ['nfcvreceive_25',['nfcvReceive',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a3ffab61575579456fe24755aaab02c52',1,'m5::unit::UnitST25R3916']]], + ['nfcvtransceive_26',['nfcvTransceive',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a704c7a5d4d9d278c1f9d24355810a630',1,'m5::unit::UnitST25R3916']]], + ['nfcvtransmit_27',['nfcvTransmit',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad04893a317904806982917e07a002e5b',1,'m5::unit::UnitST25R3916']]] +]; diff --git a/search/functions_c.js b/search/functions_c.js new file mode 100644 index 0000000..6ad074f --- /dev/null +++ b/search/functions_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['operator_21_3d_0',['operator!=',['../nfca_8hpp.html#aae4e036a81bf97f2133c38ec1ec54af4',1,'m5::nfc::a::operator!=()'],['../nfcb_8hpp.html#ac3bd576be01a287cbdf7d6f6ff7d59f2',1,'m5::nfc::b::operator!=()'],['../nfcf_8hpp.html#a5d6416a6b1df2234e88bfd1b78e8a52b',1,'m5::nfc::f::operator!=()'],['../ndef__record_8hpp.html#a0f260b00747174f0d61a07ff5aff3fa1',1,'m5::nfc::ndef::operator!=()'],['../nfcv_8hpp.html#a3aac55a9610fa6bc574cb7d3d5dce671',1,'m5::nfc::v::operator!=()']]], + ['operator_3d_3d_1',['operator==',['../nfca_8hpp.html#a613b44aedafa4a844d37f94af2a07955',1,'m5::nfc::a::operator==()'],['../nfcb_8hpp.html#a2bfee8da3fdce40cdd70ebb5eaaf0dc3',1,'m5::nfc::b::operator==()'],['../nfcf_8cpp.html#a9d5df6f8cc40e297cb675451d4f20774',1,'m5::nfc::f::operator==()'],['../ndef__record_8hpp.html#a27688dbdd1bec2a25597aca2512ef9bb',1,'m5::nfc::ndef::operator==()'],['../nfcv_8hpp.html#a04b09eb24f7e2bab1244be40dbee3304',1,'m5::nfc::v::operator==()']]] +]; diff --git a/search/functions_d.js b/search/functions_d.js new file mode 100644 index 0000000..39fd847 --- /dev/null +++ b/search/functions_d.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['parse_5ftlv_0',['parse_tlv',['../apdu_8cpp.html#a5f63415d23f1838b2cf7a294cad86ec1',1,'m5::nfc::apdu']]], + ['parsefci_1',['parseFCI',['../file__system_8cpp.html#a6f37bce98efe295da49502e417d2375a',1,'m5::nfc']]], + ['payload_2',['payload',['../classm5_1_1nfc_1_1ndef_1_1_record.html#a277f654c9f1e6cc2000a41531befb09c',1,'m5::nfc::ndef::Record::payload()'],['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a8cd8fac4f01ea81f13186128ad54cb96',1,'m5::nfc::ndef::TLV::payload() const'],['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a154c89885e3320cd90b299a23b037018',1,'m5::nfc::ndef::TLV::payload()']]], + ['payloadasstring_3',['payloadAsString',['../classm5_1_1nfc_1_1ndef_1_1_record.html#acf8cc597c825300d9e0eff4ec239cb7c',1,'m5::nfc::ndef::Record']]], + ['payloadsize_4',['payloadSize',['../classm5_1_1nfc_1_1ndef_1_1_record.html#a22e7e4a8281b52ecd93ce557cff1693d',1,'m5::nfc::ndef::Record']]], + ['pmmasstring_5',['pmmAsString',['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a6a7775e4b7939567da6e2d42f3ff877a',1,'m5::nfc::f::PICC']]], + ['polling_6',['polling',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ade2cd62f823c42002b8e472037df8a47',1,'m5::nfc::NFCLayerF']]], + ['pop_5fback_7',['pop_back',['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a9a83f92eaac4493a7bd7f516ccb5be73',1,'m5::nfc::ndef::TLV']]], + ['prepare_5fdesfire_8',['prepare_desfire',['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#ad093796b168367bb3cf196a48c3230d1',1,'m5::nfc::ndef::NDEFLayer']]], + ['prepare_5fdesfire_5flight_9',['prepare_desfire_light',['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a49c6be48be0fe9201f21262263582cbb',1,'m5::nfc::ndef::NDEFLayer']]], + ['pupiasstring_10',['pupiAsString',['../structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#a3851bbb69376426d24e43174e85048d9',1,'m5::nfc::b::PICC']]], + ['push_5fback_11',['push_back',['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#a15bee7516420140983d422a2fd3a951c',1,'m5::nfc::ndef::TLV']]] +]; diff --git a/search/functions_e.js b/search/functions_e.js new file mode 100644 index 0000000..bb9acd8 --- /dev/null +++ b/search/functions_e.js @@ -0,0 +1,121 @@ +var searchData= +[ + ['reactivate_0',['reactivate',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a049d81ed5c360b26c4dbf8d93b8e0e46',1,'m5::nfc::NFCLayerA::reactivate(const m5::nfc::a::PICC &picc, const bool force_rats=false)'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a9a8e6e8c38c98228e83974bd6584f42e',1,'m5::nfc::NFCLayerA::reactivate()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a923fe889716bb854eb3301021c8aab06',1,'m5::nfc::NFCLayerF::reactivate()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#aa891ec87b5e896fef8806e5b8783022d',1,'m5::nfc::NFCLayerV::reactivate(const m5::nfc::v::PICC &picc)'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#ad53738b47506d3d0c4f6ff31509c24dd',1,'m5::nfc::NFCLayerV::reactivate()']]], + ['read_1',['read',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#af03e1b30f185127ecd3efe7c2e69562d',1,'m5::nfc::NFCLayerA::read(uint8_t *rx, uint16_t &rx_len, const uint8_t saddr, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#abba78cd657f6823e23452c10749676f7',1,'m5::nfc::NFCLayerA::read(uint8_t *rx, uint16_t &rx_len, const uint8_t saddr, const m5::nfc::a::mifare::plus::AESKey &key)'],['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#afdc37ce8de471e4c439eed5abd73f4be',1,'m5::nfc::NFCLayerA::read(uint8_t *rx, uint16_t &rx_len, const uint16_t saddr) override'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a4120d13050d0fe0ed607b9e762623111',1,'m5::nfc::NFCLayerB::read()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a240d28b530067a9fcdc8c71757d38cf6',1,'m5::nfc::NFCLayerF::read(uint8_t *rx, uint16_t &rx_len, const m5::nfc::f::block_t sblock)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ae221de1f093613ca44369d3ca97ac9b0',1,'m5::nfc::NFCLayerF::read(uint8_t *rx, uint16_t &rx_len, const m5::nfc::f::block_t *block_list, const uint8_t block_num, const uint16_t *service_code, const uint8_t service_num)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ae283e46dc39f2c24898458aeef09fb75',1,'m5::nfc::NFCLayerF::read(uint8_t *rx, uint16_t &rx_len, const uint16_t saddr) override'],['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a580f8cf9637e0dd00db5abb6c1ae6064',1,'m5::nfc::ndef::NDEFLayer::read()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#a928d6df7e722c2cf0f44b78eb9d818cf',1,'m5::nfc::NFCLayerInterface::read()'],['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#a4e8459bbef08fd87a6b7baff52ac4f00',1,'m5::nfc::NFCLayerV::read()']]], + ['read16_2',['read16',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a80e45ceb5b4bdf04ac2a667fde3b92ee',1,'m5::nfc::NFCLayerA::read16()'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a089dbc2c19a53d7df1e8dd07af25647d',1,'m5::nfc::NFCLayerF::read16(uint8_t rx[16], const m5::nfc::f::block_t block, const uint16_t service_code=m5::nfc::f::service_random_read)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#add666921e4988c41198b5eb2d575f081',1,'m5::nfc::NFCLayerF::read16(uint8_t rx[16], const m5::nfc::f::block_t *block, const uint8_t block_num, const uint16_t service_code=m5::nfc::f::service_random_read)']]], + ['read4_3',['read4',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#ab668e6b37b0a4263efc29ee97ec2f44d',1,'m5::nfc::NFCLayerA']]], + ['read_5fnfcv_4',['read_nfcv',['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a1b87db303260ea4eecda8da79d947222',1,'m5::nfc::ndef::NDEFLayer']]], + ['readadconverteroutput_5',['readADConverterOutput',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a08062fdb097c796921ceccf297c02baa',1,'m5::unit::UnitST25R3916']]], + ['readamplitudemeasurementautoaveragingdisplay_6',['readAmplitudeMeasurementAutoAveragingDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad9c562ef698193dfdcd8152d89a6808e',1,'m5::unit::UnitST25R3916']]], + ['readamplitudemeasurementconfiguration_7',['readAmplitudeMeasurementConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a735cf92a6a7265ddbd42057ae27cc851',1,'m5::unit::UnitST25R3916']]], + ['readamplitudemeasurementdisplay_8',['readAmplitudeMeasurementDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a7f2866153d7282686e2a482bf6125a44',1,'m5::unit::UnitST25R3916']]], + ['readamplitudemeasurementreference_9',['readAmplitudeMeasurementReference',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae3f712eccbc6dd5c7a4202b9bbf8139d',1,'m5::unit::UnitST25R3916']]], + ['readantennatuningcontrol_10',['readAntennaTuningControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1f9d97b1e13ae888d2cef4711ff32a67',1,'m5::unit::UnitST25R3916']]], + ['readantennatuningcontrol1_11',['readAntennaTuningControl1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a10780e22ce1bba9f8ca10ffef99126aa',1,'m5::unit::UnitST25R3916']]], + ['readantennatuningcontrol2_12',['readAntennaTuningControl2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#acb5ed058550c0ac513fcffdf827efa3e',1,'m5::unit::UnitST25R3916']]], + ['readattributeblock_13',['readAttributeBlock',['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a904fcac13e7ecff4b8ec67bb75adbd4a',1,'m5::nfc::ndef::NDEFLayer']]], + ['readauxiliarydefinition_14',['readAuxiliaryDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aef044b2425921b6dab7d5fb5045f5cbb',1,'m5::unit::UnitST25R3916']]], + ['readauxiliarydisplay_15',['readAuxiliaryDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#af4c3076825b4c3fbd847ad006e9df668',1,'m5::unit::UnitST25R3916']]], + ['readauxiliarymodulationsetting_16',['readAuxiliaryModulationSetting',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a55ab0a4af4c4d4021faa279be557139f',1,'m5::unit::UnitST25R3916']]], + ['readbinary_17',['readBinary',['../classm5_1_1nfc_1_1_file_system.html#af8344fcc7e41b13312461afa8801fb24',1,'m5::nfc::FileSystem']]], + ['readbitratedefinition_18',['readBitrateDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a4831930991b3ab2a58ec033a62a56042',1,'m5::unit::UnitST25R3916']]], + ['readbitratedetectiondisplay_19',['readBitrateDetectionDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ac5900a5c4b61b34783324d30673f3bc0',1,'m5::unit::UnitST25R3916']]], + ['readblock_20',['readBlock',['../classm5_1_1nfc_1_1_n_f_c_layer_v.html#aa7871ddea482ddf11320d89268a40877',1,'m5::nfc::NFCLayerV']]], + ['readcapabilitycontainer_21',['readCapabilityContainer',['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a4840b2bddf145c2b82ede77c297a43b4',1,'m5::nfc::ndef::NDEFLayer::readCapabilityContainer(m5::nfc::ndef::type2::CapabilityContainer &cc)'],['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a304ecb7680aa44482bdb6df7cc562df3',1,'m5::nfc::ndef::NDEFLayer::readCapabilityContainer(m5::nfc::ndef::type4::CapabilityContainer &cc)'],['../classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html#a9cdcf11726672111ab0836b085792d81',1,'m5::nfc::ndef::NDEFLayer::readCapabilityContainer(m5::nfc::ndef::type5::CapabilityContainer &cc)']]], + ['readcapacitancemeasurementautoaveragingdisplay_22',['readCapacitanceMeasurementAutoAveragingDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a038ac0e9d02b15c6c1b8d0014f7e4fbc',1,'m5::unit::UnitST25R3916']]], + ['readcapacitancemeasurementconfiguration_23',['readCapacitanceMeasurementConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ac62b0d695772486df92ba9e50c0df1f1',1,'m5::unit::UnitST25R3916']]], + ['readcapacitancemeasurementdisplay_24',['readCapacitanceMeasurementDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a77839fb29fd9e45929dcdceff3d0fdb1',1,'m5::unit::UnitST25R3916']]], + ['readcapacitancemeasurementreference_25',['readCapacitanceMeasurementReference',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a2b05c3b934c32655a75f97bbe9a8eec4',1,'m5::unit::UnitST25R3916']]], + ['readcapacitivesensorcontrol_26',['readCapacitiveSensorControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#abdb6610ef390550da5dfc56d10ff30ce',1,'m5::unit::UnitST25R3916']]], + ['readcapacitivesensordisplay_27',['readCapacitiveSensorDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aafdba06d3e7d440eca36b1f9bf8a22f2',1,'m5::unit::UnitST25R3916']]], + ['readcollisiondisplay_28',['readCollisionDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9f35c902bccd6314ab956a625a0b2a29',1,'m5::unit::UnitST25R3916']]], + ['readcorrelatorconfiguration_29',['readCorrelatorConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aa4024b881cf7f9541c15bef662997e1e',1,'m5::unit::UnitST25R3916']]], + ['readcorrelatorconfiguration1_30',['readCorrelatorConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae737fc7f43faf3d550d0ad069e8f0ccd',1,'m5::unit::UnitST25R3916']]], + ['readcorrelatorconfiguration2_31',['readCorrelatorConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#accf80af0ec691e8c74de111f19112086',1,'m5::unit::UnitST25R3916']]], + ['readdata_32',['readData',['../classm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_d_e_s_fire_file_system.html#ab5694060981744a4ea1f79db5711a3ce',1,'m5::nfc::a::mifare::desfire::DESFireFileSystem']]], + ['reademdsuppressionconfiguration_33',['readEMDSuppressionConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a88fb2f73a2c4fb430b17293a0761fbf3',1,'m5::unit::UnitST25R3916']]], + ['readerrorandwakeupinterrupt_34',['readErrorAndWakeupInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a218162c4dd414da630479020930824d0',1,'m5::unit::UnitST25R3916']]], + ['readexternalfielddetectoractivationthreshold_35',['readExternalFieldDetectorActivationThreshold',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a19defbfd6df303cf0c6d77187a711917',1,'m5::unit::UnitST25R3916']]], + ['readexternalfielddetectordeactivationthreshold_36',['readExternalFieldDetectorDeactivationThreshold',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9fcc8625df4b8153a684ab70afea66f0',1,'m5::unit::UnitST25R3916']]], + ['readfifo_37',['readFIFO',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a71755c04ed3c946627235e14aeb95992',1,'m5::unit::UnitST25R3916']]], + ['readfifosize_38',['readFIFOSize',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#abde9373b1ae0e83f385840adc30c541c',1,'m5::unit::UnitST25R3916']]], + ['readfifostatus_39',['readFIFOStatus',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a005f3a955c7fbbc2584d9d1c95889c62',1,'m5::unit::UnitST25R3916']]], + ['readfifostatus1_40',['readFIFOStatus1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a4dec1b712b681cfd1716e1d407a1697c',1,'m5::unit::UnitST25R3916']]], + ['readfifostatus2_41',['readFIFOStatus2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a4f428fb7e83f3c278a48ae1e660afba7',1,'m5::unit::UnitST25R3916']]], + ['readgainreductionstate_42',['readGainReductionState',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a739a60b7d77e403b0fd16064dae5dff1',1,'m5::unit::UnitST25R3916']]], + ['readgeneralpurposetimer_43',['readGeneralPurposeTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a93b67a62685adc21aa4a82084a3ea617',1,'m5::unit::UnitST25R3916']]], + ['readgeneralpurposetimer1_44',['readGeneralPurposeTimer1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab97ff2440fb3d95622cc29049eaf3ae3',1,'m5::unit::UnitST25R3916']]], + ['readgeneralpurposetimer2_45',['readGeneralPurposeTimer2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a86ded49224044850eec4343ed93e6136',1,'m5::unit::UnitST25R3916']]], + ['readicidentity_46',['readICIdentity',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1bc7876fc2ca2be617212b85c037edf9',1,'m5::unit::UnitST25R3916']]], + ['readinterrupts_47',['readInterrupts',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1fcb93657f8d96923033431eeade2e32',1,'m5::unit::UnitST25R3916']]], + ['readioconfiguration_48',['readIOConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9d6d2a62bb832c8f6c9980c8b4890b56',1,'m5::unit::UnitST25R3916']]], + ['readioconfiguration1_49',['readIOConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae4cde7bd48d0471543bc0a9ac3d5519b',1,'m5::unit::UnitST25R3916']]], + ['readioconfiguration2_50',['readIOConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a27cbc2f8ed7707a5bf74466ea0ebf6db',1,'m5::unit::UnitST25R3916']]], + ['readmaininterrupt_51',['readMainInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a7f06768804f96003a4c34cf3a79f591f',1,'m5::unit::UnitST25R3916']]], + ['readmaskerrorandwakeupinterrupt_52',['readMaskErrorAndWakeupInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9a1201113079152da88ed03d53538a18',1,'m5::unit::UnitST25R3916']]], + ['readmaskinterrupts_53',['readMaskInterrupts',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a583760a81ec99d5b8b8ac321350431e8',1,'m5::unit::UnitST25R3916']]], + ['readmaskmaininterrupt_54',['readMaskMainInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a04b32e2a469ac22281947743d316fce3',1,'m5::unit::UnitST25R3916']]], + ['readmaskpassivetargetinterrupt_55',['readMaskPassiveTargetInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5994da7a2e869936cfbad46a8ca4d93e',1,'m5::unit::UnitST25R3916']]], + ['readmaskreceivetimer_56',['readMaskReceiveTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0d33cefab2853f7506f76a20b1ccd694',1,'m5::unit::UnitST25R3916']]], + ['readmasktimerandnfcinterrupt_57',['readMaskTimerAndNFCInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a50e39e51b2f818f1dbe232b303b474ba',1,'m5::unit::UnitST25R3916']]], + ['readmodedefinition_58',['readModeDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae205db89775d4798803f4551a963fa45',1,'m5::unit::UnitST25R3916']]], + ['readnfcfieldonguardtimer_59',['readNFCFieldOnGuardTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ac8bfa17c5cabf97af93ef08e9ce05d82',1,'m5::unit::UnitST25R3916']]], + ['readnfcip1passivetargetdefinition_60',['readNFCIP1PassiveTargetDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a264a3b794e12367b9bd391e66364ed48',1,'m5::unit::UnitST25R3916']]], + ['readnoresponsetimer_61',['readNoResponseTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#abdb1b4f3c8399e79047063c9630ab33d',1,'m5::unit::UnitST25R3916']]], + ['readnoresponsetimer1_62',['readNoResponseTimer1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab7c3b048b1cfdbac22c26b0670d164ba',1,'m5::unit::UnitST25R3916']]], + ['readnoresponsetimer2_63',['readNoResponseTimer2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae641dcf3d5913e00f3c9271ef4cca71e',1,'m5::unit::UnitST25R3916']]], + ['readnumberoftransmittedbytes_64',['readNumberOfTransmittedBytes',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad88d3fb6bc69bc36016dee6d3c18e6da',1,'m5::unit::UnitST25R3916']]], + ['readnumberoftransmittedbytes1_65',['readNumberOfTransmittedBytes1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a7f67ad01708120ad13d82bd5c547204e',1,'m5::unit::UnitST25R3916']]], + ['readnumberoftransmittedbytes2_66',['readNumberOfTransmittedBytes2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#af9667f157df14cee9b9683a7f797f0d5',1,'m5::unit::UnitST25R3916']]], + ['readoperationcontrol_67',['readOperationControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a071187a782adc59a24ee547e3bd688d3',1,'m5::unit::UnitST25R3916']]], + ['readovershootprotectionconfiguration_68',['readOvershootProtectionConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a29940289a38fec6374e2ab83913a1ac3',1,'m5::unit::UnitST25R3916']]], + ['readovershootprotectionconfiguration1_69',['readOvershootProtectionConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a8a843d901b4cc762b2f475ef9c4ba847',1,'m5::unit::UnitST25R3916']]], + ['readovershootprotectionconfiguration2_70',['readOvershootProtectionConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aa4c056de4b328cd9daa3daee2cd3128d',1,'m5::unit::UnitST25R3916']]], + ['readp2preceiverconfiguration_71',['readP2PReceiverConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a8f63fe063f9c5259e1be0cf409ea2967',1,'m5::unit::UnitST25R3916']]], + ['readpassivetargetdisplay_72',['readPassiveTargetDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ade3074e98b95d15d0bee2f3645a0671b',1,'m5::unit::UnitST25R3916']]], + ['readpassivetargetinterrupt_73',['readPassiveTargetInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0f09777cae214492f36d42622e4ceafe',1,'m5::unit::UnitST25R3916']]], + ['readpassivetargetmodulation_74',['readPassiveTargetModulation',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#afec086fb283d8deb51618628d6af0198',1,'m5::unit::UnitST25R3916']]], + ['readphasemeasurementautoaveragingdisplay_75',['readPhaseMeasurementAutoAveragingDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a012e6d0be9b214d7faff9aec4e68a1e8',1,'m5::unit::UnitST25R3916']]], + ['readphasemeasurementconfiguration_76',['readPhaseMeasurementConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a679e7263cfa373bcb28d5a0652c050d1',1,'m5::unit::UnitST25R3916']]], + ['readphasemeasurementdisplay_77',['readPhaseMeasurementDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae33d45840047077cb237b33be2524738',1,'m5::unit::UnitST25R3916']]], + ['readphasemeasurementreference_78',['readPhaseMeasurementReference',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab650256ac000e08eb1d3a084ab74d1c1',1,'m5::unit::UnitST25R3916']]], + ['readppon2fieldwaiting_79',['readPPON2FieldWaiting',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad0f10895c515d966a744b18001c22c08',1,'m5::unit::UnitST25R3916']]], + ['readreceiverconfiguration_80',['readReceiverConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a60203aa11d73ec598f2940d51e716888',1,'m5::unit::UnitST25R3916']]], + ['readreceiverconfiguration1_81',['readReceiverConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aefeca1ad098a7109af3a66ecfa67a866',1,'m5::unit::UnitST25R3916']]], + ['readreceiverconfiguration2_82',['readReceiverConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a68cbfcac8dddb4c7a4f703f433f6e8c9',1,'m5::unit::UnitST25R3916']]], + ['readreceiverconfiguration3_83',['readReceiverConfiguration3',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a2334efea87ad7d6366d6cec34b3a19dc',1,'m5::unit::UnitST25R3916']]], + ['readreceiverconfiguration4_84',['readReceiverConfiguration4',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#abcb65704d88d708d968e09c830b7c0e6',1,'m5::unit::UnitST25R3916']]], + ['readregulatordisplay_85',['readRegulatorDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a99fb3f9b3dc657f9b0c92337732b9a4b',1,'m5::unit::UnitST25R3916']]], + ['readregulatorvoltagecontrol_86',['readRegulatorVoltageControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a1a2f39d9ff99a395899c117f7c7faade',1,'m5::unit::UnitST25R3916']]], + ['readresistiveammodulation_87',['readResistiveAMModulation',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#af66d31379de5808c079847ef657d301a',1,'m5::unit::UnitST25R3916']]], + ['readrssidisplay_88',['readRSSIDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ae6e30c9913f6d4c417ae3ee6ad75fb23',1,'m5::unit::UnitST25R3916']]], + ['readsettingsfelica_89',['readSettingsFelica',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a311f409703ca9492d5a8c6196728bb36',1,'m5::unit::UnitST25R3916']]], + ['readsettingsiso14443a_90',['readSettingsISO14443A',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a6aa21d1b259476495db6a030ef30076f',1,'m5::unit::UnitST25R3916']]], + ['readsettingsiso14443b_91',['readSettingsISO14443B',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#acc79c90b6b22d5a91d0ffcbf1ea84cd1',1,'m5::unit::UnitST25R3916']]], + ['readsquelchtimer_92',['readSquelchTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0d1ee83144400dc5d8209df7b59f726b',1,'m5::unit::UnitST25R3916']]], + ['readstreammodedefinition_93',['readStreamModeDefinition',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a521cad377d4792f4deef4f7c226df969',1,'m5::unit::UnitST25R3916']]], + ['readsubcarrierstarttimer_94',['readSubcarrierStartTimer',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a247cc45b2d42913eae92814211a661d8',1,'m5::unit::UnitST25R3916']]], + ['readtimerandemvcontrol_95',['readTimerAndEMVControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ab6420afa36465e873a2ef42fe594c68b',1,'m5::unit::UnitST25R3916']]], + ['readtimerandnfcinterrupt_96',['readTimerAndNFCInterrupt',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a0f36f70969df4707858a8ed090ce3d7d',1,'m5::unit::UnitST25R3916']]], + ['readtxdriver_97',['readTXDriver',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a9844f6043bc46f47cb25174948ac1ce2',1,'m5::unit::UnitST25R3916']]], + ['readtxdrivertiming_98',['readTXDriverTiming',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#afcea42102730d1aabaa5770d285e750d',1,'m5::unit::UnitST25R3916']]], + ['readtxdrivertimingdisplay_99',['readTXDriverTimingDisplay',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a41843d8909be31377a79ed97b589a078',1,'m5::unit::UnitST25R3916']]], + ['readundershootprotectionconfiguration_100',['readUndershootProtectionConfiguration',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#a5a5a56230bbd7c570cfb44630206cf26',1,'m5::unit::UnitST25R3916']]], + ['readundershootprotectionconfiguration1_101',['readUndershootProtectionConfiguration1',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad446e3139d061ee14da240c1dac998d5',1,'m5::unit::UnitST25R3916']]], + ['readundershootprotectionconfiguration2_102',['readUndershootProtectionConfiguration2',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#aee2b97fb54b873cebe17a4b9d8962076',1,'m5::unit::UnitST25R3916']]], + ['readwakeuptimercontrol_103',['readWakeupTimerControl',['../classm5_1_1unit_1_1_unit_s_t25_r3916.html#ad9f4154143bf86dbed3b06028dd49f65',1,'m5::unit::UnitST25R3916']]], + ['readwithmac16_104',['readWithMAC16',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a603413d14aae3edf6cf6ab8ced48aa09',1,'m5::nfc::NFCLayerF']]], + ['receive_105',['receive',['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#a1f583ba3a2213ecd3d8c9012080c34ea',1,'m5::nfc::NFCLayerB::receive()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#aeceacd2519f94efd0deaaa1b56d3831c',1,'m5::nfc::NFCLayerInterface::receive()']]], + ['records_106',['records',['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#af29acd8396d9c52414a1c3ff17281ef8',1,'m5::nfc::ndef::TLV']]], + ['rega_107',['regA',['../unionm5_1_1nfc_1_1f_1_1_r_e_g.html#a65f9d61fefa9bfc6cc698fa6735c64a8',1,'m5::nfc::f::REG::regA() const'],['../unionm5_1_1nfc_1_1f_1_1_r_e_g.html#a403e0738100b0b778ebe016dc2b66743',1,'m5::nfc::f::REG::regA(const uint32_t v)']]], + ['regb_108',['regB',['../unionm5_1_1nfc_1_1f_1_1_r_e_g.html#a697ea41ac2e098f30305697f8bdb828c',1,'m5::nfc::f::REG::regB() const'],['../unionm5_1_1nfc_1_1f_1_1_r_e_g.html#a3809c945b5741992b1b2b93433041119',1,'m5::nfc::f::REG::regB(const uint32_t v)']]], + ['regc_109',['regC',['../unionm5_1_1nfc_1_1f_1_1_r_e_g.html#a18363858e069b905ea04b9de8d2c3809',1,'m5::nfc::f::REG::regC() const'],['../unionm5_1_1nfc_1_1f_1_1_r_e_g.html#a29c4f22a2d7699d3b6831e872686d088',1,'m5::nfc::f::REG::regC(const uint64_t v)']]], + ['request_110',['request',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a0db4941c60b2f67a8415ef2fd505ead4',1,'m5::nfc::NFCLayerA::request()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#af30da614d7bdcfd7829d70dcd23d9b18',1,'m5::nfc::NFCLayerB::request()']]], + ['requestresponse_111',['requestResponse',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a173474e60fa825cca43c1f96c2d23648',1,'m5::nfc::NFCLayerF']]], + ['requestservice_112',['requestService',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#a122ec944def369e0b084f8f1f3d14e7e',1,'m5::nfc::NFCLayerF::requestService(uint16_t &key_version, const uint16_t node_code)'],['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#ad064c3162f02f483ef7672a885a7e778',1,'m5::nfc::NFCLayerF::requestService(uint16_t key_version[], const uint16_t *node_code, const uint8_t node_num)']]], + ['requestsystemcode_113',['requestSystemCode',['../classm5_1_1nfc_1_1_n_f_c_layer_f.html#aeedd43471a62cde89d8b62229ba3c19d',1,'m5::nfc::NFCLayerF']]], + ['required_114',['required',['../classm5_1_1nfc_1_1ndef_1_1_record.html#a7a23c577e74fe4cf86c61c351125798c',1,'m5::nfc::ndef::Record::required()'],['../classm5_1_1nfc_1_1ndef_1_1_t_l_v.html#ab2ce3a26b5fdc7cd0714954a1abd93a8',1,'m5::nfc::ndef::TLV::required()']]], + ['required_5fread_5fkey_5fno_5ffrom_5faccess_5frights_115',['required_read_key_no_from_access_rights',['../mifare_8hpp.html#a0431c9806ae0c3dca72b0d2e1c68efd8',1,'m5::nfc::a::mifare::desfire']]], + ['required_5fwrite_5fkey_5fno_5ffrom_5faccess_5frights_116',['required_write_key_no_from_access_rights',['../mifare_8hpp.html#abf8d199a4af41bae63909d3f4e1a5aaf',1,'m5::nfc::a::mifare::desfire']]], + ['requiresplussl3plainread_117',['requiresPlusSL3PlainRead',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a9e70b140d26dd6edd723e6831153c798',1,'m5::nfc::a::PICC']]] +]; diff --git a/search/functions_f.js b/search/functions_f.js new file mode 100644 index 0000000..9619972 --- /dev/null +++ b/search/functions_f.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['sak_5fto_5ftype_0',['sak_to_type',['../nfca_8cpp.html#aba956d86d9cb908086a4e3b3b55b8bd6',1,'m5::nfc::a']]], + ['select_1',['select',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a6c5ba9ff6ce1ad9c5c2ec5adf17a9299',1,'m5::nfc::NFCLayerA::select()'],['../classm5_1_1nfc_1_1_n_f_c_layer_b.html#ad7936a932130b4514d04a225c10e4305',1,'m5::nfc::NFCLayerB::select()']]], + ['selectbydfname_2',['selectByDfName',['../classm5_1_1nfc_1_1_file_system.html#ae89a1668d4bd55d89e06760ac5471db8',1,'m5::nfc::FileSystem']]], + ['selectbyfileid_3',['selectByFileId',['../classm5_1_1nfc_1_1_file_system.html#ac36340e28a4f58001fca8d8e277b3ff9',1,'m5::nfc::FileSystem']]], + ['selectbypath_4',['selectByPath',['../classm5_1_1nfc_1_1_file_system.html#ad9a976bf6364804939ccaf30beaab14b',1,'m5::nfc::FileSystem']]], + ['selectdfnameauto_5',['selectDfNameAuto',['../classm5_1_1nfc_1_1_file_system.html#a5dcce8b2abc183d2397bae156ba3be15',1,'m5::nfc::FileSystem']]], + ['selectfile_6',['selectFile',['../classm5_1_1nfc_1_1_file_system.html#ae60578d2b25f1a7c34773ff445859cc5',1,'m5::nfc::FileSystem']]], + ['selectfileidauto_7',['selectFileIdAuto',['../classm5_1_1nfc_1_1_file_system.html#a0503db312968888ab64f023916a7c682',1,'m5::nfc::FileSystem']]], + ['selectmasterfile_8',['selectMasterFile',['../classm5_1_1nfc_1_1_file_system.html#a6abdc8aa28226e0bd5d908aaa7dcc8e1',1,'m5::nfc::FileSystem']]], + ['selectparent_9',['selectParent',['../classm5_1_1nfc_1_1_file_system.html#ac79680652b300a039327a87c48162c56',1,'m5::nfc::FileSystem']]], + ['setexpiredtime_10',['setExpiredTime',['../classm5_1_1nfc_1_1_emulation_layer_a.html#a82370280351c601e7b6092e28132e3ef',1,'m5::nfc::EmulationLayerA::setExpiredTime()'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#a16832ef764ed5d2d4b9053e8e424df38',1,'m5::nfc::EmulationLayerF::setExpiredTime()']]], + ['setidentifier_11',['setIdentifier',['../classm5_1_1nfc_1_1ndef_1_1_record.html#ae58c57b3a64ea9994961324f8eb5489e',1,'m5::nfc::ndef::Record']]], + ['setpayload_12',['setPayload',['../classm5_1_1nfc_1_1ndef_1_1_record.html#ae8e62dbadd7289e91d80df78572c4958',1,'m5::nfc::ndef::Record']]], + ['settextpayload_13',['setTextPayload',['../classm5_1_1nfc_1_1ndef_1_1_record.html#a8b2d1b07c095b9878b5468c3934a17bc',1,'m5::nfc::ndef::Record']]], + ['seturipayload_14',['setURIPayload',['../classm5_1_1nfc_1_1ndef_1_1_record.html#a170c8e9afe7d6631c6d6a7f062fed1f5',1,'m5::nfc::ndef::Record']]], + ['state_15',['state',['../classm5_1_1nfc_1_1_emulation_layer_a.html#ae825e954296b17714c73850a674e4461',1,'m5::nfc::EmulationLayerA::state()'],['../classm5_1_1nfc_1_1_emulation_layer_f.html#a1940d738cb0030cf5c4f6bc0a366a57c',1,'m5::nfc::EmulationLayerF::state()']]], + ['status_5fcode_16',['status_code',['../desfire__file__system_8hpp.html#ac48e82125fa96801b0ceae50e510fc26',1,'m5::nfc::a::mifare::desfire']]], + ['stop_5femulation_17',['stop_emulation',['../structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a.html#a242c96ae280a9d827084035edaa6db40',1,'m5::nfc::ListenerST25R3916ForA::stop_emulation()'],['../structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f.html#a5bee1c348c5bded09f8b5d9e41903632',1,'m5::nfc::ListenerST25R3916ForF::stop_emulation()']]], + ['supports_5fiso14443_5f4_18',['supports_iso14443_4',['../nfcb_8hpp.html#a9c051e67a823a3666937bfa9b003d45f',1,'m5::nfc::b']]], + ['supports_5fnfc_19',['supports_NFC',['../nfca_8hpp.html#a5e813cdf62d4a05e10dde34e64e21f1b',1,'m5::nfc::a']]], + ['supportsfilesystem_20',['supportsFilesystem',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#a439668b546644bf82e4bf402806c4fc3',1,'m5::nfc::NFCLayerA::supportsFilesystem()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#ab85c55ea62d2ef6d735b94ef906b25e0',1,'m5::nfc::NFCLayerInterface::supportsFilesystem()']]], + ['supportsndef_21',['supportsNDEF',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#aac42c420ff4003971cd9b97734300cdd',1,'m5::nfc::a::PICC::supportsNDEF()'],['../structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a246d933e11c4c723a25b97a6ed18a5b2',1,'m5::nfc::f::PICC::supportsNDEF()']]], + ['supportsnfc_22',['supportsNFC',['../structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a13e5f8003b32199e33633f2e7959ad5a',1,'m5::nfc::a::PICC']]], + ['supportsnfctag_23',['supportsNFCTag',['../classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac9a9341857b32fa2016d93e2dce4d053',1,'m5::nfc::NFCLayerA::supportsNFCTag()'],['../classm5_1_1nfc_1_1_n_f_c_layer_interface.html#ab1d3234d299dfef18bb456b1cc2ae17f',1,'m5::nfc::NFCLayerInterface::supportsNFCTag()']]] +]; diff --git a/search/mag.svg b/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/search/mag_d.svg b/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/search/mag_sel.svg b/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/search/mag_seld.svg b/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/search/namespaces_0.js b/search/namespaces_0.js new file mode 100644 index 0000000..d0ea1d3 --- /dev/null +++ b/search/namespaces_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['a_0',['a',['../namespacea.html',1,'']]], + ['apdu_1',['apdu',['../namespaceapdu.html',1,'']]] +]; diff --git a/search/namespaces_1.js b/search/namespaces_1.js new file mode 100644 index 0000000..5f60ef5 --- /dev/null +++ b/search/namespaces_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['b_0',['b',['../namespaceb.html',1,'']]] +]; diff --git a/search/namespaces_2.js b/search/namespaces_2.js new file mode 100644 index 0000000..012eda2 --- /dev/null +++ b/search/namespaces_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['classic_0',['classic',['../namespaceclassic.html',1,'']]] +]; diff --git a/search/namespaces_3.js b/search/namespaces_3.js new file mode 100644 index 0000000..19ee64b --- /dev/null +++ b/search/namespaces_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['desfire_0',['desfire',['../namespacedesfire.html',1,'']]] +]; diff --git a/search/namespaces_4.js b/search/namespaces_4.js new file mode 100644 index 0000000..dfcffcc --- /dev/null +++ b/search/namespaces_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['f_0',['f',['../namespacef.html',1,'']]] +]; diff --git a/search/namespaces_5.js b/search/namespaces_5.js new file mode 100644 index 0000000..e80dd14 --- /dev/null +++ b/search/namespaces_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['isodep_0',['isodep',['../namespaceisodep.html',1,'']]] +]; diff --git a/search/namespaces_6.js b/search/namespaces_6.js new file mode 100644 index 0000000..e76b1c9 --- /dev/null +++ b/search/namespaces_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['m5_0',['m5',['../namespacem5.html',1,'']]], + ['m5_3a_3anfc_3a_3af_3a_3alite_1',['lite',['../namespacem5_1_1nfc_1_1f_1_1lite.html',1,'m5::nfc::f']]], + ['m5_3a_3anfc_3a_3af_3a_3alite_5fs_2',['lite_s',['../namespacem5_1_1nfc_1_1f_1_1lite__s.html',1,'m5::nfc::f']]], + ['mifare_3',['mifare',['../namespacemifare.html',1,'']]] +]; diff --git a/search/namespaces_7.js b/search/namespaces_7.js new file mode 100644 index 0000000..6c8c6fc --- /dev/null +++ b/search/namespaces_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ndef_0',['ndef',['../namespacendef.html',1,'']]], + ['nfc_1',['nfc',['../namespacenfc.html',1,'']]] +]; diff --git a/search/namespaces_8.js b/search/namespaces_8.js new file mode 100644 index 0000000..2bebd8e --- /dev/null +++ b/search/namespaces_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['plus_0',['plus',['../namespaceplus.html',1,'']]] +]; diff --git a/search/namespaces_9.js b/search/namespaces_9.js new file mode 100644 index 0000000..251f7f0 --- /dev/null +++ b/search/namespaces_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['regval_0',['regval',['../namespaceregval.html',1,'']]] +]; diff --git a/search/namespaces_a.js b/search/namespaces_a.js new file mode 100644 index 0000000..97f750f --- /dev/null +++ b/search/namespaces_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['st25r3916_0',['st25r3916',['../namespacest25r3916.html',1,'']]], + ['st25ta_1',['st25ta',['../namespacest25ta.html',1,'']]], + ['standard_2',['standard',['../namespacestandard.html',1,'']]] +]; diff --git a/search/namespaces_b.js b/search/namespaces_b.js new file mode 100644 index 0000000..57d86c2 --- /dev/null +++ b/search/namespaces_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['type2_0',['type2',['../namespacetype2.html',1,'']]], + ['type3_1',['type3',['../namespacetype3.html',1,'']]], + ['type4_2',['type4',['../namespacetype4.html',1,'']]], + ['type5_3',['type5',['../namespacetype5.html',1,'']]] +]; diff --git a/search/namespaces_c.js b/search/namespaces_c.js new file mode 100644 index 0000000..e1bcfb4 --- /dev/null +++ b/search/namespaces_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unit_0',['unit',['../namespaceunit.html',1,'']]] +]; diff --git a/search/namespaces_d.js b/search/namespaces_d.js new file mode 100644 index 0000000..f74c772 --- /dev/null +++ b/search/namespaces_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['v_0',['v',['../namespacev.html',1,'']]] +]; diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 0000000..feadd94 --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['list_0',['Todo List',['../todo.html',1,'']]] +]; diff --git a/search/pages_1.js b/search/pages_1.js new file mode 100644 index 0000000..9f00133 --- /dev/null +++ b/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['m5unit_20nfc_0',['M5Unit-NFC',['../index.html',1,'']]] +]; diff --git a/search/pages_2.js b/search/pages_2.js new file mode 100644 index 0000000..6540fdd --- /dev/null +++ b/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['nfc_0',['M5Unit-NFC',['../index.html',1,'']]] +]; diff --git a/search/pages_3.js b/search/pages_3.js new file mode 100644 index 0000000..83220ef --- /dev/null +++ b/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['todo_20list_0',['Todo List',['../todo.html',1,'']]] +]; diff --git a/search/related_0.js b/search/related_0.js new file mode 100644 index 0000000..80c9d2c --- /dev/null +++ b/search/related_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['operator_3d_3d_0',['operator==',['../classm5_1_1nfc_1_1ndef_1_1_record.html#a3e7f7c256eb7d9deb3bacb503e530793',1,'m5::nfc::ndef::Record']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 0000000..666af01 --- /dev/null +++ b/search/search.js @@ -0,0 +1,694 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +const SEARCH_COOKIE_NAME = ''+'search_grp'; + +const searchResults = new SearchResults(); + +/* A class handling everything associated with the search panel. + + Parameters: + name - The name of the global variable that will be + storing this instance. Is needed to be able to set timeouts. + resultPath - path to use for external files +*/ +function SearchBox(name, resultsPath, extension) { + if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + if (!extension || extension == "") { extension = ".html"; } + + function getXPos(item) { + let x = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + x += item.offsetLeft; + item = item.offsetParent; + } + } + return x; + } + + function getYPos(item) { + let y = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + y += item.offsetTop; + item = item.offsetParent; + } + } + return y; + } + + // ---------- Instance variables + this.name = name; + this.resultsPath = resultsPath; + this.keyTimeout = 0; + this.keyTimeoutLength = 500; + this.closeSelectionTimeout = 300; + this.lastSearchValue = ""; + this.lastResultsPage = ""; + this.hideTimeout = 0; + this.searchIndex = 0; + this.searchActive = false; + this.extension = extension; + + // ----------- DOM Elements + + this.DOMSearchField = () => document.getElementById("MSearchField"); + this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); + this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); + this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); + this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); + this.DOMSearchClose = () => document.getElementById("MSearchClose"); + this.DOMSearchBox = () => document.getElementById("MSearchBox"); + + // ------------ Event Handlers + + // Called when focus is added or removed from the search field. + this.OnSearchFieldFocus = function(isActive) { + this.Activate(isActive); + } + + this.OnSearchSelectShow = function() { + const searchSelectWindow = this.DOMSearchSelectWindow(); + const searchField = this.DOMSearchSelect(); + + const left = getXPos(searchField); + const top = getYPos(searchField) + searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + + // stop selection hide timer + if (this.hideTimeout) { + clearTimeout(this.hideTimeout); + this.hideTimeout=0; + } + return false; // to avoid "image drag" default event + } + + this.OnSearchSelectHide = function() { + this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), + this.closeSelectionTimeout); + } + + // Called when the content of the search field is changed. + this.OnSearchFieldChange = function(evt) { + if (this.keyTimeout) { // kill running timer + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + } + + const e = evt ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) { + if (e.shiftKey==1) { + this.OnSearchSelectShow(); + const win=this.DOMSearchSelectWindow(); + for (let i=0;i do a search + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) { // Up + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } else if (e.keyCode==13 || e.keyCode==27) { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() { + this.keyTimeout = 0; + + // strip leading whitespace + const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + const code = searchValue.toLowerCase().charCodeAt(0); + let idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair + idxChar = searchValue.substr(0, 2); + } + + let jsFile; + let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) { + const hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + const loadJS = function(url, impl, loc) { + const scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + const domSearchBox = this.DOMSearchBox(); + const domPopupSearchResults = this.DOMPopupSearchResults(); + const domSearchClose = this.DOMSearchClose(); + const resultsPath = this.resultsPath; + + const handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') { + domSearchClose.style.display = 'inline-block'; + let left = getXPos(domSearchBox) + 150; + let top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + const maxWidth = document.body.clientWidth; + const maxHeight = document.body.clientHeight; + let width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + let height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } else if (!isActive) { // directly remove the panel + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults() { + + function convertToId(search) { + let result = ''; + for (let i=0;i. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) { + const parentElement = document.getElementById(id); + let element = parentElement.firstChild; + + while (element && element!=parentElement) { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { + element = element.firstChild; + } else if (element.nextSibling) { + element = element.nextSibling; + } else { + do { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) { + const element = this.FindChildElement(id); + if (element) { + if (element.style.display == 'block') { + element.style.display = 'none'; + } else { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) { + if (!search) { // get search word from URL + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + const resultRows = document.getElementsByTagName("div"); + let matches = 0; + + let i = 0; + while (i < resultRows.length) { + const row = resultRows.item(i); + if (row.className == "SRResult") { + let rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) { + row.style.display = 'block'; + matches++; + } else { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) { // no results + document.getElementById("NoMatches").style.display='block'; + } else { // at least one result + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) { + if (e.type == "keydown") { + this.repeatOn = false; + this.lastKey = e.keyCode; + } else if (e.type == "keypress") { + if (!this.repeatOn) { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } else if (e.type == "keyup") { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + const newIndex = itemIndex-1; + let focusItem = this.NavPrev(newIndex); + if (focusItem) { + let child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') { // children visible + let n=0; + let tmpElem; + for (;;) { // search for last child + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) { + focusItem = tmpElem; + } else { // found it! + break; + } + n++; + } + } + } + if (focusItem) { + focusItem.focus(); + } else { // return focus to search field + document.getElementById("MSearchField").focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = itemIndex+1; + let focusItem; + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') { // children visible + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } else if (this.lastKey==39) { // Right + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } else if (this.lastKey==37) { // Left + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + if (childIndex>0) { + const newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } else { // already at first child, jump to parent + document.getElementById('Item'+itemIndex).focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = childIndex+1; + let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) { // last child, jump to parent next parent + elem = this.NavNext(itemIndex+1); + } + if (elem) { + elem.focus(); + } + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } +} + +function createResults(resultsPath) { + + function setKeyActions(elem,action) { + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); + } + + function setClassAttr(elem,attr) { + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); + } + + const results = document.getElementById("SRResults"); + results.innerHTML = ''; + searchData.forEach((elem,index) => { + const id = elem[0]; + const srResult = document.createElement('div'); + srResult.setAttribute('id','SR_'+id); + setClassAttr(srResult,'SRResult'); + const srEntry = document.createElement('div'); + setClassAttr(srEntry,'SREntry'); + const srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+index); + setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); + setClassAttr(srLink,'SRSymbol'); + srLink.innerHTML = elem[1][0]; + srEntry.appendChild(srLink); + if (elem[1].length==2) { // single result + srLink.setAttribute('href',resultsPath+elem[1][1][0]); + srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); + if (elem[1][1][1]) { + srLink.setAttribute('target','_parent'); + } else { + srLink.setAttribute('target','_blank'); + } + const srScope = document.createElement('span'); + setClassAttr(srScope,'SRScope'); + srScope.innerHTML = elem[1][1][2]; + srEntry.appendChild(srScope); + } else { // multiple results + srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); + const srChildren = document.createElement('div'); + setClassAttr(srChildren,'SRChildren'); + for (let c=0; c + + + + + + +M5Unit-NFC: src/nfc/crypto/secure_zero.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    secure_zero.hpp File Reference
    +
    +
    + +

    Secure memory wipe helpers. +More...

    +
    #include <cstddef>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    + + + +

    +Functions

    +void m5::nfc::crypto::secure_zero (void *p, const size_t n)
     
    +

    Detailed Description

    +

    Secure memory wipe helpers.

    +
    +
    + + + + diff --git a/secure__zero_8hpp_source.html b/secure__zero_8hpp_source.html new file mode 100644 index 0000000..9f6f269 --- /dev/null +++ b/secure__zero_8hpp_source.html @@ -0,0 +1,142 @@ + + + + + + + +M5Unit-NFC: src/nfc/crypto/secure_zero.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    secure_zero.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    10#pragma once
    +
    11
    +
    12#include <cstddef>
    +
    13
    +
    14namespace m5 {
    +
    15namespace nfc {
    +
    16namespace crypto {
    +
    17
    +
    18inline void secure_zero(void* p, const size_t n)
    +
    19{
    +
    20 if (!p || n == 0) {
    +
    21 return;
    +
    22 }
    +
    23 volatile unsigned char* v = reinterpret_cast<volatile unsigned char*>(p);
    +
    24 for (size_t i = 0; i < n; ++i) {
    +
    25 v[i] = 0;
    +
    26 }
    +
    27}
    +
    28
    +
    29} // namespace crypto
    +
    30} // namespace nfc
    +
    31} // namespace m5
    +
    Top level namespace of M5stack.
    +
    NFC related definitions.
    +
    NFC-V definitions.
    +
    +
    + + + + diff --git a/splitbar.png b/splitbar.png new file mode 100644 index 0000000..fe895f2 Binary files /dev/null and b/splitbar.png differ diff --git a/splitbard.png b/splitbard.png new file mode 100644 index 0000000..8367416 Binary files /dev/null and b/splitbard.png differ diff --git a/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_b-members.html b/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_b-members.html new file mode 100644 index 0000000..3b6cf30 --- /dev/null +++ b/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_b-members.html @@ -0,0 +1,120 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::AdapterST25R3916ForB Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::AdapterST25R3916ForB, including all inherited members.

    + + + + + + + +
    _u (defined in m5::nfc::AdapterST25R3916ForB)m5::nfc::AdapterST25R3916ForB
    AdapterST25R3916ForB(UnitST25R3916 &ref) (defined in m5::nfc::AdapterST25R3916ForB)m5::nfc::AdapterST25R3916ForBinlineexplicit
    max_fifo_depth() const override (defined in m5::nfc::AdapterST25R3916ForB)m5::nfc::AdapterST25R3916ForBinlinevirtual
    receive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms) override (defined in m5::nfc::AdapterST25R3916ForB)m5::nfc::AdapterST25R3916ForB
    transceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms) override (defined in m5::nfc::AdapterST25R3916ForB)m5::nfc::AdapterST25R3916ForB
    transmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms) override (defined in m5::nfc::AdapterST25R3916ForB)m5::nfc::AdapterST25R3916ForB
    +
    + + + + diff --git a/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_b.html b/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_b.html new file mode 100644 index 0000000..b5a4e7d --- /dev/null +++ b/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_b.html @@ -0,0 +1,147 @@ + + + + + + + +M5Unit-NFC: m5::nfc::AdapterST25R3916ForB Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::AdapterST25R3916ForB Struct Referencefinal
    +
    +
    +
    +Inheritance diagram for m5::nfc::AdapterST25R3916ForB:
    +
    +
    + +
    + + + + + + + + + + + + +

    +Public Member Functions

    AdapterST25R3916ForB (UnitST25R3916 &ref)
     
    +virtual uint16_t max_fifo_depth () const override
     
    +bool transceive (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms) override
     
    +bool transmit (const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms) override
     
    +bool receive (uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms) override
     
    + + + +

    +Public Attributes

    +UnitST25R3916_u
     
    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_b.png b/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_b.png new file mode 100644 index 0000000..d83c608 Binary files /dev/null and b/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_b.png differ diff --git a/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_f-members.html b/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_f-members.html new file mode 100644 index 0000000..518e47a --- /dev/null +++ b/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_f-members.html @@ -0,0 +1,118 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::AdapterST25R3916ForF Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::AdapterST25R3916ForF, including all inherited members.

    + + + + + +
    _u (defined in m5::nfc::AdapterST25R3916ForF)m5::nfc::AdapterST25R3916ForF
    AdapterST25R3916ForF(UnitST25R3916 &ref) (defined in m5::nfc::AdapterST25R3916ForF)m5::nfc::AdapterST25R3916ForFinlineexplicit
    max_fifo_depth() const override (defined in m5::nfc::AdapterST25R3916ForF)m5::nfc::AdapterST25R3916ForFinlinevirtual
    transceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms) override (defined in m5::nfc::AdapterST25R3916ForF)m5::nfc::AdapterST25R3916ForFvirtual
    +
    + + + + diff --git a/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_f.html b/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_f.html new file mode 100644 index 0000000..7e72ef4 --- /dev/null +++ b/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_f.html @@ -0,0 +1,141 @@ + + + + + + + +M5Unit-NFC: m5::nfc::AdapterST25R3916ForF Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::AdapterST25R3916ForF Struct Referencefinal
    +
    +
    +
    +Inheritance diagram for m5::nfc::AdapterST25R3916ForF:
    +
    +
    + +
    + + + + + + + + +

    +Public Member Functions

    AdapterST25R3916ForF (UnitST25R3916 &ref)
     
    +virtual uint16_t max_fifo_depth () const override
     
    +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
     
    + + + +

    +Public Attributes

    +UnitST25R3916_u
     
    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_f.png b/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_f.png new file mode 100644 index 0000000..5be2390 Binary files /dev/null and b/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_f.png differ diff --git a/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_v-members.html b/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_v-members.html new file mode 100644 index 0000000..fde9b6c --- /dev/null +++ b/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_v-members.html @@ -0,0 +1,120 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::AdapterST25R3916ForV Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::AdapterST25R3916ForV, including all inherited members.

    + + + + + + + +
    _u (defined in m5::nfc::AdapterST25R3916ForV)m5::nfc::AdapterST25R3916ForV
    AdapterST25R3916ForV(UnitST25R3916 &ref) (defined in m5::nfc::AdapterST25R3916ForV)m5::nfc::AdapterST25R3916ForVinlineexplicit
    max_fifo_depth() const override (defined in m5::nfc::AdapterST25R3916ForV)m5::nfc::AdapterST25R3916ForVinlinevirtual
    receive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms) override (defined in m5::nfc::AdapterST25R3916ForV)m5::nfc::AdapterST25R3916ForVvirtual
    transceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode) override (defined in m5::nfc::AdapterST25R3916ForV)m5::nfc::AdapterST25R3916ForVvirtual
    transmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode) override (defined in m5::nfc::AdapterST25R3916ForV)m5::nfc::AdapterST25R3916ForVvirtual
    +
    + + + + diff --git a/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_v.html b/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_v.html new file mode 100644 index 0000000..8296866 --- /dev/null +++ b/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_v.html @@ -0,0 +1,147 @@ + + + + + + + +M5Unit-NFC: m5::nfc::AdapterST25R3916ForV Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::AdapterST25R3916ForV Struct Referencefinal
    +
    +
    +
    +Inheritance diagram for m5::nfc::AdapterST25R3916ForV:
    +
    +
    + +
    + + + + + + + + + + + + +

    +Public Member Functions

    AdapterST25R3916ForV (UnitST25R3916 &ref)
     
    +virtual uint16_t max_fifo_depth () const override
     
    +virtual bool transceive (uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode) override
     
    +virtual bool transmit (const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode) override
     
    +virtual bool receive (uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms) override
     
    + + + +

    +Public Attributes

    +UnitST25R3916_u
     
    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_v.png b/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_v.png new file mode 100644 index 0000000..5c4f167 Binary files /dev/null and b/structm5_1_1nfc_1_1_adapter_s_t25_r3916_for_v.png differ diff --git a/structm5_1_1nfc_1_1_f_c_p-members.html b/structm5_1_1nfc_1_1_f_c_p-members.html new file mode 100644 index 0000000..9469232 --- /dev/null +++ b/structm5_1_1nfc_1_1_f_c_p-members.html @@ -0,0 +1,119 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::FCP Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::FCP, including all inherited members.

    + + + + + + +
    fidm5::nfc::FCP
    file_descriptorm5::nfc::FCP
    file_sizem5::nfc::FCP
    file_size_tagm5::nfc::FCP
    to_tlv() constm5::nfc::FCPinline
    +
    + + + + diff --git a/structm5_1_1nfc_1_1_f_c_p.html b/structm5_1_1nfc_1_1_f_c_p.html new file mode 100644 index 0000000..816ceb9 --- /dev/null +++ b/structm5_1_1nfc_1_1_f_c_p.html @@ -0,0 +1,179 @@ + + + + + + + +M5Unit-NFC: m5::nfc::FCP Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::FCP Struct Reference
    +
    +
    + +

    File Control Parameters. + More...

    + +

    #include <file_system.hpp>

    + + + + + +

    +Public Member Functions

    std::vector< uint8_t > to_tlv () const
     Build FCP TLV (tag 0x62)
     
    + + + + + + + + + + + + + +

    +Public Attributes

    +uint16_t fid {}
     File ID (FID)
     
    +uint16_t file_size {}
     File size in bytes.
     
    +uint8_t file_descriptor {0x01}
     File descriptor (default: transparent EF)
     
    +uint8_t file_size_tag {0x80}
     File size TLV tag (default: 0x80)
     
    +

    Detailed Description

    +

    File Control Parameters.

    +
    Todo
    Add more item
    +

    Member Function Documentation

    + +

    ◆ to_tlv()

    + +
    +
    + + + + + +
    + + + + + + + +
    std::vector< uint8_t > m5::nfc::FCP::to_tlv () const
    +
    +inline
    +
    + +

    Build FCP TLV (tag 0x62)

    +
    Returns
    Encoded FCP
    + +
    +
    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1_f_c_p.js b/structm5_1_1nfc_1_1_f_c_p.js new file mode 100644 index 0000000..59027ba --- /dev/null +++ b/structm5_1_1nfc_1_1_f_c_p.js @@ -0,0 +1,8 @@ +var structm5_1_1nfc_1_1_f_c_p = +[ + [ "to_tlv", "structm5_1_1nfc_1_1_f_c_p.html#a166ffbcf090d17218dee8049bfd16468", null ], + [ "fid", "structm5_1_1nfc_1_1_f_c_p.html#a49e96cebffbeb575f85c7c0934b35e0b", null ], + [ "file_descriptor", "structm5_1_1nfc_1_1_f_c_p.html#ab543ee3b32ec8a43c41b3ed4307c50dc", null ], + [ "file_size", "structm5_1_1nfc_1_1_f_c_p.html#aa011c00c6d1551c0a57d9094ff807850", null ], + [ "file_size_tag", "structm5_1_1nfc_1_1_f_c_p.html#af5a5d46832dffbb42948b79a6efc26d2", null ] +]; \ No newline at end of file diff --git a/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a-members.html b/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a-members.html new file mode 100644 index 0000000..3eda208 --- /dev/null +++ b/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a-members.html @@ -0,0 +1,138 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::ListenerST25R3916ForA Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::ListenerST25R3916ForA, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    _bitrate (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForA
    _data_flag (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForA
    _layer (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForA
    _receive_bits (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForA
    _u (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForA
    _wakeup (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForA
    get_irq(const uint32_t mask_bits) (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForA
    goto_active() (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForA
    goto_halt() (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForA
    goto_idle() (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForA
    goto_off() (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForA
    goto_ready() (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForA
    goto_state(const EmulationLayerA::State s) (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForA
    is_extra_field() (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForA
    ListenerST25R3916ForA(EmulationLayerA &layer, UnitST25R3916 &ref) (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForAinlineexplicit
    load_config(const m5::nfc::a::PICC &picc) (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForA
    start_emulation(const m5::nfc::a::PICC &picc) override (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForAvirtual
    stop_emulation() overridem5::nfc::ListenerST25R3916ForAvirtual
    transmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms) override (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForAvirtual
    update_active() override (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForAvirtual
    update_halt() override (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForAvirtual
    update_idle() override (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForAvirtual
    update_off() override (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForAvirtual
    update_ready() override (defined in m5::nfc::ListenerST25R3916ForA)m5::nfc::ListenerST25R3916ForAvirtual
    +
    + + + + diff --git a/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a.html b/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a.html new file mode 100644 index 0000000..ac97dd1 --- /dev/null +++ b/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a.html @@ -0,0 +1,227 @@ + + + + + + + +M5Unit-NFC: m5::nfc::ListenerST25R3916ForA Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::ListenerST25R3916ForA Struct Referencefinal
    +
    +
    +
    +Inheritance diagram for m5::nfc::ListenerST25R3916ForA:
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    ListenerST25R3916ForA (EmulationLayerA &layer, UnitST25R3916 &ref)
     
    +virtual bool start_emulation (const m5::nfc::a::PICC &picc) override
     
    virtual bool stop_emulation () override
     
    +virtual bool transmit (const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms) override
     
    +virtual EmulationLayerA::State update_off () override
     
    +virtual EmulationLayerA::State update_idle () override
     
    +virtual EmulationLayerA::State update_ready () override
     
    +virtual EmulationLayerA::State update_active () override
     
    +virtual EmulationLayerA::State update_halt () override
     
    +EmulationLayerA::State goto_state (const EmulationLayerA::State s)
     
    +EmulationLayerA::State goto_off ()
     
    +EmulationLayerA::State goto_idle ()
     
    +EmulationLayerA::State goto_ready ()
     
    +EmulationLayerA::State goto_active ()
     
    +EmulationLayerA::State goto_halt ()
     
    +bool load_config (const m5::nfc::a::PICC &picc)
     
    +uint32_t get_irq (const uint32_t mask_bits)
     
    +bool is_extra_field ()
     
    + + + + + + + + + + + + + +

    +Public Attributes

    +Bitrate _bitrate {Bitrate::Invalid}
     
    +uint32_t _receive_bits {}
     
    +bool _data_flag {}
     
    +bool _wakeup {}
     
    +EmulationLayerA_layer
     
    +UnitST25R3916_u
     
    +

    Member Function Documentation

    + +

    ◆ stop_emulation()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool m5::nfc::ListenerST25R3916ForA::stop_emulation ()
    +
    +overridevirtual
    +
    +

    /*Check if Observation Mode was enabled and disable it on ST25R391x *‍/

    + +
    +
    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a.js b/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a.js new file mode 100644 index 0000000..27ff0c4 --- /dev/null +++ b/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a.js @@ -0,0 +1,4 @@ +var structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a = +[ + [ "stop_emulation", "structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a.html#a242c96ae280a9d827084035edaa6db40", null ] +]; \ No newline at end of file diff --git a/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a.png b/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a.png new file mode 100644 index 0000000..a1dc4d3 Binary files /dev/null and b/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_a.png differ diff --git a/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f-members.html b/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f-members.html new file mode 100644 index 0000000..ff1d726 --- /dev/null +++ b/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f-members.html @@ -0,0 +1,132 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::ListenerST25R3916ForF Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::ListenerST25R3916ForF, including all inherited members.

    + + + + + + + + + + + + + + + + + + + +
    _bitrate (defined in m5::nfc::ListenerST25R3916ForF)m5::nfc::ListenerST25R3916ForF
    _data_flag (defined in m5::nfc::ListenerST25R3916ForF)m5::nfc::ListenerST25R3916ForF
    _layer (defined in m5::nfc::ListenerST25R3916ForF)m5::nfc::ListenerST25R3916ForF
    _u (defined in m5::nfc::ListenerST25R3916ForF)m5::nfc::ListenerST25R3916ForF
    get_irq(const uint32_t mask_bits) (defined in m5::nfc::ListenerST25R3916ForF)m5::nfc::ListenerST25R3916ForF
    goto_communicated() (defined in m5::nfc::ListenerST25R3916ForF)m5::nfc::ListenerST25R3916ForF
    goto_off() (defined in m5::nfc::ListenerST25R3916ForF)m5::nfc::ListenerST25R3916ForF
    goto_selected() (defined in m5::nfc::ListenerST25R3916ForF)m5::nfc::ListenerST25R3916ForF
    goto_state(const EmulationLayerF::State s) (defined in m5::nfc::ListenerST25R3916ForF)m5::nfc::ListenerST25R3916ForF
    is_extra_field() (defined in m5::nfc::ListenerST25R3916ForF)m5::nfc::ListenerST25R3916ForF
    ListenerST25R3916ForF(EmulationLayerF &layer, UnitST25R3916 &ref) (defined in m5::nfc::ListenerST25R3916ForF)m5::nfc::ListenerST25R3916ForFinlineexplicit
    load_config(const m5::nfc::f::PICC &picc) (defined in m5::nfc::ListenerST25R3916ForF)m5::nfc::ListenerST25R3916ForF
    start_emulation(const m5::nfc::f::PICC &picc) override (defined in m5::nfc::ListenerST25R3916ForF)m5::nfc::ListenerST25R3916ForFvirtual
    stop_emulation() overridem5::nfc::ListenerST25R3916ForFvirtual
    transmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms) override (defined in m5::nfc::ListenerST25R3916ForF)m5::nfc::ListenerST25R3916ForFvirtual
    update_communicated() override (defined in m5::nfc::ListenerST25R3916ForF)m5::nfc::ListenerST25R3916ForFvirtual
    update_off() override (defined in m5::nfc::ListenerST25R3916ForF)m5::nfc::ListenerST25R3916ForFvirtual
    update_selected() override (defined in m5::nfc::ListenerST25R3916ForF)m5::nfc::ListenerST25R3916ForFvirtual
    +
    + + + + diff --git a/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f.html b/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f.html new file mode 100644 index 0000000..19565fa --- /dev/null +++ b/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f.html @@ -0,0 +1,209 @@ + + + + + + + +M5Unit-NFC: m5::nfc::ListenerST25R3916ForF Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::ListenerST25R3916ForF Struct Referencefinal
    +
    +
    +
    +Inheritance diagram for m5::nfc::ListenerST25R3916ForF:
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    ListenerST25R3916ForF (EmulationLayerF &layer, UnitST25R3916 &ref)
     
    +virtual bool start_emulation (const m5::nfc::f::PICC &picc) override
     
    virtual bool stop_emulation () override
     
    +virtual bool transmit (const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms) override
     
    +virtual EmulationLayerF::State update_off () override
     
    +virtual EmulationLayerF::State update_communicated () override
     
    +virtual EmulationLayerF::State update_selected () override
     
    +EmulationLayerF::State goto_state (const EmulationLayerF::State s)
     
    +EmulationLayerF::State goto_off ()
     
    +EmulationLayerF::State goto_communicated ()
     
    +EmulationLayerF::State goto_selected ()
     
    +bool load_config (const m5::nfc::f::PICC &picc)
     
    +uint32_t get_irq (const uint32_t mask_bits)
     
    +bool is_extra_field ()
     
    + + + + + + + + + +

    +Public Attributes

    +Bitrate _bitrate {Bitrate::Invalid}
     
    +bool _data_flag {}
     
    +EmulationLayerF_layer
     
    +UnitST25R3916_u
     
    +

    Member Function Documentation

    + +

    ◆ stop_emulation()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool m5::nfc::ListenerST25R3916ForF::stop_emulation ()
    +
    +overridevirtual
    +
    +

    /*Check if Observation Mode was enabled and disable it on ST25R391x *‍/

    + +
    +
    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f.js b/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f.js new file mode 100644 index 0000000..c3ff797 --- /dev/null +++ b/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f.js @@ -0,0 +1,4 @@ +var structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f = +[ + [ "stop_emulation", "structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f.html#a5bee1c348c5bded09f8b5d9e41903632", null ] +]; \ No newline at end of file diff --git a/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f.png b/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f.png new file mode 100644 index 0000000..2a51d18 Binary files /dev/null and b/structm5_1_1nfc_1_1_listener_s_t25_r3916_for_f.png differ diff --git a/structm5_1_1nfc_1_1_poller_s_t25_r3916_for_a-members.html b/structm5_1_1nfc_1_1_poller_s_t25_r3916_for_a-members.html new file mode 100644 index 0000000..b4dd739 --- /dev/null +++ b/structm5_1_1nfc_1_1_poller_s_t25_r3916_for_a-members.html @@ -0,0 +1,127 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::PollerST25R3916ForA Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::PollerST25R3916ForA, including all inherited members.

    + + + + + + + + + + + + + + +
    _u (defined in m5::nfc::PollerST25R3916ForA)m5::nfc::PollerST25R3916ForA
    activate(const m5::nfc::a::PICC &picc) override (defined in m5::nfc::PollerST25R3916ForA)m5::nfc::PollerST25R3916ForAvirtual
    hlt() override (defined in m5::nfc::PollerST25R3916ForA)m5::nfc::PollerST25R3916ForAvirtual
    max_fifo_depth() const override (defined in m5::nfc::PollerST25R3916ForA)m5::nfc::PollerST25R3916ForAinlinevirtual
    mifare_classic_authenticate(const bool auth_a, const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key) override (defined in m5::nfc::PollerST25R3916ForA)m5::nfc::PollerST25R3916ForAvirtual
    mifare_classic_value_block(const m5::nfc::a::Command cmd, const uint8_t block, const uint32_t arg=0) override (defined in m5::nfc::PollerST25R3916ForA)m5::nfc::PollerST25R3916ForAvirtual
    nfca_read_block(uint8_t rx[16], const uint8_t addr) override (defined in m5::nfc::PollerST25R3916ForA)m5::nfc::PollerST25R3916ForAvirtual
    nfca_write_block(const uint8_t addr, const uint8_t tx[16]) override (defined in m5::nfc::PollerST25R3916ForA)m5::nfc::PollerST25R3916ForAvirtual
    PollerST25R3916ForA(UnitST25R3916 &ref) (defined in m5::nfc::PollerST25R3916ForA)m5::nfc::PollerST25R3916ForAinlineexplicit
    request(uint16_t &atqa) override (defined in m5::nfc::PollerST25R3916ForA)m5::nfc::PollerST25R3916ForAvirtual
    select(m5::nfc::a::PICC &picc) override (defined in m5::nfc::PollerST25R3916ForA)m5::nfc::PollerST25R3916ForAvirtual
    transceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms) override (defined in m5::nfc::PollerST25R3916ForA)m5::nfc::PollerST25R3916ForAvirtual
    wakeup(uint16_t &atqa) override (defined in m5::nfc::PollerST25R3916ForA)m5::nfc::PollerST25R3916ForAvirtual
    +
    + + + + diff --git a/structm5_1_1nfc_1_1_poller_s_t25_r3916_for_a.html b/structm5_1_1nfc_1_1_poller_s_t25_r3916_for_a.html new file mode 100644 index 0000000..391c29b --- /dev/null +++ b/structm5_1_1nfc_1_1_poller_s_t25_r3916_for_a.html @@ -0,0 +1,168 @@ + + + + + + + +M5Unit-NFC: m5::nfc::PollerST25R3916ForA Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::PollerST25R3916ForA Struct Referencefinal
    +
    +
    +
    +Inheritance diagram for m5::nfc::PollerST25R3916ForA:
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PollerST25R3916ForA (UnitST25R3916 &ref)
     
    +virtual uint16_t max_fifo_depth () const override
     
    +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
     
    +virtual bool request (uint16_t &atqa) override
     
    +virtual bool wakeup (uint16_t &atqa) override
     
    +virtual bool select (m5::nfc::a::PICC &picc) override
     
    +virtual bool activate (const m5::nfc::a::PICC &picc) override
     
    +virtual bool hlt () override
     
    +virtual bool nfca_read_block (uint8_t rx[16], const uint8_t addr) override
     
    +virtual bool nfca_write_block (const uint8_t addr, const uint8_t tx[16]) override
     
    +virtual bool mifare_classic_authenticate (const bool auth_a, const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key) override
     
    +virtual bool mifare_classic_value_block (const m5::nfc::a::Command cmd, const uint8_t block, const uint32_t arg=0) override
     
    + + + +

    +Public Attributes

    +UnitST25R3916_u
     
    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1_poller_s_t25_r3916_for_a.png b/structm5_1_1nfc_1_1_poller_s_t25_r3916_for_a.png new file mode 100644 index 0000000..903d421 Binary files /dev/null and b/structm5_1_1nfc_1_1_poller_s_t25_r3916_for_a.png differ diff --git a/structm5_1_1nfc_1_1a_1_1_a_t_s-members.html b/structm5_1_1nfc_1_1a_1_1_a_t_s-members.html new file mode 100644 index 0000000..164a9fb --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1_a_t_s-members.html @@ -0,0 +1,135 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::a::ATS Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::a::ATS, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + +
    fsci() const (defined in m5::nfc::a::ATS)m5::nfc::a::ATSinline
    fwi() const (defined in m5::nfc::a::ATS)m5::nfc::a::ATSinline
    header (defined in m5::nfc::a::ATS)m5::nfc::a::ATS
    historicalm5::nfc::a::ATS
    historical_lenm5::nfc::a::ATS
    maximumBitrateDR() const (defined in m5::nfc::a::ATS)m5::nfc::a::ATSinline
    maximumBitrateDS() const (defined in m5::nfc::a::ATS)m5::nfc::a::ATSinline
    sfgi() const (defined in m5::nfc::a::ATS)m5::nfc::a::ATSinline
    sfgt_fc() const (defined in m5::nfc::a::ATS)m5::nfc::a::ATSinline
    sfgt_ms(const float fc) const (defined in m5::nfc::a::ATS)m5::nfc::a::ATSinline
    supportsAsymmetricSpeed() const (defined in m5::nfc::a::ATS)m5::nfc::a::ATSinline
    supportsCID() const (defined in m5::nfc::a::ATS)m5::nfc::a::ATSinline
    supportsNAD() const (defined in m5::nfc::a::ATS)m5::nfc::a::ATSinline
    T0m5::nfc::a::ATS
    TAm5::nfc::a::ATS
    TBm5::nfc::a::ATS
    TCm5::nfc::a::ATS
    TLm5::nfc::a::ATS
    validTA() const (defined in m5::nfc::a::ATS)m5::nfc::a::ATSinline
    validTB() const (defined in m5::nfc::a::ATS)m5::nfc::a::ATSinline
    validTC() const (defined in m5::nfc::a::ATS)m5::nfc::a::ATSinline
    +
    + + + + diff --git a/structm5_1_1nfc_1_1a_1_1_a_t_s.html b/structm5_1_1nfc_1_1a_1_1_a_t_s.html new file mode 100644 index 0000000..c7ca30c --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1_a_t_s.html @@ -0,0 +1,210 @@ + + + + + + + +M5Unit-NFC: m5::nfc::a::ATS Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::a::ATS Struct Reference
    +
    +
    + +

    Answer to request. + More...

    + +

    #include <nfca.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +bool validTA () const
     
    +bool validTB () const
     
    +bool validTC () const
     
    +uint8_t fsci () const
     
    +Bitrate maximumBitrateDR () const
     
    +Bitrate maximumBitrateDS () const
     
    +bool supportsAsymmetricSpeed () const
     
    +uint8_t fwi () const
     
    +uint8_t sfgi () const
     
    +uint32_t sfgt_fc () const
     
    +uint32_t sfgt_ms (const float fc) const
     
    +bool supportsNAD () const
     
    +bool supportsCID () const
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +union { 
     
    +   uint8_t   header [5] {} 
     
    +   struct { 
     
    +      uint8_t   TL 
     Length byte.
     
    +      uint8_t   T0 
     Format byte.
     
    +      uint8_t   TA 
     Interface DS/DR.
     
    +      uint8_t   TB 
     Interface FWI/SFGI.
     
    +      uint8_t   TC 
     Code protocol options.
     
       }  
     
    };  
     
    +std::array< uint8_t, 32 > historical {}
     Historical bytes(optional)
     
    +uint8_t historical_len {}
     Length of historical bytes.
     
    +

    Detailed Description

    +

    Answer to request.

    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1a_1_1_a_t_s.js b/structm5_1_1nfc_1_1a_1_1_a_t_s.js new file mode 100644 index 0000000..5059bf2 --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1_a_t_s.js @@ -0,0 +1,10 @@ +var structm5_1_1nfc_1_1a_1_1_a_t_s = +[ + [ "historical", "structm5_1_1nfc_1_1a_1_1_a_t_s.html#a6aef2d0ecc433934d2bdaf9baa87e1ca", null ], + [ "historical_len", "structm5_1_1nfc_1_1a_1_1_a_t_s.html#a417bdba772f804afba6cb722d7857298", null ], + [ "T0", "structm5_1_1nfc_1_1a_1_1_a_t_s.html#aac7db3aa00bb7e1fc1ce0d0328b5c629", null ], + [ "TA", "structm5_1_1nfc_1_1a_1_1_a_t_s.html#a39ce056c762c05ad369fbf223c2d2a62", null ], + [ "TB", "structm5_1_1nfc_1_1a_1_1_a_t_s.html#abfb034e28bc33ffd205caee37b2df67b", null ], + [ "TC", "structm5_1_1nfc_1_1a_1_1_a_t_s.html#ab0dde24942d4ce8c6e027703c8c0f5cc", null ], + [ "TL", "structm5_1_1nfc_1_1a_1_1_a_t_s.html#a88b4f44f50c94c6ce8778fbea194222e", null ] +]; \ No newline at end of file diff --git a/structm5_1_1nfc_1_1a_1_1_p_i_c_c-members.html b/structm5_1_1nfc_1_1a_1_1_p_i_c_c-members.html new file mode 100644 index 0000000..a09b758 --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1_p_i_c_c-members.html @@ -0,0 +1,157 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::a::PICC Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::a::PICC, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    _pad (defined in m5::nfc::a::PICC)m5::nfc::a::PICC
    atqam5::nfc::a::PICC
    atsm5::nfc::a::PICC
    blocksm5::nfc::a::PICC
    canFastRead() constm5::nfc::a::PICCinline
    emulate(const Type t, const uint8_t *uid, const uint8_t uid_len)m5::nfc::a::PICC
    fileSystemFeature() constm5::nfc::a::PICCinline
    firstUserBlock() constm5::nfc::a::PICCinline
    isFileSystemFile() constm5::nfc::a::PICCinline
    isFileSystemMemory() constm5::nfc::a::PICCinline
    isISO14443_4() constm5::nfc::a::PICCinline
    isMifare() constm5::nfc::a::PICCinline
    isMifareClassic() constm5::nfc::a::PICCinline
    isMifareClassicCompatible() constm5::nfc::a::PICCinline
    isMifareDESFire() constm5::nfc::a::PICCinline
    isMifarePlus() constm5::nfc::a::PICCinline
    isMifarePlusS() constm5::nfc::a::PICCinline
    isMifarePlusSE() constm5::nfc::a::PICCinline
    isMifarePlusX() constm5::nfc::a::PICCinline
    isMifareUltralight() constm5::nfc::a::PICCinline
    isNTAG2() constm5::nfc::a::PICCinline
    isST25TA() constm5::nfc::a::PICCinline
    isUserBlock(const uint8_t block) constm5::nfc::a::PICCinline
    lastUserBlock() constm5::nfc::a::PICCinline
    nfcForumTagType() constm5::nfc::a::PICCinline
    requiresPlusSL3PlainRead() constm5::nfc::a::PICCinline
    sakm5::nfc::a::PICC
    security_levelm5::nfc::a::PICC
    sizem5::nfc::a::PICC
    sub_typem5::nfc::a::PICC
    sub_type_desfirem5::nfc::a::PICC
    sub_type_plusm5::nfc::a::PICC
    supportsNDEF() constm5::nfc::a::PICCinline
    supportsNFC() constm5::nfc::a::PICCinline
    tail4(uint8_t buf[4]) constm5::nfc::a::PICCinline
    totalSize() constm5::nfc::a::PICCinline
    typem5::nfc::a::PICC
    typeAsString() constm5::nfc::a::PICC
    uidm5::nfc::a::PICC
    uidAsString() constm5::nfc::a::PICC
    unitSize() constm5::nfc::a::PICCinline
    userAreaSize() constm5::nfc::a::PICCinline
    valid() constm5::nfc::a::PICCinline
    +
    + + + + diff --git a/structm5_1_1nfc_1_1a_1_1_p_i_c_c.html b/structm5_1_1nfc_1_1a_1_1_p_i_c_c.html new file mode 100644 index 0000000..d6cc049 --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1_p_i_c_c.html @@ -0,0 +1,367 @@ + + + + + + + +M5Unit-NFC: m5::nfc::a::PICC Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::a::PICC Struct Reference
    +
    +
    + +

    PICC for NFC-A. + More...

    + +

    #include <nfca.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +bool valid () const
     Valid?
     
    +void tail4 (uint8_t buf[4]) const
     Retrieve the last 4 bytes of UID.
     
    +std::string uidAsString () const
     Gets the uid string.
     
    +std::string typeAsString () const
     Gets the type string.
     
    bool emulate (const Type t, const uint8_t *uid, const uint8_t uid_len)
     Emulation settings.
     
    Type
    +bool isMifare () const
     Is MIFARE?
     
    +bool isMifareClassic () const
     Is MIFARE classic? (include Plus compatible SL)
     
    +bool isMifareUltralight () const
     Is MIFARE Ultralight series?
     
    +bool isMifarePlus () const
     Is MIFARE Plus?
     
    +bool isMifarePlusX () const
     Is MIFARE Plus X?
     
    +bool isMifarePlusS () const
     Is MIFARE Plus S?
     
    +bool isMifarePlusSE () const
     Is MIFARE Plus SE?
     
    +bool requiresPlusSL3PlainRead () const
     Requires plain mode for SL3 read? (Plus S and SE don't support encrypted read)
     
    +bool isMifareClassicCompatible () const
     Is MIFARE?
     
    +bool isMifareDESFire () const
     Is MIFARE DESFire? (include Light)
     
    +bool isNTAG2 () const
     Is NTAG?
     
    +bool isISO14443_4 () const
     Is ISO1443-4?
     
    +bool isST25TA () const
     Is ST25TA?
     
    Information
    +uint16_t totalSize () const
     Total size.
     
    +uint16_t userAreaSize () const
     Total user area size.
     
    +uint16_t unitSize () const
     Read/Write unit size.
     
    +uint16_t firstUserBlock () const
     Gets the first user block/page address.
     
    +uint16_t lastUserBlock () const
     Total size.
     
    +bool isUserBlock (const uint8_t block) const
     Is user block?
     
    Capability
    +bool supportsNFC () const
     Supports NFC?
     
    +bool supportsNDEF () const
     Supports NDEF?
     
    +NFCForumTag nfcForumTagType () const
     NFC ForumTag.
     
    +bool canFastRead () const
     Can use FAST_READ command?
     
    +file_system_feature_t fileSystemFeature () const
     File system features.
     
    +bool isFileSystemMemory () const
     Supports NFC?
     
    +bool isFileSystemFile () const
     Supports NFC?
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +uint8_t _pad {}
     
    +Type type {}
     PICC type.
     
    +uint8_t sak {}
     The SAK (Select acknowledge) returned from the PICC after successful selection.
     
    +uint8_t size {}
     UID size 4, 7 or 10.
     
    +uint8_t uid [10] {}
     uid (Valid up to the value of size)
     
    +uint16_t atqa {}
     ATQA.
     
    +uint16_t blocks {}
     Number of the blocks or pages.
     
    ATS ats {}
     
    +union { 
     
    +   uint8_t   sub_type {} 
     uint8_t access
     
    +   SubTypePlus   sub_type_plus 
     For Plus.
     
    +   SubTypeDESFire   sub_type_desfire 
     For DESFire.
     
    };  
     SubType for Plus/DESFire;.
     
    +union { 
     
    +   uint8_t   security_level {} 
     Security level for Plus.
     
    };  
     Optional information.
     
    +

    Detailed Description

    +

    PICC for NFC-A.

    +

    Member Function Documentation

    + +

    ◆ emulate()

    + +
    +
    + + + + + + + + + + + + + + + + +
    bool m5::nfc::a::PICC::emulate (const Type t,
    const uint8_t * uid,
    const uint8_t uid_len )
    +
    + +

    Emulation settings.

    +
    Parameters
    + + + + +
    tType
    uidUID
    uid_lenUID length (4,7,10)
    +
    +
    +
    Returns
    True if successful
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ ats

    + +
    +
    + + + + +
    ATS m5::nfc::a::PICC::ats {}
    +
    +

    RATS for ISO 14443-4

    + +
    +
    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1a_1_1_p_i_c_c.js b/structm5_1_1nfc_1_1a_1_1_p_i_c_c.js new file mode 100644 index 0000000..a0b2f0b --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1_p_i_c_c.js @@ -0,0 +1,45 @@ +var structm5_1_1nfc_1_1a_1_1_p_i_c_c = +[ + [ "canFastRead", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#aeb26679f8fde4dab879c1584dc08a9ec", null ], + [ "emulate", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a8e148e1ece9558110be9723557ab9984", null ], + [ "fileSystemFeature", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a0de7a89418eff85bd4bb791046d64e83", null ], + [ "firstUserBlock", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a74c5f76b9399c37a5a14d936d353429b", null ], + [ "isFileSystemFile", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a0f3383ce7c3852a045c2bf31101767cd", null ], + [ "isFileSystemMemory", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a3a9e7c3c8284f0470fc6d28a9b0b1bb7", null ], + [ "isISO14443_4", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ac177ad2e1fb7b4a409d1426d682105bd", null ], + [ "isMifare", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a5116b9ad475f7af0ec25cc4b66a5810b", null ], + [ "isMifareClassic", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a21fcd6de5187d4a0a89fae5b10f76ad8", null ], + [ "isMifareClassicCompatible", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a508df2de55b8c4ea57b32079ce272a48", null ], + [ "isMifareDESFire", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ad0673467160266853fe627752b66c320", null ], + [ "isMifarePlus", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ac576c8e46ed249dafeee13a87aaceffb", null ], + [ "isMifarePlusS", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a99c9f87543996a12a39173dfb34edfdd", null ], + [ "isMifarePlusSE", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a542372967ed8d66b81e516a577c05ffd", null ], + [ "isMifarePlusX", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#abc2eb6ac544e02926b29b1cf83448f39", null ], + [ "isMifareUltralight", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a8f0546bace218cbda64584054e5863db", null ], + [ "isNTAG2", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a921b4be25c7923c4b7f68351d26cf734", null ], + [ "isST25TA", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a6b515216b97bd8384aac681c0cc96bea", null ], + [ "isUserBlock", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ad40b59ec2192f8b801bbce3753398c28", null ], + [ "lastUserBlock", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a3a89f0ac9f0e12dabd86b4cd45d760de", null ], + [ "nfcForumTagType", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#aed933bf1d35a885069480677e64fdb7c", null ], + [ "requiresPlusSL3PlainRead", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a9e70b140d26dd6edd723e6831153c798", null ], + [ "supportsNDEF", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#aac42c420ff4003971cd9b97734300cdd", null ], + [ "supportsNFC", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a13e5f8003b32199e33633f2e7959ad5a", null ], + [ "tail4", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a77112543127cf68a1d6ae55bb32dddc6", null ], + [ "totalSize", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#aad93bf88a9b215b3f332598cddc0d845", null ], + [ "typeAsString", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a5b8d16fa65412e2ff95e3d54e4c8fb51", null ], + [ "uidAsString", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#aa76b3265d8c81ffbb94ef3552fc3d9c2", null ], + [ "unitSize", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a7856eef603d29b83e27ffd42a6b8e145", null ], + [ "userAreaSize", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a13570108ce5e10a9f91495c254c5156d", null ], + [ "valid", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a6332d499b3dd5c2c5c1d2bc8e4ae812b", null ], + [ "atqa", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a1a157206c1e284f35800957be98f92fa", null ], + [ "ats", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a68d17440a48d97f25290999c8fdc6840", null ], + [ "blocks", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a902e293ed65336d8da47cfa75426c9c6", null ], + [ "sak", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a037deab28cf7d25627502f33a1324c60", null ], + [ "security_level", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a5c796f74a22e9f7fa2b1dfd33d1ef04a", null ], + [ "size", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a31e8276c30c6254efd6db9dd8be2a2ed", null ], + [ "sub_type", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ac38cd85467e9116e07f3a585ef47f61c", null ], + [ "sub_type_desfire", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ac36e07ce6857bf9473a1d03691b2f48b", null ], + [ "sub_type_plus", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a8cfbe1ee998f679f7fa70b388bc43565", null ], + [ "type", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ada7c2c38321cb04221fec20dc2f18313", null ], + [ "uid", "structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#ab8f56c8ab8b31cfaada10cf58cb6777a", null ] +]; \ No newline at end of file diff --git a/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context-members.html b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context-members.html new file mode 100644 index 0000000..c0668fb --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context-members.html @@ -0,0 +1,118 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::a::mifare::desfire::Ev2Context Member List
    +
    + +
    + + + + diff --git a/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.html b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.html new file mode 100644 index 0000000..74dc103 --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.html @@ -0,0 +1,142 @@ + + + + + + + +M5Unit-NFC: m5::nfc::a::mifare::desfire::Ev2Context Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::a::mifare::desfire::Ev2Context Struct Reference
    +
    +
    + +

    Session context for EV2 secure messaging. + More...

    + +

    #include <desfire_file_system.hpp>

    + + + + + + + + + + + + + + +

    +Public Attributes

    +uint8_t ti [4] {}
     Transaction Identifier.
     
    +uint16_t cmd_ctr {}
     Command Counter.
     
    +uint8_t ses_enc_key [16] {}
     Session ENC key.
     
    +uint8_t ses_mac_key [16] {}
     Session MAC key.
     
    +

    Detailed Description

    +

    Session context for EV2 secure messaging.

    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.js b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.js new file mode 100644 index 0000000..28712cd --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.js @@ -0,0 +1,7 @@ +var structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context = +[ + [ "cmd_ctr", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.html#a3ea99289cfb114a546654344323e5212", null ], + [ "ses_enc_key", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.html#a49c7fbe792521b030aa55f74368304e1", null ], + [ "ses_mac_key", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.html#a09912df153379313310f709203ed750f", null ], + [ "ti", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ev2_context.html#a4eb47e559ae1ad74b76facc5c377dcc6", null ] +]; \ No newline at end of file diff --git a/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename-members.html b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename-members.html new file mode 100644 index 0000000..9f4be38 --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename-members.html @@ -0,0 +1,117 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::a::mifare::desfire::FileRename Member List
    +
    + +
    + + + + diff --git a/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename.html b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename.html new file mode 100644 index 0000000..8e401d1 --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename.html @@ -0,0 +1,138 @@ + + + + + + + +M5Unit-NFC: m5::nfc::a::mifare::desfire::FileRename Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::a::mifare::desfire::FileRename Struct Reference
    +
    +
    + +

    File renaming parameters for DESFire Light SetConfiguration. + More...

    + +

    #include <desfire_file_system.hpp>

    + + + + + + + + + + + +

    +Public Attributes

    +uint8_t old_file_no {}
     Current file number.
     
    +uint8_t new_file_no {}
     New file number.
     
    +uint16_t new_file_id {}
     New ISO File ID (LSB first in command)
     
    +

    Detailed Description

    +

    File renaming parameters for DESFire Light SetConfiguration.

    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename.js b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename.js new file mode 100644 index 0000000..542e316 --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename.js @@ -0,0 +1,6 @@ +var structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename = +[ + [ "new_file_id", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename.html#a07ce29cbaba0b257bb68b91d70121b45", null ], + [ "new_file_no", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename.html#aae67c09f69a3c885f2c43422bb45194a", null ], + [ "old_file_no", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_rename.html#ab49c910280d5e9aca2c8a2846117f11b", null ] +]; \ No newline at end of file diff --git a/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_settings-members.html b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_settings-members.html new file mode 100644 index 0000000..9e78434 --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_settings-members.html @@ -0,0 +1,118 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::a::mifare::desfire::FileSettings Member List
    +
    + +
    + + + + diff --git a/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_settings.html b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_settings.html new file mode 100644 index 0000000..3205ff3 --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_file_settings.html @@ -0,0 +1,138 @@ + + + + + + + +M5Unit-NFC: m5::nfc::a::mifare::desfire::FileSettings Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::a::mifare::desfire::FileSettings Struct Reference
    +
    +
    + +

    DESFire file settings (minimal fields for StdDataFile) + More...

    + +

    #include <desfire_file_system.hpp>

    + + + + + + + + + + +

    +Public Attributes

    +uint8_t file_type {}
     
    +uint8_t comm_mode {}
     
    +uint16_t access_rights {}
     
    +uint32_t file_size {}
     
    +

    Detailed Description

    +

    DESFire file settings (minimal fields for StdDataFile)

    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options-members.html b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options-members.html new file mode 100644 index 0000000..7a3d0c7 --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options-members.html @@ -0,0 +1,127 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html new file mode 100644 index 0000000..f1d1cd0 --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html @@ -0,0 +1,197 @@ + + + + + + + +M5Unit-NFC: m5::nfc::a::mifare::desfire::NdefFormatOptions Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::a::mifare::desfire::NdefFormatOptions Struct Reference
    +
    +
    + +

    Options for formatting DESFire as Type4 NDEF. + More...

    + +

    #include <desfire_file_system.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +m5::nfc::ndef::type4::CapabilityContainer cc
     CC contents.
     
    uint8_t aid [3]
     NDEF Tag Application AID.
     
    +uint8_t cc_file_no {m5::nfc::a::mifare::desfire::DESFIRE_CC_FILE_NO}
     CC file number (DESFire)
     
    +uint8_t ndef_file_no {m5::nfc::a::mifare::desfire::DESFIRE_NDEF_FILE_NO}
     NDEF file number (DESFire)
     
    +uint16_t cc_file_size {0x000F}
     CC file size (bytes)
     
    +uint16_t ndef_file_size {2048}
     NDEF file size (bytes)
     
    +uint8_t comm_mode {0x00}
     Plain communication.
     
    +uint16_t access_rights {0xEEEE}
     DESFire access rights.
     
    +uint8_t key_settings1 {0x09}
     AN11004: Create/Delete requires auth, Get* requires auth.
     
    +uint8_t key_settings2 {0x21}
     ISO FID support(bit5) + NumKeys=1 + DES/3DES.
     
    +const uint8_t * picc_master_key {nullptr}
     DES/3DES master key (PICC), or nullptr to skip auth.
     
    +const uint8_t * app_master_key {nullptr}
     DES/3DES master key (App), or nullptr to skip auth.
     
    +AuthMode auth_mode {AuthMode::Auto}
     Authentication mode.
     
    +

    Detailed Description

    +

    Options for formatting DESFire as Type4 NDEF.

    +

    Member Data Documentation

    + +

    ◆ aid

    + +
    +
    + + + + +
    uint8_t m5::nfc::a::mifare::desfire::NdefFormatOptions::aid[3]
    +
    +Initial value: +

    NDEF Tag Application AID.

    + +
    +
    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.js b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.js new file mode 100644 index 0000000..a0a7b08 --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.js @@ -0,0 +1,16 @@ +var structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options = +[ + [ "access_rights", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#ade79b7a85ce77945160f292cfb6ddf3e", null ], + [ "aid", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#a19016341f9f07f15b653b46fbcbef4ff", null ], + [ "app_master_key", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#a54c42690bb99589dfc2afe2a7a68f7d4", null ], + [ "auth_mode", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#abf82006c53af7a40aafb1675c93e7d28", null ], + [ "cc", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#ae82aa1845d65b2ed1a1c4b0a0b55f701", null ], + [ "cc_file_no", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#af2ec02f3700dea4a2ac1100e359268bc", null ], + [ "cc_file_size", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#ad729145c078d56c3d450c5cd793f76f2", null ], + [ "comm_mode", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#a67e81fc849ac63494f8192e9c3593c44", null ], + [ "key_settings1", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#a01ec5ab667daa4c7a6ba34e656c0a5e8", null ], + [ "key_settings2", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#ae7a773580607eadcca503bd8a10a3724", null ], + [ "ndef_file_no", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#aeeddf954a83b9e560020d75ca45ba0f5", null ], + [ "ndef_file_size", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#a9264ee8dc52c9f803d39af55ca08eff2", null ], + [ "picc_master_key", "structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1_ndef_format_options.html#aa7685c814ba73c1b407f71a848f081ef", null ] +]; \ No newline at end of file diff --git a/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1desfire__aid__t-members.html b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1desfire__aid__t-members.html new file mode 100644 index 0000000..8d86f6e --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1desfire__aid__t-members.html @@ -0,0 +1,119 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::a::mifare::desfire::desfire_aid_t Member List
    +
    + +
    + + + + diff --git a/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1desfire__aid__t.html b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1desfire__aid__t.html new file mode 100644 index 0000000..04be628 --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1mifare_1_1desfire_1_1desfire__aid__t.html @@ -0,0 +1,145 @@ + + + + + + + +M5Unit-NFC: m5::nfc::a::mifare::desfire::desfire_aid_t Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::a::mifare::desfire::desfire_aid_t Struct Reference
    +
    +
    + +

    24bit Application ID + More...

    + +

    #include <desfire_file_system.hpp>

    + + + + + + + + +

    +Public Member Functions

    +constexpr uint32_t aid24 () const noexcept
     
    +constexpr const uint8_t * data () const noexcept
     
    operator uint32_t () const noexcept
     
    + + + + + +

    +Public Attributes

    +uint8_t aid [3] {}
     
    +uint8_t _pad {}
     
    +

    Detailed Description

    +

    24bit Application ID

    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1a_1_1st25ta_1_1_system_file-members.html b/structm5_1_1nfc_1_1a_1_1st25ta_1_1_system_file-members.html new file mode 100644 index 0000000..694f276 --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1st25ta_1_1_system_file-members.html @@ -0,0 +1,116 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::a::st25ta::SystemFile Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::a::st25ta::SystemFile, including all inherited members.

    + + + +
    block (defined in m5::nfc::a::st25ta::SystemFile)m5::nfc::a::st25ta::SystemFile
    type() const (defined in m5::nfc::a::st25ta::SystemFile)m5::nfc::a::st25ta::SystemFileinline
    +
    + + + + diff --git a/structm5_1_1nfc_1_1a_1_1st25ta_1_1_system_file.html b/structm5_1_1nfc_1_1a_1_1st25ta_1_1_system_file.html new file mode 100644 index 0000000..dbc0e5e --- /dev/null +++ b/structm5_1_1nfc_1_1a_1_1st25ta_1_1_system_file.html @@ -0,0 +1,136 @@ + + + + + + + +M5Unit-NFC: m5::nfc::a::st25ta::SystemFile Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::a::st25ta::SystemFile Struct Reference
    +
    +
    + +

    ST25TA series system file. + More...

    + +

    #include <nfca.hpp>

    + + + + +

    +Public Member Functions

    +Type type () const
     
    + + + +

    +Public Attributes

    +uint8_t block [18] {}
     
    +

    Detailed Description

    +

    ST25TA series system file.

    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1apdu_1_1_t_l_v-members.html b/structm5_1_1nfc_1_1apdu_1_1_t_l_v-members.html new file mode 100644 index 0000000..d6ea365 --- /dev/null +++ b/structm5_1_1nfc_1_1apdu_1_1_t_l_v-members.html @@ -0,0 +1,120 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::apdu::TLV Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::apdu::TLV, including all inherited members.

    + + + + + + + +
    is_constructed() const (defined in m5::nfc::apdu::TLV)m5::nfc::apdu::TLVinline
    is_primitive() const (defined in m5::nfc::apdu::TLV)m5::nfc::apdu::TLVinline
    lenm5::nfc::apdu::TLV
    tagm5::nfc::apdu::TLV
    tag_lenm5::nfc::apdu::TLV
    vm5::nfc::apdu::TLV
    +
    + + + + diff --git a/structm5_1_1nfc_1_1apdu_1_1_t_l_v.html b/structm5_1_1nfc_1_1apdu_1_1_t_l_v.html new file mode 100644 index 0000000..77608c1 --- /dev/null +++ b/structm5_1_1nfc_1_1apdu_1_1_t_l_v.html @@ -0,0 +1,152 @@ + + + + + + + +M5Unit-NFC: m5::nfc::apdu::TLV Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::apdu::TLV Struct Reference
    +
    +
    + +

    TLV element. + More...

    + +

    #include <apdu.hpp>

    + + + + + + +

    +Public Member Functions

    +bool is_constructed () const
     
    +bool is_primitive () const
     
    + + + + + + + + + + + + + +

    +Public Attributes

    +uint32_t tag {}
     T (Tag)
     
    +uint32_t len {}
     L (length)
     
    +const uint8_t * v {}
     V.
     
    +uint8_t tag_len {}
     Tag length.
     
    +

    Detailed Description

    +

    TLV element.

    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1apdu_1_1_t_l_v.js b/structm5_1_1nfc_1_1apdu_1_1_t_l_v.js new file mode 100644 index 0000000..1b3510c --- /dev/null +++ b/structm5_1_1nfc_1_1apdu_1_1_t_l_v.js @@ -0,0 +1,7 @@ +var structm5_1_1nfc_1_1apdu_1_1_t_l_v = +[ + [ "len", "structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#a23282914a0c23b080895fb06291de1aa", null ], + [ "tag", "structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#ac1307ea0301b70d618bd97927c9bf5ce", null ], + [ "tag_len", "structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#a6d0ee1d7ab0eb35aeaa7e34c22f4fa97", null ], + [ "v", "structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#a62f5cacf0a1d57d2e0b0f5c328755697", null ] +]; \ No newline at end of file diff --git a/structm5_1_1nfc_1_1b_1_1_p_i_c_c-members.html b/structm5_1_1nfc_1_1b_1_1_p_i_c_c-members.html new file mode 100644 index 0000000..ad359bd --- /dev/null +++ b/structm5_1_1nfc_1_1b_1_1_p_i_c_c-members.html @@ -0,0 +1,132 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::b::PICC Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::b::PICC, including all inherited members.

    + + + + + + + + + + + + + + + + + + + +
    applicationm5::nfc::b::PICC
    atqbm5::nfc::b::PICC
    cidm5::nfc::b::PICC
    communicationSpeed() const (defined in m5::nfc::b::PICC)m5::nfc::b::PICCinline
    fwi() const (defined in m5::nfc::b::PICC)m5::nfc::b::PICCinline
    isISO14443_4() constm5::nfc::b::PICCinline
    maximumFrameLength() const (defined in m5::nfc::b::PICC)m5::nfc::b::PICCinline
    maximumFrameLengthBits() const (defined in m5::nfc::b::PICC)m5::nfc::b::PICCinline
    option (defined in m5::nfc::b::PICC)m5::nfc::b::PICC
    protocolm5::nfc::b::PICC
    pupim5::nfc::b::PICC
    pupiAsString() constm5::nfc::b::PICC
    supportsCID() const (defined in m5::nfc::b::PICC)m5::nfc::b::PICCinline
    supportsNAD() const (defined in m5::nfc::b::PICC)m5::nfc::b::PICCinline
    typem5::nfc::b::PICC
    typeAsString() constm5::nfc::b::PICC
    uid (defined in m5::nfc::b::PICC)m5::nfc::b::PICC
    valid() constm5::nfc::b::PICCinline
    +
    + + + + diff --git a/structm5_1_1nfc_1_1b_1_1_p_i_c_c.html b/structm5_1_1nfc_1_1b_1_1_p_i_c_c.html new file mode 100644 index 0000000..9b329af --- /dev/null +++ b/structm5_1_1nfc_1_1b_1_1_p_i_c_c.html @@ -0,0 +1,206 @@ + + + + + + + +M5Unit-NFC: m5::nfc::b::PICC Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::b::PICC Struct Reference
    +
    +
    + +

    PICC for NFC-B. + More...

    + +

    #include <nfcb.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +bool valid () const
     Valid?
     
    +std::string pupiAsString () const
     Gets the pupi string.
     
    +std::string typeAsString () const
     Gets the type string.
     
    Type
    +bool isISO14443_4 () const
     ISO14443-4?
     
    Information
    +bool supportsNAD () const
     
    +bool supportsCID () const
     
    +uint16_t maximumFrameLength () const
     
    +uint8_t maximumFrameLengthBits () const
     
    +uint8_t communicationSpeed () const
     
    +uint8_t fwi () const
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +uint8_t uid [8] {}
     
    +union { 
     
    +   uint8_t   atqb [ATQB_LENGTH] {} 
     ATQB.
     
    +   struct { 
     
    +      uint8_t   pupi [4] 
     Pseudo-Unique PICC Identifier.
     
    +      uint8_t   application [4] 
     Application Data.
     
    +      uint8_t   protocol [3] 
     Protocol information.
     
       }  
     
    };  
     
    +Type type {Type::Unknown}
     Type.
     
    +uint8_t cid {}
     CID;.
     
    +uint8_t option {}
     
    +

    Detailed Description

    +

    PICC for NFC-B.

    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1b_1_1_p_i_c_c.js b/structm5_1_1nfc_1_1b_1_1_p_i_c_c.js new file mode 100644 index 0000000..393da6b --- /dev/null +++ b/structm5_1_1nfc_1_1b_1_1_p_i_c_c.js @@ -0,0 +1,13 @@ +var structm5_1_1nfc_1_1b_1_1_p_i_c_c = +[ + [ "isISO14443_4", "structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#a7d8d9bd5c71fedb940098e2b5b6530ac", null ], + [ "pupiAsString", "structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#a3851bbb69376426d24e43174e85048d9", null ], + [ "typeAsString", "structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#a12e00acfe9513ea113749e52ea2d5f05", null ], + [ "valid", "structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#a67d3842dce9b225cafb7d89e712ddc25", null ], + [ "application", "structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#a5412e31da035eff9e65bffa3b8eed91c", null ], + [ "atqb", "structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#a0252e34d67f8ae056b7ecc811f9b68ec", null ], + [ "cid", "structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#a327f3caf6e1bfca0542d268969bb2ad6", null ], + [ "protocol", "structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#ad41073dd71001ab521af81aa03a515a9", null ], + [ "pupi", "structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#ae3e1adb868ee8822a21be9a140f852c8", null ], + [ "type", "structm5_1_1nfc_1_1b_1_1_p_i_c_c.html#ae26c005a7ef1c7640e119ea311dc1bc9", null ] +]; \ No newline at end of file diff --git a/structm5_1_1nfc_1_1f_1_1_p_i_c_c-members.html b/structm5_1_1nfc_1_1f_1_1_p_i_c_c-members.html new file mode 100644 index 0000000..c18649a --- /dev/null +++ b/structm5_1_1nfc_1_1f_1_1_p_i_c_c-members.html @@ -0,0 +1,139 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::f::PICC Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::f::PICC, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    _pad (defined in m5::nfc::f::PICC)m5::nfc::f::PICC
    checkFormat(const Format f) constm5::nfc::f::PICCinline
    dfc_formatm5::nfc::f::PICC
    emulate(const Type t, const uint8_t idm[FELICA_ID_LENGTH], const uint8_t pmm[FELICA_ID_LENGTH], const uint16_t sc=0)m5::nfc::f::PICC
    emulation_scm5::nfc::f::PICC
    firstUserBlock() constm5::nfc::f::PICCinline
    formatm5::nfc::f::PICC
    idmm5::nfc::f::PICC
    idmAsString() constm5::nfc::f::PICC
    isUserBlock(const block_t block) constm5::nfc::f::PICCinline
    lastUserBlock() constm5::nfc::f::PICCinline
    m (defined in m5::nfc::f::PICC)m5::nfc::f::PICC
    maximumReadBlocks() constm5::nfc::f::PICCinline
    maximumWriteBlocks() constm5::nfc::f::PICCinline
    nfcForumTagType() constm5::nfc::f::PICCinline
    pmmm5::nfc::f::PICC
    pmmAsString() constm5::nfc::f::PICC
    request_codem5::nfc::f::PICC
    request_datam5::nfc::f::PICC
    supportsNDEF() constm5::nfc::f::PICCinline
    typem5::nfc::f::PICC
    typeAsString() constm5::nfc::f::PICC
    userAreaSize() constm5::nfc::f::PICCinline
    valid() constm5::nfc::f::PICC
    validEmulation() constm5::nfc::f::PICC
    +
    + + + + diff --git a/structm5_1_1nfc_1_1f_1_1_p_i_c_c.html b/structm5_1_1nfc_1_1f_1_1_p_i_c_c.html new file mode 100644 index 0000000..b718cae --- /dev/null +++ b/structm5_1_1nfc_1_1f_1_1_p_i_c_c.html @@ -0,0 +1,281 @@ + + + + + + + +M5Unit-NFC: m5::nfc::f::PICC Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::f::PICC Struct Reference
    +
    +
    + +

    PICC information for NFC-F. + More...

    + +

    #include <nfcf.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +bool valid () const
     Valid for detection?
     
    +bool validEmulation () const
     Valid for emulation?
     
    +uint16_t userAreaSize () const
     Total user area size.
     
    +uint16_t firstUserBlock () const
     Gets the first user block.
     
    +uint16_t lastUserBlock () const
     Gets the last user block.
     
    +bool isUserBlock (const block_t block) const
     Is user block?
     
    +uint8_t maximumReadBlocks () const
     Maximum number of blocks that can be read simultaneously.
     
    +uint8_t maximumWriteBlocks () const
     Maximum number of blocks that can be write simultaneously.
     
    +bool checkFormat (const Format f) const
     Check format.
     
    +bool supportsNDEF () const
     Supports NDEF?
     
    +NFCForumTag nfcForumTagType () const
     NFC ForumTag.
     
    bool emulate (const Type t, const uint8_t idm[FELICA_ID_LENGTH], const uint8_t pmm[FELICA_ID_LENGTH], const uint16_t sc=0)
     Emulation settings.
     
    +std::string idmAsString () const
     Gets the IDm string.
     
    +std::string pmmAsString () const
     Gets the PMm string.
     
    +std::string typeAsString () const
     Gets the type string.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +union { 
     
    +   uint8_t   m [16] {} 
     
    +   struct { 
     
    +      uint8_t   idm [FELICA_ID_LENGTH] 
     Manufacture ID.
     
    +      uint8_t   pmm [FELICA_ID_LENGTH] 
     Manufacture Parameter.
     
       }  
     
    };  
     
    +uint16_t request_data {}
     Any request data if exists.
     
    +RequestCode request_code {}
     Tyepe of the request_data.
     
    +Type type {}
     PICC Type.
     
    +Format format {}
     Format type group bits.
     
    +uint8_t _pad {}
     
    +uint16_t dfc_format {}
     DFC format ID:0x82[8,9] BE if format include DFC.
     
    +uint16_t emulation_sc {}
     System code for emulation.
     
    +

    Detailed Description

    +

    PICC information for NFC-F.

    +

    Member Function Documentation

    + +

    ◆ emulate()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    bool m5::nfc::f::PICC::emulate (const Type t,
    const uint8_t idm[FELICA_ID_LENGTH],
    const uint8_t pmm[FELICA_ID_LENGTH],
    const uint16_t sc = 0 )
    +
    + +

    Emulation settings.

    +
    Parameters
    + + + + + +
    tType
    idmIDm
    pmmOMm
    scSysetem code
    +
    +
    +
    Returns
    True if successful
    + +
    +
    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1f_1_1_p_i_c_c.js b/structm5_1_1nfc_1_1f_1_1_p_i_c_c.js new file mode 100644 index 0000000..23272b9 --- /dev/null +++ b/structm5_1_1nfc_1_1f_1_1_p_i_c_c.js @@ -0,0 +1,26 @@ +var structm5_1_1nfc_1_1f_1_1_p_i_c_c = +[ + [ "checkFormat", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a77e3b5039aeabc5046b4d73ee2a6315f", null ], + [ "emulate", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ab87ee26752ef4249f240922b6d33a93c", null ], + [ "firstUserBlock", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ac3b14091a6e255fdd111dc5058106573", null ], + [ "idmAsString", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ae9d6e0cdb4d3bdfbe96e1acd8b35d6f6", null ], + [ "isUserBlock", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ad84ac714bd3397f8cb173b7b8651ff0c", null ], + [ "lastUserBlock", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a3e1acb785f96fe267425388e2519b544", null ], + [ "maximumReadBlocks", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ad034f19064f3e2e66e13758a72e38b23", null ], + [ "maximumWriteBlocks", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ab1ca680451a84ccf5b3bda589fb03ca3", null ], + [ "nfcForumTagType", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a022a996aef9698d70c080d53ef53e553", null ], + [ "pmmAsString", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a6a7775e4b7939567da6e2d42f3ff877a", null ], + [ "supportsNDEF", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a246d933e11c4c723a25b97a6ed18a5b2", null ], + [ "typeAsString", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a19ed1943e3a20f5d160801d85e1281b0", null ], + [ "userAreaSize", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a19b5720e144a758fc9a26d9045fc35c2", null ], + [ "valid", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#af69afa2b56967446faeeec15e9785f3a", null ], + [ "validEmulation", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a38bab55d286773192148fd6d21cfb42b", null ], + [ "dfc_format", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a259230acc28cc4aaf634364234eb59a6", null ], + [ "emulation_sc", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#af525e296d36658fdda374724ce5de6ef", null ], + [ "format", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a3c8e889e88a8a234e71ccb9a45166a18", null ], + [ "idm", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a4835868074d0ca82eade8bd58bae6d69", null ], + [ "pmm", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a98b1fadb1fee84982f07020c3254770c", null ], + [ "request_code", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a4997c0cf13eff03c2ad30f207d7fe77b", null ], + [ "request_data", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ac0edd79a2abaa04fb42e8bd6d716eed2", null ], + [ "type", "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ac61ed02400e19194b6827cb208846119", null ] +]; \ No newline at end of file diff --git a/structm5_1_1nfc_1_1f_1_1block__t-members.html b/structm5_1_1nfc_1_1f_1_1block__t-members.html new file mode 100644 index 0000000..56ac91f --- /dev/null +++ b/structm5_1_1nfc_1_1f_1_1block__t-members.html @@ -0,0 +1,130 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::f::block_t Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::f::block_t, including all inherited members.

    + + + + + + + + + + + + + + + + + +
    access_mode() const (defined in m5::nfc::f::block_t)m5::nfc::f::block_tinline
    access_mode(const uint8_t a) (defined in m5::nfc::f::block_t)m5::nfc::f::block_tinline
    block() const (defined in m5::nfc::f::block_t)m5::nfc::f::block_tinline
    block(const uint16_t num) (defined in m5::nfc::f::block_t)m5::nfc::f::block_tinline
    block_t() (defined in m5::nfc::f::block_t)m5::nfc::f::block_tinline
    block_t(const uint16_t num, const uint8_t access=0, const uint8_t order=0) (defined in m5::nfc::f::block_t)m5::nfc::f::block_tinline
    from(const uint8_t v[3]) (defined in m5::nfc::f::block_t)m5::nfc::f::block_tinlinestatic
    headerm5::nfc::f::block_t
    is_2byte() const (defined in m5::nfc::f::block_t)m5::nfc::f::block_tinline
    is_3byte() const (defined in m5::nfc::f::block_t)m5::nfc::f::block_tinline
    numberm5::nfc::f::block_t
    operator uint16_t() const (defined in m5::nfc::f::block_t)m5::nfc::f::block_tinline
    order() const (defined in m5::nfc::f::block_t)m5::nfc::f::block_tinline
    order(const uint8_t o) (defined in m5::nfc::f::block_t)m5::nfc::f::block_tinline
    pad (defined in m5::nfc::f::block_t)m5::nfc::f::block_t
    store(uint8_t buf[3]) const (defined in m5::nfc::f::block_t)m5::nfc::f::block_tinline
    +
    + + + + diff --git a/structm5_1_1nfc_1_1f_1_1block__t.html b/structm5_1_1nfc_1_1f_1_1block__t.html new file mode 100644 index 0000000..bd9b010 --- /dev/null +++ b/structm5_1_1nfc_1_1f_1_1block__t.html @@ -0,0 +1,181 @@ + + + + + + + +M5Unit-NFC: m5::nfc::f::block_t Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    + +

    Block list element. + More...

    + +

    #include <nfcf.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +constexpr block_t (const uint16_t num, const uint8_t access=0, const uint8_t order=0)
     
    +constexpr bool is_2byte () const
     
    +constexpr bool is_3byte () const
     
    +constexpr uint8_t access_mode () const
     
    +constexpr uint8_t order () const
     
    +constexpr uint16_t block () const
     
    +void block (const uint16_t num)
     
    +void access_mode (const uint8_t a)
     
    +void order (const uint8_t o)
     
    operator uint16_t () const
     
    +uint8_t store (uint8_t buf[3]) const
     
    + + + +

    +Static Public Member Functions

    +static block_t from (const uint8_t v[3])
     
    + + + + + + + + + +

    +Public Attributes

    +uint8_t pad {}
     
    +uint8_t header {}
     size:1 access:3 order:4
     
    +uint16_t number {}
     block number (using low byte if 2 byte mode)
     
    +

    Detailed Description

    +

    Block list element.

    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1f_1_1block__t.js b/structm5_1_1nfc_1_1f_1_1block__t.js new file mode 100644 index 0000000..ba700a5 --- /dev/null +++ b/structm5_1_1nfc_1_1f_1_1block__t.js @@ -0,0 +1,5 @@ +var structm5_1_1nfc_1_1f_1_1block__t = +[ + [ "header", "structm5_1_1nfc_1_1f_1_1block__t.html#a744a7f95e6dd3082d954c7014f0530f8", null ], + [ "number", "structm5_1_1nfc_1_1f_1_1block__t.html#a0a9859e92e34f031853778759ca7965a", null ] +]; \ No newline at end of file diff --git a/structm5_1_1nfc_1_1isodep_1_1_rx_info-members.html b/structm5_1_1nfc_1_1isodep_1_1_rx_info-members.html new file mode 100644 index 0000000..b8720ee --- /dev/null +++ b/structm5_1_1nfc_1_1isodep_1_1_rx_info-members.html @@ -0,0 +1,116 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::isodep::RxInfo Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::isodep::RxInfo, including all inherited members.

    + + + +
    more (defined in m5::nfc::isodep::RxInfo)m5::nfc::isodep::RxInfo
    wtx_seen (defined in m5::nfc::isodep::RxInfo)m5::nfc::isodep::RxInfo
    +
    + + + + diff --git a/structm5_1_1nfc_1_1isodep_1_1_rx_info.html b/structm5_1_1nfc_1_1isodep_1_1_rx_info.html new file mode 100644 index 0000000..aa7340c --- /dev/null +++ b/structm5_1_1nfc_1_1isodep_1_1_rx_info.html @@ -0,0 +1,132 @@ + + + + + + + +M5Unit-NFC: m5::nfc::isodep::RxInfo Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::isodep::RxInfo Struct Reference
    +
    +
    + +

    RX information. + More...

    + +

    #include <isoDEP.hpp>

    + + + + + + +

    +Public Attributes

    +bool more {}
     
    +bool wtx_seen {}
     
    +

    Detailed Description

    +

    RX information.

    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1isodep_1_1config__t-members.html b/structm5_1_1nfc_1_1isodep_1_1config__t-members.html new file mode 100644 index 0000000..594ee43 --- /dev/null +++ b/structm5_1_1nfc_1_1isodep_1_1config__t-members.html @@ -0,0 +1,129 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::isodep::config_t Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::isodep::config_t, including all inherited members.

    + + + + + + + + + + + + + + + + +
    cid (defined in m5::nfc::isodep::config_t)m5::nfc::isodep::config_t
    fsc (defined in m5::nfc::isodep::config_t)m5::nfc::isodep::config_t
    fsc_inf_cap() const (defined in m5::nfc::isodep::config_t)m5::nfc::isodep::config_tinline
    fwt_ms (defined in m5::nfc::isodep::config_t)m5::nfc::isodep::config_t
    max_frame_cap_tx() const (defined in m5::nfc::isodep::config_t)m5::nfc::isodep::config_tinline
    max_frame_size_rx() const (defined in m5::nfc::isodep::config_t)m5::nfc::isodep::config_tinline
    max_retries (defined in m5::nfc::isodep::config_t)m5::nfc::isodep::config_t
    nad (defined in m5::nfc::isodep::config_t)m5::nfc::isodep::config_t
    overhead() const (defined in m5::nfc::isodep::config_t)m5::nfc::isodep::config_tinline
    pcd_max_frame_rx (defined in m5::nfc::isodep::config_t)m5::nfc::isodep::config_t
    pcd_max_frame_tx (defined in m5::nfc::isodep::config_t)m5::nfc::isodep::config_t
    rx_crc (defined in m5::nfc::isodep::config_t)m5::nfc::isodep::config_t
    use_cid (defined in m5::nfc::isodep::config_t)m5::nfc::isodep::config_t
    use_nad (defined in m5::nfc::isodep::config_t)m5::nfc::isodep::config_t
    wtx_max_ms (defined in m5::nfc::isodep::config_t)m5::nfc::isodep::config_t
    +
    + + + + diff --git a/structm5_1_1nfc_1_1isodep_1_1config__t.html b/structm5_1_1nfc_1_1isodep_1_1config__t.html new file mode 100644 index 0000000..57b3b16 --- /dev/null +++ b/structm5_1_1nfc_1_1isodep_1_1config__t.html @@ -0,0 +1,175 @@ + + + + + + + +M5Unit-NFC: m5::nfc::isodep::config_t Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::isodep::config_t Struct Reference
    +
    +
    + +

    ISO-DEP configuration. + More...

    + +

    #include <isoDEP.hpp>

    + + + + + + + + + + +

    +Public Member Functions

    +uint16_t max_frame_cap_tx () const
     
    +uint16_t max_frame_size_rx () const
     
    +uint16_t fsc_inf_cap () const
     
    +uint16_t overhead () const
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +uint16_t fsc {}
     
    +uint16_t pcd_max_frame_tx {}
     
    +uint16_t pcd_max_frame_rx {}
     
    +uint32_t fwt_ms {100}
     
    +uint32_t wtx_max_ms {5000}
     
    +bool use_cid {}
     
    +uint8_t cid {}
     
    +bool use_nad {}
     
    +uint8_t nad {}
     
    +uint8_t max_retries {2}
     
    +bool rx_crc {true}
     
    +

    Detailed Description

    +

    ISO-DEP configuration.

    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1ndef_1_1_attribute-members.html b/structm5_1_1nfc_1_1ndef_1_1_attribute-members.html new file mode 100644 index 0000000..cc03c2e --- /dev/null +++ b/structm5_1_1nfc_1_1ndef_1_1_attribute-members.html @@ -0,0 +1,133 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::ndef::Attribute Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::ndef::Attribute, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + +
    CFm5::nfc::ndef::Attributestatic
    chunk() const (defined in m5::nfc::ndef::Attribute)m5::nfc::ndef::Attributeinline
    chunk(const bool b) (defined in m5::nfc::ndef::Attribute)m5::nfc::ndef::Attributeinline
    idLength() const (defined in m5::nfc::ndef::Attribute)m5::nfc::ndef::Attributeinline
    idLength(const bool b) (defined in m5::nfc::ndef::Attribute)m5::nfc::ndef::Attributeinline
    ILm5::nfc::ndef::Attributestatic
    MBm5::nfc::ndef::Attributestatic
    MEm5::nfc::ndef::Attributestatic
    messageBegin() const (defined in m5::nfc::ndef::Attribute)m5::nfc::ndef::Attributeinline
    messageBegin(const bool b) (defined in m5::nfc::ndef::Attribute)m5::nfc::ndef::Attributeinline
    messageEnd() const (defined in m5::nfc::ndef::Attribute)m5::nfc::ndef::Attributeinline
    messageEnd(const bool b) (defined in m5::nfc::ndef::Attribute)m5::nfc::ndef::Attributeinline
    shortRecord() const (defined in m5::nfc::ndef::Attribute)m5::nfc::ndef::Attributeinline
    shortRecord(const bool b) (defined in m5::nfc::ndef::Attribute)m5::nfc::ndef::Attributeinline
    SRm5::nfc::ndef::Attributestatic
    tnf() const (defined in m5::nfc::ndef::Attribute)m5::nfc::ndef::Attributeinline
    tnf(const TNF t) (defined in m5::nfc::ndef::Attribute)m5::nfc::ndef::Attributeinline
    TNF_MASKm5::nfc::ndef::Attributestatic
    value (defined in m5::nfc::ndef::Attribute)m5::nfc::ndef::Attribute
    +
    + + + + diff --git a/structm5_1_1nfc_1_1ndef_1_1_attribute.html b/structm5_1_1nfc_1_1ndef_1_1_attribute.html new file mode 100644 index 0000000..ed827e4 --- /dev/null +++ b/structm5_1_1nfc_1_1ndef_1_1_attribute.html @@ -0,0 +1,198 @@ + + + + + + + +M5Unit-NFC: m5::nfc::ndef::Attribute Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::ndef::Attribute Struct Reference
    +
    +
    + +

    NDEF Record attribute (1st byte) + More...

    + +

    #include <ndef_record.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    Getter
    +bool messageBegin () const
     
    +bool messageEnd () const
     
    +bool chunk () const
     
    +bool shortRecord () const
     
    +bool idLength () const
     
    +TNF tnf () const
     
    Setter
    +void messageBegin (const bool b)
     
    +void messageEnd (const bool b)
     
    +void chunk (const bool b)
     
    +void shortRecord (const bool b)
     
    +void idLength (const bool b)
     
    +void tnf (const TNF t)
     
    + + + +

    +Public Attributes

    +uint8_t value {}
     
    + + + + + + + + + + + + + + + + + + + + +

    +Static Public Attributes

    Bit field
    +static constexpr uint8_t MB {0x80}
     Message Begin.
     
    +static constexpr uint8_t ME {0x40}
     Message End.
     
    +static constexpr uint8_t CF {0x20}
     Chunked Flag.
     
    +static constexpr uint8_t SR {0x10}
     Short Flag.
     
    +static constexpr uint8_t IL {0x08}
     ID Length (If disabled (specified as 0), ID LENGTH and ID can be omitted)
     
    +static constexpr uint8_t TNF_MASK {0x07}
     Type Name Format.
     
    +

    Detailed Description

    +

    NDEF Record attribute (1st byte)

    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1ndef_1_1type2_1_1_capability_container-members.html b/structm5_1_1nfc_1_1ndef_1_1type2_1_1_capability_container-members.html new file mode 100644 index 0000000..c771252 --- /dev/null +++ b/structm5_1_1nfc_1_1ndef_1_1type2_1_1_capability_container-members.html @@ -0,0 +1,128 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::ndef::type2::CapabilityContainer Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::ndef::type2::CapabilityContainer, including all inherited members.

    + + + + + + + + + + + + + + + +
    block (defined in m5::nfc::ndef::type2::CapabilityContainer)m5::nfc::ndef::type2::CapabilityContainer
    can_read() const (defined in m5::nfc::ndef::type2::CapabilityContainer)m5::nfc::ndef::type2::CapabilityContainerinline
    can_write() const (defined in m5::nfc::ndef::type2::CapabilityContainer)m5::nfc::ndef::type2::CapabilityContainerinline
    major_version() const (defined in m5::nfc::ndef::type2::CapabilityContainer)m5::nfc::ndef::type2::CapabilityContainerinline
    major_version(const uint8_t v) (defined in m5::nfc::ndef::type2::CapabilityContainer)m5::nfc::ndef::type2::CapabilityContainerinline
    minor_version() const (defined in m5::nfc::ndef::type2::CapabilityContainer)m5::nfc::ndef::type2::CapabilityContainerinline
    minor_version(const uint8_t v) (defined in m5::nfc::ndef::type2::CapabilityContainer)m5::nfc::ndef::type2::CapabilityContainerinline
    ndef_size() const (defined in m5::nfc::ndef::type2::CapabilityContainer)m5::nfc::ndef::type2::CapabilityContainerinline
    ndef_size(const uint16_t sz) (defined in m5::nfc::ndef::type2::CapabilityContainer)m5::nfc::ndef::type2::CapabilityContainerinline
    read_access() const (defined in m5::nfc::ndef::type2::CapabilityContainer)m5::nfc::ndef::type2::CapabilityContainerinline
    read_access(const uint8_t a) (defined in m5::nfc::ndef::type2::CapabilityContainer)m5::nfc::ndef::type2::CapabilityContainerinline
    valid() const (defined in m5::nfc::ndef::type2::CapabilityContainer)m5::nfc::ndef::type2::CapabilityContainerinline
    write_access() const (defined in m5::nfc::ndef::type2::CapabilityContainer)m5::nfc::ndef::type2::CapabilityContainerinline
    write_access(const uint8_t a) (defined in m5::nfc::ndef::type2::CapabilityContainer)m5::nfc::ndef::type2::CapabilityContainerinline
    +
    + + + + diff --git a/structm5_1_1nfc_1_1ndef_1_1type2_1_1_capability_container.html b/structm5_1_1nfc_1_1ndef_1_1type2_1_1_capability_container.html new file mode 100644 index 0000000..b26f7d9 --- /dev/null +++ b/structm5_1_1nfc_1_1ndef_1_1type2_1_1_capability_container.html @@ -0,0 +1,172 @@ + + + + + + + +M5Unit-NFC: m5::nfc::ndef::type2::CapabilityContainer Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::ndef::type2::CapabilityContainer Struct Reference
    +
    +
    + +

    Capability container for Type2. + More...

    + +

    #include <ndef.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +bool valid () const
     
    +bool can_read () const
     
    +bool can_write () const
     
    +uint8_t major_version () const
     
    +uint8_t minor_version () const
     
    +uint16_t ndef_size () const
     
    +uint8_t read_access () const
     
    +uint8_t write_access () const
     
    +void major_version (const uint8_t v)
     
    +void minor_version (const uint8_t v)
     
    +void ndef_size (const uint16_t sz)
     
    +void read_access (const uint8_t a)
     
    +void write_access (const uint8_t a)
     
    + + + +

    +Public Attributes

    +uint8_t block [4] {}
     
    +

    Detailed Description

    +

    Capability container for Type2.

    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block-members.html b/structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block-members.html new file mode 100644 index 0000000..869caf8 --- /dev/null +++ b/structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block-members.html @@ -0,0 +1,137 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::ndef::type3::AttributeBlock Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::ndef::type3::AttributeBlock, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + +
    access_flag() const (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlockinline
    access_flag(const AccessFlag f) (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlockinline
    AccessFlag enum namem5::nfc::ndef::type3::AttributeBlock
    AttributeBlock() (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlockinline
    block (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlock
    blocks_for_ndef_storage() const (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlockinline
    blocks_for_ndef_storage(const uint16_t s) (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlockinline
    calculate_check_sum() const (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlock
    check_sum() const (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlockinline
    current_ndef_message_length() const (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlockinline
    current_ndef_message_length(const uint32_t len) (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlockinline
    DEFAULT_VERSION (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlockstatic
    max_block_to_read() const (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlockinline
    max_block_to_read(const uint8_t b) (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlockinline
    max_block_to_write() const (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlockinline
    max_block_to_write(const uint8_t b) (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlockinline
    update_check_sum() (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlock
    valid() const (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlock
    version() const (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlockinline
    version(const uint8_t ver) (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlockinline
    write_flag() const (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlockinline
    write_flag(const WriteFlag f) (defined in m5::nfc::ndef::type3::AttributeBlock)m5::nfc::ndef::type3::AttributeBlockinline
    WriteFlag enum namem5::nfc::ndef::type3::AttributeBlock
    +
    + + + + diff --git a/structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html b/structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html new file mode 100644 index 0000000..0cf99b2 --- /dev/null +++ b/structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html @@ -0,0 +1,269 @@ + + + + + + + +M5Unit-NFC: m5::nfc::ndef::type3::AttributeBlock Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::ndef::type3::AttributeBlock Struct Reference
    +
    +
    + +

    For Type 3 tag (T3T) + More...

    + +

    #include <ndef.hpp>

    + + + + + + + + +

    +Public Types

    enum class  WriteFlag : uint8_t { Done +, InProgress = 0x0F + }
     Flag for fault tolerance. More...
     
    enum class  AccessFlag : uint8_t { ReadOnly +, ReadWrite + }
     Permission to read and write. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +uint8_t version () const
     
    +uint8_t max_block_to_read () const
     
    +uint8_t max_block_to_write () const
     
    +uint16_t blocks_for_ndef_storage () const
     
    +WriteFlag write_flag () const
     
    +AccessFlag access_flag () const
     
    +uint32_t current_ndef_message_length () const
     
    +uint16_t check_sum () const
     
    +void version (const uint8_t ver)
     
    +void max_block_to_read (const uint8_t b)
     
    +void max_block_to_write (const uint8_t b)
     
    +void blocks_for_ndef_storage (const uint16_t s)
     
    +void write_flag (const WriteFlag f)
     
    +void access_flag (const AccessFlag f)
     
    +void current_ndef_message_length (const uint32_t len)
     
    +bool valid () const
     
    +uint16_t calculate_check_sum () const
     
    +uint16_t update_check_sum ()
     
    + + + +

    +Public Attributes

    +uint8_t block [16] {}
     
    + + + +

    +Static Public Attributes

    +static constexpr uint8_t DEFAULT_VERSION {0x10}
     
    +

    Detailed Description

    +

    For Type 3 tag (T3T)

    +

    Member Enumeration Documentation

    + +

    ◆ AccessFlag

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::ndef::type3::AttributeBlock::AccessFlag : uint8_t
    +
    +strong
    +
    + +

    Permission to read and write.

    + + + +
    Enumerator
    ReadOnly 

    Allow read only.

    +
    ReadWrite 

    Allow read and write.

    +
    + +
    +
    + +

    ◆ WriteFlag

    + +
    +
    + + + + + +
    + + + + +
    enum class m5::nfc::ndef::type3::AttributeBlock::WriteFlag : uint8_t
    +
    +strong
    +
    + +

    Flag for fault tolerance.

    + + + +
    Enumerator
    Done 

    Done.

    +
    InProgress 

    Write in progress.

    +
    + +
    +
    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.js b/structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.js new file mode 100644 index 0000000..a1548cc --- /dev/null +++ b/structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.js @@ -0,0 +1,11 @@ +var structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block = +[ + [ "AccessFlag", "structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html#a1a43484f01b9e89ab972227fddeaf508", [ + [ "ReadOnly", "structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html#a1a43484f01b9e89ab972227fddeaf508a131fb182a881796e7606ed6da27f1197", null ], + [ "ReadWrite", "structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html#a1a43484f01b9e89ab972227fddeaf508a70a2a84088d405a2e3f1e3accaa16723", null ] + ] ], + [ "WriteFlag", "structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html#a410e6ca7e4263d60017086ae8e5027f9", [ + [ "Done", "structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html#a410e6ca7e4263d60017086ae8e5027f9af92965e2c8a7afb3c1b9a5c09a263636", null ], + [ "InProgress", "structm5_1_1nfc_1_1ndef_1_1type3_1_1_attribute_block.html#a410e6ca7e4263d60017086ae8e5027f9a12d868c18cb29bf58f02b504be9033fd", null ] + ] ] +]; \ No newline at end of file diff --git a/structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container-members.html b/structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container-members.html new file mode 100644 index 0000000..79f7d49 --- /dev/null +++ b/structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container-members.html @@ -0,0 +1,125 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::ndef::type4::CapabilityContainer Member List
    +
    + +
    + + + + diff --git a/structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.html b/structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.html new file mode 100644 index 0000000..cdb7614 --- /dev/null +++ b/structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.html @@ -0,0 +1,167 @@ + + + + + + + +M5Unit-NFC: m5::nfc::ndef::type4::CapabilityContainer Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::ndef::type4::CapabilityContainer Struct Reference
    +
    +
    + +

    Capability container for Type4. + More...

    + +

    #include <ndef.hpp>

    + + + + + + + + + + + + + + +

    +Public Member Functions

    +uint8_t major_version () const
     
    +uint8_t minor_version () const
     
    +bool valid () const
     
    +FileControlTLV fctlv (const uint8_t index) const
     
    +FileControlTLV fctlv (const FileControlTag fc=FileControlTag::Message) const
     
    +bool parse (const uint8_t *buf, const uint16_t len)
     
    + + + + + + + + + + + + + + + +

    +Public Attributes

    +uint16_t cclen {}
     CC length.
     
    +uint8_t mapping_version {}
     Mapping version.
     
    +uint16_t mle {}
     Maximum Le.
     
    +uint16_t mlc {}
     Maximum Lc.
     
    +std::vector< FileControlTLVfctlvs {}
     
    +

    Detailed Description

    +

    Capability container for Type4.

    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.js b/structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.js new file mode 100644 index 0000000..8d6b311 --- /dev/null +++ b/structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.js @@ -0,0 +1,7 @@ +var structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container = +[ + [ "cclen", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.html#a07deffc4b5c59b15100d9577a6a8b939", null ], + [ "mapping_version", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.html#a79706bac5c75f18a30cd5c1975c19616", null ], + [ "mlc", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.html#a21c08a70c675ae1064885efb866e9d85", null ], + [ "mle", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_capability_container.html#a418b248673f5174571abd7f1c55755fb", null ] +]; \ No newline at end of file diff --git a/structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v-members.html b/structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v-members.html new file mode 100644 index 0000000..e0c6b41 --- /dev/null +++ b/structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v-members.html @@ -0,0 +1,121 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::ndef::type4::FileControlTLV Member List
    +
    + +
    + + + + diff --git a/structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html b/structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html new file mode 100644 index 0000000..eb710b1 --- /dev/null +++ b/structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html @@ -0,0 +1,157 @@ + + + + + + + +M5Unit-NFC: m5::nfc::ndef::type4::FileControlTLV Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::ndef::type4::FileControlTLV Struct Reference
    +
    +
    + +

    File control TLV. + More...

    + +

    #include <ndef.hpp>

    + + + + +

    +Public Member Functions

    +FileControlTag fctag () const
     
    + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +uint8_t tag {}
     File control tag.
     
    +uint8_t len {}
     Length.
     
    +uint16_t ndef_file_id {}
     NDEF file ID.
     
    +uint16_t ndef_file_size {}
     NDEF file size.
     
    +uint8_t read_access {}
     Read access.
     
    +uint8_t write_access {}
     Write access.
     
    +

    Detailed Description

    +

    File control TLV.

    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.js b/structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.js new file mode 100644 index 0000000..6519bad --- /dev/null +++ b/structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.js @@ -0,0 +1,9 @@ +var structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v = +[ + [ "len", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html#a82f1b76ce19c48b20b426d9ccd88145d", null ], + [ "ndef_file_id", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html#af16c9822651aeb39c6f40a2a4d0472be", null ], + [ "ndef_file_size", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html#aca80e358b4e069110c6cf4f5bd95fd5d", null ], + [ "read_access", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html#a2f690a048b8283318d558bafc4a5ec01", null ], + [ "tag", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html#a213d9e339d36b6ce0c88fdb44ce19318", null ], + [ "write_access", "structm5_1_1nfc_1_1ndef_1_1type4_1_1_file_control_t_l_v.html#abd3975e52acc6e88d3570dbd9213e0b5", null ] +]; \ No newline at end of file diff --git a/structm5_1_1nfc_1_1ndef_1_1type5_1_1_capability_container-members.html b/structm5_1_1nfc_1_1ndef_1_1type5_1_1_capability_container-members.html new file mode 100644 index 0000000..78d4cc7 --- /dev/null +++ b/structm5_1_1nfc_1_1ndef_1_1type5_1_1_capability_container-members.html @@ -0,0 +1,131 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::ndef::type5::CapabilityContainer Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::ndef::type5::CapabilityContainer, including all inherited members.

    + + + + + + + + + + + + + + + + + + +
    additional_feature() const (defined in m5::nfc::ndef::type5::CapabilityContainer)m5::nfc::ndef::type5::CapabilityContainerinline
    additional_feature(const uint8_t af) (defined in m5::nfc::ndef::type5::CapabilityContainer)m5::nfc::ndef::type5::CapabilityContainerinline
    block (defined in m5::nfc::ndef::type5::CapabilityContainer)m5::nfc::ndef::type5::CapabilityContainer
    can_read() const (defined in m5::nfc::ndef::type5::CapabilityContainer)m5::nfc::ndef::type5::CapabilityContainerinline
    can_write() const (defined in m5::nfc::ndef::type5::CapabilityContainer)m5::nfc::ndef::type5::CapabilityContainerinline
    major_version() const (defined in m5::nfc::ndef::type5::CapabilityContainer)m5::nfc::ndef::type5::CapabilityContainerinline
    major_version(const uint8_t v) (defined in m5::nfc::ndef::type5::CapabilityContainer)m5::nfc::ndef::type5::CapabilityContainerinline
    minor_version() const (defined in m5::nfc::ndef::type5::CapabilityContainer)m5::nfc::ndef::type5::CapabilityContainerinline
    minor_version(const uint8_t v) (defined in m5::nfc::ndef::type5::CapabilityContainer)m5::nfc::ndef::type5::CapabilityContainerinline
    ndef_size() const (defined in m5::nfc::ndef::type5::CapabilityContainer)m5::nfc::ndef::type5::CapabilityContainerinline
    ndef_size(const uint16_t sz) (defined in m5::nfc::ndef::type5::CapabilityContainer)m5::nfc::ndef::type5::CapabilityContainerinline
    read_access() const (defined in m5::nfc::ndef::type5::CapabilityContainer)m5::nfc::ndef::type5::CapabilityContainerinline
    read_access(const uint8_t a) (defined in m5::nfc::ndef::type5::CapabilityContainer)m5::nfc::ndef::type5::CapabilityContainerinline
    size() const (defined in m5::nfc::ndef::type5::CapabilityContainer)m5::nfc::ndef::type5::CapabilityContainerinline
    valid() const (defined in m5::nfc::ndef::type5::CapabilityContainer)m5::nfc::ndef::type5::CapabilityContainerinline
    write_access() const (defined in m5::nfc::ndef::type5::CapabilityContainer)m5::nfc::ndef::type5::CapabilityContainerinline
    write_access(const uint8_t a) (defined in m5::nfc::ndef::type5::CapabilityContainer)m5::nfc::ndef::type5::CapabilityContainerinline
    +
    + + + + diff --git a/structm5_1_1nfc_1_1ndef_1_1type5_1_1_capability_container.html b/structm5_1_1nfc_1_1ndef_1_1type5_1_1_capability_container.html new file mode 100644 index 0000000..85c54da --- /dev/null +++ b/structm5_1_1nfc_1_1ndef_1_1type5_1_1_capability_container.html @@ -0,0 +1,181 @@ + + + + + + + +M5Unit-NFC: m5::nfc::ndef::type5::CapabilityContainer Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::ndef::type5::CapabilityContainer Struct Reference
    +
    +
    + +

    Capability container for Type5. + More...

    + +

    #include <ndef.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +bool valid () const
     
    +bool can_read () const
     
    +bool can_write () const
     
    +uint8_t size () const
     
    +uint8_t major_version () const
     
    +uint8_t minor_version () const
     
    +uint16_t ndef_size () const
     
    +uint8_t read_access () const
     
    +uint8_t write_access () const
     
    +uint8_t additional_feature () const
     
    +void major_version (const uint8_t v)
     
    +void minor_version (const uint8_t v)
     
    +void ndef_size (const uint16_t sz)
     
    +void read_access (const uint8_t a)
     
    +void write_access (const uint8_t a)
     
    +void additional_feature (const uint8_t af)
     
    + + + +

    +Public Attributes

    +uint8_t block [8] {}
     
    +

    Detailed Description

    +

    Capability container for Type5.

    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1v_1_1_p_i_c_c-members.html b/structm5_1_1nfc_1_1v_1_1_p_i_c_c-members.html new file mode 100644 index 0000000..469e446 --- /dev/null +++ b/structm5_1_1nfc_1_1v_1_1_p_i_c_c-members.html @@ -0,0 +1,133 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::v::PICC Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::v::PICC, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + +
    _pad (defined in m5::nfc::v::PICC)m5::nfc::v::PICC
    afim5::nfc::v::PICC
    block_sizem5::nfc::v::PICC
    blocksm5::nfc::v::PICC
    dsfIDm5::nfc::v::PICC
    firstUserBlock() constm5::nfc::v::PICCinline
    icIdentifier() const (defined in m5::nfc::v::PICC)m5::nfc::v::PICCinline
    icRefm5::nfc::v::PICC
    icReference() const (defined in m5::nfc::v::PICC)m5::nfc::v::PICCinline
    lastUserBlock() constm5::nfc::v::PICCinline
    manufacturerCode() const (defined in m5::nfc::v::PICC)m5::nfc::v::PICCinline
    nfcForumTagType() constm5::nfc::v::PICCinline
    totalSize() const (defined in m5::nfc::v::PICC)m5::nfc::v::PICCinline
    typem5::nfc::v::PICC
    typeAsString() constm5::nfc::v::PICC
    uidm5::nfc::v::PICC
    uidAsString() constm5::nfc::v::PICC
    userAreaSize() constm5::nfc::v::PICCinline
    valid() const (defined in m5::nfc::v::PICC)m5::nfc::v::PICCinline
    +
    + + + + diff --git a/structm5_1_1nfc_1_1v_1_1_p_i_c_c.html b/structm5_1_1nfc_1_1v_1_1_p_i_c_c.html new file mode 100644 index 0000000..8c4f340 --- /dev/null +++ b/structm5_1_1nfc_1_1v_1_1_p_i_c_c.html @@ -0,0 +1,200 @@ + + + + + + + +M5Unit-NFC: m5::nfc::v::PICC Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::v::PICC Struct Reference
    +
    +
    + +

    PICC for NFC-V. + More...

    + +

    #include <nfcv.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +bool valid () const
     
    +uint8_t manufacturerCode () const
     
    +uint8_t icIdentifier () const
     
    +uint8_t icReference () const
     
    +uint16_t totalSize () const
     
    +uint16_t userAreaSize () const
     Total user area size.
     
    +NFCForumTag nfcForumTagType () const
     NFC ForumTag.
     
    +uint16_t firstUserBlock () const
     Gets the first user block.
     
    +uint16_t lastUserBlock () const
     Gets the last user block.
     
    +std::string uidAsString () const
     Gets the uid string.
     
    +std::string typeAsString () const
     Gets the type string.
     
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +uint8_t uid [8] {}
     UID (MSB-first)
     
    +Type type {}
     Type.
     
    +uint8_t dsfID {}
     Data Storage Format Identifier.
     
    +uint8_t afi {}
     Application Family Identifier.
     
    +uint8_t icRef {}
     IC Reference.
     
    +uint8_t block_size {}
     Byte size of 1 block.
     
    +uint8_t _pad {}
     
    +uint16_t blocks {}
     Number of blocks.
     
    +

    Detailed Description

    +

    PICC for NFC-V.

    +
    +
    + + + + diff --git a/structm5_1_1nfc_1_1v_1_1_p_i_c_c.js b/structm5_1_1nfc_1_1v_1_1_p_i_c_c.js new file mode 100644 index 0000000..a09eb9b --- /dev/null +++ b/structm5_1_1nfc_1_1v_1_1_p_i_c_c.js @@ -0,0 +1,16 @@ +var structm5_1_1nfc_1_1v_1_1_p_i_c_c = +[ + [ "firstUserBlock", "structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#acd18f06e674304f3dc4b9c497d2db1f3", null ], + [ "lastUserBlock", "structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#a5fa2805be205b881abbc014edd16514d", null ], + [ "nfcForumTagType", "structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#ab302f6c57c2b7b7391a5ab34ad3a6896", null ], + [ "typeAsString", "structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#abde2784c120f6ae46dfa44416541adf5", null ], + [ "uidAsString", "structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#a092ec7d234407a44662af837d3be9c82", null ], + [ "userAreaSize", "structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#a104c470214bfaa328415fe87292731eb", null ], + [ "afi", "structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#a797a51b710825e4c850283a209b8a0e8", null ], + [ "block_size", "structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#af42ccce36d6668456d8055043ad9a00e", null ], + [ "blocks", "structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#abd192cfb8ee34dd6a291131bc466f596", null ], + [ "dsfID", "structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#ad577c3635840c6be9200029c89afac6b", null ], + [ "icRef", "structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#af8991c3df46a22dc1813fb62ff50f867", null ], + [ "type", "structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#a2133556ef417bf8287d3f0f2ebbe1d77", null ], + [ "uid", "structm5_1_1nfc_1_1v_1_1_p_i_c_c.html#ab47e56e7662a75946f2a2046852bba0e", null ] +]; \ No newline at end of file diff --git a/structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t-members.html b/structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t-members.html new file mode 100644 index 0000000..5e5bb6c --- /dev/null +++ b/structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t-members.html @@ -0,0 +1,120 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::unit::UnitST25R3916::config_t Member List
    +
    + +
    + + + + diff --git a/structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html b/structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html new file mode 100644 index 0000000..089ca06 --- /dev/null +++ b/structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html @@ -0,0 +1,150 @@ + + + + + + + +M5Unit-NFC: m5::unit::UnitST25R3916::config_t Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::unit::UnitST25R3916::config_t Struct Reference
    +
    +
    + +

    Settings for begin. + More...

    + +

    #include <unit_ST25R3916.hpp>

    + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +m5::nfc::NFC mode {m5::nfc::NFC::A}
     Initial target for Poll/Listen.
     
    +bool vdd_voltage_5V {false}
     VDD voltage true:5V false:3.3V.
     
    +uint8_t tx_am_modulation {13}
     0-15 See also 4.5.48 TX driver register
     
    +bool using_irq {}
     Exists IRQ PIN?
     
    +uint8_t irq {}
     IRQ PIN.
     
    +bool emulation {}
     Emulation mode?
     
    +

    Detailed Description

    +

    Settings for begin.

    +
    +
    + + + + diff --git a/structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.js b/structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.js new file mode 100644 index 0000000..c87dadf --- /dev/null +++ b/structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.js @@ -0,0 +1,9 @@ +var structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t = +[ + [ "emulation", "structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html#aaf309530d5992a1090bc62e4d13e8e2b", null ], + [ "irq", "structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html#aa5b72ea81b2cdf42644ddf560caf367f", null ], + [ "mode", "structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html#a8cacea206ebc77e6fe882f08c642c21a", null ], + [ "tx_am_modulation", "structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html#ab9efa0d30fee6b2b0bf121c466853804", null ], + [ "using_irq", "structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html#a677517debf6d590c88db914a3dde2137", null ], + [ "vdd_voltage_5V", "structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html#a75a9212de180d0a2619def500a2f5192", null ] +]; \ No newline at end of file diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/sync_off.png differ diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/sync_on.png differ diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/tab_a.png differ diff --git a/tab_ad.png b/tab_ad.png new file mode 100644 index 0000000..e34850a Binary files /dev/null and b/tab_ad.png differ diff --git a/tab_b.png b/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/tab_b.png differ diff --git a/tab_bd.png b/tab_bd.png new file mode 100644 index 0000000..91c2524 Binary files /dev/null and b/tab_bd.png differ diff --git a/tab_h.png b/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/tab_h.png differ diff --git a/tab_hd.png b/tab_hd.png new file mode 100644 index 0000000..2489273 Binary files /dev/null and b/tab_hd.png differ diff --git a/tab_s.png b/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/tab_s.png differ diff --git a/tab_sd.png b/tab_sd.png new file mode 100644 index 0000000..757a565 Binary files /dev/null and b/tab_sd.png differ diff --git a/tabs.css b/tabs.css new file mode 100644 index 0000000..fe4854a --- /dev/null +++ b/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/todo.html b/todo.html new file mode 100644 index 0000000..13347a8 --- /dev/null +++ b/todo.html @@ -0,0 +1,116 @@ + + + + + + + +M5Unit-NFC: Todo List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Todo List
    +
    +
    +
    +
    Struct m5::nfc::FCP
    +
    Add more item
    +
    +
    +
    +
    + + + + diff --git a/unionm5_1_1nfc_1_1f_1_1_r_e_g-members.html b/unionm5_1_1nfc_1_1f_1_1_r_e_g-members.html new file mode 100644 index 0000000..4c81655 --- /dev/null +++ b/unionm5_1_1nfc_1_1f_1_1_r_e_g-members.html @@ -0,0 +1,127 @@ + + + + + + + +M5Unit-NFC: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    m5::nfc::f::REG Member List
    +
    +
    + +

    This is the complete list of members for m5::nfc::f::REG, including all inherited members.

    + + + + + + + + + + + + + + +
    operator const uint8_t *() const (defined in m5::nfc::f::REG)m5::nfc::f::REGinline
    operator uint8_t *() (defined in m5::nfc::f::REG)m5::nfc::f::REGinline
    REG() (defined in m5::nfc::f::REG)m5::nfc::f::REGinline
    reg (defined in m5::nfc::f::REG)m5::nfc::f::REG
    reg_a (defined in m5::nfc::f::REG)m5::nfc::f::REG
    reg_b (defined in m5::nfc::f::REG)m5::nfc::f::REG
    reg_c (defined in m5::nfc::f::REG)m5::nfc::f::REG
    regA() constm5::nfc::f::REGinline
    regA(const uint32_t v)m5::nfc::f::REGinline
    regB() constm5::nfc::f::REGinline
    regB(const uint32_t v)m5::nfc::f::REGinline
    regC() constm5::nfc::f::REGinline
    regC(const uint64_t v)m5::nfc::f::REGinline
    +
    + + + + diff --git a/unionm5_1_1nfc_1_1f_1_1_r_e_g.html b/unionm5_1_1nfc_1_1f_1_1_r_e_g.html new file mode 100644 index 0000000..8bcd8dd --- /dev/null +++ b/unionm5_1_1nfc_1_1f_1_1_r_e_g.html @@ -0,0 +1,177 @@ + + + + + + + +M5Unit-NFC: m5::nfc::f::REG Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    m5::nfc::f::REG Struct Reference
    +
    +
    + +

    Subtract Register Block Data. + More...

    + +

    #include <nfcf.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +uint32_t regA () const
     Gets the RegA.
     
    +uint32_t regB () const
     Gets the RegB.
     
    +uint64_t regC () const
     Gets the RegC.
     
    +void regA (const uint32_t v)
     Set the RegA.
     
    +void regB (const uint32_t v)
     Set the RegB.
     
    +void regC (const uint64_t v)
     Set the RegC.
     
    operator const uint8_t * () const
     
    operator uint8_t * ()
     
    + + + + + + + + + + + + + +

    +Public Attributes

    +uint8_t reg [16] {}
     
    +struct { 
     
    +   uint8_t   reg_a [4] 
     
    +   uint8_t   reg_b [4] 
     
    +   uint8_t   reg_c [8] 
     
    };  
     
    +

    Detailed Description

    +

    Subtract Register Block Data.

    +
    +
    + + + + diff --git a/unionm5_1_1nfc_1_1f_1_1_r_e_g.js b/unionm5_1_1nfc_1_1f_1_1_r_e_g.js new file mode 100644 index 0000000..2a3a1e1 --- /dev/null +++ b/unionm5_1_1nfc_1_1f_1_1_r_e_g.js @@ -0,0 +1,9 @@ +var unionm5_1_1nfc_1_1f_1_1_r_e_g = +[ + [ "regA", "unionm5_1_1nfc_1_1f_1_1_r_e_g.html#a65f9d61fefa9bfc6cc698fa6735c64a8", null ], + [ "regA", "unionm5_1_1nfc_1_1f_1_1_r_e_g.html#a403e0738100b0b778ebe016dc2b66743", null ], + [ "regB", "unionm5_1_1nfc_1_1f_1_1_r_e_g.html#a697ea41ac2e098f30305697f8bdb828c", null ], + [ "regB", "unionm5_1_1nfc_1_1f_1_1_r_e_g.html#a3809c945b5741992b1b2b93433041119", null ], + [ "regC", "unionm5_1_1nfc_1_1f_1_1_r_e_g.html#a18363858e069b905ea04b9de8d2c3809", null ], + [ "regC", "unionm5_1_1nfc_1_1f_1_1_r_e_g.html#a29c4f22a2d7699d3b6831e872686d088", null ] +]; \ No newline at end of file diff --git a/unit___s_t25_r3916_8cpp.html b/unit___s_t25_r3916_8cpp.html new file mode 100644 index 0000000..23e0fed --- /dev/null +++ b/unit___s_t25_r3916_8cpp.html @@ -0,0 +1,136 @@ + + + + + + + +M5Unit-NFC: src/unit/unit_ST25R3916.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    unit_ST25R3916.cpp File Reference
    +
    +
    + +

    ST25R3916 Unit for M5UnitUnified. +More...

    +
    #include "unit_ST25R3916.hpp"
    +#include <M5Utility.hpp>
    +#include <thread>
    +
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    + + + +

    +Macros

    +#define TRANSACTION_GUARD()   transaction_guard _tg_(adapter())
     
    +

    Detailed Description

    +

    ST25R3916 Unit for M5UnitUnified.

    +
    +
    + + + + diff --git a/unit___s_t25_r3916_8hpp.html b/unit___s_t25_r3916_8hpp.html new file mode 100644 index 0000000..4edc8c5 --- /dev/null +++ b/unit___s_t25_r3916_8hpp.html @@ -0,0 +1,150 @@ + + + + + + + +M5Unit-NFC: src/unit/unit_ST25R3916.hpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    unit_ST25R3916.hpp File Reference
    +
    +
    + +

    ST25R3916 Unit for M5UnitUnified. +More...

    +
    #include <M5UnitComponent.hpp>
    +#include "ST25R3916_definition.hpp"
    +#include "nfc/nfc.hpp"
    +#include "nfc/a/nfca.hpp"
    +#include "nfc/a/mifare.hpp"
    +#include "nfc/crypto/mifare_classic_crypto1.hpp"
    +#include "nfc/b/nfcb.hpp"
    +#include "nfc/f/nfcf.hpp"
    +#include "nfc/v/nfcv.hpp"
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + +

    +Classes

    class  m5::unit::UnitST25R3916
     ST25R3916 Unit. More...
     
    struct  m5::unit::UnitST25R3916::config_t
     Settings for begin. More...
     
    class  m5::unit::CapST25R3916
     ST25R3916 unit in CapCC1101 (SPI) More...
     
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    +

    Detailed Description

    +

    ST25R3916 Unit for M5UnitUnified.

    +
    +
    + + + + diff --git a/unit___s_t25_r3916_8hpp.js b/unit___s_t25_r3916_8hpp.js new file mode 100644 index 0000000..e063b14 --- /dev/null +++ b/unit___s_t25_r3916_8hpp.js @@ -0,0 +1,6 @@ +var unit___s_t25_r3916_8hpp = +[ + [ "m5::unit::UnitST25R3916", "classm5_1_1unit_1_1_unit_s_t25_r3916.html", "classm5_1_1unit_1_1_unit_s_t25_r3916" ], + [ "m5::unit::UnitST25R3916::config_t", "structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t.html", "structm5_1_1unit_1_1_unit_s_t25_r3916_1_1config__t" ], + [ "m5::unit::CapST25R3916", "classm5_1_1unit_1_1_cap_s_t25_r3916.html", null ] +]; \ No newline at end of file diff --git a/unit___s_t25_r3916_8hpp_source.html b/unit___s_t25_r3916_8hpp_source.html new file mode 100644 index 0000000..59900ac --- /dev/null +++ b/unit___s_t25_r3916_8hpp_source.html @@ -0,0 +1,1655 @@ + + + + + + + +M5Unit-NFC: src/unit/unit_ST25R3916.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    unit_ST25R3916.hpp
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
    +
    3 *
    +
    4 * SPDX-License-Identifier: MIT
    +
    5 */
    +
    10#ifndef M5_UNIT_NFC_UNIT_ST25R3916_HPP
    +
    11#define M5_UNIT_NFC_UNIT_ST25R3916_HPP
    +
    12
    +
    13#include <M5UnitComponent.hpp>
    + +
    15#include "nfc/nfc.hpp"
    +
    16#include "nfc/a/nfca.hpp"
    +
    17#include "nfc/a/mifare.hpp"
    + +
    19#include "nfc/b/nfcb.hpp"
    +
    20#include "nfc/f/nfcf.hpp"
    +
    21#include "nfc/v/nfcv.hpp"
    +
    22
    +
    23namespace m5 {
    +
    24namespace nfc {
    +
    25struct ListenerST25R3916ForA;
    +
    26struct ListenerST25R3916ForF;
    +
    27} // namespace nfc
    +
    28namespace unit {
    +
    29
    +
    30namespace nfc {
    +
    31struct AdapterST25R3916;
    +
    32} // namespace nfc
    +
    33
    +
    +
    38class UnitST25R3916 : public Component {
    +
    39 M5_UNIT_COMPONENT_HPP_BUILDER(UnitST25R3916, 0x50 /* I2C address */);
    +
    40
    +
    41public:
    +
    42 explicit UnitST25R3916(const uint8_t arg = DEFAULT_ADDRESS) : Component(arg)
    +
    43 {
    +
    44 auto ccfg = component_config();
    +
    45 ccfg.clock = 400 * 1000U;
    +
    46 component_config(ccfg);
    +
    47 }
    +
    48 virtual ~UnitST25R3916() = default;
    +
    49
    +
    50 virtual bool begin() override;
    +
    51 virtual void update(const bool force = false) override;
    +
    52
    +
    +
    57 struct config_t {
    +
    58 m5::nfc::NFC mode{m5::nfc::NFC::A};
    +
    59 bool vdd_voltage_5V{false};
    +
    60 uint8_t tx_am_modulation{13};
    +
    61 bool using_irq{};
    +
    62 uint8_t irq{};
    +
    63 bool emulation{};
    +
    64 };
    +
    +
    65
    +
    68
    +
    + +
    70 {
    +
    71 return _cfg;
    +
    72 }
    +
    +
    +
    74 inline void config(const config_t& cfg)
    +
    75 {
    +
    76 _cfg = cfg;
    +
    77 }
    +
    +
    79
    +
    +
    81 inline m5::nfc::NFC NFCMode() const
    +
    82 {
    +
    83 return _nfcMode;
    +
    84 }
    +
    +
    90 bool configureNFCMode(const m5::nfc::NFC mode);
    +
    96 bool configureEmulationMode(const m5::nfc::NFC mode);
    +
    97
    +
    +
    103 inline bool isNFCMode(const m5::nfc::NFC mode)
    +
    104 {
    +
    105 return NFCMode() == mode;
    +
    106 }
    +
    +
    107
    +
    115 bool writeDirectCommand(const uint8_t cmd, const uint8_t* data = nullptr, const uint32_t dlen = 0u);
    +
    116
    +
    119
    +
    123 bool clearInterrupts();
    +
    125
    +
    128
    +
    135 bool writeInitiatorOperationMode(const st25r3916::InitiatorOperationMode mode, const uint8_t optional = 0);
    +
    143 bool writeTargetOperationMode(const st25r3916::TargetOperationMode mode, const uint8_t optional = 0);
    +
    144
    +
    145 bool writeBitrate(const m5::nfc::Bitrate tx, const m5::nfc::Bitrate rx);
    +
    147
    +
    150
    +
    157 bool readFIFOSize(uint16_t& bytes, uint8_t& bits);
    +
    166 uint32_t readFIFO(uint16_t& actual, uint8_t* buf, const uint16_t buf_size);
    +
    173 bool writeFIFO(const uint8_t* buf, const uint16_t buf_size);
    +
    175
    +
    178
    +
    +
    183 inline bool readIOConfiguration1(uint8_t& value)
    +
    184 {
    +
    185 return read_register8(st25r3916::command::REG_IO_CONFIGURATION_1, value);
    +
    186 }
    +
    +
    +
    192 inline bool writeIOConfiguration1(const uint8_t value)
    +
    193 {
    +
    194 return write_register8(st25r3916::command::REG_IO_CONFIGURATION_1, value);
    +
    195 }
    +
    +
    +
    201 inline bool readIOConfiguration2(uint8_t& value)
    +
    202 {
    +
    203 return read_register8(st25r3916::command::REG_IO_CONFIGURATION_2, value);
    +
    204 }
    +
    +
    +
    210 inline bool writeIOConfiguration2(const uint8_t value)
    +
    211 {
    +
    212 return write_register8(st25r3916::command::REG_IO_CONFIGURATION_2, value);
    +
    213 }
    +
    +
    +
    219 inline bool readIOConfiguration(uint16_t& value)
    +
    220 {
    +
    221 return read_register16(st25r3916::command::REG_IO_CONFIGURATION_1, value);
    +
    222 }
    +
    +
    +
    228 inline bool writeIOConfiguration(const uint16_t value)
    +
    229 {
    +
    230 return write_register16(st25r3916::command::REG_IO_CONFIGURATION_1, value);
    +
    231 }
    +
    +
    233
    +
    236
    +
    +
    241 inline bool readOperationControl(uint8_t& value)
    +
    242 {
    +
    243 return read_register8(st25r3916::command::REG_OPERATION_CONTROL, value);
    +
    244 }
    +
    +
    +
    250 inline bool writeOperationControl(const uint8_t value)
    +
    251 {
    +
    252 return write_register8(st25r3916::command::REG_OPERATION_CONTROL, value);
    +
    253 }
    +
    +
    +
    259 inline bool readModeDefinition(uint8_t& value)
    +
    260 {
    +
    261 return read_register8(st25r3916::command::REG_MODE_DEFINITION, value);
    +
    262 }
    +
    +
    +
    268 inline bool writeModeDefinition(const uint8_t value)
    +
    269 {
    +
    270 return write_register8(st25r3916::command::REG_MODE_DEFINITION, value);
    +
    271 }
    +
    +
    +
    277 inline bool readBitrateDefinition(uint8_t& value)
    +
    278 {
    +
    279 return read_register8(st25r3916::command::REG_BITRATE_DEFINITION, value);
    +
    280 }
    +
    +
    +
    286 inline bool writeBitrateDefinition(const uint8_t value)
    +
    287 {
    +
    288 return write_register8(st25r3916::command::REG_BITRATE_DEFINITION, value);
    +
    289 }
    +
    +
    291
    +
    294
    +
    +
    299 inline bool readSettingsISO14443A(uint8_t& value)
    +
    300 {
    +
    301 return read_register8(st25r3916::command::REG_ISO14443A_SETTINGS, value);
    +
    302 }
    +
    +
    +
    308 inline bool writeSettingsISO14443A(const uint8_t value)
    +
    309 {
    +
    310 return write_register8(st25r3916::command::REG_ISO14443A_SETTINGS, value);
    +
    311 }
    +
    +
    +
    317 inline bool readSettingsISO14443B(uint8_t& value)
    +
    318 {
    +
    319 return read_register8(st25r3916::command::REG_ISO14443B_SETTINGS, value);
    +
    320 }
    +
    +
    +
    326 inline bool writeSettingsISO14443B(const uint8_t value)
    +
    327 {
    +
    328 return write_register8(st25r3916::command::REG_ISO14443B_SETTINGS, value);
    +
    329 }
    +
    +
    +
    335 inline bool readSettingsFelica(uint8_t& value)
    +
    336 {
    +
    337 return read_register8(st25r3916::command::REG_FELICA_SETTINGS, value);
    +
    338 }
    +
    +
    +
    344 inline bool writeSettingsFelica(const uint8_t value)
    +
    345 {
    +
    346 return write_register8(st25r3916::command::REG_FELICA_SETTINGS, value);
    +
    347 }
    +
    +
    +
    353 inline bool readNFCIP1PassiveTargetDefinition(uint8_t& value)
    +
    354 {
    +
    355 return read_register8(st25r3916::command::REG_NFCIP_1_PASSIVE_TARGET_DEFINITION, value);
    +
    356 }
    +
    +
    +
    362 inline bool writeNFCIP1PassiveTargetDefinition(const uint8_t value)
    +
    363 {
    +
    364 return write_register8(st25r3916::command::REG_NFCIP_1_PASSIVE_TARGET_DEFINITION, value);
    +
    365 }
    +
    +
    +
    371 inline bool readStreamModeDefinition(uint8_t& value)
    +
    372 {
    +
    373 return read_register8(st25r3916::command::REG_STREAM_MODE_DEFINITION, value);
    +
    374 }
    +
    +
    +
    380 inline bool writeStreamModeDefinition(const uint8_t value)
    +
    381 {
    +
    382 return write_register8(st25r3916::command::REG_STREAM_MODE_DEFINITION, value);
    +
    383 }
    +
    +
    +
    389 inline bool readAuxiliaryDefinition(uint8_t& value)
    +
    390 {
    +
    391 return read_register8(st25r3916::command::REG_AUXILIARY_DEFINITION, value);
    +
    392 }
    +
    +
    +
    398 inline bool writeAuxiliaryDefinition(const uint8_t value)
    +
    399 {
    +
    400 return write_register8(st25r3916::command::REG_AUXILIARY_DEFINITION, value);
    +
    401 }
    +
    +
    402
    +
    +
    408 inline bool readEMDSuppressionConfiguration(uint8_t& value)
    +
    409 {
    +
    410 return read_register8(st25r3916::command::REG_EMD_SUPPRESSION_CONFIGURATION, value);
    +
    411 }
    +
    +
    +
    417 inline bool writeEMDSuppressionConfiguration(const uint8_t value)
    +
    418 {
    +
    419 return write_register8(st25r3916::command::REG_EMD_SUPPRESSION_CONFIGURATION, value);
    +
    420 }
    +
    +
    +
    426 inline bool readSubcarrierStartTimer(uint8_t& value)
    +
    427 {
    +
    428 return read_register8(st25r3916::command::REG_SUBCARRIER_START_TIMER, value);
    +
    429 }
    +
    +
    +
    435 inline bool writeSubcarrierStartTimer(const uint8_t value)
    +
    436 {
    +
    437 return write_register8(st25r3916::command::REG_SUBCARRIER_START_TIMER, value);
    +
    438 }
    +
    +
    440
    +
    443
    +
    +
    448 inline bool readReceiverConfiguration1(uint8_t& value)
    +
    449 {
    +
    450 return read_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_1, value);
    +
    451 }
    +
    +
    +
    457 inline bool writeReceiverConfiguration1(const uint8_t value)
    +
    458 {
    +
    459 return write_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_1, value);
    +
    460 }
    +
    +
    +
    466 inline bool readReceiverConfiguration2(uint8_t& value)
    +
    467 {
    +
    468 return read_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_2, value);
    +
    469 }
    +
    +
    +
    475 inline bool writeReceiverConfiguration2(const uint8_t value)
    +
    476 {
    +
    477 return write_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_2, value);
    +
    478 }
    +
    +
    +
    484 inline bool readReceiverConfiguration3(uint8_t& value)
    +
    485 {
    +
    486 return read_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_3, value);
    +
    487 }
    +
    +
    +
    493 inline bool writeReceiverConfiguration3(const uint8_t value)
    +
    494 {
    +
    495 return write_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_3, value);
    +
    496 }
    +
    +
    +
    502 inline bool readReceiverConfiguration4(uint8_t& value)
    +
    503 {
    +
    504 return read_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_4, value);
    +
    505 }
    +
    +
    +
    511 inline bool writeReceiverConfiguration4(const uint8_t value)
    +
    512 {
    +
    513 return write_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_4, value);
    +
    514 }
    +
    +
    +
    520 inline bool readReceiverConfiguration(uint32_t& value)
    +
    521 {
    +
    522 return read_register32(st25r3916::command::REG_RECEIVER_CONFIGURATION_1, value);
    +
    523 }
    +
    +
    +
    529 inline bool writeReceiverConfiguration(const uint32_t value)
    +
    530 {
    +
    531 return write_register32(st25r3916::command::REG_RECEIVER_CONFIGURATION_1, value);
    +
    532 }
    +
    +
    533
    +
    +
    539 inline bool readP2PReceiverConfiguration(uint8_t& value)
    +
    540 {
    +
    541 return read_register8(st25r3916::command::REG_P2P_RECEIVER_CONFIGURATION, value);
    +
    542 }
    +
    +
    +
    548 inline bool writeP2PReceiverConfiguration(const uint8_t value)
    +
    549 {
    +
    550 return write_register8(st25r3916::command::REG_P2P_RECEIVER_CONFIGURATION, value);
    +
    551 }
    +
    +
    +
    557 inline bool readCorrelatorConfiguration1(uint8_t& value)
    +
    558 {
    +
    559 return read_register8(st25r3916::command::REG_CORRELATOR_CONFIGURATION_1, value);
    +
    560 }
    +
    +
    +
    566 inline bool writeCorrelatorConfiguration1(const uint8_t value)
    +
    567 {
    +
    568 return write_register8(st25r3916::command::REG_CORRELATOR_CONFIGURATION_1, value);
    +
    569 }
    +
    +
    +
    575 inline bool readCorrelatorConfiguration2(uint8_t& value)
    +
    576 {
    +
    577 return read_register8(st25r3916::command::REG_CORRELATOR_CONFIGURATION_2, value);
    +
    578 }
    +
    +
    +
    584 inline bool writeCorrelatorConfiguration2(const uint8_t value)
    +
    585 {
    +
    586 return write_register8(st25r3916::command::REG_CORRELATOR_CONFIGURATION_2, value);
    +
    587 }
    +
    +
    +
    593 inline bool readCorrelatorConfiguration(uint16_t& value)
    +
    594 {
    +
    595 return read_register16(st25r3916::command::REG_CORRELATOR_CONFIGURATION_1, value);
    +
    596 }
    +
    +
    +
    602 inline bool writeCorrelatorConfiguration(const uint16_t value)
    +
    603 {
    +
    604 return write_register16(st25r3916::command::REG_CORRELATOR_CONFIGURATION_1, value);
    +
    605 }
    +
    +
    607
    +
    610
    +
    +
    615 inline bool readMaskReceiveTimer(uint8_t& value)
    +
    616 {
    +
    617 return read_register8(st25r3916::command::REG_MASK_RECEIVER_TIMER, value);
    +
    618 }
    +
    +
    +
    624 inline bool writeMaskReceiveTimer(const uint8_t value)
    +
    625 {
    +
    626 return write_register8(st25r3916::command::REG_MASK_RECEIVER_TIMER, value);
    +
    627 }
    +
    +
    +
    633 inline bool readNoResponseTimer1(uint8_t& value)
    +
    634 {
    +
    635 return read_register8(st25r3916::command::REG_NO_RESPONSE_TIMER_1, value);
    +
    636 }
    +
    +
    +
    642 inline bool writeNoResponseTimer1(const uint8_t value)
    +
    643 {
    +
    644 return write_register8(st25r3916::command::REG_NO_RESPONSE_TIMER_1, value);
    +
    645 }
    +
    +
    +
    651 inline bool readNoResponseTimer2(uint8_t& value)
    +
    652 {
    +
    653 return read_register8(st25r3916::command::REG_NO_RESPONSE_TIMER_2, value);
    +
    654 }
    +
    +
    +
    660 inline bool writeNoResponseTimer2(const uint8_t value)
    +
    661 {
    +
    662 return write_register8(st25r3916::command::REG_NO_RESPONSE_TIMER_2, value);
    +
    663 }
    +
    +
    +
    669 inline bool readNoResponseTimer(uint16_t& value)
    +
    670 {
    +
    671 return read_register16(st25r3916::command::REG_NO_RESPONSE_TIMER_1, value);
    +
    672 }
    +
    +
    +
    678 inline bool writeNoResponseTimer(const uint16_t value)
    +
    679 {
    +
    680 return write_register16(st25r3916::command::REG_NO_RESPONSE_TIMER_1, value);
    +
    681 }
    +
    +
    +
    687 inline bool readTimerAndEMVControl(uint8_t& value)
    +
    688 {
    +
    689 return read_register8(st25r3916::command::REG_TIMER_AND_EMV_CONTROL, value);
    +
    690 }
    +
    +
    +
    696 inline bool writeTimerAndEMVControl(const uint8_t value)
    +
    697 {
    +
    698 return write_register8(st25r3916::command::REG_TIMER_AND_EMV_CONTROL, value);
    +
    699 }
    +
    +
    +
    705 inline bool readGeneralPurposeTimer1(uint8_t& value)
    +
    706 {
    +
    707 return read_register8(st25r3916::command::REG_GENERAL_PURPOSE_TIMER_1, value);
    +
    708 }
    +
    +
    +
    714 inline bool writeGeneralPurposeTimer1(const uint8_t value)
    +
    715 {
    +
    716 return write_register8(st25r3916::command::REG_GENERAL_PURPOSE_TIMER_1, value);
    +
    717 }
    +
    +
    +
    723 inline bool readGeneralPurposeTimer2(uint8_t& value)
    +
    724 {
    +
    725 return read_register8(st25r3916::command::REG_GENERAL_PURPOSE_TIMER_2, value);
    +
    726 }
    +
    +
    +
    732 inline bool writeGeneralPurposeTimer2(const uint8_t value)
    +
    733 {
    +
    734 return write_register8(st25r3916::command::REG_GENERAL_PURPOSE_TIMER_2, value);
    +
    735 }
    +
    +
    +
    741 inline bool readGeneralPurposeTimer(uint16_t& value)
    +
    742 {
    +
    743 return read_register16(st25r3916::command::REG_GENERAL_PURPOSE_TIMER_1, value);
    +
    744 }
    +
    +
    +
    750 inline bool writeGeneralPurposeTimer(const uint16_t value)
    +
    751 {
    +
    752 return write_register16(st25r3916::command::REG_GENERAL_PURPOSE_TIMER_1, value);
    +
    753 }
    +
    +
    +
    759 inline bool readPPON2FieldWaiting(uint8_t& value)
    +
    760 {
    +
    761 return read_register8(st25r3916::command::REG_PPON2_FIELD_WAITING, value);
    +
    762 }
    +
    +
    +
    768 inline bool writePPON2FieldWaiting(const uint8_t value)
    +
    769 {
    +
    770 return write_register8(st25r3916::command::REG_PPON2_FIELD_WAITING, value);
    +
    771 }
    +
    +
    772
    +
    +
    778 inline bool readSquelchTimer(uint8_t& value)
    +
    779 {
    +
    780 return read_register8(st25r3916::command::REG_SQUELCH_TIMER, value);
    +
    781 }
    +
    +
    +
    787 inline bool writeSquelchTimer(const uint8_t value)
    +
    788 {
    +
    789 return write_register8(st25r3916::command::REG_SQUELCH_TIMER, value);
    +
    790 }
    +
    +
    +
    796 inline bool readNFCFieldOnGuardTimer(uint8_t& value)
    +
    797 {
    +
    798 return read_register8(st25r3916::command::REG_NFC_FIELD_ON_GUARD_TIMER, value);
    +
    799 }
    +
    +
    +
    805 inline bool writeNFCFieldOnGuardTimer(const uint8_t value)
    +
    806 {
    +
    807 return write_register8(st25r3916::command::REG_NFC_FIELD_ON_GUARD_TIMER, value);
    +
    808 }
    +
    +
    810
    +
    813
    +
    +
    818 inline bool readMaskMainInterrupt(uint8_t& value)
    +
    819 {
    +
    820 return read_register8(st25r3916::command::REG_MASK_MAIN_INTERRUPT, value);
    +
    821 }
    +
    +
    +
    827 inline bool writeMaskMainInterrupt(const uint8_t value)
    +
    828 {
    +
    829 if (write_register8(st25r3916::command::REG_MASK_MAIN_INTERRUPT, value)) {
    +
    830 _enabled_irq = (_enabled_irq & 0x00FFFFFF) | ((uint32_t)~value << 24);
    +
    831 return true;
    +
    832 }
    +
    833 return false;
    +
    834 }
    +
    +
    +
    840 inline bool readMaskTimerAndNFCInterrupt(uint8_t& value)
    +
    841 {
    +
    842 return read_register8(st25r3916::command::REG_MASK_TIMER_AND_NFC_INTERRUPT, value);
    +
    843 }
    +
    +
    +
    849 inline bool writeMaskTimerAndNFCInterrupt(const uint8_t value)
    +
    850 {
    +
    851 if (write_register8(st25r3916::command::REG_MASK_TIMER_AND_NFC_INTERRUPT, value)) {
    +
    852 _enabled_irq = (_enabled_irq & 0xFF00FFFF) | ((uint32_t)~value << 16);
    +
    853 return true;
    +
    854 }
    +
    855 return false;
    +
    856 }
    +
    +
    +
    862 inline bool readMaskErrorAndWakeupInterrupt(uint8_t& value)
    +
    863 {
    +
    864 return read_register8(st25r3916::command::REG_MASK_ERROR_AND_WAKEUP_INTERRUPT, value);
    +
    865 }
    +
    +
    +
    871 inline bool writeMaskErrorAndWakeupInterrupt(const uint8_t value)
    +
    872 {
    +
    873 if (write_register8(st25r3916::command::REG_MASK_ERROR_AND_WAKEUP_INTERRUPT, value)) {
    +
    874 _enabled_irq = (_enabled_irq & 0xFFFF00FF) | ((uint32_t)~value << 8);
    +
    875 return true;
    +
    876 }
    +
    877 return false;
    +
    878 }
    +
    +
    +
    884 inline bool readMaskPassiveTargetInterrupt(uint8_t& value)
    +
    885 {
    +
    886 return read_register8(st25r3916::command::REG_MASK_PASSIVE_TARGET_INTERRUPT, value);
    +
    887 }
    +
    +
    +
    893 inline bool writeMaskPassiveTargetInterrupt(const uint8_t value)
    +
    894 {
    +
    895 if (write_register8(st25r3916::command::REG_MASK_PASSIVE_TARGET_INTERRUPT, value)) {
    +
    896 _enabled_irq = (_enabled_irq & 0xFFFFFF00) | (uint32_t)~value;
    +
    897 return true;
    +
    898 }
    +
    899 return false;
    +
    900 }
    +
    +
    +
    906 inline bool readMaskInterrupts(uint32_t& value)
    +
    907 {
    +
    908 return read_register32(st25r3916::command::REG_MASK_MAIN_INTERRUPT, value);
    +
    909 }
    +
    +
    +
    915 inline bool writeMaskInterrupts(const uint32_t value)
    +
    916 {
    +
    917 if (write_register32(st25r3916::command::REG_MASK_MAIN_INTERRUPT, value)) {
    +
    918 _enabled_irq = ~value;
    +
    919 return true;
    +
    920 }
    +
    921 return false;
    +
    922 }
    +
    +
    923
    +
    +
    929 inline bool readMainInterrupt(uint8_t& value)
    +
    930 {
    +
    931 return read_register8(st25r3916::command::REG_MAIN_INTERRUPT, value);
    +
    932 }
    +
    +
    +
    938 inline bool readTimerAndNFCInterrupt(uint8_t& value)
    +
    939 {
    +
    940 return read_register8(st25r3916::command::REG_TIMER_AND_NFC_INTERRUPT, value);
    +
    941 }
    +
    +
    +
    948 inline bool readErrorAndWakeupInterrupt(uint8_t& value)
    +
    949 {
    +
    950 return read_register8(st25r3916::command::REG_ERROR_AND_WAKEUP_INTERRUPT, value);
    +
    951 }
    +
    +
    +
    957 inline bool readPassiveTargetInterrupt(uint8_t& value)
    +
    958 {
    +
    959 return read_register8(st25r3916::command::REG_PASSIVE_TARGET_INTERRUPT, value);
    +
    960 }
    +
    +
    966 bool readInterrupts(uint32_t& value);
    +
    967
    +
    +
    973 inline bool readFIFOStatus1(uint8_t& value)
    +
    974 {
    +
    975 return read_register8(st25r3916::command::REG_FIFO_STATUS_1, value);
    +
    976 }
    +
    +
    +
    982 inline bool readFIFOStatus2(uint8_t& value)
    +
    983 {
    +
    984 return read_register8(st25r3916::command::REG_FIFO_STATUS_2, value);
    +
    985 }
    +
    +
    +
    991 inline bool readFIFOStatus(uint16_t& value)
    +
    992 {
    +
    993 return read_register16(st25r3916::command::REG_FIFO_STATUS_1, value);
    +
    994 }
    +
    +
    995
    +
    +
    1001 inline bool readCollisionDisplay(uint8_t& value)
    +
    1002 {
    +
    1003 return read_register8(st25r3916::command::REG_COLLISION_DISPLAY, value);
    +
    1004 }
    +
    +
    +
    1010 inline bool readPassiveTargetDisplay(uint8_t& value)
    +
    1011 {
    +
    1012 return read_register8(st25r3916::command::REG_PASSIVE_TARGET_DISPLAY, value);
    +
    1013 }
    +
    +
    1015
    +
    1018
    +
    +
    1023 inline bool readNumberOfTransmittedBytes1(uint8_t& value)
    +
    1024 {
    +
    1025 return read_register8(st25r3916::command::REG_NUMBER_OF_TRANSMITTED_BYTES_1, value);
    +
    1026 }
    +
    +
    +
    1032 inline bool writeNumberOfTransmittedBytes1(const uint8_t value)
    +
    1033 {
    +
    1034 return write_register8(st25r3916::command::REG_NUMBER_OF_TRANSMITTED_BYTES_1, value);
    +
    1035 }
    +
    +
    +
    1041 inline bool readNumberOfTransmittedBytes2(uint8_t& value)
    +
    1042 {
    +
    1043 return read_register8(st25r3916::command::REG_NUMBER_OF_TRANSMITTED_BYTES_2, value);
    +
    1044 }
    +
    +
    +
    1050 inline bool writeNumberOfTransmittedBytes2(const uint8_t value)
    +
    1051 {
    +
    1052 return write_register8(st25r3916::command::REG_NUMBER_OF_TRANSMITTED_BYTES_2, value);
    +
    1053 }
    +
    +
    +
    1059 inline bool readNumberOfTransmittedBytes(uint16_t& value)
    +
    1060 {
    +
    1061 return read_register16(st25r3916::command::REG_NUMBER_OF_TRANSMITTED_BYTES_1, value);
    +
    1062 }
    +
    +
    +
    1068 inline bool writeNumberOfTransmittedBytes(const uint16_t value)
    +
    1069 {
    +
    1070 return write_register16(st25r3916::command::REG_NUMBER_OF_TRANSMITTED_BYTES_1, value);
    +
    1071 }
    +
    +
    1072
    +
    +
    1079 inline bool writeNumberOfTransmittedBytes(const uint16_t bytes, const uint8_t bits)
    +
    1080 {
    +
    1081 // M5_LIB_LOGD("TransmitBytes:%u, %u", bytes, bits);
    +
    1082 return writeNumberOfTransmittedBytes(((bytes & 0x01FF) << 3 /* ntx 0-12 */) | (bits & 0x07 /*nbtx 0-2*/));
    +
    1083 }
    +
    +
    1084
    +
    +
    1090 inline bool readBitrateDetectionDisplay(uint8_t& value)
    +
    1091 {
    +
    1092 return read_register8(st25r3916::command::REG_BITRATE_DETECTION_DISPLAY, value);
    +
    1093 }
    +
    +
    1095
    +
    1098
    +
    +
    1103 inline bool readADConverterOutput(uint8_t& value)
    +
    1104 {
    +
    1105 return read_register8(st25r3916::command::REG_AD_CONVERTER_OUTPUT, value);
    +
    1106 }
    +
    +
    1108
    +
    1111
    +
    +
    1116 inline bool readAntennaTuningControl1(uint8_t& value)
    +
    1117 {
    +
    1118 return read_register8(st25r3916::command::REG_ANTENNA_TUNING_CONTROL_1, value);
    +
    1119 }
    +
    +
    +
    1125 inline bool writeAntennaTuningControl1(const uint8_t value)
    +
    1126 {
    +
    1127 return write_register8(st25r3916::command::REG_ANTENNA_TUNING_CONTROL_1, value);
    +
    1128 }
    +
    +
    +
    1134 inline bool readAntennaTuningControl2(uint8_t& value)
    +
    1135 {
    +
    1136 return read_register8(st25r3916::command::REG_ANTENNA_TUNING_CONTROL_2, value);
    +
    1137 }
    +
    +
    +
    1143 inline bool writeAntennaTuningControl2(const uint8_t value)
    +
    1144 {
    +
    1145 return write_register8(st25r3916::command::REG_ANTENNA_TUNING_CONTROL_2, value);
    +
    1146 }
    +
    +
    +
    1152 inline bool readAntennaTuningControl(uint16_t& value)
    +
    1153 {
    +
    1154 return read_register16(st25r3916::command::REG_ANTENNA_TUNING_CONTROL_1, value);
    +
    1155 }
    +
    +
    +
    1161 inline bool writeAntennaTuningControl(const uint16_t value)
    +
    1162 {
    +
    1163 return write_register16(st25r3916::command::REG_ANTENNA_TUNING_CONTROL_1, value);
    +
    1164 }
    +
    +
    1166
    +
    1169
    +
    +
    1174 inline bool readTXDriver(uint8_t& value)
    +
    1175 {
    +
    1176 return read_register8(st25r3916::command::REG_TX_DRIVER, value);
    +
    1177 }
    +
    +
    +
    1183 inline bool writeTXDriver(const uint8_t value)
    +
    1184 {
    +
    1185 return write_register8(st25r3916::command::REG_TX_DRIVER, value);
    +
    1186 }
    +
    +
    +
    1192 inline bool readPassiveTargetModulation(uint8_t& value)
    +
    1193 {
    +
    1194 return read_register8(st25r3916::command::REG_PASSIVE_TARGET_MODULATION, value);
    +
    1195 }
    +
    +
    +
    1201 inline bool writePassiveTargetModulation(const uint8_t value)
    +
    1202 {
    +
    1203 return write_register8(st25r3916::command::REG_PASSIVE_TARGET_MODULATION, value);
    +
    1204 }
    +
    +
    1205
    +
    +
    1211 inline bool readAuxiliaryModulationSetting(uint8_t& value)
    +
    1212 {
    +
    1213 return read_register8(st25r3916::command::REG_AUXILIARY_MODULATION_SETTING, value);
    +
    1214 }
    +
    +
    +
    1220 inline bool writeAuxiliaryModulationSetting(const uint8_t value)
    +
    1221 {
    +
    1222 return write_register8(st25r3916::command::REG_AUXILIARY_MODULATION_SETTING, value);
    +
    1223 }
    +
    +
    +
    1229 inline bool readTXDriverTiming(uint8_t& value)
    +
    1230 {
    +
    1231 return read_register8(st25r3916::command::REG_TX_DRIVER_TIMING, value);
    +
    1232 }
    +
    +
    +
    1238 inline bool writeTXDriverTiming(const uint8_t value)
    +
    1239 {
    +
    1240 return write_register8(st25r3916::command::REG_TX_DRIVER_TIMING, value);
    +
    1241 }
    +
    +
    1243
    +
    1246
    +
    + +
    1252 {
    +
    1253 return read_register8(st25r3916::command::REG_EXTERNAL_FIELD_DETECTOR_ACTIVATION_THRESHOLD, value);
    +
    1254 }
    +
    +
    +
    1260 inline bool writeExternalFieldDetectorActivationThreshold(const uint8_t value)
    +
    1261 {
    +
    1262 return write_register8(st25r3916::command::REG_EXTERNAL_FIELD_DETECTOR_ACTIVATION_THRESHOLD, value);
    +
    1263 }
    +
    +
    + +
    1270 {
    +
    1271 return read_register8(st25r3916::command::REG_EXTERNAL_FIELD_DETECTOR_DEACTIVATION_THRESHOLD, value);
    +
    1272 }
    +
    +
    + +
    1279 {
    +
    1280 return write_register8(st25r3916::command::REG_EXTERNAL_FIELD_DETECTOR_DEACTIVATION_THRESHOLD, value);
    +
    1281 }
    +
    +
    1282
    +
    +
    1288 inline bool readResistiveAMModulation(uint8_t& value)
    +
    1289 {
    +
    1290 return read_register8(st25r3916::command::REG_RESISTIVE_AM_MODULATION, value);
    +
    1291 }
    +
    +
    +
    1297 inline bool writeResistiveAMModulation(const uint8_t value)
    +
    1298 {
    +
    1299 return write_register8(st25r3916::command::REG_RESISTIVE_AM_MODULATION, value);
    +
    1300 }
    +
    +
    +
    1306 inline bool readTXDriverTimingDisplay(uint8_t& value)
    +
    1307 {
    +
    1308 return read_register8(st25r3916::command::REG_TX_DRIVER_TIMING_DISPLAY, value);
    +
    1309 }
    +
    +
    1311
    +
    1314
    +
    +
    1319 inline bool readRegulatorVoltageControl(uint8_t& value)
    +
    1320 {
    +
    1321 return read_register8(st25r3916::command::REG_REGULATOR_VOLTAGE_CONTROL, value);
    +
    1322 }
    +
    +
    +
    1328 inline bool writeRegulatorVoltageControl(const uint8_t value)
    +
    1329 {
    +
    1330 return write_register8(st25r3916::command::REG_REGULATOR_VOLTAGE_CONTROL, value);
    +
    1331 }
    +
    +
    +
    1337 inline bool readRegulatorDisplay(uint8_t& value)
    +
    1338 {
    +
    1339 return read_register8(st25r3916::command::REG_REGULATOR_DISPLAY, value);
    +
    1340 }
    +
    +
    1342
    +
    1345
    +
    +
    1350 inline bool readRSSIDisplay(uint8_t& value)
    +
    1351 {
    +
    1352 return read_register8(st25r3916::command::REG_RSSI_DISPLAY, value);
    +
    1353 }
    +
    +
    +
    1359 inline bool readGainReductionState(uint8_t& value)
    +
    1360 {
    +
    1361 return read_register8(st25r3916::command::REG_GAIN_REDUCTION_STATE, value);
    +
    1362 }
    +
    +
    1364
    +
    1367
    +
    +
    1372 inline bool readCapacitiveSensorControl(uint8_t& value)
    +
    1373 {
    +
    1374 return read_register8(st25r3916::command::REG_CAPACITIVE_SENSOR_CONTROL, value);
    +
    1375 }
    +
    +
    +
    1381 inline bool writeCapacitiveSensorControl(const uint8_t value)
    +
    1382 {
    +
    1383 return write_register8(st25r3916::command::REG_CAPACITIVE_SENSOR_CONTROL, value);
    +
    1384 }
    +
    +
    +
    1390 inline bool readCapacitiveSensorDisplay(uint8_t& value)
    +
    1391 {
    +
    1392 return read_register8(st25r3916::command::REG_CAPACITIVE_SENSOR_DISPLAY, value);
    +
    1393 }
    +
    +
    1395
    +
    1398
    +
    +
    1403 inline bool readAuxiliaryDisplay(uint8_t& value)
    +
    1404 {
    +
    1405 return read_register8(st25r3916::command::REG_AUXILIARY_DISPLAY, value);
    +
    1406 }
    +
    +
    1408
    +
    1411
    +
    +
    1416 inline bool readWakeupTimerControl(uint8_t& value)
    +
    1417 {
    +
    1418 return read_register8(st25r3916::command::REG_WAKEUP_TIMER_CONTROL, value);
    +
    1419 }
    +
    +
    +
    1425 inline bool writeWakeupTimerControl(const uint8_t value)
    +
    1426 {
    +
    1427 return write_register8(st25r3916::command::REG_WAKEUP_TIMER_CONTROL, value);
    +
    1428 }
    +
    +
    1429
    +
    +
    1435 inline bool readAmplitudeMeasurementConfiguration(uint8_t& value)
    +
    1436 {
    +
    1437 return read_register8(st25r3916::command::REG_AMPLITUDE_MEASUREMENT_CONFIGURATION, value);
    +
    1438 }
    +
    +
    +
    1444 inline bool writeAmplitudeMeasurementConfiguration(const uint8_t value)
    +
    1445 {
    +
    1446 return write_register8(st25r3916::command::REG_AMPLITUDE_MEASUREMENT_CONFIGURATION, value);
    +
    1447 }
    +
    +
    +
    1453 inline bool readAmplitudeMeasurementReference(uint8_t& value)
    +
    1454 {
    +
    1455 return read_register8(st25r3916::command::REG_AMPLITUDE_MEASUREMENT_REFERENCE, value);
    +
    1456 }
    +
    +
    +
    1462 inline bool writeAmplitudeMeasurementReference(const uint8_t value)
    +
    1463 {
    +
    1464 return write_register8(st25r3916::command::REG_AMPLITUDE_MEASUREMENT_REFERENCE, value);
    +
    1465 }
    +
    +
    + +
    1472 {
    +
    1473 return read_register8(st25r3916::command::REG_AMPLITUDE_MEASUREMENT_AUTO_AVERAGING_DISPLAY, value);
    +
    1474 }
    +
    +
    +
    1480 inline bool readAmplitudeMeasurementDisplay(uint8_t& value)
    +
    1481 {
    +
    1482 return read_register8(st25r3916::command::REG_AMPLITUDE_MEASUREMENT_DISPLAY, value);
    +
    1483 }
    +
    +
    1484
    +
    +
    1490 inline bool readPhaseMeasurementConfiguration(uint8_t& value)
    +
    1491 {
    +
    1492 return read_register8(st25r3916::command::REG_PHASE_MEASUREMENT_CONFIGURATION, value);
    +
    1493 }
    +
    +
    +
    1499 inline bool writePhaseMeasurementConfiguration(const uint8_t value)
    +
    1500 {
    +
    1501 return write_register8(st25r3916::command::REG_PHASE_MEASUREMENT_CONFIGURATION, value);
    +
    1502 }
    +
    +
    +
    1508 inline bool readPhaseMeasurementReference(uint8_t& value)
    +
    1509 {
    +
    1510 return read_register8(st25r3916::command::REG_PHASE_MEASUREMENT_REFERENCE, value);
    +
    1511 }
    +
    +
    +
    1517 inline bool writePhaseMeasurementReference(const uint8_t value)
    +
    1518 {
    +
    1519 return write_register8(st25r3916::command::REG_PHASE_MEASUREMENT_REFERENCE, value);
    +
    1520 }
    +
    +
    + +
    1527 {
    +
    1528 return read_register8(st25r3916::command::REG_PHASE_MEASUREMENT_AUTO_AVERAGING_DISPLAY, value);
    +
    1529 }
    +
    +
    +
    1535 inline bool readPhaseMeasurementDisplay(uint8_t& value)
    +
    1536 {
    +
    1537 return read_register8(st25r3916::command::REG_PHASE_MEASUREMENT_DISPLAY, value);
    +
    1538 }
    +
    +
    1539
    +
    + +
    1546 {
    +
    1547 return read_register8(st25r3916::command::REG_CAPACITANCE_MEASUREMENT_CONFIGURATION, value);
    +
    1548 }
    +
    +
    +
    1554 inline bool writeCapacitanceMeasurementConfiguration(const uint8_t value)
    +
    1555 {
    +
    1556 return write_register8(st25r3916::command::REG_CAPACITANCE_MEASUREMENT_CONFIGURATION, value);
    +
    1557 }
    +
    +
    +
    1563 inline bool readCapacitanceMeasurementReference(uint8_t& value)
    +
    1564 {
    +
    1565 return read_register8(st25r3916::command::REG_CAPACITANCE_MEASUREMENT_REFERENCE, value);
    +
    1566 }
    +
    +
    +
    1572 inline bool writeCapacitanceMeasurementReference(const uint8_t value)
    +
    1573 {
    +
    1574 return write_register8(st25r3916::command::REG_CAPACITANCE_MEASUREMENT_REFERENCE, value);
    +
    1575 }
    +
    +
    + +
    1582 {
    +
    1583 return read_register8(st25r3916::command::REG_CAPACITANCE_MEASUREMENT_AUTO_AVERAGING_DISPLAY, value);
    +
    1584 }
    +
    +
    +
    1590 inline bool readCapacitanceMeasurementDisplay(uint8_t& value)
    +
    1591 {
    +
    1592 return read_register8(st25r3916::command::REG_CAPACITANCE_MEASUREMENT_DISPLAY, value);
    +
    1593 }
    +
    +
    1595
    +
    1598
    +
    +
    1603 inline bool readOvershootProtectionConfiguration1(uint8_t& value)
    +
    1604 {
    +
    1605 return read_register8(st25r3916::command::REG_OVERSHOOT_PROTECTION_CONFIGURATION_1, value);
    +
    1606 }
    +
    +
    +
    1612 inline bool writeOvershootProtectionConfiguration1(const uint8_t value)
    +
    1613 {
    +
    1614 return write_register8(st25r3916::command::REG_OVERSHOOT_PROTECTION_CONFIGURATION_1, value);
    +
    1615 }
    +
    +
    +
    1621 inline bool readOvershootProtectionConfiguration2(uint8_t& value)
    +
    1622 {
    +
    1623 return read_register8(st25r3916::command::REG_OVERSHOOT_PROTECTION_CONFIGURATION_2, value);
    +
    1624 }
    +
    +
    +
    1630 inline bool writeOvershootProtectionConfiguration2(const uint8_t value)
    +
    1631 {
    +
    1632 return write_register8(st25r3916::command::REG_OVERSHOOT_PROTECTION_CONFIGURATION_2, value);
    +
    1633 }
    +
    +
    +
    1639 inline bool readOvershootProtectionConfiguration(uint16_t& value)
    +
    1640 {
    +
    1641 return read_register16(st25r3916::command::REG_OVERSHOOT_PROTECTION_CONFIGURATION_1, value);
    +
    1642 }
    +
    +
    +
    1648 inline bool writeOvershootProtectionConfiguration(const uint16_t value)
    +
    1649 {
    +
    1650 return write_register16(st25r3916::command::REG_OVERSHOOT_PROTECTION_CONFIGURATION_1, value);
    +
    1651 }
    +
    +
    1652
    +
    +
    1658 inline bool readUndershootProtectionConfiguration1(uint8_t& value)
    +
    1659 {
    +
    1660 return read_register8(st25r3916::command::REG_UNDERSHOOT_PROTECTION_CONFIGURATION_1, value);
    +
    1661 }
    +
    +
    +
    1667 inline bool writeUndershootProtectionConfiguration1(const uint8_t value)
    +
    1668 {
    +
    1669 return write_register8(st25r3916::command::REG_UNDERSHOOT_PROTECTION_CONFIGURATION_1, value);
    +
    1670 }
    +
    +
    +
    1676 inline bool readUndershootProtectionConfiguration2(uint8_t& value)
    +
    1677 {
    +
    1678 return read_register8(st25r3916::command::REG_UNDERSHOOT_PROTECTION_CONFIGURATION_2, value);
    +
    1679 }
    +
    +
    +
    1685 inline bool writeUndershootProtectionConfiguration2(const uint8_t value)
    +
    1686 {
    +
    1687 return write_register8(st25r3916::command::REG_UNDERSHOOT_PROTECTION_CONFIGURATION_2, value);
    +
    1688 }
    +
    +
    +
    1694 inline bool readUndershootProtectionConfiguration(uint16_t& value)
    +
    1695 {
    +
    1696 return read_register16(st25r3916::command::REG_UNDERSHOOT_PROTECTION_CONFIGURATION_1, value);
    +
    1697 }
    +
    +
    +
    1703 inline bool writeUndershootProtectionConfiguration(const uint16_t value)
    +
    1704 {
    +
    1705 return write_register16(st25r3916::command::REG_UNDERSHOOT_PROTECTION_CONFIGURATION_1, value);
    +
    1706 }
    +
    +
    1708
    +
    1711
    +
    1717 bool readICIdentity(uint8_t& type, uint8_t& rev);
    +
    1719
    +
    1722
    +
    1727 bool disableField();
    +
    1733 bool enableField();
    +
    1735
    +
    1736 // ----------------------------------------------------------------------------------------------
    +
    1739
    +
    1749 uint32_t nfcaTransceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
    +
    1750 const uint32_t timeout_ms);
    +
    1751 bool nfcaTransmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms);
    +
    1752 bool nfcaReceive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms);
    +
    1753
    +
    +
    1759 inline bool nfcaRequest(uint16_t& atqa)
    +
    1760 {
    +
    1761 return nfca_request_wakeup(atqa, true);
    +
    1762 }
    +
    +
    +
    1768 inline bool nfcaWakeup(uint16_t& atqa)
    +
    1769 {
    +
    1770 return nfca_request_wakeup(atqa, false);
    +
    1771 }
    +
    +
    1780 bool nfcaSelectWithAnticollision(bool& completed, m5::nfc::a::PICC& picc, const uint8_t lv);
    +
    1786 bool nfcaSelect(const m5::nfc::a::PICC& picc);
    +
    1794 bool nfcaReadBlock(uint8_t rx[16], const uint8_t block);
    +
    1801 bool nfcaWriteBlock(const uint8_t block, const uint8_t tx[16]);
    +
    1806 bool nfcaHlt();
    +
    1808
    +
    1809 // ----------------------------------------------------------------------------------------------
    +
    1812
    +
    + +
    1820 const m5::nfc::a::PICC& picc, const uint8_t block,
    +
    1821 const m5::nfc::a::mifare::classic::Key& key = m5::nfc::a::mifare::classic::DEFAULT_KEY)
    +
    1822 {
    +
    1823 return mifare_classic_authenticate(m5::nfc::a::Command::AUTH_WITH_KEY_A, picc, block, key);
    +
    1824 }
    +
    +
    + +
    1833 const m5::nfc::a::PICC& picc, const uint8_t block,
    +
    1834 const m5::nfc::a::mifare::classic::Key& key = m5::nfc::a::mifare::classic::DEFAULT_KEY)
    +
    1835 {
    +
    1836 return mifare_classic_authenticate(m5::nfc::a::Command::AUTH_WITH_KEY_B, picc, block, key);
    +
    1837 }
    +
    +
    1845 bool mifareClassicValueBlock(const m5::nfc::a::Command cmd, const uint8_t block, const uint32_t arg = 0);
    +
    1847
    +
    1848 // ----------------------------------------------------------------------------------------------
    +
    1851
    +
    1860 bool nfcbTransceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
    +
    1861 const uint32_t timeout_ms);
    +
    1869 bool nfcbTransmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms);
    +
    1877 bool nfcbReceive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms);
    +
    1879
    +
    1880 // ----------------------------------------------------------------------------------------------
    +
    1883
    +
    1892 bool nfcfTransceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
    +
    1893 const uint32_t timeout_ms);
    +
    1901 bool nfcfTransmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms);
    +
    1909 bool nfcfReceive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms);
    +
    1911
    +
    1912 // ----------------------------------------------------------------------------------------------
    +
    1915
    +
    1926 bool nfcvTransceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_bytes,
    +
    1927 const uint32_t timeout_ms,
    +
    1928 const m5::nfc::v::ModulationMode mode = m5::nfc::v::ModulationMode::OneOf4);
    +
    1937 bool nfcvTransmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms,
    +
    1938 const m5::nfc::v::ModulationMode mode = m5::nfc::v::ModulationMode::OneOf4);
    +
    1946 bool nfcvReceive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms);
    +
    1948
    +
    1951 bool writePtMemoryA(const uint8_t* tx, const uint32_t tx_len);
    +
    1952 bool writePtMemoryF(const uint8_t* tx, const uint32_t tx_len);
    +
    1953 bool writePtMemoryTSN(const uint8_t* tx, const uint32_t tx_len);
    +
    1954 bool readPtMemory(uint8_t* rx, const uint32_t rx_len);
    +
    1956
    +
    1957 // For debug
    +
    1958 void dumpRegister();
    +
    1959
    +
    1960protected:
    +
    1961 friend struct m5::nfc::ListenerST25R3916ForA;
    +
    1962 friend struct m5::nfc::ListenerST25R3916ForF;
    +
    1963
    +
    1964 static void IRAM_ATTR on_irq(void* arg);
    +
    1965
    +
    1966 bool read_register8(const uint8_t reg, uint8_t& v);
    +
    1967 bool read_register8(const uint16_t reg, uint8_t& v);
    +
    1968 bool write_register8(const uint8_t reg, const uint8_t v);
    +
    1969 bool write_register8(const uint16_t reg, const uint8_t v);
    +
    1970 bool read_register16(const uint8_t reg, uint16_t& v);
    +
    1971 bool read_register16(const uint16_t reg, uint16_t& v);
    +
    1972 bool write_register16(const uint8_t reg, const uint16_t v);
    +
    1973 bool write_register16(const uint16_t reg, const uint16_t v);
    +
    1974 bool read_register32(const uint8_t reg, uint32_t& v);
    +
    1975 bool read_register32(const uint16_t reg, uint32_t& v);
    +
    1976 bool write_register32(const uint8_t reg, const uint32_t v);
    +
    1977 bool write_register32(const uint16_t reg, const uint32_t v);
    +
    1978
    +
    1979 bool write_fwt_timer(const uint32_t ms);
    +
    1980 bool write_mask_receiver_timer(const uint32_t us);
    +
    1981 bool write_squelch_timer(const uint32_t us);
    +
    1982
    +
    1983 uint32_t wait_for_interrupt(const uint32_t irq, const uint32_t timeout_ms = 100);
    +
    1984
    +
    1985 bool wait_for_FIFO(const uint32_t timeout_ms, const uint16_t required_size = 0);
    +
    1986 bool read_FIFO(std::vector<uint8_t>& out);
    +
    1987
    +
    1988 // Mode configuration
    +
    1989 bool configure_nfc_a();
    +
    1990 bool configure_nfc_b();
    +
    1991 bool configure_nfc_f();
    +
    1992 bool configure_nfc_v();
    +
    1993 bool nfc_initial_field_on();
    +
    1994
    +
    1995 bool configure_emulation_a();
    +
    1996 bool configure_emulation_f();
    +
    1997
    +
    1998 // Utility
    +
    1999 bool modify_bit_register8(const uint8_t reg, const uint8_t set_mask, const uint8_t clear_mask);
    +
    2000 bool modify_bit_register8(const uint16_t reg, const uint8_t set_mask, const uint8_t clear_mask);
    +
    2001 bool set_bit_register8(const uint8_t reg, const uint8_t bits);
    +
    2002 bool set_bit_register8(const uint16_t reg, const uint8_t bits);
    +
    2003 bool clear_bit_register8(const uint8_t reg, const uint8_t bits);
    +
    2004 bool clear_bit_register8(const uint16_t reg, const uint8_t bits);
    +
    2005 inline bool change_bit_register8(const uint8_t reg, const uint8_t bits, const uint8_t mask)
    +
    2006 {
    +
    2007 return modify_bit_register8(reg, mask & bits, mask);
    +
    2008 }
    +
    2009 inline bool change_bit_register8(const uint16_t reg, const uint8_t bits, const uint8_t mask)
    +
    2010 {
    +
    2011 return modify_bit_register8(reg, mask & bits, mask);
    +
    2012 }
    +
    2013 bool change_test_bit_register8(const uint8_t reg, const uint8_t bits, const uint8_t mask);
    +
    2014 bool change_test_bit_register8(const uint16_t reg, const uint8_t bits, const uint8_t mask);
    +
    2015
    +
    2016 bool modify_interrupts(const uint32_t clr, const uint32_t set);
    +
    2017 inline bool enable_interrupts(const uint32_t mask)
    +
    2018 {
    +
    2019 return modify_interrupts(mask, 0);
    +
    2020 }
    +
    2021 inline bool disable_interrupts(const uint32_t mask)
    +
    2022 {
    +
    2023 return modify_interrupts(0, mask);
    +
    2024 }
    +
    2025
    +
    2026 bool enable_osc();
    +
    2027 bool disable_field();
    +
    2028
    +
    2029 // NFC-A
    +
    2030 bool nfca_request_wakeup(uint16_t& atqa, const bool req);
    +
    2031 bool nfca_anti_collision(uint8_t rbuf[5], const uint8_t lv);
    +
    2032
    +
    2033 // MIFARE
    +
    2034 bool mifare_classic_send_encrypt(const uint8_t* tx, const uint16_t tx_len);
    +
    2035 bool mifare_classic_transceive_encrypt(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
    +
    2036 const uint32_t timeout_ms, const bool include_crc, const bool decrypt);
    +
    2037 bool mifare_classic_authenticate(const m5::nfc::a::Command cmd, const m5::nfc::a::PICC& picc, const uint8_t block,
    + +
    2039
    +
    2040private:
    +
    2041 config_t _cfg{};
    +
    2042
    +
    2043 volatile uint32_t _stored_irq{};
    +
    2044 uint32_t _enabled_irq{}; // for !_using_irq
    +
    2045
    +
    2046 volatile bool _interrupt_occurred{};
    +
    2047 m5::nfc::NFC _nfcMode{};
    +
    2048 bool _encrypted{};
    +
    2049 bool _using_irq{};
    +
    2050
    + +
    2052};
    +
    +
    2053
    +
    + +
    2059 M5_UNIT_COMPONENT_HPP_BUILDER(CapST25R3916, 0x06 /* SPI CS pin */);
    +
    2060
    +
    2061public:
    +
    2062 explicit CapST25R3916(const uint8_t cs_pin = DEFAULT_ADDRESS);
    +
    2063 virtual ~CapST25R3916() = default;
    +
    2064
    +
    2065 virtual bool begin() override;
    +
    2066};
    +
    +
    2067
    +
    2068} // namespace unit
    +
    2069} // namespace m5
    +
    2070#endif
    +
    Definitions for ST25R3916.
    +
    InitiatorOperationMode
    Initiator operation modes.
    Definition ST25R3916_definition.hpp:29
    +
    TargetOperationMode
    Target operation modes.
    Definition ST25R3916_definition.hpp:44
    +
    Crypto1 for MIFARE Classic.
    Definition mifare_classic_crypto1.hpp:26
    +
    ST25R3916 unit in CapCC1101 (SPI)
    Definition unit_ST25R3916.hpp:2058
    +
    ST25R3916 Unit.
    Definition unit_ST25R3916.hpp:38
    +
    bool readFIFOStatus(uint16_t &value)
    Read the FIFO status 1-2.
    Definition unit_ST25R3916.hpp:991
    +
    bool readPhaseMeasurementAutoAveragingDisplay(uint8_t &value)
    Read the phase measurement auto-averaging display.
    Definition unit_ST25R3916.hpp:1526
    +
    bool writeMaskTimerAndNFCInterrupt(const uint8_t value)
    Write the mask timer and NFC interrupt.
    Definition unit_ST25R3916.hpp:849
    +
    bool readCapacitanceMeasurementAutoAveragingDisplay(uint8_t &value)
    Read the capacitance measurement auto-averaging display.
    Definition unit_ST25R3916.hpp:1581
    +
    bool readMaskMainInterrupt(uint8_t &value)
    Read the mask main interrupt.
    Definition unit_ST25R3916.hpp:818
    +
    bool readOperationControl(uint8_t &value)
    Read the operation control.
    Definition unit_ST25R3916.hpp:241
    +
    bool writeResistiveAMModulation(const uint8_t value)
    Write the resistive AM modulation.
    Definition unit_ST25R3916.hpp:1297
    +
    bool readADConverterOutput(uint8_t &value)
    Read the number of transmitted bytes 2.
    Definition unit_ST25R3916.hpp:1103
    +
    bool writeEMDSuppressionConfiguration(const uint8_t value)
    Write the EMD suppression configuration.
    Definition unit_ST25R3916.hpp:417
    +
    bool nfcaHlt()
    Hlt for PICC.
    Definition unit_ST25R3916_nfca.cpp:467
    +
    bool writeIOConfiguration1(const uint8_t value)
    Write the I/O configuration 1.
    Definition unit_ST25R3916.hpp:192
    +
    bool readSquelchTimer(uint8_t &value)
    Read the squelch timer.
    Definition unit_ST25R3916.hpp:778
    +
    bool readMaskReceiveTimer(uint8_t &value)
    Read the mask receive timer.
    Definition unit_ST25R3916.hpp:615
    +
    bool readPassiveTargetInterrupt(uint8_t &value)
    Read the passive target interrupt.
    Definition unit_ST25R3916.hpp:957
    +
    bool readTimerAndNFCInterrupt(uint8_t &value)
    Read the timer and NFC interrupt.
    Definition unit_ST25R3916.hpp:938
    +
    bool readAntennaTuningControl1(uint8_t &value)
    Read the Antenna tuning control 1.
    Definition unit_ST25R3916.hpp:1116
    +
    bool writeMaskReceiveTimer(const uint8_t value)
    Write the mask receive timer.
    Definition unit_ST25R3916.hpp:624
    +
    bool writeNumberOfTransmittedBytes(const uint16_t value)
    Write the number of transmitted bytes 1-2.
    Definition unit_ST25R3916.hpp:1068
    +
    bool writeDirectCommand(const uint8_t cmd, const uint8_t *data=nullptr, const uint32_t dlen=0u)
    Write the direct command with data.
    Definition unit_ST25R3916.cpp:376
    +
    bool writeCorrelatorConfiguration(const uint16_t value)
    Write the correlator configuration 1-2.
    Definition unit_ST25R3916.hpp:602
    +
    bool writeExternalFieldDetectorDeactivationThreshold(const uint8_t value)
    Write the external field detector deactivation threshold.
    Definition unit_ST25R3916.hpp:1278
    +
    bool writeTargetOperationMode(const st25r3916::TargetOperationMode mode, const uint8_t optional=0)
    Write the initiator operation mode and transition to target mode.
    Definition unit_ST25R3916.cpp:411
    +
    uint32_t nfcaTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
    Transceive.
    Definition unit_ST25R3916_nfca.cpp:180
    +
    bool readExternalFieldDetectorActivationThreshold(uint8_t &value)
    Read the external field detector activation threshold.
    Definition unit_ST25R3916.hpp:1251
    +
    bool readRegulatorVoltageControl(uint8_t &value)
    Read the regulator voltage control.
    Definition unit_ST25R3916.hpp:1319
    +
    bool readICIdentity(uint8_t &type, uint8_t &rev)
    Read the IC identity.
    Definition unit_ST25R3916.cpp:472
    +
    bool writeAmplitudeMeasurementReference(const uint8_t value)
    Write the amplitude measurement reference.
    Definition unit_ST25R3916.hpp:1462
    +
    bool writeExternalFieldDetectorActivationThreshold(const uint8_t value)
    Write the external field detector activation threshold.
    Definition unit_ST25R3916.hpp:1260
    +
    bool readAntennaTuningControl(uint16_t &value)
    Read the Antenna tuning control 1-2.
    Definition unit_ST25R3916.hpp:1152
    +
    bool writeOvershootProtectionConfiguration(const uint16_t value)
    Write the overshoot protection configuration 1-2.
    Definition unit_ST25R3916.hpp:1648
    +
    bool readInterrupts(uint32_t &value)
    Read the all interrupt.
    Definition unit_ST25R3916.cpp:382
    +
    bool readErrorAndWakeupInterrupt(uint8_t &value)
    Read the error and wake-up interrupt.
    Definition unit_ST25R3916.hpp:948
    +
    bool writeNoResponseTimer(const uint16_t value)
    Write the no-response timer 1-2.
    Definition unit_ST25R3916.hpp:678
    +
    bool readReceiverConfiguration3(uint8_t &value)
    Read the receiver configuration 3.
    Definition unit_ST25R3916.hpp:484
    +
    bool readSubcarrierStartTimer(uint8_t &value)
    Read the subcarrier start timer.
    Definition unit_ST25R3916.hpp:426
    +
    bool writeAntennaTuningControl1(const uint8_t value)
    Write the Antenna tuning control 1.
    Definition unit_ST25R3916.hpp:1125
    +
    bool clearInterrupts()
    Clear interrupts flag.
    Definition unit_ST25R3916.cpp:397
    +
    bool readNFCIP1PassiveTargetDefinition(uint8_t &value)
    Read the NFCIP-1 passive target definition.
    Definition unit_ST25R3916.hpp:353
    +
    bool writeSettingsISO14443A(const uint8_t value)
    Write the settings for ISO14443A and NFC 106kb/s.
    Definition unit_ST25R3916.hpp:308
    +
    bool readIOConfiguration2(uint8_t &value)
    Read the I/O configuration 2.
    Definition unit_ST25R3916.hpp:201
    +
    bool writeUndershootProtectionConfiguration1(const uint8_t value)
    Write the undershoot protection configuration 1.
    Definition unit_ST25R3916.hpp:1667
    +
    bool writeAmplitudeMeasurementConfiguration(const uint8_t value)
    Write the amplitude measurement configuration.
    Definition unit_ST25R3916.hpp:1444
    +
    bool nfcbTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
    Transmit to NFC-B PICC.
    Definition unit_ST25R3916_nfcb.cpp:155
    +
    bool readOvershootProtectionConfiguration(uint16_t &value)
    Read the overshoot protection configuration 1-2.
    Definition unit_ST25R3916.hpp:1639
    +
    bool writeReceiverConfiguration4(const uint8_t value)
    Write the receiver configuration 4.
    Definition unit_ST25R3916.hpp:511
    +
    bool readCapacitanceMeasurementReference(uint8_t &value)
    Read the capacitance measurement reference.
    Definition unit_ST25R3916.hpp:1563
    +
    bool writeIOConfiguration(const uint16_t value)
    Definition unit_ST25R3916.hpp:228
    +
    bool readSettingsFelica(uint8_t &value)
    Read the settings for ISO14443B and FeliCa.
    Definition unit_ST25R3916.hpp:335
    +
    void config(const config_t &cfg)
    Set the configuration.
    Definition unit_ST25R3916.hpp:74
    +
    bool writeGeneralPurposeTimer2(const uint8_t value)
    Write the general purpose timer 2.
    Definition unit_ST25R3916.hpp:732
    +
    bool writeSettingsISO14443B(const uint8_t value)
    Write the settings for ISO14443B.
    Definition unit_ST25R3916.hpp:326
    +
    bool writePPON2FieldWaiting(const uint8_t value)
    Write the PPON2 field waiting.
    Definition unit_ST25R3916.hpp:768
    +
    bool nfcvReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
    Receive from NFC-V PICC.
    Definition unit_ST25R3916_nfcv.cpp:132
    +
    bool readTXDriverTimingDisplay(uint8_t &value)
    Read the TX driver timing display.
    Definition unit_ST25R3916.hpp:1306
    +
    bool writeBitrateDefinition(const uint8_t value)
    Write the bitrate definition.
    Definition unit_ST25R3916.hpp:286
    +
    bool nfcaWriteBlock(const uint8_t block, const uint8_t tx[16])
    Write the 1 block / 4 pages (16 bytes)
    Definition unit_ST25R3916_nfca.cpp:510
    +
    bool writeWakeupTimerControl(const uint8_t value)
    Write the Wake-up timer control.
    Definition unit_ST25R3916.hpp:1425
    +
    bool nfcaRequest(uint16_t &atqa)
    Request for idle PICC.
    Definition unit_ST25R3916.hpp:1759
    +
    bool readBitrateDefinition(uint8_t &value)
    Read the bitrate definition.
    Definition unit_ST25R3916.hpp:277
    +
    bool readFIFOStatus1(uint8_t &value)
    Read the FIFO status 1.
    Definition unit_ST25R3916.hpp:973
    +
    bool readFIFOStatus2(uint8_t &value)
    Read the FIFO status 1.
    Definition unit_ST25R3916.hpp:982
    +
    bool writeCapacitiveSensorControl(const uint8_t value)
    Write the capacitive sensor control.
    Definition unit_ST25R3916.hpp:1381
    +
    bool readMaskTimerAndNFCInterrupt(uint8_t &value)
    Read the mask timer and NFC interrupt.
    Definition unit_ST25R3916.hpp:840
    +
    bool writeOperationControl(const uint8_t value)
    Write the operation control.
    Definition unit_ST25R3916.hpp:250
    +
    bool readStreamModeDefinition(uint8_t &value)
    Read the stream mode definition.
    Definition unit_ST25R3916.hpp:371
    +
    bool mifareClassicAuthenticateB(const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
    Authentication using keyB of the specified block.
    Definition unit_ST25R3916.hpp:1832
    +
    bool writeTXDriverTiming(const uint8_t value)
    Write the TX driver timing.
    Definition unit_ST25R3916.hpp:1238
    +
    bool writeCorrelatorConfiguration1(const uint8_t value)
    Write the correlator configuration 1.
    Definition unit_ST25R3916.hpp:566
    +
    bool writeCapacitanceMeasurementReference(const uint8_t value)
    Write the capacitance measurement reference.
    Definition unit_ST25R3916.hpp:1572
    +
    bool readAuxiliaryModulationSetting(uint8_t &value)
    Read the auxiliary modulation setting.
    Definition unit_ST25R3916.hpp:1211
    +
    bool writeFIFO(const uint8_t *buf, const uint16_t buf_size)
    Write to FIFO.
    Definition unit_ST25R3916.cpp:458
    +
    bool readMaskInterrupts(uint32_t &value)
    Read the all mask.
    Definition unit_ST25R3916.hpp:906
    +
    bool readMaskPassiveTargetInterrupt(uint8_t &value)
    Read the mask passive target interrupt.
    Definition unit_ST25R3916.hpp:884
    +
    bool readUndershootProtectionConfiguration(uint16_t &value)
    Read the undershoot protection configuration 1-2.
    Definition unit_ST25R3916.hpp:1694
    +
    bool writeCorrelatorConfiguration2(const uint8_t value)
    Write the correlator configuration 2.
    Definition unit_ST25R3916.hpp:584
    +
    bool writeOvershootProtectionConfiguration2(const uint8_t value)
    Write the overshoot protection configuration 2.
    Definition unit_ST25R3916.hpp:1630
    +
    bool nfcaReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
    Transceive.
    Definition unit_ST25R3916_nfca.cpp:208
    +
    bool nfcfTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
    Transceive with NFC-F PICC.
    Definition unit_ST25R3916_nfcf.cpp:79
    +
    bool writeGeneralPurposeTimer(const uint16_t value)
    Write the general purpose timer 1-2.
    Definition unit_ST25R3916.hpp:750
    +
    bool readReceiverConfiguration(uint32_t &value)
    Read the receiver configuration 1-4.
    Definition unit_ST25R3916.hpp:520
    +
    bool readPhaseMeasurementConfiguration(uint8_t &value)
    Read the phase measurement configuration.
    Definition unit_ST25R3916.hpp:1490
    +
    bool readReceiverConfiguration2(uint8_t &value)
    Read the receiver configuration 2.
    Definition unit_ST25R3916.hpp:466
    +
    bool readSettingsISO14443A(uint8_t &value)
    Read the settings for ISO14443A and NFC 106kb/s.
    Definition unit_ST25R3916.hpp:299
    +
    bool writeInitiatorOperationMode(const st25r3916::InitiatorOperationMode mode, const uint8_t optional=0)
    Write the initiator operation mode and transition to initiator mode.
    Definition unit_ST25R3916.cpp:404
    +
    bool writeP2PReceiverConfiguration(const uint8_t value)
    Write the P2P receiver configuration.
    Definition unit_ST25R3916.hpp:548
    +
    bool writeNoResponseTimer2(const uint8_t value)
    Write the no-response timer 2.
    Definition unit_ST25R3916.hpp:660
    +
    bool nfcvTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_bytes, const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode=m5::nfc::v::ModulationMode::OneOf4)
    Transceive.
    Definition unit_ST25R3916_nfcv.cpp:90
    +
    bool configureNFCMode(const m5::nfc::NFC mode)
    Configure NFC mode.
    Definition unit_ST25R3916.cpp:244
    +
    uint32_t readFIFO(uint16_t &actual, uint8_t *buf, const uint16_t buf_size)
    Read from FIFO.
    Definition unit_ST25R3916.cpp:437
    +
    bool readAmplitudeMeasurementConfiguration(uint8_t &value)
    Read the amplitude measurement configuration.
    Definition unit_ST25R3916.hpp:1435
    +
    bool readGainReductionState(uint8_t &value)
    Read the gain reduction state.
    Definition unit_ST25R3916.hpp:1359
    +
    bool writeNumberOfTransmittedBytes1(const uint8_t value)
    Write the number of transmitted bytes 1.
    Definition unit_ST25R3916.hpp:1032
    +
    bool readCapacitanceMeasurementDisplay(uint8_t &value)
    Read the capacitance measurement display.
    Definition unit_ST25R3916.hpp:1590
    +
    bool writeNoResponseTimer1(const uint8_t value)
    Write the no-response timer 1.
    Definition unit_ST25R3916.hpp:642
    +
    bool writeNFCFieldOnGuardTimer(const uint8_t value)
    Write the NFC field on guard timer.
    Definition unit_ST25R3916.hpp:805
    +
    bool readMainInterrupt(uint8_t &value)
    Read the main interrupt.
    Definition unit_ST25R3916.hpp:929
    +
    bool readAmplitudeMeasurementDisplay(uint8_t &value)
    Read the amplitude measurement display.
    Definition unit_ST25R3916.hpp:1480
    +
    bool readNumberOfTransmittedBytes1(uint8_t &value)
    Read the number of transmitted bytes 1.
    Definition unit_ST25R3916.hpp:1023
    +
    bool writePassiveTargetModulation(const uint8_t value)
    Write the passive target modulation.
    Definition unit_ST25R3916.hpp:1201
    +
    bool writeMaskErrorAndWakeupInterrupt(const uint8_t value)
    Write the mask error and wake-up interrupt.
    Definition unit_ST25R3916.hpp:871
    +
    bool readGeneralPurposeTimer2(uint8_t &value)
    Read the general purpose timer 2.
    Definition unit_ST25R3916.hpp:723
    +
    bool writeBitrate(const m5::nfc::Bitrate tx, const m5::nfc::Bitrate rx)
    Write the initiator operation mode and transition to initiator mode.
    Definition unit_ST25R3916.cpp:418
    +
    bool writePhaseMeasurementReference(const uint8_t value)
    Write the phase measurement reference.
    Definition unit_ST25R3916.hpp:1517
    +
    bool readEMDSuppressionConfiguration(uint8_t &value)
    Read the EMD suppression configuration.
    Definition unit_ST25R3916.hpp:408
    +
    bool isNFCMode(const m5::nfc::NFC mode)
    Is the current operating mode the one specified?
    Definition unit_ST25R3916.hpp:103
    +
    bool readOvershootProtectionConfiguration1(uint8_t &value)
    Read the overshoot protection configuration 1.
    Definition unit_ST25R3916.hpp:1603
    +
    bool writePhaseMeasurementConfiguration(const uint8_t value)
    Write the phase measurement configuration.
    Definition unit_ST25R3916.hpp:1499
    +
    bool writeIOConfiguration2(const uint8_t value)
    Definition unit_ST25R3916.hpp:210
    +
    bool writeUndershootProtectionConfiguration2(const uint8_t value)
    Write the undershoot protection configuration 2.
    Definition unit_ST25R3916.hpp:1685
    +
    bool readP2PReceiverConfiguration(uint8_t &value)
    Read the P2P receiver configuration.
    Definition unit_ST25R3916.hpp:539
    +
    bool writeRegulatorVoltageControl(const uint8_t value)
    Write the regulator voltage control.
    Definition unit_ST25R3916.hpp:1328
    +
    bool writeTimerAndEMVControl(const uint8_t value)
    Write the timer and EMV control.
    Definition unit_ST25R3916.hpp:696
    +
    bool writeNumberOfTransmittedBytes2(const uint8_t value)
    Write the number of transmitted bytes 2.
    Definition unit_ST25R3916.hpp:1050
    +
    bool writeReceiverConfiguration1(const uint8_t value)
    Write the receiver configuration 1.
    Definition unit_ST25R3916.hpp:457
    +
    bool nfcaTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
    Transceive.
    Definition unit_ST25R3916_nfca.cpp:190
    +
    bool readGeneralPurposeTimer(uint16_t &value)
    Read the general purpose timer 1-2.
    Definition unit_ST25R3916.hpp:741
    +
    bool nfcaReadBlock(uint8_t rx[16], const uint8_t block)
    Read the 1 block / 4 pages (16 bytes)
    Definition unit_ST25R3916_nfca.cpp:495
    +
    bool readTXDriver(uint8_t &value)
    Read the TX driver.
    Definition unit_ST25R3916.hpp:1174
    +
    bool mifareClassicValueBlock(const m5::nfc::a::Command cmd, const uint8_t block, const uint32_t arg=0)
    Operation for the value block.
    Definition unit_ST25R3916_nfca.cpp:761
    +
    bool readRegulatorDisplay(uint8_t &value)
    Read the regulator display.
    Definition unit_ST25R3916.hpp:1337
    +
    bool readMaskErrorAndWakeupInterrupt(uint8_t &value)
    Read the mask error and wake-up interrupt.
    Definition unit_ST25R3916.hpp:862
    +
    bool writeMaskMainInterrupt(const uint8_t value)
    Write the mask main interrupt.
    Definition unit_ST25R3916.hpp:827
    +
    bool readIOConfiguration(uint16_t &value)
    Read the I/O configuration 1-2.
    Definition unit_ST25R3916.hpp:219
    +
    bool readCollisionDisplay(uint8_t &value)
    Read the collision display.
    Definition unit_ST25R3916.hpp:1001
    +
    bool readExternalFieldDetectorDeactivationThreshold(uint8_t &value)
    Read the external field detector deactivation threshold.
    Definition unit_ST25R3916.hpp:1269
    +
    bool readCorrelatorConfiguration(uint16_t &value)
    Read the correlator configuration 1-2.
    Definition unit_ST25R3916.hpp:593
    +
    bool readOvershootProtectionConfiguration2(uint8_t &value)
    Read the overshoot protection configuration 2.
    Definition unit_ST25R3916.hpp:1621
    +
    bool writeMaskPassiveTargetInterrupt(const uint8_t value)
    Write the mask passive target interrupt.
    Definition unit_ST25R3916.hpp:893
    +
    config_t config()
    Gets the configuration.
    Definition unit_ST25R3916.hpp:69
    +
    bool writeReceiverConfiguration(const uint32_t value)
    Write the receiver configuration 1-4.
    Definition unit_ST25R3916.hpp:529
    +
    bool nfcaWakeup(uint16_t &atqa)
    Wakeup for idle/halt PICC.
    Definition unit_ST25R3916.hpp:1768
    +
    bool writeGeneralPurposeTimer1(const uint8_t value)
    Write the general purpose timer 1.
    Definition unit_ST25R3916.hpp:714
    +
    bool writeAuxiliaryModulationSetting(const uint8_t value)
    Write the auxiliary modulation setting.
    Definition unit_ST25R3916.hpp:1220
    +
    bool readCapacitiveSensorDisplay(uint8_t &value)
    Read the capacitive sensor display.
    Definition unit_ST25R3916.hpp:1390
    +
    bool readTimerAndEMVControl(uint8_t &value)
    Read the timer and EMV control.
    Definition unit_ST25R3916.hpp:687
    +
    bool readPhaseMeasurementReference(uint8_t &value)
    Read the phase measurement reference.
    Definition unit_ST25R3916.hpp:1508
    +
    bool disableField()
    Disable the Field to stop communication with the PICC.
    Definition unit_ST25R3916.cpp:484
    +
    bool readNoResponseTimer1(uint8_t &value)
    Read the no-response timer 1.
    Definition unit_ST25R3916.hpp:633
    +
    bool writeNumberOfTransmittedBytes(const uint16_t bytes, const uint8_t bits)
    Write the number of transmitted bytes and after bytes.
    Definition unit_ST25R3916.hpp:1079
    +
    bool readGeneralPurposeTimer1(uint8_t &value)
    Read the general purpose timer 1.
    Definition unit_ST25R3916.hpp:705
    +
    bool writeSquelchTimer(const uint8_t value)
    Write the squelch timer.
    Definition unit_ST25R3916.hpp:787
    +
    bool writeSettingsFelica(const uint8_t value)
    Write the settings for ISO14443B and FeliCa.
    Definition unit_ST25R3916.hpp:344
    +
    bool readReceiverConfiguration4(uint8_t &value)
    Definition unit_ST25R3916.hpp:502
    +
    bool readNoResponseTimer(uint16_t &value)
    Read the no-response timer 1-2.
    Definition unit_ST25R3916.hpp:669
    +
    bool readCapacitiveSensorControl(uint8_t &value)
    Read the capacitive sensor control.
    Definition unit_ST25R3916.hpp:1372
    +
    bool readFIFOSize(uint16_t &bytes, uint8_t &bits)
    Read the FIFO size.
    Definition unit_ST25R3916.cpp:424
    +
    bool writeMaskInterrupts(const uint32_t value)
    Write the all mask.
    Definition unit_ST25R3916.hpp:915
    +
    bool writeReceiverConfiguration3(const uint8_t value)
    Write the receiver configuration 3.
    Definition unit_ST25R3916.hpp:493
    +
    bool writeNFCIP1PassiveTargetDefinition(const uint8_t value)
    Definition unit_ST25R3916.hpp:362
    +
    m5::nfc::NFC NFCMode() const
    Gets the current operating mode.
    Definition unit_ST25R3916.hpp:81
    +
    bool readBitrateDetectionDisplay(uint8_t &value)
    Read the bit rate detection display.
    Definition unit_ST25R3916.hpp:1090
    +
    bool readCapacitanceMeasurementConfiguration(uint8_t &value)
    Read the capacitance measurement configuration.
    Definition unit_ST25R3916.hpp:1545
    +
    bool readNFCFieldOnGuardTimer(uint8_t &value)
    Read the NFC field on guard timer.
    Definition unit_ST25R3916.hpp:796
    +
    bool writeAuxiliaryDefinition(const uint8_t value)
    Write the Auxiliary definition.
    Definition unit_ST25R3916.hpp:398
    +
    bool readAntennaTuningControl2(uint8_t &value)
    Read the Antenna tuning control 2.
    Definition unit_ST25R3916.hpp:1134
    +
    bool readSettingsISO14443B(uint8_t &value)
    Read the settings for ISO14443B.
    Definition unit_ST25R3916.hpp:317
    +
    bool readCorrelatorConfiguration2(uint8_t &value)
    Read the correlator configuration 2.
    Definition unit_ST25R3916.hpp:575
    +
    bool writeAntennaTuningControl(const uint16_t value)
    Write the Antenna tuning control 1-2.
    Definition unit_ST25R3916.hpp:1161
    +
    bool nfcvTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode=m5::nfc::v::ModulationMode::OneOf4)
    Definition unit_ST25R3916_nfcv.cpp:99
    +
    bool readPPON2FieldWaiting(uint8_t &value)
    Read the PPON2 field waiting.
    Definition unit_ST25R3916.hpp:759
    +
    bool writeModeDefinition(const uint8_t value)
    Write the mode definition.
    Definition unit_ST25R3916.hpp:268
    +
    bool configureEmulationMode(const m5::nfc::NFC mode)
    Configure NFC mode for emulation.
    Definition unit_ST25R3916.cpp:285
    +
    bool nfcbTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
    Transceive with NFC-B PICC.
    Definition unit_ST25R3916_nfcb.cpp:149
    +
    bool readUndershootProtectionConfiguration1(uint8_t &value)
    Read the undershoot protection configuration 1.
    Definition unit_ST25R3916.hpp:1658
    +
    bool readNumberOfTransmittedBytes(uint16_t &value)
    Read the number of transmitted bytes 1-2.
    Definition unit_ST25R3916.hpp:1059
    +
    bool enableField()
    Enable the Field to begin communication with the PICC.
    Definition unit_ST25R3916.cpp:494
    +
    bool readAmplitudeMeasurementAutoAveragingDisplay(uint8_t &value)
    Read the amplitude measurement auto-averaging display.
    Definition unit_ST25R3916.hpp:1471
    +
    bool readWakeupTimerControl(uint8_t &value)
    Read the Wake-up timer control.
    Definition unit_ST25R3916.hpp:1416
    +
    bool writeAntennaTuningControl2(const uint8_t value)
    Write the Antenna tuning control 2.
    Definition unit_ST25R3916.hpp:1143
    +
    bool readPassiveTargetDisplay(uint8_t &value)
    Read the passive target.
    Definition unit_ST25R3916.hpp:1010
    +
    bool writeStreamModeDefinition(const uint8_t value)
    Write the stream mode definition.
    Definition unit_ST25R3916.hpp:380
    +
    bool readModeDefinition(uint8_t &value)
    Read the mode definition.
    Definition unit_ST25R3916.hpp:259
    +
    bool readPhaseMeasurementDisplay(uint8_t &value)
    Read the phase measurement display.
    Definition unit_ST25R3916.hpp:1535
    +
    bool readAmplitudeMeasurementReference(uint8_t &value)
    Read the amplitude measurement reference.
    Definition unit_ST25R3916.hpp:1453
    +
    bool nfcaSelect(const m5::nfc::a::PICC &picc)
    Select specific PICC.
    Definition unit_ST25R3916_nfca.cpp:420
    +
    bool readIOConfiguration1(uint8_t &value)
    Read the I/O configuration 1.
    Definition unit_ST25R3916.hpp:183
    +
    bool writeReceiverConfiguration2(const uint8_t value)
    Write the receiver configuration 2.
    Definition unit_ST25R3916.hpp:475
    +
    bool readNoResponseTimer2(uint8_t &value)
    Read the no-response timer 2.
    Definition unit_ST25R3916.hpp:651
    +
    bool readRSSIDisplay(uint8_t &value)
    Read the external field detector deactivation threshold.
    Definition unit_ST25R3916.hpp:1350
    +
    bool readCorrelatorConfiguration1(uint8_t &value)
    Read the correlator configuration 1.
    Definition unit_ST25R3916.hpp:557
    +
    bool nfcfReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
    Receive from NFC-F PICC.
    Definition unit_ST25R3916_nfcf.cpp:104
    +
    bool writeTXDriver(const uint8_t value)
    Write the TX driver.
    Definition unit_ST25R3916.hpp:1183
    +
    bool nfcbReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
    Receive from NFC-B PICC.
    Definition unit_ST25R3916_nfcb.cpp:175
    +
    bool writeUndershootProtectionConfiguration(const uint16_t value)
    Write the undershoot protection configuration 1-2.
    Definition unit_ST25R3916.hpp:1703
    +
    bool readUndershootProtectionConfiguration2(uint8_t &value)
    Read the undershoot protection configuration 2.
    Definition unit_ST25R3916.hpp:1676
    +
    bool readAuxiliaryDefinition(uint8_t &value)
    Read the Auxiliary definition.
    Definition unit_ST25R3916.hpp:389
    +
    bool readReceiverConfiguration1(uint8_t &value)
    Read the receiver configuration 1.
    Definition unit_ST25R3916.hpp:448
    +
    bool nfcaSelectWithAnticollision(bool &completed, m5::nfc::a::PICC &picc, const uint8_t lv)
    Select PICC with anti-collision.
    Definition unit_ST25R3916_nfca.cpp:360
    +
    bool readAuxiliaryDisplay(uint8_t &value)
    Read the auxiliary display.
    Definition unit_ST25R3916.hpp:1403
    +
    bool writeSubcarrierStartTimer(const uint8_t value)
    Write the subcarrier start timer.
    Definition unit_ST25R3916.hpp:435
    +
    bool readResistiveAMModulation(uint8_t &value)
    Read the resistive AM modulation.
    Definition unit_ST25R3916.hpp:1288
    +
    bool nfcfTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
    Definition unit_ST25R3916_nfcf.cpp:85
    +
    bool writeOvershootProtectionConfiguration1(const uint8_t value)
    Write the overshoot protection configuration 1.
    Definition unit_ST25R3916.hpp:1612
    +
    bool readNumberOfTransmittedBytes2(uint8_t &value)
    Read the number of transmitted bytes 2.
    Definition unit_ST25R3916.hpp:1041
    +
    bool mifareClassicAuthenticateA(const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
    Authentication using keyA of the specified block.
    Definition unit_ST25R3916.hpp:1819
    +
    bool readTXDriverTiming(uint8_t &value)
    Read the TX driver timing.
    Definition unit_ST25R3916.hpp:1229
    +
    bool readPassiveTargetModulation(uint8_t &value)
    Read the passive target modulation.
    Definition unit_ST25R3916.hpp:1192
    +
    bool writeCapacitanceMeasurementConfiguration(const uint8_t value)
    Write the capacitance measurement configuration.
    Definition unit_ST25R3916.hpp:1554
    +
    MIFARE definitions.
    +
    std::array< uint8_t, 6 > Key
    MIFARE classic Key.
    Definition mifare.hpp:50
    +
    Crypto1 for MIFARE Classic.
    +
    Top level namespace of M5stack.
    +
    NFC related definitions.
    +
    Unit-related namespace.
    +
    NFC-V definitions.
    +
    NFC definitions.
    +
    NFC
    NFC type.
    Definition nfc.hpp:27
    +
    Bitrate
    Communication bitrate.
    Definition nfc.hpp:52
    +
    NFC-A definitions.
    +
    Command
    ISO-14443-3/4,MIFARE,NTAG commands.
    Definition nfca.hpp:538
    +
    NFC-B definitions.
    +
    NFC-F definitions.
    +
    NFC-V definitions.
    +
    ModulationMode
    Definition nfcv.hpp:73
    +
    Definition emulation_layer_a_ST25R3916.cpp:52
    +
    Definition emulation_layer_f_ST25R3916.cpp:67
    +
    PICC for NFC-A.
    Definition nfca.hpp:335
    +
    Settings for begin.
    Definition unit_ST25R3916.hpp:57
    +
    bool using_irq
    Exists IRQ PIN?
    Definition unit_ST25R3916.hpp:61
    +
    bool vdd_voltage_5V
    VDD voltage true:5V false:3.3V.
    Definition unit_ST25R3916.hpp:59
    +
    m5::nfc::NFC mode
    Initial target for Poll/Listen.
    Definition unit_ST25R3916.hpp:58
    +
    uint8_t irq
    IRQ PIN.
    Definition unit_ST25R3916.hpp:62
    +
    bool emulation
    Emulation mode?
    Definition unit_ST25R3916.hpp:63
    +
    uint8_t tx_am_modulation
    0-15 See also 4.5.48 TX driver register
    Definition unit_ST25R3916.hpp:60
    +
    +
    + + + + diff --git a/unit___s_t25_r3916__nfca_8cpp.html b/unit___s_t25_r3916__nfca_8cpp.html new file mode 100644 index 0000000..150d28e --- /dev/null +++ b/unit___s_t25_r3916__nfca_8cpp.html @@ -0,0 +1,159 @@ + + + + + + + +M5Unit-NFC: src/unit/unit_ST25R3916_nfca.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    unit_ST25R3916_nfca.cpp File Reference
    +
    +
    + +

    class UnitST25R3916 implementation for NFC-A +More...

    +
    #include "unit_ST25R3916.hpp"
    +#include <M5Utility.hpp>
    +#include <esp_random.h>
    +
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    + + + +

    +Macros

    #define CHECK_MODE()
     
    +

    Detailed Description

    +

    class UnitST25R3916 implementation for NFC-A

    +

    Macro Definition Documentation

    + +

    ◆ CHECK_MODE

    + +
    +
    + + + + + + + +
    #define CHECK_MODE()
    +
    +Value:
    do { \
    +
    if (!isNFCMode(NFC::A)) { \
    +
    M5_LIB_LOGE("Illegal mode %u", NFCMode()); \
    +
    return false; \
    +
    } \
    +
    } while (0)
    +
    +
    +
    +
    +
    + + + + diff --git a/unit___s_t25_r3916__nfcb_8cpp.html b/unit___s_t25_r3916__nfcb_8cpp.html new file mode 100644 index 0000000..96d34b0 --- /dev/null +++ b/unit___s_t25_r3916__nfcb_8cpp.html @@ -0,0 +1,158 @@ + + + + + + + +M5Unit-NFC: src/unit/unit_ST25R3916_nfcb.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    unit_ST25R3916_nfcb.cpp File Reference
    +
    +
    + +

    class UnitST25R3916 implementation for NFC-B +More...

    +
    #include "unit_ST25R3916.hpp"
    +#include <M5Utility.hpp>
    +
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    + + + +

    +Macros

    #define CHECK_MODE()
     
    +

    Detailed Description

    +

    class UnitST25R3916 implementation for NFC-B

    +

    Macro Definition Documentation

    + +

    ◆ CHECK_MODE

    + +
    +
    + + + + + + + +
    #define CHECK_MODE()
    +
    +Value:
    do { \
    +
    if (!isNFCMode(NFC::B)) { \
    +
    M5_LIB_LOGE("Illegal mode %u", NFCMode()); \
    +
    return false; \
    +
    } \
    +
    } while (0)
    +
    +
    +
    +
    +
    + + + + diff --git a/unit___s_t25_r3916__nfcf_8cpp.html b/unit___s_t25_r3916__nfcf_8cpp.html new file mode 100644 index 0000000..ee61229 --- /dev/null +++ b/unit___s_t25_r3916__nfcf_8cpp.html @@ -0,0 +1,158 @@ + + + + + + + +M5Unit-NFC: src/unit/unit_ST25R3916_nfcf.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    unit_ST25R3916_nfcf.cpp File Reference
    +
    +
    + +

    class UnitST25R3916 implementation for NFC-F +More...

    +
    #include "unit_ST25R3916.hpp"
    +#include <M5Utility.hpp>
    +
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    + + + +

    +Macros

    #define CHECK_MODE()
     
    +

    Detailed Description

    +

    class UnitST25R3916 implementation for NFC-F

    +

    Macro Definition Documentation

    + +

    ◆ CHECK_MODE

    + +
    +
    + + + + + + + +
    #define CHECK_MODE()
    +
    +Value:
    do { \
    +
    if (!isNFCMode(NFC::F)) { \
    +
    M5_LIB_LOGE("Illegal mode %u", NFCMode()); \
    +
    return false; \
    +
    } \
    +
    } while (0)
    +
    +
    +
    +
    +
    + + + + diff --git a/unit___s_t25_r3916__nfcv_8cpp.html b/unit___s_t25_r3916__nfcv_8cpp.html new file mode 100644 index 0000000..73cfa45 --- /dev/null +++ b/unit___s_t25_r3916__nfcv_8cpp.html @@ -0,0 +1,158 @@ + + + + + + + +M5Unit-NFC: src/unit/unit_ST25R3916_nfcv.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    unit_ST25R3916_nfcv.cpp File Reference
    +
    +
    + +

    class UnitST25R3916 implementation for NFC-V +More...

    +
    #include "unit_ST25R3916.hpp"
    +#include <M5Utility.hpp>
    +
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    + + + +

    +Macros

    #define CHECK_MODE()
     
    +

    Detailed Description

    +

    class UnitST25R3916 implementation for NFC-V

    +

    Macro Definition Documentation

    + +

    ◆ CHECK_MODE

    + +
    +
    + + + + + + + +
    #define CHECK_MODE()
    +
    +Value:
    do { \
    +
    if (!isNFCMode(NFC::V)) { \
    +
    M5_LIB_LOGE("Illegal mode %u", NFCMode()); \
    +
    return false; \
    +
    } \
    +
    } while (0)
    +
    +
    +
    +
    +
    + + + + diff --git a/unit___s_t25_r3916__util_8cpp.html b/unit___s_t25_r3916__util_8cpp.html new file mode 100644 index 0000000..32dc3e3 --- /dev/null +++ b/unit___s_t25_r3916__util_8cpp.html @@ -0,0 +1,148 @@ + + + + + + + +M5Unit-NFC: src/unit/unit_ST25R3916_util.cpp File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    M5Unit-NFC 0.0.1 git rev:4dda34e +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    unit_ST25R3916_util.cpp File Reference
    +
    +
    + +

    Utility API. +More...

    +
    #include "unit_ST25R3916.hpp"
    +#include <M5Utility.hpp>
    +
    + + + + +

    +Namespaces

    namespace  m5
     Top level namespace of M5stack.
     
    + + + +

    +Macros

    +#define TRANSACTION_GUARD()   transaction_guard _tg_(adapter())
     
    + + + + + + + +

    +Functions

    +uint16_t m5::unit::st25r3916::calculate_nrt (const uint32_t ms, const bool nrt_step)
     
    +uint8_t m5::unit::st25r3916::calculate_mrt (const uint32_t us, const bool mrt_step)
     
    +uint8_t m5::unit::st25r3916::calculate_fdt (const uint32_t us)
     
    +

    Detailed Description

    +

    Utility API.

    +
    +
    + + + +