• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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  phNfcHalTypes.h
19  * \brief Structure declarations/type definitions belonging to the HAL subsystem.
20  *
21  * Project: NFC MW / HAL
22  *
23  * $Date: Thu Apr  8 17:11:39 2010 $
24  * $Author: ing04880 $
25  * $Revision: 1.106 $
26  * $Aliases: NFC_FRI1.1_WK1007_SDK,NFC_FRI1.1_WK1017_PREP1,NFC_FRI1.1_WK1017_R34_1,NFC_FRI1.1_WK1017_R34_2,NFC_FRI1.1_WK1023_R35_1 $
27  *
28  */
29 
30 
31 #ifndef PHNFCHALTYPES_H /* */
32 #define PHNFCHALTYPES_H /* */
33 
34 /**
35  *  \name HAL Types
36  *
37  * File: \ref phNfcHalTypes.h
38  *
39  * Developed By: Ravindra U.
40  *
41  */
42 
43 /*@{*/
44 #define PHNFCHALTYPES_FILEREVISION "$Revision: 1.106 $" /**< \ingroup grp_file_attributes */
45 #define PHNFCHALTYPES_FILEALIASES  "$Aliases: NFC_FRI1.1_WK1007_SDK,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 #include <phNfcTypes.h>
49 #include <phNfcCompId.h>
50 #include <phNfcConfig.h>
51 
52 #ifndef NXP_HAL_MEM_INFO_SIZE
53 #define NXP_HAL_MEM_INFO_SIZE           0x01U
54 #endif
55 
56 #if (NXP_HAL_MEM_INFO_SIZE > 0x01)
57 #define NXP_FW_UPLOAD_PROGRESS          0x965AU
58 #define NXP_FW_UPLOAD_SUCCESS           0x0000U
59 #else
60 #define NXP_FW_UPLOAD_PROGRESS          0x5AU
61 #define NXP_FW_UPLOAD_SUCCESS           0x00U
62 #endif
63 
64 
65 typedef struct phHal_sMemInfo
66 {
67     uint16_t            fw_magic;
68     uint16_t            fw_rfu;
69     uint32_t            hal_version;
70 }phHal_sMemInfo_t;
71 
72 
73 /** \ingroup  grp_hal_common
74  *
75  * \if hal
76  *  \brief Protocol Support Information
77  * \else
78  *  \brief HAL-Specific
79  * \endif
80  *
81  *  The <em> Supported Protocols Structure </em> holds all protocol supported by the current NFC
82  *  device.
83  *
84  *  \note All members of this structure are output parameters [out].
85  *
86  */
87 typedef phNfc_sSupProtocol_t phHal_sSupProtocol_t;
88 
89 
90 /** \ingroup grp_hal_common
91  *
92  *
93  * \if hal
94  *  \brief Information related to the NFC Device
95  * \else
96  *  \brief HAL-Specific
97  * \endif
98  *
99  *  The <em> Device Information Structure </em> holds information
100  *  related to the NFC IC read during initialization time.
101  *  It allows the caller firware, hardware version, the model id,
102  *  HCI verison supported and vendor name. Refer to the NFC Device
103  *  User Manual on how to interpret each of the values. In addition
104  *  it also contains capabilities of the NFC Device such as the
105  *  protocols supported in Reader and emulation mode
106  *
107  */
108 
109 typedef phNfc_sDeviceCapabilities_t phHal_sDeviceCapabilities_t;
110 
111 
112 /**
113  * \ingroup grp_hal_common
114  *
115  * \if hal
116  *  \brief Hardware Reference - The Peripheral Representation
117  * \else
118  *  \brief HAL-Specific
119  * \endif
120  *
121  *  The Hardware Reference structure is filled as part of the open function and
122  *  contains information regarding connected peripheral NFC device. It also
123  *  stores the refernce to the communication driver passed by the HAL client
124  *  for usage during communication with the NFC Device
125  *
126  * \note The caller can consider this structure atomic, no interpretation is required
127  *       for HAL operation.
128  *
129  * \sa phHal4Nfc_Open .
130  *
131  */
132 
133 /**
134  * \ingroup grp_hal_common
135  *
136  *  \brief Hardware Reference - The Peripheral Representation
137  *
138  *  The Hardware Reference structure is filled as part of the open function and
139  *  contains information regarding connected peripheral NFC device. It also
140  *  stores the refernce to the communication driver passed by the HAL client
141  *  for usage during communication with the NFC Device
142  *
143  * \note The caller can consider this structure atomic, no interpretation is required
144  *       for HAL operation.
145  *
146  */
147 typedef struct phHal_sHwReference
148 {
149     /**<  Will be usable/valid after the Open function. */
150     void                            *p_board_driver;
151     /**<  Session Identifier for the established session */
152     uint8_t                         session_id[SESSIONID_SIZE];
153     /**<  SMX  Connected TRUE/FALSE */
154     uint8_t                         smx_connected;
155     /**<  UICC  Connected TRUE/FALSE */
156     uint8_t                         uicc_connected;
157     /**<  UICC  Reader Mode is Active TRUE/FALSE */
158     uint8_t                         uicc_rdr_active;
159     /**<  Device information. */
160     phNfc_sDeviceCapabilities_t     device_info;
161     /**<  Context of the HAL Layer */
162     void                            *hal_context;
163     /**<  Context of the DAL Layer */
164     void                            *dal_context;
165 } phHal_sHwReference_t;
166 
167 
168 /** \ingroup grp_hal_common
169  *
170  * \if hal
171  * \brief Hardware configuration - Configuration Parameters for the NFC Device
172  * \else
173  * \brief HAL-Specific
174  * \endif
175  *
176  *  The parameters used to configure the device during the initialisation.
177  *  This structure is used internally by the HAL implementation and is filled
178  *  up based on various configuration parameters from the config file
179  * \note None.
180  *
181  */
182 
183 typedef struct phHal_sHwConfig
184 {
185 
186     uint8_t             session_id[SESSIONID_SIZE]; /**<  Session Identifier for
187                                                      the established session */
188 
189     uint8_t             clk_req; /**<  Clock Request Setting */
190 
191     uint8_t             input_clk; /**<  Input Clock Setting */
192 
193 } phHal_sHwConfig_t;
194 
195 
196 
197 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
198 
199 /* This data structure is not used anymore and will be removed in subsequent
200    release */
201 typedef struct phHal_sDepFlags
202 {
203    unsigned int MetaChaining : 1;
204    unsigned int NADPresent   : 1;
205 } phHal_sDepFlags_t;
206 
207 /* This data structure is not used anymore and will be removed in subsequent
208    release */
209 
210 typedef struct phHal_sDepAdditionalInfo
211 {
212     phHal_sDepFlags_t DepFlags;
213     uint8_t NAD;
214 } phHal_sDepAdditionalInfo_t;
215 
216 
217 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
218 
219 
220 
221 /** \ingroup grp_hal_common
222  *
223  * \if hal
224  *  \brief Enumerated MIFARE Commands
225  * \else
226  *  \brief HAL-Specific
227  * \endif
228  *
229  *  The <em> Mifare Command List Enumerator </em> lists all available Mifare native commands.
230  *
231  * \note None.
232  *
233  */
234 
235 typedef phNfc_eMifareCmdList_t phHal_eMifareCmdList_t;
236 
237 #define    phHal_eMifareRaw        phNfc_eMifareRaw
238 #define    phHal_eMifareAuthentA   phNfc_eMifareAuthentA
239 #define    phHal_eMifareAuthentB   phNfc_eMifareAuthentB
240 #define    phHal_eMifareRead16     phNfc_eMifareRead16
241 #define    phHal_eMifareRead       phNfc_eMifareRead
242 #define    phHal_eMifareWrite16    phNfc_eMifareWrite16
243 #define    phHal_eMifareWrite4     phNfc_eMifareWrite4
244 #define    phHal_eMifareInc        phNfc_eMifareInc
245 #define    phHal_eMifareDec        phNfc_eMifareDec
246 #define    phHal_eMifareTransfer   phNfc_eMifareTransfer
247 #define    phHal_eMifareRestore    phNfc_eMifareRestore
248 #define    phHal_eMifareReadSector phNfc_eMifareReadSector
249 #define    phHal_eMifareWriteSector phNfc_eMifareWriteSector
250 #define    phHal_eMifareInvalidCmd phNfc_eMifareInvalidCmd
251 
252 
253 /** \ingroup grp_hal_common
254  *
255  *  The <em> T=Cl Command List Enumerator </em> lists all available T=Cl Commands.
256  *
257  * \note None.
258  *
259  */
260 typedef phNfc_eIso14443_4_CmdList_t phHal_eIso14443_4_CmdList_t;
261 
262 #define    phHal_eIso14443_4_Raw    phNfc_eIso14443_4_Raw
263 
264 
265 /** \ingroup grp_hal_common
266  *
267  *  The <em> NFCIP1 Command List Enumerator </em> lists all available NFCIP1 Commands.
268  *
269  * \note None.
270  *
271  */
272 typedef phNfc_eNfcIP1CmdList_t phHal_eNfcIP1CmdList_t;
273 
274 #define       phHal_eNfcIP1_Raw             phNfc_eNfcIP1_Raw
275 
276 
277 /** \ingroup grp_hal_common
278  *
279  *  The <em> ISO15693 Command List Enumerator </em> lists all available ISO15693 Commands.
280  *
281  * \note None.
282  *
283  */
284 
285 typedef phNfc_eIso15693_CmdList_t phHal_eIso15693_CmdList_t;
286 
287 #if 0
288 #define    phHal_eIso15693_Raw             phNfc_eIso15693_Raw
289 #endif
290 #define    phHal_eIso15693_Cmd             phNfc_eIso15693_Cmd
291 #define    phHal_eIso15693_Invalid         phNfc_eIso15693_Invalid
292 
293 /** \ingroup grp_hal_common
294  *
295  *  The <em> Felica Command List Enumerator </em> lists all available Felica Commands.
296  *
297  * \note None.
298  *
299  */
300 
301 typedef enum phHal_eFelicaCmdList
302 {
303     phHal_eFelica_Raw             = 0xF0U, /**< Felica Raw command:\n
304                                                  - This command sends the data buffer directly
305                                                  to the remote device */
306     phHal_eFelica_Check           = 0x00, /**< Felica Check command:\n
307                                                  - This command checks the data from the Felica
308                                                   remote device */
309     phHal_eFelica_Update          = 0x01, /**< Felica Update command:\n
310                                                  - This command updates the data onto the Felica
311                                                   remote device */
312     phHal_eFelica_Invalid         = 0xFFU      /**< Invalid Command */
313 } phHal_eFelicaCmdList_t;
314 
315 
316 typedef enum phHal_eJewelCmdList
317 {
318     phHal_eJewel_Raw            = 0x00U, /**< Jewel command:\n
319                                                  - This command sends the data buffer directly
320                                                  to the remote device */
321     phHal_eJewel_Invalid        = 0xFFU  /**< Invalid jewel command */
322 }phHal_eJewelCmdList_t;
323 
324 
325 
326 /** \ingroup grp_hal_nfci
327 *
328 * \if hal
329 *  \brief Remote Device Reader A RF Gate Information Container
330 * \else
331 *  \brief HAL-Specific
332 * \endif
333 *
334 *  The <em> Reader A structure </em> includes the available information
335 *  related to the discovered ISO14443A remote device. This information
336 *  is updated for every device discovery.
337 *  \note None.
338 *
339 */
340 typedef phNfc_sIso14443AInfo_t phHal_sIso14443AInfo_t;
341 
342 /** \ingroup grp_hal_nfci
343 *
344 * \if hal
345 *  \brief Remote Device Reader B RF Gate Information Container
346 * \else
347 *  \brief HAL-Specific
348 * \endif
349 *
350 *  The <em> Reader B structure </em> includes the available information
351 *  related to the discovered ISO14443B remote device. This information
352 *  is updated for every device discovery.
353 *  \note None.
354 *
355 */
356 
357 typedef phNfc_sIso14443BInfo_t phHal_sIso14443BInfo_t;
358 
359 typedef phNfc_sIso14443BPrimeInfo_t phHal_sIso14443BPrimeInfo;
360 
361 
362 /** \ingroup grp_hal_nfci
363 *
364 * \if hal
365 *  \brief Remote Device Jewel Reader RF Gate Information Container
366 * \else
367 *  \brief HAL-Specific
368 * \endif
369 *
370 *  The <em> Jewel Reader structure </em> includes the available information
371 *  related to the discovered Jewel remote device. This information
372 *  is updated for every device discovery.
373 *  \note None.
374 *
375 */
376 
377 
378 typedef phNfc_sJewelInfo_t phHal_sJewelInfo_t;
379 
380 /** \ingroup grp_hal_nfci
381 *
382 * \if hal
383 *  \brief Remote Device Felica Reader RF Gate Information Container
384 * \else
385 *  \brief HAL-Specific
386 * \endif
387 *
388 *  The <em> Felica Reader structure </em> includes the available information
389 *  related to the discovered Felica remote device. This information
390 *  is updated for every device discovery.
391 *  \note None.
392 *
393 */
394 
395 typedef phNfc_sFelicaInfo_t phHal_sFelicaInfo_t;
396 
397 
398 /** \ingroup grp_hal_nfci
399 *
400 * \if hal
401 *  \brief Remote Device Reader 15693 RF Gate Information Container
402 * \else
403 *  \brief HAL-Specific
404 * \endif
405 *
406 *  The <em> Reader A structure </em> includes the available information
407 *  related to the discovered ISO15693 remote device. This information
408 *  is updated for every device discovery.
409 *  \note None.
410 *
411 */
412 
413 typedef phNfc_sIso15693Info_t phHal_sIso15693Info_t;
414 
415 
416 /** \ingroup grp_hal_nfci
417 *
418 * \if hal
419 *  \brief NFC Data Rate Supported between the Reader and the Target
420 * \else
421 *  \brief HAL-Specific
422 * \endif
423 *
424 *  The <em> \ref phHalNfc_eDataRate enum </em> lists all the Data Rate
425 *  values to be used to determine the rate at which the data is transmitted
426 *  to the target.
427 *
428 *  \note None.
429 */
430 
431 
432 typedef phNfc_eDataRate_t phHalNfc_eDataRate_t;
433 
434 
435 /** \ingroup grp_hal_nfci
436 *
437 * \if hal
438 *  \brief NFCIP1 Gate Information Container
439 * \else
440 *  \brief HAL-Specific
441 * \endif
442 *
443 *  The <em> NFCIP1 structure </em> includes the available information
444 *  related to the discovered NFCIP1 remote device. This information
445 *  is updated for every device discovery.
446 *  \note None.
447 *
448 */
449 
450 typedef phNfc_sNfcIPInfo_t phHal_sNfcIPInfo_t;
451 
452 
453 /** \ingroup grp_hal_nfci
454 *
455 * \if hal
456 *  \brief Remote Device Specific Information Container
457 * \else
458 *  \brief HAL-Specific
459 * \endif
460 *
461 *  The <em> Remote Device Information Union </em> includes the available Remote Device Information
462 *  structures. Following the device detected, the corresponding data structure is used.
463 *
464 *  \note None.
465 *
466 */
467 
468 typedef phNfc_uRemoteDevInfo_t phHal_uRemoteDevInfo_t;
469 
470 /** \ingroup grp_hal_nfci
471 *
472 * \if hal
473 *  \brief RF Device Type Listing
474 * \else
475 *  \brief HAL-Specific
476 * \endif
477 *
478 *  The <em> RF Device Type List </em> is used to identify the type of
479 *  remote device that is discovered/connected. There seperate
480 *  types to identify a Remote Reader (denoted by _PCD) and
481 *  Remote Tag (denoted by _PICC)
482 *  \note None.
483 *
484 */
485 
486 typedef phNfc_eRFDevType_t phHal_eRFDevType_t;
487 
488 #define    phHal_eUnknown_DevType phNfc_eUnknown_DevType
489 
490     /* Specific PCD Devices */
491 #define    phHal_eISO14443_A_PCD phNfc_eISO14443_A_PCD
492 #define    phHal_eISO14443_B_PCD phNfc_eISO14443_B_PCD
493 #define    phHal_eISO14443_BPrime_PCD phNfc_eISO14443_BPrime_PCD
494 #define    phHal_eFelica_PCD phNfc_eFelica_PCD
495 #define    phHal_eJewel_PCD phNfc_eJewel_PCD
496 #define    phHal_eISO15693_PCD phNfc_eISO15693_PCD
497     /* Generic PCD Type */
498 #define    phHal_ePCD_DevType phNfc_ePCD_DevType
499 
500     /* Generic PICC Type */
501 #define    phHal_ePICC_DevType phNfc_ePICC_DevType
502     /* Specific PICC Devices */
503 #define    phHal_eISO14443_A_PICC phNfc_eISO14443_A_PICC
504 #define    phHal_eISO14443_4A_PICC phNfc_eISO14443_4A_PICC
505 #define    phHal_eISO14443_3A_PICC phNfc_eISO14443_3A_PICC
506 #define    phHal_eMifare_PICC phNfc_eMifare_PICC
507 #define    phHal_eISO14443_B_PICC phNfc_eISO14443_B_PICC
508 #define    phHal_eISO14443_4B_PICC phNfc_eISO14443_4B_PICC
509 #define    phHal_eISO14443_BPrime_PICC phNfc_eISO14443_BPrime_PICC
510 #define    phHal_eFelica_PICC phNfc_eFelica_PICC
511 #define    phHal_eJewel_PICC phNfc_eJewel_PICC
512 #define    phHal_eISO15693_PICC phNfc_eISO15693_PICC
513 
514     /* NFC-IP1 Device Types */
515 #define    phHal_eNfcIP1_Target phNfc_eNfcIP1_Target
516 #define    phHal_eNfcIP1_Initiator phNfc_eNfcIP1_Initiator
517 
518     /* Other Sources */
519 #define    phHal_eInvalid_DevType phNfc_eInvalid_DevType
520 
521 /** \ingroup grp_hal_nfci
522 *
523 * \if hal
524 *  \brief Remote Device Type Listing
525 * \else
526 *  \brief HAL-Specific
527 * \endif
528 *
529 *  The <em> Remote Device Type List </em> is used to identify the type of
530 *  remote device that is discovered/connected
531 *  \note This is same as RF Device Type List.
532 *
533 */
534 typedef phNfc_eRemDevType_t phHal_eRemDevType_t;
535 
536 /** \ingroup grp_hal_common
537  *
538  *
539  * \if hal
540  *  \brief Common Command Attribute
541  * \else
542  *  \brief HAL-Specific
543  * \endif
544  *
545  *  The <em> Hal Command Union </em> includes each available type of Commands.
546  *
547  * \note None.
548  *
549  */
550 
551 typedef phNfc_uCmdList_t phHal_uCmdList_t;
552 
553 
554 /** \ingroup grp_hal_nfci
555  *
556  * \if hal
557  *  \brief Remote Device Information Structure
558  * \else
559  *  \brief HAL-Specific
560  * \endif
561  *
562  *  The <em> Remote Device Information Structure </em> holds information about one single Remote
563  *  Device detected by the polling function .\n
564  *  It lists parameters common to all supported remote devices.
565  *
566  *  \note
567  *
568  *  \if hal
569  *   \sa \ref phHal4Nfc_ConfigureDiscovery and \ref phHal4Nfc_Connect
570  *  \else
571  *   \sa
572  *  \endif
573  *
574  */
575 
576 typedef phNfc_sRemoteDevInformation_t phHal_sRemoteDevInformation_t;
577 
578 
579 
580 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
581 
582 /* This data structure is not used anymore and will be removed in subsequent
583    release */
584 
585 typedef struct phHal_sDevInputParam
586 {
587     uint8_t FelicaPollPayload[5];
588 
589 
590     uint8_t NfcPollPayload[5];
591 
592 
593     uint8_t NFCIDAuto;
594 
595 
596     uint8_t NFCID3i[PHHAL_NFCID_LENGTH];
597 
598 
599 
600     uint8_t DIDiUsed;
601 
602     uint8_t CIDiUsed;
603 
604     uint8_t NfcNADiUsed;
605 
606     /*+ MantisId : 31 - JP - 09-01-2006 */
607         /*uint8_t TClNADiUsed; */
608 
609     /*- MantisId : 31 - JP - 09-01-2006 */
610     uint8_t GeneralByte[48];
611 
612 
613     uint8_t GeneralByteLength;
614 
615 
616     uint8_t ISO14443_4B_AFI;
617 
618 } phHal_sDevInputParam_t;
619 
620 
621 
622 
623 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
624 
625 
626 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
627 /*    TARGET STRUCTURES */
628 
629 
630 /** \ingroup  grp_hal_common
631  *
632  * \if hal
633  *  \brief Transceive Information Data Structure for sending commands/response
634  *         to the remote device
635  * \else
636  *  \brief HAL-Specific
637  * \endif
638  *
639  *  The <em> Transceive Information Data Structure </em> is used to pass the
640  *  Command, Address (only required for MIFARE) and the send and receive data
641  *  data structure (buffer and length) for communication with remote device
642  *
643  *
644  */
645 
646 typedef phNfc_sTransceiveInfo_t phHal_sTransceiveInfo_t;
647 
648 
649 /** \ingroup grp_hal_nfci
650 *
651 * \if hal
652 *  \brief Input information for the Type A tags
653 * \else
654 *  \brief HAL-Specific
655 * \endif
656 *
657 *  The <em> \ref phHal_sIso14443ACfg structure </em> holds the information
658 *  required for the NFC device to be used during ISO14443A target discovery
659 *
660 *  \note None.
661 */
662 typedef struct phHal_sIso14443ACfg
663 {
664     uint8_t     Auto_Activation;       /**< Enable Auto Activation for
665                                     Technology A \n
666                                     If set to 0, the activation procedure will stop
667                                     after Select (SAK has been received).
668                                     The host could evaluate SAK value and then decide:
669                                         - to start communicating with the remote card
670                                           using proprietary commands (see NXP_MIFARE_RAW
671                                           and NXP_MIFARE_CMD)
672                                     or
673                                         - to activate the remote card up to ISO14443-4
674                                           level (RATS and PPS) using
675                                           CONTINUE ACTIVATION command
676                                     If set to 1, activation follows the flow described in
677                                     ETSI HCI specification (restrict detection to
678                                     ISO14443-4 compliant cards).
679                                     */
680 }phHal_sIso14443ACfg_t;
681 
682 
683 /** \ingroup grp_hal_nfci
684 *
685 * \if hal
686 *  \brief Input information for the Type B tags
687 * \else
688 *  \brief HAL-Specific
689 * \endif
690 *
691 *  The <em> \ref phHal_sIso14443BCfg structure </em> holds the information
692 *  required for the NFC device to be used during ISO14443B target discovery
693 *
694 *  \note None.
695 */
696 typedef struct phHal_sIso14443BCfg
697 {
698     uint8_t     AppFamily_ID;       /**< Application Family Identifier for
699                                     Technology B, 0x00 means all application */
700 }phHal_sIso14443BCfg_t;
701 
702 /** \ingroup grp_hal_nfci
703 *
704 * \if hal
705 *  \brief Input information for the Felica tags
706 * \else
707 *  \brief HAL-Specific
708 * \endif
709 *
710 *  The <em> \ref phHal_sFelicaCfg_t structure </em> holds the information
711 *  required for the NFC device to be used during Felica target discovery
712 *
713 *  \note None.
714 */
715 
716 typedef struct phHal_sFelicaCfg
717 {
718     uint8_t     SystemCode[PHHAL_FEL_SYS_CODE_LEN];     /**< System code for Felica tags */
719 
720 }phHal_sFelicaCfg_t;
721 
722 
723 /** \ingroup grp_hal_nfci
724 *
725 * \if hal
726 *  \brief Poll Device Information for conifiguring the discovery wheel
727           Reader and Card Emulation Phases
728 * \else
729 *  \brief HAL-Specific
730 * \endif
731 *
732 *  The <em> \ref phHal_sPollDevInfo_t enum </em> is used to enable/disable
733 *  phases of the discovery wheel related to specific reader types and
734 *  card emulation phase
735 *  \note Enabling specific Reader technology when NFCIP1 speed is set in the
736 *        phNfc_sADD_Cfg_t is implicitly done in HAL. Use this structure to only
737 *        enable/disable Card Reader Functionality
738 */
739 typedef phNfc_sPollDevInfo_t phHal_sPollDevInfo_t;
740 
741 
742 /** \ingroup grp_hal_common
743 *
744 * \if hal
745 *  \brief Identifies Type of Host
746 * \else
747 *  \brief HAL-Specific
748 * \endif
749 *
750 *  This enumeration is used to identify the type of the host providing the
751 *  information or the notification to the Terminal host.
752 *  \note None.
753 */
754 
755 typedef enum phHal_HostType {
756     /*
757      * This type identifies the host controller
758      * in the NFC device
759      */
760     phHal_eHostController       = 0x00U,
761     /*
762      * This type identifies the Host Device
763      * controlling the NFC device.
764      */
765     phHal_eTerminalHost         = 0x01U,
766     /*
767      * This type identifies the uicc host
768      * connnected to the NFC device
769      */
770     phHal_eUICCHost             = 0x02U,
771     /* Host type is unknown */
772     phHal_eUnknownHost          = 0xFFU
773 }phHal_HostType_t;
774 
775 
776 /** \ingroup grp_hal_nfci
777 *
778 * \if hal
779 *  \brief P2P speed for the Initiator
780 * \else
781 *  \brief HAL-Specific
782 * \endif
783 *
784 *  The <em> \ref phHal_eP2PMode enum </em> lists all the NFCIP1 speeds
785 *  to be used for configuring the NFCIP1 discovery
786 *
787 *  \note None.
788 */
789 
790 #define    phHal_eDefaultP2PMode  phNfc_eDefaultP2PMode
791 #define    phHal_ePassive106 phNfc_ePassive106
792 #define    phHal_ePassive212 phNfc_ePassive212
793 #define    phHal_ePassive424 phNfc_ePassive424
794 #define    phHal_eActive  phNfc_eActive
795 #define    phHal_eP2P_ALL    phNfc_eP2P_ALL
796 #define    phHal_eInvalidP2PMode phNfc_eInvalidP2PMode
797 
798 
799 /** \ingroup grp_hal_common
800 *
801 * \if hal
802 *  \brief Identities the type of Notification
803 * \else
804 *  \brief HAL-Specific
805 * \endif
806 *
807 *  This enumeration is used to specify the type of notification notified
808 *  to the upper layer. This classifies the notification into two types
809 *  one for the discovery notifications and the other for all the remaining
810 *  event notifications
811 *  \note None.
812 */
813 
814 
815 typedef phNfc_eNotificationType_t phHal_eNotificationType_t;
816 
817 
818 /** \ingroup grp_hal_common
819 *
820 * \if hal
821 *  \brief Identifies the type of event notification
822 * \else
823 *  \brief HAL-Specific
824 * \endif
825 *
826 *  This enumeration is used to identify the type of the event notified
827 *  to the Terminal host.
828 *  \note None.
829 */
830 
831 typedef enum phHal_Event {
832 
833 
834     /* Transaction Events */
835     NFC_EVT_END_OF_TRANSACTION   = 0x11U ,
836     NFC_EVT_TRANSACTION          = 0x12U ,
837     NFC_EVT_START_OF_TRANSACTION = 0x20U ,
838 
839     /* Field Events */
840     NFC_EVT_FIELD_ON             = 0x31U,
841     NFC_EVT_FIELD_OFF            = 0x34U,
842 
843     /* Card/Target Activation Events */
844     NFC_EVT_ACTIVATED           = 0x33U,
845     NFC_EVT_DEACTIVATED         = 0x32U,
846 
847     NFC_EVT_PROTECTED           = 0x24U ,
848 
849     /* Reader Phases configuration request by UICC */
850     NFC_UICC_RDPHASES_ACTIVATE_REQ = 0x43U,
851     NFC_UICC_RDPHASES_DEACTIVATE_REQ = 0x44U,
852 
853     /* Connectivity and Triggering Events - Future Use */
854     NFC_EVT_CONNECTIVITY         = 0x10U ,
855     NFC_EVT_OPERATION_ENDED      = 0x13U ,
856 
857     /* NXP Specific System Information Events */
858     NFC_INFO_TXLDO_OVERCUR       = 0x71U,
859     NFC_INFO_MEM_VIOLATION       = 0x73U,
860     NFC_INFO_TEMP_OVERHEAT       = 0x74U,
861     NFC_INFO_LLC_ERROR           = 0x75U,
862 
863     /* NXP EVENTS */
864     NFC_EVT_MIFARE_ACCESS          = 0x35,
865     NFC_EVT_APDU_RECEIVED          = 0x36,
866     NFC_EVT_EMV_CARD_REMOVAL       = 0x37
867 
868 }phHal_Event_t;
869 
870 typedef phNfc_sUiccInfo_t phHal_sUiccInfo_t;
871 
872 /** \ingroup grp_hal_common
873 *
874 * \if hal
875 *  \brief Event notification Information
876 * \else
877 *  \brief HAL-Specific
878 * \endif
879 *
880 *  This structure provides the information about the event notified
881 *  to the terminal host.
882 *  \note None.
883 */
884 
885 typedef struct phHal_sEventInfo
886 {
887     /* Type of the host issuing the event */
888     phHal_HostType_t    eventHost;
889     /* Type of the source issuing the event */
890     phHal_eRFDevType_t  eventSource;
891     /* Type of the source issuing the event */
892     phHal_Event_t       eventType;
893     union   uEventInfo
894     {
895         /* Parameter information Information is obtained if the eventType is
896          * NFC_EVT_TRANSACTION for UICC.
897          */
898         phHal_sUiccInfo_t       uicc_info;
899         /* AID Information is obtained if the eventType is
900          * NFC_EVT_TRANSACTION.
901          */
902         phNfc_sData_t           aid;
903         /* Overheat Status Information is obtained if the eventType is
904          * NFC_INFO_TEMP_OVERHEAT.
905          */
906         uint8_t                 overheat_status;
907         /* rd_phases Information is obtained if the eventType is
908          * NFC_UICC_RDPHASES_ACTIVATE_REQ.
909          */
910         uint8_t                 rd_phases;
911         /* Remote Device Information is obtained if the eventType is
912          * NFC_EVT_ACTIVATED.
913          */
914         phHal_sRemoteDevInformation_t *pRemoteDevInfo;
915     }eventInfo;
916 }phHal_sEventInfo_t;
917 
918 
919 /** \ingroup grp_hal_common
920 *
921 * \if hal
922 *  \brief Information for the Host/Uicc Emulation Support
923 * \else
924 *  \brief HAL-Specific
925 * \endif
926 *
927 *  The <em> \ref phHal_sEmuSupport structure </em> holds the type
928 *   of the target emulation supported.
929 *
930 *  \note None.
931 */
932 
933 typedef struct phHal_sEmuSupport
934 {
935     unsigned int TypeA:1;
936     unsigned int TypeB:1;
937     unsigned int TypeBPrime:1;
938     unsigned int TypeFelica:1;
939     unsigned int TypeMifare:1;
940     unsigned int TypeNfcIP1:1;
941     unsigned int RFU:2;
942 
943 }phHal_sEmuSupport_t;
944 
945 
946 /** \ingroup grp_hal_nfci
947 *
948 * \if hal
949 *  \brief P2P Information for the Initiator
950 * \else
951 *  \brief HAL-Specific
952 * \endif
953 *
954 *  The <em> \ref phHal_sNfcIPCfg </em> holds the P2P related information
955 *  use by the NFC Device during P2P Discovery and connection
956 *
957 *  \note None.
958 */
959 
960 typedef phNfc_sNfcIPCfg_t phHal_sNfcIPCfg_t;
961 
962 /** \ingroup grp_hal_common
963 *
964 * \if hal
965 *  \brief Enumeration used to choose which type of parameters
966 *         are to be configured
967 * \else
968 *  \brief HAL-Specific
969 * \endif
970 *
971 *
972 *  \note None.
973 */
974 typedef enum phHal_eConfigType
975 {
976     NFC_INVALID_CONFIG  =   0x00U, /**< Invalid Configuration */
977     NFC_RF_READER_CONFIG, /**< Reader Parmaeters */
978     NFC_P2P_CONFIG,       /**< NFCIP1 Parameters */
979     NFC_SE_PROTECTION_CONFIG, /**< Secure Element
980                                    Protection Cofiguration */
981     NFC_EMULATION_CONFIG  /**< Emulation Parameters */
982 }phHal_eConfigType_t;
983 
984 /** \ingroup grp_hal_common
985 *
986 * \if hal
987 *  \brief Discovery Configuration Mode
988 * \else
989 *  \brief HAL-Specific
990 * \endif
991 *
992 *  This enumeration is used to choose the Discovery Configuration
993 *  Mode :- Configure and Start, Stop or Start with last set
994 *  configuration
995 *  \note None.
996 */
997 
998 typedef phNfc_eDiscoveryConfigMode_t phHal_eDiscoveryConfigMode_t;
999 
1000 
1001 /** \ingroup grp_hal_common
1002 *
1003 * \if hal
1004 *  \brief Target or Tag Release Mode
1005 * \else
1006 *  \brief HAL-Specific
1007 * \endif
1008 *
1009 *  This enumeration defines various modes of releasing an acquired target
1010 *  or tag.
1011 *  \note None.
1012 */
1013 typedef phNfc_eReleaseType_t phHal_eReleaseType_t;
1014 
1015 
1016 /** \ingroup grp_hal_common
1017 *
1018 * \if hal
1019 *  \brief Configuration of specific Emulation Feature
1020 * \else
1021 *  \brief HAL-Specific
1022 * \endif
1023 *
1024 *  This enumeration is used to choose configuration for a specific
1025 *  emulation feature.
1026 *  \note None.
1027 */
1028 
1029 typedef enum phHal_eEmulationType
1030 {
1031     NFC_UNKNOWN_EMULATION       = 0x00U, /**< Invalid Configuration */
1032     NFC_HOST_CE_A_EMULATION     = 0x01U, /**< Configure parameters for Type A
1033                                               card emulation from host */
1034     NFC_HOST_CE_B_EMULATION     = 0x02U, /**< Configure parameters for Type B
1035                                               card emulation from host */
1036     NFC_B_PRIME_EMULATION       = 0x03U, /**< Configure parameters for Type B'
1037                                               card emulation from host */
1038     NFC_FELICA_EMULATION        = 0x04U, /**< Configure parameters for Type F
1039                                               card emulation from host */
1040     NFC_MIFARE_EMULATION        = 0x06U, /**< Configure parameters for MIFARE
1041                                               card emulation - For Future Use */
1042     NFC_SMARTMX_EMULATION       = 0x07U, /**< Configure parameters for SmartMX
1043                                             */
1044     NFC_UICC_EMULATION          = 0x08U  /**< Configure parameters for UICC
1045                                             emulation */
1046 }phHal_eEmulationType_t;
1047 
1048 #if 0
1049 /** \ingroup grp_hal_nfct
1050  *
1051  * \if hal
1052  *  \brief Information for Target Mode Start-Up
1053  * \else
1054  *  \brief HAL-Specific
1055  * \endif
1056  *
1057  *  The <em> Target Information Structure </em> required to start Target mode.
1058  *  It contains all the information for the Target mode.
1059  *
1060  *  \note None.
1061  *
1062  */
1063 
1064 typedef struct phHal_sTargetInfo
1065 {
1066     uint8_t                 enableEmulation;
1067     phHal_sNfcIPCfg_t       targetConfig;
1068 } phHal_sTargetInfo_t;
1069 #endif
1070 
1071 
1072 /** \ingroup grp_hal_common
1073 *
1074 * \if hal
1075 *  \brief Mode of operation for SmartMX
1076 * \else
1077 *  \brief HAL-Specific
1078 * \endif
1079 *
1080 *  This enumeration is used to choose the mode of operation for the SmartMx Module.
1081 *  Default static configuration at initialization time.
1082 *  \note None.
1083 */
1084 
1085 typedef enum phHal_eSmartMX_Mode{
1086     eSmartMx_Wired      = 0x00U, /* SmartMX is in Wired Mode */
1087     eSmartMx_Default,            /* SmartMX is in Default Configuration Mode */
1088     eSmartMx_Virtual,            /* SmartMx in the Virutal Mode */
1089     eSmartMx_Off                 /* SmartMx Feature is Switched off */
1090 } phHal_eSmartMX_Mode_t;
1091 
1092 
1093 /** \ingroup grp_hal_common
1094 *
1095 * \if hal
1096 *  \brief Mode of operation for SWP
1097 * \else
1098 *  \brief HAL-Specific
1099 * \endif
1100 *
1101 *  This enumeration is used to choose the mode of operation for the SWP Link
1102 *  for UICC Module. Default static configuration at initialization time.
1103 *  \note None.
1104 */
1105 
1106 typedef enum phHal_eSWP_Mode{
1107     eSWP_Switch_Off      = 0x00U,   /* SWP Link is Switched off */
1108     eSWP_Switch_Default,            /* SWP is in Default Configuration Mode */
1109     eSWP_Switch_On                  /* SWP Link is Switched on */
1110 } phHal_eSWP_Mode_t;
1111 
1112 
1113 /** \ingroup grp_hal_common
1114 *
1115 * \if hal
1116 *  \brief Information for the Configuring the SmartMX
1117 * \else
1118 *  \brief HAL-Specific
1119 * \endif
1120 *
1121 *  The <em> \ref phHal_sSmartMX_Cfg structure </em> holds the information
1122 *   to configure the SmartMX Module in the NFC Device.
1123 *
1124 *  \note None.
1125 */
1126 
1127 
1128 typedef struct phHal_sSmartMX_Cfg
1129 {
1130     uint8_t                 enableEmulation;
1131     uint8_t                 lowPowerMode;
1132     phHal_eSmartMX_Mode_t   smxMode;
1133 }phHal_sSmartMX_Cfg_t;
1134 
1135 
1136 /** \ingroup grp_hal_common
1137 *
1138 * \if hal
1139 *  \brief Information for the Configuring the UICC
1140 * \else
1141 *  \brief HAL-Specific
1142 * \endif
1143 *
1144 *  The <em> \ref phHal_sUiccEmuCfg structure </em> holds the information
1145 *   to configure the UICC Host.
1146 *
1147 *  \note None.
1148 */
1149 
1150 
1151 typedef struct phHal_sUiccEmuCfg
1152 {
1153     uint8_t             enableUicc;
1154     uint8_t             uiccEmuSupport;
1155     uint8_t             uiccReaderSupport;
1156     uint8_t             lowPowerMode;
1157     /* TODO: This will be updated later */
1158 }phHal_sUiccEmuCfg_t;
1159 
1160 /** \ingroup grp_hal_common
1161 *
1162 * \if hal
1163 *  \brief Information for the Configuring the Type A Host Emulation Feature
1164 * \else
1165 *  \brief HAL-Specific
1166 * \endif
1167 *
1168 *  The <em> \ref phHal_sHostEmuCfg_A structure </em> holds the information
1169 *   to configure the Host Emulation for Type A.
1170 *
1171 *  \note None.
1172 */
1173 
1174 typedef struct phHal_sHostEmuCfg_A
1175 {
1176     uint8_t                 enableEmulation;
1177     phNfc_sIso14443AInfo_t  hostEmuCfgInfo;
1178     uint8_t                 enableCID;
1179 }phHal_sHostEmuCfg_A_t;
1180 
1181 
1182 /** \ingroup grp_hal_common
1183 *
1184 * \if hal
1185 *  \brief Information for the Configuring the Type B Host Emulation Feature
1186 * \else
1187 *  \brief HAL-Specific
1188 * \endif
1189 *
1190 *  The <em> \ref phHal_sHostEmuCfg_B structure </em> holds the information
1191 *   to configure the Host Emulation for Type B.
1192 *
1193 *  \note None.
1194 */
1195 
1196 typedef struct phHal_sHostEmuCfg_B
1197 {
1198     uint8_t                 enableEmulation;
1199     phNfc_sIso14443BInfo_t  hostEmuCfgInfo;
1200 }phHal_sHostEmuCfg_B_t;
1201 
1202 /** \ingroup grp_hal_common
1203 *
1204 * \if hal
1205 *  \brief Information for the Configuring the Felica Host Emulation Feature
1206 * \else
1207 *  \brief HAL-Specific
1208 * \endif
1209 *
1210 *  The <em> \ref phHal_sHostEmuCfg_F structure </em> holds the information
1211 *   to configure the Felica Host Emulation.
1212 *
1213 *  \note None.
1214 */
1215 
1216 
1217 typedef struct phHal_sHostEmuCfg_F
1218 {
1219     uint8_t                 enableEmulation;
1220 }phHal_sHostEmuCfg_F_t;
1221 
1222 
1223 /** \ingroup grp_hal_common
1224 *
1225 * \if hal
1226 *  \brief Information for the Configuring the Emulation
1227 * \else
1228 *  \brief HAL-Specific
1229 * \endif
1230 *
1231 *  The <em> \ref phHal_sEmulationCfg structure </em> holds the information
1232 *   required for the device to act as a Tag or NFCIP1 Target.
1233 *
1234 *  \note phHal_sHostEmuCfg_F_t Type F emulation is not presently supported
1235 *  is reserved for future use.
1236 */
1237 
1238 typedef struct phHal_sEmulationCfg
1239 {
1240     phHal_HostType_t        hostType;
1241     phHal_eEmulationType_t  emuType;
1242     union phHal_uEmuConfig
1243     {
1244         phHal_sSmartMX_Cfg_t    smartMxCfg;
1245         phHal_sHostEmuCfg_A_t   hostEmuCfg_A;
1246         phHal_sHostEmuCfg_B_t   hostEmuCfg_B;
1247         phHal_sHostEmuCfg_F_t   hostEmuCfg_F;
1248         phHal_sUiccEmuCfg_t     uiccEmuCfg;
1249     }config;
1250 }phHal_sEmulationCfg_t;
1251 
1252 /** \ingroup grp_hal_common
1253 *
1254 * \if hal
1255 *  \brief Information for the Configuring the Reader parameters
1256 * \else
1257 *  \brief HAL-Specific
1258 * \endif
1259 *
1260 *  The <em> \ref phHal_sReaderCfg structure </em> holds the information
1261 *   to configure the Reader A or Reader B parameters.
1262 *
1263 *  \note None.
1264 */
1265 
1266 typedef struct phHal_sReaderCfg
1267 {
1268     phHal_eRFDevType_t    readerType;
1269     union phHal_uReaderCfg
1270     {
1271         phHal_sIso14443ACfg_t       Iso14443ACfg;
1272         phHal_sIso14443BCfg_t       Iso14443BCfg;
1273     }config;
1274 }phHal_sReaderCfg_t;
1275 
1276 
1277 /** \ingroup grp_hal_common
1278 *
1279 * \if hal
1280 *  \brief Information for Configuring the Protected Mode for
1281 *  the Secure Elements.
1282 * \else
1283 *  \brief HAL-Specific
1284 * \endif
1285 *
1286 *  The <em> \ref phHal_sSEProtectionCfg structure </em> holds the
1287 *  information to configure the Secure Element Protection configuration.
1288 *
1289 *  \note None.
1290 */
1291 
1292 typedef struct phHal_sSEProtectionCfg
1293 {
1294     uint8_t         mode;
1295 }phHal_sSEProtectionCfg_t;
1296 
1297 
1298 /** \ingroup  grp_hal_common
1299 *
1300 * \if hal
1301 *  \brief Poll configuration structure
1302 * \else
1303 *  \brief HAL-Specific
1304 * \endif
1305 *
1306 *  The <em> Poll configuration structure </em> holds information about the
1307 *  enabling the the type of discovery required by the application. This
1308 *  structure is the input parameter for the discovery call
1309 *
1310 *  \note All members of this structure are input parameters [out].
1311 *
1312 *  \if hal
1313 *   \sa \ref phHal4Nfc_Connect, \ref phHal4Nfc_ConfigParameters,
1314 *            \ref phHal_eP2PMode_t and \ref phHal4Nfc_Disconnect.
1315 *  \endif
1316 *
1317 */
1318 
1319 typedef phNfc_sADD_Cfg_t phHal_sADD_Cfg_t;
1320 
1321 
1322 /** \ingroup grp_hal_common
1323 *
1324 * \if hal
1325 *  \brief Configuration information.
1326 * \else
1327 *  \brief HAL-Specific
1328 * \endif
1329 *
1330 *  The <em> \ref phHal_uConfig structure </em> holds the information
1331 *   required for Configuring the Device.
1332 *
1333 *  \note None.
1334 */
1335 
1336 
1337 typedef union phHal_uConfig
1338 {
1339     phHal_sEmulationCfg_t emuConfig;
1340     phHal_sNfcIPCfg_t     nfcIPConfig;    /**< Gives the information about
1341                                            *  the General Bytes for NFC-IP
1342                                            *  Communication.
1343                                            */
1344     phHal_sReaderCfg_t       readerConfig;
1345     phHal_sSEProtectionCfg_t protectionConfig;
1346 }phHal_uConfig_t;
1347 
1348 
1349 #endif
1350 
1351 /* EOF */
1352