Nick Pelly | 5d9927b | 2010-09-23 12:47:58 -0700 | [diff] [blame] | 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 phFriNfc_SmtCrdFmt.h |
| 19 | * \brief NFC-FRI Smart Card Formatting. |
| 20 | * |
| 21 | * Project: NFC-FRI |
| 22 | * |
Martijn Coenen | c0bdf30 | 2010-12-18 12:09:06 +0100 | [diff] [blame] | 23 | * $Date: Mon Dec 13 14:14:11 2010 $ |
| 24 | * $Author: ing02260 $ |
| 25 | * $Revision: 1.5 $ |
| 26 | * $Aliases: $ |
Nick Pelly | 5d9927b | 2010-09-23 12:47:58 -0700 | [diff] [blame] | 27 | * |
| 28 | */ |
| 29 | |
| 30 | #ifndef PHFRINFC_SMTCRDFMT_H |
| 31 | #define PHFRINFC_SMTCRDFMT_H |
| 32 | |
| 33 | /** |
| 34 | * \name Smart Card Formatting |
| 35 | * |
| 36 | * File: \ref phFri_CardFormatFunctions.h |
| 37 | * |
| 38 | */ |
| 39 | /*@{*/ |
Martijn Coenen | c0bdf30 | 2010-12-18 12:09:06 +0100 | [diff] [blame] | 40 | #define PHFRINFC_SMTCRDFMT_FILEREVISION "$Revision: 1.5 $" |
| 41 | #define PHFRINFC_SMTCRDFMT_FILEALIASES "$Aliases: $" |
Nick Pelly | 5d9927b | 2010-09-23 12:47:58 -0700 | [diff] [blame] | 42 | /*@}*/ |
| 43 | |
| 44 | /*! \defgroup grp_fri_smart_card_formatting NFC FRI Smart Card Formatting |
| 45 | * |
| 46 | * Smart Card Formatting functionality enables automatic formatting of any type of smart cards. |
| 47 | * This initializes the smart cards and makes them NDEF Compliant. |
| 48 | * Single API is provided to handle format/recovery management of different types cards. |
| 49 | * Following are different Types of cards supported by this module, currently. |
| 50 | * - Type1 ( Topaz) |
| 51 | * - Type2 ( Mifare UL) |
| 52 | * - Type4 ( Desfire) |
| 53 | * - Mifare Std. |
| 54 | */ |
| 55 | /*@{*/ |
| 56 | /** |
| 57 | * \ingroup grp_fri_smart_card_formatting |
| 58 | * \brief Macro definitions. |
| 59 | * \note |
| 60 | On requirement basis, new constants will be defined |
| 61 | during the implementation phase. |
| 62 | */ |
| 63 | |
Martijn Coenen | 80ee29b | 2010-12-16 23:24:55 +0100 | [diff] [blame] | 64 | #define DESFIRE_FMT_EV1 |
| 65 | |
| 66 | |
Nick Pelly | 5d9927b | 2010-09-23 12:47:58 -0700 | [diff] [blame] | 67 | #define PH_FRI_NFC_SMTCRDFMT_NFCSTATUS_FORMAT_ERROR 9 |
| 68 | #define PH_FRINFC_SMTCRDFMT_MSTD_DEFAULT_KEYA_OR_KEYB {0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF} |
| 69 | #define PH_FRINFC_SMTCRDFMT_MSTD_MADSECT_KEYA {0xA0, 0xA1,0xA2,0xA3,0xA4,0xA5} |
| 70 | #define PH_FRINFC_SMTCRDFMT_NFCFORUMSECT_KEYA {0xD3, 0xF7,0xD3,0xF7,0xD3,0xF7} |
| 71 | #define PH_FRINFC_SMTCRDFMT_MSTD_MADSECT_ACCESSBITS {0x78,0x77,0x88} |
| 72 | #define PH_FRINFC_SMTCRDFMT_MSTD_NFCFORUM_ACCESSBITS {0x7F,0x07,0x88} |
| 73 | #define PH_FRINFC_SMTCRDFMT_MAX_TLV_TYPE_SUPPORTED 1 |
| 74 | |
| 75 | #define PH_FRINFC_SMTCRDFMT_MAX_SEND_RECV_BUF_SIZE 252 |
| 76 | |
| 77 | #define PH_FRINFC_SMTCRDFMT_STATE_RESET_INIT 1 |
| 78 | |
| 79 | enum |
| 80 | { |
| 81 | PH_FRINFC_SMTCRDFMT_MIFARE_UL_CARD, |
| 82 | PH_FRINFC_SMTCRDFMT_ISO14443_4A_CARD, |
| 83 | PH_FRINFC_SMTCRDFMT_MFSTD_1K_CRD, |
| 84 | PH_FRINFC_SMTCRDFMT_MFSTD_4K_CRD, |
| 85 | PH_FRINFC_SMTCRDFMT_TOPAZ_CARD |
| 86 | }; |
| 87 | |
| 88 | /** |
| 89 | * \name Completion Routine Indices |
| 90 | * |
| 91 | * These are the indices of the completion routine pointers within the component context. |
| 92 | * Completion routines belong to upper components. |
| 93 | * |
| 94 | */ |
| 95 | /*@{*/ |
| 96 | /** \ingroup grp_fri_nfc_ndef_map |
| 97 | * Completion Routine Index for \ref phFriNfc_SmtCrd_Format */ |
| 98 | #define PH_FRINFC_SMTCRDFMT_CR_FORMAT 0 /* */ |
| 99 | /** \ingroup grp_fri_nfc_ndef_map Completion |
| 100 | * Routine Index for Unknown States/Operations */ |
| 101 | #define PH_FRINFC_SMTCRDFMT_CR_INVALID_OPE 1 /* */ |
| 102 | /** \ingroup grp_fri_nfc_ndef_map |
| 103 | * Number of completion routines that have to be initialised */ |
| 104 | #define PH_FRINFC_SMTCRDFMT_CR 2 |
| 105 | /*@}*/ |
| 106 | |
| 107 | |
| 108 | /*@}*/ |
| 109 | |
| 110 | /* |
| 111 | * \ingroup grp_fri_smart_card_formatting |
| 112 | * |
| 113 | * \brief NFC Smart Card Formatting Component Type1 Additional Information Structure |
| 114 | * |
| 115 | * This structure is used to specify additional information required to format the Type1 card. |
| 116 | * \note |
| 117 | * On requirement basis,structure will be filled/modified with other parameters |
| 118 | * during the implementation phase. |
| 119 | * |
| 120 | */ |
| 121 | typedef struct phFriNfc_Type1_AddInfo |
| 122 | { |
| 123 | /* Stores the CC byte values. For Ex: 0xE1, 0x10 , 0x0C, 0x00*/ |
| 124 | uint8_t CCBytes[5]; |
| 125 | uint8_t UID[4]; |
| 126 | uint8_t CCByteIndex; |
| 127 | |
| 128 | } phFriNfc_Type1_AddInfo_t; |
| 129 | |
| 130 | /* |
| 131 | * |
| 132 | * \ingroup grp_fri_smart_card_formatting |
| 133 | * \brief NFC Smart Card Formatting Component Type2 Additional Information Structure |
| 134 | * |
| 135 | * This structure is used to specify additional information required to format the Type2 card. |
| 136 | * \note |
| 137 | * On requirement basis,structure will be filled/modified with other parametes |
| 138 | * during the implementation phase. |
| 139 | * |
| 140 | */ |
| 141 | typedef struct phFriNfc_Type2_AddInfo |
| 142 | { |
| 143 | /* Stores the CC byte values. For Ex: 0xE1, 0x10 , 0x10, 0x00*/ |
| 144 | uint8_t OTPBytes[4]; |
Martijn Coenen | c0bdf30 | 2010-12-18 12:09:06 +0100 | [diff] [blame] | 145 | #ifdef FRINFC_READONLY_NDEF |
Martijn Coenen | a624375 | 2011-01-13 10:49:03 +0100 | [diff] [blame] | 146 | uint8_t LockBytes[4]; |
| 147 | |
| 148 | #ifdef PH_NDEF_MIFARE_ULC |
| 149 | uint8_t ReadData[16]; |
| 150 | uint8_t ReadDataIndex; |
| 151 | uint8_t DynLockBytes[4]; |
| 152 | uint8_t BytesLockedPerLockBit; |
| 153 | uint8_t LockBytesPerPage; |
| 154 | uint8_t LockByteNumber; |
| 155 | uint8_t LockBlockNumber; |
| 156 | uint8_t NoOfLockBits; |
| 157 | uint8_t DefaultLockBytesFlag; |
| 158 | uint8_t LockBitsWritten; |
| 159 | #endif /* #ifdef PH_NDEF_MIFARE_ULC */ |
| 160 | |
Martijn Coenen | c0bdf30 | 2010-12-18 12:09:06 +0100 | [diff] [blame] | 161 | #endif /* #ifdef FRINFC_READONLY_NDEF */ |
Nick Pelly | 5d9927b | 2010-09-23 12:47:58 -0700 | [diff] [blame] | 162 | /* Current Block Address*/ |
| 163 | uint8_t CurrentBlock; |
| 164 | } phFriNfc_Type2_AddInfo_t; |
| 165 | |
| 166 | /* |
| 167 | * \ingroup grp_fri_smart_card_formatting |
| 168 | * \brief NFC Smart Card Formatting Component Type4 Additional Information Structure |
| 169 | * |
| 170 | * This structure is used to specify additional information required to format the type4 card. |
| 171 | * \note |
| 172 | * On requirement basis,structure will be filled/modified with other parametes |
| 173 | * during the implementation phase. |
| 174 | * |
| 175 | */ |
Martijn Coenen | c0bdf30 | 2010-12-18 12:09:06 +0100 | [diff] [blame] | 176 | |
Nick Pelly | 5d9927b | 2010-09-23 12:47:58 -0700 | [diff] [blame] | 177 | typedef struct phFriNfc_Type4_AddInfo |
| 178 | { |
| 179 | /* Specifies Keys related to PICC/NFCForum Master Key settings*/ |
| 180 | /* Stores the PICC Master Key/NFC Forum MasterKey*/ |
| 181 | uint8_t PICCMasterKey[16]; |
| 182 | uint8_t NFCForumMasterkey[16]; |
| 183 | |
| 184 | /* To create the files follwoiing attributes are required*/ |
| 185 | uint8_t PrevState; |
| 186 | uint16_t FileAccessRights; |
| 187 | uint32_t CardSize; |
| 188 | uint16_t MajorVersion; |
| 189 | uint16_t MinorVersion; |
| 190 | |
Nick Pelly | 5d9927b | 2010-09-23 12:47:58 -0700 | [diff] [blame] | 191 | } phFriNfc_Type4_AddInfo_t; |
| 192 | |
| 193 | /* |
| 194 | * \ingroup grp_fri_smart_card_formatting |
| 195 | * \brief NFC Smart Card Formatting Component Mifare Std Additional Information Structure |
| 196 | * |
| 197 | * This structure is used to specify additional information required to format the Mifare Std card. |
| 198 | * \note |
| 199 | * On requirement basis,structure will be filled/modified with other parametes |
| 200 | * during the implementation phase. |
| 201 | * |
| 202 | */ |
| 203 | typedef struct phFriNfc_MfStd_AddInfo |
| 204 | { |
| 205 | /** Device input parameter for poll and connect after failed authentication */ |
| 206 | phHal_sDevInputParam_t *DevInputParam; |
| 207 | |
| 208 | /* Stores the Default KeyA and KeyB values*/ |
| 209 | uint8_t Default_KeyA_OR_B[6]; |
| 210 | |
| 211 | /* Key A of MAD sector*/ |
| 212 | uint8_t MADSect_KeyA[6]; |
| 213 | |
| 214 | /* Key A of NFC Forum Sector sector*/ |
| 215 | uint8_t NFCForumSect_KeyA[6]; |
| 216 | |
| 217 | /* Access Bits of MAD sector*/ |
| 218 | uint8_t MADSect_AccessBits[3]; |
| 219 | |
| 220 | /* Access Bits of NFC Forum sector*/ |
| 221 | uint8_t NFCForumSect_AccessBits[3]; |
| 222 | |
| 223 | /* Secret key B to given by the application */ |
| 224 | uint8_t ScrtKeyB[6]; |
| 225 | |
| 226 | /* Specifies the status of the different authentication handled in |
| 227 | formatting procedure*/ |
| 228 | uint8_t AuthState; |
| 229 | |
| 230 | /* Stores the current block */ |
| 231 | uint16_t CurrentBlock; |
| 232 | |
| 233 | /* Stores the current block */ |
| 234 | uint8_t NoOfDevices; |
| 235 | |
| 236 | /* Store the compliant sectors */ |
| 237 | uint8_t SectCompl[40]; |
| 238 | |
| 239 | /* Flag to know that MAD sector */ |
| 240 | uint8_t WrMADBlkFlag; |
| 241 | |
| 242 | /* Fill the MAD sector blocks */ |
| 243 | uint8_t MADSectBlk[80]; |
| 244 | |
| 245 | /* Fill the MAD sector blocks */ |
| 246 | uint8_t UpdMADBlk; |
| 247 | } phFriNfc_MfStd_AddInfo_t; |
| 248 | |
Martijn Coenen | 4f3ef02 | 2011-01-20 01:27:17 +0100 | [diff] [blame] | 249 | |
| 250 | /* |
| 251 | * \ingroup grp_fri_smart_card_formatting |
| 252 | * \brief NFC Smart Card Formatting Component ISO-15693 Additional Information Structure |
| 253 | * |
| 254 | * This structure is used to specify additional information required to format the ISO-15693 card. |
| 255 | * \note |
| 256 | * On requirement basis,structure will be filled/modified with other parametes |
| 257 | * during the implementation phase. |
| 258 | * |
| 259 | */ |
| 260 | typedef struct phFriNfc_ISO15693_AddInfo |
| 261 | { |
| 262 | /* Stores the current block executed */ |
| 263 | uint16_t current_block; |
| 264 | /* Sequence executed */ |
| 265 | uint8_t format_seq; |
| 266 | /* Maximum data size in the card */ |
| 267 | uint16_t max_data_size; |
| 268 | }phFriNfc_ISO15693_AddInfo_t; |
| 269 | |
Nick Pelly | 5d9927b | 2010-09-23 12:47:58 -0700 | [diff] [blame] | 270 | /** |
| 271 | * \ingroup grp_fri_smart_card_formatting |
| 272 | * |
| 273 | * \brief NFC Smart Card Formatting Component Additional Information Structure |
| 274 | * |
| 275 | * This structure is composed to have additional information of different type of tags |
| 276 | * Ex: Type1/Type2/Type4/Mifare 1k/4k |
| 277 | * |
| 278 | * \note |
| 279 | * On requirement basis, structure will be filled/modified with other parameters |
| 280 | * during the implementation phase. |
| 281 | */ |
| 282 | typedef struct phFriNfc_sNdefSmtCrdFmt_AddInfo |
| 283 | { |
| 284 | phFriNfc_Type1_AddInfo_t Type1Info; |
| 285 | phFriNfc_Type2_AddInfo_t Type2Info; |
| 286 | phFriNfc_Type4_AddInfo_t Type4Info; |
| 287 | phFriNfc_MfStd_AddInfo_t MfStdInfo; |
Martijn Coenen | 4f3ef02 | 2011-01-20 01:27:17 +0100 | [diff] [blame] | 288 | phFriNfc_ISO15693_AddInfo_t s_iso15693_info; |
Nick Pelly | 5d9927b | 2010-09-23 12:47:58 -0700 | [diff] [blame] | 289 | |
| 290 | }phFriNfc_sNdefSmtCrdFmt_AddInfo_t; |
| 291 | |
| 292 | /** |
| 293 | * \ingroup grp_fri_smart_card_formatting |
| 294 | * \brief NFC Smart Card Formatting Component Context Structure |
| 295 | * |
| 296 | * This structure is used to store the current context information of the instance. |
| 297 | * |
| 298 | * \note On requirement basis,structure will be filled/modified with other parameters |
| 299 | * during the implementation phase |
| 300 | * |
| 301 | */ |
| 302 | typedef struct phFriNfc_sNdefSmtCrdFmt |
| 303 | { |
| 304 | /** Pointer to the lower (HAL) instance.*/ |
| 305 | void *LowerDevice; |
| 306 | |
| 307 | /** Holds the device additional informations*/ |
| 308 | phHal_sDepAdditionalInfo_t psDepAdditionalInfo; |
| 309 | |
| 310 | /** Pointer to the Remote Device Information */ |
| 311 | phHal_sRemoteDevInformation_t *psRemoteDevInfo; |
| 312 | |
| 313 | /** Stores the type of the smart card. */ |
| 314 | uint8_t CardType; |
| 315 | |
| 316 | /** Stores operating mode type of the MifareStd. */ |
| 317 | /* phHal_eOpModes_t OpModeType[2]; */ |
| 318 | |
| 319 | /**< \internal The state of the operation. */ |
| 320 | uint8_t State; |
| 321 | |
| 322 | /**< \internal Stores the card state Ex: Blank/Formatted etc. */ |
| 323 | uint8_t CardState; |
| 324 | |
| 325 | /**< \internal Completion Routine Context. */ |
| 326 | phFriNfc_CplRt_t CompletionRoutine[PH_FRINFC_SMTCRDFMT_CR]; |
| 327 | |
| 328 | /**<\internal Holds the completion routine informations of the Smart Card Formatting Layer*/ |
| 329 | phFriNfc_CplRt_t SmtCrdFmtCompletionInfo; |
| 330 | |
| 331 | /**<\internal Holds the Command Type(read/write)*/ |
| 332 | phHal_uCmdList_t Cmd; |
| 333 | |
| 334 | /**< \internal Holds the length of the received data. */ |
| 335 | uint16_t *SendRecvLength; |
| 336 | |
| 337 | /**<\internal Holds the ack of some intial commands*/ |
| 338 | uint8_t *SendRecvBuf; |
| 339 | |
| 340 | /**< \internal Holds the length of the data to be sent. */ |
| 341 | uint16_t SendLength; |
| 342 | |
| 343 | /**< \internal Stores the output/result of the format procedure. Ex: Formatted Successfully, |
| 344 | Format Error etc */ |
| 345 | NFCSTATUS FmtProcStatus; |
| 346 | |
| 347 | /** Stores Additional Information needed to format the different types of tags*/ |
| 348 | phFriNfc_sNdefSmtCrdFmt_AddInfo_t AddInfo; |
| 349 | |
| 350 | /* Stores NDEF message TLV*/ |
| 351 | /* This stores the different TLV messages for the different card types*/ |
| 352 | uint8_t TLVMsg[PH_FRINFC_SMTCRDFMT_MAX_TLV_TYPE_SUPPORTED][8]; |
| 353 | |
| 354 | |
| 355 | } phFriNfc_sNdefSmtCrdFmt_t; |
| 356 | |
| 357 | /** |
| 358 | * \ingroup grp_fri_smart_card_formatting |
| 359 | * \brief Smart Card Formatting \b Reset function |
| 360 | * |
| 361 | * \copydoc page_reg Resets the component instance to the initial state and initializes the |
| 362 | * internal variables. |
| 363 | * |
| 364 | * \param[in] NdefSmtCrdFmt is a Pointer to a valid and initialized or uninitialised instance |
| 365 | * of \ref phFriNfc_sNdefSmtCrdFmt_t . |
| 366 | * \param[in] LowerDevice Overlapped HAL reference, pointing at a valid instance of this |
| 367 | * underlying component. |
| 368 | * \param[in] psRemoteDevInfo Points to the Remote Device Information structure encapsulating |
| 369 | * the information about the device (Smart card, NFC device) to access. |
| 370 | * \param[in] psDevInputParam The Device input parameter, as used for the HAL POLL function. |
| 371 | * This parameter is needed by the component in special cases, when an internal call |
| 372 | * to POLL is required again, such as for FeliCa. The storage of the structure behind |
| 373 | * the pointer must be retained by the calling software. The component itself only |
| 374 | * keeps the reference. No change is applied to the structure's content. |
| 375 | * \param[in] ReceiveBuffer Pointer to a buffer that the component uses internally use to |
| 376 | * store the data received from the lower component. |
| 377 | * The size shall be at least \ref PH_FRINFC_SMTCRDFMT_MAX_SEND_RECV_BUF_SIZE . |
| 378 | * \param[in] ReceiveLength The size of ReceiveBuffer. This specifies the actual length |
| 379 | * of the data received from the lower component. |
| 380 | * The size shall be at least \ref PH_FRINFC_SMTCRDFMT_MAX_SEND_RECV_BUF_SIZE . |
| 381 | * |
| 382 | * \retval NFCSTATUS_SUCCESS Operation successful. |
| 383 | * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function is invalid. |
| 384 | * |
| 385 | * \note This function has to be called at the beginning, after creating an instance of |
| 386 | * \ref phFriNfc_sNdefSmtCrdFmt_t . Use this function to reset the instance and/or to switch |
| 387 | * to a different underlying card types. |
| 388 | */ |
| 389 | NFCSTATUS phFriNfc_NdefSmtCrd_Reset(phFriNfc_sNdefSmtCrdFmt_t *NdefSmtCrdFmt, |
| 390 | void *LowerDevice, |
| 391 | phHal_sRemoteDevInformation_t *psRemoteDevInfo, |
| 392 | phHal_sDevInputParam_t *psDevInputParam, |
| 393 | uint8_t *SendRecvBuffer, |
| 394 | uint16_t *SendRecvBuffLen); |
| 395 | |
| 396 | |
| 397 | |
| 398 | /*! |
| 399 | * \ingroup grp_fri_smart_card_formatting |
| 400 | * |
| 401 | * \brief Setting of the Completion Routine. |
| 402 | * |
| 403 | * \copydoc page_ovr This function allows the caller to set a Completion Routine (notifier). |
| 404 | * |
| 405 | * \param[in] NdefSmtCrdFmt Pointer to a valid instance of the \ref phFriNfc_sNdefSmtCrdFmt_t structure describing |
| 406 | * the component context. |
| 407 | * |
| 408 | * \param CompletionRoutine Pointer to a valid completion routine being called when the non-blocking |
| 409 | * operation has finished. |
| 410 | * |
| 411 | * \param CompletionRoutineParam Pointer to a location with user-defined information that is submitted |
| 412 | * to the Completion Routine once it is called. |
| 413 | |
| 414 | * \retval NFCSTATUS_SUCCESS Operation successful. |
| 415 | * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function is invalid. |
| 416 | * |
| 417 | */ |
| 418 | NFCSTATUS phFriNfc_NdefSmtCrd_SetCR(phFriNfc_sNdefSmtCrdFmt_t *NdefSmtCrdFmt, |
| 419 | uint8_t FunctionID, |
| 420 | pphFriNfc_Cr_t CompletionRoutine, |
| 421 | void *CompletionRoutineContext); |
| 422 | |
| 423 | |
| 424 | /*! |
| 425 | * \ingroup grp_fri_smart_card_formatting |
| 426 | * |
| 427 | * \brief Initiates the card formatting procedure for Remote Smart Card Type. |
| 428 | * |
| 429 | * \copydoc page_ovr The function initiates and formats the Smart Card.After this formation, remote |
| 430 | * card would be properly initialized and Ndef Compliant. |
| 431 | * Depending upon the different card type, this function handles formatting procedure. |
| 432 | * This function also handles the different recovery procedures for different types of the cards. For both |
| 433 | * Format and Recovery Management same API is used. |
| 434 | * |
| 435 | * \param[in] phFriNfc_sNdefSmtCrdFmt_t Pointer to a valid instance of the \ref phFriNfc_sNdefSmartCardFmt_t |
| 436 | * structure describing the component context. |
| 437 | * \retval NFCSTATUS_PENDING The action has been successfully triggered. |
| 438 | * \retval Other values An error has occurred. |
| 439 | * |
| 440 | */ |
| 441 | NFCSTATUS phFriNfc_NdefSmtCrd_Format(phFriNfc_sNdefSmtCrdFmt_t *NdefSmtCrdFmt, const uint8_t *ScrtKeyB); |
| 442 | |
| 443 | |
Martijn Coenen | 80ee29b | 2010-12-16 23:24:55 +0100 | [diff] [blame] | 444 | #ifdef FRINFC_READONLY_NDEF |
| 445 | /*! |
| 446 | * \ingroup grp_fri_smart_card_formatting |
| 447 | * |
| 448 | * \brief Initiates the conversion of the already NDEF formatted tag to READ ONLY. |
| 449 | * |
| 450 | * \copydoc page_ovr The function initiates the conversion of the already NDEF formatted |
| 451 | * tag to READ ONLY.After this formation, remote card would be properly Ndef Compliant and READ ONLY. |
| 452 | * Depending upon the different card type, this function handles formatting procedure. |
| 453 | * This function supports only for the DESFIRE, MIFARE UL and TOPAZ tags. |
| 454 | * |
| 455 | * \param[in] phFriNfc_sNdefSmtCrdFmt_t Pointer to a valid instance of the \ref phFriNfc_sNdefSmartCardFmt_t |
| 456 | * structure describing the component context. |
| 457 | * \retval NFCSTATUS_PENDING The action has been successfully triggered. |
| 458 | * \retval Other values An error has occurred. |
| 459 | * |
| 460 | */ |
| 461 | NFCSTATUS |
| 462 | phFriNfc_NdefSmtCrd_ConvertToReadOnly ( |
| 463 | phFriNfc_sNdefSmtCrdFmt_t *NdefSmtCrdFmt); |
| 464 | |
| 465 | #endif /* #ifdef FRINFC_READONLY_NDEF */ |
| 466 | |
| 467 | |
Nick Pelly | 5d9927b | 2010-09-23 12:47:58 -0700 | [diff] [blame] | 468 | /** |
| 469 | *\ingroup grp_fri_smart_card_formatting |
| 470 | * |
| 471 | * \brief Smart card Formatting \b Completion \b Routine or \b Process function |
| 472 | * |
| 473 | * \copydoc page_ovr Completion Routine: This function is called by the lower layer (OVR HAL) |
| 474 | * when an I/O operation has finished. The internal state machine decides |
| 475 | * whether to call into the lower device again or to complete the process |
| 476 | * by calling into the upper layer's completion routine, stored within this |
| 477 | * component's context (\ref phFriNfc_sNdefSmtCrdFmt_t). |
| 478 | * |
| 479 | * The function call scheme is according to \ref grp_interact. No State reset is performed during |
| 480 | * operation. |
| 481 | * |
| 482 | * \param[in] Context The context of the current (not the lower/upper) instance, as set by the lower, |
| 483 | * calling layer, upon its completion. |
| 484 | * \param[in] Status The completion status of the lower layer (to be handled by the implementation of |
| 485 | * the state machine of this function like a regular return value of an internally |
| 486 | * called function). |
| 487 | * |
| 488 | * \note For general information about the completion routine interface please see \ref pphFriNfc_Cr_t . * The Different Status Values are as follows |
| 489 | * |
| 490 | */ |
| 491 | void phFriNfc_NdefSmtCrd_Process(void *Context, |
| 492 | NFCSTATUS Status); |
| 493 | |
| 494 | void phFriNfc_SmtCrdFmt_HCrHandler(phFriNfc_sNdefSmtCrdFmt_t *NdefSmtCrdFmt, |
| 495 | NFCSTATUS Status); |
| 496 | |
| 497 | /*@}*/ |
| 498 | |
| 499 | #endif /* PHFRINFC_SMTCRDFMT_H */ |
| 500 | |
| 501 | |