2 * Copyright (C) 2010 NXP Semiconductors
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 * \file phFriNfc_TopazMap.h
19 * \brief NFC Ndef Mapping For Mifare UL Card.
23 * $Date: Mon Dec 13 14:14:14 2010 $
30 #ifndef PHFRINFC_TOPAZMAP_H
31 #define PHFRINFC_TOPAZMAP_H
35 #include <phHal4Nfc.h>
39 #include <phNfcStatus.h>
40 #include <phNfcTypes.h>
41 #include <phFriNfc_NdefMap.h>
44 #define PH_FRINFC_NDEFMAP_TOPAZMAP_FILEREVISION "$Revision: 1.26 $"
45 #define PH_FRINFC_NDEFMAP_TOPAZMAP_FILEALIASES "$Aliases: $"
47 #if !defined (ES_HW_VER)
49 #define ES_HW_VER (32U)
51 #endif /* #if !defined (ES_HW_VER) */
55 /* This macro is used for the new 3.2 chip,as the JEWEL_READ and
56 JEWEL_WRITE for this chip is removed from the firmware. And for the
57 new FW, only JEWEL_RAW shall be used */
58 #define TOPAZ_RAW_SUPPORT
60 #endif /* #if (ES_HW_VER == 32) */
62 #define TOPAZ_UID_LENGTH_FOR_READ_WRITE 0x04U
65 * \name Topaz - states of the Finite State machine
69 #define PH_FRINFC_TOPAZ_STATE_READ 1 /*!< Read State */
70 #define PH_FRINFC_TOPAZ_STATE_WRITE 2 /*!< Write is going on*/
71 #define PH_FRINFC_TOPAZ_STATE_CHK_NDEF 3 /*!< Check Ndef is going on */
72 #define PH_FRINFC_TOPAZ_STATE_READID 4 /*!< Read Id under progress */
73 #define PH_FRINFC_TOPAZ_STATE_READALL 5 /*!< Read all under progress */
74 #define PH_FRINFC_TOPAZ_STATE_WRITE_NMN 6 /*!< Write ndef magic number */
75 #define PH_FRINFC_TOPAZ_STATE_WRITE_L_TLV 7 /*!< Write length field of TLV */
76 #define PH_FRINFC_TOPAZ_STATE_WR_CC_OR_TLV 8 /*!< Write CC or NDEF TLV */
78 #ifdef FRINFC_READONLY_NDEF
80 #define PH_FRINFC_TOPAZ_STATE_WR_CC_BYTE 9 /*!< READ ONLY state */
81 #define PH_FRINFC_TOPAZ_STATE_RD_LOCK0_BYTE 10 /*!< read Lock byte 0 state */
82 #define PH_FRINFC_TOPAZ_STATE_WR_LOCK0_BYTE 11 /*!< write Lock byte 0 state */
83 #define PH_FRINFC_TOPAZ_STATE_RD_LOCK1_BYTE 12 /*!< read Lock byte 1 state */
84 #define PH_FRINFC_TOPAZ_STATE_WR_LOCK1_BYTE 13 /*!< write Lock byte 1 state */
86 #endif /* #ifdef FRINFC_READONLY_NDEF */
90 * \name Topaz - constants for the capability container
94 #define PH_FRINFC_TOPAZ_CC_BYTE0 0xE1 /*!< Capability container byte 0 = 0xE1 (NMN) */
95 #define PH_FRINFC_TOPAZ_CC_BYTE1 0x10 /*!< Capability container byte 1 = 0x10 (version number) */
96 #define PH_FRINFC_TOPAZ_CC_BYTE2_MAX 0x0E /*!< Capability container byte 2 = 0x0E (Total free space
98 #define PH_FRINFC_TOPAZ_CC_BYTE3_RW 0x00 /*!< Capability container byte 3 = 0x00 for
99 READ WRITE/INITIALISED card state */
100 #define PH_FRINFC_TOPAZ_CC_BYTE3_RO 0x0F /*!< Capability container byte 3 = 0x0F for
101 READ only card state */
106 * \name Topaz - constants for Flags
110 #define PH_FRINFC_TOPAZ_FLAG0 0 /*!< Flag value = 0 */
111 #define PH_FRINFC_TOPAZ_FLAG1 1 /*!< Flag value = 1 */
115 * \name Topaz - constants for left shift
119 #define PH_FRINFC_TOPAZ_SHIFT3 3 /*!< Shift by 3 bits */
123 * \name Topaz - internal state for write
129 PH_FRINFC_TOPAZ_WR_CC_BYTE0, /*!< CC Byte 0 = 0xE1 ndef magic number */
130 PH_FRINFC_TOPAZ_WR_CC_BYTE1, /*!< CC Byte 1 = 0x10 version number */
131 PH_FRINFC_TOPAZ_WR_CC_BYTE2, /*!< CC Byte 2 = 0x0C space in the data area */
132 PH_FRINFC_TOPAZ_WR_CC_BYTE3, /*!< CC Byte 3 = 0x00 read write access */
133 PH_FRINFC_TOPAZ_WR_T_OF_TLV, /*!< CC Byte 3 = 0x00 read write access */
134 PH_FRINFC_TOPAZ_WR_NMN_0, /*!< NMN = 0x00 */
135 PH_FRINFC_TOPAZ_WR_NMN_E1, /*!< NMN = 0xE1 */
136 PH_FRINFC_TOPAZ_WR_L_TLV_0, /*!< L field of TLV = 0 */
137 PH_FRINFC_TOPAZ_WR_L_TLV, /*!< To update the L field */
138 PH_FRINFC_TOPAZ_DYNAMIC_INIT_CHK_NDEF, /*!< Internal state to represent the parsing of card to locate Ndef TLV*/
139 PH_FRINFC_TOPAZ_DYNAMIC_INIT_FIND_NDEF_TLV
146 * \name Topaz - TLV related constants
150 #define PH_FRINFC_TOPAZ_NULL_T 0x00 /*!< Null TLV value = 0x00 */
151 #define PH_FRINFC_TOPAZ_LOCK_CTRL_T 0x01 /*!< Lock TLV = 0x01 */
152 #define PH_FRINFC_TOPAZ_MEM_CTRL_T 0x02 /*!< Memory TLV = 0x02 */
153 #define PH_FRINFC_TOPAZ_NDEF_T 0x03 /*!< NDEF TLV = 0x03 */
154 #define PH_FRINFC_TOPAZ_PROP_T 0xFD /*!< NDEF TLV = 0xFD */
155 #define PH_FRINFC_TOPAZ_TERM_T 0xFE /*!< Terminator TLV value = 0xFE */
157 #define PH_FRINFC_TOPAZ_NDEFTLV_L 0x00 /*!< Length value of TLV = 0x00 */
158 #define PH_FRINFC_TOPAZ_NDEFTLV_LFF 0xFF /*!< Length value of TLV = 0xFF */
159 #define PH_FRINFC_TOPAZ_MAX_CARD_SZ 0x60 /*!< Send Length for Read Ndef */
164 * \name Topaz - Standard constants
168 #define PH_FRINFC_TOPAZ_WR_A_BYTE 0x02 /*!< Send Length for Write Ndef */
169 #define PH_FRINFC_TOPAZ_SEND_BUF_READ 0x01 /*!< Send Length for Read Ndef */
170 #define PH_FRINFC_TOPAZ_HEADROM0_CHK 0xFF /*!< To check the header rom byte 0 */
171 #define PH_FRINFC_TOPAZ_HEADROM0_VAL 0x11 /*!< Header rom byte 0 value of static card */
172 #define PH_FRINFC_TOPAZ_READALL_RESP 0x7A /*!< Response of the read all command 122 bytes */
173 #define PH_FRINFC_TOPAZ_TOTAL_RWBYTES 0x60 /*!< Total number of raw Bytes that can
174 be read or written to the card 96 bytes */
175 #define PH_FRINFC_TOPAZ_TOTAL_RWBYTES1 0x5A /*!< Total number of bytes that can be read
176 or written 90 bytes */
177 #define PH_FRINFC_TOPAZ_BYTE3_MSB 0xF0 /*!< most significant nibble of byte 3(RWA) shall be
179 #define PH_FRINFC_TOPAZ_LOCKBIT_BYTE114 0x01 /*!< lock bits value of byte 104 */
180 #define PH_FRINFC_TOPAZ_LOCKBIT_BYTE115_1 0x60 /*!< lock bits value of byte 105 */
181 #define PH_FRINFC_TOPAZ_LOCKBIT_BYTE115_2 0xE0 /*!< lock bits value of byte 105 */
182 #define PH_FRINFC_TOPAZ_LOCKBIT_BYTENO_0 114 /*!< lock bits byte number 104 */
183 #define PH_FRINFC_TOPAZ_LOCKBIT_BYTENO_1 115 /*!< lock bits byte number 105 */
184 #define PH_FRINFC_TOPAZ_CC_BYTENO_3 13 /*! Lock status according to CC bytes */
185 #define PH_FRINFC_TOPAZ_CC_READWRITE 0x00 /*! Lock status according to CC bytes */
186 #define PH_FRINFC_TOPAZ_CC_READONLY 0x0F /*! Lock status according to CC bytes */
188 /**Topaz static commands*/
189 #define PH_FRINFC_TOPAZ_CMD_READID 0x78U
190 #define PH_FRINFC_TOPAZ_CMD_READALL 0x00U
191 #define PH_FRINFC_TOPAZ_CMD_READ 0x01U
192 #define PH_FRINFC_TOPAZ_CMD_WRITE_1E 0x53U
193 #define PH_FRINFC_TOPAZ_CMD_WRITE_1NE 0x1AU
195 /**Topaz Dynamic commands*/
196 #define PH_FRINFC_TOPAZ_CMD_RSEG 0x10U
197 #define PH_FRINFC_TOPAZ_CMD_READ8 0x02U
198 #define PH_FRINFC_TOPAZ_CMD_WRITE_E8 0x54U
199 #define PH_FRINFC_TOPAZ_CMD_WRITE_NE8 0x1BU
203 PH_FRINFC_TOPAZ_VAL0,
204 PH_FRINFC_TOPAZ_VAL1,
205 PH_FRINFC_TOPAZ_VAL2,
206 PH_FRINFC_TOPAZ_VAL3,
207 PH_FRINFC_TOPAZ_VAL4,
208 PH_FRINFC_TOPAZ_VAL5,
209 PH_FRINFC_TOPAZ_VAL6,
210 PH_FRINFC_TOPAZ_VAL7,
211 PH_FRINFC_TOPAZ_VAL8,
212 PH_FRINFC_TOPAZ_VAL9,
213 PH_FRINFC_TOPAZ_VAL10,
214 PH_FRINFC_TOPAZ_VAL11,
215 PH_FRINFC_TOPAZ_VAL12,
216 PH_FRINFC_TOPAZ_VAL13,
217 PH_FRINFC_TOPAZ_VAL14,
218 PH_FRINFC_TOPAZ_VAL15,
219 PH_FRINFC_TOPAZ_VAL16,
220 PH_FRINFC_TOPAZ_VAL17,
221 PH_FRINFC_TOPAZ_VAL18
228 * \brief \copydoc page_reg Resets the component instance to the initial state and lets the component forget about
229 * the list of registered items. Moreover, the lower device is set.
231 * \param[in] NdefMap Pointer to a valid or uninitialised instance of \ref phFriNfc_NdefMap_t .
233 * \note This function has to be called at the beginning, after creating an instance of
234 * \ref phFriNfc_NdefMap_t . Use this function to reset the instance and/or switch
235 * to a different underlying device (different NFC device or device mode, or different
238 void phFriNfc_TopazMap_H_Reset( phFriNfc_NdefMap_t *NdefMap);
240 #ifdef FRINFC_READONLY_NDEF
243 * \ingroup grp_fri_smart_card_formatting
245 * \brief Initiates the conversion of the already NDEF formatted tag to READ ONLY.
247 * \copydoc page_ovr The function initiates the conversion of the already NDEF formatted
248 * tag to READ ONLY.After this formation, remote card would be properly Ndef Compliant and READ ONLY.
249 * Depending upon the different card type, this function handles formatting procedure.
250 * This function supports only for the TOPAZ tags.
252 * \param[in] NdefMap Pointer to a valid instance of the \ref phFriNfc_NdefMap_t structure describing
253 * the component context.
254 * \retval NFCSTATUS_PENDING The action has been successfully triggered.
255 * \retval Other values An error has occurred.
259 phFriNfc_TopazMap_ConvertToReadOnly (
260 phFriNfc_NdefMap_t *NdefMap);
262 #endif /* #ifdef FRINFC_READONLY_NDEF */
265 * \brief \copydoc page_ovr Initiates Reading of NDEF information from the Remote Device.
267 * The function initiates the reading of NDEF information from a Remote Device.
268 * It performs a reset of the state and starts the action (state machine).
269 * A periodic call of the \ref phFriNfc_NdefMap_Process has to be done once the action
270 * has been triggered.
272 * \param[in] NdefMap Pointer to a valid instance of the \ref phFriNfc_NdefMap_t structure describing
273 * the component context.
275 * \param[in] PacketData Pointer to a location that receives the NDEF Packet.
277 * \param[in,out] PacketDataLength Pointer to a variable receiving the length of the NDEF packet.
279 * \param[in] Offset Indicates whether the read operation shall start from the begining of the
280 * file/card storage \b or continue from the last offset. The last Offset set is stored
281 * within a context variable (must not be modified by the integration).
282 * If the caller sets the value to \ref PH_FRINFC_NDEFMAP_SEEK_CUR, the component shall
283 * start reading from the last offset set (continue where it has stopped before).
284 * If set to \ref PH_FRINFC_NDEFMAP_SEEK_BEGIN, the component shall start reading
285 * from the begining of the card (restarted)
287 * \retval NFCSTATUS_PENDING The action has been successfully triggered.
288 * \retval NFCSTATUS_INVALID_DEVICE_REQUEST If Previous Operation is Write Ndef and Offset
289 * is Current then this error is displayed.
290 * \retval NFCSTATUS_EOF_NDEF_CONTAINER_REACHED No Space in the File to read.
291 * \retval NFCSTATUS_MORE_INFORMATION There are more bytes to read in the card.
292 * \retval NFCSTATUS_SUCCESS Last Byte of the card read.
293 * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or has been disconnected
295 * \retval NFCSTATUS_CMD_ABORTED The caller/driver has aborted the request.
296 * \retval NFCSTATUS_BUFFER_TOO_SMALL The buffer provided by the caller is too small.
297 * \retval NFCSTATUS_RF_TIMEOUT No data has been received within the TIMEOUT period.
301 NFCSTATUS phFriNfc_TopazMap_RdNdef( phFriNfc_NdefMap_t *NdefMap,
303 uint32_t *PacketDataLength,
309 * \brief \copydoc page_ovr Initiates Writing of NDEF information to the Remote Device.
311 * The function initiates the writing of NDEF information to a Remote Device.
312 * It performs a reset of the state and starts the action (state machine).
313 * A periodic call of the \ref phFriNfc_NdefMap_Process has to be done once the action
314 * has been triggered.
316 * \param[in] NdefMap Pointer to a valid instance of the \ref phFriNfc_NdefMap_t structure describing
317 * the component context.
319 * \param[in] PacketData Pointer to a location that holds the prepared NDEF Packet.
321 * \param[in,out] PacketDataLength Variable specifying the length of the prepared NDEF packet.
323 * \param[in] Offset Indicates whether the write operation shall start from the begining of the
324 * file/card storage \b or continue from the last offset. The last Offset set is stored
325 * within a context variable (must not be modified by the integration).
326 * If the caller sets the value to \ref PH_FRINFC_NDEFMAP_SEEK_CUR, the component shall
327 * start writing from the last offset set (continue where it has stopped before).
328 * If set to \ref PH_FRINFC_NDEFMAP_SEEK_BEGIN, the component shall start writing
329 * from the begining of the card (restarted)
331 * \retval NFCSTATUS_PENDING The action has been successfully triggered.
332 * \retval NFCSTATUS_INVALID_DEVICE_REQUEST If Previous Operation is Write Ndef and Offset
333 * is Current then this error is displayed.
334 * \retval NFCSTATUS_EOF_NDEF_CONTAINER_REACHED Last byte is written to the card after this
335 * no further writing is possible.
336 * \retval NFCSTATUS_SUCCESS Buffer provided by the user is completely written
338 * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or has been disconnected
340 * \retval NFCSTATUS_CMD_ABORTED The caller/driver has aborted the request.
341 * \retval NFCSTATUS_BUFFER_TOO_SMALL The buffer provided by the caller is too small.
342 * \retval NFCSTATUS_RF_TIMEOUT No data has been received within the TIMEOUT period.
346 NFCSTATUS phFriNfc_TopazMap_WrNdef( phFriNfc_NdefMap_t *NdefMap,
348 uint32_t *PacketDataLength,
352 * \brief \copydoc page_ovr Check whether a particulat Remote Device is NDEF compliant.
354 * The function checks whether the peer device is NDEF compliant.
356 * \param[in] NdefMap Pointer to a valid instance of the \ref phFriNfc_NdefMap_t structure describing
357 * the component context.
359 * \retval NFCSTATUS_PENDING The action has been successfully triggered.
360 * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function is invalid.
361 * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or has been disconnected
363 * \retval NFCSTATUS_CMD_ABORTED The caller/driver has aborted the request.
364 * \retval NFCSTATUS_BUFFER_TOO_SMALL The buffer provided by the caller is too small.
365 * \retval NFCSTATUS_RF_TIMEOUT No data has been received within the TIMEOUT period.
369 NFCSTATUS phFriNfc_TopazMap_ChkNdef( phFriNfc_NdefMap_t *NdefMap);
371 extern NFCSTATUS phFriNfc_Tpz_H_ChkSpcVer( phFriNfc_NdefMap_t *NdefMap,
376 * \brief \copydoc page_cb Completion Routine, Processing function, needed to avoid long blocking.
378 * The function call scheme is according to \ref grp_interact. No State reset is performed during operation.
380 * \copydoc pphFriNfc_Cr_t
382 * \note The lower (Overlapped HAL) layer must register a pointer to this function as a Completion
383 * Routine in order to be able to notify the component that an I/O has finished and data are
384 * ready to be processed.
388 void phFriNfc_TopazMap_Process( void *Context,
393 * \name TopazDynamicMap - Following section describes constans, functions, variables used in
394 * Topaz Dyanmic card mapping. Ex : Topaz-512
399 * \brief \copydoc Dynamic Card supported definitions.
400 * \note State Mechine Delcations.
403 #define PH_FRINFC_TOPAZ_DYNAMIC_STATE_WRITE_COMPLETE 11 /*!< Write Operation Complete */
404 #define PH_FRINFC_TOPAZ_DYNAMIC_STATE_NXP_READ 12
405 #define PH_FRINFC_TOPAZ_DYNAMIC_STATE_RD_CCBLK 13
406 #define PH_FRINFC_TOPAZ_DYNAMIC_STATE_INIT_RD_CCBLK 14
407 #define PH_FRINFC_TOPAZ_DYNAMIC_STATE_INIT_WR 15
408 #define PH_FRINFC_TOPAZ_DYNAMIC_STATE_WRITE_LEN 16
409 #define PH_FRINFC_TOPAZ_DYNAMIC_STATE_FIND_NDEF_TLV 17
410 #define PH_FRINFC_TOPAZ_DYNAMI_FOUND_RESERV_AREA 18
411 #define PH_FRINFC_TOPAZ_DYNAMIC_NOT_FOUND_RESERV_AREA 19
412 #define PH_FRINFC_TOPAZ_DYNAMIC_PROCESS_CHK_NDEF 20
413 #define PH_FRINFC_TOPAZ_DYNAMIC_FIND_NDEF_TLV 21
414 #define PH_FRINFC_TOPAZ_DYNAMIC_INIT_RD_NDEF 22
415 #define PH_FRINFC_TOPAZ_DYNAMIC_STATE_WR_MEM_TLV 23
416 #define PH_FRINFC_TOPAZ_DYNAMIC_STATE_WR_LOCK_TLV 24
419 * \brief \copydoc Dynamic Card : Capability Container bytes.
420 * \note State Mechine Delcations.
423 #define PH_FRINFC_TOPAZ_DYNAMIC_CC_BYTE2_MMSIZE 0x3F /*!< Capability container byte 2 = 0x3F (Total free space
425 #define PH_FRINFC_TOPAZ_DYNAMIC_HEADROM0_VAL 0x12 /*!< Header rom byte 0 value of dynamic card */
427 #define PH_FRINFC_TOPAZ_DYNAMIC_TOTAL_RWBYTES 0x1CC /*!< Total number of raw Bytes that can
428 be read or written to the card 460 bytes
429 460 = 512 - 6 bloks * 8(48)( this includes 2 bytes of null byte in 02 block)
430 - 4 bytes ( NDEF TLV )*/
431 #define PH_FRINFC_TOPAZ_DYNAMIC_MAX_CARD_SZ 0x1E0 /*!< Card size */
432 #define PH_FRINFC_TOPAZ_DYNAMIC_MX_ONEBYTE_TLV_SIZE 0xFF /*!< MAX size supported in one byte length TLV*/
433 #define PH_FRINFC_TOPAZ_DYNAMIC_MAX_DATA_SIZE_TO_WRITE 0xE6 /*!< MAX size supported by HAL if the data size > 255*/
435 #define PH_FRINFC_TOPAZ_DYNAMIC_LOCKBYTE_0 0x00 /*!< lock bits value of byte 104 */
436 #define PH_FRINFC_TOPAZ_DYNAMIC_LOCKBYTE_1 0x00 /*!< lock bits value of byte 105 */
437 #define PH_FRINFC_TOPAZ_DYNAMIC_LOCKBYTE_2TO7 0x00 /*!< lock bits value of byte 105 */
439 #define PH_FRINFC_TOPAZ_DYNAMIC_LOCKBIT_BYTENO_0 112 /*!< lock bits byte number 104:Blk0-7 */
440 #define PH_FRINFC_TOPAZ_DYNAMIC_LOCKBIT_BYTENO_1 113 /*!< lock bits byte number 105:Blk08-F */
441 #define PH_FRINFC_TOPAZ_DYNAMIC_LOCKBIT_BYTENO_2 122 /*!< lock bits byte number 124:Blk10-17 */
442 #define PH_FRINFC_TOPAZ_DYNAMIC_LOCKBIT_BYTENO_3 123 /*!< lock bits byte number 125:Blk18-1F */
443 #define PH_FRINFC_TOPAZ_DYNAMIC_LOCKBIT_BYTENO_4 124 /*!< lock bits byte number 126:Blk20-27*/
444 #define PH_FRINFC_TOPAZ_DYNAMIC_LOCKBIT_BYTENO_5 125 /*!< lock bits byte number 127:Blk28-2F*/
445 #define PH_FRINFC_TOPAZ_DYNAMIC_LOCKBIT_BYTENO_6 126 /*!< lock bits byte number 128:Blk30-37*/
446 #define PH_FRINFC_TOPAZ_DYNAMIC_LOCKBIT_BYTENO_7 127 /*!< lock bits byte number 128:Blk30-37*/
447 #define PH_FRINFC_TOPAZ_DYNAMIC_CC_BYTENO_3 11 /*! Lock status according to CC bytes */
449 #define PH_FRINFC_TOPAZ_DYNAMIC_SEGMENT0 0x00 /*!< 00000000 : 0th segment */
450 #define PH_FRINFC_TOPAZ_DYNAMIC_READSEG_RESP 0x80
452 #define PH_FRINFC_TOPAZ_DYNAMIC_MAX_BYTES_TO_READ_IN_ONEB_LTLV_FSEG 78
453 #define PH_FRINFC_TOPAZ_DYNAMIC_MAX_BYTES_TO_READ_IN_THREEB_LTLV_FSEG 76
455 #define PH_FRINFC_TOPAZ_DYNAMIC_MAX_DATA_SIZE PHHAL_MAX_DATASIZE
456 #define PH_FRINFC_TOPAZ_DYNAMIC_FSEG_BYTE_COUNT 104
457 #define PH_FRINFC_TOPAZ_DYNAMIC_SEG_BYTE_COUNT 128
458 #define PH_FRINFC_TOPAZ_DYNAMIC_CC_BLK_SIZE 18
459 #define PH_FRINFC_TOPAZ_DYNAMIC_CC_BLK_ADDRESS 8
460 #define PH_FRINFC_TOPAZ_DYNAMIC_UID_BLK_ADDRESS 0
461 #define PH_FRINFC_TOPAZ_DYNAMIC_LOCK_BYTE_SIZE 24
462 #define PH_FRINFC_TOPAZ_DYNAMIC_FSEG_TOT_DATA_BYTES 120
464 #define PH_FRINFC_TOPAZ_DYNAMIC_DATA_BYTE_COUNT_OF_FSEG_IN_ONEB_LTLV_FSEG 26
465 #define PH_FRINFC_TOPAZ_DYNAMIC_DATA_BYTE_COUNT_OF_FSEG_IN_THREEB_LTLV_FSEG 28
484 * \brief \copydoc page_ovr Initiates Reading of NDEF information from the Remote Device.
486 * The function initiates the reading of NDEF information from a Remote Device.
487 * It performs a reset of the state and starts the action (state machine).
488 * A periodic call of the \ref phFriNfc_NdefMap_Process has to be done once the action
489 * has been triggered.
491 * \param[in] NdefMap Pointer to a valid instance of the \ref phFriNfc_NdefMap_t structure describing
492 * the component context.
494 * \param[in] PacketData Pointer to a location that receives the NDEF Packet.
496 * \param[in,out] PacketDataLength Pointer to a variable receiving the length of the NDEF packet.
498 * \param[in] Offset Indicates whether the read operation shall start from the begining of the
499 * file/card storage \b or continue from the last offset. The last Offset set is stored
500 * within a context variable (must not be modified by the integration).
501 * If the caller sets the value to \ref PH_FRINFC_NDEFMAP_SEEK_CUR, the component shall
502 * start reading from the last offset set (continue where it has stopped before).
503 * If set to \ref PH_FRINFC_NDEFMAP_SEEK_BEGIN, the component shall start reading
504 * from the begining of the card (restarted)
506 * \retval NFCSTATUS_PENDING The action has been successfully triggered.
507 * \retval NFCSTATUS_INVALID_DEVICE_REQUEST If Previous Operation is Write Ndef and Offset
508 * is Current then this error is displayed.
509 * \retval NFCSTATUS_EOF_NDEF_CONTAINER_REACHED No Space in the File to read.
510 * \retval NFCSTATUS_MORE_INFORMATION There are more bytes to read in the card.
511 * \retval NFCSTATUS_SUCCESS Last Byte of the card read.
512 * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or has been disconnected
514 * \retval NFCSTATUS_CMD_ABORTED The caller/driver has aborted the request.
515 * \retval NFCSTATUS_BUFFER_TOO_SMALL The buffer provided by the caller is too small.
516 * \retval NFCSTATUS_RF_TIMEOUT No data has been received within the TIMEOUT period.
520 NFCSTATUS phFriNfc_TopazDynamicMap_RdNdef( phFriNfc_NdefMap_t *NdefMap,
522 uint32_t *PacketDataLength,
526 * \brief \copydoc page_ovr Initiates Writing of NDEF information to the Remote Device.
528 * The function initiates the writing of NDEF information to a Remote Device.
529 * It performs a reset of the state and starts the action (state machine).
530 * A periodic call of the \ref phFriNfc_NdefMap_Process has to be done once the action
531 * has been triggered.
533 * \param[in] NdefMap Pointer to a valid instance of the \ref phFriNfc_NdefMap_t structure describing
534 * the component context.
536 * \param[in] PacketData Pointer to a location that holds the prepared NDEF Packet.
538 * \param[in,out] PacketDataLength Variable specifying the length of the prepared NDEF packet.
540 * \param[in] Offset Indicates whether the write operation shall start from the begining of the
541 * file/card storage \b or continue from the last offset. The last Offset set is stored
542 * within a context variable (must not be modified by the integration).
543 * If the caller sets the value to \ref PH_FRINFC_NDEFMAP_SEEK_CUR, the component shall
544 * start writing from the last offset set (continue where it has stopped before).
545 * If set to \ref PH_FRINFC_NDEFMAP_SEEK_BEGIN, the component shall start writing
546 * from the begining of the card (restarted)
548 * \retval NFCSTATUS_PENDING The action has been successfully triggered.
549 * \retval NFCSTATUS_INVALID_DEVICE_REQUEST If Previous Operation is Write Ndef and Offset
550 * is Current then this error is displayed.
551 * \retval NFCSTATUS_EOF_NDEF_CONTAINER_REACHED Last byte is written to the card after this
552 * no further writing is possible.
553 * \retval NFCSTATUS_SUCCESS Buffer provided by the user is completely written
555 * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or has been disconnected
557 * \retval NFCSTATUS_CMD_ABORTED The caller/driver has aborted the request.
558 * \retval NFCSTATUS_BUFFER_TOO_SMALL The buffer provided by the caller is too small.
559 * \retval NFCSTATUS_RF_TIMEOUT No data has been received within the TIMEOUT period.
562 NFCSTATUS phFriNfc_TopazDynamicMap_WrNdef( phFriNfc_NdefMap_t *NdefMap,
564 uint32_t *PacketDataLength,
568 * \brief \copydoc page_ovr Check whether a particulat Remote Device is NDEF compliant.
570 * The function checks whether the peer device is NDEF compliant.
572 * \param[in] NdefMap Pointer to a valid instance of the \ref phFriNfc_NdefMap_t structure describing
573 * the component context.
575 * \retval NFCSTATUS_PENDING The action has been successfully triggered.
576 * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function is invalid.
577 * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or has been disconnected
579 * \retval NFCSTATUS_CMD_ABORTED The caller/driver has aborted the request.
580 * \retval NFCSTATUS_BUFFER_TOO_SMALL The buffer provided by the caller is too small.
581 * \retval NFCSTATUS_RF_TIMEOUT No data has been received within the TIMEOUT period.
584 NFCSTATUS phFriNfc_TopazDynamicMap_ChkNdef( phFriNfc_NdefMap_t *NdefMap);
587 * \brief \copydoc page_cb Completion Routine, Processing function, needed to avoid long blocking.
589 * The function call scheme is according to \ref grp_interact. No State reset is performed during operation.
591 * \copydoc pphFriNfc_Cr_t
593 * \note The lower (Overlapped HAL) layer must register a pointer to this function as a Completion
594 * Routine in order to be able to notify the component that an I/O has finished and data are
595 * ready to be processed.
598 void phFriNfc_TopazDynamicMap_Process( void *Context,
601 #ifdef FRINFC_READONLY_NDEF
603 * \brief \copydoc page_ovr Initiates Writing of NDEF information to the Remote Device.
605 * The function initiates the writing of NDEF information to a Remote Device.
606 * It performs a reset of the state and starts the action (state machine).
607 * A periodic call of the \ref phFriNfc_NdefMap_Process has to be done once the action
608 * has been triggered.
610 * \param[in] psNdefMap Pointer to a valid instance of the \ref phFriNfc_NdefMap_t structure describing
611 * the component context.
614 * \retval NFCSTATUS_PENDING The action has been successfully triggered.
615 * \retval NFCSTATUS_INVALID_DEVICE_REQUEST If Previous Operation is Write Ndef and Offset
616 * is Current then this error is displayed.
617 * \retval NFCSTATUS_EOF_NDEF_CONTAINER_REACHED Last byte is written to the card after this
618 * no further writing is possible.
619 * \retval NFCSTATUS_SUCCESS Buffer provided by the user is completely written
621 * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or has been disconnected
623 * \retval NFCSTATUS_CMD_ABORTED The caller/driver has aborted the request.
624 * \retval NFCSTATUS_BUFFER_TOO_SMALL The buffer provided by the caller is too small.
625 * \retval NFCSTATUS_RF_TIMEOUT No data has been received within the TIMEOUT period.
629 phFriNfc_TopazDynamicMap_ConvertToReadOnly (
630 phFriNfc_NdefMap_t *psNdefMap);
631 #endif /* #ifdef FRINFC_READONLY_NDEF */
635 #endif /* PHFRINFC_TOPAZMAP_H */