NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
btif_hl.h
1/******************************************************************************
2 *
3 * Copyright (C) 2009-2012 Broadcom Corporation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at:
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 ******************************************************************************/
18
19#ifndef BTIF_HL_H
20#define BTIF_HL_H
21
22/*******************************************************************************
23** Constants & Macros
24********************************************************************************/
25
26#define BTIF_HL_DATA_TYPE_NONE 0x0000
27#define BTIF_HL_DATA_TYPE_PULSE_OXIMETER 0x1004 /* from BT assigned number */
28#define BTIF_HL_DATA_TYPE_BLOOD_PRESSURE_MON 0x1007
29#define BTIF_HL_DATA_TYPE_BODY_THERMOMETER 0x1008
30#define BTIF_HL_DATA_TYPE_BODY_WEIGHT_SCALE 0x100F
31#define BTIF_HL_DATA_TYPE_GLUCOSE_METER 0x1011
32#define BTIF_HL_DATA_TYPE_STEP_COUNTER 0x1068
33
34#define BTIF_HL_CCH_NUM_FILTER_ELEMS 3
35#define BTIF_HL_APPLICATION_NAME_LEN 512
36
37#define BTIF_HL_NV_MAX_APPS 16
38
39
40/*******************************************************************************
41** Type definitions and return values
42********************************************************************************/
43
44typedef enum
45{
46 BTIF_HL_SOC_STATE_IDLE,
47 BTIF_HL_SOC_STATE_W4_ADD,
48 BTIF_HL_SOC_STATE_W4_CONN,
49 BTIF_HL_SOC_STATE_W4_READ,
50 BTIF_HL_SOC_STATE_W4_REL
51} btif_hl_soc_state_t;
52
53typedef enum
54{
55 BTIF_HL_STATE_DISABLED,
56 BTIF_HL_STATE_DISABLING,
57 BTIF_HL_STATE_ENABLED,
58 BTIF_HL_STATE_ENABLING,
59} btif_hl_state_t;
60
61typedef enum
62{
63 BTIF_HL_CCH_OP_NONE,
64 BTIF_HL_CCH_OP_MDEP_FILTERING,
65 BTIF_HL_CCH_OP_MATCHED_CTRL_PSM,
66 BTIF_HL_CCH_OP_DCH_OPEN,
67 BTIF_HL_CCH_OP_DCH_RECONNECT,
68 BTIF_HL_CCH_OP_DCH_ECHO_TEST
69} btif_hl_cch_op_t;
70
71typedef enum
72{
73 BTIF_HL_PEND_DCH_OP_NONE,
74 BTIF_HL_PEND_DCH_OP_DELETE_MDL,
75 BTIF_HL_PEND_DCH_OP_OPEN,
76 BTIF_HL_PEND_DCH_OP_RECONNECT
77} btif_hl_pend_dch_op_t;
78
79typedef enum
80{
81 BTIF_HL_DCH_OP_NONE,
82 BTIF_HL_DCH_OP_DISC
83} btif_hl_dch_op_t;
84
85typedef enum
86{
87 BTIF_HL_CHAN_CB_STATE_NONE,
88 BTIF_HL_CHAN_CB_STATE_CONNECTING_PENDING,
89 BTIF_HL_CHAN_CB_STATE_CONNECTED_PENDING,
90
91 BTIF_HL_CHAN_CB_STATE_DISCONNECTING_PENDING,
92 BTIF_HL_CHAN_CB_STATE_DISCONNECTED_PENDING,
93 BTIF_HL_CHAN_CB_STATE_DESTROYED_PENDING,
94} btif_hl_chan_cb_state_t;
95
96enum
97{
98 BTIF_HL_SEND_CONNECTED_CB,
99 BTIF_HL_SEND_DISCONNECTED_CB,
100 BTIF_HL_REG_APP,
101 BTIF_HL_UNREG_APP,
102 BTIF_HL_UPDATE_MDL,
103};
104
105typedef struct
106{
107 UINT8 mdep_cfg_idx;
108 int data_type;
109 tBTA_HL_MDEP_ID peer_mdep_id;
111
112typedef struct
113{
114 tBTA_HL_MDL_CFG base;
117
118typedef struct
119{
120 btif_hl_mdl_cfg_t mdl_cfg[BTA_HL_NUM_MDL_CFGS];
122
123typedef struct
124{
125 tBTA_HL_SUP_FEATURE sup_feature;
126 tBTA_HL_DCH_CFG channel_type[BTA_HL_NUM_MDEPS];
127 char srv_name[BTA_SERVICE_NAME_LEN +1];
128 char srv_desp[BTA_SERVICE_DESP_LEN +1];
129 char provider_name[BTA_PROVIDER_NAME_LEN +1];
130 char application_name[BTIF_HL_APPLICATION_NAME_LEN +1];
132
133typedef struct
134{
135 BOOLEAN in_use;
136 UINT16 use_freq;
138
139typedef struct
140{
141 btif_hl_nv_app_t app[BTIF_HL_NV_MAX_APPS];
143
144typedef struct
145{
146 UINT8 app_nv_idx;
147 BOOLEAN active;
148 UINT8 app_idx;
149 btif_hl_nv_app_data_t app_data;
151
152typedef struct
153{
154 BOOLEAN is_app_read;
155 btif_hl_nv_app_cb_t app_cb;
156 BUFFER_Q app_queue;
158
159typedef struct
160{
161 int channel_id;
162 BD_ADDR bd_addr;
163 UINT8 mdep_cfg_idx;
164 int max_s;
165 int socket_id[2];
166 UINT8 app_idx;
167 UINT8 mcl_idx;
168 UINT8 mdl_idx;
169 btif_hl_soc_state_t state;
171
172typedef struct
173{
174 UINT16 data_type;
175 UINT16 max_tx_apdu_size;
176 UINT16 max_rx_apdu_size;
178
179typedef struct
180{
181 UINT16 data_type;
182 tBTA_HL_MDEP_ROLE peer_mdep_role;
184
185typedef struct
186{
187 UINT8 num_elems;
188 btif_hl_filter_elem_t elem[BTIF_HL_CCH_NUM_FILTER_ELEMS];
190
191typedef struct
192{
193 BOOLEAN in_use;
194 UINT16 mdl_id;
195 tBTA_HL_MDL_HANDLE mdl_handle;
196 btif_hl_dch_op_t dch_oper;
197 tBTA_HL_MDEP_ID local_mdep_id;
198 UINT8 local_mdep_cfg_idx;
199 tBTA_HL_DCH_CFG local_cfg;
200 tBTA_HL_MDEP_ID peer_mdep_id;
201 UINT16 peer_data_type;
202 tBTA_HL_MDEP_ROLE peer_mdep_role;
203 tBTA_HL_DCH_MODE dch_mode;
204 tBTA_SEC sec_mask;
205 BOOLEAN is_the_first_reliable;
206 BOOLEAN delete_mdl;
207 UINT16 mtu;
208 tMCA_CHNL_CFG chnl_cfg;
209 UINT16 tx_size;
210 UINT8 *p_tx_pkt;
211 UINT8 *p_rx_pkt;
212 BOOLEAN cong;
213 btif_hl_soc_cb_t *p_scb;
214 int channel_id;
216
217typedef struct
218{
219 int channel_id;
220 int mdep_cfg_idx;
221 BOOLEAN in_use;
222 btif_hl_chan_cb_state_t cb_state;
223 btif_hl_pend_dch_op_t op;
224 BD_ADDR bd_addr;
225 BOOLEAN abort_pending;
227
228typedef struct
229{
230 btif_hl_mdl_cb_t mdl[BTA_HL_NUM_MDLS_PER_MCL];
231 BOOLEAN in_use;
232 BOOLEAN is_connected;
233 UINT16 req_ctrl_psm;
234 UINT16 ctrl_psm;
235 UINT16 data_psm;
236 BD_ADDR bd_addr;
237 UINT16 cch_mtu;
238 tBTA_SEC sec_mask;
239 tBTA_HL_MCL_HANDLE mcl_handle;
241 BOOLEAN valid_sdp_idx;
242 UINT8 sdp_idx;
243 tBTA_HL_SDP sdp;
244 btif_hl_cch_op_t cch_oper;
245 BOOLEAN cch_timer_active;
246 TIMER_LIST_ENT cch_timer;
248
249typedef struct
250{
251 BOOLEAN active;
252 UINT16 mdl_id;
253 UINT8 mdep_cfg_idx;
254 BD_ADDR bd_addr;
255 int channel_id;
257
258typedef struct
259{
260 btif_hl_mcl_cb_t mcb[BTA_HL_NUM_MCLS]; /* application Control Blocks */
261 BOOLEAN in_use; /* this CB is in use*/
262 BOOLEAN reg_pending;
263 BOOLEAN is_new_app;
264 UINT8 app_nv_idx;
265 UINT8 app_id;
266
267 tBTA_HL_SUP_FEATURE sup_feature;
268 tBTA_HL_DCH_CFG channel_type[BTA_HL_NUM_MDEPS];
269 tBTA_HL_SDP_INFO_IND sdp_info_ind;
271
272 btif_hl_mdl_cfg_t mdl_cfg[BTA_HL_NUM_MDL_CFGS];
273 int mdl_cfg_channel_id[BTA_HL_NUM_MDL_CFGS];
274
275 btif_hl_delete_mdl_t delete_mdl;
276 tBTA_HL_DEVICE_TYPE dev_type;
277 tBTA_HL_APP_HANDLE app_handle;
278 UINT16 sec_mask; /* Security mask for BTM_SetSecurityLevel() */
279 char srv_name[BTA_SERVICE_NAME_LEN +1]; /* service name to be used in the SDP; null terminated*/
280 char srv_desp[BTA_SERVICE_DESP_LEN +1]; /* service description to be used in the SDP; null terminated */
281 char provider_name[BTA_PROVIDER_NAME_LEN +1]; /* provide name to be used in the SDP; null terminated */
282 char application_name[BTIF_HL_APPLICATION_NAME_LEN +1]; /* applicaiton name */
284
285typedef struct
286{
287 BOOLEAN in_use;
288 UINT8 app_idx;
290
291/* BTIF-HL control block */
292typedef struct
293{
294 btif_hl_app_cb_t acb[BTA_HL_NUM_APPS]; /* HL Control Blocks */
295 tBTA_HL_CTRL_CBACK *p_ctrl_cback; /* pointer to control callback function */
296 UINT8 next_app_id;
297 UINT16 next_channel_id;
298 btif_hl_state_t state;
299 btif_hl_nv_cb_t ncb;
301
302typedef UINT8 btif_hl_evt_t;
303
304typedef struct
305{
306 int app_id;
307 BD_ADDR bd_addr;
308 int mdep_cfg_index;
309 int channel_id;
310 btif_hl_chan_cb_state_t cb_state;
311 int fd;
313
314
315typedef struct
316{
317 UINT8 app_idx;
319
320typedef btif_hl_reg_t btif_hl_unreg_t;
321typedef btif_hl_reg_t btif_hl_update_mdl_t;
322
323typedef union
324{
326 btif_hl_reg_t reg;
327 btif_hl_unreg_t unreg;
328 btif_hl_update_mdl_t update_mdl;
330
331
332/*******************************************************************************
333** Functions
334********************************************************************************/
335
336#define BTIF_HL_GET_CB_PTR() &(btif_hl_cb)
337#define BTIF_HL_GET_APP_CB_PTR(app_idx) &(btif_hl_cb.acb[(app_idx)])
338#define BTIF_HL_GET_MCL_CB_PTR(app_idx, mcl_idx) &(btif_hl_cb.acb[(app_idx)].mcb[(mcl_idx)])
339#define BTIF_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx) &(btif_hl_cb.acb[(app_idx)].mcb[(mcl_idx)].mdl[mdl_idx])
340#define BTIF_HL_GET_PCB_PTR(app_idx, mcl_idx) &(btif_hl_cb.acb[app_idx].mcb[mcl_idx].pcb)
341#define BTIF_HL_GET_MDL_CFG_PTR(app_idx, item_idx) &(btif_hl_cb.acb[(app_idx)].mdl_cfg[(item_idx)])
342#define BTIF_HL_GET_MDL_CFG_CHANNEL_ID_PTR(app_idx, item_idx) &(btif_hl_cb.acb[(app_idx)].mdl_cfg_channel_id[(item_idx)])
343
344extern btif_hl_cb_t btif_hl_cb;
345extern btif_hl_cb_t *p_btif_hl_cb;
346extern btif_hl_nv_cb_t *p_ncb;
347
348extern BOOLEAN btif_hl_find_mcl_idx(UINT8 app_idx, BD_ADDR p_bd_addr, UINT8 *p_mcl_idx);
349extern BOOLEAN btif_hl_find_app_idx(UINT8 app_id, UINT8 *p_app_idx);
350extern BOOLEAN btif_hl_find_avail_mcl_idx(UINT8 app_idx, UINT8 *p_mcl_idx);
351extern BOOLEAN btif_hl_find_avail_mdl_idx(UINT8 app_idx, UINT8 mcl_idx,
352 UINT8 *p_mdl_idx);
353extern BOOLEAN btif_hl_find_mcl_idx_using_handle( tBTA_HL_MCL_HANDLE mcl_handle,
354 UINT8 *p_app_idx, UINT8 *p_mcl_idx);
355extern BOOLEAN btif_hl_save_mdl_cfg(UINT8 app_id, UINT8 item_idx, tBTA_HL_MDL_CFG *p_mdl_cfg);
356extern BOOLEAN btif_hl_delete_mdl_cfg(UINT8 app_id, UINT8 item_idx);
357extern void * btif_hl_get_buf(UINT16 size);
358extern void btif_hl_free_buf(void **p);
359extern BOOLEAN btif_hl_find_mdl_idx_using_handle(tBTA_HL_MDL_HANDLE mdl_handle,
360 UINT8 *p_app_idx,UINT8 *p_mcl_idx,
361 UINT8 *p_mdl_idx);
362extern void btif_hl_abort_pending_chan_setup(UINT8 app_idx, UINT8 mcl_idx);
363extern BOOLEAN btif_hl_proc_pending_op(UINT8 app_idx, UINT8 mcl_idx);
364extern BOOLEAN btif_hl_load_mdl_config (UINT8 app_id, UINT8 buffer_size,
365 tBTA_HL_MDL_CFG *p_mdl_buf );
366#endif