M5Unit-NFC 0.1.1 git rev:9bb1360
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:
29 virtual ~NFCLayerInterface() = default;
30
33 {
34 return m5::nfc::NFCForumTag::None;
35 }
38 {
39 return file_system_feature_t(0);
40 }
43 {
44 return nullptr;
45 }
47 virtual uint16_t maximum_fifo_depth() const = 0;
48
58 virtual bool transceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
59 const uint32_t timeout_ms)
60 {
61 return false;
62 }
63
71 virtual bool transmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms)
72 {
73 return false;
74 }
82 virtual bool receive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms)
83 {
84 return false;
85 }
86
94 virtual bool read(uint8_t* rx, uint16_t& rx_len, const uint16_t saddr) = 0;
102 virtual bool write(const uint16_t saddr, const uint8_t* tx, const uint16_t tx_len) = 0;
103
105 virtual uint16_t first_user_block() const = 0;
107 virtual uint16_t last_user_block() const = 0;
109 virtual uint16_t user_area_size() const = 0;
111 virtual uint16_t unit_size_read() const = 0;
113 virtual uint16_t unit_size_write() const = 0;
114
116 virtual uint8_t maximum_read_blocks() const
117 {
118 return 0;
119 }
121 virtual uint8_t maximum_write_blocks() const
122 {
123 return 0;
124 }
125};
126
127} // namespace nfc
128} // namespace m5
129#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:116
virtual m5::nfc::isodep::IsoDEP * isoDEP()
ISO-DEP interface (nullptr if not supported)
Definition nfc_layer.hpp:42
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:71
virtual uint16_t maximum_fifo_depth() const =0
Maximum FIFO depth.
virtual ~NFCLayerInterface()=default
Virtual destructor (required for polymorphic deletion)
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:121
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:32
virtual file_system_feature_t supportsFilesystem() const
activePICC's File system
Definition nfc_layer.hpp:37
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:58
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:82
virtual uint16_t unit_size_read() const =0
Unit size for read.
ISO Data Exchange Protocol.
Definition isoDEP.hpp:240
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