NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
bta_gatts_int.h
1/******************************************************************************
2 *
3 * Copyright (C) 2003-2012 Broadcom Corporation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at:
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 ******************************************************************************/
18
19/******************************************************************************
20 *
21 * This is the private file for the BTA GATT server.
22 *
23 ******************************************************************************/
24#ifndef BTA_GATTS_INT_H
25#define BTA_GATTS_INT_H
26
27#include "bt_target.h"
28#include "bta_sys.h"
29#include "bta_gatt_api.h"
30#include "gatt_api.h"
31//#include "bta_gatts_co.h"
32
33#include "gki.h"
34
35/*****************************************************************************
36** Constants and data types
37*****************************************************************************/
38enum
39{
40 BTA_GATTS_API_REG_EVT = BTA_SYS_EVT_START(BTA_ID_GATTS),
41 BTA_GATTS_INT_START_IF_EVT,
42 BTA_GATTS_API_DEREG_EVT,
43 BTA_GATTS_API_CREATE_SRVC_EVT,
44 BTA_GATTS_API_INDICATION_EVT,
45
46 BTA_GATTS_API_ADD_INCL_SRVC_EVT,
47 BTA_GATTS_API_ADD_CHAR_EVT,
48 BTA_GATTS_API_ADD_DESCR_EVT,
49 BTA_GATTS_API_DEL_SRVC_EVT,
50 BTA_GATTS_API_START_SRVC_EVT,
51 BTA_GATTS_API_STOP_SRVC_EVT,
52 BTA_GATTS_API_RSP_EVT,
53 BTA_GATTS_API_OPEN_EVT,
54 BTA_GATTS_API_CANCEL_OPEN_EVT,
55 BTA_GATTS_API_CLOSE_EVT
56
57};
58typedef UINT16 tBTA_GATTS_INT_EVT;
59
60/* max number of application allowed on device */
61#define BTA_GATTS_MAX_APP_NUM GATT_MAX_SR_PROFILES
62
63/* max number of services allowed in the device */
64#define BTA_GATTS_MAX_SRVC_NUM GATT_MAX_SR_PROFILES
65
66/* internal strucutre for GATTC register API */
67typedef struct
68{
69 BT_HDR hdr;
70 tBT_UUID app_uuid;
71 tBTA_GATTS_CBACK *p_cback;
73
74typedef struct
75{
76 BT_HDR hdr;
77 tBTA_GATTS_IF server_if;
79
80typedef tBTA_GATTS_INT_START_IF tBTA_GATTS_API_DEREG;
81
82typedef struct
83{
84 BT_HDR hdr;
85 tBTA_GATTS_IF server_if;
86 tBT_UUID service_uuid;
87 UINT16 num_handle;
88 UINT8 inst;
89 BOOLEAN is_pri;
90
92
93typedef struct
94{
95 BT_HDR hdr;
96 tBT_UUID char_uuid;
97 tBTA_GATT_PERM perm;
98 tBTA_GATT_CHAR_PROP property;
99
101
102typedef struct
103{
104 BT_HDR hdr;
105 UINT16 included_service_id;
106
108
109typedef struct
110{
111 BT_HDR hdr;
112 tBT_UUID descr_uuid;
113 tBTA_GATT_PERM perm;
115
116typedef struct
117{
118 BT_HDR hdr;
119 //todo BD_ADDR bd_addr;
120 UINT16 attr_id;
121 UINT16 len;
122 BOOLEAN need_confirm;
123 UINT8 value[BTA_GATT_MAX_ATTR_LEN];
125
126typedef struct
127{
128 BT_HDR hdr;
129 UINT32 trans_id;
130 tBTA_GATT_STATUS status;
131 tBTA_GATTS_RSP *p_rsp;
133
134typedef struct
135{
136 BT_HDR hdr;
137 tBTA_GATT_TRANSPORT transport;
139
140
141typedef struct
142{
143 BT_HDR hdr;
144 BD_ADDR remote_bda;
145 tBTA_GATTS_IF server_if;
146 BOOLEAN is_direct;
148
149typedef tBTA_GATTS_API_OPEN tBTA_GATTS_API_CANCEL_OPEN;
150
151typedef union
152{
153 BT_HDR hdr;
154 tBTA_GATTS_API_REG api_reg;
155 tBTA_GATTS_API_DEREG api_dereg;
156 tBTA_GATTS_API_CREATE_SRVC api_create_svc;
157 tBTA_GATTS_API_ADD_INCL_SRVC api_add_incl_srvc;
158 tBTA_GATTS_API_ADD_CHAR api_add_char;
159 tBTA_GATTS_API_ADD_DESCR api_add_char_descr;
160 tBTA_GATTS_API_START api_start;
161 tBTA_GATTS_API_INDICATION api_indicate;
162 tBTA_GATTS_API_RSP api_rsp;
163 tBTA_GATTS_API_OPEN api_open;
164 tBTA_GATTS_API_CANCEL_OPEN api_cancel_open;
165
166 tBTA_GATTS_INT_START_IF int_start_if;
168
169/* application registration control block */
170typedef struct
171{
172 BOOLEAN in_use;
173 tBT_UUID app_uuid;
174 tBTA_GATTS_CBACK *p_cback;
175 tBTA_GATTS_IF gatt_if; //todo cahneg to server_if
177
178/* service registration control block */
179typedef struct
180{
181 tBT_UUID service_uuid; /* service UUID */
182 UINT16 service_id; /* service handle */
183 UINT8 inst_num; /* instance ID */
184 UINT8 rcb_idx;
185 UINT8 idx; /* self index of serviec CB */
186 BOOLEAN in_use;
187
189
190
191/* GATT server control block */
192typedef struct
193{
194 BOOLEAN enabled;
195 tBTA_GATTS_RCB rcb[BTA_GATTS_MAX_APP_NUM];
196 tBTA_GATTS_SRVC_CB srvc_cb[BTA_GATTS_MAX_SRVC_NUM];
198
199
200
201/*****************************************************************************
202** Global data
203*****************************************************************************/
204
205/* GATTC control block */
206#if BTA_DYNAMIC_MEMORY == FALSE
207extern tBTA_GATTS_CB bta_gatts_cb;
208#else
209extern tBTA_GATTS_CB *bta_gatts_cb_ptr;
210 #define bta_gatts_cb (*bta_gatts_cb_ptr)
211#endif
212
213/*****************************************************************************
214** Function prototypes
215*****************************************************************************/
216extern BOOLEAN bta_gatts_hdl_event(BT_HDR *p_msg);
217
218extern void bta_gatts_register(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg);
219extern void bta_gatts_start_if(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg);
220extern void bta_gatts_deregister(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg);
221extern void bta_gatts_create_srvc(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg);
222extern void bta_gatts_add_include_srvc(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg);
223extern void bta_gatts_add_char(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg);
224extern void bta_gatts_add_char_descr(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg);
225extern void bta_gatts_delete_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg);
226extern void bta_gatts_start_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg);
227extern void bta_gatts_stop_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg);
228
229extern void bta_gatts_send_rsp(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg);
230extern void bta_gatts_indicate_handle (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg);
231
232
233extern void bta_gatts_open (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg);
234extern void bta_gatts_cancel_open (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg);
235extern void bta_gatts_close (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg);
236
237extern BOOLEAN bta_gatts_uuid_compare(tBT_UUID tar, tBT_UUID src);
238extern tBTA_GATTS_RCB *bta_gatts_find_app_rcb_by_app_if(tBTA_GATTS_IF server_if);
239extern UINT8 bta_gatts_find_app_rcb_idx_by_app_if(tBTA_GATTS_CB *p_cb, tBTA_GATTS_IF server_if);
240extern UINT8 bta_gatts_alloc_srvc_cb(tBTA_GATTS_CB *p_cb, UINT8 rcb_idx);
241extern tBTA_GATTS_SRVC_CB * bta_gatts_find_srvc_cb_by_srvc_id(tBTA_GATTS_CB *p_cb, UINT16 service_id);
242extern tBTA_GATTS_SRVC_CB * bta_gatts_find_srvc_cb_by_attr_id(tBTA_GATTS_CB *p_cb, UINT16 attr_id);
243
244
245#endif /* BTA_GATTS_INT_H */
246