24#ifndef BTA_GATTC_INT_H
25#define BTA_GATTC_INT_H
29#include "bta_gatt_api.h"
30#include "bta_gattc_ci.h"
31#include "bta_gattc_co.h"
40 BTA_GATTC_API_OPEN_EVT = BTA_SYS_EVT_START(BTA_ID_GATTC),
41 BTA_GATTC_INT_OPEN_FAIL_EVT,
42 BTA_GATTC_API_CANCEL_OPEN_EVT,
43 BTA_GATTC_INT_CANCEL_OPEN_OK_EVT,
45 BTA_GATTC_API_READ_EVT,
46 BTA_GATTC_API_WRITE_EVT,
47 BTA_GATTC_API_EXEC_EVT,
49 BTA_GATTC_API_CLOSE_EVT,
51 BTA_GATTC_API_SEARCH_EVT,
52 BTA_GATTC_API_CONFIRM_EVT,
53 BTA_GATTC_API_READ_MULTI_EVT,
55 BTA_GATTC_INT_CONN_EVT,
56 BTA_GATTC_INT_DISCOVER_EVT,
57 BTA_GATTC_DISCOVER_CMPL_EVT,
58 BTA_GATTC_OP_CMPL_EVT,
59 BTA_GATTC_INT_DISCONN_EVT,
62 BTA_GATTC_START_CACHE_EVT,
63 BTA_GATTC_CI_CACHE_OPEN_EVT,
64 BTA_GATTC_CI_CACHE_LOAD_EVT,
65 BTA_GATTC_CI_CACHE_SAVE_EVT,
67 BTA_GATTC_INT_START_IF_EVT,
68 BTA_GATTC_API_REG_EVT,
69 BTA_GATTC_API_DEREG_EVT,
70 BTA_GATTC_INT_DEREG_EVT
73typedef UINT16 tBTA_GATTC_INT_EVT;
76#ifndef BTA_GATTC_CL_MAX
77#define BTA_GATTC_CL_MAX 4
81#ifndef BTA_GATTC_KNOWN_SR_MAX
82#define BTA_GATTC_KNOWN_SR_MAX 4
85#ifndef BTA_GATTC_CLCB_MAX
86 #define BTA_GATTC_CLCB_MAX GATT_CL_MAX_LCB
89#define BTA_GATTC_WRITE_PREPARE GATT_WRITE_PREPARE
96 tBTA_GATTC_CBACK *p_cback;
102 tBTA_GATTC_IF client_if;
112 tBTA_GATTC_IF client_if;
121 tBTA_GATT_AUTH_REQ auth_req;
130 tBTA_GATT_AUTH_REQ auth_req;
134 tBTA_GATTC_WRITE_TYPE write_type;
160 tBTA_GATTC_CMPL *p_cmpl;
172 tBTA_GATT_AUTH_REQ auth_req;
181 tBTA_GATTC_API_DEREG api_dereg;
183 tBTA_GATTC_API_CANCEL_OPEN api_cancel_conn;
196 tBTA_GATTC_INT_DEREG int_dereg;
204 UINT8 uuid128[LEN_UUID_128];
215 tBTA_GATT_CHAR_PROP property;
218 tBTA_GATTC_ATTR_TYPE attr_type;
220} __attribute__((packed)) tBTA_GATTC_CACHE_ATTR;
226 tBTA_GATTC_CACHE_ATTR *p_attr;
227 tBTA_GATTC_CACHE_ATTR *p_last_attr;
232} __attribute__((packed)) tBTA_GATTC_CACHE;
242 tBTA_GATT_CHAR_PROP property;
246#define BTA_GATTC_MAX_CACHE_CHAR 40
247#define BTA_GATTC_ATTR_LIST_SIZE (BTA_GATTC_MAX_CACHE_CHAR * sizeof(tBTA_GATTC_ATTR_REC))
249#ifndef BTA_GATTC_CACHE_SRVR_SIZE
250 #define BTA_GATTC_CACHE_SRVR_SIZE 600
255 BTA_GATTC_IDLE_ST = 0,
256 BTA_GATTC_W4_CONN_ST,
258 BTA_GATTC_DISCOVER_ST
260typedef UINT8 tBTA_GATTC_STATE;
268#define BTA_GATTC_SERV_IDLE 0
269#define BTA_GATTC_SERV_LOAD 1
270#define BTA_GATTC_SERV_SAVE 2
274 tBTA_GATTC_CACHE *p_srvc_cache;
275 tBTA_GATTC_CACHE *p_cur_srvc;
286 UINT8 next_avail_idx;
295#ifndef BTA_GATTC_NOTIF_REG_MAX
296#define BTA_GATTC_NOTIF_REG_MAX 4
308 tBTA_GATTC_CBACK *p_cback;
310 tBTA_GATTC_IF client_if;
312 BOOLEAN dereg_pending;
326#define BTA_GATTC_NO_SCHEDULE 0
327#define BTA_GATTC_DISC_WAITING 0x01
328#define BTA_GATTC_REQ_WAITING 0x10
332 tBTA_GATTC_STATE state;
333 tBTA_GATT_STATUS status;
338#if GATT_MAX_APPS <= 8
339typedef UINT8 tBTA_GATTC_CIF_MASK ;
340#elif GATT_MAX_APPS <= 16
341typedef UINT16 tBTA_GATTC_CIF_MASK;
342#elif GATT_MAX_APPS <= 32
343typedef UINT32 tBTA_GATTC_CIF_MASK;
350 tBTA_GATTC_CIF_MASK cif_mask;
371#if BTA_DYNAMIC_MEMORY == FALSE
375#define bta_gattc_cb (*bta_gattc_cb_ptr)
381extern BOOLEAN bta_gattc_hdl_event(
BT_HDR *p_msg);
424extern void bta_gattc_cancel_bk_conn(tBTA_GATTC_API_CANCEL_OPEN *p_data);
425extern void bta_gattc_send_open_cback(
tBTA_GATTC_RCB *p_clreg, tBTA_GATT_STATUS status,
426 BD_ADDR remote_bda, UINT16 conn_id);
429extern tBTA_GATTC_CLCB * bta_gattc_find_clcb_by_cif (UINT8 client_if, BD_ADDR remote_bda);
430extern tBTA_GATTC_CLCB * bta_gattc_find_clcb_by_conn_id (UINT16 conn_id);
431extern tBTA_GATTC_CLCB * bta_gattc_clcb_alloc(tBTA_GATTC_IF client_if, BD_ADDR remote_bda);
433extern tBTA_GATTC_CLCB * bta_gattc_find_alloc_clcb(tBTA_GATTC_IF client_if, BD_ADDR remote_bda);
442extern BOOLEAN bta_gattc_uuid_compare (
tBT_UUID src,
tBT_UUID tar, BOOLEAN is_precise);
443extern void bta_gattc_pack_attr_uuid(tBTA_GATTC_CACHE_ATTR *p_attr,
tBT_UUID *p_uuid);
446extern BOOLEAN bta_gattc_mark_bg_conn (tBTA_GATTC_IF client_if, BD_ADDR remote_bda, BOOLEAN add);
447extern BOOLEAN bta_gattc_check_bg_conn (tBTA_GATTC_IF client_if, BD_ADDR remote_bda);
448extern UINT8 bta_gattc_num_reg_app(
void);
449extern void bta_gattc_clear_notif_registration(UINT16 conn_id);
452extern void bta_gattc_disc_res_cback (UINT16 conn_id, tGATT_DISC_TYPE disc_type,
tGATT_DISC_RES *p_data);
453extern void bta_gattc_disc_cmpl_cback (UINT16 conn_id, tGATT_DISC_TYPE disc_type, tGATT_STATUS status);
454extern tBTA_GATT_STATUS bta_gattc_discover_procedure(UINT16 conn_id,
tBTA_GATTC_SERV *p_server_cb, UINT8 disc_type);
455extern tBTA_GATT_STATUS bta_gattc_discover_pri_service(UINT16 conn_id,
tBTA_GATTC_SERV *p_server_cb, UINT8 disc_type);
457extern tBTA_GATT_STATUS bta_gattc_query_cache(UINT16 conn_id, UINT8 query_type,
tBTA_GATT_SRVC_ID *p_srvc_id,
460extern tBTA_GATT_STATUS bta_gattc_init_cache(
tBTA_GATTC_SERV *p_srvc_cb);
462extern BOOLEAN bta_gattc_cache_save(
tBTA_GATTC_SERV *p_srvc_cb, UINT16 conn_id);