/****************************************************************************** * * Copyright (C) 2009-2014 Broadcom Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ******************************************************************************/ /****************************************************************************** * * This file contains the Near Field Communication (NFC) API function * external definitions. * ******************************************************************************/ #ifndef NFC_API_H #define NFC_API_H #include "nfc_target.h" #include "nci_defs.h" #include "nfc_hal_api.h" #include "gki.h" #include "vendor_cfg.h" /* NFC application return status codes */ #define NFC_STATUS_OK NCI_STATUS_OK /* Command succeeded */ #define NFC_STATUS_REJECTED NCI_STATUS_REJECTED /* Command is rejected. */ #define NFC_STATUS_MSG_CORRUPTED NCI_STATUS_MESSAGE_CORRUPTED /* Message is corrupted */ #define NFC_STATUS_BUFFER_FULL NCI_STATUS_BUFFER_FULL /* buffer full */ #define NFC_STATUS_FAILED NCI_STATUS_FAILED /* failed */ #define NFC_STATUS_NOT_INITIALIZED NCI_STATUS_NOT_INITIALIZED /* not initialized */ #define NFC_STATUS_SYNTAX_ERROR NCI_STATUS_SYNTAX_ERROR /* Syntax error */ #define NFC_STATUS_SEMANTIC_ERROR NCI_STATUS_SEMANTIC_ERROR /* Semantic error */ #define NFC_STATUS_UNKNOWN_GID NCI_STATUS_UNKNOWN_GID /* Unknown NCI Group ID */ #define NFC_STATUS_UNKNOWN_OID NCI_STATUS_UNKNOWN_OID /* Unknown NCI Opcode */ #define NFC_STATUS_INVALID_PARAM NCI_STATUS_INVALID_PARAM /* Invalid Parameter */ #define NFC_STATUS_MSG_SIZE_TOO_BIG NCI_STATUS_MSG_SIZE_TOO_BIG /* Message size too big */ #define NFC_STATUS_ALREADY_STARTED NCI_STATUS_ALREADY_STARTED /* Already started */ #define NFC_STATUS_ACTIVATION_FAILED NCI_STATUS_ACTIVATION_FAILED /* Activation Failed */ #define NFC_STATUS_TEAR_DOWN NCI_STATUS_TEAR_DOWN /* Tear Down Error */ #define NFC_STATUS_RF_TRANSMISSION_ERR NCI_STATUS_RF_TRANSMISSION_ERR /* RF transmission error*/ #define NFC_STATUS_RF_PROTOCOL_ERR NCI_STATUS_RF_PROTOCOL_ERR /* RF protocol error */ #define NFC_STATUS_TIMEOUT NCI_STATUS_TIMEOUT /* RF Timeout */ #define NFC_STATUS_EE_INTF_ACTIVE_FAIL NCI_STATUS_EE_INTF_ACTIVE_FAIL /* EE Intf activate err */ #define NFC_STATUS_EE_TRANSMISSION_ERR NCI_STATUS_EE_TRANSMISSION_ERR /* EE transmission error*/ #define NFC_STATUS_EE_PROTOCOL_ERR NCI_STATUS_EE_PROTOCOL_ERR /* EE protocol error */ #define NFC_STATUS_EE_TIMEOUT NCI_STATUS_EE_TIMEOUT /* EE Timeout */ /* 0xE0 ~0xFF are proprietary status codes */ #define NFC_STATUS_CMD_STARTED 0xE3/* Command started successfully */ #define NFC_STATUS_HW_TIMEOUT 0xE4/* NFCC Timeout in responding to an NCI command */ #define NFC_STATUS_CONTINUE 0xE5/* More (same) event to follow */ #define NFC_STATUS_REFUSED 0xE6/* API is called to perform illegal function */ #define NFC_STATUS_BAD_RESP 0xE7/* Wrong format of R-APDU, CC file or NDEF file */ #define NFC_STATUS_CMD_NOT_CMPLTD 0xE8/* 7816 Status Word is not command complete(0x9000) */ #define NFC_STATUS_NO_BUFFERS 0xE9/* Out of GKI buffers */ #define NFC_STATUS_WRONG_PROTOCOL 0xEA/* Protocol mismatch between API and activated one */ #define NFC_STATUS_BUSY 0xEB/* Another Tag command is already in progress */ #define NFC_STATUS_LINK_LOSS 0xFC /* Link Loss */ #define NFC_STATUS_BAD_LENGTH 0xFD /* data len exceeds MIU */ #define NFC_STATUS_BAD_HANDLE 0xFE /* invalid handle */ #define NFC_STATUS_CONGESTED 0xFF /* congested */ typedef UINT8 tNFC_STATUS; /********************************************** * NFC Config Parameter IDs defined by NCI **********************************************/ #define NFC_PMID_TOTAL_DURATION NCI_PARAM_ID_TOTAL_DURATION #define NFC_PMID_CON_DEVICES_LIMIT NCI_PARAM_ID_CON_DEVICES_LIMIT #define NFC_PMID_PA_BAILOUT NCI_PARAM_ID_PA_BAILOUT #define NFC_PMID_PB_AFI NCI_PARAM_ID_PB_AFI #define NFC_PMID_PB_BAILOUT NCI_PARAM_ID_PB_BAILOUT #define NFC_PMID_PB_ATTRIB_PARAM1 NCI_PARAM_ID_PB_ATTRIB_PARAM1 #define NFC_PMID_PF_BIT_RATE NCI_PARAM_ID_PF_BIT_RATE #define NFC_PMID_PF_RC NCI_PARAM_ID_PF_RC #define NFC_PMID_PB_H_INFO NCI_PARAM_ID_PB_H_INFO #define NFC_PMID_BITR_NFC_DEP NCI_PARAM_ID_BITR_NFC_DEP #define NFC_PMID_ATR_REQ_GEN_BYTES NCI_PARAM_ID_ATR_REQ_GEN_BYTES #define NFC_PMID_ATR_REQ_CONFIG NCI_PARAM_ID_ATR_REQ_CONFIG #define NFC_PMID_LA_HIST_BY NCI_PARAM_ID_LA_HIST_BY #define NFC_PMID_LA_NFCID1 NCI_PARAM_ID_LA_NFCID1 #define NFC_PMID_PI_BIT_RATE NCI_PARAM_ID_PI_BIT_RATE #define NFC_PMID_LA_BIT_FRAME_SDD NCI_PARAM_ID_LA_BIT_FRAME_SDD #define NFC_PMID_LA_PLATFORM_CONFIG NCI_PARAM_ID_LA_PLATFORM_CONFIG #define NFC_PMID_LA_SEL_INFO NCI_PARAM_ID_LA_SEL_INFO #define NFC_PMID_LI_BIT_RATE NCI_PARAM_ID_LI_BIT_RATE #define NFC_PMID_LB_SENSB_INFO NCI_PARAM_ID_LB_SENSB_INFO #define NFC_PMID_LB_PROTOCOL NCI_PARAM_ID_LB_PROTOCOL #define NFC_PMID_LB_H_INFO NCI_PARAM_ID_LB_H_INFO_RSP #define NFC_PMID_LB_NFCID0 NCI_PARAM_ID_LB_NFCID0 #define NFC_PMID_LB_APPDATA NCI_PARAM_ID_LB_APPDATA #define NFC_PMID_LB_SFGI NCI_PARAM_ID_LB_SFGI #define NFC_PMID_LB_ADC_FO NCI_PARAM_ID_LB_ADC_FO #define NFC_PMID_LF_T3T_ID1 NCI_PARAM_ID_LF_T3T_ID1 #define NFC_PMID_LF_T3T_ID2 NCI_PARAM_ID_LF_T3T_ID2 #define NFC_PMID_LF_T3T_ID3 NCI_PARAM_ID_LF_T3T_ID3 #define NFC_PMID_LF_T3T_ID4 NCI_PARAM_ID_LF_T3T_ID4 #define NFC_PMID_LF_T3T_ID5 NCI_PARAM_ID_LF_T3T_ID5 #define NFC_PMID_LF_T3T_ID6 NCI_PARAM_ID_LF_T3T_ID6 #define NFC_PMID_LF_T3T_ID7 NCI_PARAM_ID_LF_T3T_ID7 #define NFC_PMID_LF_T3T_ID8 NCI_PARAM_ID_LF_T3T_ID8 #define NFC_PMID_LF_T3T_ID9 NCI_PARAM_ID_LF_T3T_ID9 #define NFC_PMID_LF_T3T_ID10 NCI_PARAM_ID_LF_T3T_ID10 #define NFC_PMID_LF_T3T_ID11 NCI_PARAM_ID_LF_T3T_ID11 #define NFC_PMID_LF_T3T_ID12 NCI_PARAM_ID_LF_T3T_ID12 #define NFC_PMID_LF_T3T_ID13 NCI_PARAM_ID_LF_T3T_ID13 #define NFC_PMID_LF_T3T_ID14 NCI_PARAM_ID_LF_T3T_ID14 #define NFC_PMID_LF_T3T_ID15 NCI_PARAM_ID_LF_T3T_ID15 #define NFC_PMID_LF_T3T_ID16 NCI_PARAM_ID_LF_T3T_ID16 #define NFC_PMID_LF_PROTOCOL NCI_PARAM_ID_LF_PROTOCOL #define NFC_PMID_LF_T3T_PMM NCI_PARAM_ID_LF_T3T_PMM #define NFC_PMID_LF_T3T_MAX NCI_PARAM_ID_LF_T3T_MAX #define NFC_PMID_LF_T3T_FLAGS2 NCI_PARAM_ID_LF_T3T_FLAGS2 #define NFC_PMID_FWI NCI_PARAM_ID_FWI #define NFC_PMID_LF_CON_BITR_F NCI_PARAM_ID_LF_CON_BITR_F #define NFC_PMID_WT NCI_PARAM_ID_WT #define NFC_PMID_ATR_RES_GEN_BYTES NCI_PARAM_ID_ATR_RES_GEN_BYTES #define NFC_PMID_ATR_RSP_CONFIG NCI_PARAM_ID_ATR_RSP_CONFIG #define NFC_PMID_RF_FIELD_INFO NCI_PARAM_ID_RF_FIELD_INFO #define NFC_PMID_NFC_DEP_OP NCI_PARAM_ID_NFC_DEP_OP #define NFC_PARAM_ID_RF_EE_ACTION NCI_PARAM_ID_RF_EE_ACTION #define NFC_PARAM_ID_ISO_DEP_OP NCI_PARAM_ID_ISO_DEP_OP #define NFC_ROUTE_TAG_TECH NCI_ROUTE_TAG_TECH /* Technology based routing */ #define NFC_ROUTE_TAG_PROTO NCI_ROUTE_TAG_PROTO /* Protocol based routing */ #define NFC_ROUTE_TAG_AID NCI_ROUTE_TAG_AID /* AID routing */ #define NFC_ROUTE_TLV_ENTRY_SIZE 4 /* tag, len, 2 byte value for technology/protocol based routing */ /* For routing */ #define NFC_DH_ID NCI_DH_ID /* for DH */ /* To identify the loopback test */ #define NFC_TEST_ID NCI_TEST_ID /* use a proprietary range */ typedef UINT8 tNFC_PMID; #define NFC_TL_SIZE 2 #define NFC_SAVED_CMD_SIZE 2 typedef tNCI_DISCOVER_MAPS tNFC_DISCOVER_MAPS; typedef tNCI_DISCOVER_PARAMS tNFC_DISCOVER_PARAMS; /* all NFC Manager Callback functions have prototype like void (cback) (UINT8 event, void *p_data) * tNFC_DATA_CBACK uses connection id as the first parameter; range 0x00-0x0F. * tNFC_DISCOVER_CBACK uses tNFC_DISCOVER_EVT; range 0x4000 ~ * tNFC_RESPONSE_CBACK uses tNFC_RESPONSE_EVT; range 0x5000 ~ */ #define NFC_FIRST_DEVT 0x4000 #define NFC_FIRST_REVT 0x5000 #define NFC_FIRST_CEVT 0x6000 #define NFC_FIRST_TEVT 0x8000 /* the events reported on tNFC_RESPONSE_CBACK */ enum { NFC_ENABLE_REVT = NFC_FIRST_REVT, /* 0 Enable event */ NFC_DISABLE_REVT, /* 1 Disable event */ NFC_SET_CONFIG_REVT, /* 2 Set Config Response */ NFC_GET_CONFIG_REVT, /* 3 Get Config Response */ NFC_NFCEE_DISCOVER_REVT, /* 4 Discover NFCEE response */ NFC_NFCEE_INFO_REVT, /* 5 Discover NFCEE Notification */ NFC_NFCEE_MODE_SET_REVT, /* 6 NFCEE Mode Set response */ NFC_RF_FIELD_REVT, /* 7 RF Field information */ NFC_EE_ACTION_REVT, /* 8 EE Action notification */ NFC_EE_DISCOVER_REQ_REVT, /* 9 EE Discover Req notification */ NFC_SET_ROUTING_REVT, /* 10 Configure Routing response */ NFC_GET_ROUTING_REVT, /* 11 Retrieve Routing response */ NFC_RF_COMM_PARAMS_UPDATE_REVT, /* 12 RF Communication Param Update */ NFC_GEN_ERROR_REVT, /* 13 generic error notification */ NFC_NFCC_RESTART_REVT, /* 14 NFCC has been re-initialized */ NFC_NFCC_TIMEOUT_REVT, /* 15 NFCC is not responding */ NFC_NFCC_TRANSPORT_ERR_REVT, /* 16 NCI Tranport error */ NFC_NFCC_POWER_OFF_REVT, /* 17 NFCC turned off */ NFC_FIRST_VS_REVT /* First vendor-specific rsp event */ }; typedef UINT16 tNFC_RESPONSE_EVT; enum { NFC_CONN_CREATE_CEVT = NFC_FIRST_CEVT, /* 0 Conn Create Response */ NFC_CONN_CLOSE_CEVT, /* 1 Conn Close Response */ NFC_DEACTIVATE_CEVT, /* 2 Deactivate response/notificatn*/ NFC_DATA_CEVT, /* 3 Data */ NFC_ERROR_CEVT, /* 4 generic or interface error */ NFC_DATA_START_CEVT /* 5 received the first fragment on RF link */ }; typedef UINT16 tNFC_CONN_EVT; #define NFC_NFCC_INFO_LEN 4 #ifndef NFC_NFCC_MAX_NUM_VS_INTERFACE #define NFC_NFCC_MAX_NUM_VS_INTERFACE 5 #endif typedef struct { tNFC_STATUS status; /* The event status. */ UINT8 nci_version; /* the NCI version of NFCC */ UINT8 max_conn; /* max number of connections by NFCC*/ UINT32 nci_features; /* the NCI features of NFCC */ UINT16 nci_interfaces; /* the NCI interfaces of NFCC */ UINT16 max_ce_table; /* the max routing table size */ UINT16 max_param_size; /* Max Size for Large Parameters */ UINT8 manufacture_id; /* the Manufacture ID for NFCC */ UINT8 nfcc_info[NFC_NFCC_INFO_LEN];/* the Manufacture Info for NFCC */ UINT8 vs_interface[NFC_NFCC_MAX_NUM_VS_INTERFACE]; /* the NCI VS interfaces of NFCC */ } tNFC_ENABLE_REVT; #define NFC_MAX_NUM_IDS 125 /* the data type associated with NFC_SET_CONFIG_REVT */ typedef struct { tNFC_STATUS status; /* The event status. */ UINT8 num_param_id; /* Number of rejected NCI Param ID */ UINT8 param_ids[NFC_MAX_NUM_IDS];/* NCI Param ID */ } tNFC_SET_CONFIG_REVT; /* the data type associated with NFC_GET_CONFIG_REVT */ typedef struct { tNFC_STATUS status; /* The event status. */ UINT16 tlv_size; /* The length of TLV */ UINT8 *p_param_tlvs; /* TLV */ } tNFC_GET_CONFIG_REVT; /* the data type associated with NFC_NFCEE_DISCOVER_REVT */ typedef struct { tNFC_STATUS status; /* The event status. */ UINT8 num_nfcee; /* The number of NFCEE */ } tNFC_NFCEE_DISCOVER_REVT; #define NFC_NFCEE_INTERFACE_APDU NCI_NFCEE_INTERFACE_APDU #define NFC_NFCEE_INTERFACE_HCI_ACCESS NCI_NFCEE_INTERFACE_HCI_ACCESS #define NFC_NFCEE_INTERFACE_T3T NCI_NFCEE_INTERFACE_T3T #define NFC_NFCEE_INTERFACE_TRANSPARENT NCI_NFCEE_INTERFACE_TRANSPARENT #define NFC_NFCEE_INTERFACE_PROPRIETARY NCI_NFCEE_INTERFACE_PROPRIETARY typedef UINT8 tNFC_NFCEE_INTERFACE; #define NFC_NFCEE_TAG_HW_ID NCI_NFCEE_TAG_HW_ID #define NFC_NFCEE_TAG_ATR_BYTES NCI_NFCEE_TAG_ATR_BYTES #define NFC_NFCEE_TAG_T3T_INFO NCI_NFCEE_TAG_T3T_INFO #define NFC_NFCEE_TAG_HCI_HOST_ID NCI_NFCEE_TAG_HCI_HOST_ID typedef UINT8 tNFC_NFCEE_TAG; /* additional NFCEE Info */ typedef struct { tNFC_NFCEE_TAG tag; UINT8 len; UINT8 info[NFC_MAX_EE_INFO]; } tNFC_NFCEE_TLV; #define NFC_NFCEE_STATUS_INACTIVE NCI_NFCEE_STS_CONN_INACTIVE/* NFCEE connected and inactive */ #define NFC_NFCEE_STATUS_ACTIVE NCI_NFCEE_STS_CONN_ACTIVE /* NFCEE connected and active */ #define NFC_NFCEE_STATUS_REMOVED NCI_NFCEE_STS_REMOVED /* NFCEE removed */ /* the data type associated with NFC_NFCEE_INFO_REVT */ typedef struct { tNFC_STATUS status; /* The event status - place holder */ UINT8 nfcee_id; /* NFCEE ID */ UINT8 ee_status; /* The NFCEE status. */ UINT8 num_interface; /* number of NFCEE interfaces */ UINT8 ee_interface[NFC_MAX_EE_INTERFACE];/* NFCEE interface */ UINT8 num_tlvs; /* number of TLVs */ tNFC_NFCEE_TLV ee_tlv[NFC_MAX_EE_TLVS];/* The TLVs associated with NFCEE */ } tNFC_NFCEE_INFO_REVT; #define NFC_MODE_ACTIVATE NCI_NFCEE_MD_ACTIVATE #define NFC_MODE_DEACTIVATE NCI_NFCEE_MD_DEACTIVATE typedef UINT8 tNFC_NFCEE_MODE; /* the data type associated with NFC_NFCEE_MODE_SET_REVT */ typedef struct { tNFC_STATUS status; /* The event status.*/ UINT8 nfcee_id; /* NFCEE ID */ tNFC_NFCEE_MODE mode; /* NFCEE mode */ } tNFC_NFCEE_MODE_SET_REVT; #define NFC_MAX_AID_LEN NCI_MAX_AID_LEN /* 16 */ /* the data type associated with NFC_CE_GET_ROUTING_REVT */ typedef struct { tNFC_STATUS status; /* The event status */ UINT8 nfcee_id; /* NFCEE ID */ UINT8 num_tlvs; /* number of TLVs */ UINT8 tlv_size; /* the total len of all TLVs */ UINT8 param_tlvs[NFC_MAX_EE_TLV_SIZE];/* the TLVs */ } tNFC_GET_ROUTING_REVT; /* the data type associated with NFC_CONN_CREATE_CEVT */ typedef struct { tNFC_STATUS status; /* The event status */ UINT8 dest_type; /* the destination type */ UINT8 id; /* NFCEE ID or RF Discovery ID */ UINT8 buff_size; /* The max buffer size */ UINT8 num_buffs; /* The number of buffers */ } tNFC_CONN_CREATE_CEVT; /* the data type associated with NFC_CONN_CLOSE_CEVT */ typedef struct { tNFC_STATUS status; /* The event status */ } tNFC_CONN_CLOSE_CEVT; /* the data type associated with NFC_DATA_CEVT */ typedef struct { tNFC_STATUS status; /* The event status */ BT_HDR *p_data; /* The received Data */ } tNFC_DATA_CEVT; /* RF Field Status */ #define NFC_RF_STS_NO_REMOTE NCI_RF_STS_NO_REMOTE /* No field generated by remote device */ #define NFC_RF_STS_REMOTE NCI_RF_STS_REMOTE /* field generated by remote device */ typedef UINT8 tNFC_RF_STS; /* RF Field Technologies */ #define NFC_RF_TECHNOLOGY_A NCI_RF_TECHNOLOGY_A #define NFC_RF_TECHNOLOGY_B NCI_RF_TECHNOLOGY_B #define NFC_RF_TECHNOLOGY_F NCI_RF_TECHNOLOGY_F #define NFC_RF_TECHNOLOGY_15693 NCI_RF_TECHNOLOGY_15693 typedef UINT8 tNFC_RF_TECH; /* Supported Protocols */ #define NFC_PROTOCOL_UNKNOWN NCI_PROTOCOL_UNKNOWN /* Unknown */ #define NFC_PROTOCOL_T1T NCI_PROTOCOL_T1T /* Type1Tag - NFC-A */ #define NFC_PROTOCOL_T2T NCI_PROTOCOL_T2T /* Type2Tag - NFC-A */ #define NFC_PROTOCOL_T3T NCI_PROTOCOL_T3T /* Type3Tag - NFC-F */ #define NFC_PROTOCOL_ISO_DEP NCI_PROTOCOL_ISO_DEP /* Type 4A,4B - NFC-A or NFC-B */ #define NFC_PROTOCOL_NFC_DEP NCI_PROTOCOL_NFC_DEP /* NFCDEP/LLCP - NFC-A or NFC-F */ #define NFC_PROTOCOL_MIFARE NCI_PROTOCOL_MIFARE #define NFC_PROTOCOL_B_PRIME NCI_PROTOCOL_B_PRIME #define NFC_PROTOCOL_15693 NCI_PROTOCOL_15693 #define NFC_PROTOCOL_KOVIO NCI_PROTOCOL_KOVIO typedef UINT8 tNFC_PROTOCOL; /* Discovery Types/Detected Technology and Mode */ #define NFC_DISCOVERY_TYPE_POLL_A NCI_DISCOVERY_TYPE_POLL_A #define NFC_DISCOVERY_TYPE_POLL_B NCI_DISCOVERY_TYPE_POLL_B #define NFC_DISCOVERY_TYPE_POLL_F NCI_DISCOVERY_TYPE_POLL_F #define NFC_DISCOVERY_TYPE_POLL_A_ACTIVE NCI_DISCOVERY_TYPE_POLL_A_ACTIVE #define NFC_DISCOVERY_TYPE_POLL_F_ACTIVE NCI_DISCOVERY_TYPE_POLL_F_ACTIVE #define NFC_DISCOVERY_TYPE_POLL_ISO15693 NCI_DISCOVERY_TYPE_POLL_ISO15693 #define NFC_DISCOVERY_TYPE_POLL_B_PRIME NCI_DISCOVERY_TYPE_POLL_B_PRIME #define NFC_DISCOVERY_TYPE_POLL_KOVIO NCI_DISCOVERY_TYPE_POLL_KOVIO #define NFC_DISCOVERY_TYPE_LISTEN_A NCI_DISCOVERY_TYPE_LISTEN_A #define NFC_DISCOVERY_TYPE_LISTEN_B NCI_DISCOVERY_TYPE_LISTEN_B #define NFC_DISCOVERY_TYPE_LISTEN_F NCI_DISCOVERY_TYPE_LISTEN_F #define NFC_DISCOVERY_TYPE_LISTEN_A_ACTIVE NCI_DISCOVERY_TYPE_LISTEN_A_ACTIVE #define NFC_DISCOVERY_TYPE_LISTEN_F_ACTIVE NCI_DISCOVERY_TYPE_LISTEN_F_ACTIVE #define NFC_DISCOVERY_TYPE_LISTEN_ISO15693 NCI_DISCOVERY_TYPE_LISTEN_ISO15693 #define NFC_DISCOVERY_TYPE_LISTEN_B_PRIME NCI_DISCOVERY_TYPE_LISTEN_B_PRIME typedef UINT8 tNFC_DISCOVERY_TYPE; typedef UINT8 tNFC_RF_TECH_N_MODE; /* Select Response codes */ #define NFC_SEL_RES_NFC_FORUM_T2T 0x00 #define NFC_SEL_RES_MF_CLASSIC 0x08 /* Bit Rates */ #define NFC_BIT_RATE_106 NCI_BIT_RATE_106 /* 106 kbit/s */ #define NFC_BIT_RATE_212 NCI_BIT_RATE_212 /* 212 kbit/s */ #define NFC_BIT_RATE_424 NCI_BIT_RATE_424 /* 424 kbit/s */ #define NFC_BIT_RATE_848 NCI_BIT_RATE_848 /* 848 Kbit/s */ #define NFC_BIT_RATE_1696 NCI_BIT_RATE_1696 /* 1696 Kbit/s*/ #define NFC_BIT_RATE_3392 NCI_BIT_RATE_3392 /* 3392 Kbit/s*/ #define NFC_BIT_RATE_6784 NCI_BIT_RATE_6784 /* 6784 Kbit/s*/ typedef UINT8 tNFC_BIT_RATE; /********************************************** * Interface Types **********************************************/ #define NFC_INTERFACE_EE_DIRECT_RF NCI_INTERFACE_EE_DIRECT_RF #define NFC_INTERFACE_FRAME NCI_INTERFACE_FRAME #define NFC_INTERFACE_ISO_DEP NCI_INTERFACE_ISO_DEP #define NFC_INTERFACE_NDEF NCI_INTERFACE_NDEF #define NFC_INTERFACE_NFC_DEP NCI_INTERFACE_NFC_DEP #define NFC_INTERFACE_LLCP_LOW NCI_INTERFACE_LLCP_LOW #define NFC_INTERFACE_LLCP_HIGH NCI_INTERFACE_LLCP_HIGH #define NFC_INTERFACE_VS_T2T_CE NCI_INTERFACE_VS_T2T_CE #define NFC_INTERFACE_MIFARE NCI_INTERFACE_VS_MIFARE typedef tNCI_INTF_TYPE tNFC_INTF_TYPE; /********************************************** * Deactivation Type **********************************************/ #define NFC_DEACTIVATE_TYPE_IDLE NCI_DEACTIVATE_TYPE_IDLE #define NFC_DEACTIVATE_TYPE_SLEEP NCI_DEACTIVATE_TYPE_SLEEP #define NFC_DEACTIVATE_TYPE_SLEEP_AF NCI_DEACTIVATE_TYPE_SLEEP_AF #define NFC_DEACTIVATE_TYPE_DISCOVERY NCI_DEACTIVATE_TYPE_DISCOVERY typedef UINT8 tNFC_DEACT_TYPE; /********************************************** * Deactivation Reasons **********************************************/ #define NFC_DEACTIVATE_REASON_DH_REQ NCI_DEACTIVATE_REASON_DH_REQ #define NFC_DEACTIVATE_REASON_ENDPOINT_REQ NCI_DEACTIVATE_REASON_ENDPOINT_REQ #define NFC_DEACTIVATE_REASON_RF_LINK_LOSS NCI_DEACTIVATE_REASON_RF_LINK_LOSS #define NFC_DEACTIVATE_REASON_NFCB_BAD_AFI NCI_DEACTIVATE_REASON_NFCB_BAD_AFI typedef UINT8 tNFC_DEACT_REASON; /* the data type associated with NFC_RF_FIELD_REVT */ typedef struct { tNFC_STATUS status; /* The event status - place holder. */ tNFC_RF_STS rf_field; /* RF Field Status */ } tNFC_RF_FIELD_REVT; #define NFC_MAX_APP_DATA_LEN 40 typedef struct { UINT8 len_aid; /* length of application id */ UINT8 aid[NFC_MAX_AID_LEN]; /* application id */ } tNFC_AID; typedef struct { UINT8 len_aid; /* length of application id */ UINT8 aid[NFC_MAX_AID_LEN]; /* application id */ UINT8 len_data; /* len of application data */ UINT8 data[NFC_MAX_APP_DATA_LEN]; /* application data */ } tNFC_APP_INIT; #define NFC_EE_TRIG_SELECT NCI_EE_TRIG_7816_SELECT /* ISO 7816-4 SELECT command */ #define NFC_EE_TRIG_RF_PROTOCOL NCI_EE_TRIG_RF_PROTOCOL /* RF Protocol changed */ #define NFC_EE_TRIG_RF_TECHNOLOGY NCI_EE_TRIG_RF_TECHNOLOGY/* RF Technology changed */ #define NFC_EE_TRIG_APP_INIT NCI_EE_TRIG_APP_INIT /* Application initiation */ typedef UINT8 tNFC_EE_TRIGGER; typedef struct { tNFC_EE_TRIGGER trigger; /* the trigger of this event */ union { tNFC_PROTOCOL protocol; tNFC_RF_TECH technology; tNFC_AID aid; tNFC_APP_INIT app_init; } param; /* Discovery Type specific parameters */ } tNFC_ACTION_DATA; /* the data type associated with NFC_EE_ACTION_REVT */ typedef struct { tNFC_STATUS status; /* The event status - place holder */ UINT8 nfcee_id; /* NFCEE ID */ tNFC_ACTION_DATA act_data; /* data associated /w the action */ } tNFC_EE_ACTION_REVT; #define NFC_EE_DISC_OP_ADD 0 #define NFC_EE_DISC_OP_REMOVE 1 typedef UINT8 tNFC_EE_DISC_OP; typedef struct { tNFC_EE_DISC_OP op; /* add or remove this entry */ UINT8 nfcee_id; /* NFCEE ID */ tNFC_RF_TECH_N_MODE tech_n_mode; /* Discovery Technology and Mode */ tNFC_PROTOCOL protocol; /* NFC protocol */ } tNFC_EE_DISCOVER_INFO; #ifndef NFC_MAX_EE_DISC_ENTRIES #define NFC_MAX_EE_DISC_ENTRIES 6 #endif #define NFC_EE_DISCOVER_ENTRY_LEN 5 /* T, L, V(NFCEE ID, TechnMode, Protocol) */ #define NFC_EE_DISCOVER_INFO_LEN 3 /* NFCEE ID, TechnMode, Protocol */ /* the data type associated with NFC_EE_DISCOVER_REQ_REVT */ typedef struct { tNFC_STATUS status; /* The event status - place holder */ UINT8 num_info; /* number of entries in info[] */ tNFC_EE_DISCOVER_INFO info[NFC_MAX_EE_DISC_ENTRIES]; /* discovery request from NFCEE */ } tNFC_EE_DISCOVER_REQ_REVT; typedef union { tNFC_STATUS status; /* The event status. */ tNFC_ENABLE_REVT enable; tNFC_SET_CONFIG_REVT set_config; tNFC_GET_CONFIG_REVT get_config; tNFC_NFCEE_DISCOVER_REVT nfcee_discover; tNFC_NFCEE_INFO_REVT nfcee_info; tNFC_NFCEE_MODE_SET_REVT mode_set; tNFC_RF_FIELD_REVT rf_field; tNFC_STATUS cfg_routing; tNFC_GET_ROUTING_REVT get_routing; tNFC_EE_ACTION_REVT ee_action; tNFC_EE_DISCOVER_REQ_REVT ee_discover_req; void *p_vs_evt_data; } tNFC_RESPONSE; /************************************* ** RESPONSE Callback Functions **************************************/ typedef void (tNFC_RESPONSE_CBACK) (tNFC_RESPONSE_EVT event, tNFC_RESPONSE *p_data); /* The events reported on tNFC_VS_CBACK */ /* The event is (NCI_RSP_BIT|oid) for response and (NCI_NTF_BIT|oid) for notification*/ typedef UINT8 tNFC_VS_EVT; /************************************* ** Proprietary (Vendor Specific) Callback Functions **************************************/ typedef void (tNFC_VS_CBACK) (tNFC_VS_EVT event, UINT16 data_len, UINT8 *p_data); /* the events reported on tNFC_DISCOVER_CBACK */ enum { NFC_START_DEVT = NFC_FIRST_DEVT, /* Status of NFC_DiscoveryStart */ NFC_MAP_DEVT, /* Status of NFC_DiscoveryMap */ NFC_RESULT_DEVT, /* The responses from remote device */ NFC_SELECT_DEVT, /* Status of NFC_DiscoverySelect */ NFC_ACTIVATE_DEVT, /* RF interface is activated */ NFC_DEACTIVATE_DEVT /* Status of RF deactivation */ }; typedef UINT16 tNFC_DISCOVER_EVT; /* the data type associated with NFC_START_DEVT */ typedef tNFC_STATUS tNFC_START_DEVT; typedef tNCI_RF_PA_PARAMS tNFC_RF_PA_PARAMS; #define NFC_MAX_SENSB_RES_LEN NCI_MAX_SENSB_RES_LEN #define NFC_NFCID0_MAX_LEN 4 typedef struct { UINT8 sensb_res_len;/* Length of SENSB_RES Response (Byte 2 - Byte 12 or 13) Available after Technology Detection */ UINT8 sensb_res[NFC_MAX_SENSB_RES_LEN]; /* SENSB_RES Response (ATQ) */ UINT8 nfcid0[NFC_NFCID0_MAX_LEN]; } tNFC_RF_PB_PARAMS; #define NFC_MAX_SENSF_RES_LEN NCI_MAX_SENSF_RES_LEN #define NFC_NFCID2_LEN NCI_NFCID2_LEN typedef struct { UINT8 bit_rate;/* NFC_BIT_RATE_212 or NFC_BIT_RATE_424 */ UINT8 sensf_res_len;/* Length of SENSF_RES Response (Byte 2 - Byte 17 or 19) Available after Technology Detection */ UINT8 sensf_res[NFC_MAX_SENSF_RES_LEN]; /* SENSB_RES Response */ UINT8 nfcid2[NFC_NFCID2_LEN]; /* NFCID2 generated by the Local NFCC for NFC-DEP Protocol.Available for Frame Interface */ UINT8 mrti_check; UINT8 mrti_update; } tNFC_RF_PF_PARAMS; typedef tNCI_RF_LF_PARAMS tNFC_RF_LF_PARAMS; #define NFC_ISO15693_UID_LEN 8 typedef struct { UINT8 flag; UINT8 dsfid; UINT8 uid[NFC_ISO15693_UID_LEN]; } tNFC_RF_PISO15693_PARAMS; #ifndef NFC_KOVIO_MAX_LEN #define NFC_KOVIO_MAX_LEN 32 #endif typedef struct { UINT8 uid_len; UINT8 uid[NFC_KOVIO_MAX_LEN]; } tNFC_RF_PKOVIO_PARAMS; typedef union { tNFC_RF_PA_PARAMS pa; tNFC_RF_PB_PARAMS pb; tNFC_RF_PF_PARAMS pf; tNFC_RF_LF_PARAMS lf; tNFC_RF_PISO15693_PARAMS pi93; tNFC_RF_PKOVIO_PARAMS pk; } tNFC_RF_TECH_PARAMU; typedef struct { tNFC_DISCOVERY_TYPE mode; tNFC_RF_TECH_PARAMU param; } tNFC_RF_TECH_PARAMS; /* the data type associated with NFC_RESULT_DEVT */ typedef struct { tNFC_STATUS status; /* The event status - place holder. */ UINT8 rf_disc_id; /* RF Discovery ID */ UINT8 protocol; /* supported protocol */ tNFC_RF_TECH_PARAMS rf_tech_param; /* RF technology parameters */ UINT8 more; /* 0: last, 1: last (limit), 2: more */ } tNFC_RESULT_DEVT; /* the data type associated with NFC_SELECT_DEVT */ typedef tNFC_STATUS tNFC_SELECT_DEVT; /* the data type associated with NFC_STOP_DEVT */ typedef tNFC_STATUS tNFC_STOP_DEVT; #define NFC_MAX_ATS_LEN NCI_MAX_ATS_LEN #define NFC_MAX_HIS_BYTES_LEN NCI_MAX_HIS_BYTES_LEN #define NFC_MAX_GEN_BYTES_LEN NCI_MAX_GEN_BYTES_LEN typedef struct { UINT8 ats_res_len; /* Length of ATS RES */ UINT8 ats_res[NFC_MAX_ATS_LEN]; /* ATS RES */ BOOLEAN nad_used; /* NAD is used or not */ UINT8 fwi; /* Frame Waiting time Integer */ UINT8 sfgi; /* Start-up Frame Guard time Integer*/ UINT8 his_byte_len; /* len of historical bytes */ UINT8 his_byte[NFC_MAX_HIS_BYTES_LEN];/* historical bytes */ } tNFC_INTF_PA_ISO_DEP; typedef struct { UINT8 rats; /* RATS */ } tNFC_INTF_LA_ISO_DEP; typedef struct { UINT8 atr_res_len; /* Length of ATR_RES */ UINT8 atr_res[NFC_MAX_ATS_LEN]; /* ATR_RES (Byte 3 - Byte 17+n) */ UINT8 max_payload_size; /* 64, 128, 192 or 254 */ UINT8 gen_bytes_len; /* len of general bytes */ UINT8 gen_bytes[NFC_MAX_GEN_BYTES_LEN];/* general bytes */ UINT8 waiting_time; /* WT -> Response Waiting Time RWT = (256 x 16/fC) x 2WT */ } tNFC_INTF_PA_NFC_DEP; /* Note: keep tNFC_INTF_PA_NFC_DEP data member in the same order as tNFC_INTF_LA_NFC_DEP */ typedef struct { UINT8 atr_req_len; /* Length of ATR_REQ */ UINT8 atr_req[NFC_MAX_ATS_LEN]; /* ATR_REQ (Byte 3 - Byte 18+n) */ UINT8 max_payload_size; /* 64, 128, 192 or 254 */ UINT8 gen_bytes_len; /* len of general bytes */ UINT8 gen_bytes[NFC_MAX_GEN_BYTES_LEN];/* general bytes */ } tNFC_INTF_LA_NFC_DEP; typedef tNFC_INTF_LA_NFC_DEP tNFC_INTF_LF_NFC_DEP; typedef tNFC_INTF_PA_NFC_DEP tNFC_INTF_PF_NFC_DEP; #define NFC_MAX_ATTRIB_LEN NCI_MAX_ATTRIB_LEN typedef struct { UINT8 attrib_res_len; /* Length of ATTRIB RES */ UINT8 attrib_res[NFC_MAX_ATTRIB_LEN];/* ATTRIB RES */ UINT8 hi_info_len; /* len of Higher layer Info */ UINT8 hi_info[NFC_MAX_GEN_BYTES_LEN];/* Higher layer Info */ UINT8 mbli; /* Maximum buffer length. */ } tNFC_INTF_PB_ISO_DEP; typedef struct { UINT8 attrib_req_len; /* Length of ATTRIB REQ */ UINT8 attrib_req[NFC_MAX_ATTRIB_LEN];/* ATTRIB REQ (Byte 2 - 10+k)*/ UINT8 hi_info_len; /* len of Higher layer Info */ UINT8 hi_info[NFC_MAX_GEN_BYTES_LEN];/* Higher layer Info */ UINT8 nfcid0[NFC_NFCID0_MAX_LEN]; /* NFCID0 */ } tNFC_INTF_LB_ISO_DEP; #ifndef NFC_MAX_RAW_PARAMS #define NFC_MAX_RAW_PARAMS 16 #endif #define NFC_MAX_RAW_PARAMS 16 typedef struct { UINT8 param_len; UINT8 param[NFC_MAX_RAW_PARAMS]; } tNFC_INTF_FRAME; typedef struct { tNFC_INTF_TYPE type; /* Interface Type 1 Byte See Table 67 */ union { tNFC_INTF_LA_ISO_DEP la_iso; tNFC_INTF_PA_ISO_DEP pa_iso; tNFC_INTF_LB_ISO_DEP lb_iso; tNFC_INTF_PB_ISO_DEP pb_iso; tNFC_INTF_LA_NFC_DEP la_nfc; tNFC_INTF_PA_NFC_DEP pa_nfc; tNFC_INTF_LF_NFC_DEP lf_nfc; tNFC_INTF_PF_NFC_DEP pf_nfc; tNFC_INTF_FRAME frame; } intf_param; /* Activation Parameters 0 - n Bytes */ } tNFC_INTF_PARAMS; /* the data type associated with NFC_ACTIVATE_DEVT */ typedef struct { UINT8 rf_disc_id; /* RF Discovery ID */ tNFC_PROTOCOL protocol; /* supported protocol */ tNFC_RF_TECH_PARAMS rf_tech_param; /* RF technology parameters */ tNFC_DISCOVERY_TYPE data_mode; /* for future Data Exchange */ tNFC_BIT_RATE tx_bitrate; /* Data Exchange Tx Bitrate */ tNFC_BIT_RATE rx_bitrate; /* Data Exchange Rx Bitrate */ tNFC_INTF_PARAMS intf_param; /* interface type and params*/ } tNFC_ACTIVATE_DEVT; /* the data type associated with NFC_DEACTIVATE_DEVT and NFC_DEACTIVATE_CEVT */ typedef struct { tNFC_STATUS status; /* The event status. */ tNFC_DEACT_TYPE type; /* De-activate type */ BOOLEAN is_ntf; /* TRUE, if deactivate notif*/ } tNFC_DEACTIVATE_DEVT; typedef union { tNFC_STATUS status; /* The event status. */ tNFC_START_DEVT start; tNFC_RESULT_DEVT result; tNFC_SELECT_DEVT select; tNFC_STOP_DEVT stop; tNFC_ACTIVATE_DEVT activate; tNFC_DEACTIVATE_DEVT deactivate; } tNFC_DISCOVER; /* Min TR0 indicates to tag the min delay before responding after the end of command */ #define NFC_RF_PARAM_MIN_TR0_DEFAULT 0x00 #define NFC_RF_PARAM_MIN_TR0_48X 0x01 /* 48 x 16/fc */ #define NFC_RF_PARAM_MIN_TR0_16X 0x02 /* 16 x 16/fc */ /* Min TR1 indicates to tag the min delay between subcarrier modulation and data transmission */ #define NFC_RF_PARAM_MIN_TR1_DEFAULT 0x00 #define NFC_RF_PARAM_MIN_TR1_64X 0x01 /* 64 x 16/fc */ #define NFC_RF_PARAM_MIN_TR1_16X 0x02 /* 16 x 16/fc */ /* Min TR2 indicates to RW the min delay between EoS of tag and SoS of RW */ #define NFC_RF_PARAM_MIN_TR2_1792 0x00 /* 1792/fc (10etu + 32/fc) */ #define NFC_RF_PARAM_MIN_TR2_3328 0x01 /* 3328/fc (10etu + 128/fc) */ #define NFC_RF_PARAM_MIN_TR2_5376 0x02 /* 5376/fc (10etu + 256/fc) */ #define NFC_RF_PARAM_MIN_TR2_9472 0x03 /* 9472/fc (10etu + 512/fc) */ #define NFC_RF_PARAM_EOS_REQUIRED 0x00 /* EoS required */ #define NFC_RF_PARAM_EOS_NOT_REQUIRED 0x01 /* EoS not required */ #define NFC_RF_PARAM_SOS_REQUIRED 0x00 /* SoS required */ #define NFC_RF_PARAM_SOS_NOT_REQUIRED 0x01 /* SoS not required */ typedef struct { BOOLEAN include_rf_tech_mode; /* TRUE if including RF Tech and Mode update */ tNFC_RF_TECH_N_MODE rf_tech_n_mode; /* RF tech and mode */ BOOLEAN include_tx_bit_rate; /* TRUE if including Tx bit rate update */ tNFC_BIT_RATE tx_bit_rate; /* Transmit Bit Rate */ BOOLEAN include_rx_bit_rate; /* TRUE if including Rx bit rate update */ tNFC_BIT_RATE rx_bit_rate; /* Receive Bit Rate */ BOOLEAN include_nfc_b_config; /* TRUE if including NFC-B data exchange config */ UINT8 min_tr0; /* Minimun TR0 */ UINT8 min_tr1; /* Minimun TR1 */ UINT8 suppression_eos; /* Suppression of EoS */ UINT8 suppression_sos; /* Suppression of SoS */ UINT8 min_tr2; /* Minimun TR1 */ } tNFC_RF_COMM_PARAMS; /************************************* ** DISCOVER Callback Functions **************************************/ typedef void (tNFC_DISCOVER_CBACK) (tNFC_DISCOVER_EVT event, tNFC_DISCOVER *p_data); /* the events reported on tNFC_TEST_CBACK */ enum { NFC_LOOPBACK_TEVT = NFC_FIRST_TEVT, /* 0 Loopback test */ NFC_RF_CONTROL_TEVT, /* 1 RF control Test response */ NFC_RF_FIELD_DONE_TEVT /* 1 RF control Test notificatn*/ }; typedef UINT16 tNFC_TEST_EVT; /* the data type associated with NFC_LOOPBACK_TEVT */ typedef struct { tNFC_STATUS status; /* The event status. */ BT_HDR *p_data; /* The loop back data from NFCC */ } tNFC_LOOPBACK_TEVT; /* the data type associated with NFC_RF_CONTROL_TEVT */ typedef tNFC_STATUS tNFC_RF_CONTROL_TEVT; typedef union { tNFC_STATUS status; /* The event status. */ tNFC_LOOPBACK_TEVT loop_back; tNFC_RF_CONTROL_TEVT rf_control; } tNFC_TEST; /************************************* ** TEST Callback Functions **************************************/ typedef void (tNFC_TEST_CBACK) (tNFC_TEST_EVT event, tNFC_TEST *p_data); typedef tNFC_DEACTIVATE_DEVT tNFC_DEACTIVATE_CEVT; typedef union { tNFC_STATUS status; /* The event status. */ tNFC_CONN_CREATE_CEVT conn_create; tNFC_CONN_CLOSE_CEVT conn_close; tNFC_DEACTIVATE_CEVT deactivate; tNFC_DATA_CEVT data; } tNFC_CONN; /************************************* ** Data Callback Functions **************************************/ typedef void (tNFC_CONN_CBACK) (UINT8 conn_id, tNFC_CONN_EVT event, tNFC_CONN *p_data); #define NFC_MAX_CONN_ID 15 #define NFC_ILLEGAL_CONN_ID 0xFF #define NFC_RF_CONN_ID 0 /* the static connection ID for RF traffic */ /************************************* ** Status callback function **************************************/ typedef void (tNFC_STATUS_CBACK) (tNFC_STATUS status); /***************************************************************************** ** EXTERNAL FUNCTION DECLARATIONS *****************************************************************************/ #ifdef __cplusplus extern "C" { #endif /******************************************************************************* ** ** Function NFC_Enable ** ** Description This function enables NFC. Prior to calling NFC_Enable: ** - the NFCC must be powered up, and ready to receive commands. ** - GKI must be enabled ** - NFC_TASK must be started ** - NCIT_TASK must be started (if using dedicated NCI transport) ** ** This function opens the NCI transport (if applicable), ** resets the NFC controller, and initializes the NFC subsystems. ** ** When the NFC startup procedure is completed, an ** NFC_ENABLE_REVT is returned to the application using the ** tNFC_RESPONSE_CBACK. ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_Enable (tNFC_RESPONSE_CBACK *p_cback); /******************************************************************************* ** ** Function NFC_Disable ** ** Description This function performs clean up routines for shutting down ** NFC and closes the NCI transport (if using dedicated NCI ** transport). ** ** When the NFC shutdown procedure is completed, an ** NFC_DISABLED_REVT is returned to the application using the ** tNFC_RESPONSE_CBACK. ** ** Returns nothing ** *******************************************************************************/ NFC_API extern void NFC_Disable (void); /******************************************************************************* ** ** Function NFC_Init ** ** Description This function initializes control blocks for NFC ** ** Returns nothing ** *******************************************************************************/ NFC_API extern void NFC_Init(tHAL_NFC_ENTRY *p_hal_entry_tbl); /******************************************************************************* ** ** Function NFC_GetLmrtSize ** ** Description Called by application wto query the Listen Mode Routing ** Table size supported by NFCC ** ** Returns Listen Mode Routing Table size ** *******************************************************************************/ NFC_API extern UINT16 NFC_GetLmrtSize(void); /******************************************************************************* ** ** Function NFC_SetConfig ** ** Description This function is called to send the configuration parameter ** TLV to NFCC. The response from NFCC is reported by ** tNFC_RESPONSE_CBACK as NFC_SET_CONFIG_REVT. ** ** Parameters tlv_size - the length of p_param_tlvs. ** p_param_tlvs - the parameter ID/Len/Value list ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_SetConfig (UINT8 tlv_size, UINT8 *p_param_tlvs); /******************************************************************************* ** ** Function NFC_GetConfig ** ** Description This function is called to retrieve the parameter TLV from NFCC. ** The response from NFCC is reported by tNFC_RESPONSE_CBACK ** as NFC_GET_CONFIG_REVT. ** ** Parameters num_ids - the number of parameter IDs ** p_param_ids - the parameter ID list. ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_GetConfig (UINT8 num_ids, UINT8 *p_param_ids); /******************************************************************************* ** ** Function NFC_NfceeDiscover ** ** Description This function is called to enable or disable NFCEE Discovery. ** The response from NFCC is reported by tNFC_RESPONSE_CBACK ** as NFC_NFCEE_DISCOVER_REVT. ** The notification from NFCC is reported by tNFC_RESPONSE_CBACK ** as NFC_NFCEE_INFO_REVT. ** ** Parameters discover - 1 to enable discover, 0 to disable. ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_NfceeDiscover (BOOLEAN discover); /******************************************************************************* ** ** Function NFC_NfceeModeSet ** ** Description This function is called to activate or de-activate an NFCEE ** connected to the NFCC. ** The response from NFCC is reported by tNFC_RESPONSE_CBACK ** as NFC_NFCEE_MODE_SET_REVT. ** ** Parameters nfcee_id - the NFCEE to activate or de-activate. ** mode - 0 to activate NFCEE, 1 to de-activate. ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_NfceeModeSet (UINT8 nfcee_id, tNFC_NFCEE_MODE mode); /******************************************************************************* ** ** Function NFC_DiscoveryMap ** ** Description This function is called to set the discovery interface mapping. ** The response from NFCC is reported by tNFC_DISCOVER_CBACK as. ** NFC_MAP_DEVT. ** ** Parameters num - the number of items in p_params. ** p_maps - the discovery interface mappings ** p_cback - the discovery callback function ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_DiscoveryMap(UINT8 num, tNFC_DISCOVER_MAPS *p_maps, tNFC_DISCOVER_CBACK *p_cback); /******************************************************************************* ** ** Function NFC_DiscoveryStart ** ** Description This function is called to start Polling and/or Listening. ** The response from NFCC is reported by tNFC_DISCOVER_CBACK as. ** NFC_START_DEVT. The notification from NFCC is reported by ** tNFC_DISCOVER_CBACK as NFC_RESULT_DEVT. ** ** Parameters num_params - the number of items in p_params. ** p_params - the discovery parameters ** p_cback - the discovery callback function ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_DiscoveryStart(UINT8 num_params, tNFC_DISCOVER_PARAMS *p_params, tNFC_DISCOVER_CBACK *p_cback); /******************************************************************************* ** ** Function NFC_DiscoverySelect ** ** Description If tNFC_DISCOVER_CBACK reports status=NFC_MULTIPLE_PROT, ** the application needs to use this function to select the ** the logical endpoint to continue. The response from NFCC is ** reported by tNFC_DISCOVER_CBACK as NFC_SELECT_DEVT. ** ** Parameters rf_disc_id - The ID identifies the remote device. ** protocol - the logical endpoint on the remote devide ** rf_interface - the RF interface to communicate with NFCC ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_DiscoverySelect (UINT8 rf_disc_id, UINT8 protocol, UINT8 rf_interface); /******************************************************************************* ** ** Function NFC_ConnCreate ** ** Description This function is called to create a logical connection with ** NFCC for data exchange. ** The response from NFCC is reported in tNFC_CONN_CBACK ** as NFC_CONN_CREATE_CEVT. ** ** Parameters dest_type - the destination type ** id - the NFCEE ID or RF Discovery ID . ** protocol - the protocol ** p_cback - the data callback function to receive data fron NFCC ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_ConnCreate(UINT8 dest_type, UINT8 id, UINT8 protocol, tNFC_CONN_CBACK *p_cback); /******************************************************************************* ** ** Function NFC_ConnClose ** ** Description This function is called to close a logical connection with ** NFCC. ** The response from NFCC is reported in tNFC_CONN_CBACK ** as NFC_CONN_CLOSE_CEVT. ** ** Parameters conn_id - the connection id. ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_ConnClose(UINT8 conn_id); /******************************************************************************* ** ** Function NFC_SetStaticRfCback ** ** Description This function is called to update the data callback function ** to receive the data for the given connection id. ** ** Parameters p_cback - the connection callback function ** ** Returns Nothing ** *******************************************************************************/ NFC_API extern void NFC_SetStaticRfCback(tNFC_CONN_CBACK *p_cback); /******************************************************************************* ** ** Function NFC_SetReassemblyFlag ** ** Description This function is called to set if nfc will reassemble ** nci packet as much as its buffer can hold or it should not ** reassemble but forward the fragmented nci packet to layer above. ** If nci data pkt is fragmented, nfc may send multiple ** NFC_DATA_CEVT with status NFC_STATUS_CONTINUE before sending ** NFC_DATA_CEVT with status NFC_STATUS_OK based on reassembly ** configuration and reassembly buffer size ** ** Parameters reassembly - flag to indicate if nfc may reassemble or not ** ** Returns Nothing ** *******************************************************************************/ NFC_API extern void NFC_SetReassemblyFlag (BOOLEAN reassembly); /******************************************************************************* ** ** Function NFC_SendData ** ** Description This function is called to send the given data packet ** to the connection identified by the given connection id. ** ** Parameters conn_id - the connection id. ** p_data - the data packet ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_SendData(UINT8 conn_id, BT_HDR *p_data); /******************************************************************************* ** ** Function NFC_FlushData ** ** Description This function is called to discard the tx data queue of ** the given connection id. ** ** Parameters conn_id - the connection id. ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_FlushData (UINT8 conn_id); /******************************************************************************* ** ** Function NFC_Deactivate ** ** Description This function is called to stop the discovery process or ** put the listen device in sleep mode or terminate the NFC link. ** ** The response from NFCC is reported by tNFC_DISCOVER_CBACK ** as NFC_DEACTIVATE_DEVT. ** ** Parameters deactivate_type - NFC_DEACTIVATE_TYPE_IDLE, to IDLE mode. ** NFC_DEACTIVATE_TYPE_SLEEP to SLEEP mode. ** NFC_DEACTIVATE_TYPE_SLEEP_AF to SLEEP_AF mode. ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_Deactivate(tNFC_DEACT_TYPE deactivate_type); /******************************************************************************* ** ** Function NFC_UpdateRFCommParams ** ** Description This function is called to update RF Communication parameters ** once the Frame RF Interface has been activated. ** ** The response from NFCC is reported by tNFC_RESPONSE_CBACK ** as NFC_RF_COMM_PARAMS_UPDATE_REVT. ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_UpdateRFCommParams (tNFC_RF_COMM_PARAMS *p_params); /******************************************************************************* ** ** Function NFC_SetPowerOffSleep ** ** Description This function closes/opens transport and turns off/on NFCC. ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_SetPowerOffSleep (BOOLEAN enable); /******************************************************************************* ** ** Function NFC_PowerCycleNFCC ** ** Description This function turns off and then on NFCC. ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_PowerCycleNFCC (void); /******************************************************************************* ** ** Function NFC_SetRouting ** ** Description This function is called to configure the CE routing table. ** The response from NFCC is reported by tNFC_RESPONSE_CBACK ** as NFC_SET_ROUTING_REVT. ** ** Parameters ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_SetRouting(BOOLEAN more, UINT8 num_tlv, UINT8 tlv_size, UINT8 *p_param_tlvs); /******************************************************************************* ** ** Function NFC_GetRouting ** ** Description This function is called to retrieve the CE routing table from ** NFCC. The response from NFCC is reported by tNFC_RESPONSE_CBACK ** as NFC_GET_ROUTING_REVT. ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_GetRouting(void); /******************************************************************************* ** ** Function NFC_RegVSCback ** ** Description This function is called to register or de-register a callback ** function to receive Proprietary NCI response and notification ** events. ** The maximum number of callback functions allowed is NFC_NUM_VS_CBACKS ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_RegVSCback (BOOLEAN is_register, tNFC_VS_CBACK *p_cback); /******************************************************************************* ** ** Function NFC_SendVsCommand ** ** Description This function is called to send the given vendor specific ** command to NFCC. The response from NFCC is reported to the ** given tNFC_VS_CBACK as (oid). ** ** Parameters oid - The opcode of the VS command. ** p_data - The parameters for the VS command ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_SendVsCommand(UINT8 oid, BT_HDR *p_data, tNFC_VS_CBACK *p_cback); /******************************************************************************* ** ** Function NFC_TestLoopback ** ** Description This function is called to send the given data packet ** to NFCC for loopback test. ** When loopback data is received from NFCC, tNFC_TEST_CBACK . ** reports a NFC_LOOPBACK_TEVT. ** ** Parameters p_data - the data packet ** ** Returns tNFC_STATUS ** *******************************************************************************/ NFC_API extern tNFC_STATUS NFC_TestLoopback(BT_HDR *p_data); /******************************************************************************* ** ** Function NFC_SetTraceLevel ** ** Description This function sets the trace level for NFC. If called with ** a value of 0xFF, it simply returns the current trace level. ** ** Returns The new or current trace level ** *******************************************************************************/ NFC_API extern UINT8 NFC_SetTraceLevel (UINT8 new_level); #if (BT_TRACE_VERBOSE == TRUE) /******************************************************************************* ** ** Function NFC_GetStatusName ** ** Description This function returns the status name. ** ** NOTE conditionally compiled to save memory. ** ** Returns pointer to the name ** *******************************************************************************/ NFC_API extern char * NFC_GetStatusName (tNFC_STATUS status); #endif #ifdef __cplusplus } #endif #endif /* NFC_API_H */