NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
bta_gatt_api.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 public interface file for BTA GATT.
22 *
23 ******************************************************************************/
24#ifndef BTA_GATT_API_H
25#define BTA_GATT_API_H
26
27#include "bta_api.h"
28#include "gatt_api.h"
29
30#ifndef BTA_GATT_INCLUDED
31#define BTA_GATT_INCLUDED FALSE
32#endif
33
34
35#if ((BLE_INCLUDED == FALSE) && (BTA_GATT_INCLUDED == TRUE))
36#undef BTA_GATT_INCLUDED
37#define BTA_GATT_INCLUDED FALSE
38#endif
39
40
41#ifndef BTA_GATT_DEBUG
42#define BTA_GATT_DEBUG FALSE
43#endif
44
45/*****************************************************************************
46** Constants and data types
47*****************************************************************************/
48/**************************
49** Common Definitions
50***************************/
51/* GATT ID */
52typedef struct
53{
54 tBT_UUID uuid; /* uuid of the attribute */
55 UINT8 inst_id; /* instance ID */
57
58/* Success code and error codes */
59#define BTA_GATT_OK GATT_SUCCESS
60#define BTA_GATT_INVALID_HANDLE GATT_INVALID_HANDLE /* 0x0001 */
61#define BTA_GATT_READ_NOT_PERMIT GATT_READ_NOT_PERMIT /* 0x0002 */
62#define BTA_GATT_WRITE_NOT_PERMIT GATT_WRITE_NOT_PERMIT /* 0x0003 */
63#define BTA_GATT_INVALID_PDU GATT_INVALID_PDU /* 0x0004 */
64#define BTA_GATT_INSUF_AUTHENTICATION GATT_INSUF_AUTHENTICATION /* 0x0005 */
65#define BTA_GATT_REQ_NOT_SUPPORTED GATT_REQ_NOT_SUPPORTED /* 0x0006 */
66#define BTA_GATT_INVALID_OFFSET GATT_INVALID_OFFSET /* 0x0007 */
67#define BTA_GATT_INSUF_AUTHORIZATION GATT_INSUF_AUTHORIZATION /* 0x0008 */
68#define BTA_GATT_PREPARE_Q_FULL GATT_PREPARE_Q_FULL /* 0x0009 */
69#define BTA_GATT_NOT_FOUND GATT_NOT_FOUND /* 0x000a */
70#define BTA_GATT_NOT_LONG GATT_NOT_LONG /* 0x000b */
71#define BTA_GATT_INSUF_KEY_SIZE GATT_INSUF_KEY_SIZE /* 0x000c */
72#define BTA_GATT_INVALID_ATTR_LEN GATT_INVALID_ATTR_LEN /* 0x000d */
73#define BTA_GATT_ERR_UNLIKELY GATT_ERR_UNLIKELY /* 0x000e */
74#define BTA_GATT_INSUF_ENCRYPTION GATT_INSUF_ENCRYPTION /* 0x000f */
75#define BTA_GATT_UNSUPPORT_GRP_TYPE GATT_UNSUPPORT_GRP_TYPE /* 0x0010 */
76#define BTA_GATT_INSUF_RESOURCE GATT_INSUF_RESOURCE /* 0x0011 */
77
78
79#define BTA_GATT_ILLEGAL_PARAMETER GATT_ILLEGAL_PARAMETER /* 0x0087 */
80#define BTA_GATT_NO_RESOURCES GATT_NO_RESOURCES /* 0x0080 */
81#define BTA_GATT_INTERNAL_ERROR GATT_INTERNAL_ERROR /* 0x0081 */
82#define BTA_GATT_WRONG_STATE GATT_WRONG_STATE /* 0x0082 */
83#define BTA_GATT_DB_FULL GATT_DB_FULL /* 0x0083 */
84#define BTA_GATT_BUSY GATT_BUSY /* 0x0084 */
85#define BTA_GATT_ERROR GATT_ERROR /* 0x0085 */
86#define BTA_GATT_CMD_STARTED GATT_CMD_STARTED /* 0x0086 */
87#define BTA_GATT_PENDING GATT_PENDING /* 0x0088 */
88#define BTA_GATT_AUTH_FAIL GATT_AUTH_FAIL /* 0x0089 */
89#define BTA_GATT_MORE GATT_MORE /* 0x008a */
90#define BTA_GATT_INVALID_CFG GATT_INVALID_CFG /* 0x008b */
91#define BTA_GATT_DUP_REG 0x008c
92#define BTA_GATT_ALREADY_OPEN 0x008d /* 0x008d */
93typedef UINT8 tBTA_GATT_STATUS;
94
95#define BTA_GATT_INVALID_CONN_ID GATT_INVALID_CONN_ID
96
97
98/* Client callback function events */
99#define BTA_GATTC_REG_EVT 0 /* GATT client is registered. */
100#define BTA_GATTC_DEREG_EVT 1 /* GATT client deregistered event */
101#define BTA_GATTC_OPEN_EVT 2 /* GATTC open request status event */
102#define BTA_GATTC_READ_CHAR_EVT 3 /* GATT read characteristic event */
103#define BTA_GATTC_WRITE_CHAR_EVT 4 /* GATT write characteristic or char descriptor event */
104#define BTA_GATTC_CLOSE_EVT 5 /* GATTC close request status event */
105#define BTA_GATTC_SEARCH_CMPL_EVT 6 /* GATT discovery complete event */
106#define BTA_GATTC_SEARCH_RES_EVT 7 /* GATT discovery result event */
107#define BTA_GATTC_READ_DESCR_EVT 8 /* GATT read characterisitc descriptor event */
108#define BTA_GATTC_WRITE_DESCR_EVT 9 /* GATT write characteristic descriptor event */
109#define BTA_GATTC_NOTIF_EVT 10 /* GATT attribute notification event */
110#define BTA_GATTC_PREP_WRITE_EVT 11 /* GATT prepare write event */
111#define BTA_GATTC_EXEC_EVT 12 /* execute write complete event */
112#define BTA_GATTC_ACL_EVT 13 /* ACL up event */
113#define BTA_GATTC_CANCEL_OPEN_EVT 14 /* cancel open event */
114#define BTA_GATTC_SRVC_CHG_EVT 15 /* service change event */
115typedef UINT8 tBTA_GATTC_EVT;
116
117typedef tGATT_IF tBTA_GATTC_IF;
118
119typedef struct
120{
121 UINT16 unit; /* as UUIUD defined by SIG */
122 UINT16 descr; /* as UUID as defined by SIG */
123 tGATT_FORMAT format;
124 INT8 exp;
125 UINT8 name_spc; /* The name space of the description */
127
128#define BTA_GATT_CLT_CONFIG_NONE GATT_CLT_CONFIG_NONE /* 0x0000 */
129#define BTA_GATT_CLT_CONFIG_NOTIFICATION GATT_CLT_CONFIG_NOTIFICATION /* 0x0001 */
130#define BTA_GATT_CLT_CONFIG_INDICATION GATT_CLT_CONFIG_INDICATION /* 0x0002 */
131typedef UINT16 tBTA_GATT_CLT_CHAR_CONFIG;
132
133/* characteristic descriptor: server configuration value
134*/
135#define BTA_GATT_SVR_CONFIG_NONE GATT_SVR_CONFIG_NONE /* 0x0000 */
136#define BTA_GATT_SVR_CONFIG_BROADCAST GATT_SVR_CONFIG_BROADCAST /* 0x0001 */
137typedef UINT16 tBTA_GATT_SVR_CHAR_CONFIG;
138
139/* Characteristic Aggregate Format attribute value
140*/
141#define BTA_GATT_AGGR_HANDLE_NUM_MAX 10
142typedef struct
143{
144 UINT8 num_handle;
145 UINT16 handle_list[BTA_GATT_AGGR_HANDLE_NUM_MAX];
147typedef tGATT_VALID_RANGE tBTA_GATT_VALID_RANGE;
148
149typedef struct
150{
151 UINT16 len;
152 UINT8 *p_value;
154
155#define BTA_GATT_MAX_ATTR_LEN GATT_MAX_ATTR_LEN
156
157#define BTA_GATTC_TYPE_WRITE GATT_WRITE
158#define BTA_GATTC_TYPE_WRITE_NO_RSP GATT_WRITE_NO_RSP
159typedef UINT8 tBTA_GATTC_WRITE_TYPE;
160
161#define BTA_GATT_CONN_UNKNOWN 0
162#define BTA_GATT_CONN_NO_RESOURCES GATT_CONN_NO_RESOURCES /* connection fail for l2cap resource failure */
163#define BTA_GATT_CONN_TIMEOUT GATT_CONN_TIMEOUT /* 0x08 connection timeout */
164#define BTA_GATT_CONN_TERMINATE_PEER_USER GATT_CONN_TERMINATE_PEER_USER /* 0x13 connection terminate by peer user */
165#define BTA_GATT_CONN_TERMINATE_LOCAL_HOST GATT_CONN_TERMINATE_LOCAL_HOST/* 0x16 connectionterminated by local host */
166#define BTA_GATT_CONN_FAIL_ESTABLISH GATT_CONN_FAIL_ESTABLISH /* 0x03E connection fail to establish */
167#define BTA_GATT_CONN_LMP_TIMEOUT GATT_CONN_LMP_TIMEOUT /* 0x22 connection fail for LMP response tout */
168#define BTA_GATT_CONN_CANCEL GATT_CONN_CANCEL /* 0x0100 L2CAP connection cancelled */
169#define BTA_GATT_CONN_NONE 0x0101 /* 0x0101 no connection to cancel */
170typedef UINT16 tBTA_GATT_REASON;
171
172typedef struct
173{
174 tBTA_GATT_ID id;
175 BOOLEAN is_primary;
177
178typedef struct
179{
180 tBTA_GATT_SRVC_ID srvc_id;
181 tBTA_GATT_ID char_id;
183
184typedef struct
185{
186 tBTA_GATTC_CHAR_ID char_id;
187 tBT_UUID descr_type;
189
190typedef struct
191{
192 tBTA_GATT_SRVC_ID srvc_id;
193 tBTA_GATT_SRVC_ID incl_svc_id;
195
196#define BTA_GATT_TYPE_CHAR 0
197#define BTA_GATT_TYPE_CHAR_DESCR 1
198typedef UINT8 tBTA_GATT_ID_TYPE;
199
200typedef struct
201{
202 tBTA_GATT_ID_TYPE id_type;
203 union
204 {
205 tBTA_GATTC_CHAR_ID char_id;
206 tBTA_GATTC_CHAR_DESCR_ID char_descr_id;
207
208 } id_value;
210
211#define BTA_GATTC_MULTI_MAX GATT_MAX_READ_MULTI_HANDLES
212
213typedef struct
214{
215 UINT8 num_attr;
216 tBTA_GATTC_ATTR_ID id_list[BTA_GATTC_MULTI_MAX];
217
219
220#define BTA_GATT_AUTH_REQ_NONE GATT_AUTH_REQ_NONE
221#define BTA_GATT_AUTH_REQ_NO_MITM GATT_AUTH_REQ_NO_MITM /* unauthenticated encryption */
222#define BTA_GATT_AUTH_REQ_MITM GATT_AUTH_REQ_MITM /* authenticated encryption */
223#define BTA_GATT_AUTH_REQ_SIGNED_NO_MITM GATT_AUTH_REQ_SIGNED_NO_MITM
224#define BTA_GATT_AUTH_REQ_SIGNED_MITM GATT_AUTH_REQ_SIGNED_MITM
225
226typedef tGATT_AUTH_REQ tBTA_GATT_AUTH_REQ;
227
228enum
229{
230 BTA_GATTC_ATTR_TYPE_INCL_SRVC,
231 BTA_GATTC_ATTR_TYPE_CHAR,
232 BTA_GATTC_ATTR_TYPE_CHAR_DESCR,
233 BTA_GATTC_ATTR_TYPE_SRVC
234};
235typedef UINT8 tBTA_GATTC_ATTR_TYPE;
236
237
238typedef struct
239{
240 tBT_UUID uuid;
241 UINT16 s_handle;
242 UINT16 e_handle; /* used for service only */
243 UINT8 attr_type;
244 UINT8 id;
245 UINT8 prop; /* used when attribute type is characteristic */
246 BOOLEAN is_primary; /* used when attribute type is service */
248
249/* callback data structure */
250typedef struct
251{
252 tBTA_GATT_STATUS status;
253 tBTA_GATTC_IF client_if;
254// btla-specific ++
255 tBT_UUID app_uuid;
256// btla-specific --
258
259typedef struct
260{
261 UINT8 num_pres_fmt; /* number of presentation format aggregated*/
262 tBTA_GATTC_CHAR_DESCR_ID pre_format[BTA_GATTC_MULTI_MAX];
264
265typedef union
266{
267 tBTA_GATT_CHAR_AGGRE_VALUE aggre_value;
268 tBTA_GATT_UNFMT unformat;
269
271
272typedef struct
273{
274 UINT16 conn_id;
275 tBTA_GATT_STATUS status;
276 tBTA_GATT_SRVC_ID srvc_id;
277 tBTA_GATT_ID char_id;
278 tBT_UUID descr_type;
279 tBTA_GATT_READ_VAL *p_value;
281
282typedef struct
283{
284 UINT16 conn_id;
285 tBTA_GATT_STATUS status;
286 tBTA_GATT_SRVC_ID srvc_id;
287 tBTA_GATT_ID char_id;
288 tBT_UUID descr_type;
290
291typedef struct
292{
293 UINT16 conn_id;
294 tBTA_GATT_STATUS status;
296
297typedef struct
298{
299 UINT16 conn_id;
300 tBTA_GATT_STATUS status;
302
303typedef struct
304{
305 UINT16 conn_id;
306 tBTA_GATT_SRVC_ID service_uuid;
308
309
310typedef struct
311{
312 tBTA_GATT_STATUS status;
313 UINT16 conn_id;
314 tBTA_GATTC_IF client_if;
315 BD_ADDR remote_bda;
317
318typedef struct
319{
320 tBTA_GATT_STATUS status;
321 UINT16 conn_id;
322 tBTA_GATTC_IF client_if;
323 BD_ADDR remote_bda;
324 tBTA_GATT_REASON reason; /* disconnect reason code, not useful when connect event is reported */
326
327typedef struct
328{
329 UINT16 conn_id;
330 BD_ADDR bda;
331 tBTA_GATTC_CHAR_ID char_id;
332 tBT_UUID descr_type;
333 UINT16 len;
334 UINT8 value[BTA_GATT_MAX_ATTR_LEN];
335 BOOLEAN is_notify;
337
338// btla-specific ++
339typedef struct
340{
341 tBTA_GATT_STATUS status;
342 tBTA_GATTC_IF client_if;
343 UINT16 conn_id;
344 BD_ADDR remote_bda;
346// btla-specific --
347
348typedef union
349{
350 tBTA_GATT_STATUS status;
351
352 tBTA_GATTC_SEARCH_CMPL search_cmpl; /* discovery complete */
353 tBTA_GATTC_SRVC_RES srvc_res; /* discovery result */
354 tBTA_GATTC_REG reg_oper; /* registration data */
355 tBTA_GATTC_OPEN open;
356 tBTA_GATTC_CLOSE close;
357 tBTA_GATTC_READ read; /* read attribute/descriptor data */
358 tBTA_GATTC_WRITE write; /* write complete data */
359 tBTA_GATTC_EXEC_CMPL exec_cmpl; /* execute complete */
360 tBTA_GATTC_NOTIFY notify; /* notification/indication event data */
361 BD_ADDR remote_bda; /* service change event */
362} tBTA_GATTC;
363
364/* Client callback function */
365typedef void (tBTA_GATTC_CBACK)(tBTA_GATTC_EVT event, tBTA_GATTC *p_data);
366
367
368/* GATT Server Data Structure */
369/* Server callback function events */
370#define BTA_GATTS_REG_EVT 0
371#define BTA_GATTS_READ_EVT GATTS_REQ_TYPE_READ /* 1 */
372#define BTA_GATTS_WRITE_EVT GATTS_REQ_TYPE_WRITE /* 2 */
373#define BTA_GATTS_EXEC_WRITE_EVT GATTS_REQ_TYPE_WRITE_EXEC /* 3 */
374#define BTA_GATTS_MTU_EVT GATTS_REQ_TYPE_MTU /* 4 */
375#define BTA_GATTS_CONF_EVT GATTS_REQ_TYPE_CONF /* 5 */
376#define BTA_GATTS_DEREG_EVT 6
377#define BTA_GATTS_CREATE_EVT 7
378#define BTA_GATTS_ADD_INCL_SRVC_EVT 8
379#define BTA_GATTS_ADD_CHAR_EVT 9
380#define BTA_GATTS_ADD_CHAR_DESCR_EVT 10
381#define BTA_GATTS_DELELTE_EVT 11
382#define BTA_GATTS_START_EVT 12
383#define BTA_GATTS_STOP_EVT 13
384#define BTA_GATTS_CONNECT_EVT 14
385#define BTA_GATTS_DISCONNECT_EVT 15
386#define BTA_GATTS_OPEN_EVT 16
387#define BTA_GATTS_CANCEL_OPEN_EVT 17
388#define BTA_GATTS_CLOSE_EVT 18
389
390typedef UINT8 tBTA_GATTS_EVT;
391typedef tGATT_IF tBTA_GATTS_IF;
392
393/* Attribute permissions
394*/
395#define BTA_GATT_PERM_READ GATT_PERM_READ /* bit 0 - 0x0001 */
396#define BTA_GATT_PERM_READ_ENCRYPTED GATT_PERM_READ_ENCRYPTED /* bit 1 - 0x0002 */
397#define BTA_GATT_PERM_READ_ENC_MITM GATT_PERM_READ_ENC_MITM /* bit 2 - 0x0004 */
398#define BTA_GATT_PERM_WRITE GATT_PERM_WRITE /* bit 4 - 0x0010 */
399#define BTA_GATT_PERM_WRITE_ENCRYPTED GATT_PERM_WRITE_ENCRYPTED /* bit 5 - 0x0020 */
400#define BTA_GATT_PERM_WRITE_ENC_MITM GATT_PERM_WRITE_ENC_MITM /* bit 6 - 0x0040 */
401#define BTA_GATT_PERM_WRITE_SIGNED GATT_PERM_WRITE_SIGNED /* bit 7 - 0x0080 */
402#define BTA_GATT_PERM_WRITE_SIGNED_MITM GATT_PERM_WRITE_SIGNED_MITM /* bit 8 - 0x0100 */
403typedef UINT16 tBTA_GATT_PERM;
404
405#define BTA_GATTS_INVALID_APP 0xff
406
407#define BTA_GATTS_INVALID_IF 0
408
409/* definition of characteristic properties */
410#define BTA_GATT_CHAR_PROP_BIT_BROADCAST GATT_CHAR_PROP_BIT_BROADCAST /* 0x01 */
411#define BTA_GATT_CHAR_PROP_BIT_READ GATT_CHAR_PROP_BIT_READ /* 0x02 */
412#define BTA_GATT_CHAR_PROP_BIT_WRITE_NR GATT_CHAR_PROP_BIT_WRITE_NR /* 0x04 */
413#define BTA_GATT_CHAR_PROP_BIT_WRITE GATT_CHAR_PROP_BIT_WRITE /* 0x08 */
414#define BTA_GATT_CHAR_PROP_BIT_NOTIFY GATT_CHAR_PROP_BIT_NOTIFY /* 0x10 */
415#define BTA_GATT_CHAR_PROP_BIT_INDICATE GATT_CHAR_PROP_BIT_INDICATE /* 0x20 */
416#define BTA_GATT_CHAR_PROP_BIT_AUTH GATT_CHAR_PROP_BIT_AUTH /* 0x40 */
417#define BTA_GATT_CHAR_PROP_BIT_EXT_PROP GATT_CHAR_PROP_BIT_EXT_PROP /* 0x80 */
418typedef UINT8 tBTA_GATT_CHAR_PROP;
419
420#ifndef BTA_GATTC_CHAR_DESCR_MAX
421#define BTA_GATTC_CHAR_DESCR_MAX 7
422#endif
423
424/*********************** NV callback Data Definitions **********************
425*/
426typedef struct
427{
428 tBT_UUID app_uuid128;
429 tBT_UUID svc_uuid;
430 UINT16 svc_inst;
431 UINT16 s_handle;
432 UINT16 e_handle;
433 BOOLEAN is_primary; /* primary service or secondary */
435
436#define BTA_GATTS_SRV_CHG_CMD_ADD_CLIENT GATTS_SRV_CHG_CMD_ADD_CLIENT
437#define BTA_GATTS_SRV_CHG_CMD_UPDATE_CLIENT GATTS_SRV_CHG_CMD_UPDATE_CLIENT
438#define BTA_GATTS_SRV_CHG_CMD_REMOVE_CLIENT GATTS_SRV_CHG_CMD_REMOVE_CLIENT
439#define BTA_GATTS_SRV_CHG_CMD_READ_NUM_CLENTS GATTS_SRV_CHG_CMD_READ_NUM_CLENTS
440#define BTA_GATTS_SRV_CHG_CMD_READ_CLENT GATTS_SRV_CHG_CMD_READ_CLENT
441typedef tGATTS_SRV_CHG_CMD tBTA_GATTS_SRV_CHG_CMD;
442
443typedef tGATTS_SRV_CHG tBTA_GATTS_SRV_CHG;
444typedef tGATTS_SRV_CHG_REQ tBTA_GATTS_SRV_CHG_REQ;
445typedef tGATTS_SRV_CHG_RSP tBTA_GATTS_SRV_CHG_RSP;
446
447enum
448{
449 BTA_GATT_TRANSPORT_LE,
450 BTA_GATT_TRANSPORT_BR_EDR,
451 BTA_GATT_TRANSPORT_LE_BR_EDR
452};
453typedef UINT8 tBTA_GATT_TRANSPORT;
454
455/* attribute value */
456typedef tGATT_VALUE tBTA_GATT_VALUE;
457
458/* attribute response data */
459typedef tGATTS_RSP tBTA_GATTS_RSP;
460
461/* attribute request data from the client */
462#define BTA_GATT_PREP_WRITE_CANCEL 0x00
463#define BTA_GATT_PREP_WRITE_EXEC 0x01
464typedef tGATT_EXEC_FLAG tBTA_GATT_EXEC_FLAG;
465
466/* read request always based on UUID */
467typedef tGATT_READ_REQ tTA_GBATT_READ_REQ;
468
469/* write request data */
470typedef tGATT_WRITE_REQ tBTA_GATT_WRITE_REQ;
471
472/* callback data for server access request from client */
473typedef tGATTS_DATA tBTA_GATTS_REQ_DATA;
474
475typedef struct
476{
477 BD_ADDR remote_bda;
478 UINT32 trans_id;
479 UINT16 conn_id;
480 tBTA_GATTS_REQ_DATA *p_data;
482
483typedef struct
484{
485 tBTA_GATTS_IF server_if;
486 tBTA_GATT_STATUS status;
487// btla-specific ++
488 tBT_UUID uuid;
489// btla-specific --
491
492
493typedef struct
494{
495 tBTA_GATTS_IF server_if;
496 UINT16 service_id;
497// btla-specific ++
498 UINT16 svc_instance;
499 BOOLEAN is_primary;
500 tBTA_GATT_STATUS status;
501 tBT_UUID uuid;
502// btla-specific --
504
505typedef struct
506{
507 tBTA_GATTS_IF server_if;
508 UINT16 service_id;
509 UINT16 attr_id;
510 tBTA_GATT_STATUS status;
511// btla-specific ++
512 tBT_UUID char_uuid;
513// btla-specific --
515
516typedef struct
517{
518 tBTA_GATTS_IF server_if;
519 UINT16 service_id;
520 tBTA_GATT_STATUS status;
522
523
524typedef struct
525{
526 tBTA_GATTS_IF server_if;
527 BD_ADDR remote_bda;
528 UINT16 conn_id;
529 tBTA_GATT_REASON reason; /* report disconnect reason */
531
532/* GATTS callback data */
533typedef union
534{
535 tBTA_GATTS_REG_OPER reg_oper;
536 tBTA_GATTS_CREATE create;
537 tBTA_GATTS_SRVC_OPER srvc_oper;
538 tBTA_GATT_STATUS status; /* BTA_GATTS_CONF_EVT */
539 tBTA_GATTS_ADD_RESULT add_result; /* add included service: BTA_GATTS_ADD_INCL_SRVC_EVT
540 add char : BTA_GATTS_ADD_CHAR_EVT
541 add char descriptor: BTA_GATTS_ADD_CHAR_DESCR_EVT */
542 tBTA_GATTS_REQ req_data;
543 tBTA_GATTS_CONN conn; /* BTA_GATTS_CONN_EVT */
544
546
547
548/* Server callback function */
549typedef void (tBTA_GATTS_CBACK)(tBTA_GATTS_EVT event, tBTA_GATTS *p_data);
550/*****************************************************************************
551** External Function Declarations
552*****************************************************************************/
553
554#ifdef __cplusplus
555extern "C"
556{
557#endif
558
559/**************************
560** Client Functions
561***************************/
562
563/*******************************************************************************
564**
565** Function BTA_GATTC_AppRegister
566**
567** Description This function is called to register application callbacks
568** with BTA GATTC module.
569**
570** Parameters p_app_uuid - applicaiton UUID
571** p_client_cb - pointer to the application callback function.
572**
573** Returns None
574**
575*******************************************************************************/
576BTA_API extern void BTA_GATTC_AppRegister(tBT_UUID *p_app_uuid, tBTA_GATTC_CBACK *p_client_cb);
577
578/*******************************************************************************
579**
580** Function BTA_GATTC_AppDeregister
581**
582** Description This function is called to deregister an application
583** from BTA GATTC module.
584**
585** Parameters client_if - client interface identifier.
586**
587** Returns None
588**
589*******************************************************************************/
590BTA_API extern void BTA_GATTC_AppDeregister (tBTA_GATTC_IF client_if);
591
592/*******************************************************************************
593**
594** Function BTA_GATTC_Open
595**
596** Description Open a direct connection or add a background auto connection
597** bd address
598**
599** Parameters client_if: server interface.
600** remote_bda: remote device BD address.
601** is_direct: direct connection or background auto connection
602**
603** Returns void
604**
605*******************************************************************************/
606BTA_API extern void BTA_GATTC_Open(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, BOOLEAN is_direct);
607
608/*******************************************************************************
609**
610** Function BTA_GATTC_CancelOpen
611**
612** Description Open a direct connection or add a background auto connection
613** bd address
614**
615** Parameters client_if: server interface.
616** remote_bda: remote device BD address.
617** is_direct: direct connection or background auto connection
618**
619** Returns void
620**
621*******************************************************************************/
622BTA_API extern void BTA_GATTC_CancelOpen(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, BOOLEAN is_direct);
623
624/*******************************************************************************
625**
626** Function BTA_GATTC_Close
627**
628** Description Close a connection to a GATT server.
629**
630** Parameters conn_id: connectino ID to be closed.
631**
632** Returns void
633**
634*******************************************************************************/
635BTA_API extern void BTA_GATTC_Close(UINT16 conn_id);
636
637/*******************************************************************************
638**
639** Function BTA_GATTC_ServiceSearchRequest
640**
641** Description This function is called to request a GATT service discovery
642** on a GATT server. This function report service search result
643** by a callback event, and followed by a service search complete
644** event.
645**
646** Parameters conn_id: connection ID.
647** p_srvc_uuid: a UUID of the service application is interested in.
648** If Null, discover for all services.
649**
650** Returns None
651**
652*******************************************************************************/
653BTA_API extern void BTA_GATTC_ServiceSearchRequest(UINT16 conn_id, tBT_UUID *p_srvc_uuid);
654
655/*******************************************************************************
656**
657** Function BTA_GATTC_GetFirstChar
658**
659** Description This function is called to find the first charatceristic of the
660** service on the given server.
661**
662** Parameters conn_id: connection ID which identify the server.
663** p_srvc_id: the service ID of which the characteristic is belonged to.
664** p_char_uuid_cond: Characteristic UUID, if NULL find the first available
665** characteristic.
666** p_char_result: output parameter which will store the GATT
667** characteristic ID.
668** p_property: output parameter to carry the characteristic property.
669**
670** Returns returns status.
671**
672*******************************************************************************/
673BTA_API extern tBTA_GATT_STATUS BTA_GATTC_GetFirstChar (UINT16 conn_id,
674 tBTA_GATT_SRVC_ID *p_srvc_id,
675 tBT_UUID *p_char_uuid_cond,
676 tBTA_GATTC_CHAR_ID *p_char_result,
677 tBTA_GATT_CHAR_PROP *p_property);
678
679/*******************************************************************************
680**
681** Function BTA_GATTC_GetNextChar
682**
683** Description This function is called to find the next charatceristic of the
684** service on the given server.
685**
686** Parameters conn_id: connection ID which identify the server.
687** p_start_char_id: start the characteristic search from the next record
688** after the one identified by char_id.
689** p_char_uuid_cond: Characteristic UUID, if NULL find the first available
690** characteristic.
691** p_char_result: output parameter which will store the GATT
692** characteristic ID.
693** p_property: output parameter, characteristic property.
694**
695** Returns returns status.
696**
697*******************************************************************************/
698BTA_API extern tBTA_GATT_STATUS BTA_GATTC_GetNextChar (UINT16 conn_id,
699 tBTA_GATTC_CHAR_ID *p_start_char_id,
700 tBT_UUID *p_char_uuid_cond,
701 tBTA_GATTC_CHAR_ID *p_char_result,
702 tBTA_GATT_CHAR_PROP *p_property);
703
704/*******************************************************************************
705**
706** Function BTA_GATTC_GetFirstCharDescr
707**
708** Description This function is called to find the first charatceristic descriptor of the
709** charatceristic on the given server.
710**
711** Parameters conn_id: connection ID which identify the server.
712** p_char_id: the characteristic ID of which the descriptor is belonged to.
713** p_descr_uuid_cond: Characteristic Descr UUID, if NULL find the first available
714** characteristic.
715** p_descr_result: output parameter which will store the GATT
716** characteristic descriptor ID.
717**
718** Returns returns status.
719**
720*******************************************************************************/
721BTA_API extern tBTA_GATT_STATUS BTA_GATTC_GetFirstCharDescr (UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char_id,
722 tBT_UUID *p_descr_uuid_cond,
723 tBTA_GATTC_CHAR_DESCR_ID *p_descr_result);
724
725/*******************************************************************************
726**
727** Function BTA_GATTC_GetNextCharDescr
728**
729** Description This function is called to find the next charatceristic of the
730** service on the given server.
731**
732** Parameters conn_id: connection ID which identify the server.
733** p_start_descr_id: start the characteristic search from the next record
734** after the one identified by p_start_descr_id.
735** p_descr_uuid_cond: Characteristic descriptor UUID, if NULL find
736** the first available characteristic descriptor.
737** p_descr_result: output parameter which will store the GATT
738** characteristic descriptor ID.
739**
740** Returns returns status.
741**
742*******************************************************************************/
743BTA_API extern tBTA_GATT_STATUS BTA_GATTC_GetNextCharDescr (UINT16 conn_id,
744 tBTA_GATTC_CHAR_DESCR_ID *p_start_descr_id,
745 tBT_UUID *p_descr_uuid_cond,
746 tBTA_GATTC_CHAR_DESCR_ID *p_descr_result);
747
748
749/*******************************************************************************
750**
751** Function BTA_GATTC_GetFirstIncludedService
752**
753** Description This function is called to find the first included service of the
754** service on the given server.
755**
756** Parameters conn_id: connection ID which identify the server.
757** p_srvc_id: the service ID of which the included service is belonged to.
758** p_uuid_cond: include service UUID, if NULL find the first available
759** included service.
760** p_result: output parameter which will store the GATT ID
761** of the included service found.
762**
763** Returns returns status.
764**
765*******************************************************************************/
766BTA_API extern tBTA_GATT_STATUS BTA_GATTC_GetFirstIncludedService(UINT16 conn_id,
767 tBTA_GATT_SRVC_ID *p_srvc_id,
768 tBT_UUID *p_uuid_cond,
769 tBTA_GATTC_INCL_SVC_ID *p_result);
770
771/*******************************************************************************
772**
773** Function BTA_GATTC_GetNextIncludedService
774**
775** Description This function is called to find the next included service of the
776** service on the given server.
777**
778** Parameters conn_id: connection ID which identify the server.
779** p_start_id: start the search from the next record
780** after the one identified by p_start_id.
781** p_uuid_cond: Included service UUID, if NULL find the first available
782** included service.
783** p_result: output parameter which will store the GATT ID
784** of the included service found.
785**
786** Returns returns status.
787**
788*******************************************************************************/
789BTA_API extern tBTA_GATT_STATUS BTA_GATTC_GetNextIncludedService(UINT16 conn_id,
790 tBTA_GATTC_INCL_SVC_ID *p_start_id,
791 tBT_UUID *p_uuid_cond,
792 tBTA_GATTC_INCL_SVC_ID *p_result);
793
794/*******************************************************************************
795**
796** Function BTA_GATTC_ReadCharacteristic
797**
798** Description This function is called to read a service's characteristics of
799** the given characteritisc ID.
800**
801** Parameters conn_id - connectino ID.
802** p_char_id - characteritic ID to read.
803**
804** Returns None
805**
806*******************************************************************************/
807BTA_API extern void BTA_GATTC_ReadCharacteristic (UINT16 conn_id,
808 tBTA_GATTC_CHAR_ID *p_char_id,
809 tBTA_GATT_AUTH_REQ auth_req);
810
811/*******************************************************************************
812**
813** Function BTA_GATTC_ReadCharDescr
814**
815** Description This function is called to read a characteristics descriptor.
816**
817** Parameters conn_id - connection ID.
818** p_char_descr_id - characteritic descriptor ID to read.
819**
820** Returns None
821**
822*******************************************************************************/
823BTA_API extern void BTA_GATTC_ReadCharDescr (UINT16 conn_id,
824 tBTA_GATTC_CHAR_DESCR_ID *p_char_descr_id,
825 tBTA_GATT_AUTH_REQ auth_req);
826
827/*******************************************************************************
828**
829** Function BTA_GATTC_WriteCharValue
830**
831** Description This function is called to write characteristic value.
832**
833** Parameters conn_id - connection ID.
834** p_char_id - characteristic ID to write.
835** write_type - type of write.
836** len: length of the data to be written.
837** p_value - the value to be written.
838**
839** Returns None
840**
841*******************************************************************************/
842BTA_API extern void BTA_GATTC_WriteCharValue (UINT16 conn_id,
843 tBTA_GATTC_CHAR_ID *p_char_id,
844 tBTA_GATTC_WRITE_TYPE write_type,
845 UINT16 len,
846 UINT8 *p_value,
847 tBTA_GATT_AUTH_REQ auth_req);
848
849/*******************************************************************************
850**
851** Function BTA_GATTC_WriteCharDescr
852**
853** Description This function is called to write characteristic descriptor value.
854**
855** Parameters conn_id - connection ID
856** p_char_descr_id - characteristic descriptor ID to write.
857** write_type - type of write.
858** p_value - the value to be written.
859**
860** Returns None
861**
862*******************************************************************************/
863BTA_API extern void BTA_GATTC_WriteCharDescr (UINT16 conn_id,
864 tBTA_GATTC_CHAR_DESCR_ID *p_char_descr_id,
865 tBTA_GATTC_WRITE_TYPE write_type,
866 tBTA_GATT_UNFMT *p_data,
867 tBTA_GATT_AUTH_REQ auth_req);
868
869/*******************************************************************************
870**
871** Function BTA_GATTC_SendIndConfirm
872**
873** Description This function is called to send handle value confirmation.
874**
875** Parameters conn_id - connection ID.
876** p_char_id - characteristic ID to confrim.
877**
878** Returns None
879**
880*******************************************************************************/
881BTA_API extern void BTA_GATTC_SendIndConfirm (UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char_id);
882
883/*******************************************************************************
884**
885** Function BTA_GATTC_RegisterForNotifications
886**
887** Description This function is called to register for notification of a service.
888**
889** Parameters client_if - client interface.
890** remote_bda - target GATT server.
891** p_char_id - pointer to GATT characteristic ID.
892**
893** Returns OK if registration succeed, otherwise failed.
894**
895*******************************************************************************/
896BTA_API extern tBTA_GATT_STATUS BTA_GATTC_RegisterForNotifications (tBTA_GATTC_IF client_if,
897 BD_ADDR remote_bda,
898 tBTA_GATTC_CHAR_ID *p_char_id);
899
900
901/*******************************************************************************
902**
903** Function BTA_GATTC_DeregisterForNotifications
904**
905** Description This function is called to de-register for notification of a servbice.
906**
907** Parameters client_if - client interface.
908** remote_bda - target GATT server.
909** p_char_id - pointer to a GATT characteristic ID.
910**
911** Returns OK if deregistration succeed, otherwise failed.
912**
913*******************************************************************************/
914BTA_API extern tBTA_GATT_STATUS BTA_GATTC_DeregisterForNotifications (tBTA_GATTC_IF client_if,
915 BD_ADDR remote_bda,
916 tBTA_GATTC_CHAR_ID *p_char_id);
917
918/*******************************************************************************
919**
920** Function BTA_GATTC_PrepareWrite
921**
922** Description This function is called to prepare write a characteristic value.
923**
924** Parameters conn_id - connection ID.
925** p_char_id - GATT characteritic ID of the service.
926** offset - offset of the write value.
927** len: length of the data to be written.
928** p_value - the value to be written.
929**
930** Returns None
931**
932*******************************************************************************/
933BTA_API extern void BTA_GATTC_PrepareWrite (UINT16 conn_id,
934 tBTA_GATTC_CHAR_ID *p_char_id,
935 UINT16 offset,
936 UINT16 len,
937 UINT8 *p_value,
938 tBTA_GATT_AUTH_REQ auth_req);
939
940/*******************************************************************************
941**
942** Function BTA_GATTC_ExecuteWrite
943**
944** Description This function is called to execute write a prepare write sequence.
945**
946** Parameters conn_id - connection ID.
947** is_execute - execute or cancel.
948**
949** Returns None
950**
951*******************************************************************************/
952BTA_API extern void BTA_GATTC_ExecuteWrite (UINT16 conn_id, BOOLEAN is_execute);
953
954/*******************************************************************************
955**
956** Function BTA_GATTC_ReadMultiple
957**
958** Description This function is called to read multiple characteristic or
959** characteristic descriptors.
960**
961** Parameters conn_id - connectino ID.
962** p_read_multi - read multiple parameters.
963**
964** Returns None
965**
966*******************************************************************************/
967BTA_API extern void BTA_GATTC_ReadMultiple(UINT16 conn_id, tBTA_GATTC_MULTI *p_read_multi,
968 tBTA_GATT_AUTH_REQ auth_req);
969
970
971
972
973/*******************************************************************************
974** BTA GATT Server API
975********************************************************************************/
976/*******************************************************************************
977**
978** Function BTA_GATTS_AppRegister
979**
980** Description This function is called to register application callbacks
981** with BTA GATTS module.
982**
983** Parameters p_app_uuid - applicaiton UUID
984** p_cback - pointer to the application callback function.
985**
986** Returns None
987**
988*******************************************************************************/
989 BTA_API extern void BTA_GATTS_AppRegister(tBT_UUID *p_app_uuid, tBTA_GATTS_CBACK *p_cback);
990
991
992/*******************************************************************************
993**
994** Function BTA_GATTS_AppDeregister
995**
996** Description De-register with BTA GATT Server.
997**
998** Parameters server_if: server interface
999**
1000** Returns void
1001**
1002*******************************************************************************/
1003 BTA_API extern void BTA_GATTS_AppDeregister(tBTA_GATTS_IF server_if);
1004
1005/*******************************************************************************
1006**
1007** Function BTA_GATTS_CreateService
1008**
1009** Description Create a service. When service creation is done, a callback
1010** event BTA_GATTS_CREATE_SRVC_EVT is called to report status
1011** and service ID to the profile. The service ID obtained in
1012** the callback function needs to be used when adding included
1013** service and characteristics/descriptors into the service.
1014**
1015** Parameters server_if: server interface.
1016** p_service_uuid: service UUID.
1017** inst: instance ID number of this service.
1018** num_handle: numble of handle requessted for this service.
1019** is_primary: is this service a primary one or not.
1020**
1021** Returns void
1022**
1023*******************************************************************************/
1024 BTA_API extern void BTA_GATTS_CreateService(tBTA_GATTS_IF server_if, tBT_UUID *p_service_uuid,
1025 UINT8 inst, UINT16 num_handle, BOOLEAN is_primary);
1026
1027/*******************************************************************************
1028**
1029** Function BTA_GATTS_AddIncludeService
1030**
1031** Description This function is called to add an included service. After included
1032** service is included, a callback event BTA_GATTS_ADD_INCL_SRVC_EVT
1033** is reported the included service ID.
1034**
1035** Parameters service_id: service ID to which this included service is to
1036** be added.
1037** included_service_id: the service ID to be included.
1038**
1039** Returns void
1040**
1041*******************************************************************************/
1042 BTA_API extern void BTA_GATTS_AddIncludeService(UINT16 service_id, UINT16 included_service_id);
1043
1044/*******************************************************************************
1045**
1046** Function BTA_GATTS_AddCharacteristic
1047**
1048** Description This function is called to add a characteristic into a service.
1049**
1050** Parameters service_id: service ID to which this included service is to
1051** be added.
1052** p_char_uuid : Characteristic UUID.
1053** perm : Characteristic value declaration attribute permission.
1054** property : Characteristic Properties
1055**
1056** Returns None
1057**
1058*******************************************************************************/
1059 BTA_API extern void BTA_GATTS_AddCharacteristic (UINT16 service_id, tBT_UUID *p_char_uuid,
1060 tBTA_GATT_PERM perm, tBTA_GATT_CHAR_PROP property);
1061
1062/*******************************************************************************
1063**
1064** Function BTA_GATTS_AddCharDescriptor
1065**
1066** Description This function is called to add characteristic descriptor. When
1067** it's done, a callback event BTA_GATTS_ADD_DESCR_EVT is called
1068** to report the status and an ID number for this descriptor.
1069**
1070** Parameters service_id: service ID to which this charatceristic descriptor is to
1071** be added.
1072** perm: descriptor access permission.
1073** p_descr_uuid: descriptor UUID.
1074** p_descr_params: descriptor value if it's read only descriptor.
1075**
1076** Returns returns status.
1077**
1078*******************************************************************************/
1079 BTA_API extern void BTA_GATTS_AddCharDescriptor (UINT16 service_id,
1080 tBTA_GATT_PERM perm,
1081 tBT_UUID * p_descr_uuid);
1082
1083/*******************************************************************************
1084**
1085** Function BTA_GATTS_DeleteService
1086**
1087** Description This function is called to delete a service. When this is done,
1088** a callback event BTA_GATTS_DELETE_EVT is report with the status.
1089**
1090** Parameters service_id: service_id to be deleted.
1091**
1092** Returns returns none.
1093**
1094*******************************************************************************/
1095 BTA_API extern void BTA_GATTS_DeleteService(UINT16 service_id);
1096
1097/*******************************************************************************
1098**
1099** Function BTA_GATTS_StartService
1100**
1101** Description This function is called to start a service.
1102**
1103** Parameters service_id: the service ID to be started.
1104** sup_transport: supported trasnport.
1105**
1106** Returns None.
1107**
1108*******************************************************************************/
1109 BTA_API extern void BTA_GATTS_StartService(UINT16 service_id, tBTA_GATT_TRANSPORT sup_transport);
1110
1111/*******************************************************************************
1112**
1113** Function BTA_GATTS_StopService
1114**
1115** Description This function is called to stop a service.
1116**
1117** Parameters service_id - service to be topped.
1118**
1119** Returns None
1120**
1121*******************************************************************************/
1122 BTA_API extern void BTA_GATTS_StopService(UINT16 service_id);
1123
1124/*******************************************************************************
1125**
1126** Function BTA_GATTS_HandleValueIndication
1127**
1128** Description This function is called to read a characteristics descriptor.
1129**
1130** Parameters conn_id - connection identifier.
1131** attr_id - attribute ID to indicate.
1132** data_len - indicate data length.
1133** p_data: data to indicate.
1134** need_confirm - if this indication expects a confirmation or not.
1135**
1136** Returns None
1137**
1138*******************************************************************************/
1139 BTA_API extern void BTA_GATTS_HandleValueIndication (UINT16 conn_id, UINT16 attr_id,
1140 UINT16 data_len,
1141 UINT8 *p_data,
1142 BOOLEAN need_confirm);
1143
1144/*******************************************************************************
1145**
1146** Function BTA_GATTS_SendRsp
1147**
1148** Description This function is called to send a response to a request.
1149**
1150** Parameters conn_id - connection identifier.
1151** trans_id - transaction ID.
1152** status - response status
1153** p_msg - response data.
1154**
1155** Returns None
1156**
1157*******************************************************************************/
1158 BTA_API extern void BTA_GATTS_SendRsp (UINT16 conn_id, UINT32 trans_id,
1159 tBTA_GATT_STATUS status, tBTA_GATTS_RSP *p_msg);
1160
1161
1162
1163
1164/*******************************************************************************
1165**
1166** Function BTA_GATTS_Open
1167**
1168** Description Open a direct open connection or add a background auto connection
1169** bd address
1170**
1171** Parameters server_if: server interface.
1172** remote_bda: remote device BD address.
1173** is_direct: direct connection or background auto connection
1174**
1175** Returns void
1176**
1177*******************************************************************************/
1178 BTA_API extern void BTA_GATTS_Open(tBTA_GATTS_IF server_if, BD_ADDR remote_bda, BOOLEAN is_direct);
1179
1180
1181/*******************************************************************************
1182**
1183** Function BTA_GATTS_CancelOpen
1184**
1185** Description Cancel a direct open connection or remove a background auto connection
1186** bd address
1187**
1188** Parameters server_if: server interface.
1189** remote_bda: remote device BD address.
1190** is_direct: direct connection or background auto connection
1191**
1192** Returns void
1193**
1194*******************************************************************************/
1195 BTA_API extern void BTA_GATTS_CancelOpen(tBTA_GATTS_IF server_if, BD_ADDR remote_bda, BOOLEAN is_direct);
1196
1197
1198/*******************************************************************************
1199**
1200** Function BTA_GATTS_Close
1201**
1202** Description Close a connection a remote device.
1203**
1204** Parameters conn_id: connectino ID to be closed.
1205**
1206** Returns void
1207**
1208*******************************************************************************/
1209 BTA_API extern void BTA_GATTS_Close(UINT16 conn_id);
1210
1211
1212#ifdef __cplusplus
1213
1214}
1215#endif
1216
1217
1218#endif /* BTA_GATT_API_H */
1219