Imported Upstream version 0.9.1
[platform/upstream/iotivity.git] / resource / csdk / connectivity / lib / tizen / ble / inc / bluetooth_private.h
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17
18 #ifndef __TIZEN_NETWORK_BLUETOOTH_PRIVATE_H__
19 #define __TIZEN_NETWORK_BLUETOOTH_PRIVATE_H__
20
21 #include <dlog.h>
22 #include <stdbool.h>
23 #include <bluetooth-api.h>
24 #include <bluetooth-audio-api.h>
25 #include <bluetooth-telephony-api.h>
26 #include <bluetooth-media-control.h>
27 #include <bluetooth-hid-api.h>
28
29 #include "bluetooth.h"
30
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34
35 #undef LOG_TAG
36 #define LOG_TAG "CAPI_NETWORK_BLUETOOTH"
37
38 #define BT_INFO(fmt, args...) SLOGI(fmt, ##args)
39 #define BT_DBG(fmt, args...) SLOGD(fmt, ##args)
40 #define BT_ERR(fmt, args...) SLOGE(fmt, ##args)
41
42 #define OPP_UUID "00001105-0000-1000-8000-00805f9b34fb"
43
44 /**
45  * @internal
46  * @brief Bluetooth callback.
47  */
48 typedef enum
49 {
50         BT_EVENT_STATE_CHANGED = 0x00, /**< Adapter state is changed */
51         BT_EVENT_LE_STATE_CHANGED, /**< Adapter le state is changed */
52         BT_EVENT_NAME_CHANGED, /**< Adapter name is changed */
53         BT_EVENT_VISIBILITY_MODE_CHANGED, /**< Adapter visibility mode is changed */
54         BT_EVENT_VISIBILITY_DURATION_CHANGED, /**< Adapter visibility duration is changed */
55         BT_EVENT_DEVICE_DISCOVERY_STATE_CHANGED, /**< Device discovery state is changed */
56         BT_EVENT_LE_DEVICE_DISCOVERY_STATE_CHANGED, /**< LE Device discovery state is changed */
57         BT_EVENT_BOND_CREATED, /**< A bond is created */
58         BT_EVENT_BOND_DESTROYED, /**< A bond is destroyed */
59         BT_EVENT_AUTHORIZATION_CHANGED, /**< Authorization is changed */
60         BT_EVENT_SERVICE_SEARCHED, /**< Service search finish */
61         BT_EVENT_DATA_RECEIVED, /**< Data is received */
62         BT_EVENT_CONNECTION_STATE_CHANGED, /**< Connection state is changed */
63         BT_EVENT_RFCOMM_CONNECTION_REQUESTED, /**< RFCOMM connection is requested */
64         BT_EVENT_OPP_CONNECTION_REQUESTED, /**< OPP connection is requested */
65         BT_EVENT_OPP_PUSH_REQUESTED, /**< OPP push is requested */
66         BT_EVENT_OPP_SERVER_TRANSFER_PROGRESS, /**< OPP transfer progress */
67         BT_EVENT_OPP_SERVER_TRANSFER_FINISHED, /**< OPP transfer is completed */
68         BT_EVENT_OPP_CLIENT_PUSH_RESPONSED, /**< OPP client connection is reponsed */
69         BT_EVENT_OPP_CLIENT_PUSH_PROGRESS, /**< OPP client push progress */
70         BT_EVENT_OPP_CLIENT_PUSH_FINISHED, /**< OPP client push is finished */
71         BT_EVENT_PAN_CONNECTION_STATE_CHANGED, /**< PAN connection change */
72         BT_EVENT_NAP_CONNECTION_STATE_CHANGED, /**< NAP connection change */
73         BT_EVENT_HDP_CONNECTED, /**< HDP connection change */
74         BT_EVENT_HDP_DISCONNECTED, /**< HDP disconnection change */
75         BT_EVENT_HDP_DATA_RECEIVED, /**< HDP Data receive Callabck */
76         BT_EVENT_AUDIO_CONNECTION_STATUS, /**< Audio Connection change callback */
77         BT_EVENT_AG_SCO_CONNECTION_STATUS, /**< Audio - AG SCO Connection state change callback */
78         BT_EVENT_AG_CALL_HANDLING_EVENT, /**< Audio - AG call event callback */
79         BT_EVENT_AG_MULTI_CALL_HANDLING_EVENT, /**< Audio - AG 3-way call event callback */
80         BT_EVENT_AG_DTMF_TRANSMITTED, /**< Audio - DTMF tone sending request */
81         BT_EVENT_AG_MICROPHONE_GAIN_CHANGE, /**< Audio Microphone change callback */
82         BT_EVENT_AG_SPEAKER_GAIN_CHANGE, /**< Audio Speaker gain change callback */
83         BT_EVENT_AG_VENDOR_CMD, /**< Audio - XSAT Vendor cmd */
84         BT_EVENT_AVRCP_CONNECTION_STATUS, /**< AVRCP connection change callback */
85         BT_EVENT_AVRCP_EQUALIZER_STATE_CHANGED, /**< AVRCP equalizer state change callback */
86         BT_EVENT_AVRCP_REPEAT_MODE_CHANGED, /**< AVRCP repeat mode change callback */
87         BT_EVENT_AVRCP_SHUFFLE_MODE_CHANGED, /**< AVRCP equalizer mode change callback */
88         BT_EVENT_AVRCP_SCAN_MODE_CHANGED, /**< AVRCP scan mode change callback */
89         BT_EVENT_HID_CONNECTION_STATUS, /**< HID connection status callback */
90         BT_EVENT_DEVICE_CONNECTION_STATUS, /**< Device connection status callback */
91         BT_EVENT_GATT_CONNECTION_STATUS, /** < GATT connection status callback */
92         BT_EVENT_GATT_PRIM_SVC_DISCOVERED, /**< GATT Primary Service discovered callback */
93         BT_EVENT_GATT_CHARACTERISTIC_DISCOVERED, /**< GATT characteristic discovered callback */
94         BT_EVENT_GATT_CHARACTERISTIC_DESCRIPTOR_DISCOVERED, /**< GATT characteristic descriptor discovered callback */
95         BT_EVENT_GATT_VALUE_CHANGED, /**< GATT characteristic value changed callback */
96         BT_EVENT_GATT_READ_CHARACTERISTIC, /**< GATT characteristic value read callback */
97         BT_EVENT_GATT_WRITE_CHARACTERISTIC, /**< GATT characteristic value write callback */
98         BT_EVENT_GATT_SERVER_ON_WRITE_CHAR, /**< GATT characteristic value write callback */
99         BT_EVENT_ADVERTISING_STATE_CHANGED, /**< Advertising state changed callback */
100         BT_EVENT_MANUFACTURER_DATA_CHANGED, /**< Manufacturer data changed callback */
101         BT_EVENT_CONNECTABLE_CHANGED_EVENT, /**< Adapter connectable changed callback */
102         BT_EVENT_RSSI_ENABLED_EVENT, /**< RSSI Enabled callback */
103         BT_EVENT_RSSI_ALERT_EVENT, /**< RSSI Alert callback */
104         BT_EVENT_GET_RSSI_EVENT, /**< Get RSSI Strength callback */
105 #ifdef TIZEN_WEARABLE
106         BT_EVENT_PBAP_CONNECTION_STATUS, /**< PBAP connection status callback */
107         BT_EVENT_PBAP_PHONEBOOK_SIZE, /**< PBAP Phonebook Size status callback */
108         BT_EVENT_PBAP_PHONEBOOK_PULL, /**< PBAP Phonebook Pull status callback */
109         BT_EVENT_PBAP_VCARD_LIST, /**< PBAP vCard List status callback */
110         BT_EVENT_PBAP_VCARD_PULL, /**< PBAP vCard Pull status callback */
111         BT_EVENT_PBAP_PHONEBOOK_SEARCH, /**< PBAP Phonebook Search status callback */
112         BT_EVENT_HF_SCO_CONNECTION_STATUS, /**< Audio - HF SCO Connection state change callback */
113         BT_EVENT_HF_SPEAKER_GAIN_CHANGE, /**< Audio - HF Speaker gain change callback */
114         BT_EVENT_HF_CALL_HANDLING_EVENT, /**< Audio - HF call event callback */
115         BT_EVENT_HF_VENDOR_DEP_CMD_EVENT, /**< Audio - HF Vendor Command callback */
116         BT_EVENT_HF_MULTI_CALL_HANDLING_EVENT, /**< Audio - HF 3-way call event callback */
117 #endif
118 } bt_event_e;
119
120 /**
121  * @internal
122  */
123 typedef struct {
124         int handle;
125
126         bt_adapter_le_advertising_state_changed_cb cb;
127         void *cb_data;
128
129         bt_adapter_le_advertising_params_s adv_params;
130
131         unsigned int adv_data_len;
132         char *adv_data;
133
134         unsigned int scan_rsp_data_len;
135         char *scan_rsp_data;
136
137         void *user_data;
138 } bt_advertiser_s;
139
140 /**
141  * @internal
142  */
143 typedef struct bt_event_sig_event_slot_s
144 {
145     int event_type;
146     const void *callback;
147     void *user_data;
148 } bt_event_sig_event_slot_s;
149
150
151 #define BT_CHECK_INPUT_PARAMETER(arg) \
152         if (arg == NULL) \
153         { \
154                 LOGE("[%s] INVALID_PARAMETER(0x%08x)", __FUNCTION__, BT_ERROR_INVALID_PARAMETER); \
155                 return BT_ERROR_INVALID_PARAMETER; \
156         }
157
158 /**
159  * @internal
160  * @brief Check the initialzating status
161  */
162 int _bt_check_init_status(void);
163
164 #define BT_CHECK_INIT_STATUS() \
165         if (_bt_check_init_status() == BT_ERROR_NOT_INITIALIZED) \
166         { \
167                 LOGE("[%s] NOT_INITIALIZED(0x%08x)", __FUNCTION__, BT_ERROR_NOT_INITIALIZED); \
168                 return BT_ERROR_NOT_INITIALIZED; \
169         }
170
171 /**
172  * @internal
173  * @brief Initialize Bluetooth LE adapter
174  */
175 int _bt_le_adapter_init(void);
176
177 /**
178  * @internal
179  * @brief Deinitialize Bluetooth LE adapter
180  */
181 int _bt_le_adapter_deinit(void);
182
183 /**
184  * @internal
185  * @brief Set the event callback.
186  */
187 void _bt_set_cb(int events, void *callback, void *user_data);
188
189 /**
190  * @internal
191  * @brief Unset the event callback.
192  */
193 void _bt_unset_cb(int events);
194
195 /**
196  * @internal
197  * @brief Check if the event callback exist or not.
198  */
199 bool _bt_check_cb(int events);
200
201 /**
202  * @internal
203  * @brief Convert Bluetooth F/W error codes to capi Bluetooth error codes.
204  */
205 int _bt_get_error_code(int origin_error);
206
207
208 /**
209  * @internal
210  * @brief Convert Bluetooth F/W bluetooth_device_info_t to capi bt_device_info_s.
211  */
212 int _bt_get_bt_device_info_s(bt_device_info_s **dest_dev, bluetooth_device_info_t *source_dev);
213
214
215 /**
216  * @internal
217  * @brief Free bt_device_info_s.
218  */
219 void _bt_free_bt_device_info_s(bt_device_info_s *device_info);
220
221 /**
222  * @internal
223  * @brief Convert Bluetooth F/W bluetooth_device_address_t to string.
224  */
225 int _bt_convert_address_to_string(char **addr_str, bluetooth_device_address_t *addr_hex);
226
227
228 /**
229  * @internal
230  * @brief Convert string to Bluetooth F/W bluetooth_device_address_t.
231  */
232 void _bt_convert_address_to_hex(bluetooth_device_address_t *addr_hex, const char *addr_str);
233
234
235 /**
236  * @internal
237  * @brief Convert error code to string.
238  */
239 char* _bt_convert_error_to_string(int error);
240
241 /**
242  * @internal
243  * @brief Convert the visibility mode
244  */
245 bt_adapter_visibility_mode_e _bt_get_bt_visibility_mode_e(bluetooth_discoverable_mode_t mode);
246
247 /**
248  * @internal
249  * @brief Since the Audio call back and event proxy call backs have different prototype it is wrapper function.
250  */
251 void _bt_audio_event_proxy(int event, bt_audio_event_param_t *param, void *user_data);
252
253 #ifdef TIZEN_WEARABLE
254 /**
255  * @internal
256  * @brief Since the HF call back and event proxy call backs have different prototype it is wrapper function.
257  */
258 void _bt_hf_event_proxy(int event, bt_hf_event_param_t *param, void *user_data);
259 #endif
260
261 /**
262  * @internal
263  * @brief Since the Telephony call back and event proxy call backs have different prototype it is wrapper function.
264  */
265 void _bt_telephony_event_proxy(int event, telephony_event_param_t *param, void *user_data);
266
267 /**
268  * @internal
269  * @brief Since the AVRCP call back and event proxy call backs have different prototype it is wrapper function.
270  */
271 void _bt_avrcp_event_proxy(int event, media_event_param_t *param, void *user_data);
272
273 /**
274  * @internal
275  * @brief Since the HID call back and event proxy call backs have different prototype it is wrapper function.
276  */
277 void _bt_hid_event_proxy(int event, hid_event_param_t *param, void *user_data);
278
279
280 #ifdef __cplusplus
281 }
282 #endif
283
284 #endif /* __TIZEN_NETWORK_BLUETOOTH_PRIVATE_H__ */