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