1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
35c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen *  Copyright (C) 2003-2013 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 device manager.
23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/
25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFA_DM_INT_H
26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_INT_H
27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfc_api.h"
29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_api.h"
30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
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/* DM events */
37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum
38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    /* device manager local device API events */
40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_ENABLE_EVT           = NFA_SYS_EVT_START (NFA_ID_DM),
41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_DISABLE_EVT,
42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_SET_CONFIG_EVT,
43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_GET_CONFIG_EVT,
44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_REQUEST_EXCL_RF_CTRL_EVT,
45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_RELEASE_EXCL_RF_CTRL_EVT,
46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_ENABLE_POLLING_EVT,
47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_DISABLE_POLLING_EVT,
48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_RAW_FRAME_EVT,
49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_SET_P2P_LISTEN_TECH_EVT,
50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_START_RF_DISCOVERY_EVT,
51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_STOP_RF_DISCOVERY_EVT,
52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_SET_RF_DISC_DURATION_EVT,
53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_SELECT_EVT,
54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_UPDATE_RF_PARAMS_EVT,
55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_DEACTIVATE_EVT,
56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_POWER_OFF_SLEEP_EVT,
57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_REG_NDEF_HDLR_EVT,
58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_DEREG_NDEF_HDLR_EVT,
59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_REG_VSC_EVT,
60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_API_SEND_VSC_EVT,
61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_TIMEOUT_DISABLE_EVT,
62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_MAX_EVT
63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_ENABLE_EVT */
67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BT_HDR                  hdr;
70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_CBACK           *p_dm_cback;
71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_CONN_CBACK         *p_conn_cback;
72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_ENABLE;
73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_DISABLE_EVT */
75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BT_HDR              hdr;
78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BOOLEAN             graceful;
79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_DISABLE;
80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_SET_CONFIG_EVT */
82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BT_HDR              hdr;
85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_PMID           param_id;
86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8               length;
87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8              *p_data;
88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_SET_CONFIG;
89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_GET_CONFIG_EVT */
91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BT_HDR              hdr;
94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8               num_ids;
95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_PMID          *p_pmids;
96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_GET_CONFIG;
97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_REQ_EXCL_RF_CTRL_EVT */
99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BT_HDR               hdr;
102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_TECHNOLOGY_MASK poll_mask;
103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_LISTEN_CFG      listen_cfg;
104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_CONN_CBACK     *p_conn_cback;
105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_NDEF_CBACK     *p_ndef_cback;
106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_REQ_EXCL_RF_CTRL;
107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_ENABLE_POLLING_EVT */
109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BT_HDR               hdr;
112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_TECHNOLOGY_MASK poll_mask;
113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_ENABLE_POLL;
114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_SET_P2P_LISTEN_TECH_EVT */
116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BT_HDR                  hdr;
119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_TECHNOLOGY_MASK    tech_mask;
120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_SET_P2P_LISTEN_TECH;
121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_SELECT_EVT */
123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BT_HDR              hdr;
126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8               rf_disc_id;
127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_NFC_PROTOCOL   protocol;
128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_INTF_TYPE      rf_interface;
129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_SELECT;
130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_UPDATE_RF_PARAMS_EVT */
132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BT_HDR              hdr;
135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_RF_COMM_PARAMS params;
136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_UPDATE_RF_PARAMS;
137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_DEACTIVATE_EVT */
139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BT_HDR              hdr;
142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BOOLEAN             sleep_mode;
143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_DEACTIVATE;
144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_SET_RF_DISC_DURATION_EVT */
146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BT_HDR              hdr;
149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT16              rf_disc_dur_ms;
150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_SET_RF_DISC_DUR;
151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_RF_DISC_DURATION_MAX                0xFFFF
152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_REG_NDEF_HDLR_EVT */
154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_NDEF_FLAGS_HANDLE_WHOLE_MESSAGE     0x01
155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_NDEF_FLAGS_WKT_URI                  0x02
156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_NDEF_FLAGS_WHOLE_MESSAGE_NOTIFIED   0x04
157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BT_HDR              hdr;
161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_HANDLE         ndef_type_handle;
162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8               flags;
163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_NDEF_CBACK    *p_ndef_cback;
164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_TNF            tnf;                /* Type-name field of record-type that was registered.                  */
165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_NDEF_URI_ID    uri_id;             /* URI prefix abrieviation (for NFA_RegisterNDefUriHandler)             */
166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8               name_len;           /* Length of type name or absolute URI                                  */
167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8               name[1];            /* Type name or absolute URI of record-type that got was registered.    */
168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_REG_NDEF_HDLR;
169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_DEREG_NDEF_HDLR_EVT */
171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BT_HDR      hdr;
174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_HANDLE ndef_type_handle;
175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_DEREG_NDEF_HDLR;
176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
177e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_REG_VSC_EVT */
178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BT_HDR          hdr;
181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_VSC_CBACK  *p_cback;
182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BOOLEAN         is_register;
183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_REG_VSC;
184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_SEND_VSC_EVT */
186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BT_HDR          hdr;
189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_VSC_CBACK  *p_cback;
190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8           oid;
191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8           cmd_params_len;
192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT16          pad;    /* add padding to ensure the size is big enough for offset=NCI_VSC_MSG_HDR_SIZE */
193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8           *p_cmd_params;
194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_SEND_VSC;
195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* union of all data types */
198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef union
199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    /* GKI event buffer header */
201e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BT_HDR                          hdr;                /* NFA_DM_API_RAW_FRAME_EVT             */
202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                                        /* NFA_DM_API_MULTI_TECH_RSP_EVT        */
203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                                        /* NFA_DM_API_RELEASE_EXCL_RF_CTRL      */
204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                                        /* NFA_DM_API_DISABLE_POLLING_EVT       */
205e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                                        /* NFA_DM_API_START_RF_DISCOVERY_EVT    */
206e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                                        /* NFA_DM_API_STOP_RF_DISCOVERY_EVT     */
207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_API_ENABLE              enable;             /* NFA_DM_API_ENABLE_EVT                */
208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_API_DISABLE             disable;            /* NFA_DM_API_DISABLE_EVT               */
209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_API_SET_CONFIG          setconfig;          /* NFA_DM_API_SET_CONFIG_EVT            */
210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_API_GET_CONFIG          getconfig;          /* NFA_DM_API_GET_CONFIG_EVT            */
211e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_API_SET_RF_DISC_DUR     disc_duration;      /* NFA_DM_API_SET_RF_DISC_DURATION_EVT  */
212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_API_REG_NDEF_HDLR       reg_ndef_hdlr;      /* NFA_DM_API_REG_NDEF_HDLR_EVT         */
213e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_API_DEREG_NDEF_HDLR     dereg_ndef_hdlr;    /* NFA_DM_API_DEREG_NDEF_HDLR_EVT       */
214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_API_REQ_EXCL_RF_CTRL    req_excl_rf_ctrl;   /* NFA_DM_API_REQUEST_EXCL_RF_CTRL      */
215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_API_ENABLE_POLL         enable_poll;        /* NFA_DM_API_ENABLE_POLLING_EVT        */
216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_API_SET_P2P_LISTEN_TECH set_p2p_listen_tech;/* NFA_DM_API_SET_P2P_LISTEN_TECH_EVT   */
217e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_API_SELECT              select;             /* NFA_DM_API_SELECT_EVT                */
218e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_API_UPDATE_RF_PARAMS    update_rf_params;   /* NFA_DM_API_UPDATE_RF_PARAMS_EVT      */
219e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_API_DEACTIVATE          deactivate;         /* NFA_DM_API_DEACTIVATE_EVT            */
220e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_API_SEND_VSC            send_vsc;           /* NFA_DM_API_SEND_VSC_EVT              */
221e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_API_REG_VSC             reg_vsc;            /* NFA_DM_API_REG_VSC_EVT               */
222e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_MSG;
223e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
224e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* DM RF discovery state */
225e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum
226e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
227e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RFST_IDLE,               /* idle state                     */
228e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RFST_DISCOVERY,          /* discovery state                */
229e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RFST_W4_ALL_DISCOVERIES, /* wait for all discoveries state */
230e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RFST_W4_HOST_SELECT,     /* wait for host selection state  */
231e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RFST_POLL_ACTIVE,        /* poll mode activated state      */
232e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RFST_LISTEN_ACTIVE,      /* listen mode activated state    */
233e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RFST_LISTEN_SLEEP,       /* listen mode sleep state        */
234e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RFST_LP_LISTEN,          /* Listening in Low Power mode    */
235e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RFST_LP_ACTIVE           /* Activated in Low Power mode    */
236e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
237e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFA_DM_RF_DISC_STATE;
238e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
239e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* DM RF discovery state machine event */
240e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum
241e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
242e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RF_DISCOVER_CMD,         /* start RF discovery                    */
243e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RF_DISCOVER_RSP,         /* discover response from NFCC           */
244e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RF_DISCOVER_NTF,         /* RF discovery NTF from NFCC            */
245e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RF_DISCOVER_SELECT_CMD,  /* select discovered target              */
246e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RF_DISCOVER_SELECT_RSP,  /* select response from NFCC             */
247e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RF_INTF_ACTIVATED_NTF,   /* RF interface activation NTF from NFCC */
248e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RF_DEACTIVATE_CMD,       /* deactivate RF interface               */
249e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RF_DEACTIVATE_RSP,       /* deactivate response from NFCC         */
250e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RF_DEACTIVATE_NTF,       /* deactivate RF interface NTF from NFCC */
251e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_LP_LISTEN_CMD,           /* NFCC is listening in low power mode   */
252e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_CORE_INTF_ERROR_NTF,     /* RF interface error NTF from NFCC      */
253e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_DISC_SM_MAX_EVENT
254e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
255e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFA_DM_RF_DISC_SM_EVENT;
256e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
257e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* DM RF discovery state machine data */
258e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
259e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
260e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8               rf_disc_id;
261e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_NFC_PROTOCOL   protocol;
262e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_INTF_TYPE      rf_interface;
263e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_DISC_SELECT_PARAMS;
264e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
265e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef union
266e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
267e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFC_DISCOVER               nfc_discover;       /* discovery data from NFCC    */
268e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFC_DEACT_TYPE             deactivate_type;    /* deactivation type           */
269e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_DISC_SELECT_PARAMS  select;             /* selected target information */
270e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_RF_DISC_DATA;
271e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
272e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Callback event from NFA DM RF Discovery to other NFA sub-modules */
273e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum
274e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
275e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RF_DISC_START_EVT,           /* discovery started with protocol, technology and mode       */
276e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_RF_DISC_ACTIVATED_EVT,       /* activated with configured protocol, technology and mode    */
2775c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen    NFA_DM_RF_DISC_DEACTIVATED_EVT      /* deactivated sleep or idle                                  */
278e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
279e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFA_DM_RF_DISC_EVT;
280e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
281e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Combined NFC Technology and protocol bit mask */
282e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_PA_T1T                 0x00000001
283e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_PA_T2T                 0x00000002
284e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_PA_ISO_DEP             0x00000004
285e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_PA_NFC_DEP             0x00000008
286e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_PB_ISO_DEP             0x00000010
287e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_PF_T3T                 0x00000020
288e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_PF_NFC_DEP             0x00000040
289e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_P_ISO15693             0x00000100
290e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_P_B_PRIME              0x00000200
291e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_P_KOVIO                0x00000400
292e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_PAA_NFC_DEP            0x00000800
293e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_PFA_NFC_DEP            0x00001000
294e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_P_LEGACY               0x00002000  /* Legacy/proprietary/non-NFC Forum protocol (e.g Shanghai transit card) */
295e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_POLL                   0x0000FFFF
296e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
297e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LA_T1T                 0x00010000
298e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LA_T2T                 0x00020000
299e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LA_ISO_DEP             0x00040000
300e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LA_NFC_DEP             0x00080000
301e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LB_ISO_DEP             0x00100000
302e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LF_T3T                 0x00200000
303e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LF_NFC_DEP             0x00400000
304e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_L_ISO15693             0x01000000
305e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_L_B_PRIME              0x02000000
306e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LAA_NFC_DEP            0x04000000
307e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LFA_NFC_DEP            0x08000000
308e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_L_LEGACY               0x10000000
309e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LISTEN                 0xFFFF0000
310e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
311e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT32  tNFA_DM_DISC_TECH_PROTO_MASK;
312e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
313e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
314e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* DM RF discovery host ID */
315e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_HOST_ID_DH          NFC_DH_ID
316e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFA_DM_DISC_HOST_ID;
317e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
318e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* DM deactivation callback type */
319e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (tNFA_DISCOVER_CBACK) (tNFA_DM_RF_DISC_EVT event, tNFC_DISCOVER *p_data);
320e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
321e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* DM RF discovery action flags */
322e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_FLAGS_ENABLED        0x0001    /* RF discovery process has been started        */
323e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_FLAGS_STOPPING       0x0002    /* Stop RF discovery is pending                 */
324e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_FLAGS_DISABLING      0x0004    /* Disable NFA is pending                       */
325e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_FLAGS_CHECKING       0x0008    /* Presence check/unknown protocol in progress  */
326e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_FLAGS_NOTIFY         0x0010    /* Notify sub-module that discovery is starting */
327e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_FLAGS_W4_RSP         0x0020    /* command has been sent to NFCC in the state   */
328e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_FLAGS_W4_NTF         0x0040    /* wait for NTF before changing discovery state */
329e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
330e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT16 tNFA_DM_DISC_FLAGS;
331e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
332e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* DM Discovery control block */
333e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
334e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
335e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BOOLEAN                         in_use;             /* TRUE if used          */
336e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DISCOVER_CBACK            *p_disc_cback;       /* discovery callback    */
337e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
338e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_DISC_FLAGS              disc_flags;         /* specific action flags */
339e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_DISC_HOST_ID            host_id;            /* DH or UICC1/UICC2     */
340e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_DISC_TECH_PROTO_MASK    requested_disc_mask;/* technology and protocol requested              */
341e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_DISC_TECH_PROTO_MASK    selected_disc_mask; /* technology and protocol waiting for activation */
342e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_DISC_ENTRY;
343e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
344e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_NUM_ENTRIES  8              /* polling, raw listen, P2P listen, NDEF CE, 2xVSE, 2xUICC */
345e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
346e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_MAX_DISC_PARAMS   16             /* max discovery technology parameters */
347e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
348e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* index of listen mode routing table for technologies */
349e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum {
350e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_DISC_LRT_NFC_A,
351e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_DISC_LRT_NFC_B,
352e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_DISC_LRT_NFC_F,
353e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_DM_DISC_LRT_NFC_BP
354e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
355e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
356e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* SLP_REQ (HLTA) command */
357e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SLP_REQ_CMD     0x5000
358e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_MAX_TECH_ROUTE   4 /* NFA_EE_MAX_TECH_ROUTE. only A, B, F, Bprime are supported by UICC now */
359e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
3605c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen/* timeout for waiting deactivation NTF,
3615c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen** possible delay to send deactivate CMD if all credit wasn't returned
3625c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen** transport delay (1sec) and max RWT (5sec)
3635c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen*/
3645c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define NFA_DM_DISC_TIMEOUT_W4_DEACT_NTF            (NFC_DEACTIVATE_TIMEOUT*1000 + 6000)
3655c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
366e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
367e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
368e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT16                  disc_duration;          /* Disc duration                                    */
369e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_DISC_FLAGS      disc_flags;             /* specific action flags                            */
370e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_RF_DISC_STATE   disc_state;             /* RF discovery state                               */
371e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
372e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFC_RF_TECH_N_MODE     activated_tech_mode;    /* activated technology and mode                    */
373e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8                   activated_rf_disc_id;   /* activated RF discovery ID                        */
374e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_INTF_TYPE          activated_rf_interface; /* activated RF interface                           */
375e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_NFC_PROTOCOL       activated_protocol;     /* activated protocol                               */
376e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_HANDLE             activated_handle;       /* handle of activated sub-module                   */
377e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8                   activated_sel_res;      /* activated tag's SEL_RES response                 */
378e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
379e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_DISC_ENTRY      entry[NFA_DM_DISC_NUM_ENTRIES];
380e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
381e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_DISC_ENTRY      excl_disc_entry;        /* exclusive RF discovery                           */
382e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_LISTEN_CFG         excl_listen_config;     /* listen cfg for exclusive-rf mode                 */
383e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
384e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8                   listen_RT[NFA_DM_MAX_TECH_ROUTE];/* Host ID for A, B, F, B' technology routing*/
385e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_DISC_TECH_PROTO_MASK    dm_disc_mask;   /* technology and protocol waiting for activation   */
386e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
3875c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen    TIMER_LIST_ENT          tle;                    /* timer for waiting deactivation NTF               */
3885c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
389e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_DISC_CB;
390e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
391e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NDEF Type Handler Definitions */
392e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_NDEF_DEFAULT_HANDLER_IDX    0           /* Default handler entry in ndef_handler table      */
393e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
394e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_PARAM_ID_INVALID            0xFF
395e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
396e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Maximum number of pending SetConfigs */
397e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_SETCONFIG_PENDING_MAX            32
398e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
399e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA_DM flags */
400e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_DM_IS_ACTIVE               0x00000001  /* DM is enabled                                                        */
401e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_EXCL_RF_ACTIVE             0x00000002  /* Exclusive RF mode is active                                          */
402e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_POLLING_ENABLED            0x00000004  /* Polling is enabled (while not in exclusive RF mode                   */
403e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_SEND_POLL_STOP_EVT         0x00000008  /* send poll stop event                                                 */
404e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_AUTO_READING_NDEF          0x00000010  /* auto reading of NDEF in progress                                     */
405e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_ENABLE_EVT_PEND            0x00000020  /* NFA_DM_ENABLE_EVT is not reported yet                                */
406e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_SEND_DEACTIVATED_EVT       0x00000040  /* Send NFA_DEACTIVATED_EVT when deactivated                            */
407e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_NFCC_IS_RESTORING          0x00000100  /* NFCC is restoring after back to full power mode                      */
408e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_SETTING_PWR_MODE           0x00000200  /* NFCC power mode is updating                                          */
409e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_DM_DISABLING_NFC           0x00000400  /* NFA DM is disabling NFC                                              */
410e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* stored parameters */
411e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
412e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
413e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 total_duration[NCI_PARAM_LEN_TOTAL_DURATION];
414e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
415e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 la_bit_frame_sdd[NCI_PARAM_LEN_LA_BIT_FRAME_SDD];
416e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 la_bit_frame_sdd_len;
417e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 la_platform_config[NCI_PARAM_LEN_LA_PLATFORM_CONFIG];
418e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 la_platform_config_len;
419e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 la_sel_info[NCI_PARAM_LEN_LA_SEL_INFO];
420e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 la_sel_info_len;
421e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 la_nfcid1[NCI_NFCID1_MAX_LEN];
422e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 la_nfcid1_len;
423e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 la_hist_by[NCI_MAX_HIS_BYTES_LEN];
424e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 la_hist_by_len;
425e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
426e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 lb_sensb_info[NCI_PARAM_LEN_LB_SENSB_INFO];
427e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 lb_sensb_info_len;
428e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 lb_nfcid0[NCI_PARAM_LEN_LB_NFCID0];
429e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 lb_nfcid0_len;
430e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 lb_appdata[NCI_PARAM_LEN_LB_APPDATA];
431e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 lb_appdata_len;
432e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 lb_adc_fo[NCI_PARAM_LEN_LB_ADC_FO];
433e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 lb_adc_fo_len;
434e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 lb_h_info[NCI_MAX_ATTRIB_LEN];
435e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 lb_h_info_len;
436e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
437e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 lf_protocol[NCI_PARAM_LEN_LF_PROTOCOL];
438e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 lf_protocol_len;
439e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 lf_t3t_flags2[NCI_PARAM_LEN_LF_T3T_FLAGS2];
440e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 lf_t3t_flags2_len;
441e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 lf_t3t_pmm[NCI_PARAM_LEN_LF_T3T_PMM];
442e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 lf_t3t_id[NFA_CE_LISTEN_INFO_MAX][NCI_PARAM_LEN_LF_T3T_ID];
443e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
444e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 fwi[NCI_PARAM_LEN_FWI];
445e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 wt[NCI_PARAM_LEN_WT];
446e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 atr_req_gen_bytes[NCI_MAX_GEN_BYTES_LEN];
447e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 atr_req_gen_bytes_len;
448e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 atr_res_gen_bytes[NCI_MAX_GEN_BYTES_LEN];
449e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8 atr_res_gen_bytes_len;
450e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_PARAMS;
451e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
452e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* DM control block */
453e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
454e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
455e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT32                      flags;              /* NFA_DM flags (see definitions for NFA_DM_FLAGS_*)    */
456e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_CBACK              *p_dm_cback;         /* NFA DM callback                                      */
457e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    TIMER_LIST_ENT              tle;
458e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
459e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BOOLEAN                     presence_check_deact_pending; /* TRUE if deactivate while checking presence */
460e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DEACTIVATE_TYPE        presence_check_deact_type;    /* deactivate type                            */
461e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
462e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    /* NFC link connection management */
463e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_CONN_CBACK            *p_conn_cback;       /* callback for connection events       */
464e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_TECHNOLOGY_MASK        poll_mask;          /* technologies being polled            */
465e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
466e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_CONN_CBACK            *p_excl_conn_cback;  /* exclusive RF mode callback           */
467e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_NDEF_CBACK            *p_excl_ndef_cback;  /* ndef callback for exclusive RF mdoe  */
468e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
469e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_HANDLE                 poll_disc_handle;   /* discovery handle for polling         */
470e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
471e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8                      *p_activate_ntf;     /* temp holding activation notfication  */
472e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
473e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8                       activated_nfcid[NCI_NFCID1_MAX_LEN];
474e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                                    /* NFCID 0/1/2 or UID of ISO15694       */
475e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8                       activated_nfcid_len;/* length of NFCID ot UID               */
476e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
477e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    /* NFC link discovery management */
478e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_DISC_CB             disc_cb;
479e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
480e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    /* NDEF Type handler */
481e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_API_REG_NDEF_HDLR   *p_ndef_handler[NFA_NDEF_MAX_HANDLERS];    /* ndef handler table */
482e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
483e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    /* stored parameters */
484e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_DM_PARAMS              params;
485e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
486e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    /* SetConfig management */
487e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT32                      setcfg_pending_mask;    /* Mask of to indicate whether pending SET_CONFIGs require NFA_DM_SET_CONFIG_EVT. LSB=oldest pending */
488e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8                       setcfg_pending_num;     /* Number of setconfigs pending */
489e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
490e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    /* NFCC power mode */
491e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8                       nfcc_pwr_mode;          /* NFA_DM_PWR_MODE_FULL or NFA_DM_PWR_MODE_OFF_SLEEP */
492e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_CB;
493e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
494e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Internal function prototypes */
495e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_ndef_handle_message (tNFA_STATUS status, UINT8 *p_msg_buf, UINT32 len);
496e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_ndef_dereg_all (void);
497e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_act_conn_cback_notify (UINT8 event, tNFA_CONN_EVT_DATA *p_data);
498e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_notify_activation_status (tNFA_STATUS status, tNFA_TAG_PARAMS *p_params);
499e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_disable_complete (void);
500e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
501e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Internal functions from nfa_rw */
502e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_rw_init (void);
503e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_rw_proc_disc_evt (tNFA_DM_RF_DISC_EVT event, tNFC_DISCOVER *p_data, BOOLEAN excl_rf_not_active);
504e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS nfa_rw_send_raw_frame (BT_HDR *p_data);
505e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
506e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Internal functions from nfa_ce */
507e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_ce_init (void);
508e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
509e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Pointer to compile-time configuration structure */
5105c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenenextern tNFA_HCI_CFG *p_nfa_hci_cfg;
511e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern tNFA_DM_CFG *p_nfa_dm_cfg;
512e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern UINT8 *p_nfa_dm_ce_cfg;
513e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern UINT8 *p_nfa_dm_gen_cfg;
514e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern UINT8 nfa_ee_max_ee_cfg;
515e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern tNCI_DISCOVER_MAPS *p_nfa_dm_interface_mapping;
516e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern UINT8 nfa_dm_num_dm_interface_mapping;
517e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
518e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA device manager control block */
519e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if NFA_DYNAMIC_MEMORY == FALSE
520e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern tNFA_DM_CB nfa_dm_cb;
521e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else
522e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern tNFA_DM_CB *nfa_dm_cb_ptr;
523e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define nfa_dm_cb (*nfa_dm_cb_ptr)
524e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
525e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
526e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_init (void);
527e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_p2p_init (void);
5285c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#if (defined (NFA_CHO_INCLUDED) && (NFA_CHO_INCLUDED==TRUE))
529e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_cho_init (void);
5305c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#else
5315c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define nfa_cho_init()
5325c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#endif /* (defined (NFA_CHO_INCLUDED) && (NFA_CHO_INCLUDED==TRUE)) */
5335c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#if (defined (NFA_SNEP_INCLUDED) && (NFA_SNEP_INCLUDED==TRUE))
534e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_snep_init (BOOLEAN is_dta_mode);
5355c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#else
5365c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define nfa_snep_init(is_dta_mode)
5375c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#endif
5385c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
539e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dta_init (void);
540e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (NFC_NFCEE_INCLUDED == TRUE)
541e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_ee_init (void);
542e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_hci_init (void);
543e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else
544e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define nfa_ee_init()
545e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define nfa_hci_init()
546e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
547e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
548e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Action function prototypes */
549e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_enable (tNFA_DM_MSG *p_data);
550e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_disable (tNFA_DM_MSG *p_data);
551e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_set_config (tNFA_DM_MSG *p_data);
552e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_get_config (tNFA_DM_MSG *p_data);
553e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_request_excl_rf_ctrl (tNFA_DM_MSG *p_data);
554e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_release_excl_rf_ctrl (tNFA_DM_MSG *p_data);
555e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_enable_polling (tNFA_DM_MSG *p_data);
556e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_disable_polling (tNFA_DM_MSG *p_data);
557e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_send_raw_frame (tNFA_DM_MSG *p_data);
558e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_set_p2p_listen_tech (tNFA_DM_MSG *p_data);
559e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_start_rf_discovery (tNFA_DM_MSG *p_data);
560e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_stop_rf_discovery (tNFA_DM_MSG *p_data);
561e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_set_rf_disc_duration (tNFA_DM_MSG *p_data);
562e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_select (tNFA_DM_MSG *p_data);
563e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_update_rf_params (tNFA_DM_MSG *p_data);
564e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_deactivate (tNFA_DM_MSG *p_data);
565e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_power_off_sleep (tNFA_DM_MSG *p_data);
566e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_ndef_reg_hdlr (tNFA_DM_MSG *p_data);
567e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_ndef_dereg_hdlr (tNFA_DM_MSG *p_data);
568e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_tout (tNFA_DM_MSG *p_data);
569e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_reg_vsc (tNFA_DM_MSG *p_data);
570e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_send_vsc (tNFA_DM_MSG *p_data);
571e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_disable_timeout (tNFA_DM_MSG *p_data);
572e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_nfc_cback_data (tNFA_DM_MSG *p_data);
573e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
574e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_proc_nfcc_power_mode (UINT8 nfcc_power_mode);
575e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
576e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Main function prototypes */
577e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_evt_hdlr (BT_HDR *p_msg);
578e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_sys_enable (void);
579e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_sys_disable (void);
580e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS nfa_dm_check_set_config (UINT8 tlv_list_len, UINT8 *p_tlv_list, BOOLEAN app_init);
581e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
582e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_conn_cback_event_notify (UINT8 event, tNFA_CONN_EVT_DATA *p_data);
583e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
584e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Discovery function prototypes */
585e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_disc_sm_execute (tNFA_DM_RF_DISC_SM_EVENT event, tNFA_DM_RF_DISC_DATA *p_data);
586e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_HANDLE nfa_dm_add_rf_discover (tNFA_DM_DISC_TECH_PROTO_MASK disc_mask, tNFA_DM_DISC_HOST_ID host_id, tNFA_DISCOVER_CBACK *p_disc_cback);
587e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_delete_rf_discover (tNFA_HANDLE handle);
588e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_start_excl_discovery (tNFA_TECHNOLOGY_MASK poll_tech_mask,
589e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                  tNFA_LISTEN_CFG *p_listen_cfg,
590e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                  tNFA_DISCOVER_CBACK  *p_disc_cback);
591e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_rel_excl_rf_control_and_notify (void);
592e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_stop_excl_discovery (void);
593e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_disc_new_state (tNFA_DM_RF_DISC_STATE new_state);
594e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
595e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_start_rf_discover (void);
596e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_rf_discover_select (UINT8 rf_disc_id, tNFA_NFC_PROTOCOL protocol, tNFA_INTF_TYPE rf_interface);
597e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS nfa_dm_rf_deactivate (tNFA_DEACTIVATE_TYPE deactivate_type);
598e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_is_protocol_supported (tNFA_NFC_PROTOCOL protocol, UINT8 sel_res);
599e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_is_active (void);
600e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFC_STATUS nfa_dm_disc_presence_check (void);
601e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
602e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
603e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (NFC_NFCEE_INCLUDED == FALSE)
604e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define nfa_ee_get_tech_route(ps, ha) memset(ha, NFC_DH_ID, NFA_DM_MAX_TECH_ROUTE);
605e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
606e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
607e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (BT_TRACE_VERBOSE == TRUE)
608e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectchar *nfa_dm_nfc_revt_2_str (tNFC_RESPONSE_EVT event);
609e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
610e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
611e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
612e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* NFA_DM_INT_H */
613e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
614