1 /****************************************************************************** 2 * 3 * Copyright (C) 2010-2012 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 is the private interface file for the NFA HCI. 22 * 23 ******************************************************************************/ 24 #ifndef NFA_HCI_INT_H 25 #define NFA_HCI_INT_H 26 27 #include "nfa_hci_api.h" 28 29 extern BOOLEAN HCI_LOOPBACK_DEBUG; 30 31 /***************************************************************************** 32 ** Constants and data types 33 *****************************************************************************/ 34 35 36 #define NFA_HCI_HOST_ID_UICC0 0x02 37 #define NFA_HCI_HOST_ID_UICC1 0x03 38 #define NFA_HCI_LAST_HOST_SPECIFIC_GATE 0xEF 39 40 #define NFA_HCI_SESSION_ID_LEN 8 /* HCI Session ID length */ 41 #define NFA_MAX_PIPES_IN_GENERIC_GATE 0x0F /* Maximum pipes that can be created on a generic pipe */ 42 43 #define NFA_HCI_VERSION_SW 0x090000 /* HCI SW Version number */ 44 #define NFA_HCI_VERSION_HW 0x000000 /* HCI HW Version number */ 45 #define NFA_HCI_VENDOR_NAME "HCI" /* Vendor Name */ 46 #define NFA_HCI_MODEL_ID 00 /* Model ID */ 47 #define NFA_HCI_VERSION 90 /* HCI Version */ 48 49 /* NFA HCI states */ 50 #define NFA_HCI_STATE_DISABLED 0x00 /* HCI is disabled */ 51 #define NFA_HCI_STATE_STARTUP 0x01 /* HCI performing Initialization sequence */ 52 #define NFA_HCI_STATE_WAIT_NETWK_ENABLE 0x02 /* HCI is waiting for initialization of other host in the network */ 53 #define NFA_HCI_STATE_IDLE 0x03 /* HCI is waiting to handle api commands */ 54 #define NFA_HCI_STATE_WAIT_RSP 0x04 /* HCI is performing api command request */ 55 #define NFA_HCI_STATE_REMOVE_GATE 0x05 /* Removing all pipes prior to removing the gate */ 56 #define NFA_HCI_STATE_APP_DEREGISTER 0x06 /* Removing all pipes and gates prior to deregistering the app */ 57 #define NFA_HCI_STATE_RESTORE 0x07 /* HCI restore */ 58 59 typedef UINT8 tNFA_HCI_STATE; 60 61 /* NFA HCI PIPE states */ 62 #define NFA_HCI_PIPE_CLOSED 0x00 /* Pipe is closed */ 63 #define NFA_HCI_PIPE_OPENED 0x01 /* Pipe is opened */ 64 65 #define NFA_HCI_INVALID_INX 0xFF 66 67 68 typedef UINT8 tNFA_HCI_COMMAND; 69 typedef UINT8 tNFA_HCI_RESPONSE; 70 71 72 /* NFA HCI Internal events */ 73 enum 74 { 75 NFA_HCI_API_REGISTER_APP_EVT = NFA_SYS_EVT_START (NFA_ID_HCI),/* Register APP with HCI */ 76 NFA_HCI_API_DEREGISTER_APP_EVT, /* Deregister an app from HCI */ 77 NFA_HCI_API_GET_APP_GATE_PIPE_EVT, /* Get the list of gate and pipe associated to the application */ 78 NFA_HCI_API_ALLOC_GATE_EVT, /* Allocate a dyanmic gate for the application */ 79 NFA_HCI_API_DEALLOC_GATE_EVT, /* Deallocate a previously allocated gate to the application */ 80 NFA_HCI_API_GET_HOST_LIST_EVT, /* Get the list of Host in the network */ 81 NFA_HCI_API_GET_REGISTRY_EVT, /* Get a registry entry from a host */ 82 NFA_HCI_API_SET_REGISTRY_EVT, /* Set a registry entry on a host */ 83 NFA_HCI_API_CREATE_PIPE_EVT, /* Create a pipe between two gates */ 84 NFA_HCI_API_OPEN_PIPE_EVT, /* Open a pipe */ 85 NFA_HCI_API_CLOSE_PIPE_EVT, /* Close a pipe */ 86 NFA_HCI_API_DELETE_PIPE_EVT, /* Delete a pipe */ 87 NFA_HCI_API_ADD_STATIC_PIPE_EVT, /* Add a static pipe */ 88 NFA_HCI_API_SEND_CMD_EVT, /* Send command via pipe */ 89 NFA_HCI_API_SEND_RSP_EVT, /* Application Response to a command */ 90 NFA_HCI_API_SEND_EVENT_EVT, /* Send event via pipe */ 91 92 NFA_HCI_RSP_NV_READ_EVT, /* Non volatile read complete event */ 93 NFA_HCI_RSP_NV_WRITE_EVT, /* Non volatile write complete event */ 94 NFA_HCI_RSP_TIMEOUT_EVT, 95 NFA_HCI_CHECK_QUEUE_EVT 96 }; 97 98 #define NFA_HCI_FIRST_API_EVENT NFA_HCI_API_REGISTER_APP_EVT 99 #define NFA_HCI_LAST_API_EVENT NFA_HCI_API_SEND_EVENT_EVT 100 101 typedef UINT16 tNFA_HCI_INT_EVT; 102 103 /* Internal event structures. 104 ** 105 ** Note, every internal structure starts with a BT_HDR and an app handle 106 */ 107 108 /* data type for NFA_HCI_API_REGISTER_APP_EVT */ 109 typedef struct 110 { 111 BT_HDR hdr; 112 tNFA_HANDLE hci_handle; 113 char app_name[NFA_MAX_HCI_APP_NAME_LEN + 1]; 114 tNFA_HCI_CBACK *p_cback; 115 BOOLEAN b_send_conn_evts; 116 } tNFA_HCI_API_REGISTER_APP; 117 118 /* data type for NFA_HCI_API_DEREGISTER_APP_EVT */ 119 typedef struct 120 { 121 BT_HDR hdr; 122 tNFA_HANDLE hci_handle; 123 char app_name[NFA_MAX_HCI_APP_NAME_LEN + 1]; 124 } tNFA_HCI_API_DEREGISTER_APP; 125 126 /* data type for NFA_HCI_API_GET_APP_GATE_PIPE_EVT */ 127 typedef struct 128 { 129 BT_HDR hdr; 130 tNFA_HANDLE hci_handle; 131 } tNFA_HCI_API_GET_APP_GATE_PIPE; 132 133 /* data type for NFA_HCI_API_ALLOC_GATE_EVT */ 134 typedef struct 135 { 136 BT_HDR hdr; 137 tNFA_HANDLE hci_handle; 138 } tNFA_HCI_API_ALLOC_GATE; 139 140 141 /* data type for NFA_HCI_API_DEALLOC_GATE_EVT */ 142 typedef struct 143 { 144 BT_HDR hdr; 145 tNFA_HANDLE hci_handle; 146 UINT8 gate; 147 } tNFA_HCI_API_DEALLOC_GATE; 148 149 /* data type for NFA_HCI_API_GET_HOST_LIST_EVT */ 150 typedef struct 151 { 152 BT_HDR hdr; 153 tNFA_HANDLE hci_handle; 154 tNFA_STATUS status; 155 } tNFA_HCI_API_GET_HOST_LIST; 156 157 /* data type for NFA_HCI_API_GET_REGISTRY_EVT */ 158 typedef struct 159 { 160 BT_HDR hdr; 161 tNFA_HANDLE hci_handle; 162 UINT8 pipe; 163 UINT8 reg_inx; 164 } tNFA_HCI_API_GET_REGISTRY; 165 166 /* data type for NFA_HCI_API_SET_REGISTRY_EVT */ 167 typedef struct 168 { 169 BT_HDR hdr; 170 tNFA_HANDLE hci_handle; 171 UINT8 pipe; 172 UINT8 reg_inx; 173 UINT8 size; 174 UINT8 data[NFA_MAX_HCI_CMD_LEN]; 175 } tNFA_HCI_API_SET_REGISTRY; 176 177 /* data type for NFA_HCI_API_CREATE_PIPE_EVT */ 178 typedef struct 179 { 180 BT_HDR hdr; 181 tNFA_HANDLE hci_handle; 182 tNFA_STATUS status; 183 UINT8 source_gate; 184 UINT8 dest_host; 185 UINT8 dest_gate; 186 } tNFA_HCI_API_CREATE_PIPE_EVT; 187 188 /* data type for NFA_HCI_API_OPEN_PIPE_EVT */ 189 typedef struct 190 { 191 BT_HDR hdr; 192 tNFA_HANDLE hci_handle; 193 tNFA_STATUS status; 194 UINT8 pipe; 195 } tNFA_HCI_API_OPEN_PIPE_EVT; 196 197 /* data type for NFA_HCI_API_CLOSE_PIPE_EVT */ 198 typedef struct 199 { 200 BT_HDR hdr; 201 tNFA_HANDLE hci_handle; 202 tNFA_STATUS status; 203 UINT8 pipe; 204 } tNFA_HCI_API_CLOSE_PIPE_EVT; 205 206 /* data type for NFA_HCI_API_DELETE_PIPE_EVT */ 207 typedef struct 208 { 209 BT_HDR hdr; 210 tNFA_HANDLE hci_handle; 211 tNFA_STATUS status; 212 UINT8 pipe; 213 } tNFA_HCI_API_DELETE_PIPE_EVT; 214 215 /* data type for NFA_HCI_API_ADD_STATIC_PIPE_EVT */ 216 typedef struct 217 { 218 BT_HDR hdr; 219 tNFA_HANDLE hci_handle; 220 tNFA_STATUS status; 221 UINT8 host; 222 UINT8 gate; 223 UINT8 pipe; 224 } tNFA_HCI_API_ADD_STATIC_PIPE_EVT; 225 226 /* data type for NFA_HCI_API_SEND_EVENT_EVT */ 227 typedef struct 228 { 229 BT_HDR hdr; 230 tNFA_HANDLE hci_handle; 231 UINT8 pipe; 232 UINT8 evt_code; 233 UINT16 evt_len; 234 UINT8 *p_evt_buf; 235 UINT16 rsp_len; 236 UINT8 *p_rsp_buf; 237 UINT16 rsp_timeout; 238 } tNFA_HCI_API_SEND_EVENT_EVT; 239 240 /* data type for NFA_HCI_API_SEND_CMD_EVT */ 241 typedef struct 242 { 243 BT_HDR hdr; 244 tNFA_HANDLE hci_handle; 245 UINT8 pipe; 246 UINT8 cmd_code; 247 UINT16 cmd_len; 248 UINT8 data[NFA_MAX_HCI_CMD_LEN]; 249 } tNFA_HCI_API_SEND_CMD_EVT; 250 251 /* data type for NFA_HCI_RSP_NV_READ_EVT */ 252 typedef struct 253 { 254 BT_HDR hdr; 255 UINT8 block; 256 UINT16 size; 257 tNFA_STATUS status; 258 } tNFA_HCI_RSP_NV_READ_EVT; 259 260 /* data type for NFA_HCI_RSP_NV_WRITE_EVT */ 261 typedef struct 262 { 263 BT_HDR hdr; 264 tNFA_STATUS status; 265 } tNFA_HCI_RSP_NV_WRITE_EVT; 266 267 /* data type for NFA_HCI_API_SEND_RSP_EVT */ 268 typedef struct 269 { 270 BT_HDR hdr; 271 tNFA_HANDLE hci_handle; 272 UINT8 pipe; 273 UINT8 response; 274 UINT8 size; 275 UINT8 data[NFA_MAX_HCI_RSP_LEN]; 276 } tNFA_HCI_API_SEND_RSP_EVT; 277 278 /* common data type for internal events */ 279 typedef struct 280 { 281 BT_HDR hdr; 282 tNFA_HANDLE hci_handle; 283 } tNFA_HCI_COMM_DATA; 284 285 /* union of all event data types */ 286 typedef union 287 { 288 BT_HDR hdr; 289 tNFA_HCI_COMM_DATA comm; 290 291 /* API events */ 292 tNFA_HCI_API_REGISTER_APP app_info; /* Register/Deregister an application */ 293 tNFA_HCI_API_GET_APP_GATE_PIPE get_gate_pipe_list; /* Get the list of gates and pipes created for the application */ 294 tNFA_HCI_API_ALLOC_GATE gate_info; /* Allocate a dynamic gate to the application */ 295 tNFA_HCI_API_DEALLOC_GATE gate_dealloc; /* Deallocate the gate allocated to the application */ 296 tNFA_HCI_API_CREATE_PIPE_EVT create_pipe; /* Create a pipe */ 297 tNFA_HCI_API_OPEN_PIPE_EVT open_pipe; /* Open a pipe */ 298 tNFA_HCI_API_CLOSE_PIPE_EVT close_pipe; /* Close a pipe */ 299 tNFA_HCI_API_DELETE_PIPE_EVT delete_pipe; /* Delete a pipe */ 300 tNFA_HCI_API_ADD_STATIC_PIPE_EVT add_static_pipe; /* Add a static pipe */ 301 tNFA_HCI_API_GET_HOST_LIST get_host_list; /* Get the list of Host in the network */ 302 tNFA_HCI_API_GET_REGISTRY get_registry; /* Get a registry entry on a host */ 303 tNFA_HCI_API_SET_REGISTRY set_registry; /* Set a registry entry on a host */ 304 tNFA_HCI_API_SEND_CMD_EVT send_cmd; /* Send a event on a pipe to a host */ 305 tNFA_HCI_API_SEND_RSP_EVT send_rsp; /* Response to a command sent on a pipe to a host */ 306 tNFA_HCI_API_SEND_EVENT_EVT send_evt; /* Send a command on a pipe to a host */ 307 308 /* Internal events */ 309 tNFA_HCI_RSP_NV_READ_EVT nv_read; 310 tNFA_HCI_RSP_NV_WRITE_EVT nv_write; 311 } tNFA_HCI_EVENT_DATA; 312 313 /***************************************************************************** 314 ** control block 315 *****************************************************************************/ 316 317 /* Dynamic pipe control block */ 318 typedef struct 319 { 320 UINT8 pipe_id; /* Pipe ID */ 321 tNFA_HCI_PIPE_STATE pipe_state; /* State of the Pipe */ 322 UINT8 local_gate; /* local gate id */ 323 UINT8 dest_host; /* Peer host to which this pipe is connected */ 324 UINT8 dest_gate; /* Peer gate to which this pipe is connected */ 325 } tNFA_HCI_DYN_PIPE; 326 327 /* Dynamic gate control block */ 328 typedef struct 329 { 330 UINT8 gate_id; /* local gate id */ 331 tNFA_HANDLE gate_owner; /* NFA-HCI handle assigned to the application which owns the gate */ 332 UINT32 pipe_inx_mask; /* Bit 0 == pipe inx 0, etc */ 333 } tNFA_HCI_DYN_GATE; 334 335 /* Admin gate control block */ 336 typedef struct 337 { 338 tNFA_HCI_PIPE_STATE pipe01_state; /* State of Pipe '01' */ 339 UINT8 session_id[NFA_HCI_SESSION_ID_LEN]; /* Session ID of the host network */ 340 } tNFA_ADMIN_GATE_INFO; 341 342 /* Link management gate control block */ 343 typedef struct 344 { 345 tNFA_HCI_PIPE_STATE pipe00_state; /* State of Pipe '00' */ 346 UINT16 rec_errors; /* Receive errors */ 347 } tNFA_LINK_MGMT_GATE_INFO; 348 349 /* Identity management gate control block */ 350 typedef struct 351 { 352 UINT32 pipe_inx_mask; /* Bit 0 == pipe inx 0, etc */ 353 UINT16 version_sw; /* Software version number */ 354 UINT16 version_hw; /* Hardware version number */ 355 UINT8 vendor_name[20]; /* Vendor name */ 356 UINT8 model_id; /* Model ID */ 357 UINT8 hci_version; /* HCI Version */ 358 } tNFA_ID_MGMT_GATE_INFO; 359 360 /* Internal flags */ 361 #define NFA_HCI_FL_DISABLING 0x01 /* sub system is being disabled */ 362 #define NFA_HCI_FL_NV_CHANGED 0x02 /* NV Ram changed */ 363 364 365 /* NFA HCI control block */ 366 typedef struct 367 { 368 tNFA_HCI_STATE hci_state; /* state of the HCI */ 369 UINT8 num_nfcee; 370 UINT8 inactive_host[NFA_HCI_MAX_HOST_IN_NETWORK]; /* Inactive host in the host network */ 371 UINT8 reset_host[NFA_HCI_MAX_HOST_IN_NETWORK]; /* List of host reseting */ 372 BOOLEAN b_low_power_mode; /* Host controller in low power mode */ 373 BOOLEAN b_hci_netwk_reset; /* Command sent to reset HCI Network */ 374 BOOLEAN w4_hci_netwk_init; /* Wait for other host in network to initialize */ 375 TIMER_LIST_ENT timer; /* Timer to avoid indefinitely waiting for response */ 376 UINT8 conn_id; /* Connection ID */ 377 UINT8 buff_size; /* Connection buffer size */ 378 BOOLEAN nv_read_cmplt; /* NV Read completed */ 379 BOOLEAN nv_write_needed; /* Something changed - NV write is needed */ 380 BOOLEAN assembling; /* Set true if in process of assembling a message */ 381 BOOLEAN assembly_failed; /* Set true if Insufficient buffer to Reassemble incoming message */ 382 BOOLEAN w4_rsp_evt; /* Application command sent on HCP Event */ 383 tNFA_HANDLE app_in_use; /* Index of the application that is waiting for response */ 384 UINT8 local_gate_in_use; /* Local gate currently working with */ 385 UINT8 remote_gate_in_use; /* Remote gate currently working with */ 386 UINT8 remote_host_in_use; /* The remote host to which a command is sent */ 387 UINT8 pipe_in_use; /* The pipe currently working with */ 388 UINT8 param_in_use; /* The registry parameter currently working with */ 389 tNFA_HCI_COMMAND cmd_sent; /* The last command sent */ 390 BOOLEAN ee_disc_cmplt; /* EE Discovery operation completed */ 391 UINT16 msg_len; /* For segmentation - length of the combined message */ 392 UINT16 max_msg_len; /* Maximum reassembled message size */ 393 UINT8 msg_data[NFA_MAX_HCI_EVENT_LEN]; /* For segmentation - the combined message data */ 394 UINT8 *p_msg_data; /* For segmentation - reassembled message */ 395 UINT8 type; /* Instruction type of incoming message */ 396 UINT8 inst; /* Instruction of incoming message */ 397 398 BUFFER_Q hci_api_q; /* Buffer Q to hold incoming API commands */ 399 BUFFER_Q hci_host_reset_api_q; /* Buffer Q to hold incoming API commands to a host that is reactivating */ 400 tNFA_HCI_CBACK *p_app_cback[NFA_HCI_MAX_APP_CB]; /* Callback functions registered by the applications */ 401 UINT16 rsp_buf_size; /* Maximum size of APDU buffer */ 402 UINT8 *p_rsp_buf; /* Buffer to hold response to sent event */ 403 struct 404 { 405 char reg_app_names[NFA_HCI_MAX_APP_CB][NFA_MAX_HCI_APP_NAME_LEN + 1]; 406 407 tNFA_HCI_DYN_GATE dyn_gates[NFA_HCI_MAX_GATE_CB]; 408 tNFA_HCI_DYN_PIPE dyn_pipes[NFA_HCI_MAX_PIPE_CB]; 409 410 BOOLEAN b_send_conn_evts[NFA_HCI_MAX_APP_CB]; 411 tNFA_ADMIN_GATE_INFO admin_gate; 412 tNFA_LINK_MGMT_GATE_INFO link_mgmt_gate; 413 tNFA_ID_MGMT_GATE_INFO id_mgmt_gate; 414 } cfg; 415 416 } tNFA_HCI_CB; 417 418 419 /***************************************************************************** 420 ** External variables 421 *****************************************************************************/ 422 423 /* NFA HCI control block */ 424 #if NFA_DYNAMIC_MEMORY == FALSE 425 extern tNFA_HCI_CB nfa_hci_cb; 426 #else 427 extern tNFA_HCI_CB *nfa_hci_cb_ptr; 428 #define nfa_hci_cb (*nfa_hci_cb_ptr) 429 #endif 430 431 432 /***************************************************************************** 433 ** External functions 434 *****************************************************************************/ 435 436 /* Functions in nfa_hci_main.c 437 */ 438 extern void nfa_hci_init (void); 439 extern void nfa_hci_proc_nfcc_power_mode (UINT8 nfcc_power_mode); 440 extern void nfa_hci_dh_startup_complete (void); 441 extern void nfa_hci_startup_complete (tNFA_STATUS status); 442 extern void nfa_hci_startup (void); 443 extern void nfa_hci_restore_default_config (UINT8 *p_session_id); 444 extern void nfa_hci_vsc_cback (tNFC_VS_EVT event, UINT16 data_len, UINT8 *p_data); 445 446 /* Action functions in nfa_hci_act.c 447 */ 448 extern void nfa_hci_check_pending_api_requests (void); 449 extern void nfa_hci_check_api_requests (void); 450 extern void nfa_hci_handle_admin_gate_cmd (UINT8 *p_data); 451 extern void nfa_hci_handle_admin_gate_rsp (UINT8 *p_data, UINT8 data_len); 452 extern void nfa_hci_handle_admin_gate_evt (UINT8 *p_data); 453 extern void nfa_hci_handle_link_mgm_gate_cmd (UINT8 *p_data); 454 extern void nfa_hci_handle_dyn_pipe_pkt (UINT8 pipe, UINT8 *p_data, UINT16 data_len); 455 extern void nfa_hci_handle_pipe_open_close_cmd (tNFA_HCI_DYN_PIPE *p_pipe); 456 extern void nfa_hci_api_dealloc_gate (tNFA_HCI_EVENT_DATA *p_evt_data); 457 extern void nfa_hci_api_deregister (tNFA_HCI_EVENT_DATA *p_evt_data); 458 459 /* Utility functions in nfa_hci_utils.c 460 */ 461 extern tNFA_HCI_DYN_GATE *nfa_hciu_alloc_gate (UINT8 gate_id, tNFA_HANDLE app_handle); 462 extern tNFA_HCI_DYN_GATE *nfa_hciu_find_gate_by_gid (UINT8 gate_id); 463 extern tNFA_HCI_DYN_GATE *nfa_hciu_find_gate_by_owner (tNFA_HANDLE app_handle); 464 extern tNFA_HCI_DYN_GATE *nfa_hciu_find_gate_with_nopipes_by_owner (tNFA_HANDLE app_handle); 465 extern tNFA_HCI_DYN_PIPE *nfa_hciu_find_pipe_by_pid (UINT8 pipe_id); 466 extern tNFA_HCI_DYN_PIPE *nfa_hciu_find_pipe_by_owner (tNFA_HANDLE app_handle); 467 extern tNFA_HCI_DYN_PIPE *nfa_hciu_find_active_pipe_by_owner (tNFA_HANDLE app_handle); 468 extern tNFA_HCI_DYN_PIPE *nfa_hciu_find_pipe_on_gate (UINT8 gate_id); 469 extern tNFA_HANDLE nfa_hciu_get_gate_owner (UINT8 gate_id); 470 extern BOOLEAN nfa_hciu_is_active_host (UINT8 host_id); 471 extern BOOLEAN nfa_hciu_is_host_reseting (UINT8 host_id); 472 extern BOOLEAN nfa_hciu_is_no_host_resetting (void); 473 extern tNFA_HCI_DYN_PIPE *nfa_hciu_find_active_pipe_on_gate (UINT8 gate_id); 474 extern tNFA_HANDLE nfa_hciu_get_pipe_owner (UINT8 pipe_id); 475 extern UINT8 nfa_hciu_count_open_pipes_on_gate (tNFA_HCI_DYN_GATE *p_gate); 476 extern UINT8 nfa_hciu_count_pipes_on_gate (tNFA_HCI_DYN_GATE *p_gate); 477 extern tNFA_STATUS nfa_hciu_asmbl_dyn_pipe_pkt (UINT8 *p_data, UINT8 data_len); 478 479 extern tNFA_HCI_RESPONSE nfa_hciu_add_pipe_to_gate (UINT8 pipe, UINT8 local_gate, UINT8 dest_host, UINT8 dest_gate); 480 extern tNFA_HCI_RESPONSE nfa_hciu_add_pipe_to_static_gate (UINT8 local_gate, UINT8 pipe_id, UINT8 dest_host, UINT8 dest_gate); 481 482 extern tNFA_HCI_RESPONSE nfa_hciu_release_pipe (UINT8 pipe_id); 483 extern void nfa_hciu_release_gate (UINT8 gate); 484 extern void nfa_hciu_remove_all_pipes_from_host (UINT8 host); 485 extern UINT8 nfa_hciu_get_allocated_gate_list (UINT8 *p_gate_list); 486 487 extern void nfa_hciu_send_to_app (tNFA_HCI_EVT event, tNFA_HCI_EVT_DATA *p_evt, tNFA_HANDLE app_handle); 488 extern void nfa_hciu_send_to_all_apps (tNFA_HCI_EVT event, tNFA_HCI_EVT_DATA *p_evt); 489 extern void nfa_hciu_send_to_apps_handling_connectivity_evts (tNFA_HCI_EVT event, tNFA_HCI_EVT_DATA *p_evt); 490 491 extern tNFA_STATUS nfa_hciu_send_close_pipe_cmd (UINT8 pipe); 492 extern tNFA_STATUS nfa_hciu_send_delete_pipe_cmd (UINT8 pipe); 493 extern tNFA_STATUS nfa_hciu_send_clear_all_pipe_cmd (void); 494 extern tNFA_STATUS nfa_hciu_send_open_pipe_cmd (UINT8 pipe); 495 extern tNFA_STATUS nfa_hciu_send_get_param_cmd (UINT8 pipe, UINT8 index); 496 extern tNFA_STATUS nfa_hciu_send_create_pipe_cmd (UINT8 source_gate, UINT8 dest_host, UINT8 dest_gate); 497 extern tNFA_STATUS nfa_hciu_send_set_param_cmd (UINT8 pipe, UINT8 index, UINT8 length, UINT8 *p_data); 498 extern tNFA_STATUS nfa_hciu_send_msg (UINT8 pipe_id, UINT8 type, UINT8 instruction, UINT16 pkt_len, UINT8 *p_pkt); 499 500 501 502 #if (BT_TRACE_VERBOSE == TRUE) 503 extern char *nfa_hciu_type_2_str (UINT8 type); 504 extern char *nfa_hciu_instr_2_str (UINT8 type); 505 extern char *nfa_hciu_get_event_name (UINT16 event); 506 extern char *nfa_hciu_get_response_name (UINT8 rsp_code); 507 extern char *nfa_hciu_get_state_name (UINT8 state); 508 extern char *nfa_hciu_get_type_inst_names (UINT8 pipe, UINT8 type, UINT8 inst); 509 extern char *nfa_hciu_evt_2_str (UINT8 pipe_id, UINT8 evt); 510 #endif 511 512 513 #endif /* NFA_HCI_INT_H */ 514