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  * \file  phFriNfc_OvrHalCmd.h
19  * \brief Overlapped HAL
20  *
21  * Project: NFC-FRI
22  *
23  * $Date: Fri Oct  5 10:09:57 2007 $
24  * $Author: frq05303 $
25  * $Revision: 1.1 $
26  * $Aliases: NFC_FRI1.1_WK826_PREP1,NFC_FRI1.1_WK826_R1,NFC_FRI1.1_WK826_R2,NFC_FRI1.1_WK830_PREP1,NFC_FRI1.1_WK830_PREP2,NFC_FRI1.1_WK830_R5_1,NFC_FRI1.1_WK830_R5_2,NFC_FRI1.1_WK830_R5_3,NFC_FRI1.1_WK832_PREP1,NFC_FRI1.1_WK832_PRE2,NFC_FRI1.1_WK832_PREP2,NFC_FRI1.1_WK832_PREP3,NFC_FRI1.1_WK832_R5_1,NFC_FRI1.1_WK832_R6_1,NFC_FRI1.1_WK834_PREP1,NFC_FRI1.1_WK834_PREP2,NFC_FRI1.1_WK834_R7_1,NFC_FRI1.1_WK836_PREP1,NFC_FRI1.1_WK836_R8_1,NFC_FRI1.1_WK838_PREP1,NFC_FRI1.1_WK838_R9_PREP2,NFC_FRI1.1_WK838_R9_1,NFC_FRI1.1_WK840_R10_PREP1,NFC_FRI1.1_WK840_R10_1,NFC_FRI1.1_WK842_R11_PREP1,NFC_FRI1.1_WK842_R11_PREP2,NFC_FRI1.1_WK842_R11_1,NFC_FRI1.1_WK844_PREP1,NFC_FRI1.1_WK844_R12_1,NFC_FRI1.1_WK846_PREP1,NFC_FRI1.1_WK846_R13_1,NFC_FRI1.1_WK848_PREP1,NFC_FRI1.1_WK848_R14_1,NFC_FRI1.1_WK850_PACK1,NFC_FRI1.1_WK851_PREP1,NFC_FRI1.1_WK850_R15_1,NFC_FRI1.1_WK902_PREP1,NFC_FRI1.1_WK902_R16_1,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_WK928_R29_1,NFC_FRI1.1_WK930_R30_1,NFC_FRI1.1_WK934_PREP_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 $
27  *
28  */
29 
30 #ifndef PHFRINFC_OVRHALCMD_H
31 #define PHFRINFC_OVRHALCMD_H
32 
33 #include <phNfcHalTypes.h>
34 
35 /**
36  *  \name Overlapped HAL
37  *
38  * File: \ref phFriNfc_OvrHalCmd.h
39  *
40  */
41 /*@{*/
42 #define PH_FRINFC_OVRHALCMD_FILEREVISION "$Revision: 1.1 $" /** \ingroup grp_file_attributes */
43 #define PH_FRINFC_OVRHALCMD_FILEALIASES  "$Aliases: NFC_FRI1.1_WK826_PREP1,NFC_FRI1.1_WK826_R1,NFC_FRI1.1_WK826_R2,NFC_FRI1.1_WK830_PREP1,NFC_FRI1.1_WK830_PREP2,NFC_FRI1.1_WK830_R5_1,NFC_FRI1.1_WK830_R5_2,NFC_FRI1.1_WK830_R5_3,NFC_FRI1.1_WK832_PREP1,NFC_FRI1.1_WK832_PRE2,NFC_FRI1.1_WK832_PREP2,NFC_FRI1.1_WK832_PREP3,NFC_FRI1.1_WK832_R5_1,NFC_FRI1.1_WK832_R6_1,NFC_FRI1.1_WK834_PREP1,NFC_FRI1.1_WK834_PREP2,NFC_FRI1.1_WK834_R7_1,NFC_FRI1.1_WK836_PREP1,NFC_FRI1.1_WK836_R8_1,NFC_FRI1.1_WK838_PREP1,NFC_FRI1.1_WK838_R9_PREP2,NFC_FRI1.1_WK838_R9_1,NFC_FRI1.1_WK840_R10_PREP1,NFC_FRI1.1_WK840_R10_1,NFC_FRI1.1_WK842_R11_PREP1,NFC_FRI1.1_WK842_R11_PREP2,NFC_FRI1.1_WK842_R11_1,NFC_FRI1.1_WK844_PREP1,NFC_FRI1.1_WK844_R12_1,NFC_FRI1.1_WK846_PREP1,NFC_FRI1.1_WK846_R13_1,NFC_FRI1.1_WK848_PREP1,NFC_FRI1.1_WK848_R14_1,NFC_FRI1.1_WK850_PACK1,NFC_FRI1.1_WK851_PREP1,NFC_FRI1.1_WK850_R15_1,NFC_FRI1.1_WK902_PREP1,NFC_FRI1.1_WK902_R16_1,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_WK928_R29_1,NFC_FRI1.1_WK930_R30_1,NFC_FRI1.1_WK934_PREP_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 $"      /** \ingroup grp_file_attributes */
44 /*@}*/
45 
46 /** \defgroup grp_ovr_hal_cmd Overlapped HAL Command List
47  *  \ingroup grp_fri_nfc_ovr_hal
48  *  These are the command definitions for the Overlapped HAL. They are used internally by the
49  *  implementation of the component.
50  */
51 /*@{*/
52 #define PH_FRINFC_OVRHALCMD_NUL             (0)     /**< \brief We're in NO command */
53 
54 #define PH_FRINFC_OVRHALCMD_ENU             (1)     /**< \brief Enumerate */
55 #define PH_FRINFC_OVRHALCMD_OPE             (2)     /**< \brief Open */
56 #define PH_FRINFC_OVRHALCMD_CLO             (3)     /**< \brief Close */
57 #define PH_FRINFC_OVRHALCMD_GDC             (4)     /**< \brief Get Dev Caps */
58 #define PH_FRINFC_OVRHALCMD_POL             (5)     /**< \brief Poll */
59 #define PH_FRINFC_OVRHALCMD_CON             (6)     /**< \brief Connect */
60 #define PH_FRINFC_OVRHALCMD_DIS             (7)     /**< \brief Disconnect */
61 #define PH_FRINFC_OVRHALCMD_TRX             (8)     /**< \brief Transceive */
62 #define PH_FRINFC_OVRHALCMD_STM             (9)     /**< \brief Start Target Mode */
63 #define PH_FRINFC_OVRHALCMD_SND             (10)     /**< \brief Send */
64 #define PH_FRINFC_OVRHALCMD_RCV             (11)    /**< \brief Receive */
65 #define PH_FRINFC_OVRHALCMD_IOC             (12)    /**< \brief IOCTL */
66 
67 #define PH_FRINFC_OVRHALCMD_TST             (255)   /**< \brief OVR HAL test-related command */
68 
69 
70 /** \brief Parameter compound internally used for testing purpose
71  *
72  */
73 typedef struct phFriNfc_OvrHalCmdVoid
74 {
75     void      *Div;
76     NFCSTATUS  Status;
77     uint32_t   Delay;
78 } phFriNfc_OvrHalCmdVoid_t;
79 
80 /** \brief Parameter compound internally used by \ref phFriNfc_OvrHal_Enumerate
81  *
82  */
83 typedef struct phFriNfc_OvrHalCmdEnu
84 {
85     phHal_sHwReference_t           *HwReference;
86     uint8_t                        *pNbrOfDevDetected;
87 } phFriNfc_OvrHalCmdEnu_t;
88 
89 /** \brief Parameter compound internally used by \ref phFriNfc_OvrHal_Open
90  *
91  */
92 typedef struct phFriNfc_OvrHalCmdOpe
93 {
94     phHal_sHwReference_t *psHwReference;
95 } phFriNfc_OvrHalCmdOpe_t;
96 
97 /** \brief Parameter compound internally used by \ref phFriNfc_OvrHal_Close
98  *
99  */
100 typedef struct phFriNfc_OvrHalCmdClo
101 {
102     phHal_sHwReference_t *psHwReference;
103 } phFriNfc_OvrHalCmdClo_t;
104 
105 /** \brief Parameter compound internally used by \ref phFriNfc_OvrHal_GetDeviceCapabilities
106  *
107  */
108 typedef struct phFriNfc_OvrHalCmdGdc
109 {
110     phHal_sHwReference_t            *psHwReference;
111     phHal_sDeviceCapabilities_t     *psDevCapabilities;
112 } phFriNfc_OvrHalCmdGdc_t;
113 
114 /** \brief Parameter compound internally used by \ref phFriNfc_OvrHal_Poll
115  *
116  */
117 typedef struct phFriNfc_OvrHalCmdPol
118 {
119     phHal_sHwReference_t           *psHwReference;
120     phHal_eOpModes_t               *OpModes;
121     phHal_sRemoteDevInformation_t  *psRemoteDevInfoList;
122     uint8_t                        *NbrOfRemoteDev;
123     phHal_sDevInputParam_t         *psDevInputParam;
124 } phFriNfc_OvrHalCmdPol_t;
125 
126 /** \brief Parameter compound internally used by \ref phFriNfc_OvrHal_Connect
127  *
128  */
129 typedef struct phFriNfc_OvrHalCmdCon
130 {
131     phHal_sHwReference_t          *psHwReference;
132     phHal_eOpModes_t               OpMode;
133     phHal_sRemoteDevInformation_t *psRemoteDevInfo;
134     phHal_sDevInputParam_t        *psDevInputParam;
135 } phFriNfc_OvrHalCmdCon_t;
136 
137 /** \brief Parameter compound internally used by \ref phFriNfc_OvrHal_Disconnect
138  *
139  */
140 typedef struct phFriNfc_OvrHalCmdDis
141 {
142     phHal_sHwReference_t            *psHwReference;
143     phHal_sRemoteDevInformation_t   *psRemoteDevInfo;
144 } phFriNfc_OvrHalCmdDis_t;
145 
146 /** \brief Parameter compound internally used by \ref phFriNfc_OvrHal_Transceive
147  *
148  */
149 typedef struct phFriNfc_OvrHalCmdTrx
150 {
151     phHal_sHwReference_t           *psHwReference;
152     phHal_sRemoteDevInformation_t  *psRemoteDevInfo;
153     phHal_uCmdList_t                Cmd;
154     phHal_sDepAdditionalInfo_t     *psDepAdditionalInfo;
155     uint8_t                        *pSendBuf;
156     uint16_t                        SendLength;
157     uint8_t                        *pRecvBuf;
158     uint16_t                       *pRecvLength;
159 } phFriNfc_OvrHalCmdTrx_t;
160 
161 /** \brief Parameter compound internally used by \ref phFriNfc_OvrHal_StartTargetMode
162  *
163  */
164 typedef struct phFriNfc_OvrHalCmdStm
165 {
166     phHal_sHwReference_t       *psHwReference;
167     phHal_sTargetInfo_t        *pTgInfo;
168     phHal_eOpModes_t           *OpModes;
169     uint8_t                    *pConnectionReq;
170     uint8_t                    *pConnectionReqBufLength;
171 } phFriNfc_OvrHalCmdStm_t;
172 
173 /** \brief Parameter compound internally used by \ref phFriNfc_OvrHal_Receive
174  *
175  */
176 typedef struct phFriNfc_OvrHalCmdRcv
177 {
178     phHal_sHwReference_t        *psHwReference;
179     phHal_sDepAdditionalInfo_t  *psDepAdditionalInfo;
180     uint8_t                     *pRecvBuf;
181     uint16_t                    *pRecvLength;
182 } phFriNfc_OvrHalCmdRcv_t;
183 
184 /** \brief Parameter compound internally used by \ref phFriNfc_OvrHal_Send
185  *
186  */
187 typedef struct phFriNfc_OvrHalCmdSnd
188 {
189     phHal_sHwReference_t        *psHwReference;
190     phHal_sDepAdditionalInfo_t  *psDepAdditionalInfo;
191     uint8_t                     *pSendBuf;
192     uint16_t                     SendLength;
193 } phFriNfc_OvrHalCmdSnd_t;
194 
195 /** \brief Parameter compound internally used by \ref phFriNfc_OvrHal_Ioctl
196  *
197  */
198 typedef struct phFriNfc_OvrHalCmdIoc
199 {
200     phHal_sHwReference_t     *psHwReference;
201     uint16_t                  IoctlCode;
202     uint8_t                  *pInBuf;
203     uint16_t                  InLength;
204     uint8_t                  *pOutBuf;
205     uint16_t                 *pOutLength;
206 } phFriNfc_OvrHalCmdIoc_t;
207 
208 /** \brief Parameter compound internally used by \ref phFriNfc_OvrHal_Test
209  *
210  */
211 typedef struct phFriNfc_OvrHalCmdTst
212 {
213     phHal_sHwReference_t     *psHwReference;
214     void                     *pTestParam;
215 } phFriNfc_OvrHalCmdTst_t;
216 
217 
218 #ifdef PHFRINFC_OVRHAL_MOCKUP  /* */
219 /** \brief Parameter compound internally used by \ref phFriNfc_OvrHalCmdMockup_t
220  *
221  */
222 typedef struct phFriNfc_OvrHalCmdMockup
223 {
224     phHal_sHwReference_t     *psHwReference;
225     uint16_t                  IoctlCode;
226     uint8_t                  *pInBuf;
227     uint16_t                  InLength;
228     uint8_t                  *pOutBuf;
229     uint16_t                 *pOutLength;
230 } phFriNfc_OvrHalCmdMockup_t;
231 #endif /* PHFRINFC_OVRHAL_MOCKUP */
232 
233 /** \brief Placeholder for all parameter structures
234  *
235  */
236 typedef union phFriNfc_OvrHalCmd
237 {
238     phFriNfc_OvrHalCmdVoid_t    CmdVoid;
239 
240     phFriNfc_OvrHalCmdEnu_t     CmdEnu;
241     phFriNfc_OvrHalCmdOpe_t     CmdOpe;
242     phFriNfc_OvrHalCmdClo_t     CmdClo;
243     phFriNfc_OvrHalCmdGdc_t     CmdGdc;
244     phFriNfc_OvrHalCmdPol_t     CmdPol;
245     phFriNfc_OvrHalCmdCon_t     CmdCon;
246     phFriNfc_OvrHalCmdDis_t     CmdDis;
247     phFriNfc_OvrHalCmdTrx_t     CmdTrx;
248     phFriNfc_OvrHalCmdIoc_t     CmdIoc;
249     phFriNfc_OvrHalCmdStm_t     CmdStm;
250     phFriNfc_OvrHalCmdSnd_t     CmdSnd;
251     phFriNfc_OvrHalCmdRcv_t     CmdRcv;
252     phFriNfc_OvrHalCmdTst_t     CmdTst;
253 } phFriNfc_OvrHalCmd_t;
254 
255 
256 /*@}*/
257 #endif /* PHFRINFC_OVRHALCMD_H */
258