nfa_api.h revision 67aef6c6c6f6bc7b8364b97949e874b9dc7175bc
1/****************************************************************************** 2 * 3 * Copyright (C) 2010-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 is the public interface file for NFA, Broadcom's NFC application 23 * layer for mobile phones. 24 * 25 ******************************************************************************/ 26#ifndef NFA_API_H 27#define NFA_API_H 28 29#include "nfc_target.h" 30#include "nci_defs.h" 31#include "tags_defs.h" 32#include "nfc_api.h" 33#include "rw_api.h" 34#include "nfc_hal_api.h" 35#include "gki.h" 36 37 38/***************************************************************************** 39** Constants and data types 40*****************************************************************************/ 41 42/* Max length of Appliction ID in 7816-4 */ 43#define NFA_MAX_AID_LEN NFC_MAX_AID_LEN 44#define NFA_MIN_AID_LEN 5 /* per NCI specification */ 45 46/* NFA API return status codes */ 47#define NFA_STATUS_OK NCI_STATUS_OK /* Command succeeded */ 48#define NFA_STATUS_REJECTED NCI_STATUS_REJECTED /* Command is rejected. */ 49#define NFA_STATUS_MSG_CORRUPTED NCI_STATUS_MESSAGE_CORRUPTED /* Message is corrupted */ 50#define NFA_STATUS_BUFFER_FULL NCI_STATUS_BUFFER_FULL /* buffer full */ 51#define NFA_STATUS_FAILED NCI_STATUS_FAILED /* failed */ 52#define NFA_STATUS_NOT_INITIALIZED NCI_STATUS_NOT_INITIALIZED /* not initialized */ 53#define NFA_STATUS_SYNTAX_ERROR NCI_STATUS_SYNTAX_ERROR /* Syntax error */ 54#define NFA_STATUS_SEMANTIC_ERROR NCI_STATUS_SEMANTIC_ERROR /* Semantic error */ 55#define NFA_STATUS_UNKNOWN_GID NCI_STATUS_UNKNOWN_GID /* Unknown NCI Group ID */ 56#define NFA_STATUS_UNKNOWN_OID NCI_STATUS_UNKNOWN_OID /* Unknown NCI Opcode */ 57#define NFA_STATUS_INVALID_PARAM NCI_STATUS_INVALID_PARAM /* Invalid Parameter */ 58#define NFA_STATUS_MSG_SIZE_TOO_BIG NCI_STATUS_MSG_SIZE_TOO_BIG /* Message size too big */ 59#define NFA_STATUS_ALREADY_STARTED NCI_STATUS_ALREADY_STARTED /* Already started */ 60#define NFA_STATUS_ACTIVATION_FAILED NCI_STATUS_ACTIVATION_FAILED /* Activation Failed */ 61#define NFA_STATUS_TEAR_DOWN NCI_STATUS_TEAR_DOWN /* Tear Down Error */ 62#define NFA_STATUS_RF_TRANSMISSION_ERR NCI_STATUS_RF_TRANSMISSION_ERR /* RF transmission error*/ 63#define NFA_STATUS_RF_PROTOCOL_ERR NCI_STATUS_RF_PROTOCOL_ERR /* RF protocol error */ 64#define NFA_STATUS_TIMEOUT NCI_STATUS_TIMEOUT /* RF Timeout */ 65#define NFA_STATUS_EE_INTF_ACTIVE_FAIL NCI_STATUS_EE_INTF_ACTIVE_FAIL /* EE Intf activate err */ 66#define NFA_STATUS_EE_TRANSMISSION_ERR NCI_STATUS_EE_TRANSMISSION_ERR /* EE transmission error*/ 67#define NFA_STATUS_EE_PROTOCOL_ERR NCI_STATUS_EE_PROTOCOL_ERR /* EE protocol error */ 68#define NFA_STATUS_EE_TIMEOUT NCI_STATUS_EE_TIMEOUT /* EE Timeout */ 69 70#define NFA_STATUS_CMD_STARTED NFC_STATUS_CMD_STARTED /* Command started successfully */ 71#define NFA_STATUS_HW_TIMEOUT NFC_STATUS_HW_TIMEOUT /* NFCC Timeout in responding to an NCI command */ 72#define NFA_STATUS_CONTINUE NFC_STATUS_CONTINUE /* More NFA_CE_GET_ROUTING_REVT to follow */ 73#define NFA_STATUS_REFUSED NFC_STATUS_REFUSED /* API is called to perform illegal function */ 74#define NFA_STATUS_BAD_RESP NFC_STATUS_BAD_RESP /* Wrong format of R-APDU, CC file or NDEF file */ 75#define NFA_STATUS_CMD_NOT_CMPLTD NFC_STATUS_CMD_NOT_CMPLTD /* 7816 Status Word is not command complete(0x9000) */ 76#define NFA_STATUS_NO_BUFFERS NFC_STATUS_NO_BUFFERS /* Out of GKI buffers */ 77#define NFA_STATUS_WRONG_PROTOCOL NFC_STATUS_WRONG_PROTOCOL /* Protocol mismatch between API and activated one */ 78#define NFA_STATUS_BUSY NFC_STATUS_BUSY /* Another Tag command is already in progress */ 79 80#define NFA_STATUS_BAD_LENGTH NFC_STATUS_BAD_LENGTH /* data len exceeds MIU */ 81#define NFA_STATUS_BAD_HANDLE NFC_STATUS_BAD_HANDLE /* invalid handle */ 82#define NFA_STATUS_CONGESTED NFC_STATUS_CONGESTED /* congested */ 83typedef UINT8 tNFA_STATUS; 84 85/* Handle for NFA registrations and connections */ 86typedef UINT16 tNFA_HANDLE; 87#define NFA_HANDLE_INVALID (0xFFFF) 88/* NFA Handle definitions */ 89 90/* The upper byte of NFA_HANDLE signifies the handle group */ 91#define NFA_HANDLE_GROUP_CONNECTION 0x0100 /* Connection handles */ 92#define NFA_HANDLE_GROUP_NDEF_HANDLER 0x0200 /* NDEF Type Handler handles */ 93#define NFA_HANDLE_GROUP_CE 0x0300 /* DH Card Emulation handles */ 94#define NFA_HANDLE_GROUP_EE 0x0400 /* Handles to identify NFCEE */ 95#define NFA_HANDLE_GROUP_P2P 0x0500 /* P2P handles */ 96#define NFA_HANDLE_GROUP_CHO 0x0600 /* Connection Handvoer handles */ 97#define NFA_HANDLE_GROUP_SNEP 0x0700 /* SNEP handles */ 98#define NFA_HANDLE_GROUP_HCI 0x0800 /* HCI handles */ 99#define NFA_HANDLE_GROUP_LOCAL_NDEF 0x0900 /* Local NDEF message handle */ 100#define NFA_HANDLE_GROUP_MASK 0xFF00 101#define NFA_HANDLE_MASK 0x00FF 102 103/* NCI Parameter IDs */ 104typedef UINT8 tNFA_PMID; 105 106/* Definitions for tNFA_TECHNOLOGY_MASK */ 107#define NFA_TECHNOLOGY_MASK_A 0x01 /* NFC Technology A */ 108#define NFA_TECHNOLOGY_MASK_B 0x02 /* NFC Technology B */ 109#define NFA_TECHNOLOGY_MASK_F 0x04 /* NFC Technology F */ 110#define NFA_TECHNOLOGY_MASK_ISO15693 0x08 /* Proprietary Technology */ 111#define NFA_TECHNOLOGY_MASK_B_PRIME 0x10 /* Proprietary Technology */ 112#define NFA_TECHNOLOGY_MASK_KOVIO 0x20 /* Proprietary Technology */ 113#define NFA_TECHNOLOGY_MASK_A_ACTIVE 0x40 /* NFC Technology A active mode */ 114#define NFA_TECHNOLOGY_MASK_F_ACTIVE 0x80 /* NFC Technology F active mode */ 115#define NFA_TECHNOLOGY_MASK_ALL 0xFF /* All supported technologies */ 116typedef UINT8 tNFA_TECHNOLOGY_MASK; 117 118/* Definitions for NFC protocol for RW, CE and P2P APIs */ 119#define NFA_PROTOCOL_T1T NFC_PROTOCOL_T1T /* Type1Tag - NFC-A */ 120#define NFA_PROTOCOL_T2T NFC_PROTOCOL_T2T /* MIFARE/Type2Tag - NFC-A */ 121#define NFA_PROTOCOL_T3T NFC_PROTOCOL_T3T /* Felica/Type3Tag - NFC-F */ 122#define NFA_PROTOCOL_ISO_DEP NFC_PROTOCOL_ISO_DEP /* Type 4A,4B - NFC-A or NFC-B */ 123#define NFA_PROTOCOL_NFC_DEP NFC_PROTOCOL_NFC_DEP /* NFCDEP/LLCP - NFC-A or NFC-F */ 124#define NFA_PROTOCOL_ISO15693 NFC_PROTOCOL_15693 125#define NFA_PROTOCOL_B_PRIME NFC_PROTOCOL_B_PRIME 126#define NFA_PROTOCOL_KOVIO NFC_PROTOCOL_KOVIO 127#define NFA_PROTOCOL_INVALID 0xFF 128#define NFA_MAX_NUM_PROTOCOLS 8 129typedef UINT8 tNFA_NFC_PROTOCOL; 130 131/* Definitions for tNFA_PROTOCOL_MASK */ 132#define NFA_PROTOCOL_MASK_T1T 0x01 /* Type 1 tag */ 133#define NFA_PROTOCOL_MASK_T2T 0x02 /* MIFARE / Type 2 tag */ 134#define NFA_PROTOCOL_MASK_T3T 0x04 /* FeliCa / Type 3 tag */ 135#define NFA_PROTOCOL_MASK_ISO_DEP 0x08 /* ISODEP/4A,4B */ 136#define NFA_PROTOCOL_MASK_NFC_DEP 0x10 /* NFCDEP/LLCP */ 137typedef UINT8 tNFA_PROTOCOL_MASK; 138 139 140/* NFA_DM callback events */ 141#define NFA_DM_ENABLE_EVT 0 /* Result of NFA_Enable */ 142#define NFA_DM_DISABLE_EVT 1 /* Result of NFA_Disable */ 143#define NFA_DM_SET_CONFIG_EVT 2 /* Result of NFA_SetConfig */ 144#define NFA_DM_GET_CONFIG_EVT 3 /* Result of NFA_GetConfig */ 145#define NFA_DM_PWR_MODE_CHANGE_EVT 4 /* Result of NFA_PowerOffSleepMode */ 146#define NFA_DM_RF_FIELD_EVT 5 /* Status of RF Field */ 147#define NFA_DM_NFCC_TIMEOUT_EVT 6 /* NFCC is not responding */ 148#define NFA_DM_NFCC_TRANSPORT_ERR_EVT 7 /* NCI Tranport error */ 149 150#define NFA_DM_MAX_UICC 2 /* Max number of UICC */ 151 152#define NFA_T1T_HR_LEN T1T_HR_LEN /* T1T HR length */ 153#define NFA_MAX_UID_LEN TAG_MAX_UID_LEN /* Max UID length of T1/T2 */ 154#define NFA_T1T_UID_LEN T1T_UID_LEN /* T1T UID length */ 155#define NFA_T1T_CMD_UID_LEN T1T_CMD_UID_LEN /* UID len for T1T cmds */ 156#define NFA_T2T_UID_LEN T2T_UID_LEN /* T2T UID length */ 157 158#define NFA_RW_NDEF_FL_READ_ONLY RW_NDEF_FL_READ_ONLY /* Tag is read only */ 159#define NFA_RW_NDEF_FL_FORMATED RW_NDEF_FL_FORMATED /* Tag formated for NDEF */ 160#define NFA_RW_NDEF_FL_SUPPORTED RW_NDEF_FL_SUPPORTED /* NDEF supported by the tag */ 161#define NFA_RW_NDEF_FL_UNKNOWN RW_NDEF_FL_UNKNOWN /* Unable to find if tag is ndef capable/formated/read only */ 162#define NFA_RW_NDEF_FL_FORMATABLE RW_NDEF_FL_FORMATABLE /* Tag supports format operation */ 163#define NFA_RW_NDEF_FL_SOFT_LOCKABLE RW_NDEF_FL_SOFT_LOCKABLE /* Tag can be soft locked */ 164#define NFA_RW_NDEF_FL_HARD_LOCKABLE RW_NDEF_FL_HARD_LOCKABLE /* Tag can be hard locked */ 165#define NFA_RW_NDEF_FL_OTP RW_NDEF_FL_OTP /* Tag is one time programmable */ 166 167typedef UINT8 tNFA_RW_NDEF_FLAG; 168 169/* Data for NFA_DM_SET_CONFIG_EVT */ 170typedef struct 171{ 172 tNFA_STATUS status; /* NFA_STATUS_OK if successful */ 173 UINT8 num_param_id; /* Number of rejected Param ID */ 174 tNFA_PMID param_ids[NFC_MAX_NUM_IDS]; /* Rejected Param ID */ 175} tNFA_SET_CONFIG; 176 177/* Data for NFA_DM_GET_CONFIG_EVT */ 178typedef struct 179{ 180 tNFA_STATUS status; /* NFA_STATUS_OK if successful */ 181 UINT16 tlv_size; /* The length of TLV */ 182 UINT8 param_tlvs[1]; /* TLV (Parameter ID-Len-Value byte stream) */ 183} tNFA_GET_CONFIG; 184 185#define NFA_DM_PWR_MODE_FULL 0x04 186#define NFA_DM_PWR_MODE_OFF_SLEEP 0x00 187 188typedef UINT8 tNFA_DM_PWR_MODE; 189 190/* Data for NFA_DM_PWR_MODE_CHANGE_EVT */ 191typedef struct 192{ 193 tNFA_STATUS status; /* NFA_STATUS_OK if successful */ 194 tNFA_DM_PWR_MODE power_mode; /* NFA_DM_PWR_MODE_FULL or NFA_DM_PWR_MODE_OFF_SLEEP */ 195} tNFA_DM_PWR_MODE_CHANGE; 196 197/* Data for NFA_DM_RF_FIELD_EVT */ 198#define NFA_DM_RF_FIELD_OFF 0x00 199#define NFA_DM_RF_FIELD_ON 0x01 200 201typedef struct 202{ 203 tNFA_STATUS status; /* NFA_STATUS_OK if successful */ 204 UINT8 rf_field_status;/* NFA_DM_RF_FIELD_ON if operating field generated by remote */ 205} tNFA_DM_RF_FIELD; 206 207/* Union of all DM callback structures */ 208typedef union 209{ 210 tNFA_STATUS status; /* NFA_DM_ENABLE_EVT */ 211 tNFA_SET_CONFIG set_config; /* NFA_DM_SET_CONFIG_EVT */ 212 tNFA_GET_CONFIG get_config; /* NFA_DM_GET_CONFIG_EVT */ 213 tNFA_DM_PWR_MODE_CHANGE power_mode; /* NFA_DM_PWR_MODE_CHANGE_EVT */ 214 tNFA_DM_RF_FIELD rf_field; /* NFA_DM_RF_FIELD_EVT */ 215 void *p_vs_evt_data; /* Vendor-specific evt data */ 216} tNFA_DM_CBACK_DATA; 217 218/* NFA_DM callback */ 219typedef void (tNFA_DM_CBACK) (UINT8 event, tNFA_DM_CBACK_DATA *p_data); 220 221 222/* NFA Connection Callback Events */ 223#define NFA_POLL_ENABLED_EVT 0 /* Polling enabled event */ 224#define NFA_POLL_DISABLED_EVT 1 /* Polling disabled event */ 225#define NFA_DISC_RESULT_EVT 2 /* NFC link/protocol discovery notificaiton */ 226#define NFA_SELECT_RESULT_EVT 3 /* NFC link/protocol discovery select response */ 227#define NFA_DEACTIVATE_FAIL_EVT 4 /* NFA_Deactivate failure */ 228#define NFA_ACTIVATED_EVT 5 /* NFC link/protocol activated */ 229#define NFA_DEACTIVATED_EVT 6 /* NFC link/protocol deactivated */ 230#define NFA_TLV_DETECT_EVT 7 /* TLV Detection complete */ 231#define NFA_NDEF_DETECT_EVT 8 /* NDEF Detection complete */ 232#define NFA_DATA_EVT 9 /* Data message received */ 233#define NFA_SELECT_CPLT_EVT 10 /* Select completed */ 234#define NFA_READ_CPLT_EVT 11 /* Read completed */ 235#define NFA_WRITE_CPLT_EVT 12 /* Write completed */ 236#define NFA_LLCP_ACTIVATED_EVT 13 /* LLCP link is activated */ 237#define NFA_LLCP_DEACTIVATED_EVT 14 /* LLCP link is deactivated */ 238#define NFA_PRESENCE_CHECK_EVT 15 /* Response to NFA_RwPresenceCheck */ 239#define NFA_FORMAT_CPLT_EVT 16 /* Tag Formating completed */ 240#define NFA_I93_CMD_CPLT_EVT 17 /* ISO 15693 command completed */ 241#define NFA_SET_TAG_RO_EVT 18 /* Tag set as Read only */ 242#define NFA_EXCLUSIVE_RF_CONTROL_STARTED_EVT 19 /* Result for NFA_RequestExclusiveRfControl */ 243#define NFA_EXCLUSIVE_RF_CONTROL_STOPPED_EVT 20 /* Result for NFA_ReleaseExclusiveRfControl */ 244#define NFA_CE_REGISTERED_EVT 21 /* DH Card emulation: AID or System code reg'd */ 245#define NFA_CE_DEREGISTERED_EVT 22 /* DH Card emulation: AID or System code dereg'd*/ 246#define NFA_CE_DATA_EVT 23 /* DH Card emulation: data received event */ 247#define NFA_CE_ACTIVATED_EVT 24 /* DH Card emulation: activation event */ 248#define NFA_CE_DEACTIVATED_EVT 25 /* DH Card emulation: deactivation event */ 249#define NFA_CE_LOCAL_TAG_CONFIGURED_EVT 26 /* DH Card emulation: local NDEF configured */ 250#define NFA_CE_NDEF_WRITE_START_EVT 27 /* DH Card emulation: NDEF write started */ 251#define NFA_CE_NDEF_WRITE_CPLT_EVT 28 /* DH Card emulation: NDEF write completed */ 252#define NFA_CE_UICC_LISTEN_CONFIGURED_EVT 29 /* UICC Listen configured */ 253#define NFA_RF_DISCOVERY_STARTED_EVT 30 /* RF Discovery started event */ 254#define NFA_RF_DISCOVERY_STOPPED_EVT 31 /* RF Discovery stopped event */ 255#define NFA_UPDATE_RF_PARAM_RESULT_EVT 32 /* status of updating RF communication paramters*/ 256#define NFA_SET_P2P_LISTEN_TECH_EVT 33 /* status of setting P2P listen technologies */ 257#define NFA_RW_INTF_ERROR_EVT 34 /* RF Interface error event */ 258#define NFA_LLCP_FIRST_PACKET_RECEIVED_EVT 35 /* First packet received over LLCP link */ 259#define NFA_LISTEN_ENABLED_EVT 36 /* Listening enabled event */ 260#define NFA_LISTEN_DISABLED_EVT 37 /* Listening disabled event */ 261#define NFA_P2P_PAUSED_EVT 38 /* P2P services paused event */ 262#define NFA_P2P_RESUMED_EVT 39 /* P2P services resumed event */ 263 264/* NFC deactivation type */ 265#define NFA_DEACTIVATE_TYPE_IDLE NFC_DEACTIVATE_TYPE_IDLE 266#define NFA_DEACTIVATE_TYPE_SLEEP NFC_DEACTIVATE_TYPE_SLEEP 267#define NFA_DEACTIVATE_TYPE_DISCOVERY NFC_DEACTIVATE_TYPE_DISCOVERY 268 269typedef UINT8 tNFA_DEACTIVATE_TYPE; 270 271/* Data for NFA_DISC_RESULT_EVT */ 272typedef struct 273{ 274 tNFA_STATUS status; /* NFA_STATUS_OK if successful */ 275 tNFC_RESULT_DEVT discovery_ntf; /* RF discovery notification details */ 276} tNFA_DISC_RESULT; 277 278/* Data for NFA_ACTIVATED_EVT */ 279typedef struct 280{ 281 UINT8 hr[NFA_T1T_HR_LEN]; /* HR of Type 1 tag */ 282 UINT8 uid[NFA_T1T_CMD_UID_LEN]; /* UID used in T1T Commands */ 283} tNFA_T1T_PARAMS; 284 285typedef struct 286{ 287 UINT8 uid[NFA_MAX_UID_LEN]; /* UID of T2T tag */ 288} tNFA_T2T_PARAMS; 289 290typedef struct 291{ 292 UINT8 num_system_codes; /* Number of system codes supporte by tag */ 293 UINT16 *p_system_codes; /* Pointer to list of system codes */ 294} tNFA_T3T_PARAMS; 295 296typedef struct 297{ 298 UINT8 uid[I93_UID_BYTE_LEN]; /* UID[0]:MSB, ... UID[7]:LSB */ 299 UINT8 info_flags; /* information flags */ 300 UINT8 dsfid; /* DSFID if I93_INFO_FLAG_DSFID */ 301 UINT8 afi; /* AFI if I93_INFO_FLAG_AFI */ 302 UINT16 num_block; /* number of blocks if I93_INFO_FLAG_MEM_SIZE */ 303 UINT8 block_size; /* block size in byte if I93_INFO_FLAG_MEM_SIZE */ 304 UINT8 IC_reference; /* IC Reference if I93_INFO_FLAG_IC_REF */ 305} tNFA_I93_PARAMS; 306 307typedef union 308{ 309 tNFA_T1T_PARAMS t1t; /* HR and UID of T1T */ 310 tNFA_T2T_PARAMS t2t; /* UID of T2T */ 311 tNFA_T3T_PARAMS t3t; /* System codes */ 312 tNFA_I93_PARAMS i93; /* System Information of ISO 15693 */ 313} tNFA_TAG_PARAMS; 314 315typedef struct 316{ 317 tNFC_ACTIVATE_DEVT activate_ntf; /* RF discovery activation details */ 318 tNFA_TAG_PARAMS params; /* additional informaiton of tag */ 319} tNFA_ACTIVATED; 320 321/* Data for NFA_DEACTIVATED_EVT */ 322typedef struct 323{ 324 tNFA_DEACTIVATE_TYPE type; /* NFA_DEACTIVATE_TYPE_IDLE or NFA_DEACTIVATE_TYPE_SLEEP */ 325} tNFA_DEACTIVATED; 326 327/* Structure for NFA_NDEF_DETECT_EVT event data */ 328typedef struct 329{ 330 tNFA_STATUS status; /* Status of the ndef detecton */ 331 tNFA_NFC_PROTOCOL protocol; /* protocol used to detect NDEF */ 332 UINT32 max_size; /* max number of bytes available for NDEF data */ 333 UINT32 cur_size; /* current size of stored NDEF data (in bytes) */ 334 tNFA_RW_NDEF_FLAG flags; /* Flags to indicate NDEF capability, is formated, soft/hard lockable, formatable, otp and read only */ 335} tNFA_NDEF_DETECT; 336 337 338/* Structure for NFA_TLV_DETECT_EVT event data */ 339typedef struct 340{ 341 tNFA_STATUS status; /* Status of the tlv detecton */ 342 tNFA_NFC_PROTOCOL protocol; /* protocol used to detect TLV */ 343 UINT8 num_tlvs; /* number of tlvs present in the tag */ 344 UINT8 num_bytes; /* number of lock/reserved bytes */ 345} tNFA_TLV_DETECT; 346 347/* Structure for NFA_DATA_EVT data */ 348typedef struct 349{ 350 UINT8 *p_data; /* Data buffer */ 351 UINT16 len; /* Length of data */ 352} tNFA_RX_DATA; 353 354/* Structure for NFA_CE_NDEF_WRITE_CPLT_EVT data */ 355typedef struct 356{ 357 tNFA_STATUS status; /* Status of the ndef write op */ 358 UINT32 len; /* Update length of NDEF data */ 359 UINT8 *p_data; /* data buffer */ 360} tNFA_CE_NDEF_WRITE_CPLT; 361 362/* Data for NFA_LLCP_ACTIVATED_EVT */ 363typedef struct 364{ 365 BOOLEAN is_initiator; /* TRUE if initiator */ 366 UINT16 remote_wks; /* Well-Known service mask of peer */ 367 UINT8 remote_lsc; /* Link Service Class of peer */ 368 UINT16 remote_link_miu;/* Link MIU of peer */ 369 UINT16 local_link_miu; /* Link MIU of local */ 370} tNFA_LLCP_ACTIVATED; 371 372/* Data for NFA_LLCP_DEACTIVATED_EVT */ 373typedef struct 374{ 375 UINT8 reason; /* reason of deactivation */ 376} tNFA_LLCP_DEACTIVATED; 377 378/* Data for NFA_I93_CMD_CPLT_EVT */ 379typedef struct 380{ 381 UINT8 dsfid; /* DSFID */ 382 UINT8 uid[I93_UID_BYTE_LEN]; /* UID[0]:MSB, ... UID[7]:LSB */ 383} tNFA_I93_INVENTORY; 384 385typedef struct /* RW_I93_SYS_INFO_EVT */ 386{ 387 UINT8 info_flags; /* information flags */ 388 UINT8 uid[I93_UID_BYTE_LEN]; /* UID */ 389 UINT8 dsfid; /* DSFID if I93_INFO_FLAG_DSFID */ 390 UINT8 afi; /* AFI if I93_INFO_FLAG_AFI */ 391 UINT16 num_block; /* number of blocks if I93_INFO_FLAG_MEM_SIZE */ 392 UINT8 block_size; /* block size in byte if I93_INFO_FLAG_MEM_SIZE */ 393 UINT8 IC_reference; /* IC Reference if I93_INFO_FLAG_IC_REF */ 394} tNFA_I93_SYS_INFO; 395 396typedef struct 397{ 398 tNFA_STATUS status; /* Status of sending command */ 399 UINT8 sent_command; /* sent command to tag */ 400 union 401 { 402 UINT8 error_code; /* error code defined in ISO 15693 */ 403 tNFA_I93_INVENTORY inventory; /* inventory response */ 404 tNFA_I93_SYS_INFO sys_info; /* system information */ 405 } params; 406} tNFA_I93_CMD_CPLT; 407 408/* Data for NFA_CE_REGISTERED_EVT */ 409typedef struct 410{ 411 tNFA_STATUS status; /* NFA_STATUS_OK if successful */ 412 tNFA_HANDLE handle; /* handle for NFA_CeRegisterFelicaSystemCodeOnDH () */ 413 /* NFA_CeRegisterT4tAidOnDH () */ 414} tNFA_CE_REGISTERED; 415 416/* Data for NFA_CE_DEREGISTERED_EVT */ 417typedef struct 418{ 419 tNFA_HANDLE handle; /* handle from NFA_CE_REGISTERED_EVT */ 420} tNFA_CE_DEREGISTERED; 421 422/* Data for NFA_CE_ACTIVATED_EVT */ 423typedef struct 424{ 425 tNFA_STATUS status; /* NFA_STATUS_OK if successful */ 426 tNFA_HANDLE handle; /* handle from NFA_CE_REGISTERED_EVT */ 427 tNFC_ACTIVATE_DEVT activate_ntf; /* RF discovery activation details */ 428} tNFA_CE_ACTIVATED; 429 430/* Data for NFA_CE_DEACTIVATED_EVT */ 431typedef struct 432{ 433 tNFA_HANDLE handle; /* handle from NFA_CE_REGISTERED_EVT */ 434 tNFA_DEACTIVATE_TYPE type; /* NFA_DEACTIVATE_TYPE_IDLE or NFA_DEACTIVATE_TYPE_SLEEP */ 435} tNFA_CE_DEACTIVATED; 436 437/* Structure for NFA_CE_DATA_EVT data */ 438typedef struct 439{ 440 tNFA_HANDLE handle; /* handle from NFA_CE_REGISTERED_EVT */ 441 UINT8 *p_data; /* Data buffer */ 442 UINT16 len; /* Length of data */ 443} tNFA_CE_DATA; 444 445 446/* Union of all connection callback structures */ 447typedef union 448{ 449 tNFA_STATUS status; /* NFA_POLL_ENABLED_EVT */ 450 /* NFA_POLL_DISABLED_EVT */ 451 /* NFA_CE_UICC_LISTEN_CONFIGURED_EVT */ 452 /* NFA_EXCLUSIVE_RF_CONTROL_STARTED_EVT */ 453 /* NFA_EXCLUSIVE_RF_CONTROL_STOPPED_EVT */ 454 /* NFA_SELECT_RESULT_EVT */ 455 /* NFA_DEACTIVATE_FAIL_EVT */ 456 /* NFA_CE_NDEF_WRITE_START_EVT */ 457 /* NFA_SELECT_CPLT_EVT */ 458 /* NFA_READ_CPLT_EVT */ 459 /* NFA_WRITE_CPLT_EVT */ 460 /* NFA_PRESENCE_CHECK_EVT */ 461 /* NFA_FORMAT_CPLT_EVT */ 462 /* NFA_SET_TAG_RO_EVT */ 463 /* NFA_UPDATE_RF_PARAM_RESULT_EVT */ 464 /* NFA_RW_INTF_ERROR_EVT */ 465 tNFA_DISC_RESULT disc_result; /* NFA_DISC_RESULT_EVT */ 466 tNFA_ACTIVATED activated; /* NFA_ACTIVATED_EVT */ 467 tNFA_DEACTIVATED deactivated; /* NFA_DEACTIVATED_EVT */ 468 tNFA_NDEF_DETECT ndef_detect; /* NFA_NDEF_DETECT_EVT */ 469 tNFA_TLV_DETECT tlv_detect; /* NFA_TLV_DETECT_EVT */ 470 tNFA_RX_DATA data; /* NFA_DATA_EVT */ 471 tNFA_CE_NDEF_WRITE_CPLT ndef_write_cplt; /* NFA_CE_NDEF_WRITE_CPLT_EVT */ 472 tNFA_LLCP_ACTIVATED llcp_activated; /* NFA_LLCP_ACTIVATED_EVT */ 473 tNFA_LLCP_DEACTIVATED llcp_deactivated; /* NFA_LLCP_DEACTIVATED_EVT */ 474 tNFA_I93_CMD_CPLT i93_cmd_cplt; /* NFA_I93_CMD_CPLT_EVT */ 475 tNFA_CE_REGISTERED ce_registered; /* NFA_CE_REGISTERED_EVT */ 476 tNFA_CE_DEREGISTERED ce_deregistered; /* NFA_CE_DEREGISTERED_EVT */ 477 tNFA_CE_ACTIVATED ce_activated; /* NFA_CE_ACTIVATED_EVT */ 478 tNFA_CE_DEACTIVATED ce_deactivated; /* NFA_CE_DEACTIVATED_EVT */ 479 tNFA_CE_DATA ce_data; /* NFA_CE_DATA_EVT */ 480 481} tNFA_CONN_EVT_DATA; 482 483/* NFA Connection Callback */ 484typedef void (tNFA_CONN_CBACK) (UINT8 event, tNFA_CONN_EVT_DATA *p_data); 485 486#ifndef NFA_DM_NUM_INTERFACE_MAP 487#define NFA_DM_NUM_INTERFACE_MAP 3 488#endif 489 490/* compile-time configuration structure for the RF Discovery Frequency for each technology */ 491typedef struct 492{ 493 UINT8 pa; /* Frequency for NFC Technology A */ 494 UINT8 pb; /* Frequency for NFC Technology B */ 495 UINT8 pf; /* Frequency for NFC Technology F */ 496 UINT8 pi93; /* Frequency for Proprietary Technology/15693 */ 497 UINT8 pbp; /* Frequency for Proprietary Technology/B-Prime */ 498 UINT8 pk; /* Frequency for Proprietary Technology/Kovio */ 499 UINT8 paa; /* Frequency for NFC Technology A active mode */ 500 UINT8 pfa; /* Frequency for NFC Technology F active mode */ 501} tNFA_DM_DISC_FREQ_CFG; 502 503/* compile-time configuration structure */ 504typedef struct 505{ 506 BOOLEAN auto_detect_ndef; /* Automatic NDEF detection (when not in exclusive RF mode) */ 507 BOOLEAN auto_read_ndef; /* Automatic NDEF read (when not in exclusive RF mode) */ 508} tNFA_DM_CFG; 509 510/* compile-time configuration structure for HCI */ 511typedef struct 512{ 513 UINT16 hci_netwk_enable_timeout; /* Maximum idle(no HCP Pkt) time to wait for EE DISC REQ Ntf(s) */ 514 UINT16 hcp_response_timeout; /* Maximum time to wait for EE DISC REQ NTF(s) after HOT PLUG EVT(s) */ 515} tNFA_HCI_CFG; 516 517/* 518** Exclusive RF mode listen configuration 519*/ 520 521#define NFA_LB_MAX_NFCID0_LEN 4 522#define NFA_LF_MAX_SC_NFCID2 1 523#define NFA_LA_MAX_HIST_BYTES 15 524#define NFA_LB_MAX_H_INFO_LEN 15 525 526typedef struct 527{ 528 /* 529 ** Discovery Configuration Parameters for Listen A 530 */ 531 BOOLEAN la_enable; /* TRUE if listening A */ 532 UINT8 la_bit_frame_sdd; /* Bit Frame SDD in Byte 1 of SENS_RES */ 533 UINT8 la_platform_config; /* Platform Config in Byte 2 of SENS_RES */ 534 UINT8 la_sel_info; /* Byte of SEL_RES */ 535 UINT8 la_nfcid1_len; /* NFCID1 (0, 4, 7 or 10 bytes) */ 536 UINT8 la_nfcid1[NCI_NFCID1_MAX_LEN]; /* if empty, NFCC will decide */ 537 538 /* 539 ** Discovery Configuration Parameters for Listen B 540 */ 541 BOOLEAN lb_enable; /* TRUE if listening B */ 542 UINT8 lb_sensb_info; /* Byte 2 of Protocol Info within SENSB_RES */ 543 UINT8 lb_nfcid0_len; /* NFCID0 (0, 1 or 4 bytes) */ 544 UINT8 lb_nfcid0[NFA_LB_MAX_NFCID0_LEN]; /* if empty, NFCC will decide */ 545 UINT8 lb_app_data[NCI_PARAM_LEN_LB_APPDATA];/* Bytes 6 - 9 in SENSB_RES */ 546 UINT8 lb_sfgi; /* Start-Up Frame Guard Time */ 547 UINT8 lb_adc_fo; /* Byte 12 in SENSB_RES */ 548 549 /* 550 ** Discovery Configuration Parameters for Listen F 551 */ 552 BOOLEAN lf_enable; /* TRUE if listening F */ 553 UINT8 lf_con_bitr_f; /* bit rate to listen */ 554 UINT8 lf_protocol_type; /* Supported Protocols */ 555 UINT16 lf_t3t_flags; /* bit field indicating which lf_t3t_identifier are enabled */ 556 UINT8 lf_t3t_identifier[NFA_LF_MAX_SC_NFCID2][NCI_SYSTEMCODE_LEN + NCI_NFCID2_LEN]; 557 /* System Code and NFCID2 */ 558 UINT8 lf_t3t_pmm[NCI_T3T_PMM_LEN]; /* Bytes 10 - 17 in SENSF_RES */ 559 560 /* 561 ** Discovery Configuration Parameters for Listen ISO-DEP 562 */ 563 BOOLEAN li_enable; /* TRUE if listening ISO-DEP */ 564 UINT8 li_fwi; /* Frame Waiting Time Integer */ 565 UINT8 la_hist_bytes_len; /* historical bytes for Listen-A */ 566 UINT8 la_hist_bytes[NFA_LA_MAX_HIST_BYTES]; 567 UINT8 lb_h_info_resp_len; /* higher layer response for Listen-B */ 568 UINT8 lb_h_info_resp[NFA_LB_MAX_H_INFO_LEN]; 569 570 /* 571 ** Discovery Configuration Parameters for Listen NFC-DEP 572 */ 573 BOOLEAN ln_enable; /* TRUE if listening NFC-DEP */ 574 UINT8 ln_wt; /* Waiting Time Integer */ 575 UINT8 ln_atr_res_gen_bytes_len; /* General bytes in ATR_RES */ 576 UINT8 ln_atr_res_gen_bytes[NCI_MAX_GEN_BYTES_LEN]; 577 UINT8 ln_atr_res_config; /* Optional parameters (PPt) in ATR_RES */ 578} tNFA_LISTEN_CFG; 579 580/* Data for NFA_UpdateRFCommParams () */ 581typedef tNFC_RF_COMM_PARAMS tNFA_RF_COMM_PARAMS; 582 583/* RF Interface type */ 584#define NFA_INTERFACE_FRAME NFC_INTERFACE_FRAME 585#define NFA_INTERFACE_ISO_DEP NFC_INTERFACE_ISO_DEP 586#define NFA_INTERFACE_NFC_DEP NFC_INTERFACE_NFC_DEP 587typedef tNFC_INTF_TYPE tNFA_INTF_TYPE; 588 589/******************************************************************************* 590** NDEF Definitions 591*******************************************************************************/ 592 593/* Definitions for tNFA_TNF (NDEF type name format ID) */ 594#define NFA_TNF_EMPTY NDEF_TNF_EMPTY /* Empty or no type specified */ 595#define NFA_TNF_WKT NDEF_TNF_WKT /* NFC Forum well-known type [NFC RTD] */ 596#define NFA_TNF_RFC2046_MEDIA NDEF_TNF_MEDIA /* Media-type as defined in RFC 2046 [RFC 2046] */ 597#define NFA_TNF_RFC3986_URI NDEF_TNF_URI /* Absolute URI as defined in RFC 3986 [RFC 3986] */ 598#define NFA_TNF_EXTERNAL NDEF_TNF_EXT /* NFC Forum external type [NFC RTD] */ 599#define NFA_TNF_UNKNOWN NDEF_TNF_UNKNOWN /* Unknown */ 600#define NFA_TNF_UNCHANGED NDEF_TNF_UNCHANGED /* Unchanged */ 601#define NFA_TNF_RESERVED NDEF_TNF_RESERVED /* Reserved */ 602#define NFA_TNF_DEFAULT 0xFF /* Used to register default NDEF type handler */ 603typedef UINT8 tNFA_TNF; 604 605/* Definitions for tNFA_NDEF_URI_ID (Frequently used prefixes. For additional values, see [NFC RTD URI] */ 606#define NFA_NDEF_URI_ID_ABSOLUTE 0x00 /* Unabridged URI. */ 607#define NFA_NDEF_URI_ID_HTTP 0x03 /* http:// */ 608#define NFA_NDEF_URI_ID_HTTPS 0x04 /* https:// */ 609#define NFA_NDEF_URI_ID_TEL 0x05 /* tel: */ 610#define NFA_NDEF_URI_ID_MAILTO 0x06 /* mailto: */ 611#define NFA_NDEF_URI_ID_FTP 0x0D /* ftp:// */ 612#define NFA_NDEF_URI_ID_FILE 0x1D /* file:// */ 613 614typedef UINT8 tNFA_NDEF_URI_ID; 615 616/* Events for tNFA_NDEF_CBACK */ 617#define NFA_NDEF_REGISTER_EVT 0 /* NDEF record type registered. (In response to NFA_RegisterNDefTypeHandler) */ 618#define NFA_NDEF_DATA_EVT 1 /* Received an NDEF message with the registered type. See [tNFA_NDEF_DATA] */ 619typedef UINT8 tNFA_NDEF_EVT; 620 621/* Structure for NFA_NDEF_REGISTER_EVT event data */ 622typedef struct 623{ 624 tNFA_STATUS status; /* Status of the registration */ 625 tNFA_HANDLE ndef_type_handle; /* Handle for this NDEF type registration. */ 626} tNFA_NDEF_REGISTER; 627 628/* Structure for NFA_NDEF_DATA_EVT event data */ 629typedef struct 630{ 631 tNFA_HANDLE ndef_type_handle; /* Handle for NDEF type registration. */ 632 UINT8 *p_data; /* Data buffer */ 633 UINT32 len; /* Length of data */ 634} tNFA_NDEF_DATA; 635 636/* Union of all NDEF callback structures */ 637typedef union 638{ 639 tNFA_NDEF_REGISTER ndef_reg; /* Structure for NFA_NDEF_REGISTER_EVT event data */ 640 tNFA_NDEF_DATA ndef_data; /* Structure for NFA_NDEF_DATA_EVT event data */ 641} tNFA_NDEF_EVT_DATA; 642 643/* NFA_NDEF callback */ 644typedef void (tNFA_NDEF_CBACK) (tNFA_NDEF_EVT event, tNFA_NDEF_EVT_DATA *p_data); 645 646/* NFA VSC Callback */ 647typedef void (tNFA_VSC_CBACK)(UINT8 event, UINT16 param_len, UINT8 *p_param); 648 649 650/***************************************************************************** 651** External Function Declarations 652*****************************************************************************/ 653#ifdef __cplusplus 654extern "C" 655{ 656#endif 657 658/******************************************************************************* 659** 660** Function NFA_Init 661** 662** Description This function initializes control blocks for NFA 663** 664** p_hal_entry_tbl points to a table of HAL entry points 665** 666** NOTE: the buffer that p_hal_entry_tbl points must be 667** persistent until NFA is disabled. 668** 669** 670** Returns none 671** 672*******************************************************************************/ 673NFC_API extern void NFA_Init (tHAL_NFC_ENTRY *p_hal_entry_tbl); 674 675/******************************************************************************* 676** 677** Function NFA_Enable 678** 679** Description This function enables NFC. Prior to calling NFA_Enable, 680** the NFCC must be powered up, and ready to receive commands. 681** This function enables the tasks needed by NFC, opens the NCI 682** transport, resets the NFC controller, downloads patches to 683** the NFCC (if necessary), and initializes the NFC subsystems. 684** 685** This function should only be called once - typically when NFC 686** is enabled during boot-up, or when NFC is enabled from a 687** settings UI. Subsequent calls to NFA_Enable while NFA is 688** enabling or enabled will be ignored. When the NFC startup 689** procedure is completed, an NFA_DM_ENABLE_EVT is returned to the 690** application using the tNFA_DM_CBACK. 691** 692** The tNFA_CONN_CBACK parameter is used to register a callback 693** for polling, p2p and card emulation events. 694** 695** 696** Returns NFA_STATUS_OK if successfully initiated 697** NFA_STATUS_FAILED otherwise 698** 699*******************************************************************************/ 700NFC_API extern tNFA_STATUS NFA_Enable (tNFA_DM_CBACK *p_dm_cback, 701 tNFA_CONN_CBACK *p_conn_cback); 702 703/******************************************************************************* 704** 705** Function NFA_Disable 706** 707** Description This function is called to shutdown NFC. The tasks for NFC 708** are terminated, and clean up routines are performed. This 709** function is typically called during platform shut-down, or 710** when NFC is disabled from a settings UI. When the NFC 711** shutdown procedure is completed, an NFA_DM_DISABLE_EVT is 712** returned to the application using the tNFA_DM_CBACK. 713** 714** The platform should wait until the NFC_DISABLE_REVT is 715** received before powering down the NFC chip and NCI transport. 716** This is required to so that NFA can gracefully shut down any 717** open connections. 718** 719** Returns NFA_STATUS_OK if successfully initiated 720** NFA_STATUS_FAILED otherwise 721** 722*******************************************************************************/ 723NFC_API extern tNFA_STATUS NFA_Disable (BOOLEAN graceful); 724 725/******************************************************************************* 726** 727** Function NFA_SetConfig 728** 729** Description Set the configuration parameters to NFCC. The result is 730** reported with an NFA_DM_SET_CONFIG_EVT in the tNFA_DM_CBACK 731** callback. 732** 733** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 734** should happen before calling this function. Most Configuration 735** parameters are related to RF discovery. 736** 737** Returns NFA_STATUS_OK if successfully initiated 738** NFA_STATUS_BUSY if previous setting is on-going 739** NFA_STATUS_FAILED otherwise 740** 741*******************************************************************************/ 742NFC_API extern tNFA_STATUS NFA_SetConfig (tNFA_PMID param_id, 743 UINT8 length, 744 UINT8 *p_data); 745 746/******************************************************************************* 747** 748** Function NFA_GetConfig 749** 750** Description Get the configuration parameters from NFCC. The result is 751** reported with an NFA_DM_GET_CONFIG_EVT in the tNFA_DM_CBACK 752** callback. 753** 754** Returns NFA_STATUS_OK if successfully initiated 755** NFA_STATUS_FAILED otherwise 756** 757*******************************************************************************/ 758NFC_API extern tNFA_STATUS NFA_GetConfig (UINT8 num_ids, tNFA_PMID *p_param_ids); 759 760/******************************************************************************* 761** 762** Function NFA_RequestExclusiveRfControl 763** 764** Description Request exclusive control of NFC. 765** - Previous behavior (polling/tag reading, DH card emulation) 766** will be suspended . 767** - Polling and listening will be done based on the specified 768** params 769** 770** The NFA_EXCLUSIVE_RF_CONTROL_STARTED_EVT event of 771** tNFA_CONN_CBACK indicates the status of the operation. 772** 773** NFA_ACTIVATED_EVT and NFA_DEACTIVATED_EVT indicates link 774** activation/deactivation. 775** 776** NFA_SendRawFrame is used to send data to the peer. NFA_DATA_EVT 777** indicates data from the peer. 778** 779** If a tag is activated, then the NFA_RW APIs may be used to 780** send commands to the tag. Incoming NDEF messages are sent to 781** the NDEF callback. 782** 783** Once exclusive RF control has started, NFA will not activate 784** LLCP internally. The application has exclusive control of 785** the link. 786** 787** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 788** should happen before calling this function 789** 790** Returns NFA_STATUS_OK if successfully initiated 791** NFA_STATUS_FAILED otherwise 792** 793*******************************************************************************/ 794NFC_API extern tNFA_STATUS NFA_RequestExclusiveRfControl (tNFA_TECHNOLOGY_MASK poll_mask, 795 tNFA_LISTEN_CFG *p_listen_cfg, 796 tNFA_CONN_CBACK *p_conn_cback, 797 tNFA_NDEF_CBACK *p_ndef_cback); 798 799/******************************************************************************* 800** 801** Function NFA_ReleaseExclusiveRfControl 802** 803** Description Release exclusive control of NFC. Once released, behavior 804** prior to obtaining exclusive RF control will resume. 805** 806Note?? 807** Returns NFA_STATUS_OK if successfully initiated 808** NFA_STATUS_FAILED otherwise 809** 810*******************************************************************************/ 811NFC_API extern tNFA_STATUS NFA_ReleaseExclusiveRfControl (void); 812 813/******************************************************************************* 814** 815** Function NFA_EnablePolling 816** 817** Description Enable polling for technologies specified by poll_mask. 818** 819** The following events (notified using the connection 820** callback registered with NFA_Enable) are generated during 821** polling: 822** 823** - NFA_POLL_ENABLED_EVT indicates whether or not polling 824** successfully enabled. 825** - NFA_DISC_RESULT_EVT indicates there are more than one devices, 826** so application must select one of tags by calling NFA_Select(). 827** - NFA_SELECT_RESULT_EVT indicates whether previous selection was 828** successful or not. If it was failed then application must select 829** again or deactivate by calling NFA_Deactivate(). 830** - NFA_ACTIVATED_EVT is generated when an NFC link is activated. 831** - NFA_NDEF_DETECT_EVT is generated if tag is activated 832** - NFA_LLCP_ACTIVATED_EVT/NFA_LLCP_DEACTIVATED_EVT is generated 833** if NFC-DEP is activated 834** - NFA_DEACTIVATED_EVT will be returned after deactivating NFC link. 835** 836** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 837** should happen before calling this function 838** 839** Returns NFA_STATUS_OK if successfully initiated 840** NFA_STATUS_FAILED otherwise 841** 842*******************************************************************************/ 843NFC_API extern tNFA_STATUS NFA_EnablePolling (tNFA_TECHNOLOGY_MASK poll_mask); 844 845/******************************************************************************* 846** 847** Function NFA_DisablePolling 848** 849** Description Disable polling 850** NFA_POLL_DISABLED_EVT will be returned after stopping polling. 851** 852** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 853** should happen before calling this function 854** 855** Returns NFA_STATUS_OK if successfully initiated 856** NFA_STATUS_FAILED otherwise 857** 858*******************************************************************************/ 859NFC_API extern tNFA_STATUS NFA_DisablePolling (void); 860 861/******************************************************************************* 862** 863** Function NFA_EnableListening 864** 865** Description Enable listening. 866** NFA_LISTEN_ENABLED_EVT will be returned after listening is allowed. 867** 868** The actual listening technologies are specified by other NFA 869** API functions. Such functions include (but not limited to) 870** NFA_CeConfigureUiccListenTech. 871** If NFA_DisableListening () is called to ignore the listening technologies, 872** NFA_EnableListening () is called to restore the listening technologies 873** set by these functions. 874** 875** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 876** should happen before calling this function 877** 878** Returns NFA_STATUS_OK if successfully initiated 879** NFA_STATUS_FAILED otherwise 880** 881*******************************************************************************/ 882NFC_API extern tNFA_STATUS NFA_EnableListening (void); 883 884/******************************************************************************* 885** 886** Function NFA_DisableListening 887** 888** Description Disable listening 889** NFA_LISTEN_DISABLED_EVT will be returned after stopping listening. 890** This function is called to exclude listen at RF discovery. 891** 892** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 893** should happen before calling this function 894** 895** Returns NFA_STATUS_OK if successfully initiated 896** NFA_STATUS_FAILED otherwise 897** 898*******************************************************************************/ 899NFC_API extern tNFA_STATUS NFA_DisableListening (void); 900 901/******************************************************************************* 902** 903** Function NFA_PauseP2p 904** 905** Description Pause P2P services. 906** NFA_P2P_PAUSED_EVT will be returned after P2P services are 907** disabled. 908** 909** The P2P services enabled by NFA_P2p* API functions are not 910** available. NFA_ResumeP2p() is called to resume the P2P 911** services. 912** 913** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 914** should happen before calling this function 915** 916** Returns NFA_STATUS_OK if successfully initiated 917** NFA_STATUS_FAILED otherwise 918** 919*******************************************************************************/ 920NFC_API extern tNFA_STATUS NFA_PauseP2p (void); 921 922/******************************************************************************* 923** 924** Function NFA_ResumeP2p 925** 926** Description Resume P2P services. 927** NFA_P2P_RESUMED_EVT will be returned after P2P services are. 928** enables again. 929** 930** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 931** should happen before calling this function 932** 933** Returns NFA_STATUS_OK if successfully initiated 934** NFA_STATUS_FAILED otherwise 935** 936*******************************************************************************/ 937NFC_API extern tNFA_STATUS NFA_ResumeP2p (void); 938 939/******************************************************************************* 940** 941** Function NFA_SetP2pListenTech 942** 943** Description This function is called to set listen technology for NFC-DEP. 944** This funtion may be called before or after starting any server 945** on NFA P2P/CHO/SNEP. 946** If there is no technology for NFC-DEP, P2P listening will be 947** stopped. 948** 949** NFA_SET_P2P_LISTEN_TECH_EVT without data will be returned. 950** 951** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 952** should happen before calling this function 953** 954** Returns NFA_STATUS_OK if successfully initiated 955** NFA_STATUS_FAILED otherwise 956** 957*******************************************************************************/ 958NFC_API extern tNFA_STATUS NFA_SetP2pListenTech (tNFA_TECHNOLOGY_MASK tech_mask); 959 960/******************************************************************************* 961** 962** Function NFA_StartRfDiscovery 963** 964** Description Start RF discovery 965** RF discovery parameters shall be set by other APIs. 966** 967** An NFA_RF_DISCOVERY_STARTED_EVT indicates whether starting was successful or not. 968** 969** Returns NFA_STATUS_OK if successfully initiated 970** NFA_STATUS_FAILED otherwise 971** 972*******************************************************************************/ 973NFC_API extern tNFA_STATUS NFA_StartRfDiscovery (void); 974 975/******************************************************************************* 976** 977** Function NFA_StopRfDiscovery 978** 979** Description Stop RF discovery 980** 981** An NFA_RF_DISCOVERY_STOPPED_EVT indicates whether stopping was successful or not. 982** 983** Returns NFA_STATUS_OK if successfully initiated 984** NFA_STATUS_FAILED otherwise 985** 986*******************************************************************************/ 987NFC_API extern tNFA_STATUS NFA_StopRfDiscovery (void); 988 989/******************************************************************************* 990** 991** Function NFA_SetRfDiscoveryDuration 992** 993** Description Set the duration of the single discovery period in [ms]. 994** Allowable range: 0 ms to 0xFFFF ms. 995** 996** Note: If discovery is already started, the application should 997** call NFA_StopRfDiscovery prior to calling 998** NFA_SetRfDiscoveryDuration, and then call 999** NFA_StartRfDiscovery afterwards to restart discovery using 1000** the new duration. 1001** 1002** Returns: 1003** NFA_STATUS_OK, if command accepted 1004** NFA_STATUS_FAILED: otherwise 1005** 1006*******************************************************************************/ 1007NFC_API extern tNFA_STATUS NFA_SetRfDiscoveryDuration (UINT16 discovery_period_ms); 1008 1009/******************************************************************************* 1010** 1011** Function NFA_Select 1012** 1013** Description Select one from detected devices by NFA_DISC_RESULT_EVT after the 1014** last discovery result is received. 1015** An NFA_SELECT_RESULT_EVT indicates whether selection was successful or not. 1016** If failed then application must select again or deactivate by NFA_Deactivate (). 1017** 1018** Returns NFA_STATUS_OK if successfully initiated 1019** NFA_STATUS_INVALID_PARAM if RF interface is not matched protocol 1020** NFA_STATUS_FAILED otherwise 1021** 1022*******************************************************************************/ 1023NFC_API extern tNFA_STATUS NFA_Select (UINT8 rf_disc_id, 1024 tNFA_NFC_PROTOCOL protocol, 1025 tNFA_INTF_TYPE rf_interface); 1026 1027/******************************************************************************* 1028** 1029** Function NFA_UpdateRFCommParams 1030** 1031** Description This function is called to update RF Communication parameters 1032** once the Frame RF Interface has been activated. 1033** 1034** An NFA_UPDATE_RF_PARAM_RESULT_EVT indicates whether updating 1035** was successful or not. 1036** 1037** Returns NFA_STATUS_OK if successfully initiated 1038** NFA_STATUS_FAILED otherwise 1039** 1040*******************************************************************************/ 1041NFC_API extern tNFA_STATUS NFA_UpdateRFCommParams (tNFA_RF_COMM_PARAMS *p_params); 1042 1043/******************************************************************************* 1044** 1045** Function NFA_Deactivate 1046** 1047** Description 1048** If sleep_mode=TRUE: 1049** Deselect the activated device by deactivating into sleep mode. 1050** 1051** An NFA_DEACTIVATE_FAIL_EVT indicates that selection was not successful. 1052** Application can select another discovered device or deactivate by NFA_Deactivate () 1053** after receiving NFA_DEACTIVATED_EVT. 1054** 1055** Deactivating to sleep mode is not allowed when NFCC is in wait-for-host-select 1056** mode, or in listen-sleep states; NFA will deactivate to idle or discovery state 1057** for these cases respectively. 1058** 1059** 1060** If sleep_mode=FALSE: 1061** Deactivate the connection (e.g. as a result of presence check failure) 1062** NFA_DEACTIVATED_EVT will indicate that link is deactivated. 1063** Polling/listening will resume (unless the nfcc is in wait_for-all-discoveries state) 1064** 1065** 1066** Returns NFA_STATUS_OK if successfully initiated 1067** NFA_STATUS_FAILED otherwise 1068** 1069*******************************************************************************/ 1070NFC_API extern tNFA_STATUS NFA_Deactivate (BOOLEAN sleep_mode); 1071 1072/******************************************************************************* 1073** 1074** Function NFA_SendRawFrame 1075** 1076** Description Send a raw frame over the activated interface with the NFCC. 1077** This function can only be called after NFC link is activated. 1078** 1079** If the activated interface is a tag and auto-presence check is 1080** enabled then presence_check_start_delay can be used to indicate 1081** the delay in msec after which the next auto presence check 1082** command can be sent. NFA_DM_DEFAULT_PRESENCE_CHECK_START_DELAY 1083** can be used as the default value for the delay. 1084** 1085** Returns NFA_STATUS_OK if successfully initiated 1086** NFA_STATUS_FAILED otherwise 1087** 1088*******************************************************************************/ 1089NFC_API extern tNFA_STATUS NFA_SendRawFrame (UINT8 *p_raw_data, 1090 UINT16 data_len, 1091 UINT16 presence_check_start_delay); 1092 1093/******************************************************************************* 1094** NDEF APIs 1095*******************************************************************************/ 1096 1097/******************************************************************************* 1098** 1099** Function NFA_RegisterNDefTypeHandler 1100** 1101** Description This function allows the applications to register for 1102** specific types of NDEF records. When NDEF records are 1103** received, NFA will parse the record-type field, and pass 1104** the record to the registered tNFA_NDEF_CBACK. 1105** 1106** For records types which were not registered, the record will 1107** be sent to the default handler. A default type-handler may 1108** be registered by calling this NFA_RegisterNDefTypeHandler 1109** with tnf=NFA_TNF_DEFAULT. In this case, all un-registered 1110** record types will be sent to the callback. Only one default 1111** handler may be registered at a time. 1112** 1113** An NFA_NDEF_REGISTER_EVT will be sent to the tNFA_NDEF_CBACK 1114** to indicate that registration was successful, and provide a 1115** handle for this record type. 1116** 1117** 1118** Returns NFA_STATUS_OK if successfully initiated 1119** NFA_STATUS_FAILED otherwise 1120** 1121*******************************************************************************/ 1122NFC_API extern tNFA_STATUS NFA_RegisterNDefTypeHandler (BOOLEAN handle_whole_message, 1123 tNFA_TNF tnf, 1124 UINT8 *p_type_name, 1125 UINT8 type_name_len, 1126 tNFA_NDEF_CBACK *p_ndef_cback); 1127 1128/******************************************************************************* 1129** 1130** Function NFA_RegisterNDefUriHandler 1131** 1132** Description This API is a special-case of NFA_RegisterNDefTypeHandler 1133** with TNF=NFA_TNF_WKT, and type_name='U' (URI record); and allows 1134** registering for specific URI types (e.g. 'tel:' or 'mailto:'). 1135** 1136** An NFA_NDEF_REGISTER_EVT will be sent to the tNFA_NDEF_CBACK 1137** to indicate that registration was successful, and provide a 1138** handle for this registration. 1139** 1140** If uri_id=NFA_NDEF_URI_ID_ABSOLUTE, then p_abs_uri contains the 1141** unabridged URI. For all other uri_id values, the p_abs_uri 1142** parameter is ignored (i.e the URI prefix is implied by uri_id). 1143** See [NFC RTD URI] for more information. 1144** 1145** Returns NFA_STATUS_OK if successfully initiated 1146** NFA_STATUS_FAILED otherwise 1147** 1148*******************************************************************************/ 1149NFC_API extern tNFA_STATUS NFA_RegisterNDefUriHandler (BOOLEAN handle_whole_message, 1150 tNFA_NDEF_URI_ID uri_id, 1151 UINT8 *p_abs_uri, 1152 UINT8 uri_id_len, 1153 tNFA_NDEF_CBACK *p_ndef_cback); 1154 1155 1156/******************************************************************************* 1157** 1158** Function NFA_DeregisterNDefTypeHandler 1159** 1160** Description Deregister NDEF record type handler. 1161** 1162** Returns NFA_STATUS_OK if successfully initiated 1163** NFA_STATUS_FAILED otherwise 1164** 1165*******************************************************************************/ 1166NFC_API extern tNFA_STATUS NFA_DeregisterNDefTypeHandler (tNFA_HANDLE ndef_type_handle); 1167 1168 1169/******************************************************************************* 1170** 1171** Function NFA_PowerOffSleepMode 1172** 1173** Description This function is called to enter or leave NFCC Power Off Sleep mode 1174** NFA_DM_PWR_MODE_CHANGE_EVT will be sent to indicate status. 1175** 1176** start_stop : TRUE if entering Power Off Sleep mode 1177** FALSE if leaving Power Off Sleep mode 1178** 1179Note?? 1180** Returns NFA_STATUS_OK if successfully initiated 1181** NFA_STATUS_FAILED otherwise 1182** 1183*******************************************************************************/ 1184NFC_API extern tNFA_STATUS NFA_PowerOffSleepMode (BOOLEAN start_stop); 1185 1186/******************************************************************************* 1187** 1188** Function NFA_RegVSCback 1189** 1190** Description This function is called to register or de-register a callback 1191** function to receive Proprietary NCI response and notification 1192** events. 1193** The maximum number of callback functions allowed is NFC_NUM_VS_CBACKS 1194** 1195** Returns tNFC_STATUS 1196** 1197*******************************************************************************/ 1198NFC_API extern tNFC_STATUS NFA_RegVSCback (BOOLEAN is_register, 1199 tNFA_VSC_CBACK *p_cback); 1200 1201/******************************************************************************* 1202** 1203** Function NFA_SendVsCommand 1204** 1205** Description This function is called to send an NCI Vendor Specific 1206** command to NFCC. 1207** 1208** oid - The opcode of the VS command. 1209** cmd_params_len - The command parameter len 1210** p_cmd_params - The command parameter 1211** p_cback - The callback function to receive the command 1212** status 1213** 1214** Returns NFA_STATUS_OK if successfully initiated 1215** NFA_STATUS_FAILED otherwise 1216** 1217*******************************************************************************/ 1218NFC_API extern tNFA_STATUS NFA_SendVsCommand (UINT8 oid, 1219 UINT8 cmd_params_len, 1220 UINT8 *p_cmd_params, 1221 tNFA_VSC_CBACK *p_cback); 1222 1223/******************************************************************************* 1224** 1225** Function NFA_SetTraceLevel 1226** 1227** Description This function sets the trace level for NFA. If called with 1228** a value of 0xFF, it simply returns the current trace level. 1229** 1230** Returns The new or current trace level 1231** 1232*******************************************************************************/ 1233NFC_API extern UINT8 NFA_SetTraceLevel (UINT8 new_level); 1234 1235 1236#ifdef __cplusplus 1237} 1238#endif 1239 1240#endif /* NFA_API_H */ 1241 1242