blob: 945d0e0feb17fa2bdd949807a629ca4ab1cd43be [file] [log] [blame]
nxpandroid64fd68c2015-09-23 16:45:15 +05301/*
2 * Copyright (C) 2015 NXP Semiconductors
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef _PHNXPEXTNS_CUSTOM_H_
18#define _PHNXPEXTNS_CUSTOM_H_
19
20#include <nfa_api.h>
21#include <sys/types.h>
22#include <errno.h>
23#include <phNfcStatus.h>
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29/*
30 * TLV structure
31 * For simple TLV, type[0] == 0x00
32 * For extended TLV, type[0] == 0xA0
33 */
34typedef struct {
35 uint8_t type[2];
36 uint8_t len;
37 uint8_t *val;
38} tlv_t;
39
40typedef enum {
41 passive_106 = 0x01,
42 passive_212 = 0x02,
43 passive_424 = 0x04,
44 active_106 = 0x10,
45 active_212 = 0x20,
46 active_424 = 0x40,
47} p2p_speed_t;
48
49typedef enum {
50 NO_SE,
51 UICC,
52 eSE,
53} SE_t;
54
55typedef enum {
56 ReaderMode = 0x01,
57 P2PMode = 0x02,
58 CEMode = 0x04,
59} PollMode_t;
60
61/*******************************************************************************
62 **
63 ** Function phNxpExtns_get_version
64 **
65 ** Description Function to get the HW, FW and SW versions.
66 **
67 ** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
68 **
69 ** NOTE: Internally this function will use phNxpNciHal_get_version from HAL.
70 *******************************************************************************/
71
72NFCSTATUS phNxpExtns_get_version (uint32_t *hw_ver, uint32_t *fw_ver, uint32_t *sw_ver);
73
74/*******************************************************************************
75 **
76 ** Function phNxpNciHal_read_tlv
77 **
78 ** Description Function to read simple TLV and extended TLV.
79 ** Memory for TLV and fields are allocated and freed by calling
80 ** function. Input is type and len. Response is provied in *val.
81 **
82 ** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
83 **
84 ** NOTE: Internally this function will use NFA_GetConfig for simple TLV.
85 ** For extended TLV, it will use NFA_SendRawFrame.
86 *******************************************************************************/
87
88NFCSTATUS phNxpNciHal_read_tlv (tlv_t *tlv);
89
90/*******************************************************************************
91 **
92 ** Function phNxpNciHal_write_tlv
93 **
94 ** Description Function to write simple TLV and extended TLV.
95 ** Memory for TLV and fields are allocated and freed by calling
96 ** function. Input is type, len, *val.
97 **
98 ** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
99 **
100 ** NOTE: Internally this function will use NFA_SetConfig for simple TLV.
101 ** For extended TLV, it will use NFA_SendRawFrame.
102 *******************************************************************************/
103
104NFCSTATUS phNxpNciHal_write_tlv (tlv_t *tlv);
105
106/*******************************************************************************
107 **
108 ** Function phNxpExtns_select_poll_tech
109 **
110 ** Description This function selects the polling technology for starting
111 ** polling loop. This function does not start polling loop.
112 ** It is just a setting for polling technology.
113 **
114 ** Returns NFCSTATUS_SUCCESS if operation successful,
115 ** otherwise NFCSTATUS_FAILED.
116 **
117 ** NOTE: Internally this function is using NFA_EnablePolling function.
118 *******************************************************************************/
119
120NFCSTATUS phNxpExtns_select_poll_tech (tNFA_TECHNOLOGY_MASK tech_mask);
121
122/*******************************************************************************
123 **
124 ** Function phNxpExtns_select_ce_listen_tech
125 **
126 ** Description This function set the listen tech for card emulation.
127 ** This function does not include routing.
128 ** This function does not start polling loop.
129 **
130 ** Returns NFCSTATUS_SUCCESS if operation successful,
131 ** otherwise NFCSTATUS_FAILED.
132 **
133 ** NOTE: Internally this function is using NFA_CeConfigureUiccListenTech.
134 ** Not sure which handle to use, from UICC or eSE.
135 *******************************************************************************/
136
137NFCSTATUS phNxpExtns_select_ce_listen_tech (tNFA_TECHNOLOGY_MASK tech_mask);
138
139/*******************************************************************************
140 **
141 ** Function phNxpExtns_select_p2p_poll_speed
142 **
143 ** Description This function will select the P2P polling speed.
144 ** phNxpExtns_select_poll_tech overwrite the settings of poll if
145 ** reader mode is enabled.
146 ** There is only one active poll phase but device can use one
147 ** active speed and can move to higher speed if target supports.
148 **
149 ** Returns NFCSTATUS_SUCCESS if operation successful,
150 ** otherwise NFCSTATUS_FAILED.
151 **
152 ** NOTE: Internally this function will use NFA_EnablePolling and NFA_SetConfig
153 *******************************************************************************/
154
155NFCSTATUS phNxpExtns_select_p2p_poll_speed (p2p_speed_t p2p_initiator_speed);
156
157/*******************************************************************************
158 **
159 ** Function phNxpExtns_select_p2p_listen_speed
160 **
161 ** Description This function will select the listen mode
162 ** This function does not include routing.
163 ** This function does not start polling loop.
164 **
165 ** Returns NFCSTATUS_SUCCESS if operation successful,
166 ** otherwise NFCSTATUS_FAILED.
167 **
168 ** NOTE: Internally this function will use NFA_SetP2pListenTech and NFA_SetConfig
169 *******************************************************************************/
170
171NFCSTATUS phNxpExtns_select_p2p_listen_speed (p2p_speed_t p2p_target_speed);
172
173/*******************************************************************************
174 **
175 ** Function phNxpExtns_select_se
176 **
177 ** Description This function will set the routing of the traffic to selected
178 ** SE. This function also does not start polling loop.
179 **
180 ** Returns NFCSTATUS_SUCCESS if operation successful,
181 ** otherwise NFCSTATUS_FAILED.
182 **
183 ** NOTE:
184 *******************************************************************************/
185
186NFCSTATUS phNxpExtns_select_se (SE_t se);
187
188/*******************************************************************************
189 **
190 ** Function phNxpExtns_set_poll_mode
191 **
192 ** Description This function selects which mode to enable for polling loop.
193 ** This function do not start polling loop.
194 **
195 ** Returns NFCSTATUS_SUCCESS if operation successful,
196 ** otherwise NFCSTATUS_FAILED.
197 **
198 ** NOTE:
199 *******************************************************************************/
200
201NFCSTATUS phNxpExtns_set_poll_mode (PollMode_t poll_mode);
202
203/*******************************************************************************
204 **
205 ** Function phNxpExtns_start_poll
206 **
207 ** Description This function starts polling loop based on the configuration
208 ** of the previous calls. If no configuration done through other
209 ** function call then it uses the default configuration from
210 ** configuration files.
211 ** This function internally stops the polling loop if it is
212 ** already running.
213 **
214 ** Returns NFCSTATUS_SUCCESS if operation successful,
215 ** otherwise NFCSTATUS_FAILED.
216 **
217 ** NOTE: Internally this function uses NFA_StartRfDiscovery.
218 *******************************************************************************/
219
220NFCSTATUS phNxpExtns_start_poll (void);
221
222/*******************************************************************************
223 **
224 ** Function phNxpExtns_stop_poll
225 **
226 ** Description This function stops the polling loop if it is running.
227 **
228 ** Returns NFCSTATUS_SUCCESS if operation successful,
229 ** otherwise NFCSTATUS_FAILED.
230 **
231 ** NOTE:Internally this function uses NFA_StopRfDiscovery.
232 *******************************************************************************/
233
234NFCSTATUS phNxpExtns_stop_poll (void);
235
236/*******************************************************************************
237 **
238 ** Function phNxpExtns_enable_Felica_CLT
239 **
240 ** Description This function enables or disable Felica CLT feature.
241 **
242 ** Returns NFCSTATUS_SUCCESS if operation successful,
243 ** otherwise NFCSTATUS_FAILED.
244 **
245 ** NOTE:
246 *******************************************************************************/
247
248NFCSTATUS phNxpExtns_enable_Felica_CLT (bool enable);
249
250/*******************************************************************************
251 **
252 ** Function phNxpExtns_enable_Mifare_CLT
253 **
254 ** Description This function enables or disable Mifare CLT feature.
255 **
256 ** Returns NFCSTATUS_SUCCESS if operation successful,
257 ** otherwise NFCSTATUS_FAILED.
258 **
259 ** NOTE:
260 *******************************************************************************/
261
262NFCSTATUS phNxpExtns_enable_Mifare_CLT (bool enable);
263
264#endif /* _PHNXPEXTNS_CUSTOM_H_ */