xref: /aosp_15_r20/system/nfc/src/nfc/include/ce_api.h (revision 7eba2f3b06c51ae21384f6a4f14577b668a869b3)
1*7eba2f3bSAndroid Build Coastguard Worker /******************************************************************************
2*7eba2f3bSAndroid Build Coastguard Worker  *
3*7eba2f3bSAndroid Build Coastguard Worker  *  Copyright (C) 2009-2014 Broadcom Corporation
4*7eba2f3bSAndroid Build Coastguard Worker  *
5*7eba2f3bSAndroid Build Coastguard Worker  *  Licensed under the Apache License, Version 2.0 (the "License");
6*7eba2f3bSAndroid Build Coastguard Worker  *  you may not use this file except in compliance with the License.
7*7eba2f3bSAndroid Build Coastguard Worker  *  You may obtain a copy of the License at:
8*7eba2f3bSAndroid Build Coastguard Worker  *
9*7eba2f3bSAndroid Build Coastguard Worker  *  http://www.apache.org/licenses/LICENSE-2.0
10*7eba2f3bSAndroid Build Coastguard Worker  *
11*7eba2f3bSAndroid Build Coastguard Worker  *  Unless required by applicable law or agreed to in writing, software
12*7eba2f3bSAndroid Build Coastguard Worker  *  distributed under the License is distributed on an "AS IS" BASIS,
13*7eba2f3bSAndroid Build Coastguard Worker  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*7eba2f3bSAndroid Build Coastguard Worker  *  See the License for the specific language governing permissions and
15*7eba2f3bSAndroid Build Coastguard Worker  *  limitations under the License.
16*7eba2f3bSAndroid Build Coastguard Worker  *
17*7eba2f3bSAndroid Build Coastguard Worker  ******************************************************************************/
18*7eba2f3bSAndroid Build Coastguard Worker 
19*7eba2f3bSAndroid Build Coastguard Worker /******************************************************************************
20*7eba2f3bSAndroid Build Coastguard Worker  *
21*7eba2f3bSAndroid Build Coastguard Worker  *  This file contains the Near Field Communication (NFC) Card Emulation
22*7eba2f3bSAndroid Build Coastguard Worker  *  mode related API function external definitions.
23*7eba2f3bSAndroid Build Coastguard Worker  *
24*7eba2f3bSAndroid Build Coastguard Worker  ******************************************************************************/
25*7eba2f3bSAndroid Build Coastguard Worker 
26*7eba2f3bSAndroid Build Coastguard Worker #ifndef CE_API_H
27*7eba2f3bSAndroid Build Coastguard Worker #define CE_API_H
28*7eba2f3bSAndroid Build Coastguard Worker 
29*7eba2f3bSAndroid Build Coastguard Worker #include <stdbool.h>
30*7eba2f3bSAndroid Build Coastguard Worker #include "nfc_api.h"
31*7eba2f3bSAndroid Build Coastguard Worker #include "nfc_types.h"
32*7eba2f3bSAndroid Build Coastguard Worker #include "tags_defs.h"
33*7eba2f3bSAndroid Build Coastguard Worker 
34*7eba2f3bSAndroid Build Coastguard Worker #define CE_T3T_FIRST_EVT 0x60
35*7eba2f3bSAndroid Build Coastguard Worker #define CE_T4T_FIRST_EVT 0x80
36*7eba2f3bSAndroid Build Coastguard Worker 
37*7eba2f3bSAndroid Build Coastguard Worker enum {
38*7eba2f3bSAndroid Build Coastguard Worker   CE_T3T_NDEF_UPDATE_START_EVT = CE_T3T_FIRST_EVT,
39*7eba2f3bSAndroid Build Coastguard Worker   CE_T3T_NDEF_UPDATE_CPLT_EVT,
40*7eba2f3bSAndroid Build Coastguard Worker   CE_T3T_UPDATE_EVT,
41*7eba2f3bSAndroid Build Coastguard Worker   CE_T3T_RAW_FRAME_EVT,
42*7eba2f3bSAndroid Build Coastguard Worker 
43*7eba2f3bSAndroid Build Coastguard Worker   CE_T4T_NDEF_UPDATE_START_EVT = CE_T4T_FIRST_EVT,
44*7eba2f3bSAndroid Build Coastguard Worker   CE_T4T_NDEF_UPDATE_CPLT_EVT,
45*7eba2f3bSAndroid Build Coastguard Worker   CE_T4T_NDEF_UPDATE_ABORT_EVT,
46*7eba2f3bSAndroid Build Coastguard Worker   CE_T4T_RAW_FRAME_EVT
47*7eba2f3bSAndroid Build Coastguard Worker };
48*7eba2f3bSAndroid Build Coastguard Worker 
49*7eba2f3bSAndroid Build Coastguard Worker typedef uint8_t tCE_EVENT;
50*7eba2f3bSAndroid Build Coastguard Worker 
51*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
52*7eba2f3bSAndroid Build Coastguard Worker   tNFC_STATUS status;
53*7eba2f3bSAndroid Build Coastguard Worker   uint8_t* p_data;
54*7eba2f3bSAndroid Build Coastguard Worker   bool b_updated;
55*7eba2f3bSAndroid Build Coastguard Worker   uint32_t length;
56*7eba2f3bSAndroid Build Coastguard Worker } tCE_UPDATE_INFO;
57*7eba2f3bSAndroid Build Coastguard Worker 
58*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
59*7eba2f3bSAndroid Build Coastguard Worker   tNFC_STATUS status;
60*7eba2f3bSAndroid Build Coastguard Worker   uint8_t aid_handle;
61*7eba2f3bSAndroid Build Coastguard Worker   NFC_HDR* p_data;
62*7eba2f3bSAndroid Build Coastguard Worker } tCE_RAW_FRAME;
63*7eba2f3bSAndroid Build Coastguard Worker 
64*7eba2f3bSAndroid Build Coastguard Worker typedef union {
65*7eba2f3bSAndroid Build Coastguard Worker   tNFC_STATUS status;
66*7eba2f3bSAndroid Build Coastguard Worker   tCE_UPDATE_INFO update_info;
67*7eba2f3bSAndroid Build Coastguard Worker   tCE_RAW_FRAME raw_frame;
68*7eba2f3bSAndroid Build Coastguard Worker } tCE_DATA;
69*7eba2f3bSAndroid Build Coastguard Worker 
70*7eba2f3bSAndroid Build Coastguard Worker typedef void(tCE_CBACK)(tCE_EVENT event, tCE_DATA* p_data);
71*7eba2f3bSAndroid Build Coastguard Worker 
72*7eba2f3bSAndroid Build Coastguard Worker /* T4T definitions */
73*7eba2f3bSAndroid Build Coastguard Worker typedef uint8_t tCE_T4T_AID_HANDLE; /* Handle for AID registration  */
74*7eba2f3bSAndroid Build Coastguard Worker /* Invalid tCE_T4T_AID_HANDLE               */
75*7eba2f3bSAndroid Build Coastguard Worker #define CE_T4T_AID_HANDLE_INVALID 0xFF
76*7eba2f3bSAndroid Build Coastguard Worker /* reserved handle for wildcard aid */
77*7eba2f3bSAndroid Build Coastguard Worker #define CE_T4T_WILDCARD_AID_HANDLE (CE_T4T_MAX_REG_AID)
78*7eba2f3bSAndroid Build Coastguard Worker 
79*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
80*7eba2f3bSAndroid Build Coastguard Worker **
81*7eba2f3bSAndroid Build Coastguard Worker ** Function         CE_T3tSetLocalNDEFMsg
82*7eba2f3bSAndroid Build Coastguard Worker **
83*7eba2f3bSAndroid Build Coastguard Worker ** Description      Initialise CE Type 3 Tag with mandatory NDEF message
84*7eba2f3bSAndroid Build Coastguard Worker **
85*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFC_STATUS_OK if success
86*7eba2f3bSAndroid Build Coastguard Worker **
87*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
88*7eba2f3bSAndroid Build Coastguard Worker extern tNFC_STATUS CE_T3tSetLocalNDEFMsg(bool read_only, uint32_t size_max,
89*7eba2f3bSAndroid Build Coastguard Worker                                          uint32_t size_current, uint8_t* p_buf,
90*7eba2f3bSAndroid Build Coastguard Worker                                          uint8_t* p_scratch_buf);
91*7eba2f3bSAndroid Build Coastguard Worker 
92*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
93*7eba2f3bSAndroid Build Coastguard Worker **
94*7eba2f3bSAndroid Build Coastguard Worker ** Function         CE_T3tSetLocalNDefParams
95*7eba2f3bSAndroid Build Coastguard Worker **
96*7eba2f3bSAndroid Build Coastguard Worker ** Description      Sets T3T-specific NDEF parameters. (Optional - if not
97*7eba2f3bSAndroid Build Coastguard Worker **                  called, then CE will use default parameters)
98*7eba2f3bSAndroid Build Coastguard Worker **
99*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFC_STATUS_OK if success
100*7eba2f3bSAndroid Build Coastguard Worker **
101*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
102*7eba2f3bSAndroid Build Coastguard Worker extern tNFC_STATUS CE_T3tSetLocalNDefParams(uint8_t nbr, uint8_t nbw);
103*7eba2f3bSAndroid Build Coastguard Worker 
104*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
105*7eba2f3bSAndroid Build Coastguard Worker **
106*7eba2f3bSAndroid Build Coastguard Worker ** Function         CE_T3tSendCheckRsp
107*7eba2f3bSAndroid Build Coastguard Worker **
108*7eba2f3bSAndroid Build Coastguard Worker ** Description      Send CHECK response message
109*7eba2f3bSAndroid Build Coastguard Worker **
110*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFC_STATUS_OK if success
111*7eba2f3bSAndroid Build Coastguard Worker **
112*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
113*7eba2f3bSAndroid Build Coastguard Worker extern tNFC_STATUS CE_T3tSendCheckRsp(uint8_t status1, uint8_t status2,
114*7eba2f3bSAndroid Build Coastguard Worker                                       uint8_t num_blocks,
115*7eba2f3bSAndroid Build Coastguard Worker                                       uint8_t* p_block_data);
116*7eba2f3bSAndroid Build Coastguard Worker 
117*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
118*7eba2f3bSAndroid Build Coastguard Worker **
119*7eba2f3bSAndroid Build Coastguard Worker ** Function         CE_T3tSendUpdateRsp
120*7eba2f3bSAndroid Build Coastguard Worker **
121*7eba2f3bSAndroid Build Coastguard Worker ** Description      Send UPDATE response message
122*7eba2f3bSAndroid Build Coastguard Worker **
123*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFC_STATUS_OK if success
124*7eba2f3bSAndroid Build Coastguard Worker **
125*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
126*7eba2f3bSAndroid Build Coastguard Worker extern tNFC_STATUS CE_T3tSendUpdateRsp(uint8_t status1, uint8_t status2);
127*7eba2f3bSAndroid Build Coastguard Worker 
128*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
129*7eba2f3bSAndroid Build Coastguard Worker **
130*7eba2f3bSAndroid Build Coastguard Worker ** Function         CE_T4tSetLocalNDEFMsg
131*7eba2f3bSAndroid Build Coastguard Worker **
132*7eba2f3bSAndroid Build Coastguard Worker ** Description      Initialise CE Type 4 Tag with mandatory NDEF message
133*7eba2f3bSAndroid Build Coastguard Worker **
134*7eba2f3bSAndroid Build Coastguard Worker **                  The following event may be returned
135*7eba2f3bSAndroid Build Coastguard Worker **                      CE_T4T_UPDATE_START_EVT for starting update
136*7eba2f3bSAndroid Build Coastguard Worker **                      CE_T4T_UPDATE_CPLT_EVT for complete update
137*7eba2f3bSAndroid Build Coastguard Worker **                      CE_T4T_UPDATE_ABORT_EVT for failure of update
138*7eba2f3bSAndroid Build Coastguard Worker **                      CE_T4T_RAW_FRAME_EVT for raw frame
139*7eba2f3bSAndroid Build Coastguard Worker **
140*7eba2f3bSAndroid Build Coastguard Worker **                  read_only:      TRUE if read only
141*7eba2f3bSAndroid Build Coastguard Worker **                  ndef_msg_max:   Max NDEF message size
142*7eba2f3bSAndroid Build Coastguard Worker **                  ndef_msg_len:   NDEF message size
143*7eba2f3bSAndroid Build Coastguard Worker **                  p_ndef_msg:     NDEF message (excluding NLEN)
144*7eba2f3bSAndroid Build Coastguard Worker **                  p_scratch_buf:  temp storage for update
145*7eba2f3bSAndroid Build Coastguard Worker **
146*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFC_STATUS_OK if success
147*7eba2f3bSAndroid Build Coastguard Worker **
148*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
149*7eba2f3bSAndroid Build Coastguard Worker extern tNFC_STATUS CE_T4tSetLocalNDEFMsg(bool read_only, uint16_t ndef_msg_max,
150*7eba2f3bSAndroid Build Coastguard Worker                                          uint16_t ndef_msg_len,
151*7eba2f3bSAndroid Build Coastguard Worker                                          uint8_t* p_ndef_msg,
152*7eba2f3bSAndroid Build Coastguard Worker                                          uint8_t* p_scratch_buf);
153*7eba2f3bSAndroid Build Coastguard Worker 
154*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
155*7eba2f3bSAndroid Build Coastguard Worker **
156*7eba2f3bSAndroid Build Coastguard Worker ** Function         CE_T4tRegisterAID
157*7eba2f3bSAndroid Build Coastguard Worker **
158*7eba2f3bSAndroid Build Coastguard Worker ** Description      Register AID in CE T4T
159*7eba2f3bSAndroid Build Coastguard Worker **
160*7eba2f3bSAndroid Build Coastguard Worker **                  aid_len: length of AID (up to NFC_MAX_AID_LEN)
161*7eba2f3bSAndroid Build Coastguard Worker **                  p_aid:   AID
162*7eba2f3bSAndroid Build Coastguard Worker **                  p_cback: Raw frame will be forwarded with CE_RAW_FRAME_EVT
163*7eba2f3bSAndroid Build Coastguard Worker **
164*7eba2f3bSAndroid Build Coastguard Worker ** Returns          tCE_T4T_AID_HANDLE if successful,
165*7eba2f3bSAndroid Build Coastguard Worker **                  CE_T4T_AID_HANDLE_INVALID otherwisse
166*7eba2f3bSAndroid Build Coastguard Worker **
167*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
168*7eba2f3bSAndroid Build Coastguard Worker extern tCE_T4T_AID_HANDLE CE_T4tRegisterAID(uint8_t aid_len, uint8_t* p_aid,
169*7eba2f3bSAndroid Build Coastguard Worker                                             tCE_CBACK* p_cback);
170*7eba2f3bSAndroid Build Coastguard Worker 
171*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
172*7eba2f3bSAndroid Build Coastguard Worker **
173*7eba2f3bSAndroid Build Coastguard Worker ** Function         CE_T4tDeregisterAID
174*7eba2f3bSAndroid Build Coastguard Worker **
175*7eba2f3bSAndroid Build Coastguard Worker ** Description      Deregister AID in CE T4T
176*7eba2f3bSAndroid Build Coastguard Worker **
177*7eba2f3bSAndroid Build Coastguard Worker **                  aid_len: length of AID (up to NFC_MAX_AID_LEN)
178*7eba2f3bSAndroid Build Coastguard Worker **                  p_aid:   AID
179*7eba2f3bSAndroid Build Coastguard Worker **
180*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFC_STATUS_OK if success
181*7eba2f3bSAndroid Build Coastguard Worker **
182*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
183*7eba2f3bSAndroid Build Coastguard Worker extern void CE_T4tDeregisterAID(tCE_T4T_AID_HANDLE aid_handle);
184*7eba2f3bSAndroid Build Coastguard Worker 
185*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
186*7eba2f3bSAndroid Build Coastguard Worker **
187*7eba2f3bSAndroid Build Coastguard Worker ** Function         CE_SendRawFrame
188*7eba2f3bSAndroid Build Coastguard Worker **
189*7eba2f3bSAndroid Build Coastguard Worker ** Description      This function sends a raw frame to the peer device.
190*7eba2f3bSAndroid Build Coastguard Worker **
191*7eba2f3bSAndroid Build Coastguard Worker ** Returns          tNFC_STATUS
192*7eba2f3bSAndroid Build Coastguard Worker **
193*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
194*7eba2f3bSAndroid Build Coastguard Worker extern tNFC_STATUS CE_SendRawFrame(uint8_t* p_raw_data, uint16_t data_len);
195*7eba2f3bSAndroid Build Coastguard Worker 
196*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
197*7eba2f3bSAndroid Build Coastguard Worker **
198*7eba2f3bSAndroid Build Coastguard Worker ** Function         CE_SetActivatedTagType
199*7eba2f3bSAndroid Build Coastguard Worker **
200*7eba2f3bSAndroid Build Coastguard Worker ** Description      This function selects the tag type for Reader/Writer mode.
201*7eba2f3bSAndroid Build Coastguard Worker **
202*7eba2f3bSAndroid Build Coastguard Worker ** Returns          tNFC_STATUS
203*7eba2f3bSAndroid Build Coastguard Worker **
204*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
205*7eba2f3bSAndroid Build Coastguard Worker extern tNFC_STATUS CE_SetActivatedTagType(tNFC_ACTIVATE_DEVT* p_activate_params,
206*7eba2f3bSAndroid Build Coastguard Worker                                           uint16_t t3t_system_code,
207*7eba2f3bSAndroid Build Coastguard Worker                                           tCE_CBACK* p_cback);
208*7eba2f3bSAndroid Build Coastguard Worker #endif /* CE_API_H */
209