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_Jewel.h * 22* \brief HCI Jewel Management Routines. * 23* * 24* * 25* Project: NFC-FRI-1.1 * 26* * 27* $Date: Mon Mar 29 17:34:50 2010 $ * 28* $Author: ing04880 $ * 29* $Revision: 1.3 $ * 30* $Aliases: 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#ifndef PHHCINFC_JEWEL_H 36#define PHHCINFC_JEWEL_H 37 38/*@}*/ 39 40 41/** 42* \name HCI 43* 44* File: \ref phHciNfc_Jewel.h 45* 46*/ 47/*@{*/ 48#define PHHCINFC_JEWEL_FILEREVISION "$Revision: 1.3 $" /**< \ingroup grp_file_attributes */ 49#define PHHCINFC_JEWEL_FILEALIASES "$Aliases: 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 */ 50/*@}*/ 51 52/* 53***************************** Header File Inclusion **************************** 54*/ 55 56#include <phHciNfc_Generic.h> 57 58/* 59****************************** Macro Definitions ******************************* 60*/ 61 62/* Commands exposed to the upper layer */ 63 64/* Enable the Jewel */ 65#define HCI_JEWEL_ENABLE 0x01U 66#define HCI_JEWEL_INFO_SEQ 0x02U 67 68/* Jewel read write commands */ 69#define NXP_JEWEL_RAW 0x23U 70 71/* 72******************** Enumeration and Structure Definition ********************** 73*/ 74typedef enum phHciNfc_Jewel_Seq{ 75 JEWEL_READID_SEQUENCE, 76 JEWEL_END_SEQUENCE, 77 JEWEL_INVALID_SEQ 78} phHciNfc_Jewel_Seq_t; 79 80/* Information structure for the Jewel Gate */ 81typedef struct phHciNfc_Jewel_Info{ 82 /* Current running Sequence of the Jewel Management */ 83 phHciNfc_Jewel_Seq_t current_seq; 84 /* Next running Sequence of the Jewel Management */ 85 phHciNfc_Jewel_Seq_t next_seq; 86 /* Pointer to the Jewel pipe information */ 87 phHciNfc_Pipe_Info_t *p_pipe_info; 88 uint8_t pipe_id; 89 /* Flag to say about the multiple targets */ 90 uint8_t multiple_tgts_found; 91 /* Jewel information */ 92 phHal_sRemoteDevInformation_t s_jewel_info; 93 /* Enable or disable reader gate */ 94 uint8_t enable_jewel_gate; 95 /* UICC re-activation status */ 96 uint8_t uicc_activation; 97} phHciNfc_Jewel_Info_t; 98 99/* 100*********************** Function Prototype Declaration ************************* 101*/ 102 103/*! 104* \brief Allocates the resources of Jewel management gate. 105* 106* This function Allocates the resources of the Jewel management 107* gate Information Structure. 108* 109*/ 110extern 111NFCSTATUS 112phHciNfc_Jewel_Init_Resources( 113 phHciNfc_sContext_t *psHciContext 114 ); 115 116/** 117* \ingroup grp_hci_nfc 118* 119* The phHciNfc_Jewel_Get_PipeID function gives the pipe id of the Jewel 120* gate 121* 122* \param[in] psHciContext psHciContext is the pointer to HCI Layer 123* context Structure. 124* \param[in] pHwRef pHwRef is the Information of 125* the Device Interface Link 126* 127* \retval NFCSTATUS_SUCCESS Function execution is successful. 128* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 129* could not be interpreted properly. 130* 131*/ 132extern 133NFCSTATUS 134phHciNfc_Jewel_Get_PipeID( 135 phHciNfc_sContext_t *psHciContext, 136 uint8_t *ppipe_id 137 ); 138 139 140/** 141* \ingroup grp_hci_nfc 142* 143* The phHciNfc_Jewel_Update_PipeInfo function updates the pipe_id of the Jewel 144* gate management Structure. 145* 146* \param[in] psHciContext psHciContext is the pointer to HCI Layer 147* context Structure. 148* \param[in] pipeID pipeID of the Jewel gate 149* \param[in] pPipeInfo Update the pipe Information of the reader 150* A gate 151* 152* \retval NFCSTATUS_SUCCESS Function execution is successful. 153* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 154* could not be interpreted properly. 155* 156*/ 157 158extern 159NFCSTATUS 160phHciNfc_Jewel_Update_PipeInfo( 161 phHciNfc_sContext_t *psHciContext, 162 uint8_t pipeID, 163 phHciNfc_Pipe_Info_t *pPipeInfo 164 ); 165 166/** 167* \ingroup grp_hci_nfc 168* 169* The phHciNfc_Jewel_Update_Info function updated the jewel gate info. 170* 171* \param[in] psHciContext psHciContext is the pointer to HCI Layer 172* context Structure. 173* \param[in] infotype To enable the jewel gate 174* \param[in] jewel_info Jewel gate info 175* 176* \retval NFCSTATUS_SUCCESS Function execution is successful. 177* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 178* could not be interpreted properly. 179*/ 180extern 181NFCSTATUS 182phHciNfc_Jewel_Update_Info( 183 phHciNfc_sContext_t *psHciContext, 184 uint8_t infotype, 185 void *jewel_info 186 ); 187 188/** 189* \ingroup grp_hci_nfc 190* 191* The phHciNfc_Jewel_Info_Sequence function executes the sequence of operations, to 192* get the ID. 193* 194* \param[in] psHciContext psHciContext is the pointer to HCI Layer 195* context Structure. 196* \param[in] pHwRef pHwRef is the Information of 197* the Device Interface Link 198* 199* \retval NFCSTATUS_SUCCESS Function execution is successful. 200* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 201* could not be interpreted properly. 202* 203*/ 204extern 205NFCSTATUS 206phHciNfc_Jewel_Info_Sequence ( 207 void *psHciHandle, 208 void *pHwRef 209 ); 210 211/** 212* \ingroup grp_hci_nfc 213* 214* The phHciNfc_Send_Jewel_Command function executes the command sent by the 215* upper layer, depending on the commands defined. 216* 217* \param[in] psContext psContext is the pointer to HCI Layer 218* context Structure. 219* \param[in] pHwRef pHwRef is the Information of 220* the Device Interface Link 221* \param[in] pipe_id pipeID of the jewel gate 222* \param[in] cmd command that needs to be sent to the device 223* \param[in] length information length sent by the caller 224* \param[in] params information related to the command 225* 226* \retval NFCSTATUS_SUCCESS Function execution is successful. 227* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 228* could not be interpreted properly. 229*/ 230extern 231NFCSTATUS 232phHciNfc_Send_Jewel_Command( 233 phHciNfc_sContext_t *psContext, 234 void *pHwRef, 235 uint8_t pipe_id, 236 uint8_t cmd 237 ); 238 239/** 240* \ingroup grp_hci_nfc 241* 242* The phHciNfc_Jewel_GetRID function executes the command to read the ID 243* 244* \param[in] psHciContext psHciContext is the pointer to HCI Layer 245* context Structure. 246* \param[in] pHwRef pHwRef is the Information of 247* the Device Interface Link 248* 249* \retval NFCSTATUS_SUCCESS Function execution is successful. 250* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 251* could not be interpreted properly. 252*/ 253extern 254NFCSTATUS 255phHciNfc_Jewel_GetRID( 256 phHciNfc_sContext_t *psHciContext, 257 void *pHwRef); 258 259#endif /* #ifndef PHHCINFC_JEWEL_H */ 260 261 262