nfc_api.h revision eb190654c5fbaea2f396bb5523f57062f291879a
1/****************************************************************************** 2** 3** File: nfc_api.h 4** 5** Description: This file contains the Near Field Communication (NFC) 6** API function external definitions. 7** 8** The NFC consists of several management entities: 9** 1. Device Control - controls the local device 10** 2. Device Discovery - manages discover database 11** 3. Data Channels - manages connections 12** 13** Copyright (c) 2009-2012 Broadcom Corp. All Rights Reserved. 14** Broadcom Bluetooth Core. Proprietary and confidential. 15** 16******************************************************************************/ 17 18#ifndef NFC_API_H 19#define NFC_API_H 20 21#include "nfc_target.h" 22#include "nci_defs.h" 23#include "nfc_hal_api.h" 24#include "gki.h" 25 26/* NFC application return status codes */ 27#define NFC_STATUS_OK NCI_STATUS_OK /* Command succeeded */ 28#define NFC_STATUS_REJECTED NCI_STATUS_REJECTED /* Command is rejected. */ 29#define NFC_STATUS_MSG_CORRUPTED NCI_STATUS_MESSAGE_CORRUPTED /* Message is corrupted */ 30#define NFC_STATUS_BUFFER_FULL NCI_STATUS_BUFFER_FULL /* buffer full */ 31#define NFC_STATUS_FAILED NCI_STATUS_FAILED /* failed */ 32#define NFC_STATUS_NOT_INITIALIZED NCI_STATUS_NOT_INITIALIZED /* not initialized */ 33#define NFC_STATUS_SYNTAX_ERROR NCI_STATUS_SYNTAX_ERROR /* Syntax error */ 34#define NFC_STATUS_SEMANTIC_ERROR NCI_STATUS_SEMANTIC_ERROR /* Semantic error */ 35#define NFC_STATUS_UNKNOWN_GID NCI_STATUS_UNKNOWN_GID /* Unknown NCI Group ID */ 36#define NFC_STATUS_UNKNOWN_OID NCI_STATUS_UNKNOWN_OID /* Unknown NCI Opcode */ 37#define NFC_STATUS_INVALID_PARAM NCI_STATUS_INVALID_PARAM /* Invalid Parameter */ 38#define NFC_STATUS_MSG_SIZE_TOO_BIG NCI_STATUS_MSG_SIZE_TOO_BIG /* Message size too big */ 39#define NFC_STATUS_ALREADY_STARTED NCI_STATUS_ALREADY_STARTED /* Already started */ 40#define NFC_STATUS_ACTIVATION_FAILED NCI_STATUS_ACTIVATION_FAILED /* Activation Failed */ 41#define NFC_STATUS_TEAR_DOWN NCI_STATUS_TEAR_DOWN /* Tear Down Error */ 42#define NFC_STATUS_RF_TRANSMISSION_ERR NCI_STATUS_RF_TRANSMISSION_ERR /* RF transmission error*/ 43#define NFC_STATUS_RF_PROTOCOL_ERR NCI_STATUS_RF_PROTOCOL_ERR /* RF protocol error */ 44#define NFC_STATUS_TIMEOUT NCI_STATUS_TIMEOUT /* RF Timeout */ 45#define NFC_STATUS_EE_INTF_ACTIVE_FAIL NCI_STATUS_EE_INTF_ACTIVE_FAIL /* EE Intf activate err */ 46#define NFC_STATUS_EE_TRANSMISSION_ERR NCI_STATUS_EE_TRANSMISSION_ERR /* EE transmission error*/ 47#define NFC_STATUS_EE_PROTOCOL_ERR NCI_STATUS_EE_PROTOCOL_ERR /* EE protocol error */ 48#define NFC_STATUS_EE_TIMEOUT NCI_STATUS_EE_TIMEOUT /* EE Timeout */ 49 50/* 0xE0 ~0xFF are proprietary status codes */ 51#define NFC_STATUS_CMD_STARTED 0xE3/* Command started successfully */ 52#define NFC_STATUS_HW_TIMEOUT 0xE4/* NFCC Timeout in responding to an NCI command */ 53#define NFC_STATUS_CONTINUE 0xE5/* More (same) event to follow */ 54#define NFC_STATUS_REFUSED 0xE6/* API is called to perform illegal function */ 55#define NFC_STATUS_BAD_RESP 0xE7/* Wrong format of R-APDU, CC file or NDEF file */ 56#define NFC_STATUS_CMD_NOT_CMPLTD 0xE8/* 7816 Status Word is not command complete(0x9000) */ 57#define NFC_STATUS_NO_BUFFERS 0xE9/* Out of GKI buffers */ 58#define NFC_STATUS_WRONG_PROTOCOL 0xEA/* Protocol mismatch between API and activated one */ 59#define NFC_STATUS_BUSY 0xEB/* Another Tag command is already in progress */ 60 61#define NFC_STATUS_LINK_LOSS 0xFC /* Link Loss */ 62#define NFC_STATUS_BAD_LENGTH 0xFD /* data len exceeds MIU */ 63#define NFC_STATUS_BAD_HANDLE 0xFE /* invalid handle */ 64#define NFC_STATUS_CONGESTED 0xFF /* congested */ 65typedef UINT8 tNFC_STATUS; 66 67 68 69/********************************************** 70 * NFC Config Parameter IDs defined by NCI 71 **********************************************/ 72#define NFC_PMID_TOTAL_DURATION NCI_PARAM_ID_TOTAL_DURATION 73#define NFC_PMID_CON_DEVICES_LIMIT NCI_PARAM_ID_CON_DEVICES_LIMIT 74#define NFC_PMID_PA_BAILOUT NCI_PARAM_ID_PA_BAILOUT 75#define NFC_PMID_PB_AFI NCI_PARAM_ID_PB_AFI 76#define NFC_PMID_PB_BAILOUT NCI_PARAM_ID_PB_BAILOUT 77#define NFC_PMID_PB_ATTRIB_PARAM1 NCI_PARAM_ID_PB_ATTRIB_PARAM1 78#define NFC_PMID_PF_BIT_RATE NCI_PARAM_ID_PF_BIT_RATE 79#define NFC_PMID_PB_H_INFO NCI_PARAM_ID_PB_H_INFO 80#define NFC_PMID_BITR_NFC_DEP NCI_PARAM_ID_BITR_NFC_DEP 81#define NFC_PMID_ATR_REQ_GEN_BYTES NCI_PARAM_ID_ATR_REQ_GEN_BYTES 82#define NFC_PMID_ATR_REQ_CONFIG NCI_PARAM_ID_ATR_REQ_CONFIG 83#define NFC_PMID_LA_HIST_BY NCI_PARAM_ID_LA_HIST_BY 84#define NFC_PMID_LA_NFCID1 NCI_PARAM_ID_LA_NFCID1 85#define NFC_PMID_PI_BIT_RATE NCI_PARAM_ID_PI_BIT_RATE 86#define NFC_PMID_LA_BIT_FRAME_SDD NCI_PARAM_ID_LA_BIT_FRAME_SDD 87#define NFC_PMID_LA_PLATFORM_CONFIG NCI_PARAM_ID_LA_PLATFORM_CONFIG 88#define NFC_PMID_LA_SEL_INFO NCI_PARAM_ID_LA_SEL_INFO 89#define NFC_PMID_LI_BIT_RATE NCI_PARAM_ID_LI_BIT_RATE 90#define NFC_PMID_LB_SENSB_INFO NCI_PARAM_ID_LB_SENSB_INFO 91#define NFC_PMID_LB_PROTOCOL NCI_PARAM_ID_LB_PROTOCOL 92#define NFC_PMID_LB_H_INFO NCI_PARAM_ID_LB_H_INFO_RSP 93#define NFC_PMID_LB_NFCID0 NCI_PARAM_ID_LB_NFCID0 94#define NFC_PMID_LB_APPDATA NCI_PARAM_ID_LB_APPDATA 95#define NFC_PMID_LB_SFGI NCI_PARAM_ID_LB_SFGI 96#define NFC_PMID_LB_ADC_FO NCI_PARAM_ID_LB_ADC_FO 97#define NFC_PMID_LF_T3T_ID1 NCI_PARAM_ID_LF_T3T_ID1 98#define NFC_PMID_LF_T3T_ID2 NCI_PARAM_ID_LF_T3T_ID2 99#define NFC_PMID_LF_T3T_ID3 NCI_PARAM_ID_LF_T3T_ID3 100#define NFC_PMID_LF_T3T_ID4 NCI_PARAM_ID_LF_T3T_ID4 101#define NFC_PMID_LF_T3T_ID5 NCI_PARAM_ID_LF_T3T_ID5 102#define NFC_PMID_LF_T3T_ID6 NCI_PARAM_ID_LF_T3T_ID6 103#define NFC_PMID_LF_T3T_ID7 NCI_PARAM_ID_LF_T3T_ID7 104#define NFC_PMID_LF_T3T_ID8 NCI_PARAM_ID_LF_T3T_ID8 105#define NFC_PMID_LF_T3T_ID9 NCI_PARAM_ID_LF_T3T_ID9 106#define NFC_PMID_LF_T3T_ID10 NCI_PARAM_ID_LF_T3T_ID10 107#define NFC_PMID_LF_T3T_ID11 NCI_PARAM_ID_LF_T3T_ID11 108#define NFC_PMID_LF_T3T_ID12 NCI_PARAM_ID_LF_T3T_ID12 109#define NFC_PMID_LF_T3T_ID13 NCI_PARAM_ID_LF_T3T_ID13 110#define NFC_PMID_LF_T3T_ID14 NCI_PARAM_ID_LF_T3T_ID14 111#define NFC_PMID_LF_T3T_ID15 NCI_PARAM_ID_LF_T3T_ID15 112#define NFC_PMID_LF_T3T_ID16 NCI_PARAM_ID_LF_T3T_ID16 113#define NFC_PMID_LF_PROTOCOL NCI_PARAM_ID_LF_PROTOCOL 114#define NFC_PMID_LF_T3T_PMM NCI_PARAM_ID_LF_T3T_PMM 115#define NFC_PMID_LF_T3T_MAX NCI_PARAM_ID_LF_T3T_MAX 116#define NFC_PMID_LF_T3T_FLAGS2 NCI_PARAM_ID_LF_T3T_FLAGS2 117#define NFC_PMID_FWI NCI_PARAM_ID_FWI 118#define NFC_PMID_LF_CON_BITR_F NCI_PARAM_ID_LF_CON_BITR_F 119#define NFC_PMID_WT NCI_PARAM_ID_WT 120#define NFC_PMID_ATR_RES_GEN_BYTES NCI_PARAM_ID_ATR_RES_GEN_BYTES 121#define NFC_PMID_ATR_RSP_CONFIG NCI_PARAM_ID_ATR_RSP_CONFIG 122#define NFC_PMID_RF_FIELD_INFO NCI_PARAM_ID_RF_FIELD_INFO 123#define NFC_PMID_NFC_DEP_OP NCI_PARAM_ID_NFC_DEP_OP 124#define NFC_PARAM_ID_RF_EE_ACTION NCI_PARAM_ID_RF_EE_ACTION 125#define NFC_PARAM_ID_ISO_DEP_OP NCI_PARAM_ID_ISO_DEP_OP 126 127#define NFC_ROUTE_TAG_TECH NCI_ROUTE_TAG_TECH /* Technology based routing */ 128#define NFC_ROUTE_TAG_PROTO NCI_ROUTE_TAG_PROTO /* Protocol based routing */ 129#define NFC_ROUTE_TAG_AID NCI_ROUTE_TAG_AID /* AID routing */ 130#define NFC_ROUTE_TLV_ENTRY_SIZE 4 /* tag, len, 2 byte value for technology/protocol based routing */ 131 132/* For routing */ 133#define NFC_DH_ID NCI_DH_ID /* for DH */ 134/* To identify the loopback test */ 135#define NFC_TEST_ID NCI_TEST_ID /* use a proprietary range */ 136 137typedef UINT8 tNFC_PMID; 138#define NFC_TL_SIZE 2 139#define NFC_SAVED_CMD_SIZE 2 140 141typedef tNCI_DISCOVER_MAPS tNFC_DISCOVER_MAPS; 142typedef tNCI_DISCOVER_PARAMS tNFC_DISCOVER_PARAMS; 143 144/* all NFC Manager Callback functions have prototype like void (cback) (UINT8 event, void *p_data) 145 * tNFC_DATA_CBACK uses connection id as the first parameter; range 0x00-0x0F. 146 * tNFC_DISCOVER_CBACK uses tNFC_DISCOVER_EVT; range 0x4000 ~ 147 * tNFC_RESPONSE_CBACK uses tNFC_RESPONSE_EVT; range 0x5000 ~ 148 */ 149 150#define NFC_FIRST_DEVT 0x4000 151#define NFC_FIRST_REVT 0x5000 152#define NFC_FIRST_CEVT 0x6000 153#define NFC_FIRST_TEVT 0x8000 154 155/* the events reported on tNFC_RESPONSE_CBACK */ 156enum 157{ 158 NFC_ENABLE_REVT = NFC_FIRST_REVT, /* 0 Enable event */ 159 NFC_DISABLE_REVT, /* 1 Disable event */ 160 NFC_SET_CONFIG_REVT, /* 2 Set Config Response */ 161 NFC_GET_CONFIG_REVT, /* 3 Get Config Response */ 162 NFC_NFCEE_DISCOVER_REVT, /* 4 Discover NFCEE response */ 163 NFC_NFCEE_INFO_REVT, /* 5 Discover NFCEE Notification */ 164 NFC_NFCEE_MODE_SET_REVT, /* 6 NFCEE Mode Set response */ 165 NFC_RF_FIELD_REVT, /* 7 RF Field information */ 166 NFC_EE_ACTION_REVT, /* 8 EE Action notification */ 167 NFC_EE_DISCOVER_REQ_REVT, /* 9 EE Discover Req notification */ 168 NFC_SET_ROUTING_REVT, /* 10 Configure Routing response */ 169 NFC_GET_ROUTING_REVT, /* 11 Retrieve Routing response */ 170 NFC_RF_COMM_PARAMS_UPDATE_REVT, /* 12 RF Communication Param Update */ 171 NFC_GEN_ERROR_REVT, /* 13 generic error notification */ 172 NFC_NFCC_RESTART_REVT, /* 14 NFCC has been re-initialized */ 173 NFC_NFCC_TIMEOUT_REVT, /* 15 NFCC is not responding */ 174 NFC_NFCC_TRANSPORT_ERR_REVT, /* 16 NCI Tranport error */ 175 NFC_NFCC_POWER_OFF_REVT, /* 17 NFCC turned off */ 176 177 NFC_FIRST_VS_REVT /* First vendor-specific rsp event */ 178}; 179typedef UINT16 tNFC_RESPONSE_EVT; 180 181enum 182{ 183 NFC_CONN_CREATE_CEVT = NFC_FIRST_CEVT, /* 0 Conn Create Response */ 184 NFC_CONN_CLOSE_CEVT, /* 1 Conn Close Response */ 185 NFC_DEACTIVATE_CEVT, /* 2 Deactivate response/notificatn*/ 186 NFC_DATA_CEVT, /* 3 Data */ 187 NFC_ERROR_CEVT /* 4 generic or interface error */ 188}; 189typedef UINT16 tNFC_CONN_EVT; 190 191#define NFC_NFCC_INFO_LEN 4 192#ifndef NFC_NFCC_MAX_NUM_VS_INTERFACE 193#define NFC_NFCC_MAX_NUM_VS_INTERFACE 4 194#endif 195typedef struct 196{ 197 tNFC_STATUS status; /* The event status. */ 198 UINT8 nci_version; /* the NCI version of NFCC */ 199 UINT8 max_conn; /* max number of connections by NFCC*/ 200 UINT32 nci_features; /* the NCI features of NFCC */ 201 UINT16 nci_interfaces; /* the NCI interfaces of NFCC */ 202 UINT16 max_ce_table; /* the max routing table size */ 203 UINT16 max_param_size; /* Max Size for Large Parameters */ 204 UINT8 manufacture_id; /* the Manufacture ID for NFCC */ 205 UINT8 nfcc_info[NFC_NFCC_INFO_LEN];/* the Manufacture Info for NFCC */ 206 UINT8 vs_interface[NFC_NFCC_MAX_NUM_VS_INTERFACE]; /* the NCI VS interfaces of NFCC */ 207} tNFC_ENABLE_REVT; 208 209#define NFC_MAX_NUM_IDS 125 210/* the data type associated with NFC_SET_CONFIG_REVT */ 211typedef struct 212{ 213 tNFC_STATUS status; /* The event status. */ 214 UINT8 num_param_id; /* Number of rejected NCI Param ID */ 215 UINT8 param_ids[NFC_MAX_NUM_IDS];/* NCI Param ID */ 216} tNFC_SET_CONFIG_REVT; 217 218/* the data type associated with NFC_GET_CONFIG_REVT */ 219typedef struct 220{ 221 tNFC_STATUS status; /* The event status. */ 222 UINT16 tlv_size; /* The length of TLV */ 223 UINT8 *p_param_tlvs; /* TLV */ 224} tNFC_GET_CONFIG_REVT; 225 226/* the data type associated with NFC_NFCEE_DISCOVER_REVT */ 227typedef struct 228{ 229 tNFC_STATUS status; /* The event status. */ 230 UINT8 num_nfcee; /* The number of NFCEE */ 231} tNFC_NFCEE_DISCOVER_REVT; 232 233#define NFC_NFCEE_INTERFACE_APDU NCI_NFCEE_INTERFACE_APDU 234#define NFC_NFCEE_INTERFACE_HCI_ACCESS NCI_NFCEE_INTERFACE_HCI_ACCESS 235#define NFC_NFCEE_INTERFACE_T3T NCI_NFCEE_INTERFACE_T3T 236#define NFC_NFCEE_INTERFACE_TRANSPARENT NCI_NFCEE_INTERFACE_TRANSPARENT 237#define NFC_NFCEE_INTERFACE_PROPRIETARY NCI_NFCEE_INTERFACE_PROPRIETARY 238typedef UINT8 tNFC_NFCEE_INTERFACE; 239 240#define NFC_NFCEE_TAG_HW_ID NCI_NFCEE_TAG_HW_ID 241#define NFC_NFCEE_TAG_ATR_BYTES NCI_NFCEE_TAG_ATR_BYTES 242#define NFC_NFCEE_TAG_T3T_INFO NCI_NFCEE_TAG_T3T_INFO 243#define NFC_NFCEE_TAG_HCI_HOST_ID NCI_NFCEE_TAG_HCI_HOST_ID 244typedef UINT8 tNFC_NFCEE_TAG; 245/* additional NFCEE Info */ 246typedef struct 247{ 248 tNFC_NFCEE_TAG tag; 249 UINT8 len; 250 UINT8 info[NFC_MAX_EE_INFO]; 251} tNFC_NFCEE_TLV; 252 253#define NFC_NFCEE_STATUS_INACTIVE NCI_NFCEE_STS_CONN_INACTIVE/* NFCEE connected and inactive */ 254#define NFC_NFCEE_STATUS_ACTIVE NCI_NFCEE_STS_CONN_ACTIVE /* NFCEE connected and active */ 255#define NFC_NFCEE_STATUS_REMOVED NCI_NFCEE_STS_REMOVED /* NFCEE removed */ 256/* the data type associated with NFC_NFCEE_INFO_REVT */ 257typedef struct 258{ 259 tNFC_STATUS status; /* The event status - place holder */ 260 UINT8 nfcee_id; /* NFCEE ID */ 261 UINT8 ee_status; /* The NFCEE status. */ 262 UINT8 num_interface; /* number of NFCEE interfaces */ 263 UINT8 ee_interface[NFC_MAX_EE_INTERFACE];/* NFCEE interface */ 264 UINT8 num_tlvs; /* number of TLVs */ 265 tNFC_NFCEE_TLV ee_tlv[NFC_MAX_EE_TLVS];/* The TLVs associated with NFCEE */ 266} tNFC_NFCEE_INFO_REVT; 267 268#define NFC_MODE_ACTIVATE NCI_NFCEE_MD_ACTIVATE 269#define NFC_MODE_DEACTIVATE NCI_NFCEE_MD_DEACTIVATE 270typedef UINT8 tNFC_NFCEE_MODE; 271/* the data type associated with NFC_NFCEE_MODE_SET_REVT */ 272typedef struct 273{ 274 tNFC_STATUS status; /* The event status.*/ 275 UINT8 nfcee_id; /* NFCEE ID */ 276 tNFC_NFCEE_MODE mode; /* NFCEE mode */ 277} tNFC_NFCEE_MODE_SET_REVT; 278 279#define NFC_MAX_AID_LEN NCI_MAX_AID_LEN /* 16 */ 280 281/* the data type associated with NFC_CE_GET_ROUTING_REVT */ 282typedef struct 283{ 284 tNFC_STATUS status; /* The event status */ 285 UINT8 nfcee_id; /* NFCEE ID */ 286 UINT8 num_tlvs; /* number of TLVs */ 287 UINT8 tlv_size; /* the total len of all TLVs */ 288 UINT8 param_tlvs[NFC_MAX_EE_TLV_SIZE];/* the TLVs */ 289} tNFC_GET_ROUTING_REVT; 290 291 292/* the data type associated with NFC_CONN_CREATE_CEVT */ 293typedef struct 294{ 295 tNFC_STATUS status; /* The event status */ 296 UINT8 dest_type; /* the destination type */ 297 UINT8 id; /* NFCEE ID or RF Discovery ID */ 298 UINT8 buff_size; /* The max buffer size */ 299 UINT8 num_buffs; /* The number of buffers */ 300} tNFC_CONN_CREATE_CEVT; 301 302/* the data type associated with NFC_CONN_CLOSE_CEVT */ 303typedef struct 304{ 305 tNFC_STATUS status; /* The event status */ 306} tNFC_CONN_CLOSE_CEVT; 307 308/* the data type associated with NFC_DATA_CEVT */ 309typedef struct 310{ 311 tNFC_STATUS status; /* The event status */ 312 BT_HDR *p_data; /* The received Data */ 313} tNFC_DATA_CEVT; 314 315/* RF Field Status */ 316#define NFC_RF_STS_NO_REMOTE NCI_RF_STS_NO_REMOTE /* No field generated by remote device */ 317#define NFC_RF_STS_REMOTE NCI_RF_STS_REMOTE /* field generated by remote device */ 318typedef UINT8 tNFC_RF_STS; 319 320/* RF Field Technologies */ 321#define NFC_RF_TECHNOLOGY_A NCI_RF_TECHNOLOGY_A 322#define NFC_RF_TECHNOLOGY_B NCI_RF_TECHNOLOGY_B 323#define NFC_RF_TECHNOLOGY_F NCI_RF_TECHNOLOGY_F 324#define NFC_RF_TECHNOLOGY_15693 NCI_RF_TECHNOLOGY_15693 325typedef UINT8 tNFC_RF_TECH; 326 327 328/* Supported Protocols */ 329#define NFC_PROTOCOL_UNKNOWN NCI_PROTOCOL_UNKNOWN /* Unknown */ 330#define NFC_PROTOCOL_T1T NCI_PROTOCOL_T1T /* Type1Tag - NFC-A */ 331#define NFC_PROTOCOL_T2T NCI_PROTOCOL_T2T /* Type2Tag - NFC-A */ 332#define NFC_PROTOCOL_T3T NCI_PROTOCOL_T3T /* Type3Tag - NFC-F */ 333#define NFC_PROTOCOL_ISO_DEP NCI_PROTOCOL_ISO_DEP /* Type 4A,4B - NFC-A or NFC-B */ 334#define NFC_PROTOCOL_NFC_DEP NCI_PROTOCOL_NFC_DEP /* NFCDEP/LLCP - NFC-A or NFC-F */ 335#define NFC_PROTOCOL_B_PRIME NCI_PROTOCOL_B_PRIME 336#define NFC_PROTOCOL_15693 NCI_PROTOCOL_15693 337#define NFC_PROTOCOL_KOVIO NCI_PROTOCOL_KOVIO 338typedef UINT8 tNFC_PROTOCOL; 339 340/* Discovery Types/Detected Technology and Mode */ 341#define NFC_DISCOVERY_TYPE_POLL_A NCI_DISCOVERY_TYPE_POLL_A 342#define NFC_DISCOVERY_TYPE_POLL_B NCI_DISCOVERY_TYPE_POLL_B 343#define NFC_DISCOVERY_TYPE_POLL_F NCI_DISCOVERY_TYPE_POLL_F 344#define NFC_DISCOVERY_TYPE_POLL_A_ACTIVE NCI_DISCOVERY_TYPE_POLL_A_ACTIVE 345#define NFC_DISCOVERY_TYPE_POLL_F_ACTIVE NCI_DISCOVERY_TYPE_POLL_F_ACTIVE 346#define NFC_DISCOVERY_TYPE_POLL_ISO15693 NCI_DISCOVERY_TYPE_POLL_ISO15693 347#define NFC_DISCOVERY_TYPE_POLL_B_PRIME NCI_DISCOVERY_TYPE_POLL_B_PRIME 348#define NFC_DISCOVERY_TYPE_POLL_KOVIO NCI_DISCOVERY_TYPE_POLL_KOVIO 349#define NFC_DISCOVERY_TYPE_LISTEN_A NCI_DISCOVERY_TYPE_LISTEN_A 350#define NFC_DISCOVERY_TYPE_LISTEN_B NCI_DISCOVERY_TYPE_LISTEN_B 351#define NFC_DISCOVERY_TYPE_LISTEN_F NCI_DISCOVERY_TYPE_LISTEN_F 352#define NFC_DISCOVERY_TYPE_LISTEN_A_ACTIVE NCI_DISCOVERY_TYPE_LISTEN_A_ACTIVE 353#define NFC_DISCOVERY_TYPE_LISTEN_F_ACTIVE NCI_DISCOVERY_TYPE_LISTEN_F_ACTIVE 354#define NFC_DISCOVERY_TYPE_LISTEN_ISO15693 NCI_DISCOVERY_TYPE_LISTEN_ISO15693 355#define NFC_DISCOVERY_TYPE_LISTEN_B_PRIME NCI_DISCOVERY_TYPE_LISTEN_B_PRIME 356typedef UINT8 tNFC_DISCOVERY_TYPE; 357typedef UINT8 tNFC_RF_TECH_N_MODE; 358 359/* Select Response codes */ 360#define NFC_SEL_RES_NFC_FORUM_T2T 0x00 361#define NFC_SEL_RES_MF_CLASSIC 0x08 362 363/* Bit Rates */ 364#define NFC_BIT_RATE_106 NCI_BIT_RATE_106 /* 106 kbit/s */ 365#define NFC_BIT_RATE_212 NCI_BIT_RATE_212 /* 212 kbit/s */ 366#define NFC_BIT_RATE_424 NCI_BIT_RATE_424 /* 424 kbit/s */ 367#define NFC_BIT_RATE_848 NCI_BIT_RATE_848 /* 848 Kbit/s */ 368#define NFC_BIT_RATE_1696 NCI_BIT_RATE_1696 /* 1696 Kbit/s*/ 369#define NFC_BIT_RATE_3392 NCI_BIT_RATE_3392 /* 3392 Kbit/s*/ 370#define NFC_BIT_RATE_6784 NCI_BIT_RATE_6784 /* 6784 Kbit/s*/ 371typedef UINT8 tNFC_BIT_RATE; 372 373/********************************************** 374 * Interface Types 375 **********************************************/ 376#define NFC_INTERFACE_EE_DIRECT_RF NCI_INTERFACE_EE_DIRECT_RF 377#define NFC_INTERFACE_FRAME NCI_INTERFACE_FRAME 378#define NFC_INTERFACE_ISO_DEP NCI_INTERFACE_ISO_DEP 379#define NFC_INTERFACE_NDEF NCI_INTERFACE_NDEF 380#define NFC_INTERFACE_NFC_DEP NCI_INTERFACE_NFC_DEP 381#define NFC_INTERFACE_LLCP_LOW NCI_INTERFACE_LLCP_LOW 382#define NFC_INTERFACE_LLCP_HIGH NCI_INTERFACE_LLCP_HIGH 383#define NFC_INTERFACE_VS_T2T_CE NCI_INTERFACE_VS_T2T_CE 384typedef tNCI_INTF_TYPE tNFC_INTF_TYPE; 385 386/********************************************** 387 * Deactivation Type 388 **********************************************/ 389#define NFC_DEACTIVATE_TYPE_IDLE NCI_DEACTIVATE_TYPE_IDLE 390#define NFC_DEACTIVATE_TYPE_SLEEP NCI_DEACTIVATE_TYPE_SLEEP 391#define NFC_DEACTIVATE_TYPE_SLEEP_AF NCI_DEACTIVATE_TYPE_SLEEP_AF 392#define NFC_DEACTIVATE_TYPE_DISCOVERY NCI_DEACTIVATE_TYPE_DISCOVERY 393typedef UINT8 tNFC_DEACT_TYPE; 394 395/********************************************** 396 * Deactivation Reasons 397 **********************************************/ 398#define NFC_DEACTIVATE_REASON_DH_REQ NCI_DEACTIVATE_REASON_DH_REQ 399#define NFC_DEACTIVATE_REASON_ENDPOINT_REQ NCI_DEACTIVATE_REASON_ENDPOINT_REQ 400#define NFC_DEACTIVATE_REASON_RF_LINK_LOSS NCI_DEACTIVATE_REASON_RF_LINK_LOSS 401#define NFC_DEACTIVATE_REASON_NFCB_BAD_AFI NCI_DEACTIVATE_REASON_NFCB_BAD_AFI 402typedef UINT8 tNFC_DEACT_REASON; 403 404/* the data type associated with NFC_RF_FIELD_REVT */ 405typedef struct 406{ 407 tNFC_STATUS status; /* The event status - place holder. */ 408 tNFC_RF_STS rf_field; /* RF Field Status */ 409} tNFC_RF_FIELD_REVT; 410 411#define NFC_MAX_APP_DATA_LEN 40 412typedef struct 413{ 414 UINT8 len_aid; /* length of application id */ 415 UINT8 aid[NFC_MAX_AID_LEN]; /* application id */ 416} tNFC_AID; 417typedef struct 418{ 419 UINT8 len_aid; /* length of application id */ 420 UINT8 aid[NFC_MAX_AID_LEN]; /* application id */ 421 UINT8 len_data; /* len of application data */ 422 UINT8 data[NFC_MAX_APP_DATA_LEN]; /* application data */ 423} tNFC_APP_INIT; 424 425#define NFC_EE_TRIG_SELECT NCI_EE_TRIG_7816_SELECT /* ISO 7816-4 SELECT command */ 426#define NFC_EE_TRIG_RF_PROTOCOL NCI_EE_TRIG_RF_PROTOCOL /* RF Protocol changed */ 427#define NFC_EE_TRIG_RF_TECHNOLOGY NCI_EE_TRIG_RF_TECHNOLOGY/* RF Technology changed */ 428#define NFC_EE_TRIG_APP_INIT NCI_EE_TRIG_APP_INIT /* Application initiation */ 429typedef UINT8 tNFC_EE_TRIGGER; 430typedef struct 431{ 432 tNFC_EE_TRIGGER trigger; /* the trigger of this event */ 433 union 434 { 435 tNFC_PROTOCOL protocol; 436 tNFC_RF_TECH technology; 437 tNFC_AID aid; 438 tNFC_APP_INIT app_init; 439 } param; /* Discovery Type specific parameters */ 440} tNFC_ACTION_DATA; 441 442/* the data type associated with NFC_EE_ACTION_REVT */ 443typedef struct 444{ 445 tNFC_STATUS status; /* The event status - place holder */ 446 UINT8 nfcee_id; /* NFCEE ID */ 447 tNFC_ACTION_DATA act_data; /* data associated /w the action */ 448} tNFC_EE_ACTION_REVT; 449 450#define NFC_EE_DISC_OP_ADD 0 451#define NFC_EE_DISC_OP_REMOVE 1 452typedef UINT8 tNFC_EE_DISC_OP; 453typedef struct 454{ 455 tNFC_EE_DISC_OP op; /* add or remove this entry */ 456 UINT8 nfcee_id; /* NFCEE ID */ 457 tNFC_RF_TECH_N_MODE tech_n_mode; /* Discovery Technology and Mode */ 458 tNFC_PROTOCOL protocol; /* NFC protocol */ 459} tNFC_EE_DISCOVER_INFO; 460 461#ifndef NFC_MAX_EE_DISC_ENTRIES 462#define NFC_MAX_EE_DISC_ENTRIES 6 463#endif 464#define NFC_EE_DISCOVER_ENTRY_LEN 5 /* T, L, V(NFCEE ID, TechnMode, Protocol) */ 465#define NFC_EE_DISCOVER_INFO_LEN 3 /* NFCEE ID, TechnMode, Protocol */ 466/* the data type associated with NFC_EE_DISCOVER_REQ_REVT */ 467typedef struct 468{ 469 tNFC_STATUS status; /* The event status - place holder */ 470 UINT8 num_info; /* number of entries in info[] */ 471 tNFC_EE_DISCOVER_INFO info[NFC_MAX_EE_DISC_ENTRIES]; /* discovery request from NFCEE */ 472} tNFC_EE_DISCOVER_REQ_REVT; 473 474typedef union 475{ 476 tNFC_STATUS status; /* The event status. */ 477 tNFC_ENABLE_REVT enable; 478 tNFC_SET_CONFIG_REVT set_config; 479 tNFC_GET_CONFIG_REVT get_config; 480 tNFC_NFCEE_DISCOVER_REVT nfcee_discover; 481 tNFC_NFCEE_INFO_REVT nfcee_info; 482 tNFC_NFCEE_MODE_SET_REVT mode_set; 483 tNFC_RF_FIELD_REVT rf_field; 484 tNFC_STATUS cfg_routing; 485 tNFC_GET_ROUTING_REVT get_routing; 486 tNFC_EE_ACTION_REVT ee_action; 487 tNFC_EE_DISCOVER_REQ_REVT ee_discover_req; 488 void *p_vs_evt_data; 489} tNFC_RESPONSE; 490 491/************************************* 492** RESPONSE Callback Functions 493**************************************/ 494typedef void (tNFC_RESPONSE_CBACK) (tNFC_RESPONSE_EVT event, tNFC_RESPONSE *p_data); 495 496/* The events reported on tNFC_VS_CBACK */ 497/* The event is (NCI_RSP_BIT|oid) for response and (NCI_NTF_BIT|oid) for notification*/ 498 499typedef UINT8 tNFC_VS_EVT; 500 501/************************************* 502** Proprietary (Vendor Specific) Callback Functions 503**************************************/ 504typedef void (tNFC_VS_CBACK) (tNFC_VS_EVT event, UINT16 data_len, UINT8 *p_data); 505 506/* the events reported on tNFC_DISCOVER_CBACK */ 507enum 508{ 509 NFC_START_DEVT = NFC_FIRST_DEVT, /* Status of NFC_DiscoveryStart */ 510 NFC_MAP_DEVT, /* Status of NFC_DiscoveryMap */ 511 NFC_RESULT_DEVT, /* The responses from remote device */ 512 NFC_SELECT_DEVT, /* Status of NFC_DiscoverySelect */ 513 NFC_ACTIVATE_DEVT, /* RF interface is activated */ 514 NFC_DEACTIVATE_DEVT /* Status of RF deactivation */ 515}; 516typedef UINT16 tNFC_DISCOVER_EVT; 517 518/* the data type associated with NFC_START_DEVT */ 519typedef tNFC_STATUS tNFC_START_DEVT; 520 521typedef tNCI_RF_PA_PARAMS tNFC_RF_PA_PARAMS; 522#define NFC_MAX_SENSB_RES_LEN NCI_MAX_SENSB_RES_LEN 523#define NFC_NFCID0_MAX_LEN 4 524typedef struct 525{ 526 UINT8 sensb_res_len;/* Length of SENSB_RES Response (Byte 2 - Byte 12 or 13) Available after Technology Detection */ 527 UINT8 sensb_res[NFC_MAX_SENSB_RES_LEN]; /* SENSB_RES Response (ATQ) */ 528 UINT8 nfcid0[NFC_NFCID0_MAX_LEN]; 529} tNFC_RF_PB_PARAMS; 530 531#define NFC_MAX_SENSF_RES_LEN NCI_MAX_SENSF_RES_LEN 532#define NFC_NFCID2_LEN NCI_NFCID2_LEN 533typedef struct 534{ 535 UINT8 bit_rate;/* NFC_BIT_RATE_212 or NFC_BIT_RATE_424 */ 536 UINT8 sensf_res_len;/* Length of SENSF_RES Response (Byte 2 - Byte 17 or 19) Available after Technology Detection */ 537 UINT8 sensf_res[NFC_MAX_SENSF_RES_LEN]; /* SENSB_RES Response */ 538 UINT8 nfcid2[NFC_NFCID2_LEN]; /* NFCID2 generated by the Local NFCC for NFC-DEP Protocol.Available for Frame Interface */ 539 UINT8 mrti_check; 540 UINT8 mrti_update; 541} tNFC_RF_PF_PARAMS; 542 543typedef tNCI_RF_LF_PARAMS tNFC_RF_LF_PARAMS; 544 545#define NFC_ISO15693_UID_LEN 8 546typedef struct 547{ 548 UINT8 flag; 549 UINT8 dsfid; 550 UINT8 uid[NFC_ISO15693_UID_LEN]; 551} tNFC_RF_PISO15693_PARAMS; 552 553#define NFC_KOVIO_MAX_LEN 16 554typedef struct 555{ 556 UINT8 uid_len; 557 UINT8 uid[NFC_KOVIO_MAX_LEN]; 558} tNFC_RF_PKOVIO_PARAMS; 559 560typedef struct 561{ 562 tNFC_DISCOVERY_TYPE mode; 563 union 564 { 565 tNFC_RF_PA_PARAMS pa; 566 tNFC_RF_PB_PARAMS pb; 567 tNFC_RF_PF_PARAMS pf; 568 tNFC_RF_LF_PARAMS lf; 569 tNFC_RF_PISO15693_PARAMS pi93; 570 tNFC_RF_PKOVIO_PARAMS pk; 571 } param; /* Discovery Type specific parameters */ 572} tNFC_RF_TECH_PARAMS; 573 574/* the data type associated with NFC_RESULT_DEVT */ 575typedef struct 576{ 577 tNFC_STATUS status; /* The event status - place holder. */ 578 UINT8 rf_disc_id; /* RF Discovery ID */ 579 UINT8 protocol; /* supported protocol */ 580 tNFC_RF_TECH_PARAMS rf_tech_param; /* RF technology parameters */ 581 BOOLEAN more; /* 0: last notification */ 582} tNFC_RESULT_DEVT; 583 584/* the data type associated with NFC_SELECT_DEVT */ 585typedef tNFC_STATUS tNFC_SELECT_DEVT; 586 587/* the data type associated with NFC_STOP_DEVT */ 588typedef tNFC_STATUS tNFC_STOP_DEVT; 589 590#define NFC_MAX_ATS_LEN NCI_MAX_ATS_LEN 591#define NFC_MAX_HIS_BYTES_LEN NCI_MAX_HIS_BYTES_LEN 592#define NFC_MAX_GEN_BYTES_LEN NCI_MAX_GEN_BYTES_LEN 593 594 595typedef struct 596{ 597 UINT8 ats_res_len; /* Length of ATS RES */ 598 UINT8 ats_res[NFC_MAX_ATS_LEN]; /* ATS RES */ 599 BOOLEAN nad_used; /* NAD is used or not */ 600 UINT8 fwi; /* Frame Waiting time Integer */ 601 UINT8 sfgi; /* Start-up Frame Guard time Integer*/ 602 UINT8 his_byte_len; /* len of historical bytes */ 603 UINT8 his_byte[NFC_MAX_HIS_BYTES_LEN];/* historical bytes */ 604} tNFC_INTF_PA_ISO_DEP; 605 606typedef struct 607{ 608 UINT8 rats; /* RATS */ 609} tNFC_INTF_LA_ISO_DEP; 610 611 612typedef struct 613{ 614 UINT8 atr_res_len; /* Length of ATR_RES */ 615 UINT8 atr_res[NFC_MAX_ATS_LEN]; /* ATR_RES (Byte 3 - Byte 17+n) */ 616 UINT8 max_payload_size; /* 64, 128, 192 or 254 */ 617 UINT8 gen_bytes_len; /* len of general bytes */ 618 UINT8 gen_bytes[NFC_MAX_GEN_BYTES_LEN];/* general bytes */ 619 UINT8 waiting_time; /* WT -> Response Waiting Time RWT = (256 x 16/fC) x 2WT */ 620} tNFC_INTF_PA_NFC_DEP; 621 622/* Note: keep tNFC_INTF_PA_NFC_DEP data member in the same order as tNFC_INTF_LA_NFC_DEP */ 623typedef struct 624{ 625 UINT8 atr_req_len; /* Length of ATR_REQ */ 626 UINT8 atr_req[NFC_MAX_ATS_LEN]; /* ATR_REQ (Byte 3 - Byte 18+n) */ 627 UINT8 max_payload_size; /* 64, 128, 192 or 254 */ 628 UINT8 gen_bytes_len; /* len of general bytes */ 629 UINT8 gen_bytes[NFC_MAX_GEN_BYTES_LEN];/* general bytes */ 630} tNFC_INTF_LA_NFC_DEP; 631typedef tNFC_INTF_LA_NFC_DEP tNFC_INTF_LF_NFC_DEP; 632typedef tNFC_INTF_PA_NFC_DEP tNFC_INTF_PF_NFC_DEP; 633 634#define NFC_MAX_ATTRIB_LEN NCI_MAX_ATTRIB_LEN 635 636typedef struct 637{ 638 UINT8 attrib_res_len; /* Length of ATTRIB RES */ 639 UINT8 attrib_res[NFC_MAX_ATTRIB_LEN];/* ATTRIB RES */ 640 UINT8 hi_info_len; /* len of Higher layer Info */ 641 UINT8 hi_info[NFC_MAX_GEN_BYTES_LEN];/* Higher layer Info */ 642 UINT8 mbli; /* Maximum buffer length. */ 643} tNFC_INTF_PB_ISO_DEP; 644 645typedef struct 646{ 647 UINT8 attrib_req_len; /* Length of ATTRIB REQ */ 648 UINT8 attrib_req[NFC_MAX_ATTRIB_LEN];/* ATTRIB REQ (Byte 2 - 10+k)*/ 649 UINT8 hi_info_len; /* len of Higher layer Info */ 650 UINT8 hi_info[NFC_MAX_GEN_BYTES_LEN];/* Higher layer Info */ 651 UINT8 nfcid0[NFC_NFCID0_MAX_LEN]; /* NFCID0 */ 652} tNFC_INTF_LB_ISO_DEP; 653 654 655#ifndef NFC_MAX_RAW_PARAMS 656#define NFC_MAX_RAW_PARAMS 16 657#endif 658#define NFC_MAX_RAW_PARAMS 16 659typedef struct 660{ 661 UINT8 param_len; 662 UINT8 param[NFC_MAX_RAW_PARAMS]; 663} tNFC_INTF_FRAME; 664 665typedef struct 666{ 667 tNFC_INTF_TYPE type; /* Interface Type 1 Byte See Table 67 */ 668 union 669 { 670 tNFC_INTF_LA_ISO_DEP la_iso; 671 tNFC_INTF_PA_ISO_DEP pa_iso; 672 tNFC_INTF_LB_ISO_DEP lb_iso; 673 tNFC_INTF_PB_ISO_DEP pb_iso; 674 tNFC_INTF_LA_NFC_DEP la_nfc; 675 tNFC_INTF_PA_NFC_DEP pa_nfc; 676 tNFC_INTF_LF_NFC_DEP lf_nfc; 677 tNFC_INTF_PF_NFC_DEP pf_nfc; 678 tNFC_INTF_FRAME frame; 679 } intf_param; /* Activation Parameters 0 - n Bytes */ 680} tNFC_INTF_PARAMS; 681 682/* the data type associated with NFC_ACTIVATE_DEVT */ 683typedef struct 684{ 685 UINT8 rf_disc_id; /* RF Discovery ID */ 686 tNFC_PROTOCOL protocol; /* supported protocol */ 687 tNFC_RF_TECH_PARAMS rf_tech_param; /* RF technology parameters */ 688 tNFC_BIT_RATE tx_bitrate; /* Data Exchange Tx Bitrate */ 689 tNFC_BIT_RATE rx_bitrate; /* Data Exchange Rx Bitrate */ 690 tNFC_INTF_PARAMS intf_param; /* interface type and params*/ 691} tNFC_ACTIVATE_DEVT; 692 693/* the data type associated with NFC_DEACTIVATE_DEVT and NFC_DEACTIVATE_CEVT */ 694typedef struct 695{ 696 tNFC_STATUS status; /* The event status. */ 697 tNFC_DEACT_TYPE type; /* De-activate type */ 698 BOOLEAN is_ntf; /* TRUE, if deactivate notif*/ 699} tNFC_DEACTIVATE_DEVT; 700 701typedef union 702{ 703 tNFC_STATUS status; /* The event status. */ 704 tNFC_START_DEVT start; 705 tNFC_RESULT_DEVT result; 706 tNFC_SELECT_DEVT select; 707 tNFC_STOP_DEVT stop; 708 tNFC_ACTIVATE_DEVT activate; 709 tNFC_DEACTIVATE_DEVT deactivate; 710} tNFC_DISCOVER; 711 712/* Min TR0 indicates to tag the min delay before responding after the end of command */ 713#define NFC_RF_PARAM_MIN_TR0_DEFAULT 0x00 714#define NFC_RF_PARAM_MIN_TR0_48X 0x01 /* 48 x 16/fc */ 715#define NFC_RF_PARAM_MIN_TR0_16X 0x02 /* 16 x 16/fc */ 716 717/* Min TR1 indicates to tag the min delay between subcarrier modulation and data transmission */ 718#define NFC_RF_PARAM_MIN_TR1_DEFAULT 0x00 719#define NFC_RF_PARAM_MIN_TR1_64X 0x01 /* 64 x 16/fc */ 720#define NFC_RF_PARAM_MIN_TR1_16X 0x02 /* 16 x 16/fc */ 721 722/* Min TR2 indicates to RW the min delay between EoS of tag and SoS of RW */ 723#define NFC_RF_PARAM_MIN_TR2_1792 0x00 /* 1792/fc (10etu + 32/fc) */ 724#define NFC_RF_PARAM_MIN_TR2_3328 0x01 /* 3328/fc (10etu + 128/fc) */ 725#define NFC_RF_PARAM_MIN_TR2_5376 0x02 /* 5376/fc (10etu + 256/fc) */ 726#define NFC_RF_PARAM_MIN_TR2_9472 0x03 /* 9472/fc (10etu + 512/fc) */ 727 728#define NFC_RF_PARAM_EOS_REQUIRED 0x00 /* EoS required */ 729#define NFC_RF_PARAM_EOS_NOT_REQUIRED 0x01 /* EoS not required */ 730 731#define NFC_RF_PARAM_SOS_REQUIRED 0x00 /* SoS required */ 732#define NFC_RF_PARAM_SOS_NOT_REQUIRED 0x01 /* SoS not required */ 733 734typedef struct 735{ 736 BOOLEAN include_rf_tech_mode; /* TRUE if including RF Tech and Mode update */ 737 tNFC_RF_TECH_N_MODE rf_tech_n_mode; /* RF tech and mode */ 738 BOOLEAN include_tx_bit_rate; /* TRUE if including Tx bit rate update */ 739 tNFC_BIT_RATE tx_bit_rate; /* Transmit Bit Rate */ 740 BOOLEAN include_rx_bit_rate; /* TRUE if including Rx bit rate update */ 741 tNFC_BIT_RATE rx_bit_rate; /* Receive Bit Rate */ 742 BOOLEAN include_nfc_b_config; /* TRUE if including NFC-B data exchange config */ 743 UINT8 min_tr0; /* Minimun TR0 */ 744 UINT8 min_tr1; /* Minimun TR1 */ 745 UINT8 suppression_eos; /* Suppression of EoS */ 746 UINT8 suppression_sos; /* Suppression of SoS */ 747 UINT8 min_tr2; /* Minimun TR1 */ 748} tNFC_RF_COMM_PARAMS; 749 750/************************************* 751** DISCOVER Callback Functions 752**************************************/ 753typedef void (tNFC_DISCOVER_CBACK) (tNFC_DISCOVER_EVT event, tNFC_DISCOVER *p_data); 754 755/* the events reported on tNFC_TEST_CBACK */ 756enum 757{ 758 NFC_LOOPBACK_TEVT = NFC_FIRST_TEVT, /* 0 Loopback test */ 759 NFC_RF_CONTROL_TEVT, /* 1 RF control Test response */ 760 NFC_RF_FIELD_DONE_TEVT /* 1 RF control Test notificatn*/ 761}; 762typedef UINT16 tNFC_TEST_EVT; 763 764/* the data type associated with NFC_LOOPBACK_TEVT */ 765typedef struct 766{ 767 tNFC_STATUS status; /* The event status. */ 768 BT_HDR *p_data; /* The loop back data from NFCC */ 769} tNFC_LOOPBACK_TEVT; 770 771/* the data type associated with NFC_RF_CONTROL_TEVT */ 772typedef tNFC_STATUS tNFC_RF_CONTROL_TEVT; 773 774typedef union 775{ 776 tNFC_STATUS status; /* The event status. */ 777 tNFC_LOOPBACK_TEVT loop_back; 778 tNFC_RF_CONTROL_TEVT rf_control; 779} tNFC_TEST; 780 781/************************************* 782** TEST Callback Functions 783**************************************/ 784typedef void (tNFC_TEST_CBACK) (tNFC_TEST_EVT event, tNFC_TEST *p_data); 785 786 787typedef tNFC_DEACTIVATE_DEVT tNFC_DEACTIVATE_CEVT; 788typedef union 789{ 790 tNFC_STATUS status; /* The event status. */ 791 tNFC_CONN_CREATE_CEVT conn_create; 792 tNFC_CONN_CLOSE_CEVT conn_close; 793 tNFC_DEACTIVATE_CEVT deactivate; 794 tNFC_DATA_CEVT data; 795} tNFC_CONN; 796 797/************************************* 798** Data Callback Functions 799**************************************/ 800typedef void (tNFC_CONN_CBACK) (UINT8 conn_id, tNFC_CONN_EVT event, tNFC_CONN *p_data); 801#define NFC_MAX_CONN_ID 15 802#define NFC_ILLEGAL_CONN_ID 0xFF 803#define NFC_RF_CONN_ID 0 /* the static connection ID for RF traffic */ 804 805 806 807/************************************* 808** Status callback function 809**************************************/ 810typedef void (tNFC_STATUS_CBACK) (tNFC_STATUS status); 811 812/***************************************************************************** 813** EXTERNAL FUNCTION DECLARATIONS 814*****************************************************************************/ 815#ifdef __cplusplus 816extern "C" { 817#endif 818 819/******************************************************************************* 820** 821** Function NFC_Enable 822** 823** Description This function enables NFC. Prior to calling NFC_Enable: 824** - the NFCC must be powered up, and ready to receive commands. 825** - GKI must be enabled 826** - NFC_TASK must be started 827** - NCIT_TASK must be started (if using dedicated NCI transport) 828** 829** This function opens the NCI transport (if applicable), 830** resets the NFC controller, and initializes the NFC subsystems. 831** 832** When the NFC startup procedure is completed, an 833** NFC_ENABLE_REVT is returned to the application using the 834** tNFC_RESPONSE_CBACK. 835** 836** Returns tNFC_STATUS 837** 838*******************************************************************************/ 839NFC_API extern tNFC_STATUS NFC_Enable (tNFC_RESPONSE_CBACK *p_cback); 840 841/******************************************************************************* 842** 843** Function NFC_Disable 844** 845** Description This function performs clean up routines for shutting down 846** NFC and closes the NCI transport (if using dedicated NCI 847** transport). 848** 849** When the NFC shutdown procedure is completed, an 850** NFC_DISABLED_REVT is returned to the application using the 851** tNFC_RESPONSE_CBACK. 852** 853** Returns nothing 854** 855*******************************************************************************/ 856NFC_API extern void NFC_Disable (void); 857 858/******************************************************************************* 859** 860** Function NFC_Init 861** 862** Description This function initializes control blocks for NFC 863** 864** Returns nothing 865** 866*******************************************************************************/ 867NFC_API extern void NFC_Init(tHAL_NFC_ENTRY *p_hal_entry_tbl); 868 869/******************************************************************************* 870** 871** Function NFC_GetLmrtSize 872** 873** Description Called by application wto query the Listen Mode Routing 874** Table size supported by NFCC 875** 876** Returns Listen Mode Routing Table size 877** 878*******************************************************************************/ 879NFC_API extern UINT16 NFC_GetLmrtSize(void); 880 881/******************************************************************************* 882** 883** Function NFC_SetConfig 884** 885** Description This function is called to send the configuration parameter 886** TLV to NFCC. The response from NFCC is reported by 887** tNFC_RESPONSE_CBACK as NFC_SET_CONFIG_REVT. 888** 889** Parameters tlv_size - the length of p_param_tlvs. 890** p_param_tlvs - the parameter ID/Len/Value list 891** 892** Returns tNFC_STATUS 893** 894*******************************************************************************/ 895NFC_API extern tNFC_STATUS NFC_SetConfig (UINT8 tlv_size, 896 UINT8 *p_param_tlvs); 897 898/******************************************************************************* 899** 900** Function NFC_GetConfig 901** 902** Description This function is called to retrieve the parameter TLV from NFCC. 903** The response from NFCC is reported by tNFC_RESPONSE_CBACK 904** as NFC_GET_CONFIG_REVT. 905** 906** Parameters num_ids - the number of parameter IDs 907** p_param_ids - the parameter ID list. 908** 909** Returns tNFC_STATUS 910** 911*******************************************************************************/ 912NFC_API extern tNFC_STATUS NFC_GetConfig (UINT8 num_ids, 913 UINT8 *p_param_ids); 914 915/******************************************************************************* 916** 917** Function NFC_NfceeDiscover 918** 919** Description This function is called to enable or disable NFCEE Discovery. 920** The response from NFCC is reported by tNFC_RESPONSE_CBACK 921** as NFC_NFCEE_DISCOVER_REVT. 922** The notification from NFCC is reported by tNFC_RESPONSE_CBACK 923** as NFC_NFCEE_INFO_REVT. 924** 925** Parameters discover - 1 to enable discover, 0 to disable. 926** 927** Returns tNFC_STATUS 928** 929*******************************************************************************/ 930NFC_API extern tNFC_STATUS NFC_NfceeDiscover (BOOLEAN discover); 931 932/******************************************************************************* 933** 934** Function NFC_NfceeModeSet 935** 936** Description This function is called to activate or de-activate an NFCEE 937** connected to the NFCC. 938** The response from NFCC is reported by tNFC_RESPONSE_CBACK 939** as NFC_NFCEE_MODE_SET_REVT. 940** 941** Parameters nfcee_id - the NFCEE to activate or de-activate. 942** mode - 0 to activate NFCEE, 1 to de-activate. 943** 944** Returns tNFC_STATUS 945** 946*******************************************************************************/ 947NFC_API extern tNFC_STATUS NFC_NfceeModeSet (UINT8 nfcee_id, 948 tNFC_NFCEE_MODE mode); 949/******************************************************************************* 950** 951** Function NFC_DiscoveryMap 952** 953** Description This function is called to set the discovery interface mapping. 954** The response from NFCC is reported by tNFC_DISCOVER_CBACK as. 955** NFC_MAP_DEVT. 956** 957** Parameters num - the number of items in p_params. 958** p_maps - the discovery interface mappings 959** p_cback - the discovery callback function 960** 961** Returns tNFC_STATUS 962** 963*******************************************************************************/ 964NFC_API extern tNFC_STATUS NFC_DiscoveryMap(UINT8 num, tNFC_DISCOVER_MAPS *p_maps, 965 tNFC_DISCOVER_CBACK *p_cback); 966 967/******************************************************************************* 968** 969** Function NFC_DiscoveryStart 970** 971** Description This function is called to start Polling and/or Listening. 972** The response from NFCC is reported by tNFC_DISCOVER_CBACK as. 973** NFC_START_DEVT. The notification from NFCC is reported by 974** tNFC_DISCOVER_CBACK as NFC_RESULT_DEVT. 975** 976** Parameters num_params - the number of items in p_params. 977** p_params - the discovery parameters 978** p_cback - the discovery callback function 979** 980** Returns tNFC_STATUS 981** 982*******************************************************************************/ 983NFC_API extern tNFC_STATUS NFC_DiscoveryStart(UINT8 num_params, 984 tNFC_DISCOVER_PARAMS *p_params, 985 tNFC_DISCOVER_CBACK *p_cback); 986 987/******************************************************************************* 988** 989** Function NFC_DiscoverySelect 990** 991** Description If tNFC_DISCOVER_CBACK reports status=NFC_MULTIPLE_PROT, 992** the application needs to use this function to select the 993** the logical endpoint to continue. The response from NFCC is 994** reported by tNFC_DISCOVER_CBACK as NFC_SELECT_DEVT. 995** 996** Parameters rf_disc_id - The ID identifies the remote device. 997** protocol - the logical endpoint on the remote devide 998** rf_interface - the RF interface to communicate with NFCC 999** 1000** Returns tNFC_STATUS 1001** 1002*******************************************************************************/ 1003NFC_API extern tNFC_STATUS NFC_DiscoverySelect (UINT8 rf_disc_id, 1004 UINT8 protocol, 1005 UINT8 rf_interface); 1006 1007/******************************************************************************* 1008** 1009** Function NFC_ConnCreate 1010** 1011** Description This function is called to create a logical connection with 1012** NFCC for data exchange. 1013** The response from NFCC is reported in tNFC_CONN_CBACK 1014** as NFC_CONN_CREATE_CEVT. 1015** 1016** Parameters dest_type - the destination type 1017** id - the NFCEE ID or RF Discovery ID . 1018** protocol - the protocol 1019** p_cback - the data callback function to receive data fron NFCC 1020** 1021** Returns tNFC_STATUS 1022** 1023*******************************************************************************/ 1024NFC_API extern tNFC_STATUS NFC_ConnCreate(UINT8 dest_type, 1025 UINT8 id, 1026 UINT8 protocol, 1027 tNFC_CONN_CBACK *p_cback); 1028 1029/******************************************************************************* 1030** 1031** Function NFC_ConnClose 1032** 1033** Description This function is called to close a logical connection with 1034** NFCC. 1035** The response from NFCC is reported in tNFC_CONN_CBACK 1036** as NFC_CONN_CLOSE_CEVT. 1037** 1038** Parameters conn_id - the connection id. 1039** 1040** Returns tNFC_STATUS 1041** 1042*******************************************************************************/ 1043NFC_API extern tNFC_STATUS NFC_ConnClose(UINT8 conn_id); 1044 1045/******************************************************************************* 1046** 1047** Function NFC_SetStaticRfCback 1048** 1049** Description This function is called to update the data callback function 1050** to receive the data for the given connection id. 1051** 1052** Parameters p_cback - the connection callback function 1053** 1054** Returns Nothing 1055** 1056*******************************************************************************/ 1057NFC_API extern void NFC_SetStaticRfCback(tNFC_CONN_CBACK *p_cback); 1058 1059/******************************************************************************* 1060** 1061** Function NFC_SendData 1062** 1063** Description This function is called to send the given data packet 1064** to the connection identified by the given connection id. 1065** 1066** Parameters conn_id - the connection id. 1067** p_data - the data packet 1068** 1069** Returns tNFC_STATUS 1070** 1071*******************************************************************************/ 1072NFC_API extern tNFC_STATUS NFC_SendData(UINT8 conn_id, 1073 BT_HDR *p_data); 1074 1075/******************************************************************************* 1076** 1077** Function NFC_FlushData 1078** 1079** Description This function is called to discard the tx data queue of 1080** the given connection id. 1081** 1082** Parameters conn_id - the connection id. 1083** 1084** Returns tNFC_STATUS 1085** 1086*******************************************************************************/ 1087NFC_API extern tNFC_STATUS NFC_FlushData (UINT8 conn_id); 1088 1089/******************************************************************************* 1090** 1091** Function NFC_Deactivate 1092** 1093** Description This function is called to stop the discovery process or 1094** put the listen device in sleep mode or terminate the NFC link. 1095** 1096** The response from NFCC is reported by tNFC_DISCOVER_CBACK 1097** as NFC_DEACTIVATE_DEVT. 1098** 1099** Parameters deactivate_type - NFC_DEACTIVATE_TYPE_IDLE, to IDLE mode. 1100** NFC_DEACTIVATE_TYPE_SLEEP to SLEEP mode. 1101** NFC_DEACTIVATE_TYPE_SLEEP_AF to SLEEP_AF mode. 1102** 1103** Returns tNFC_STATUS 1104** 1105*******************************************************************************/ 1106NFC_API extern tNFC_STATUS NFC_Deactivate(tNFC_DEACT_TYPE deactivate_type); 1107 1108/******************************************************************************* 1109** 1110** Function NFC_UpdateRFCommParams 1111** 1112** Description This function is called to update RF Communication parameters 1113** once the Frame RF Interface has been activated. 1114** 1115** The response from NFCC is reported by tNFC_RESPONSE_CBACK 1116** as NFC_RF_COMM_PARAMS_UPDATE_REVT. 1117** 1118** Returns tNFC_STATUS 1119** 1120*******************************************************************************/ 1121NFC_API extern tNFC_STATUS NFC_UpdateRFCommParams (tNFC_RF_COMM_PARAMS *p_params); 1122 1123/******************************************************************************* 1124** 1125** Function NFC_SetPowerOffSleep 1126** 1127** Description This function closes/opens transport and turns off/on NFCC. 1128** 1129** Returns tNFC_STATUS 1130** 1131*******************************************************************************/ 1132NFC_API extern tNFC_STATUS NFC_SetPowerOffSleep (BOOLEAN enable); 1133 1134/******************************************************************************* 1135** 1136** Function NFC_PowerCycleNFCC 1137** 1138** Description This function turns off and then on NFCC. 1139** 1140** Returns tNFC_STATUS 1141** 1142*******************************************************************************/ 1143NFC_API extern tNFC_STATUS NFC_PowerCycleNFCC (void); 1144 1145/******************************************************************************* 1146** 1147** Function NFC_SetRouting 1148** 1149** Description This function is called to configure the CE routing table. 1150** The response from NFCC is reported by tNFC_RESPONSE_CBACK 1151** as NFC_SET_ROUTING_REVT. 1152** 1153** Parameters 1154** 1155** Returns tNFC_STATUS 1156** 1157*******************************************************************************/ 1158NFC_API extern tNFC_STATUS NFC_SetRouting(BOOLEAN more, 1159 UINT8 nfcee_id, 1160 UINT8 num_tlv, 1161 UINT8 tlv_size, 1162 UINT8 *p_param_tlvs); 1163 1164/******************************************************************************* 1165** 1166** Function NFC_GetRouting 1167** 1168** Description This function is called to retrieve the CE routing table from 1169** NFCC. The response from NFCC is reported by tNFC_RESPONSE_CBACK 1170** as NFC_GET_ROUTING_REVT. 1171** 1172** Returns tNFC_STATUS 1173** 1174*******************************************************************************/ 1175NFC_API extern tNFC_STATUS NFC_GetRouting(void); 1176 1177/******************************************************************************* 1178** 1179** Function NFC_RegVSCback 1180** 1181** Description This function is called to register or de-register a callback 1182** function to receive Proprietary NCI response and notification 1183** events. 1184** The maximum number of callback functions allowed is NFC_NUM_VS_CBACKS 1185** 1186** Returns tNFC_STATUS 1187** 1188*******************************************************************************/ 1189NFC_API extern tNFC_STATUS NFC_RegVSCback (BOOLEAN is_register, 1190 tNFC_VS_CBACK *p_cback); 1191 1192/******************************************************************************* 1193** 1194** Function NFC_SendVsCommand 1195** 1196** Description This function is called to send the given vendor specific 1197** command to NFCC. The response from NFCC is reported to the 1198** given tNFC_VS_CBACK as (oid). 1199** 1200** Parameters oid - The opcode of the VS command. 1201** p_data - The parameters for the VS command 1202** 1203** Returns tNFC_STATUS 1204** 1205*******************************************************************************/ 1206NFC_API extern tNFC_STATUS NFC_SendVsCommand(UINT8 oid, 1207 BT_HDR *p_data, 1208 tNFC_VS_CBACK *p_cback); 1209 1210/******************************************************************************* 1211** 1212** Function NFC_TestLoopback 1213** 1214** Description This function is called to send the given data packet 1215** to NFCC for loopback test. 1216** When loopback data is received from NFCC, tNFC_TEST_CBACK . 1217** reports a NFC_LOOPBACK_TEVT. 1218** 1219** Parameters p_data - the data packet 1220** 1221** Returns tNFC_STATUS 1222** 1223*******************************************************************************/ 1224NFC_API extern tNFC_STATUS NFC_TestLoopback(BT_HDR *p_data); 1225 1226/******************************************************************************* 1227** 1228** Function NFC_SetTraceLevel 1229** 1230** Description This function sets the trace level for NFC. If called with 1231** a value of 0xFF, it simply returns the current trace level. 1232** 1233** Returns The new or current trace level 1234** 1235*******************************************************************************/ 1236NFC_API extern UINT8 NFC_SetTraceLevel (UINT8 new_level); 1237 1238#ifdef __cplusplus 1239} 1240#endif 1241 1242#endif /* NFC_API_H */ 1243