Loading...
Searching...
No Matches
felica_listener_i.h
1#include "felica_listener.h"
2
4
5#define FELICA_LISTENER_READ_BLOCK_COUNT_MAX (4U)
6#define FELICA_LISTENER_READ_BLOCK_COUNT_MIN (1U)
7#define FELICA_LISTENER_WRITE_BLOCK_COUNT_MAX (2U)
8#define FELICA_LISTENER_WRITE_BLOCK_COUNT_MIN (1U)
9
10#define FELICA_MC_SP_REG_ALL_RW_BYTES_0_1 (0U)
11#define FELICA_MC_ALL_BYTE (2U)
12#define FELICA_MC_SYS_OP (3U)
13#define FELICA_MC_RF_PRM (4U)
14#define FELICA_MC_CKCKV_W_MAC_A (5U)
15#define FELICA_MC_SP_REG_R_RESTR_BYTES_6_7 (6U)
16#define FELICA_MC_SP_REG_W_RESTR_BYTES_8_9 (8U)
17#define FELICA_MC_SP_REG_W_MAC_A_BYTES_10_11 (10U)
18#define FELICA_MC_STATE_W_MAC_A (12U)
19#define FELICA_MC_RESERVED_13 (13U)
20#define FELICA_MC_RESERVED_14 (14U)
21#define FELICA_MC_RESERVED_15 (15U)
22
23typedef enum {
24 Felica_ListenerStateIdle,
25 Felica_ListenerStateActivated,
26} FelicaListenerState;
27
28typedef struct FURI_PACKED {
29 uint8_t code;
30 uint16_t system_code;
31 uint8_t request_code;
32 uint8_t time_slot;
34
35typedef struct {
36 uint8_t length;
37 uint8_t response_code;
38 FelicaIDm idm;
39 FelicaPMm pmm;
41
42typedef struct FURI_PACKED {
44 uint16_t optional_request_data;
46
48typedef struct {
49 uint8_t length;
50 union {
53 };
55
61
64
69typedef struct {
70 FelicaBlockData blocks[FELICA_LISTENER_WRITE_BLOCK_COUNT_MAX];
72
78typedef void (*FelicaCommandWriteBlockHandler)(
79 FelicaListener* instance,
80 const uint8_t block_number,
81 const FelicaBlockData* data_block);
82
88typedef void (*FelicaCommanReadBlockHandler)(
89 FelicaListener* instance,
90 const uint8_t block_number,
91 const uint8_t resp_data_index,
93
95 Nfc* nfc;
96 FelicaData* data;
97 FelicaListenerState state;
99 FelicaBlockData mc_shadow;
100
101 uint8_t request_size_buf;
102 uint8_t block_list_size;
103 uint8_t requested_blocks[FELICA_LISTENER_READ_BLOCK_COUNT_MAX];
104 uint8_t mac_calc_start;
105 bool rc_written;
106
107 BitBuffer* tx_buffer;
108 BitBuffer* rx_buffer;
109
110 NfcGenericEvent generic_event;
111 NfcGenericCallback callback;
112 void* context;
113};
114
120void felica_listener_reset(FelicaListener* instance);
121
126void felica_wcnt_increment(FelicaData* data);
127
135bool felica_listener_check_idm(const FelicaListener* instance, const FelicaIDm* request_idm);
136
152bool felica_listener_check_block_list_size(
153 FelicaListener* instance,
155
169const FelicaBlockListElement* felica_listener_block_list_item_get_first(
170 FelicaListener* instance,
171 const FelicaListenerRequest* request);
172
184const FelicaBlockListElement* felica_listener_block_list_item_get_next(
185 FelicaListener* instance,
186 const FelicaBlockListElement* prev_item);
187
199const FelicaListenerWriteBlockData* felica_listener_get_write_request_data_pointer(
200 const FelicaListener* const instance,
201 const FelicaListenerGenericRequest* const generic_request);
202
222bool felica_listener_validate_write_request_and_set_sf(
223 FelicaListener* instance,
224 const FelicaListenerWriteRequest* const request,
225 const FelicaListenerWriteBlockData* const data,
227
248bool felica_listener_validate_read_request_and_set_sf(
249 FelicaListener* instance,
250 const FelicaListenerReadRequest* const request,
251 FelicaCommandResponseHeader* resp_header);
252
260FelicaCommanReadBlockHandler felica_listener_get_read_block_handler(const uint8_t block_number);
261
269FelicaCommandWriteBlockHandler felica_listener_get_write_block_handler(const uint8_t block_number);
270
278FelicaError
279 felica_listener_frame_exchange(const FelicaListener* instance, const BitBuffer* tx_buffer);
Generic Nfc stack event definitions.
NfcCommand(* NfcGenericCallback)(NfcGenericEvent event, void *context)
Generic Nfc event callback type.
Definition nfc_generic_event.h:75
Definition bit_buffer.c:7
Definition system/js_app/modules/js_gui/icon.c:36
Structure used to hold authentication related fields.
Definition felica.h:119
Definition felica.h:83
Definition felica.h:223
Definition felica.h:207
Structure used to store Felica data and additional values about reading.
Definition felica.h:186
Felica ID block.
Definition felica.h:126
Generic Felica request same for both read and write operations.
Definition felica_listener_i.h:48
Definition felica_listener_i.h:94
Definition felica_listener_i.h:35
Definition felica.h:240
Generic request but with list of requested elements.
Definition felica_listener_i.h:57
Struct for write request data.
Definition felica_listener_i.h:69
Felica PMm block.
Definition felica.h:131
Generic Nfc event type.
Definition nfc_generic_event.h:58
Definition nfc.c:44