• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2015 The Android Open Source Project
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
26 extern "C" {
27 #endif
28 
29 /*
30  * TLV structure
31  * For simple TLV, type[0] == 0x00
32  * For extended TLV, type[0] == 0xA0
33  */
34 typedef struct {
35     uint8_t type[2];
36     uint8_t len;
37     uint8_t *val;
38 } tlv_t;
39 
40 typedef 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 
49 typedef enum {
50     NO_SE,
51     UICC,
52     eSE,
53 } SE_t;
54 
55 typedef 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 
72 NFCSTATUS 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 
88 NFCSTATUS 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 
104 NFCSTATUS 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 
120 NFCSTATUS 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 
137 NFCSTATUS 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 
155 NFCSTATUS 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 
171 NFCSTATUS 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 
186 NFCSTATUS 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 
201 NFCSTATUS 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 
220 NFCSTATUS 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 
234 NFCSTATUS 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 
248 NFCSTATUS 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 
262 NFCSTATUS phNxpExtns_enable_Mifare_CLT (bool enable);
263 
264 #endif /* _PHNXPEXTNS_CUSTOM_H_ */
265