17#ifndef M5_UNIT_NFC_NFC_LAYER_A_EMULATION_LAYER_A_HPP
18#define M5_UNIT_NFC_NFC_LAYER_A_EMULATION_LAYER_A_HPP
21#include <m5_utility/compatibility_feature.hpp>
46 enum class State { None, Off, Idle, Ready, Active, Halt };
108 void update_expired();
116 bool transmit(
const uint8_t* tx,
const uint16_t tx_len,
const uint32_t timeout_ms);
122 void update_active();
127 uint32_t _memory_size{};
130 State _state{}, _prev{};
131 uint32_t _expired_ms{10 * 1000u};
132 m5::utility::elapsed_time_t _activity_at{};
133 std::unique_ptr<Adapter> _impl;
139struct EmulationLayerA::Adapter {
140 virtual ~Adapter() =
default;
143 virtual bool stop_emulation() = 0;
144 virtual bool transmit(
const uint8_t* tx,
const uint16_t tx_len,
const uint32_t timeout_ms) = 0;
146 virtual EmulationLayerA::State update_off() = 0;
147 virtual EmulationLayerA::State update_idle() = 0;
148 virtual EmulationLayerA::State update_ready() = 0;
149 virtual EmulationLayerA::State update_active() = 0;
150 virtual EmulationLayerA::State update_halt() = 0;
154 virtual EmulationLayerA::State reset_to_off()
156 return EmulationLayerA::State::Off;
162 virtual bool consume_rf_activity()
Common interface layer for each chip of the NFC-A emulation.
Definition emulation_layer_a.hpp:40
bool end()
End NFC-A emulation.
Definition emulation_layer_a.cpp:62
const m5::nfc::a::PICC & emulatePICC() const
Gets the emulated PICC information.
Definition emulation_layer_a.hpp:61
State
Emulation state for NFC-A.
Definition emulation_layer_a.hpp:46
bool begin(const m5::nfc::a::PICC &picc, uint8_t *ptr, const uint32_t size)
Begin NFC-A emulation.
Definition emulation_layer_a.cpp:33
void setExpiredTime(const uint32_t ms)
Sets the expiration time (ms)
Definition emulation_layer_a.hpp:80
uint32_t expiredTime() const
Gets the expiration time (ms)
Definition emulation_layer_a.hpp:66
void update()
Update emulation state machine.
Definition emulation_layer_a.cpp:87
State state() const
Gets the current emulation state.
Definition emulation_layer_a.hpp:56
virtual State receive_callback(const uint8_t *rx, const uint32_t rx_len)
Handles a command received from the reader.
Definition emulation_layer_a.cpp:158
ST25R3916 unit in CapCC1101 (SPI)
Definition unit_ST25R3916.hpp:2150
ST25R3916 Unit.
Definition unit_ST25R3916.hpp:39
Top level namespace of M5Stack.
PICC for NFC-A.
Definition nfca.hpp:481