phHciNfc_SWP.h revision 5d9927ba30ba449badb9f6df0fbeb4d6aedc6e2a
1/*
2 * Copyright (C) 2010 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/*!
18* =========================================================================== *
19*                                                                             *
20*                                                                             *
21* \file  phHciNfc_SWP .h                                                          *
22* \brief HCI wired interface gate Management Routines.                        *
23*                                                                             *
24*                                                                             *
25* Project: NFC-FRI-1.1                                                        *
26*                                                                             *
27* $Date: Fri Aug 14 17:01:28 2009 $                                                                   *
28* $Author: ing04880 $                                                                 *
29* $Revision: 1.15 $                                                               *
30* $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 $                                                                *
31*                                                                             *
32* =========================================================================== *
33*/
34#ifndef PHHCINFC_SWP_H
35#define PHHCINFC_SWP_H
36/*@}*/
37/**
38 *  \name HCI
39 *
40 * File: \ref phHciNfc_SWP.h
41 *
42 */
43/*@{*/
44#define PHHCINFC_SWPRED_FILEREVISION "$Revision: 1.15 $" /**< \ingroup grp_file_attributes */
45#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 */
46/*@}*/
47
48/****************************** Header File Inclusion *****************************/
49#include <phHciNfc_Generic.h>
50
51/******************************* Macro Definitions ********************************/
52
53/* Kb/sec */
54#define UICC_REF_BITRATE            (106U)
55#define UICC_MAX_CONNECT_RETRY      (0x02U)
56
57/* SWP switch mode event parameters */
58#define UICC_SWITCH_MODE_OFF        (0x00U)
59#define UICC_SWITCH_MODE_DEFAULT    (0x01U)
60#define UICC_SWITCH_MODE_ON         (0x02U)
61
62/******************** Enumeration and Structure Definition ***********************/
63
64typedef enum phHciNfc_SWP_Seq{
65    SWP_INVALID_SEQUENCE = 0x00U,
66    SWP_MODE_SEQ,
67    SWP_STATUS_SEQ,
68    SWP_END_SEQ
69}phHciNfc_SWP_Seq_t;
70
71typedef enum phHciNfc_SWP_Status{
72    UICC_NOT_CONNECTED          =   0x00U,
73    UICC_CONNECTION_ONGOING,
74    UICC_CONNECTED,
75    UICC_CONNECTION_LOST,
76    UICC_DISCONNECTION_ONGOING,
77    UICC_CONNECTION_FAILED
78}phHciNfc_SWP_Status_t;
79
80
81/* Information structure for  SWP  Gate */
82typedef struct phHciNfc_SWP_Info{
83
84    /* Pointer to SWP gate pipe information */
85    phHciNfc_Pipe_Info_t            *p_pipe_info;
86    /* SWP gate pipe Identified             */
87    uint8_t                         pipe_id;
88    /*Current internal Sequence type        */
89    phHciNfc_SWP_Seq_t              current_seq;
90    /*Current next Sequence ID          */
91    phHciNfc_SWP_Seq_t              next_seq;
92
93    phHciNfc_SWP_Status_t           uicc_status;
94
95    uint8_t                         uicc_bitrate;
96
97} phHciNfc_SWP_Info_t;
98
99/************************ Function Prototype Declaration *************************/
100/*!
101 * \brief Allocates the resources required for  SWP gate management.
102 *
103 * This function Allocates necessary resources as requiered by SWP gate management
104 *
105 * \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
106 *
107 * \retval NFCSTATUS_SUCCESS           Function execution is successful
108 *
109 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the given inputs are not valid
110 */
111extern
112NFCSTATUS
113phHciNfc_SWP_Init_Resources(phHciNfc_sContext_t  *psHciContext);
114
115/**
116* \ingroup grp_hci_nfc
117*
118* \brief Allocates the resources required for  SWP gate management.
119*
120* This function Allocates necessary resources as requiered by SWP gate management
121*
122* \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
123*
124* \retval NFCSTATUS_SUCCESS           Function execution is successful
125*
126* \retval NFCSTATUS_INVALID_PARAMETER One or more of the given inputs are not valid
127*/
128
129extern
130NFCSTATUS
131phHciNfc_SWPMgmt_Initialise(
132                                phHciNfc_sContext_t     *psHciContext,
133                                void                    *pHwRef
134                         );
135
136/**
137* \ingroup grp_hci_nfc
138*
139* \brief updates SWP gate specific pipe information .
140*
141* This function  intialises gate specific informations like pipe id,
142* event handler and response handler etc.
143*
144* \param[in]  psHciContext          psHciContext is the pointer to HCI Layer
145* \param[in]  pipeID                pipeID of the SWP management Gate
146* \param[in]  pPipeInfo             Update the pipe Information of the SWP
147*                                   Management Gate.
148*
149* \retval NFCSTATUS_SUCCESS           Function execution is successful
150*
151* \retval NFCSTATUS_INVALID_PARAMETER One or more of the given inputs are not valid
152*/
153extern
154NFCSTATUS
155phHciNfc_SWP_Update_PipeInfo(
156                                  phHciNfc_sContext_t     *psHciContext,
157                                  uint8_t                 pipeID,
158                                  phHciNfc_Pipe_Info_t    *pPipeInfo
159                                  );
160/**
161* \ingroup grp_hci_nfc
162*
163* \brief updates SWP gate specific pipe information .
164*
165* This function  intialises gate specific informations like pipe id,
166* event handler and response handler etc.
167*
168* \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
169*
170* \retval NFCSTATUS_SUCCESS           Function execution is successful
171*
172* \retval NFCSTATUS_INVALID_PARAMETER One or more of the given inputs are not valid
173*/
174
175extern
176NFCSTATUS
177phHciNfc_SWP_Get_PipeID(
178                       phHciNfc_sContext_t        *psHciContext,
179                       uint8_t                    *ppipe_id
180                       );
181
182/**
183* \ingroup grp_hci_nfc
184*
185* \brief Enables /disables SWP mode .
186*
187* This function  enables/disables SWP link associated with UICC.
188*
189*
190* \param[in]  psHciContext              psHciContext is pointer to HCI Layer
191*
192* \param[in]  pHwRef                    pHwRef is underlying Hardware context.
193*
194* \param[in]  enable_type               0 means disable ,1 means enable SWP link.
195* \retval NFCSTATUS_SUCCESS             Function execution is successful
196*
197* \retval NFCSTATUS_INVALID_PARAMETER   One or more of the given inputs are not valid
198*/
199extern
200NFCSTATUS
201phHciNfc_SWP_Configure_Default(
202                            void        *psHciHandle,
203                            void        *pHwRef,
204                            uint8_t     enable_type
205                        );
206
207/**
208* \ingroup grp_hci_nfc
209*
210* \brief Enables /disables SWP mode .
211*
212* This function  enables/disables SWP link associated with UICC.
213*
214*
215* \param[in]  psHciContext              psHciContext is pointer to HCI Layer
216*
217* \param[in]  pHwRef                    pHwRef is underlying Hardware context.
218*
219* \param[in]  mode                      TRUE Enable Protection.
220* \retval NFCSTATUS_SUCCESS             Function execution is successful
221*
222* \retval NFCSTATUS_INVALID_PARAMETER   One or more of the given inputs are not valid
223*/
224extern
225NFCSTATUS
226phHciNfc_SWP_Protection(
227                            void        *psHciHandle,
228                            void        *pHwRef,
229                            uint8_t     mode
230                        );
231
232
233/**
234* \ingroup grp_hci_nfc
235*
236* \brief To send the switch mode event
237*
238* This function send an event to change the switch mode.
239*
240*
241* \param[in]  psHciContext              psHciContext is pointer to HCI Layer
242*
243* \param[in]  pHwRef                    pHwRef is underlying Hardware context.
244*
245* \param[in]  uicc_mode                 UICC_SWITCH_MODE_OFF
246*                                       UICC_SWITCH_MODE_DEFAULT
247*                                       UICC_SWITCH_MODE_ON
248* \retval NFCSTATUS_SUCCESS             Function execution is successful
249*
250* \retval NFCSTATUS_INVALID_PARAMETER   One or more of the given inputs are not valid
251*/
252extern
253NFCSTATUS
254phHciNfc_SWP_Configure_Mode(
255                              void              *psHciHandle,
256                              void              *pHwRef,
257                              uint8_t           uicc_mode
258                          );
259
260/**
261* \ingroup grp_hci_nfc
262*
263* \brief To get the status of the UICC
264*
265* This function reads the status of the UICC. The status value can be any
266* of the values present in the \ref phHciNfc_SWP_Status_t
267*
268*
269* \param[in]  psHciContext              psHciContext is pointer to HCI Layer
270*
271* \param[in]  pHwRef                    pHwRef is underlying Hardware context.
272* \retval NFCSTATUS_SUCCESS             Function execution is successful
273*
274* \retval NFCSTATUS_INVALID_PARAMETER   One or more of the given inputs are not valid
275*/
276extern
277NFCSTATUS
278phHciNfc_SWP_Get_Status(
279                            void        *psHciHandle,
280                            void        *pHwRef
281                        );
282
283/**
284* \ingroup grp_hci_nfc
285*
286* \brief To get the bitrate
287*
288* This function reads the bitrate
289*
290*
291* \param[in]  psHciContext              psHciContext is pointer to HCI Layer
292*
293* \param[in]  pHwRef                    pHwRef is underlying Hardware context.
294* \retval NFCSTATUS_SUCCESS             Function execution is successful
295*
296* \retval NFCSTATUS_INVALID_PARAMETER   One or more of the given inputs are not valid
297*/
298extern
299NFCSTATUS
300phHciNfc_SWP_Get_Bitrate(
301                            void        *psHciHandle,
302                            void        *pHwRef
303                        );
304
305/**
306* \ingroup grp_hci_nfc
307*
308* \brief To update the sequence
309*
310* This function reads the bitrate
311*
312*
313* \param[in]  psHciContext              psHciContext is pointer to HCI Layer
314*
315* \param[in]  SWP_seq                   SWP sequence.
316*
317* \retval NFCSTATUS_SUCCESS             Function execution is successful
318* \retval NFCSTATUS_INVALID_PARAMETER   One or more of the given inputs are not valid
319*/
320extern
321NFCSTATUS
322phHciNfc_SWP_Update_Sequence(
323                                phHciNfc_sContext_t     *psHciContext,
324                                phHciNfc_eSeqType_t     SWP_seq
325                             );
326
327/**
328* \ingroup grp_hci_nfc
329*
330* \brief To configure default mode and the default status.
331*
332* This function configures default status and default mode.
333*
334*
335* \param[in]  psHciContext              psHciContext is pointer to HCI Layer
336* \param[in]  pHwRef                    pHwRef is underlying Hardware context.
337* \param[in]  ps_emulation_cfg          emulation configuration info.
338*
339*
340* \retval NFCSTATUS_SUCCESS             Function execution is successful
341*
342* \retval NFCSTATUS_INVALID_PARAMETER   One or more of the given inputs are not valid
343*/
344extern
345NFCSTATUS
346phHciNfc_SWP_Config_Sequence(
347                            phHciNfc_sContext_t     *psHciContext,
348                            void                    *pHwRef,
349                            phHal_sEmulationCfg_t   *ps_emulation_cfg
350                        );
351
352
353#endif /* #ifndef PHHCINFC_SWP_H */
354
355
356