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