Add GATT data batching
[platform/core/connectivity/bluetooth-frwk.git] / bt-service-adaptation / services / include / bt-service-gatt.h
1 /*
2  * Bluetooth-frwk
3  *
4  * Copyright (c) 2016-2017 Samsung Electronics Co., Ltd.
5  *
6  * Contact: Anupam Roy (anupam.r@samsung.com)
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *              http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21
22 #ifndef BT_SERVICE_GATT_H_
23 #define BT_SERVICE_GATT_H_
24
25 #include <glib.h>
26 #include <sys/types.h>
27 #include "bluetooth-api.h"
28 #include "bluetooth-gatt-server-api.h"
29
30 #ifdef TIZEN_GATT_CLIENT
31 #include "bluetooth-gatt-client-api.h"
32 #endif
33
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37
38 int _bt_gatt_init(void);
39
40 void _bt_gatt_deinit(void);
41
42 int _bt_get_allocated_server_instance(const char *sender, int adv_handle, gboolean use_reserved_slot);
43
44 int _bt_register_server_instance(const char *sender, int adv_handle);
45
46 int _bt_unregister_server_instance(const char *sender, int adv_handle);
47
48 char* _bt_get_sender_and_handle(int server_instance, int *adv_handle);
49
50 int _bt_register_server_instance(const char *sender, int adv_handle);
51
52 void _bt_get_adv_handle_from_instance(int server_inst, int *adv_handle);
53
54 void _bt_set_new_scan_rsp_data(bluetooth_scan_resp_data_t *scan, int len, int instance);
55
56 void _bt_set_new_adv_data(bluetooth_advertising_data_t *adv, int len, int instance);
57
58 void _bt_update_adv_handle(const char *sender, int adv_handle);
59
60 void _bt_get_previous_adv_data(bluetooth_advertising_data_t *adv, int *len, int instance);
61
62 void _bt_get_previous_scan_rsp_data(bluetooth_scan_resp_data_t *scan, int *len, int instance);
63
64 int _bt_is_sender_gatt_server_with_no_adv(const char *sender, int adv_handle);
65
66 void _bt_check_adv_app_termination(const char *name);
67
68 int _bt_gatt_server_add_service(char *sender, int service_type,
69                 int num_handles, char *svc_uuid, int instance_id);
70
71 int _bt_gatt_server_add_included_service(char *sender, int instance_id,
72                 int service_handle, int included_svc_handle);
73
74 int _bt_gatt_server_add_characteristic(char *sender, char *char_uuid,
75                 bluetooth_gatt_server_attribute_params_t *param);
76
77 int _bt_gatt_server_add_descriptor(char *sender, char *desc_uuid,
78                 bt_gatt_permission_t *perm, int service_handle, int instance_id);
79
80 int _bt_gatt_server_start_service(char *sender, int service_handle, int instance_id);
81
82 int _bt_gatt_server_stop_service(char *sender, int service_handle, int instance_id);
83
84 int _bt_gatt_server_delete_service(char *sender, int service_handle, int instance_id);
85
86 int _bt_gatt_server_send_response(char *sender, bluetooth_gatt_att_data_t *data,
87                 bluetooth_gatt_server_response_params_t *param);
88
89 int _bt_gatt_server_send_indication(char *sender, bluetooth_device_address_t *addr, bluetooth_gatt_att_data_t *data,
90                 bluetooth_gatt_server_indication_params_t *param);
91
92 int _bt_gatt_server_update_attribute_value(char *sender, int instance_id,
93                 bluetooth_gatt_server_update_value_t *param);
94
95 int _bt_get_att_mtu(bluetooth_device_address_t *address,
96                 unsigned int *mtu);
97
98 int _bt_gatt_server_acquire_send_response(char *sender, bluetooth_gatt_server_acquire_response_params_t *param, void *);
99
100 #define __INTEGRATE_GATT_INFO__
101 #ifndef __INTEGRATE_GATT_INFO__
102 struct gatt_client_info_t *_bt_find_remote_gatt_client_info(char *address);
103 #else
104 struct gatt_conn_info_t *_bt_find_remote_gatt_client_info(char *address);
105 #endif
106
107 #ifdef TIZEN_GATT_CLIENT
108 char * _bt_gatt_get_default_gatt_client_uuid(void);
109
110 int _bt_register_gatt_client_instance(const char *sender,
111                 bluetooth_device_address_t *address);
112
113 gboolean _bt_is_remote_gatt_device_connected(bluetooth_device_address_t *address);
114
115 void _bt_handle_invocation_context(int function_name, void *data);
116
117 int _bt_connect_le_device(bluetooth_device_address_t *address,
118                 int auto_connect, int client_id);
119
120 int _bt_gatt_get_data_batching_available_packets(
121                 guint *available_packets);
122
123 int _bt_gatt_enable_data_batching(bluetooth_device_address_t *address,
124                 int packet_threshold, int timeout);
125
126 int _bt_gatt_disable_data_batching(bluetooth_device_address_t *address);
127
128 int _bt_gatt_get_primary_services(char *address);
129
130 int _bt_gatt_get_all_characteristic(bluetooth_gatt_client_svc_prop_info_t *svc);
131
132 int _bt_gatt_get_all_characteristic_properties(
133                 bluetooth_gatt_client_char_prop_info_t *prop);
134
135 int _bt_gatt_read_characteristic_value(
136                 bluetooth_gatt_client_char_prop_info_t *desc);
137
138 int _bt_gatt_read_descriptor_value(
139                 bluetooth_gatt_client_desc_prop_info_t *desc);
140
141 int _bt_gatt_write_characteristic_value_by_type(
142                 bluetooth_gatt_client_char_prop_info_t *chr,
143                 bluetooth_gatt_att_data_t *data,
144                 bluetooth_gatt_write_type_e write_type);
145
146 int _bt_gatt_acquire_notify(bluetooth_gatt_client_char_prop_info_t *chr, int *fd , int *mtu);
147
148 int _bt_gatt_acquire_write(bluetooth_gatt_client_char_prop_info_t *chr, int *fd , int *mtu);
149
150 int _bt_gatt_write_descriptor_value_by_type(
151                 bluetooth_gatt_client_desc_prop_info_t *desc,
152                 bluetooth_gatt_att_data_t *data,
153                 bluetooth_gatt_write_type_e write_type);
154
155 int _bt_disconnect_le_device(bluetooth_device_address_t *address,
156                 int client_id);
157
158 int _bt_gatt_watch_characteristic(bluetooth_gatt_client_char_prop_info_t *chr,
159                 int client_id, gboolean is_notify);
160
161 int _bt_gatt_watch_service_changed_indication(const char *sender,
162                 bluetooth_device_address_t *address,
163                 gboolean is_enabled);
164
165 int _bt_unregister_gatt_client_instance(const char *sender,
166                 int client_id);
167 int _bt_request_att_mtu(bluetooth_device_address_t *device_address, unsigned int mtu);
168
169 #ifndef __INTEGRATE_GATT_INFO__
170 struct gatt_server_info_t *_bt_find_remote_gatt_server_info(char *address);
171 #else
172 struct gatt_conn_info_t *_bt_find_remote_gatt_server_info(char *address);
173 #endif
174
175 #endif
176 //int _bt_gatt_server_enable_application(int instance_id);
177 #if 0
178 int _bt_gatt_server_register(char *sender);
179
180 int _bt_gatt_server_unregister(char *sender);
181
182 int _bt_gatt_server_update_multi_adv_info(char *name, int instance_id);
183
184 int _bt_gatt_server_connect_remote_client(char *sender,
185                                 bluetooth_device_address_t *address, int instance_id);
186
187 int _bt_gatt_server_disconnect_remote_client(char *sender,
188                                 bluetooth_device_address_t *address,
189                                 int instance_id);
190
191 int _bt_gatt_server_add_service(char *sender, int service_type,
192                                 int num_handles, char *svc_uuid, int instance_id);
193
194 int _bt_gatt_server_add_included_service(char *sender, int instance_id,
195                 int service_handle, int included_svc_handle);
196
197 int _bt_gatt_server_add_characteristic(char *sender, char *char_uuid,
198                                 bluetooth_gatt_server_attribute_params_t *param);
199
200 int _bt_gatt_server_add_descriptor(char *sender, char *desc_uuid,
201                                 bt_gatt_permission_t *perm, int service_handle, int instance_id);
202
203 int _bt_gatt_server_start_service(char *sender, int service_handle, int instance_id);
204
205 int _bt_gatt_server_stop_service(char *sender, int service_handle, int instance_id);
206
207 int _bt_gatt_server_delete_service(char *sender, int service_handle, int instance_id);
208
209 int _bt_gatt_server_send_indication(char *sender, bluetooth_device_address_t *addr, bluetooth_gatt_att_data_t *data,
210                                         bluetooth_gatt_server_indication_params_t *param);
211
212 int _bt_gatt_server_send_response(char *sender, bluetooth_gatt_att_data_t *data,
213                                         bluetooth_gatt_server_response_params_t *param);
214
215 void _bt_gatt_server_clear_req_info(void);
216
217 void _bt_gatt_server_clear_connection_info(void);
218
219 bt_product_gatt_permission_t _bt_gatt_convert_attr_permission_to_stack_specific(
220                 bt_gatt_permission_t perm);
221
222 void _bt_check_gatt_server_app_termination(const char *name);
223
224 int _bt_gatt_server_get_att_mtu(bluetooth_device_address_t *address, unsigned int *mtu);
225
226 #endif
227
228 #ifdef __cplusplus
229 }
230 #endif /* __cplusplus */
231 #endif /* BT_SERVICE_GATT_H_ */