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 */ 78 typedef 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 */ 90 typedef 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 */ 119 extern 120 NFCSTATUS 121 phHciNfc_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 */ 141 extern 142 NFCSTATUS 143 phHciNfc_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 */ 164 extern 165 NFCSTATUS 166 phHciNfc_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 */ 187 extern 188 NFCSTATUS 189 phHciNfc_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 */ 210 extern 211 NFCSTATUS 212 phHciNfc_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 235 extern 236 NFCSTATUS 237 phHciNfc_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 */ 263 extern 264 NFCSTATUS 265 phHciNfc_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 */ 288 extern 289 NFCSTATUS 290 phHciNfc_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 */ 312 extern 313 NFCSTATUS 314 phHciNfc_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 */ 341 extern 342 NFCSTATUS 343 phHciNfc_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 */ 364 extern 365 NFCSTATUS 366 phHciNfc_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