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_RFReaderA.h                                                 *
22* \brief HCI Reader A Management Routines.                                    *
23*                                                                             *
24*                                                                             *
25* Project: NFC-FRI-1.1                                                        *
26*                                                                             *
27* $Date: Fri Aug 14 17:01:27 2009 $                                           *
28* $Author: ing04880 $                                                         *
29* $Revision: 1.17 $                                                           *
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
35
36#ifndef PHHCINFC_RFREADERA_H
37#define PHHCINFC_RFREADERA_H
38
39/*@}*/
40
41
42/**
43 *  \name HCI
44 *
45 * File: \ref phHciNfc_ReaderA.h
46 *
47 */
48/*@{*/
49#define PHHCINFC_RFREADERA_FILEREVISION "$Revision: 1.17 $" /**< \ingroup grp_file_attributes */
50#define PHHCINFC_RFREADERA_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 */
51/*@}*/
52
53/*
54***************************** Header File Inclusion ****************************
55*/
56
57#include <phHciNfc_Generic.h>
58
59/*
60****************************** Macro Definitions *******************************
61*/
62
63/* Commands exposed to the upper layer */
64#define NXP_WRA_CONTINUE_ACTIVATION         0x12U
65#define NXP_MIFARE_RAW                      0x20U
66#define NXP_MIFARE_CMD                      0x21U
67#define DATA_RATE_MAX_DEFAULT_VALUE         0x00U
68
69/* Enable the reader A */
70#define HCI_READER_A_ENABLE                 0x01U
71#define HCI_READER_A_INFO_SEQ               0x02U
72
73#define RDR_A_TIMEOUT_MIN                   0x00U
74#define RDR_A_TIMEOUT_MAX                   0x15U
75/*
76******************** Enumeration and Structure Definition **********************
77*/
78typedef enum phHciNfc_ReaderA_Seq{
79    RDR_A_DATA_RATE_MAX,
80    RDR_A_UID,
81    RDR_A_SAK,
82    RDR_A_ATQA,
83    RDR_A_APP_DATA,
84    RDR_A_FWI_SFGT,
85    RDR_A_END_SEQUENCE,
86    RDR_A_INVALID_SEQ
87} phHciNfc_ReaderA_Seq_t;
88
89/* Information structure for the polling loop Gate */
90typedef struct phHciNfc_ReaderA_Info{
91    /* Current running Sequence of the reader A Management */
92    phHciNfc_ReaderA_Seq_t          current_seq;
93    /* Next running Sequence of the reader A Management */
94    phHciNfc_ReaderA_Seq_t          next_seq;
95    /* Pointer to the reader A pipe information */
96    phHciNfc_Pipe_Info_t            *p_pipe_info;
97    uint8_t                         pipe_id;
98    /* Flag to say about the multiple targets */
99    uint8_t                         multiple_tgts_found;
100    /* Reader A information */
101    phHal_sRemoteDevInformation_t   reader_a_info;
102    /* Enable or disable reader gate */
103    uint8_t                         enable_rdr_a_gate;
104    /* UICC re-activation status */
105    uint8_t                         uicc_activation;
106} phHciNfc_ReaderA_Info_t;
107
108/*
109*********************** Function Prototype Declaration *************************
110*/
111
112/*!
113 * \brief Allocates the resources of reader A management gate.
114 *
115 * This function Allocates the resources of the reader A management
116 * gate Information Structure.
117 *
118 */
119extern
120NFCSTATUS
121phHciNfc_ReaderA_Init_Resources(
122                                phHciNfc_sContext_t     *psHciContext
123                         );
124
125/**
126* \ingroup grp_hci_nfc
127*
128*   The phHciNfc_ReaderA_Get_PipeID function gives the pipe id of the reader A
129*   gate
130*
131*   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
132*                                       context Structure.
133*   \param[in]  pHwRef                  pHwRef is the Information of
134*                                       the Device Interface Link
135*
136*   \retval NFCSTATUS_SUCCESS           Function execution is successful.
137*   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
138*                                       could not be interpreted properly.
139*
140*/
141extern
142NFCSTATUS
143phHciNfc_ReaderA_Get_PipeID(
144                            phHciNfc_sContext_t     *psHciContext,
145                            uint8_t                 *ppipe_id
146                            );
147
148/**
149* \ingroup grp_hci_nfc
150*
151*   The phHciNfc_ReaderA_Sequence function executes the sequence of operations, to
152*   get the UID, SAK, ATQA  etc.
153*
154*   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
155*                                       context Structure.
156*   \param[in]  pHwRef                  pHwRef is the Information of
157*                                       the Device Interface Link
158*
159*   \retval NFCSTATUS_SUCCESS           Function execution is successful.
160*   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
161*                                       could not be interpreted properly.
162*
163*/
164extern
165NFCSTATUS
166phHciNfc_ReaderA_Info_Sequence (
167                       void             *psHciHandle,
168                       void             *pHwRef
169                       );
170
171
172/**
173* \ingroup grp_hci_nfc
174*
175*   The phHciNfc_ReaderA_App_Data function is to get the application data information.
176*
177*   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
178*                                       context Structure.
179*   \param[in]  pHwRef                  pHwRef is the Information of
180*                                       the Device Interface Link
181*
182*   \retval NFCSTATUS_SUCCESS           Function execution is successful.
183*   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
184*                                       could not be interpreted properly.
185*
186*/
187extern
188NFCSTATUS
189phHciNfc_ReaderA_App_Data (
190                           void             *psHciHandle,
191                           void             *pHwRef
192                           );
193
194/**
195* \ingroup grp_hci_nfc
196*
197*   The phHciNfc_ReaderA_Fwi_Sfgt function is to get the frame waiting time
198*   information.
199*
200*   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
201*                                       context Structure.
202*   \param[in]  pHwRef                  pHwRef is the Information of
203*                                       the Device Interface Link
204*
205*   \retval NFCSTATUS_SUCCESS           Function execution is successful.
206*   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
207*                                       could not be interpreted properly.
208*
209*/
210extern
211NFCSTATUS
212phHciNfc_ReaderA_Fwi_Sfgt (
213                           void             *psHciHandle,
214                           void             *pHwRef
215                           );
216
217/**
218* \ingroup grp_hci_nfc
219*
220*  The phHciNfc_ReaderA_Update_PipeInfo function updates the pipe_id of the reader A
221*  gate management Structure.
222*
223*  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
224*                                      context Structure.
225*  \param[in]  pipeID                  pipeID of the reader A gate
226*  \param[in]  pPipeInfo               Update the pipe Information of the reader
227*                                      A gate
228*
229*  \retval NFCSTATUS_SUCCESS           Function execution is successful.
230*  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
231*                                      could not be interpreted properly.
232*
233*/
234
235extern
236NFCSTATUS
237phHciNfc_ReaderA_Update_PipeInfo(
238                                  phHciNfc_sContext_t     *psHciContext,
239                                  uint8_t                 pipeID,
240                                  phHciNfc_Pipe_Info_t    *pPipeInfo
241                                  );
242
243/**
244* \ingroup grp_hci_nfc
245*
246*   The phHciNfc_Send_ReaderA_Command function executes the command sent by the
247*   upper layer, depending on the commands defined.
248*
249*   \param[in]  psContext        psContext is the pointer to HCI Layer
250*                                context Structure.
251*   \param[in]  pHwRef           pHwRef is the Information of
252*                                the Device Interface Link
253*   \param[in]  pipe_id          pipeID of the reader A gate
254*   \param[in]  cmd              command that needs to be sent to the device
255*   \param[in]  length           information length sent by the caller
256*   \param[in]  params           information related to the command
257*
258*   \retval NFCSTATUS_SUCCESS           Function execution is successful.
259*   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
260*                                       could not be interpreted properly.
261*
262*/
263extern
264NFCSTATUS
265phHciNfc_Send_ReaderA_Command(
266                              phHciNfc_sContext_t   *psContext,
267                              void                  *pHwRef,
268                              uint8_t               pipe_id,
269                              uint8_t               cmd
270                              );
271
272/**
273* \ingroup grp_hci_nfc
274*
275*   The phHciNfc_ReaderA_Auto_Activate function updates auto activate register
276*
277*   \param[in]  psContext        psContext is the pointer to HCI Layer
278*                                context Structure.
279*   \param[in]  pHwRef           pHwRef is the Information of
280*                                the Device Interface Link
281*   \param[in] activate_enable   to enable or disable auto activation
282*
283*   \retval NFCSTATUS_SUCCESS           Function execution is successful.
284*   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
285*                                       could not be interpreted properly.
286*
287*/
288extern
289NFCSTATUS
290phHciNfc_ReaderA_Auto_Activate(
291                               void         *psContext,
292                               void         *pHwRef,
293                               uint8_t      activate_enable
294                               );
295
296/**
297* \ingroup grp_hci_nfc
298*
299*   The phHciNfc_Send_ReaderA_Command function executes the command sent by the
300*   upper layer, depending on the commands defined.
301*
302*   \param[in]  psHciContext     psHciContext is the pointer to HCI Layer
303*                                context Structure.
304*   \param[in]  infotype         To enable the reader A gate
305*   \param[in]  rdr_a_info       reader A gate info
306*
307*   \retval NFCSTATUS_SUCCESS           Function execution is successful.
308*   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
309*                                       could not be interpreted properly.
310*
311*/
312extern
313NFCSTATUS
314phHciNfc_ReaderA_Update_Info(
315                             phHciNfc_sContext_t        *psHciContext,
316                             uint8_t                    infotype,
317                             void                       *rdr_a_info
318                             );
319
320/**
321* \ingroup grp_hci_nfc
322*
323*   The phHciNfc_ReaderA_Cont_Active function executes NXP_WRA_CONTINUE_ACTIVATION
324*   command to inform the CLF Controller after having received the event
325*   EVT_TARGET_DISCOVERED to continue activation in case activation has
326*   been stopped after successful SAK response. The response to this command, sent
327*   as soon as the activation is finished, indicates the result of the
328*   activation procedure
329*
330*   \param[in]  psHciContext     psHciContext is the pointer to HCI Layer
331*                                context Structure.
332*   \param[in]  pHwRef           pHwRef is the Information of
333*                                the Device Interface Link
334*   \param[in]  pipeID           pipeID of the reader A gate
335*
336*   \retval NFCSTATUS_SUCCESS           Function execution is successful.
337*   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
338*                                       could not be interpreted properly.
339*
340*/
341extern
342NFCSTATUS
343phHciNfc_ReaderA_Cont_Activate (
344                              phHciNfc_sContext_t       *psHciContext,
345                              void                      *pHwRef
346                              );
347
348/**
349* \ingroup grp_hci_nfc
350*
351*  The phHciNfc_ReaderA_Set_DataRateMax function updates the data rate max value
352*
353*  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
354*                                      context Structure.
355*  \param[in]  pipeID                  pipeID of the reader A gate
356*  \param[in]  pPipeInfo               Update the pipe Information of the reader
357*                                      A gate
358*
359*  \retval NFCSTATUS_SUCCESS           Function execution is successful.
360*  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
361*                                      could not be interpreted properly.
362*
363*/
364extern
365NFCSTATUS
366phHciNfc_ReaderA_Set_DataRateMax(
367                                 void         *psContext,
368                                 void         *pHwRef,
369                                 uint8_t      data_rate_value
370                                 );
371
372#endif /* #ifndef PHHCINFC_RFREADERA_H */
373
374