nfa_ee_int.h revision e9df6ba5a8fcccf306a80b1670b423be8fe7746a
1eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar/****************************************************************************** 2eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar * 3eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar * Copyright (C) 2010-2012 Broadcom Corporation 4eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar * 5eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar * Licensed under the Apache License, Version 2.0 (the "License"); 6eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar * you may not use this file except in compliance with the License. 7eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar * You may obtain a copy of the License at: 8eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar * 9eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar * http://www.apache.org/licenses/LICENSE-2.0 1002c23ebf41ae2f70da0ba7337e05c51fbfe35f7fDouglas Gregor * 1102c23ebf41ae2f70da0ba7337e05c51fbfe35f7fDouglas Gregor * Unless required by applicable law or agreed to in writing, software 12eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar * distributed under the License is distributed on an "AS IS" BASIS, 13cfa88f893915ceb8ae4ce2f17c46c24a4d67502fDmitri Gribenko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1402c23ebf41ae2f70da0ba7337e05c51fbfe35f7fDouglas Gregor * See the License for the specific language governing permissions and 15eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar * limitations under the License. 16eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar * 17eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar ******************************************************************************/ 18eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar 19eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar/****************************************************************************** 20dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor * 21dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor * This is the private interface file for the NFA EE. 226bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines * 23dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor ******************************************************************************/ 24dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor#ifndef NFA_EE_INT_H 25dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor#define NFA_EE_INT_H 26dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor#include "nfc_api.h" 276c31f7c56f54cc1c52475675335729290663535cJames Dennett#include "nfa_ee_api.h" 28cfa88f893915ceb8ae4ce2f17c46c24a4d67502fDmitri Gribenko#include "nfa_sys.h" 29eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar 30c9471b0ff1815ed0149dbfcad0f385ed8648eeb0Douglas Gregor/***************************************************************************** 31eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar** Constants and data types 325f3d8224af99ad0d9107601c0c31b74693371cc1Douglas Gregor*****************************************************************************/ 335f3d8224af99ad0d9107601c0c31b74693371cc1Douglas Gregor#define NFA_EE_DEBUG BT_TRACE_VERBOSE 345f3d8224af99ad0d9107601c0c31b74693371cc1Douglas Gregor#define NFA_EE_NUM_ECBS (NFA_EE_MAX_EE_SUPPORTED+1) /* the number of tNFA_EE_ECBs (for NFCEEs and DH) */ 355f3d8224af99ad0d9107601c0c31b74693371cc1Douglas Gregor#define NFA_EE_CB_4_DH NFA_EE_MAX_EE_SUPPORTED /* The index for DH in nfa_ee_cb.ee_cb[] */ 365f3d8224af99ad0d9107601c0c31b74693371cc1Douglas Gregor#define NFA_EE_INVALID 0xFF 375f3d8224af99ad0d9107601c0c31b74693371cc1Douglas Gregor#define NFA_EE_MAX_TECH_ROUTE 4 /* only A, B, F, Bprime are supported by UICC now */ 38dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor 39dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor#ifndef NFA_EE_AID_CFG_TAG_NAME 40dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor#define NFA_EE_AID_CFG_TAG_NAME 0x4F /* AID */ 41dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor#endif 42246b6aa6763de8c617d564ef33123a8f3293a80eRichard Trieu 43dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor/* NFA EE events */ 44dc7b641574a733624489bd87fc7061771edf2113Douglas Gregorenum 45dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor{ 46dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor NFA_EE_API_DISCOVER_EVT = NFA_SYS_EVT_START(NFA_ID_EE), 47dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor NFA_EE_API_REGISTER_EVT, 48dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor NFA_EE_API_DEREGISTER_EVT, 49dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor NFA_EE_API_MODE_SET_EVT, 50dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor NFA_EE_API_SET_TECH_CFG_EVT, 516c31f7c56f54cc1c52475675335729290663535cJames Dennett NFA_EE_API_SET_PROTO_CFG_EVT, 5208c6695f6018fb6cb1a7c7d311a851aa5c233bc0Daniel Dunbar NFA_EE_API_ADD_AID_EVT, 537800212ef29be314d55814e8dcc568ff8beed106Ted Kremenek NFA_EE_API_REMOVE_AID_EVT, 546c31f7c56f54cc1c52475675335729290663535cJames Dennett NFA_EE_API_UPDATE_NOW_EVT, 557800212ef29be314d55814e8dcc568ff8beed106Ted Kremenek NFA_EE_API_CONNECT_EVT, 5608c6695f6018fb6cb1a7c7d311a851aa5c233bc0Daniel Dunbar NFA_EE_API_SEND_DATA_EVT, 576907943901e0aae5be7618c36c0f8275634e6ab5Daniel Dunbar NFA_EE_API_DISCONNECT_EVT, 586907943901e0aae5be7618c36c0f8275634e6ab5Daniel Dunbar 596907943901e0aae5be7618c36c0f8275634e6ab5Daniel Dunbar NFA_EE_NCI_DISC_RSP_EVT, 606907943901e0aae5be7618c36c0f8275634e6ab5Daniel Dunbar NFA_EE_NCI_DISC_NTF_EVT, 61eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar NFA_EE_NCI_MODE_SET_RSP_EVT, 62dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor NFA_EE_NCI_CONN_EVT, 63dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor NFA_EE_NCI_DATA_EVT, 64dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor NFA_EE_NCI_ACTION_NTF_EVT, 65dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor NFA_EE_NCI_DISC_REQ_NTF_EVT, 66dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor 67dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor NFA_EE_ROUT_TIMEOUT_EVT, 68dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor NFA_EE_DISCV_TIMEOUT_EVT, 69eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar NFA_EE_CFG_TO_NFCC_EVT, 70dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor NFA_EE_MAX_EVT 71dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor 72dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor}; 73eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar 74eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar 75eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbartypedef UINT16 tNFA_EE_INT_EVT; 765f3d8224af99ad0d9107601c0c31b74693371cc1Douglas Gregor#define NFA_EE_AE_ROUTE 0x80 /* for listen mode routing table*/ 775f3d8224af99ad0d9107601c0c31b74693371cc1Douglas Gregor#define NFA_EE_AE_VS 0x40 78eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar 79eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar 80eace8743030d2979251a0c5ae247371cfd9056e5Daniel Dunbar/* NFA EE Management state */ 81enum 82{ 83 NFA_EE_EM_STATE_INIT = 0, 84 NFA_EE_EM_STATE_INIT_DONE, 85 NFA_EE_EM_STATE_RESTORING, 86 NFA_EE_EM_STATE_DISABLING, 87 NFA_EE_EM_STATE_DISABLED, 88 89 NFA_EE_EM_STATE_MAX 90}; 91typedef UINT8 tNFA_EE_EM_STATE; 92 93/* NFA EE connection status */ 94enum 95{ 96 NFA_EE_CONN_ST_NONE, /* not connected */ 97 NFA_EE_CONN_ST_WAIT, /* connection is initiated; waiting for ack */ 98 NFA_EE_CONN_ST_CONN, /* connected; can send/receive data */ 99 NFA_EE_CONN_ST_DISC, /* disconnecting; waiting for ack */ 100 NFA_EE_CONN_ST_MAX 101}; 102typedef UINT8 tNFA_EE_CONN_ST; 103 104#define NFA_EE_MAX_AID_CFG_LEN (510) 105#define NFA_EE_7816_STATUS_LEN (2) 106 107/* NFA EE control block flags: 108 * use to indicate an API function has changed the configuration of the associated NFCEE 109 * The flags are cleared when the routing table/VS is updated */ 110#define NFA_EE_ECB_FLAGS_TECH 0x02 /* technology routing changed */ 111#define NFA_EE_ECB_FLAGS_PROTO 0x04 /* protocol routing changed */ 112#define NFA_EE_ECB_FLAGS_AID 0x08 /* AID routing changed */ 113#define NFA_EE_ECB_FLAGS_VS 0x10 /* VS changed */ 114#define NFA_EE_ECB_FLAGS_RESTORE 0x20 /* Restore related */ 115#define NFA_EE_ECB_FLAGS_ROUTING 0x0E /* routing flags changed */ 116#define NFA_EE_ECB_FLAGS_DISC_REQ 0x40 /* NFCEE Discover Request NTF is set */ 117#define NFA_EE_ECB_FLAGS_ORDER 0x80 /* DISC_REQ N reported before DISC N */ 118typedef UINT8 tNFA_EE_ECB_FLAGS; 119 120/* part of tNFA_EE_STATUS; for internal use only */ 121#define NFA_EE_STATUS_RESTORING 0x20 /* waiting for restore to full power mode to complete */ 122#define NFA_EE_STATUS_INT_MASK 0x20 /* this bit is in ee_status for internal use only */ 123 124/* NFA-EE information for a particular NFCEE Entity (including DH) */ 125typedef struct 126{ 127 tNFA_TECHNOLOGY_MASK tech_switch_on; /* default routing - technologies switch_on */ 128 tNFA_TECHNOLOGY_MASK tech_switch_off; /* default routing - technologies switch_off */ 129 tNFA_TECHNOLOGY_MASK tech_battery_off; /* default routing - technologies battery_off*/ 130 tNFA_PROTOCOL_MASK proto_switch_on; /* default routing - protocols switch_on */ 131 tNFA_PROTOCOL_MASK proto_switch_off; /* default routing - protocols switch_off */ 132 tNFA_PROTOCOL_MASK proto_battery_off; /* default routing - protocols battery_off */ 133 tNFA_EE_CONN_ST conn_st; /* connection status */ 134 UINT8 conn_id; /* connection id */ 135 tNFA_EE_CBACK *p_ee_cback; /* the callback function */ 136 137 /* Each AID entry has an ssociated aid_len, aid_pwr_cfg, aid_rt_info. 138 * aid_cfg[] contains AID and maybe some other VS information in TLV format 139 * The first T is always NFA_EE_AID_CFG_TAG_NAME, the L is the actual AID length 140 * the aid_len is the total length of all the TLVs associated with this AID entry 141 */ 142 UINT8 aid_len[NFA_EE_MAX_AID_ENTRIES];/* the actual lengths in aid_cfg */ 143 UINT8 aid_pwr_cfg[NFA_EE_MAX_AID_ENTRIES];/* power configuration of this AID entry */ 144 UINT8 aid_rt_info[NFA_EE_MAX_AID_ENTRIES];/* route/vs info for this AID entry */ 145 UINT8 aid_cfg[NFA_EE_MAX_AID_CFG_LEN];/* routing entries based on AID */ 146 UINT8 aid_entries; /* The number of AID entries in aid_cfg */ 147 UINT8 nfcee_id; /* ID for this NFCEE */ 148 UINT8 ee_status; /* The NFCEE status */ 149 UINT8 ee_old_status; /* The NFCEE status before going to low power mode */ 150 tNFA_EE_INTERFACE ee_interface[NFC_MAX_EE_INTERFACE];/* NFCEE supported interface */ 151 tNFA_EE_TLV ee_tlv[NFC_MAX_EE_TLVS];/* the TLV */ 152 UINT8 num_interface; /* number of Target interface */ 153 UINT8 num_tlvs; /* number of TLVs */ 154 tNFA_EE_ECB_FLAGS ecb_flags; /* the flags of this control block */ 155 tNFA_EE_INTERFACE use_interface; /* NFCEE interface used for the connection */ 156 tNFA_NFC_PROTOCOL la_protocol; /* Listen A protocol */ 157 tNFA_NFC_PROTOCOL lb_protocol; /* Listen B protocol */ 158 tNFA_NFC_PROTOCOL lf_protocol; /* Listen F protocol */ 159 tNFA_NFC_PROTOCOL lbp_protocol; /* Listen B' protocol */ 160} tNFA_EE_ECB; 161 162/* data type for NFA_EE_API_DISCOVER_EVT */ 163typedef struct 164{ 165 BT_HDR hdr; 166 tNFA_EE_CBACK *p_cback; 167} tNFA_EE_API_DISCOVER; 168 169/* data type for NFA_EE_API_REGISTER_EVT */ 170typedef struct 171{ 172 BT_HDR hdr; 173 tNFA_EE_CBACK *p_cback; 174} tNFA_EE_API_REGISTER; 175 176/* data type for NFA_EE_API_DEREGISTER_EVT */ 177typedef struct 178{ 179 BT_HDR hdr; 180 int index; 181} tNFA_EE_API_DEREGISTER; 182 183/* data type for NFA_EE_API_MODE_SET_EVT */ 184typedef struct 185{ 186 BT_HDR hdr; 187 tNFA_EE_ECB *p_cb; 188 UINT8 nfcee_id; 189 UINT8 mode; 190} tNFA_EE_API_MODE_SET; 191 192/* data type for NFA_EE_API_SET_TECH_CFG_EVT */ 193typedef struct 194{ 195 BT_HDR hdr; 196 tNFA_EE_ECB *p_cb; 197 UINT8 nfcee_id; 198 tNFA_TECHNOLOGY_MASK technologies_switch_on; 199 tNFA_TECHNOLOGY_MASK technologies_switch_off; 200 tNFA_TECHNOLOGY_MASK technologies_battery_off; 201} tNFA_EE_API_SET_TECH_CFG; 202 203/* data type for NFA_EE_API_SET_PROTO_CFG_EVT */ 204typedef struct 205{ 206 BT_HDR hdr; 207 tNFA_EE_ECB *p_cb; 208 UINT8 nfcee_id; 209 tNFA_PROTOCOL_MASK protocols_switch_on; 210 tNFA_PROTOCOL_MASK protocols_switch_off; 211 tNFA_PROTOCOL_MASK protocols_battery_off; 212} tNFA_EE_API_SET_PROTO_CFG; 213 214/* data type for NFA_EE_API_ADD_AID_EVT */ 215typedef struct 216{ 217 BT_HDR hdr; 218 tNFA_EE_ECB *p_cb; 219 UINT8 nfcee_id; 220 UINT8 aid_len; 221 UINT8 *p_aid; 222 tNFA_EE_PWR_STATE power_state; 223} tNFA_EE_API_ADD_AID; 224 225/* data type for NFA_EE_API_REMOVE_AID_EVT */ 226typedef struct 227{ 228 BT_HDR hdr; 229 UINT8 aid_len; 230 UINT8 *p_aid; 231} tNFA_EE_API_REMOVE_AID; 232 233/* data type for NFA_EE_API_CONNECT_EVT */ 234typedef struct 235{ 236 BT_HDR hdr; 237 tNFA_EE_ECB *p_cb; 238 UINT8 nfcee_id; 239 UINT8 ee_interface; 240 tNFA_EE_CBACK *p_cback; 241} tNFA_EE_API_CONNECT; 242 243/* data type for NFA_EE_API_SEND_DATA_EVT */ 244typedef struct 245{ 246 BT_HDR hdr; 247 tNFA_EE_ECB *p_cb; 248 UINT8 nfcee_id; 249 UINT16 data_len; 250 UINT8 *p_data; 251} tNFA_EE_API_SEND_DATA; 252 253/* data type for NFA_EE_API_DISCONNECT_EVT */ 254typedef struct 255{ 256 BT_HDR hdr; 257 tNFA_EE_ECB *p_cb; 258 UINT8 nfcee_id; 259} tNFA_EE_API_DISCONNECT; 260 261 262typedef struct 263{ 264 BT_HDR hdr; 265 tNFC_STATUS status; /* The event status. */ 266} tNFA_EE_MSG_STATUS; 267 268/* common data type for internal events with nfa_ee_use_cfg_cb[] as TRUE */ 269typedef struct 270{ 271 BT_HDR hdr; 272 tNFA_EE_ECB *p_cb; 273 UINT8 nfcee_id; 274} tNFA_EE_CFG_HDR; 275 276/* data type for tNFC_RESPONSE_EVT */ 277typedef struct 278{ 279 BT_HDR hdr; 280 void *p_data; 281} tNFA_EE_NCI_RESPONSE; 282 283/* data type for NFA_EE_NCI_DISC_RSP_EVT */ 284typedef struct 285{ 286 BT_HDR hdr; 287 tNFC_NFCEE_DISCOVER_REVT *p_data; 288} tNFA_EE_NCI_DISC_RSP; 289 290/* data type for NFA_EE_NCI_DISC_NTF_EVT */ 291typedef struct 292{ 293 BT_HDR hdr; 294 tNFC_NFCEE_INFO_REVT *p_data; 295} tNFA_EE_NCI_DISC_NTF; 296 297/* data type for NFA_EE_NCI_MODE_SET_RSP_EVT */ 298typedef struct 299{ 300 BT_HDR hdr; 301 tNFC_NFCEE_MODE_SET_REVT *p_data; 302} tNFA_EE_NCI_MODE_SET; 303 304/* data type for NFA_EE_NCI_CONN_EVT and NFA_EE_NCI_DATA_EVT */ 305typedef struct 306{ 307 BT_HDR hdr; 308 UINT8 conn_id; 309 tNFC_CONN_EVT event; 310 tNFC_CONN *p_data; 311} tNFA_EE_NCI_CONN; 312 313/* data type for NFA_EE_NCI_ACTION_NTF_EVT */ 314typedef struct 315{ 316 BT_HDR hdr; 317 tNFC_EE_ACTION_REVT *p_data; 318} tNFA_EE_NCI_ACTION; 319 320/* data type for NFA_EE_NCI_DISC_REQ_NTF_EVT */ 321typedef struct 322{ 323 BT_HDR hdr; 324 tNFC_EE_DISCOVER_REQ_REVT *p_data; 325} tNFA_EE_NCI_DISC_REQ; 326 327/* union of all event data types */ 328typedef union 329{ 330 BT_HDR hdr; 331 tNFA_EE_CFG_HDR cfg_hdr; 332 tNFA_EE_API_DISCOVER ee_discover; 333 tNFA_EE_API_REGISTER ee_register; 334 tNFA_EE_API_DEREGISTER deregister; 335 tNFA_EE_API_MODE_SET mode_set; 336 tNFA_EE_API_SET_TECH_CFG set_tech; 337 tNFA_EE_API_SET_PROTO_CFG set_proto; 338 tNFA_EE_API_ADD_AID add_aid; 339 tNFA_EE_API_REMOVE_AID rm_aid; 340 tNFA_EE_API_CONNECT connect; 341 tNFA_EE_API_SEND_DATA send_data; 342 tNFA_EE_API_DISCONNECT disconnect; 343 tNFA_EE_NCI_DISC_RSP disc_rsp; 344 tNFA_EE_NCI_DISC_NTF disc_ntf; 345 tNFA_EE_NCI_MODE_SET mode_set_rsp; 346 tNFA_EE_NCI_CONN conn; 347 tNFA_EE_NCI_ACTION act; 348 tNFA_EE_NCI_DISC_REQ disc_req; 349} tNFA_EE_MSG; 350 351/* type for State Machine (SM) action functions */ 352typedef void (*tNFA_EE_SM_ACT)(tNFA_EE_MSG *p_data); 353 354/***************************************************************************** 355** control block 356*****************************************************************************/ 357#define NFA_EE_CFGED_UPDATE_NOW 0x80 358#define NFA_EE_CFGED_OFF_ROUTING 0x40 /* either switch off or battery off is configured */ 359 360/* the following status are the definition used in ee_cfg_sts */ 361#define NFA_EE_STS_CHANGED_ROUTING 0x01 362#define NFA_EE_STS_CHANGED_VS 0x02 363#define NFA_EE_STS_CHANGED 0x0f 364#define NFA_EE_STS_PREV 0xf0 365#define NFA_EE_STS_PREV_ROUTING 0x10 366 367#define NFA_EE_FLAG_WAIT_HCI 0x01 /* set this bit when waiting for HCI to finish the initialization process in NFA_EE_EM_STATE_RESTORING */ 368#define NFA_EE_FLAG_NOTIFY_HCI 0x02 /* set this bit when EE needs to notify the p_enable_cback at the end of NFCEE discover process in NFA_EE_EM_STATE_RESTORING */ 369typedef UINT8 tNFA_EE_FLAGS; 370 371typedef void (tNFA_EE_ENABLE_DONE_CBACK)(BOOLEAN disable_discover); 372 373/* NFA EE Management control block */ 374typedef struct 375{ 376 tNFA_EE_ECB ecb[NFA_EE_NUM_ECBS]; /* control block for DH and NFCEEs */ 377 TIMER_LIST_ENT timer; /* timer to send info to NFCC */ 378 TIMER_LIST_ENT discv_timer; /* timer to end NFCEE discovery */ 379 tNFA_EE_CBACK *p_ee_cback[NFA_EE_MAX_CBACKS];/* to report EE events */ 380 tNFA_EE_CBACK *p_ee_disc_cback; /* to report EE discovery result */ 381 tNFA_EE_ENABLE_DONE_CBACK *p_enable_cback; /* callback to notify on enable done*/ 382 tNFA_EE_EM_STATE em_state; /* NFA-EE state initialized or not */ 383 UINT8 num_ee_expecting; /* number of ee_info still expecting*/ 384 UINT8 cur_ee; /* the number of ee_info in cb */ 385 UINT8 ee_cfged; /* the bit mask of configured ECBs */ 386 UINT8 ee_cfg_sts; /* configuration status */ 387 tNFA_EE_FLAGS ee_flags; /* flags */ 388} tNFA_EE_CB; 389 390/***************************************************************************** 391** External variables 392*****************************************************************************/ 393 394/* NFA EE control block */ 395#if NFA_DYNAMIC_MEMORY == FALSE 396extern tNFA_EE_CB nfa_ee_cb; 397#else 398extern tNFA_EE_CB *nfa_ee_cb_ptr; 399#define nfa_ee_cb (*nfa_ee_cb_ptr) 400#endif 401 402/***************************************************************************** 403** External functions 404*****************************************************************************/ 405/* function prototypes - exported from nfa_ee_main.c */ 406void nfa_ee_sys_enable (void); 407void nfa_ee_sys_disable (void); 408 409/* event handler function type */ 410BOOLEAN nfa_ee_evt_hdlr (BT_HDR *p_msg); 411void nfa_ee_proc_nfcc_power_mode (UINT8 nfcc_power_mode); 412#if (NFC_NFCEE_INCLUDED == TRUE) 413void nfa_ee_get_tech_route (UINT8 power_state, UINT8 *p_handles); 414#endif 415void nfa_ee_proc_evt(tNFC_RESPONSE_EVT event, void *p_data); 416tNFA_EE_ECB * nfa_ee_find_ecb (UINT8 nfcee_id); 417tNFA_EE_ECB * nfa_ee_find_ecb_by_conn_id (UINT8 conn_id); 418UINT8 nfa_ee_ecb_to_mask (tNFA_EE_ECB *p_cb); 419void nfa_ee_restore_one_ecb (tNFA_EE_ECB *p_cb); 420BOOLEAN nfa_ee_is_active (tNFA_HANDLE nfcee_id); 421 422/* Action function prototypes - nfa_ee_act.c */ 423void nfa_ee_api_discover(tNFA_EE_MSG *p_data); 424void nfa_ee_api_register(tNFA_EE_MSG *p_data); 425void nfa_ee_api_deregister(tNFA_EE_MSG *p_data); 426void nfa_ee_api_mode_set(tNFA_EE_MSG *p_data); 427void nfa_ee_api_set_tech_cfg(tNFA_EE_MSG *p_data); 428void nfa_ee_api_set_proto_cfg(tNFA_EE_MSG *p_data); 429void nfa_ee_api_add_aid(tNFA_EE_MSG *p_data); 430void nfa_ee_api_remove_aid(tNFA_EE_MSG *p_data); 431void nfa_ee_api_update_now(tNFA_EE_MSG *p_data); 432void nfa_ee_api_connect(tNFA_EE_MSG *p_data); 433void nfa_ee_api_send_data(tNFA_EE_MSG *p_data); 434void nfa_ee_api_disconnect(tNFA_EE_MSG *p_data); 435void nfa_ee_report_disc_done(BOOLEAN notify_sys); 436void nfa_ee_nci_disc_rsp(tNFA_EE_MSG *p_data); 437void nfa_ee_nci_disc_ntf(tNFA_EE_MSG *p_data); 438void nfa_ee_nci_mode_set_rsp(tNFA_EE_MSG *p_data); 439void nfa_ee_nci_conn(tNFA_EE_MSG *p_data); 440void nfa_ee_nci_action_ntf(tNFA_EE_MSG *p_data); 441void nfa_ee_nci_disc_req_ntf(tNFA_EE_MSG *p_data); 442void nfa_ee_rout_timeout(tNFA_EE_MSG *p_data); 443void nfa_ee_discv_timeout(tNFA_EE_MSG *p_data); 444void nfa_ee_lmrt_to_nfcc(tNFA_EE_MSG *p_data); 445void nfa_ee_update_rout(void); 446void nfa_ee_report_event(tNFA_EE_CBACK *p_cback, tNFA_EE_EVT event, tNFA_EE_CBACK_DATA *p_data); 447tNFA_EE_ECB * nfa_ee_find_aid_offset(UINT8 aid_len, UINT8 *p_aid, int *p_offset, int *p_entry); 448void nfa_ee_remove_labels(void); 449int nfa_ee_find_total_aid_len(tNFA_EE_ECB *p_cb, int start_entry); 450void nfa_ee_start_timer(void); 451void nfa_ee_reg_cback_enable_done (tNFA_EE_ENABLE_DONE_CBACK *p_cback); 452 453extern void nfa_ee_proc_hci_info_cback (void); 454 455 456#endif /* NFA_P2P_INT_H */ 457