1 /******************************************************************************
3 * Copyright 2003-2012 Broadcom Corporation
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:
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 ******************************************************************************/
19 /******************************************************************************
21 * This is the private file for the BTA GATT server.
23 ******************************************************************************/
24 #ifndef BTA_GATTS_INT_H
25 #define BTA_GATTS_INT_H
29 #include "bt_target.h" // Must be first to define build configuration
31 #include "bta/include/bta_gatt_api.h"
32 #include "bta/sys/bta_sys.h"
33 #include "stack/include/bt_types.h"
34 #include "stack/include/btm_ble_api_types.h"
35 #include "stack/include/gatt_api.h"
37 /*****************************************************************************
38 * Constants and data types
39 ****************************************************************************/
41 BTA_GATTS_API_REG_EVT = BTA_SYS_EVT_START(BTA_ID_GATTS),
42 BTA_GATTS_INT_START_IF_EVT,
43 BTA_GATTS_API_DEREG_EVT,
44 BTA_GATTS_API_INDICATION_EVT,
46 BTA_GATTS_API_DEL_SRVC_EVT,
47 BTA_GATTS_API_STOP_SRVC_EVT,
48 BTA_GATTS_API_RSP_EVT,
49 BTA_GATTS_API_OPEN_EVT,
50 BTA_GATTS_API_CANCEL_OPEN_EVT,
51 BTA_GATTS_API_CLOSE_EVT,
52 BTA_GATTS_API_DISABLE_EVT
54 typedef uint16_t tBTA_GATTS_INT_EVT;
56 /* max number of application allowed on device */
57 #define BTA_GATTS_MAX_APP_NUM GATT_MAX_SR_PROFILES
59 /* max number of services allowed in the device */
60 #define BTA_GATTS_MAX_SRVC_NUM GATT_MAX_SR_PROFILES
62 /* internal strucutre for GATTC register API */
65 bluetooth::Uuid app_uuid;
66 tBTA_GATTS_CBACK* p_cback;
73 } tBTA_GATTS_INT_START_IF;
75 typedef tBTA_GATTS_INT_START_IF tBTA_GATTS_API_DEREG;
80 btgatt_db_element_t* service;
82 } tBTA_GATTS_API_ADD_SERVICE;
89 uint8_t value[GATT_MAX_ATTR_LEN];
90 } tBTA_GATTS_API_INDICATION;
101 tBT_TRANSPORT transport;
102 } tBTA_GATTS_API_START;
106 RawAddress remote_bda;
109 tBT_TRANSPORT transport;
111 } tBTA_GATTS_API_OPEN;
113 typedef tBTA_GATTS_API_OPEN tBTA_GATTS_API_CANCEL_OPEN;
117 tBTA_GATTS_API_REG api_reg;
118 tBTA_GATTS_API_DEREG api_dereg;
119 tBTA_GATTS_API_ADD_SERVICE api_add_service;
120 tBTA_GATTS_API_INDICATION api_indicate;
121 tBTA_GATTS_API_RSP api_rsp;
122 tBTA_GATTS_API_OPEN api_open;
123 tBTA_GATTS_API_CANCEL_OPEN api_cancel_open;
125 tBTA_GATTS_INT_START_IF int_start_if;
128 /* application registration control block */
131 bluetooth::Uuid app_uuid;
132 tBTA_GATTS_CBACK* p_cback;
136 /* service registration control block */
138 bluetooth::Uuid service_uuid; /* service UUID */
139 uint16_t service_id; /* service start handle */
141 uint8_t idx; /* self index of serviec CB */
143 } tBTA_GATTS_SRVC_CB;
145 /* GATT server control block */
148 tBTA_GATTS_RCB rcb[BTA_GATTS_MAX_APP_NUM];
149 tBTA_GATTS_SRVC_CB srvc_cb[BTA_GATTS_MAX_SRVC_NUM];
152 /*****************************************************************************
154 ****************************************************************************/
156 /* GATTC control block */
157 extern tBTA_GATTS_CB bta_gatts_cb;
159 /*****************************************************************************
160 * Function prototypes
161 ****************************************************************************/
162 extern bool bta_gatts_hdl_event(BT_HDR* p_msg);
164 extern void bta_gatts_api_disable(tBTA_GATTS_CB* p_cb);
165 extern void bta_gatts_api_enable(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_data);
166 extern void bta_gatts_register(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg);
167 extern void bta_gatts_start_if(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg);
168 extern void bta_gatts_deregister(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg);
169 extern void bta_gatts_delete_service(tBTA_GATTS_SRVC_CB* p_srvc_cb,
170 tBTA_GATTS_DATA* p_msg);
171 extern void bta_gatts_stop_service(tBTA_GATTS_SRVC_CB* p_srvc_cb,
172 tBTA_GATTS_DATA* p_msg);
174 extern void bta_gatts_send_rsp(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg);
175 extern void bta_gatts_indicate_handle(tBTA_GATTS_CB* p_cb,
176 tBTA_GATTS_DATA* p_msg);
178 extern void bta_gatts_open(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg);
179 extern void bta_gatts_cancel_open(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg);
180 extern void bta_gatts_close(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg);
182 extern tBTA_GATTS_RCB* bta_gatts_find_app_rcb_by_app_if(tGATT_IF server_if);
183 extern uint8_t bta_gatts_find_app_rcb_idx_by_app_if(tBTA_GATTS_CB* p_cb,
185 extern uint8_t bta_gatts_alloc_srvc_cb(tBTA_GATTS_CB* p_cb, uint8_t rcb_idx);
186 extern tBTA_GATTS_SRVC_CB* bta_gatts_find_srvc_cb_by_srvc_id(
187 tBTA_GATTS_CB* p_cb, uint16_t service_id);
188 extern tBTA_GATTS_SRVC_CB* bta_gatts_find_srvc_cb_by_attr_id(
189 tBTA_GATTS_CB* p_cb, uint16_t attr_id);
191 #endif /* BTA_GATTS_INT_H */