summaryrefslogtreecommitdiffstats
path: root/src/phHciNfc_SWP.h
blob: e397e36e44b1bb40268746f7cf9be37e02a03bb8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
/*
 * Copyright (C) 2010 NXP Semiconductors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/*!
* =========================================================================== *
*                                                                             *
*                                                                             *
* \file  phHciNfc_SWP .h                                                          *
* \brief HCI wired interface gate Management Routines.                        *
*                                                                             *
*                                                                             *
* Project: NFC-FRI-1.1                                                        *
*                                                                             *
* $Date: Fri Aug 14 17:01:28 2009 $                                                                   *
* $Author: ing04880 $                                                                 *
* $Revision: 1.15 $                                                               *
* $Aliases: NFC_FRI1.1_WK934_R31_1,NFC_FRI1.1_WK941_PREP1,NFC_FRI1.1_WK941_PREP2,NFC_FRI1.1_WK941_1,NFC_FRI1.1_WK943_R32_1,NFC_FRI1.1_WK949_PREP1,NFC_FRI1.1_WK943_R32_10,NFC_FRI1.1_WK943_R32_13,NFC_FRI1.1_WK943_R32_14,NFC_FRI1.1_WK1007_R33_1,NFC_FRI1.1_WK1007_R33_4,NFC_FRI1.1_WK1017_PREP1,NFC_FRI1.1_WK1017_R34_1,NFC_FRI1.1_WK1017_R34_2,NFC_FRI1.1_WK1023_R35_1 $                                                                *
*                                                                             *
* =========================================================================== *
*/
#ifndef PHHCINFC_SWP_H
#define PHHCINFC_SWP_H
/*@}*/
/**
 *  \name HCI
 *
 * File: \ref phHciNfc_SWP.h
 *
 */
/*@{*/
#define PHHCINFC_SWPRED_FILEREVISION "$Revision: 1.15 $" /**< \ingroup grp_file_attributes */
#define PHHCINFC_SWPREDINTERFACE_FILEALIASES  "$Aliases: NFC_FRI1.1_WK934_R31_1,NFC_FRI1.1_WK941_PREP1,NFC_FRI1.1_WK941_PREP2,NFC_FRI1.1_WK941_1,NFC_FRI1.1_WK943_R32_1,NFC_FRI1.1_WK949_PREP1,NFC_FRI1.1_WK943_R32_10,NFC_FRI1.1_WK943_R32_13,NFC_FRI1.1_WK943_R32_14,NFC_FRI1.1_WK1007_R33_1,NFC_FRI1.1_WK1007_R33_4,NFC_FRI1.1_WK1017_PREP1,NFC_FRI1.1_WK1017_R34_1,NFC_FRI1.1_WK1017_R34_2,NFC_FRI1.1_WK1023_R35_1 $"   /**< \ingroup grp_file_attributes */
/*@}*/

/****************************** Header File Inclusion *****************************/
#include <phHciNfc_Generic.h>

/******************************* Macro Definitions ********************************/

/* Kb/sec */
#define UICC_REF_BITRATE            (106U) 
#define UICC_MAX_CONNECT_RETRY      (0x02U)

/* SWP switch mode event parameters */
#define UICC_SWITCH_MODE_OFF        (0x00U)
#define UICC_SWITCH_MODE_DEFAULT    (0x01U)
#define UICC_SWITCH_MODE_ON         (0x02U)

/******************** Enumeration and Structure Definition ***********************/

typedef enum phHciNfc_SWP_Seq{
    SWP_INVALID_SEQUENCE = 0x00U, 
    SWP_MODE_SEQ, 
    SWP_STATUS_SEQ, 
    SWP_END_SEQ
}phHciNfc_SWP_Seq_t;

typedef enum phHciNfc_SWP_Status{
    UICC_NOT_CONNECTED          =   0x00U,
    UICC_CONNECTION_ONGOING,
    UICC_CONNECTED,
    UICC_CONNECTION_LOST,
    UICC_DISCONNECTION_ONGOING,
    UICC_CONNECTION_FAILED
}phHciNfc_SWP_Status_t;


/* Information structure for  SWP  Gate */
typedef struct phHciNfc_SWP_Info{

    /* Pointer to SWP gate pipe information */
    phHciNfc_Pipe_Info_t            *p_pipe_info;
    /* SWP gate pipe Identified             */
    uint8_t                         pipe_id;
    /*Current internal Sequence type        */
    phHciNfc_SWP_Seq_t              current_seq;
    /*Current next Sequence ID          */
    phHciNfc_SWP_Seq_t              next_seq;

    phHciNfc_SWP_Status_t           uicc_status;

    uint8_t                         uicc_bitrate;

} phHciNfc_SWP_Info_t;

/************************ Function Prototype Declaration *************************/
/*!
 * \brief Allocates the resources required for  SWP gate management.
 *
 * This function Allocates necessary resources as requiered by SWP gate management
 *
 * \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
 *
 * \retval NFCSTATUS_SUCCESS           Function execution is successful
 *
 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the given inputs are not valid
 */
extern
NFCSTATUS
phHciNfc_SWP_Init_Resources(phHciNfc_sContext_t  *psHciContext);

/**
* \ingroup grp_hci_nfc
*
* \brief Allocates the resources required for  SWP gate management.
*
* This function Allocates necessary resources as requiered by SWP gate management
*
* \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
*
* \retval NFCSTATUS_SUCCESS           Function execution is successful
*
* \retval NFCSTATUS_INVALID_PARAMETER One or more of the given inputs are not valid
*/

extern
NFCSTATUS   
phHciNfc_SWPMgmt_Initialise(
                                phHciNfc_sContext_t     *psHciContext,
                                void                    *pHwRef
                         );

/**
* \ingroup grp_hci_nfc
*
* \brief updates SWP gate specific pipe information .
*
* This function  intialises gate specific informations like pipe id,
* event handler and response handler etc.
*
* \param[in]  psHciContext          psHciContext is the pointer to HCI Layer
* \param[in]  pipeID                pipeID of the SWP management Gate
* \param[in]  pPipeInfo             Update the pipe Information of the SWP
*                                   Management Gate.
*
* \retval NFCSTATUS_SUCCESS           Function execution is successful
*
* \retval NFCSTATUS_INVALID_PARAMETER One or more of the given inputs are not valid
*/
extern
NFCSTATUS
phHciNfc_SWP_Update_PipeInfo(
                                  phHciNfc_sContext_t     *psHciContext,
                                  uint8_t                 pipeID,
                                  phHciNfc_Pipe_Info_t    *pPipeInfo
                                  );
/**
* \ingroup grp_hci_nfc
*
* \brief updates SWP gate specific pipe information .
*
* This function  intialises gate specific informations like pipe id,
* event handler and response handler etc.
*
* \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
*
* \retval NFCSTATUS_SUCCESS           Function execution is successful
*
* \retval NFCSTATUS_INVALID_PARAMETER One or more of the given inputs are not valid
*/

extern
NFCSTATUS
phHciNfc_SWP_Get_PipeID(
                       phHciNfc_sContext_t        *psHciContext,
                       uint8_t                    *ppipe_id
                       );

/**
* \ingroup grp_hci_nfc
*
* \brief Enables /disables SWP mode .
*
* This function  enables/disables SWP link associated with UICC.
* 
*
* \param[in]  psHciContext              psHciContext is pointer to HCI Layer
*
* \param[in]  pHwRef                    pHwRef is underlying Hardware context.
*
* \param[in]  enable_type               0 means disable ,1 means enable SWP link.
* \retval NFCSTATUS_SUCCESS             Function execution is successful
*
* \retval NFCSTATUS_INVALID_PARAMETER   One or more of the given inputs are not valid
*/
extern
NFCSTATUS
phHciNfc_SWP_Configure_Default(
                            void        *psHciHandle,
                            void        *pHwRef,
                            uint8_t     enable_type
                        );

/**
* \ingroup grp_hci_nfc
*
* \brief Enables /disables SWP mode .
*
* This function  enables/disables SWP link associated with UICC.
* 
*
* \param[in]  psHciContext              psHciContext is pointer to HCI Layer
*
* \param[in]  pHwRef                    pHwRef is underlying Hardware context.
*
* \param[in]  mode                      TRUE Enable Protection.
* \retval NFCSTATUS_SUCCESS             Function execution is successful
*
* \retval NFCSTATUS_INVALID_PARAMETER   One or more of the given inputs are not valid
*/
extern
NFCSTATUS
phHciNfc_SWP_Protection(
                            void        *psHciHandle,
                            void        *pHwRef,
                            uint8_t     mode
                        );


/**
* \ingroup grp_hci_nfc
*
* \brief To send the switch mode event
*
* This function send an event to change the switch mode.
* 
*
* \param[in]  psHciContext              psHciContext is pointer to HCI Layer
*
* \param[in]  pHwRef                    pHwRef is underlying Hardware context.
*
* \param[in]  uicc_mode                 UICC_SWITCH_MODE_OFF
*                                       UICC_SWITCH_MODE_DEFAULT
*                                       UICC_SWITCH_MODE_ON
* \retval NFCSTATUS_SUCCESS             Function execution is successful
*
* \retval NFCSTATUS_INVALID_PARAMETER   One or more of the given inputs are not valid
*/
extern 
NFCSTATUS 
phHciNfc_SWP_Configure_Mode(
                              void              *psHciHandle,
                              void              *pHwRef,
                              uint8_t           uicc_mode
                          );

/**
* \ingroup grp_hci_nfc
*
* \brief To get the status of the UICC
*
* This function reads the status of the UICC. The status value can be any 
* of the values present in the \ref phHciNfc_SWP_Status_t
* 
*
* \param[in]  psHciContext              psHciContext is pointer to HCI Layer
*
* \param[in]  pHwRef                    pHwRef is underlying Hardware context.
* \retval NFCSTATUS_SUCCESS             Function execution is successful
*
* \retval NFCSTATUS_INVALID_PARAMETER   One or more of the given inputs are not valid
*/
extern
NFCSTATUS
phHciNfc_SWP_Get_Status(
                            void        *psHciHandle,
                            void        *pHwRef
                        );

/**
* \ingroup grp_hci_nfc
*
* \brief To get the bitrate
*
* This function reads the bitrate
* 
*
* \param[in]  psHciContext              psHciContext is pointer to HCI Layer
*
* \param[in]  pHwRef                    pHwRef is underlying Hardware context.
* \retval NFCSTATUS_SUCCESS             Function execution is successful
*
* \retval NFCSTATUS_INVALID_PARAMETER   One or more of the given inputs are not valid
*/
extern
NFCSTATUS
phHciNfc_SWP_Get_Bitrate(
                            void        *psHciHandle,
                            void        *pHwRef
                        );

/**
* \ingroup grp_hci_nfc
*
* \brief To update the sequence
*
* This function reads the bitrate
* 
*
* \param[in]  psHciContext              psHciContext is pointer to HCI Layer
*
* \param[in]  SWP_seq                   SWP sequence.
*
* \retval NFCSTATUS_SUCCESS             Function execution is successful
* \retval NFCSTATUS_INVALID_PARAMETER   One or more of the given inputs are not valid
*/
extern 
NFCSTATUS
phHciNfc_SWP_Update_Sequence(
                                phHciNfc_sContext_t     *psHciContext,
                                phHciNfc_eSeqType_t     SWP_seq
                             );

/**
* \ingroup grp_hci_nfc
*
* \brief To configure default mode and the default status.
*
* This function configures default status and default mode.
* 
*
* \param[in]  psHciContext              psHciContext is pointer to HCI Layer
* \param[in]  pHwRef                    pHwRef is underlying Hardware context.
* \param[in]  ps_emulation_cfg          emulation configuration info.
*
*
* \retval NFCSTATUS_SUCCESS             Function execution is successful
*
* \retval NFCSTATUS_INVALID_PARAMETER   One or more of the given inputs are not valid
*/
extern 
NFCSTATUS
phHciNfc_SWP_Config_Sequence(
                            phHciNfc_sContext_t     *psHciContext, 
                            void                    *pHwRef, 
                            phHal_sEmulationCfg_t   *ps_emulation_cfg
                        );
                             

#endif /* #ifndef PHHCINFC_SWP_H */