rw_api.h revision c95c79ccb65d82a65b960919077d5c359cf28ced
1/****************************************************************************** 2 * 3 * Copyright (C) 2009-2013 Broadcom Corporation 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 19 20/****************************************************************************** 21 * 22 * This file contains the Near Field Communication (NFC) Reader/Writer mode 23 * related API function external definitions. 24 * 25 ******************************************************************************/ 26 27#ifndef RW_API_H 28#define RW_API_H 29#include "tags_defs.h" 30 31#define RW_T1T_BLD_ADD(a, k, y) a = ((k & 0xF) << 3) | (y&0x7); 32#define RW_T1T_BLD_ADDS(a, s) a = ((s & 0xF) << 4); 33 34#define RW_T1T_FIRST_EVT 0x20 35#define RW_T2T_FIRST_EVT 0x40 36#define RW_T3T_FIRST_EVT 0x60 37#define RW_T4T_FIRST_EVT 0x80 38#define RW_I93_FIRST_EVT 0xA0 39 40enum 41{ 42 /* Note: the order of these events can not be changed */ 43 /* Type 1 tag events for tRW_CBACK */ 44 RW_T1T_RID_EVT = RW_T1T_FIRST_EVT, /* Read ID command completd */ 45 RW_T1T_RALL_CPLT_EVT, /* Read All command completed */ 46 RW_T1T_READ_CPLT_EVT, /* Read byte completed */ 47 RW_T1T_WRITE_E_CPLT_EVT, /* Write byte after erase completed */ 48 RW_T1T_WRITE_NE_CPLT_EVT, /* Write byte with no erase completed */ 49 RW_T1T_RSEG_CPLT_EVT, /* Read segment completed */ 50 RW_T1T_READ8_CPLT_EVT, /* Read block completed */ 51 RW_T1T_WRITE_E8_CPLT_EVT, /* Write block after erase completed */ 52 RW_T1T_WRITE_NE8_CPLT_EVT, /* Write block with no erase completed */ 53 RW_T1T_TLV_DETECT_EVT, /* Lock/Mem/Prop tlv detection complete */ 54 RW_T1T_NDEF_DETECT_EVT, /* NDEF detection complete */ 55 RW_T1T_NDEF_READ_EVT, /* NDEF read completed */ 56 RW_T1T_NDEF_WRITE_EVT, /* NDEF write complete */ 57 RW_T1T_SET_TAG_RO_EVT, /* Tag is set as read only */ 58 RW_T1T_RAW_FRAME_EVT, /* Response of raw frame sent */ 59 RW_T1T_PRESENCE_CHECK_EVT, /* Response to RW_T1tPresenceCheck */ 60 RW_T1T_FORMAT_CPLT_EVT, /* Tag Formated */ 61 RW_T1T_INTF_ERROR_EVT, /* RF Interface error event */ 62 RW_T1T_MAX_EVT, 63 64 /* Type 2 tag events */ 65 RW_T2T_READ_CPLT_EVT = RW_T2T_FIRST_EVT, /* Read completed */ 66 RW_T2T_WRITE_CPLT_EVT, /* Write completed */ 67 RW_T2T_SELECT_CPLT_EVT, /* Sector select completed */ 68 RW_T2T_NDEF_DETECT_EVT, /* NDEF detection complete */ 69 RW_T2T_TLV_DETECT_EVT, /* Lock/Mem/Prop tlv detection complete */ 70 RW_T2T_NDEF_READ_EVT, /* NDEF read completed */ 71 RW_T2T_NDEF_WRITE_EVT, /* NDEF write complete */ 72 RW_T2T_SET_TAG_RO_EVT, /* Tag is set as read only */ 73 RW_T2T_RAW_FRAME_EVT, /* Response of raw frame sent */ 74 RW_T2T_PRESENCE_CHECK_EVT, /* Response to RW_T2tPresenceCheck */ 75 RW_T2T_FORMAT_CPLT_EVT, /* Tag Formated */ 76 RW_T2T_INTF_ERROR_EVT, /* RF Interface error event */ 77 RW_T2T_MAX_EVT, 78 79 /* Type 3 tag events for tRW_CBACK */ 80 RW_T3T_CHECK_CPLT_EVT = RW_T3T_FIRST_EVT, /* Read completed */ 81 RW_T3T_UPDATE_CPLT_EVT, /* Write completed */ 82 RW_T3T_CHECK_EVT, /* Segment of data received from type 3 tag */ 83 RW_T3T_RAW_FRAME_EVT, /* SendRawFrame response */ 84 RW_T3T_NDEF_DETECT_EVT, /* NDEF detection complete */ 85 RW_T3T_PRESENCE_CHECK_EVT, /* Response to RW_T3tPresenceCheck */ 86 RW_T3T_POLL_EVT, /* Response to RW_T3tPoll */ 87 RW_T3T_GET_SYSTEM_CODES_EVT, /* Response to RW_T3tGetSystemCodes */ 88 RW_T3T_FORMAT_CPLT_EVT, /* Tag Formated (Felica-Lite only) */ 89 RW_T3T_SET_READ_ONLY_CPLT_EVT, /* Tag is set as Read only */ 90 RW_T3T_INTF_ERROR_EVT, /* RF Interface error event */ 91 RW_T3T_MAX_EVT, 92 93 /* Type 4 tag events for tRW_CBACK */ 94 RW_T4T_NDEF_DETECT_EVT = RW_T4T_FIRST_EVT, /* Result of NDEF detection procedure */ 95 /* Mandatory NDEF file is selected */ 96 RW_T4T_NDEF_READ_EVT, /* Segment of data received from type 4 tag */ 97 RW_T4T_NDEF_READ_CPLT_EVT, /* Read operation completed */ 98 RW_T4T_NDEF_READ_FAIL_EVT, /* Read operation failed */ 99 RW_T4T_NDEF_UPDATE_CPLT_EVT, /* Update operation completed */ 100 RW_T4T_NDEF_UPDATE_FAIL_EVT, /* Update operation failed */ 101 RW_T4T_SET_TO_RO_EVT, /* Tag is set as read only */ 102 RW_T4T_PRESENCE_CHECK_EVT, /* Response to RW_T4tPresenceCheck */ 103 RW_T4T_RAW_FRAME_EVT, /* Response of raw frame sent */ 104 RW_T4T_INTF_ERROR_EVT, /* RF Interface error event */ 105 RW_T4T_MAX_EVT, 106 107 /* ISO 15693 tag events for tRW_CBACK */ 108 RW_I93_NDEF_DETECT_EVT = RW_I93_FIRST_EVT, /* Result of NDEF detection procedure */ 109 RW_I93_NDEF_READ_EVT, /* Segment of data received from tag */ 110 RW_I93_NDEF_READ_CPLT_EVT, /* Read operation completed */ 111 RW_I93_NDEF_READ_FAIL_EVT, /* Read operation failed */ 112 RW_I93_NDEF_UPDATE_CPLT_EVT, /* Update operation completed */ 113 RW_I93_NDEF_UPDATE_FAIL_EVT, /* Update operation failed */ 114 RW_I93_FORMAT_CPLT_EVT, /* Format procedure complete */ 115 RW_I93_SET_TAG_RO_EVT, /* Set read-only procedure complete */ 116 RW_I93_INVENTORY_EVT, /* Response of Inventory */ 117 RW_I93_DATA_EVT, /* Response of Read, Get Multi Security */ 118 RW_I93_SYS_INFO_EVT, /* Response of System Information */ 119 RW_I93_CMD_CMPL_EVT, /* Command complete */ 120 RW_I93_PRESENCE_CHECK_EVT, /* Response to RW_I93PresenceCheck */ 121 RW_I93_RAW_FRAME_EVT, /* Response of raw frame sent */ 122 RW_I93_INTF_ERROR_EVT, /* RF Interface error event */ 123 RW_I93_MAX_EVT 124}; 125 126#define RW_RAW_FRAME_EVT 0xFF 127 128typedef UINT8 tRW_EVENT; 129 130#define RW_NDEF_FL_READ_ONLY 0x01 /* Tag is read only */ 131#define RW_NDEF_FL_FORMATED 0x02 /* Tag formated for NDEF */ 132#define RW_NDEF_FL_SUPPORTED 0x04 /* NDEF supported by the tag */ 133#define RW_NDEF_FL_UNKNOWN 0x08 /* Unable to find if tag is ndef capable/formated/read only */ 134#define RW_NDEF_FL_FORMATABLE 0x10 /* Tag supports format operation */ 135#define RW_NDEF_FL_SOFT_LOCKABLE 0x20 /* Tag can be soft locked */ 136#define RW_NDEF_FL_HARD_LOCKABLE 0x40 /* Tag can be hard locked */ 137#define RW_NDEF_FL_OTP 0x80 /* Tag is one time programmable */ 138 139typedef UINT8 tRW_NDEF_FLAG; 140 141typedef struct 142{ 143 tNFC_STATUS status; 144 UINT8 hr[T1T_HR_LEN]; 145 UINT8 uid[T1T_CMD_UID_LEN]; 146} tRW_T1T_RID_EVT; 147 148typedef struct 149{ 150 tNFC_STATUS status; 151 UINT16 msg_len; /* Length of the NDEF message */ 152} tRW_T2T_DETECT; 153 154typedef struct 155{ 156 tNFC_STATUS status; /* Status of the POLL request */ 157 UINT8 rc; /* RC (request code) used in the POLL request */ 158 UINT8 response_num; /* Number of SENSF_RES responses */ 159 UINT8 response_bufsize; /* Size of SENSF_RES responses */ 160 UINT8 *response_buf; /* Buffer of responses (length + SENSF_RES) see $8.1.2.2 of NCI specs */ 161} tRW_T3T_POLL; 162 163typedef struct 164{ 165 tNFC_STATUS status; /* Status of the Get System Codes request */ 166 UINT8 num_system_codes; /* Number of system codes */ 167 UINT16 *p_system_codes; /* Table of system codes */ 168} tRW_T3T_SYSTEM_CODES; 169 170typedef struct 171{ 172 tNFC_STATUS status; /* status of NDEF detection */ 173 tNFC_PROTOCOL protocol; /* protocol used to detect NDEF */ 174 UINT32 max_size; /* max number of bytes available for NDEF data */ 175 UINT32 cur_size; /* current size of stored NDEF data (in bytes) */ 176 tRW_NDEF_FLAG flags; /* Flags to indicate NDEF capability,formated,formatable and read only */ 177} tRW_DETECT_NDEF_DATA; 178 179typedef struct 180{ 181 tNFC_STATUS status; /* status of NDEF detection */ 182 tNFC_PROTOCOL protocol; /* protocol used to detect TLV */ 183 UINT8 num_bytes; /* number of reserved/lock bytes based on the type of tlv */ 184} tRW_DETECT_TLV_DATA; 185 186typedef struct 187{ 188 tNFC_STATUS status; 189 BT_HDR *p_data; 190} tRW_READ_DATA; 191 192typedef struct 193{ 194 tNFC_STATUS status; 195 UINT8 sw1; 196 UINT8 sw2; 197} tRW_T4T_SW; 198 199typedef struct /* RW_I93_INVENTORY_EVT */ 200{ 201 tNFC_STATUS status; /* status of Inventory command */ 202 UINT8 dsfid; /* DSFID */ 203 UINT8 uid[I93_UID_BYTE_LEN]; /* UID[0]:MSB, ... UID[7]:LSB */ 204} tRW_I93_INVENTORY; 205 206typedef struct /* RW_I93_DATA_EVT */ 207{ 208 tNFC_STATUS status; /* status of Read/Get security status command */ 209 UINT8 command; /* sent command */ 210 BT_HDR *p_data; /* block data of security status */ 211} tRW_I93_DATA; 212 213typedef struct /* RW_I93_SYS_INFO_EVT */ 214{ 215 tNFC_STATUS status; /* status of Get Sys Info command */ 216 UINT8 info_flags; /* information flags */ 217 UINT8 uid[I93_UID_BYTE_LEN]; /* UID[0]:MSB, ... UID[7]:LSB */ 218 UINT8 dsfid; /* DSFID if I93_INFO_FLAG_DSFID */ 219 UINT8 afi; /* AFI if I93_INFO_FLAG_AFI */ 220 UINT16 num_block; /* number of blocks if I93_INFO_FLAG_MEM_SIZE */ 221 UINT8 block_size; /* block size in byte if I93_INFO_FLAG_MEM_SIZE */ 222 UINT8 IC_reference; /* IC Reference if I93_INFO_FLAG_IC_REF */ 223} tRW_I93_SYS_INFO; 224 225typedef struct /* RW_I93_CMD_CMPL_EVT */ 226{ 227 tNFC_STATUS status; /* status of sent command */ 228 UINT8 command; /* sent command */ 229 UINT8 error_code; /* error code; I93_ERROR_CODE_XXX */ 230} tRW_I93_CMD_CMPL; 231 232typedef struct 233{ 234 tNFC_STATUS status; 235 BT_HDR *p_data; 236} tRW_RAW_FRAME; 237 238typedef union 239{ 240 tNFC_STATUS status; 241 tRW_T3T_POLL t3t_poll; /* Response to t3t poll command */ 242 tRW_T3T_SYSTEM_CODES t3t_sc; /* Received system codes from t3 tag */ 243 tRW_DETECT_TLV_DATA tlv; /* The information of detected TLV data */ 244 tRW_DETECT_NDEF_DATA ndef; /* The information of detected NDEF data */ 245 tRW_READ_DATA data; /* The received data from a tag */ 246 tRW_RAW_FRAME raw_frame; /* Response of raw frame sent */ 247 tRW_T4T_SW t4t_sw; /* Received status words from a tag */ 248 tRW_I93_INVENTORY i93_inventory; /* ISO 15693 Inventory response */ 249 tRW_I93_DATA i93_data; /* ISO 15693 Data response */ 250 tRW_I93_SYS_INFO i93_sys_info; /* ISO 15693 System Information */ 251 tRW_I93_CMD_CMPL i93_cmd_cmpl; /* ISO 15693 Command complete */ 252} tRW_DATA; 253 254 255typedef void (tRW_CBACK) (tRW_EVENT event, tRW_DATA *p_data); 256 257/******************************************************************************* 258** 259** Function RW_T1tRid 260** 261** Description This function send a RID command for Reader/Writer mode. 262** 263** Returns tNFC_STATUS 264** 265*******************************************************************************/ 266NFC_API extern tNFC_STATUS RW_T1tRid (void); 267 268/******************************************************************************* 269** 270** Function RW_T1tReadAll 271** 272** Description This function send a RALL command for Reader/Writer mode. 273** 274** Returns tNFC_STATUS 275** 276*******************************************************************************/ 277NFC_API extern tNFC_STATUS RW_T1tReadAll (void); 278 279/******************************************************************************* 280** 281** Function RW_T1tRead 282** 283** Description This function send a READ command for Reader/Writer mode. 284** 285** Returns tNFC_STATUS 286** 287*******************************************************************************/ 288NFC_API extern tNFC_STATUS RW_T1tRead (UINT8 block, UINT8 byte); 289 290/******************************************************************************* 291** 292** Function RW_T1tWriteErase 293** 294** Description This function send a WRITE-E command for Reader/Writer mode. 295** 296** Returns tNFC_STATUS 297** 298*******************************************************************************/ 299NFC_API extern tNFC_STATUS RW_T1tWriteErase (UINT8 block, UINT8 byte, UINT8 new_byte); 300 301/******************************************************************************* 302** 303** Function RW_T1tWriteNoErase 304** 305** Description This function send a WRITE-NE command for Reader/Writer mode. 306** 307** Returns tNFC_STATUS 308** 309*******************************************************************************/ 310NFC_API extern tNFC_STATUS RW_T1tWriteNoErase (UINT8 block, UINT8 byte, UINT8 new_byte); 311 312/******************************************************************************* 313** 314** Function RW_T1tReadSeg 315** 316** Description This function send a RSEG command for Reader/Writer mode. 317** 318** Returns tNFC_STATUS 319** 320*******************************************************************************/ 321NFC_API extern tNFC_STATUS RW_T1tReadSeg (UINT8 segment); 322 323/******************************************************************************* 324** 325** Function RW_T1tRead8 326** 327** Description This function send a READ8 command for Reader/Writer mode. 328** 329** Returns tNFC_STATUS 330** 331*******************************************************************************/ 332NFC_API extern tNFC_STATUS RW_T1tRead8 (UINT8 block); 333 334/******************************************************************************* 335** 336** Function RW_T1tWriteErase8 337** 338** Description This function send a WRITE-E8 command for Reader/Writer mode. 339** 340** Returns tNFC_STATUS 341** 342*******************************************************************************/ 343NFC_API extern tNFC_STATUS RW_T1tWriteErase8 (UINT8 block, UINT8 *p_new_dat); 344 345/******************************************************************************* 346** 347** Function RW_T1tWriteNoErase8 348** 349** Description This function send a WRITE-NE8 command for Reader/Writer mode. 350** 351** Returns tNFC_STATUS 352** 353*******************************************************************************/ 354NFC_API extern tNFC_STATUS RW_T1tWriteNoErase8 (UINT8 block, UINT8 *p_new_dat); 355 356/******************************************************************************* 357** 358** Function RW_T1tLocateTlv 359** 360** Description This function is called to find the start of the given TLV 361** 362** Parameters: void 363** 364** Returns NCI_STATUS_OK, if detection was started. Otherwise, error status. 365** 366*******************************************************************************/ 367NFC_API extern tNFC_STATUS RW_T1tLocateTlv (UINT8 tlv_type); 368 369/******************************************************************************* 370** 371** Function RW_T1tDetectNDef 372** 373** Description This function can be called to detect if there is an NDEF 374** message on the tag. 375** 376** Parameters: void 377** 378** Returns NCI_STATUS_OK, if detection was started. Otherwise, error status. 379** 380*******************************************************************************/ 381NFC_API extern tNFC_STATUS RW_T1tDetectNDef (void); 382 383/******************************************************************************* 384** 385** Function RW_T1tReadNDef 386** 387** Description This function can be called to read the NDEF message on the tag. 388** 389** Parameters: p_buffer: The buffer into which to read the NDEF message 390** buf_len: The length of the buffer 391** 392** Returns NCI_STATUS_OK, if read was started. Otherwise, error status. 393** 394*******************************************************************************/ 395NFC_API extern tNFC_STATUS RW_T1tReadNDef (UINT8 *p_buffer, UINT16 buf_len); 396 397/******************************************************************************* 398** 399** Function RW_T1tWriteNDef 400** 401** Description This function can be called to write an NDEF message to the tag. 402** 403** Parameters: msg_len: The length of the buffer 404** p_msg: The NDEF message to write 405** 406** Returns NCI_STATUS_OK, if write was started. Otherwise, error status. 407** 408*******************************************************************************/ 409NFC_API extern tNFC_STATUS RW_T1tWriteNDef (UINT16 msg_len, UINT8 *p_msg); 410 411/******************************************************************************* 412** 413** Function RW_T1tSetTagReadOnly 414** 415** Description This function can be called to set the tag in to read only 416** state 417** 418** Parameters: b_hard_lock: To hard lock or just soft lock the tag 419** 420** Returns NCI_STATUS_OK, if set readonly operation started. 421** Otherwise, error status. 422** 423*******************************************************************************/ 424NFC_API extern tNFC_STATUS RW_T1tSetTagReadOnly (BOOLEAN b_hard_lock); 425 426/***************************************************************************** 427** 428** Function RW_T1tPresenceCheck 429** 430** Description 431** Check if the tag is still in the field. 432** 433** The RW_T1T_PRESENCE_CHECK_EVT w/ status is used to indicate presence 434** or non-presence. 435** 436** Returns 437** NFC_STATUS_OK, if raw data frame sent 438** NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation 439** NFC_STATUS_FAILED: other error 440** 441*****************************************************************************/ 442NFC_API extern tNFC_STATUS RW_T1tPresenceCheck (void); 443 444/***************************************************************************** 445** 446** Function RW_T1tFormatNDef 447** 448** Description 449** Format Tag content 450** 451** Returns 452** NFC_STATUS_OK, Command sent to format Tag 453** NFC_STATUS_REJECTED: Invalid HR0 and cannot format the tag 454** NFC_STATUS_FAILED: other error 455** 456*****************************************************************************/ 457tNFC_STATUS RW_T1tFormatNDef (void); 458 459/******************************************************************************* 460** 461** Function RW_T2tLocateTlv 462** 463** Description This function is called to find the start of the given TLV 464** 465** Returns Pointer to the TLV, if successful. Otherwise, NULL. 466** 467*******************************************************************************/ 468NFC_API extern tNFC_STATUS RW_T2tLocateTlv(UINT8 tlv_type); 469 470/******************************************************************************* 471** 472** Function RW_T2tRead 473** 474** Description This function issues the Type 2 Tag READ command. When the 475** operation is complete the callback function will be called 476** with a RW_T2T_READ_EVT. 477** 478** Returns tNFC_STATUS 479** 480*******************************************************************************/ 481NFC_API extern tNFC_STATUS RW_T2tRead (UINT16 block); 482 483/******************************************************************************* 484** 485** Function RW_T2tWrite 486** 487** Description This function issues the Type 2 Tag WRITE command. When the 488** operation is complete the callback function will be called 489** with a RW_T2T_WRITE_EVT. 490** 491** p_write_data points to the array of 4 bytes to be written 492** 493** Returns tNFC_STATUS 494** 495*******************************************************************************/ 496NFC_API extern tNFC_STATUS RW_T2tWrite (UINT16 block, UINT8 *p_write_data); 497 498/******************************************************************************* 499** 500** Function RW_T2tSectorSelect 501** 502** Description This function issues the Type 2 Tag SECTOR-SELECT command 503** packet 1. If a NACK is received as the response, the callback 504** function will be called with a RW_T2T_SECTOR_SELECT_EVT. If 505** an ACK is received as the response, the command packet 2 with 506** the given sector number is sent to the peer device. When the 507** response for packet 2 is received, the callback function will 508** be called with a RW_T2T_SECTOR_SELECT_EVT. 509** 510** A sector is 256 contiguous blocks (1024 bytes). 511** 512** Returns tNFC_STATUS 513** 514*******************************************************************************/ 515NFC_API extern tNFC_STATUS RW_T2tSectorSelect (UINT8 sector); 516 517/******************************************************************************* 518** 519** Function RW_T2tDetectNDef 520** 521** Description This function will find NDEF message if any in the Tag 522** 523** Returns tNFC_STATUS 524** 525*******************************************************************************/ 526NFC_API extern tNFC_STATUS RW_T2tDetectNDef (BOOLEAN skip_dyn_locks); 527 528/******************************************************************************* 529** 530** Function RW_T2tReadNDef 531** 532** Description This function can be called to read the NDEF message on the tag. 533** 534** Parameters: p_buffer: The buffer into which to read the NDEF message 535** buf_len: The length of the buffer 536** 537** Returns NCI_STATUS_OK, if read was started. Otherwise, error status. 538** 539*******************************************************************************/ 540NFC_API extern tNFC_STATUS RW_T2tReadNDef (UINT8 *p_buffer, UINT16 buf_len); 541 542/******************************************************************************* 543** 544** Function RW_T2tWriteNDef 545** 546** Description This function can be called to write an NDEF message to the tag. 547** 548** Parameters: msg_len: The length of the buffer 549** p_msg: The NDEF message to write 550** 551** Returns NCI_STATUS_OK, if write was started. Otherwise, error status. 552** 553*******************************************************************************/ 554NFC_API extern tNFC_STATUS RW_T2tWriteNDef (UINT16 msg_len, UINT8 *p_msg ); 555 556/******************************************************************************* 557** 558** Function RW_T2tSetTagReadOnly 559** 560** Description This function can be called to set the tag in to read only 561** state 562** 563** Parameters: b_hard_lock: To indicate hard lock the tag or not 564** 565** Returns NCI_STATUS_OK, if set readonly operation started. 566** Otherwise, error status. 567** 568*******************************************************************************/ 569NFC_API extern tNFC_STATUS RW_T2tSetTagReadOnly (BOOLEAN b_hard_lock); 570 571/***************************************************************************** 572** 573** Function RW_T2tPresenceCheck 574** 575** Description 576** Check if the tag is still in the field. 577** 578** The RW_T2T_PRESENCE_CHECK_EVT w/ status is used to indicate presence 579** or non-presence. 580** 581** Returns 582** NFC_STATUS_OK, if raw data frame sent 583** NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation 584** NFC_STATUS_FAILED: other error 585** 586*****************************************************************************/ 587NFC_API extern tNFC_STATUS RW_T2tPresenceCheck (void); 588 589/***************************************************************************** 590** 591** Function RW_T2tFormatNDef 592** 593** Description 594** Format Tag content 595** 596** Returns 597** NFC_STATUS_OK, Command sent to format Tag 598** NFC_STATUS_FAILED: otherwise 599** 600*****************************************************************************/ 601tNFC_STATUS RW_T2tFormatNDef (void); 602 603/***************************************************************************** 604** 605** Function RW_T3tDetectNDef 606** 607** Description 608** This function is used to perform NDEF detection on a Type 3 tag, and 609** retrieve the tag's NDEF attribute information (block 0). 610** 611** Before using this API, the application must call RW_SelectTagType to 612** indicate that a Type 3 tag has been activated, and to provide the 613** tag's Manufacture ID (IDm) . 614** 615** Returns 616** NFC_STATUS_OK: ndef detection procedure started 617** NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation 618** NFC_STATUS_FAILED: other error 619** 620*****************************************************************************/ 621NFC_API extern tNFC_STATUS RW_T3tDetectNDef (void); 622 623/***************************************************************************** 624** 625** Function RW_T3tFormatNDef 626** 627** Description 628** Format a type-3 tag for NDEF. 629** 630** Only Felica-Lite tags are supported by this API. The 631** RW_T3T_FORMAT_CPLT_EVT is used to notify the status of the operation. 632** 633** Returns 634** NFC_STATUS_OK: ndef detection procedure started 635** NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation 636** NFC_STATUS_FAILED: other error 637** 638*****************************************************************************/ 639NFC_API extern tNFC_STATUS RW_T3tFormatNDef (void); 640 641/***************************************************************************** 642** 643** Function RW_T3tSetReadOnly 644** 645** Description 646** Set a type-3 tag to Read Only 647** 648** Only Felica-Lite tags are supported by this API. 649** RW_T3tDetectNDef() must be called before using this 650** The RW_T3T_SET_READ_ONLY_CPLT_EVT event will be returned. 651** 652** Returns 653** NFC_STATUS_OK if success 654** NFC_STATUS_FAILED if T3T is busy or other error 655** 656*****************************************************************************/ 657NFC_API extern tNFC_STATUS RW_T3tSetReadOnly (BOOLEAN b_hard_lock); 658 659/***************************************************************************** 660** 661** Function RW_T3tCheckNDef 662** 663** Description 664** Retrieve NDEF contents from a Type3 tag. 665** 666** The RW_T3T_CHECK_EVT event is used to notify the application for each 667** segment of NDEF data received. The RW_T3T_CHECK_CPLT_EVT event is used to 668** notify the application all segments have been received. 669** 670** Before using this API, the RW_T3tDetectNDef function must be called to 671** verify that the tag contains NDEF data, and to retrieve the NDEF 672** attributes. 673** 674** Internally, this command will be separated into multiple Tag 3 Check 675** commands (if necessary) - depending on the tag's Nbr (max number of 676** blocks per read) attribute. 677** 678** Returns 679** NFC_STATUS_OK: check command started 680** NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation 681** NFC_STATUS_FAILED: other error 682** 683*****************************************************************************/ 684NFC_API extern tNFC_STATUS RW_T3tCheckNDef (void); 685 686/***************************************************************************** 687** 688** Function RW_T3tUpdateNDef 689** 690** Description 691** Write NDEF contents to a Type3 tag. 692** 693** The RW_T3T_UPDATE_CPLT_EVT callback event will be used to notify the 694** application of the response. 695** 696** Before using this API, the RW_T3tDetectNDef function must be called to 697** verify that the tag contains NDEF data, and to retrieve the NDEF 698** attributes. 699** 700** Internally, this command will be separated into multiple Tag 3 Update 701** commands (if necessary) - depending on the tag's Nbw (max number of 702** blocks per write) attribute. 703** 704** Returns 705** NFC_STATUS_OK: check command started 706** NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation 707** NFC_STATUS_REFUSED: tag is read-only 708** NFC_STATUS_BUFFER_FULL: len exceeds tag's maximum size 709** NFC_STATUS_FAILED: other error 710** 711*****************************************************************************/ 712NFC_API extern tNFC_STATUS RW_T3tUpdateNDef (UINT32 len, UINT8 *p_data); 713 714/***************************************************************************** 715** 716** Function RW_T3tCheck 717** 718** Description 719** Read (non-NDEF) contents from a Type3 tag. 720** 721** The RW_READ_EVT event is used to notify the application for each 722** segment of NDEF data received. The RW_READ_CPLT_EVT event is used to 723** notify the application all segments have been received. 724** 725** Before using this API, the application must call RW_SelectTagType to 726** indicate that a Type 3 tag has been activated, and to provide the 727** tag's Manufacture ID (IDm) . 728** 729** Returns 730** NFC_STATUS_OK: check command started 731** NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation 732** NFC_STATUS_FAILED: other error 733** 734*****************************************************************************/ 735NFC_API extern tNFC_STATUS RW_T3tCheck (UINT8 num_blocks, tT3T_BLOCK_DESC *t3t_blocks); 736 737/***************************************************************************** 738** 739** Function RW_T3tUpdate 740** 741** Description 742** Write (non-NDEF) contents to a Type3 tag. 743** 744** The RW_WRITE_CPLT_EVT event is used to notify the application all 745** segments have been received. 746** 747** Before using this API, the application must call RW_SelectTagType to 748** indicate that a Type 3 tag has been activated, and to provide the tag's 749** Manufacture ID (IDm) . 750** 751** Returns 752** NFC_STATUS_OK: check command started 753** NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation 754** NFC_STATUS_FAILED: other error 755** 756*****************************************************************************/ 757NFC_API extern tNFC_STATUS RW_T3tUpdate (UINT8 num_blocks, tT3T_BLOCK_DESC *t3t_blocks, UINT8 *p_data); 758 759/***************************************************************************** 760** 761** Function RW_T3tSendRawFrame 762** 763** Description 764** This function is called to send a raw data frame to the peer device. 765** When type 3 tag receives response from peer, the callback function 766** will be called with a RW_T3T_RAW_FRAME_EVT [Table 6]. 767** 768** Before using this API, the application must call RW_SelectTagType to 769** indicate that a Type 3 tag has been activated. 770** 771** The raw frame should be a properly formatted Type 3 tag message. 772** 773** Returns 774** NFC_STATUS_OK, if raw data frame sent 775** NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation 776** NFC_STATUS_FAILED: other error 777** 778*****************************************************************************/ 779NFC_API extern tNFC_STATUS RW_T3tSendRawFrame (UINT16 len, UINT8 *p_data); 780 781/***************************************************************************** 782** 783** Function RW_T3tPoll 784** 785** Description 786** Send POLL command 787** 788** Returns 789** NFC_STATUS_OK, if raw data frame sent 790** NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation 791** NFC_STATUS_FAILED: other error 792** 793*****************************************************************************/ 794NFC_API extern tNFC_STATUS RW_T3tPoll (UINT16 system_code, tT3T_POLL_RC rc, UINT8 tsn); 795 796/***************************************************************************** 797** 798** Function RW_T3tPresenceCheck 799** 800** Description 801** Check if the tag is still in the field. 802** 803** The RW_T3T_PRESENCE_CHECK_EVT w/ status is used to indicate presence 804** or non-presence. 805** 806** Returns 807** NFC_STATUS_OK, if raw data frame sent 808** NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation 809** NFC_STATUS_FAILED: other error 810** 811*****************************************************************************/ 812NFC_API extern tNFC_STATUS RW_T3tPresenceCheck (void); 813 814/***************************************************************************** 815** 816** Function RW_T3tGetSystemCodes 817** 818** Description 819** Get systems codes supported by the activated tag: 820** Poll for wildcard (FFFF): 821** - If felica-lite code then poll for ndef (12fc) 822** - Otherwise send RequestSystmCode command to get 823** system codes. 824** 825** Before using this API, the application must call RW_SelectTagType to 826** indicate that a Type 3 tag has been activated. 827** 828** Returns 829** NFC_STATUS_OK, if raw data frame sent 830** NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation 831** NFC_STATUS_FAILED: other error 832** 833*****************************************************************************/ 834NFC_API extern tNFC_STATUS RW_T3tGetSystemCodes (void); 835 836/******************************************************************************* 837** 838** Function RW_T4tDetectNDef 839** 840** Description This function performs NDEF detection procedure 841** 842** RW_T4T_NDEF_DETECT_EVT will be returned 843** 844** Returns NFC_STATUS_OK if success 845** NFC_STATUS_FAILED if T4T is busy or other error 846** 847*******************************************************************************/ 848NFC_API extern tNFC_STATUS RW_T4tDetectNDef (void); 849 850/******************************************************************************* 851** 852** Function RW_T4tReadNDef 853** 854** Description This function performs NDEF read procedure 855** Note: RW_T4tDetectNDef() must be called before using this 856** 857** The following event will be returned 858** RW_T4T_NDEF_READ_EVT for each segmented NDEF message 859** RW_T4T_NDEF_READ_CPLT_EVT for the last segment or complete NDEF 860** RW_T4T_NDEF_READ_FAIL_EVT for failure 861** 862** Returns NFC_STATUS_OK if success 863** NFC_STATUS_FAILED if T4T is busy or other error 864** 865*******************************************************************************/ 866NFC_API extern tNFC_STATUS RW_T4tReadNDef (void); 867 868/******************************************************************************* 869** 870** Function RW_T4tUpdateNDef 871** 872** Description This function performs NDEF update procedure 873** Note: RW_T4tDetectNDef() must be called before using this 874** Updating data must not be removed until returning event 875** 876** The following event will be returned 877** RW_T4T_NDEF_UPDATE_CPLT_EVT for complete 878** RW_T4T_NDEF_UPDATE_FAIL_EVT for failure 879** 880** Returns NFC_STATUS_OK if success 881** NFC_STATUS_FAILED if T4T is busy or other error 882** 883*******************************************************************************/ 884NFC_API extern tNFC_STATUS RW_T4tUpdateNDef (UINT16 length, UINT8 *p_data); 885 886/***************************************************************************** 887** 888** Function RW_T4tPresenceCheck 889** 890** Description 891** Check if the tag is still in the field. 892** 893** The RW_T4T_PRESENCE_CHECK_EVT w/ status is used to indicate presence 894** or non-presence. 895** 896** Returns 897** NFC_STATUS_OK, if raw data frame sent 898** NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation 899** NFC_STATUS_FAILED: other error 900** 901*****************************************************************************/ 902NFC_API extern tNFC_STATUS RW_T4tPresenceCheck (void); 903 904/***************************************************************************** 905** 906** Function RW_T4tSetNDefReadOnly 907** 908** Description This function performs NDEF read-only procedure 909** Note: RW_T4tDetectNDef() must be called before using this 910** 911** The RW_T4T_SET_TO_RO_EVT event will be returned. 912** 913** Returns NFC_STATUS_OK if success 914** NFC_STATUS_FAILED if T4T is busy or other error 915** 916*****************************************************************************/ 917NFC_API extern tNFC_STATUS RW_T4tSetNDefReadOnly (void); 918 919/******************************************************************************* 920** 921** Function RW_I93Inventory 922** 923** Description This function send Inventory command with/without AFI 924** If UID is provided then set UID[0]:MSB, ... UID[7]:LSB 925** 926** RW_I93_RESPONSE_EVT will be returned 927** 928** Returns NFC_STATUS_OK if success 929** NFC_STATUS_NO_BUFFERS if out of buffer 930** NFC_STATUS_FAILED if T4T is busy or other error 931** 932*******************************************************************************/ 933NFC_API extern tNFC_STATUS RW_I93Inventory (BOOLEAN including_afi, UINT8 afi, UINT8 *p_uid); 934 935/******************************************************************************* 936** 937** Function RW_I93StayQuiet 938** 939** Description This function send Inventory command 940** 941** RW_I93_CMD_CMPL_EVT will be returned 942** 943** Returns NFC_STATUS_OK if success 944** NFC_STATUS_NO_BUFFERS if out of buffer 945** NFC_STATUS_BUSY if busy 946** NFC_STATUS_FAILED if other error 947** 948*******************************************************************************/ 949NFC_API extern tNFC_STATUS RW_I93StayQuiet (void); 950 951/******************************************************************************* 952** 953** Function RW_I93ReadSingleBlock 954** 955** Description This function send Read Single Block command 956** 957** RW_I93_RESPONSE_EVT will be returned 958** 959** Returns NFC_STATUS_OK if success 960** NFC_STATUS_NO_BUFFERS if out of buffer 961** NFC_STATUS_BUSY if busy 962** NFC_STATUS_FAILED if other error 963** 964*******************************************************************************/ 965NFC_API extern tNFC_STATUS RW_I93ReadSingleBlock (UINT16 block_number); 966 967/******************************************************************************* 968** 969** Function RW_I93WriteSingleBlock 970** 971** Description This function send Write Single Block command 972** Application must get block size first by calling RW_I93GetSysInfo(). 973** 974** RW_I93_CMD_CMPL_EVT will be returned 975** 976** Returns NFC_STATUS_OK if success 977** NFC_STATUS_NO_BUFFERS if out of buffer 978** NFC_STATUS_BUSY if busy 979** NFC_STATUS_FAILED if other error 980** 981*******************************************************************************/ 982NFC_API extern tNFC_STATUS RW_I93WriteSingleBlock (UINT16 block_number, 983 UINT8 *p_data); 984 985/******************************************************************************* 986** 987** Function RW_I93LockBlock 988** 989** Description This function send Lock Block command 990** 991** RW_I93_CMD_CMPL_EVT will be returned 992** 993** Returns NFC_STATUS_OK if success 994** NFC_STATUS_NO_BUFFERS if out of buffer 995** NFC_STATUS_BUSY if busy 996** NFC_STATUS_FAILED if other error 997** 998*******************************************************************************/ 999NFC_API extern tNFC_STATUS RW_I93LockBlock (UINT8 block_number); 1000 1001/******************************************************************************* 1002** 1003** Function RW_I93ReadMultipleBlocks 1004** 1005** Description This function send Read Multiple Blocks command 1006** 1007** RW_I93_RESPONSE_EVT will be returned 1008** 1009** Returns NFC_STATUS_OK if success 1010** NFC_STATUS_NO_BUFFERS if out of buffer 1011** NFC_STATUS_BUSY if busy 1012** NFC_STATUS_FAILED if other error 1013** 1014*******************************************************************************/ 1015NFC_API extern tNFC_STATUS RW_I93ReadMultipleBlocks (UINT16 first_block_number, 1016 UINT16 number_blocks); 1017 1018/******************************************************************************* 1019** 1020** Function RW_I93WriteMultipleBlocks 1021** 1022** Description This function send Write Multiple Blocks command 1023** 1024** RW_I93_CMD_CMPL_EVT will be returned 1025** 1026** Returns NFC_STATUS_OK if success 1027** NFC_STATUS_NO_BUFFERS if out of buffer 1028** NFC_STATUS_BUSY if busy 1029** NFC_STATUS_FAILED if other error 1030** 1031*******************************************************************************/ 1032NFC_API extern tNFC_STATUS RW_I93WriteMultipleBlocks (UINT8 first_block_number, 1033 UINT16 number_blocks, 1034 UINT8 *p_data); 1035 1036/******************************************************************************* 1037** 1038** Function RW_I93Select 1039** 1040** Description This function send Select command 1041** 1042** UID[0]: 0xE0, MSB 1043** UID[1]: IC Mfg Code 1044** ... 1045** UID[7]: LSB 1046** 1047** RW_I93_CMD_CMPL_EVT will be returned 1048** 1049** Returns NFC_STATUS_OK if success 1050** NFC_STATUS_NO_BUFFERS if out of buffer 1051** NFC_STATUS_BUSY if busy 1052** NFC_STATUS_FAILED if other error 1053** 1054*******************************************************************************/ 1055NFC_API extern tNFC_STATUS RW_I93Select (UINT8 *p_uid); 1056 1057/******************************************************************************* 1058** 1059** Function RW_I93ResetToReady 1060** 1061** Description This function send Reset To Ready command 1062** 1063** RW_I93_CMD_CMPL_EVT will be returned 1064** 1065** Returns NFC_STATUS_OK if success 1066** NFC_STATUS_NO_BUFFERS if out of buffer 1067** NFC_STATUS_BUSY if busy 1068** NFC_STATUS_FAILED if other error 1069** 1070*******************************************************************************/ 1071NFC_API extern tNFC_STATUS RW_I93ResetToReady (void); 1072 1073/******************************************************************************* 1074** 1075** Function RW_I93WriteAFI 1076** 1077** Description This function send Write AFI command 1078** 1079** RW_I93_CMD_CMPL_EVT will be returned 1080** 1081** Returns NFC_STATUS_OK if success 1082** NFC_STATUS_NO_BUFFERS if out of buffer 1083** NFC_STATUS_BUSY if busy 1084** NFC_STATUS_FAILED if other error 1085** 1086*******************************************************************************/ 1087NFC_API extern tNFC_STATUS RW_I93WriteAFI (UINT8 afi); 1088 1089/******************************************************************************* 1090** 1091** Function RW_I93LockAFI 1092** 1093** Description This function send Lock AFI command 1094** 1095** RW_I93_CMD_CMPL_EVT will be returned 1096** 1097** Returns NFC_STATUS_OK if success 1098** NFC_STATUS_NO_BUFFERS if out of buffer 1099** NFC_STATUS_BUSY if busy 1100** NFC_STATUS_FAILED if other error 1101** 1102*******************************************************************************/ 1103NFC_API extern tNFC_STATUS RW_I93LockAFI (void); 1104 1105/******************************************************************************* 1106** 1107** Function RW_I93WriteDSFID 1108** 1109** Description This function send Write DSFID command 1110** 1111** RW_I93_CMD_CMPL_EVT will be returned 1112** 1113** Returns NFC_STATUS_OK if success 1114** NFC_STATUS_NO_BUFFERS if out of buffer 1115** NFC_STATUS_BUSY if busy 1116** NFC_STATUS_FAILED if other error 1117** 1118*******************************************************************************/ 1119NFC_API extern tNFC_STATUS RW_I93WriteDSFID (UINT8 dsfid); 1120 1121/******************************************************************************* 1122** 1123** Function RW_I93LockDSFID 1124** 1125** Description This function send Lock DSFID command 1126** 1127** RW_I93_CMD_CMPL_EVT will be returned 1128** 1129** Returns NFC_STATUS_OK if success 1130** NFC_STATUS_NO_BUFFERS if out of buffer 1131** NFC_STATUS_BUSY if busy 1132** NFC_STATUS_FAILED if other error 1133** 1134*******************************************************************************/ 1135NFC_API extern tNFC_STATUS RW_I93LockDSFID (void); 1136 1137/******************************************************************************* 1138** 1139** Function RW_I93GetSysInfo 1140** 1141** Description This function send Get System Information command 1142** If UID is provided then set UID[0]:MSB, ... UID[7]:LSB 1143** 1144** RW_I93_RESPONSE_EVT will be returned 1145** 1146** Returns NFC_STATUS_OK if success 1147** NFC_STATUS_NO_BUFFERS if out of buffer 1148** NFC_STATUS_BUSY if busy 1149** NFC_STATUS_FAILED if other error 1150** 1151*******************************************************************************/ 1152NFC_API extern tNFC_STATUS RW_I93GetSysInfo (UINT8 *p_uid); 1153 1154/******************************************************************************* 1155** 1156** Function RW_I93GetMultiBlockSecurityStatus 1157** 1158** Description This function send Get Multiple Block Security Status command 1159** 1160** RW_I93_RESPONSE_EVT will be returned 1161** 1162** Returns NFC_STATUS_OK if success 1163** NFC_STATUS_NO_BUFFERS if out of buffer 1164** NFC_STATUS_BUSY if busy 1165** NFC_STATUS_FAILED if other error 1166** 1167*******************************************************************************/ 1168NFC_API extern tNFC_STATUS RW_I93GetMultiBlockSecurityStatus (UINT16 first_block_number, 1169 UINT16 number_blocks); 1170 1171/******************************************************************************* 1172** 1173** Function RW_I93DetectNDef 1174** 1175** Description This function performs NDEF detection procedure 1176** 1177** RW_I93_NDEF_DETECT_EVT will be returned 1178** 1179** Returns NFC_STATUS_OK if success 1180** NFC_STATUS_FAILED if busy or other error 1181** 1182*******************************************************************************/ 1183NFC_API extern tNFC_STATUS RW_I93DetectNDef (void); 1184 1185/******************************************************************************* 1186** 1187** Function RW_I93ReadNDef 1188** 1189** Description This function performs NDEF read procedure 1190** Note: RW_I93DetectNDef() must be called before using this 1191** 1192** The following event will be returned 1193** RW_I93_NDEF_READ_EVT for each segmented NDEF message 1194** RW_I93_NDEF_READ_CPLT_EVT for the last segment or complete NDEF 1195** RW_I93_NDEF_READ_FAIL_EVT for failure 1196** 1197** Returns NFC_STATUS_OK if success 1198** NFC_STATUS_FAILED if I93 is busy or other error 1199** 1200*******************************************************************************/ 1201NFC_API extern tNFC_STATUS RW_I93ReadNDef (void); 1202 1203/******************************************************************************* 1204** 1205** Function RW_I93UpdateNDef 1206** 1207** Description This function performs NDEF update procedure 1208** Note: RW_I93DetectNDef() must be called before using this 1209** Updating data must not be removed until returning event 1210** 1211** The following event will be returned 1212** RW_I93_NDEF_UPDATE_CPLT_EVT for complete 1213** RW_I93_NDEF_UPDATE_FAIL_EVT for failure 1214** 1215** Returns NFC_STATUS_OK if success 1216** NFC_STATUS_FAILED if I93 is busy or other error 1217** 1218*******************************************************************************/ 1219NFC_API extern tNFC_STATUS RW_I93UpdateNDef (UINT16 length, UINT8 *p_data); 1220 1221/******************************************************************************* 1222** 1223** Function RW_I93FormatNDef 1224** 1225** Description This function performs formatting procedure 1226** 1227** RW_I93_FORMAT_CPLT_EVT will be returned 1228** 1229** Returns NFC_STATUS_OK if success 1230** NFC_STATUS_FAILED if busy or other error 1231** 1232*******************************************************************************/ 1233NFC_API extern tNFC_STATUS RW_I93FormatNDef (void); 1234 1235/******************************************************************************* 1236** 1237** Function RW_I93SetTagReadOnly 1238** 1239** Description This function performs NDEF read-only procedure 1240** Note: RW_I93DetectNDef() must be called before using this 1241** Updating data must not be removed until returning event 1242** 1243** The RW_I93_SET_TAG_RO_EVT event will be returned. 1244** 1245** Returns NFC_STATUS_OK if success 1246** NFC_STATUS_FAILED if I93 is busy or other error 1247** 1248*******************************************************************************/ 1249NFC_API extern tNFC_STATUS RW_I93SetTagReadOnly (void); 1250 1251/***************************************************************************** 1252** 1253** Function RW_I93PresenceCheck 1254** 1255** Description Check if the tag is still in the field. 1256** 1257** The RW_I93_PRESENCE_CHECK_EVT w/ status is used to indicate 1258** presence or non-presence. 1259** 1260** Returns NFC_STATUS_OK, if raw data frame sent 1261** NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation 1262** NFC_STATUS_FAILED: other error 1263** 1264*****************************************************************************/ 1265NFC_API extern tNFC_STATUS RW_I93PresenceCheck (void); 1266 1267/******************************************************************************* 1268** 1269** Function RW_SendRawFrame 1270** 1271** Description This function sends a raw frame to the peer device. 1272** 1273** Returns tNFC_STATUS 1274** 1275*******************************************************************************/ 1276NFC_API extern tNFC_STATUS RW_SendRawFrame (UINT8 *p_raw_data, UINT16 data_len); 1277 1278/******************************************************************************* 1279** 1280** Function RW_SetActivatedTagType 1281** 1282** Description This function sets tag type for Reader/Writer mode. 1283** 1284** Returns tNFC_STATUS 1285** 1286*******************************************************************************/ 1287NFC_API extern tNFC_STATUS RW_SetActivatedTagType (tNFC_ACTIVATE_DEVT *p_activate_params, tRW_CBACK *p_cback); 1288 1289/******************************************************************************* 1290** 1291** Function RW_SetTraceLevel 1292** 1293** Description This function sets the trace level for Reader/Writer mode. 1294** If called with a value of 0xFF, 1295** it simply returns the current trace level. 1296** 1297** Returns The new or current trace level 1298** 1299*******************************************************************************/ 1300NFC_API extern UINT8 RW_SetTraceLevel (UINT8 new_level); 1301 1302#endif /* RW_API_H */ 1303