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 */ 74 typedef 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 */ 81 typedef 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 */ 110 extern 111 NFCSTATUS 112 phHciNfc_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 */ 132 extern 133 NFCSTATUS 134 phHciNfc_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 158 extern 159 NFCSTATUS 160 phHciNfc_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 */ 180 extern 181 NFCSTATUS 182 phHciNfc_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 */ 204 extern 205 NFCSTATUS 206 phHciNfc_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 */ 230 extern 231 NFCSTATUS 232 phHciNfc_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 */ 253 extern 254 NFCSTATUS 255 phHciNfc_Jewel_GetRID( 256 phHciNfc_sContext_t *psHciContext, 257 void *pHwRef); 258 259 #endif /* #ifndef PHHCINFC_JEWEL_H */ 260 261 262