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_WI .h                                                       *
22* \brief HCI wired interface gate Management Routines.                        *
23*                                                                             *
24*                                                                             *
25* Project: NFC-FRI-1.1                                                        *
26*                                                                             *
27* $Date: Fri Jan 16 10:33:47 2009 $                                           *
28* $Author: ravindrau $                                                         *
29* $Revision: 1.11 $                                                            *
30* $Aliases: NFC_FRI1.1_WK904_PREP1,NFC_FRI1.1_WK904_R17_1,NFC_FRI1.1_WK906_R18_1,NFC_FRI1.1_WK908_PREP1,NFC_FRI1.1_WK908_R19_1,NFC_FRI1.1_WK910_PREP1,NFC_FRI1.1_WK910_R20_1,NFC_FRI1.1_WK912_PREP1,NFC_FRI1.1_WK912_R21_1,NFC_FRI1.1_WK914_PREP1,NFC_FRI1.1_WK914_R22_1,NFC_FRI1.1_WK914_R22_2,NFC_FRI1.1_WK916_R23_1,NFC_FRI1.1_WK918_R24_1,NFC_FRI1.1_WK920_PREP1,NFC_FRI1.1_WK920_R25_1,NFC_FRI1.1_WK922_PREP1,NFC_FRI1.1_WK922_R26_1,NFC_FRI1.1_WK924_PREP1,NFC_FRI1.1_WK924_R27_1,NFC_FRI1.1_WK926_R28_1,NFC_FRI1.1_WK926_R28_2,NFC_FRI1.1_WK926_R28_3,NFC_FRI1.1_WK928_R29_1,NFC_FRI1.1_WK930_R30_1,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_WI_H
35#define PHHCINFC_WI_H
36/*@}*/
37/**
38 *  \name HCI
39 *
40 * File: \ref phHciNfc_WI.h
41 *
42 */
43/*@{*/
44#define PHHCINFC_WIRED_FILEREVISION "$Revision: 1.11 $" /**< \ingroup grp_file_attributes */
45#define PHHCINFC_WIREDINTERFACE_FILEALIASES  "$Aliases: NFC_FRI1.1_WK904_PREP1,NFC_FRI1.1_WK904_R17_1,NFC_FRI1.1_WK906_R18_1,NFC_FRI1.1_WK908_PREP1,NFC_FRI1.1_WK908_R19_1,NFC_FRI1.1_WK910_PREP1,NFC_FRI1.1_WK910_R20_1,NFC_FRI1.1_WK912_PREP1,NFC_FRI1.1_WK912_R21_1,NFC_FRI1.1_WK914_PREP1,NFC_FRI1.1_WK914_R22_1,NFC_FRI1.1_WK914_R22_2,NFC_FRI1.1_WK916_R23_1,NFC_FRI1.1_WK918_R24_1,NFC_FRI1.1_WK920_PREP1,NFC_FRI1.1_WK920_R25_1,NFC_FRI1.1_WK922_PREP1,NFC_FRI1.1_WK922_R26_1,NFC_FRI1.1_WK924_PREP1,NFC_FRI1.1_WK924_R27_1,NFC_FRI1.1_WK926_R28_1,NFC_FRI1.1_WK926_R28_2,NFC_FRI1.1_WK926_R28_3,NFC_FRI1.1_WK928_R29_1,NFC_FRI1.1_WK930_R30_1,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#include <phHciNfc_Emulation.h>
51
52/******************************* Macro Definitions ********************************/
53
54/******************** Enumeration and Structure Definition ***********************/
55
56
57/* enable /disable notifications */
58typedef enum phHciNfc_WI_Events{
59    eDisableEvents,
60    eEnableEvents
61} phHciNfc_WI_Events_t;
62
63typedef enum phHciNfc_WI_Seq{
64    eWI_PipeOpen        = 0x00U,
65    eWI_SetDefaultMode,
66    eWI_PipeClose
67} phHciNfc_WI_Seq_t;
68
69/* Information structure for  WI  Gate */
70typedef struct phHciNfc_WI_Info{
71
72    /* Pointer to WI gate pipe information */
73    phHciNfc_Pipe_Info_t            *p_pipe_info;
74    /*  WI gate pipe Identifier */
75    uint8_t                         pipe_id;
76    /*  Application ID of the Transaction performed */
77    uint8_t                         aid[MAX_AID_LEN];
78    /*  Default info */
79    uint8_t                         default_type;
80    /* Current WI gate Internal Sequence type   */
81    phHciNfc_WI_Seq_t               current_seq;
82    /*Current WI gate next Sequence ID          */
83    phHciNfc_WI_Seq_t               next_seq;
84
85} phHciNfc_WI_Info_t;
86
87/************************ Function Prototype Declaration *************************/
88/*!
89 * \brief Allocates the resources required for  WI gate management.
90 *
91 * This function Allocates necessary resources as requiered by WI gate management
92 *
93 * \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
94 *
95 * \retval NFCSTATUS_SUCCESS           Function execution is successful
96 *
97 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the given inputs are not valid
98 */
99extern
100NFCSTATUS
101phHciNfc_WI_Init_Resources(phHciNfc_sContext_t   *psHciContext);
102
103/**
104* \ingroup grp_hci_nfc
105*
106* \brief Allocates the resources required for  WI gate management.
107*
108* This function Allocates necessary resources as requiered by WI gate management
109*
110* \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
111*
112* \retval NFCSTATUS_SUCCESS           Function execution is successful
113*
114* \retval NFCSTATUS_INVALID_PARAMETER One or more of the given inputs are not valid
115*/
116
117extern
118NFCSTATUS
119phHciNfc_WIMgmt_Initialise(
120                                phHciNfc_sContext_t     *psHciContext,
121                                void                    *pHwRef
122                         );
123/**
124* \ingroup grp_hci_nfc
125*
126* \brief Allocates the resources required for  WI gate management.
127*
128* This function Allocates necessary resources as requiered by WI gate management
129*
130* \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
131*
132* \retval NFCSTATUS_SUCCESS           Function execution is successful
133*
134* \retval NFCSTATUS_INVALID_PARAMETER One or more of the given inputs are not valid
135*/
136extern
137NFCSTATUS
138phHciNfc_WI_Update_PipeInfo(
139                                  phHciNfc_sContext_t     *psHciContext,
140                                  uint8_t                 pipeID,
141                                  phHciNfc_Pipe_Info_t    *pPipeInfo
142                                  );
143
144/**
145* \ingroup grp_hci_nfc
146*
147* \brief Allocates the resources required for  WI gate management.
148*
149* This function Allocates necessary resources as requiered by WI gate management
150*
151* \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
152*
153* \retval NFCSTATUS_SUCCESS           Function execution is successful
154*
155* \retval NFCSTATUS_INVALID_PARAMETER One or more of the given inputs are not valid
156*/
157extern
158NFCSTATUS
159phHciNfc_WI_Configure_Mode(
160                                  void                *psHciHandle,
161                                  void                *pHwRef,
162                                  phHal_eSmartMX_Mode_t   cfg_Mode
163                          );
164
165extern
166NFCSTATUS
167phHciNfc_WI_Configure_Notifications(
168                                    void        *psHciHandle,
169                                    void        *pHwRef,
170                                    phHciNfc_WI_Events_t eNotification
171                                );
172
173extern
174NFCSTATUS
175phHciNfc_WI_Get_PipeID(
176                       phHciNfc_sContext_t        *psHciContext,
177                       uint8_t                    *ppipe_id
178                   );
179
180extern
181NFCSTATUS
182phHciNfc_WI_Configure_Default(
183                              void                  *psHciHandle,
184                              void                  *pHwRef,
185                              uint8_t               enable_type
186                          );
187
188extern
189NFCSTATUS
190phHciNfc_WI_Get_Default(
191                        void                  *psHciHandle,
192                        void                  *pHwRef
193                        );
194
195
196#endif /* #ifndef PHHCINFC_WI_H */
197
198