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