tizen 2.3 release
[framework/api/bluetooth.git] / include / 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_CHARACTERISTIC_DISCOVERED, /**< GATT characteristic discovered callback */
93         BT_EVENT_GATT_CHARACTERISTIC_DESCRIPTOR_DISCOVERED, /**< GATT characteristic descriptor discovered callback */
94         BT_EVENT_GATT_VALUE_CHANGED, /**< GATT characteristic value changed callback */
95         BT_EVENT_GATT_READ_CHARACTERISTIC, /**< GATT characteristic value read callback */
96         BT_EVENT_GATT_WRITE_CHARACTERISTIC, /**< GATT characteristic value write callback */
97         BT_EVENT_ADVERTISING_STATE_CHANGED, /**< Advertising state changed callback */
98         BT_EVENT_MANUFACTURER_DATA_CHANGED, /**< Manufacturer data changed callback */
99         BT_EVENT_CONNECTABLE_CHANGED_EVENT, /**< Adapter connectable changed callback */
100         BT_EVENT_RSSI_ENABLED_EVENT, /**< RSSI Enabled callback */
101         BT_EVENT_RSSI_ALERT_EVENT, /**< RSSI Alert callback */
102         BT_EVENT_GET_RSSI_EVENT, /**< Get RSSI Strength callback */
103 #ifdef TIZEN_WEARABLE
104         BT_EVENT_PBAP_CONNECTION_STATUS, /**< PBAP connection status callback */
105         BT_EVENT_PBAP_PHONEBOOK_SIZE, /**< PBAP Phonebook Size status callback */
106         BT_EVENT_PBAP_PHONEBOOK_PULL, /**< PBAP Phonebook Pull status callback */
107         BT_EVENT_PBAP_VCARD_LIST, /**< PBAP vCard List status callback */
108         BT_EVENT_PBAP_VCARD_PULL, /**< PBAP vCard Pull status callback */
109         BT_EVENT_PBAP_PHONEBOOK_SEARCH, /**< PBAP Phonebook Search status callback */
110         BT_EVENT_HF_SCO_CONNECTION_STATUS, /**< Audio - HF SCO Connection state change callback */
111         BT_EVENT_HF_SPEAKER_GAIN_CHANGE, /**< Audio - HF Speaker gain change callback */
112         BT_EVENT_HF_CALL_HANDLING_EVENT, /**< Audio - HF call event callback */
113         BT_EVENT_HF_VENDOR_DEP_CMD_EVENT, /**< Audio - HF Vendor Command callback */
114         BT_EVENT_HF_MULTI_CALL_HANDLING_EVENT, /**< Audio - HF 3-way call event callback */
115 #endif
116 } bt_event_e;
117
118 /**
119  * @internal
120  */
121 typedef struct {
122         int handle;
123
124         bt_adapter_le_advertising_state_changed_cb cb;
125         void *cb_data;
126
127         bt_adapter_le_advertising_params_s adv_params;
128
129         unsigned int adv_data_len;
130         char *adv_data;
131
132         unsigned int scan_rsp_data_len;
133         char *scan_rsp_data;
134
135         void *user_data;
136 } bt_advertiser_s;
137
138 /**
139  * @internal
140  */
141 typedef struct bt_event_sig_event_slot_s
142 {
143     int event_type;
144     const void *callback;
145     void *user_data;
146 } bt_event_sig_event_slot_s;
147
148
149 #define BT_CHECK_INPUT_PARAMETER(arg) \
150         if (arg == NULL) \
151         { \
152                 LOGE("[%s] INVALID_PARAMETER(0x%08x)", __FUNCTION__, BT_ERROR_INVALID_PARAMETER); \
153                 return BT_ERROR_INVALID_PARAMETER; \
154         }
155
156 /**
157  * @internal
158  * @brief Check the initialzating status
159  */
160 int _bt_check_init_status(void);
161
162 #define BT_CHECK_INIT_STATUS() \
163         if (_bt_check_init_status() == BT_ERROR_NOT_INITIALIZED) \
164         { \
165                 LOGE("[%s] NOT_INITIALIZED(0x%08x)", __FUNCTION__, BT_ERROR_NOT_INITIALIZED); \
166                 return BT_ERROR_NOT_INITIALIZED; \
167         }
168
169 /**
170  * @internal
171  * @brief Initialize Bluetooth LE adapter
172  */
173 int _bt_le_adapter_init(void);
174
175 /**
176  * @internal
177  * @brief Deinitialize Bluetooth LE adapter
178  */
179 int _bt_le_adapter_deinit(void);
180
181 /**
182  * @internal
183  * @brief Set the event callback.
184  */
185 void _bt_set_cb(int events, void *callback, void *user_data);
186
187 /**
188  * @internal
189  * @brief Unset the event callback.
190  */
191 void _bt_unset_cb(int events);
192
193 /**
194  * @internal
195  * @brief Check if the event callback exist or not.
196  */
197 bool _bt_check_cb(int events);
198
199 /**
200  * @internal
201  * @brief Convert Bluetooth F/W error codes to capi Bluetooth error codes.
202  */
203 int _bt_get_error_code(int origin_error);
204
205
206 /**
207  * @internal
208  * @brief Convert Bluetooth F/W bluetooth_device_info_t to capi bt_device_info_s.
209  */
210 int _bt_get_bt_device_info_s(bt_device_info_s **dest_dev, bluetooth_device_info_t *source_dev);
211
212
213 /**
214  * @internal
215  * @brief Free bt_device_info_s.
216  */
217 void _bt_free_bt_device_info_s(bt_device_info_s *device_info);
218
219 /**
220  * @internal
221  * @brief Convert Bluetooth F/W bluetooth_device_address_t to string.
222  */
223 int _bt_convert_address_to_string(char **addr_str, bluetooth_device_address_t *addr_hex);
224
225
226 /**
227  * @internal
228  * @brief Convert string to Bluetooth F/W bluetooth_device_address_t.
229  */
230 void _bt_convert_address_to_hex(bluetooth_device_address_t *addr_hex, const char *addr_str);
231
232
233 /**
234  * @internal
235  * @brief Convert error code to string.
236  */
237 char* _bt_convert_error_to_string(int error);
238
239 /**
240  * @internal
241  * @brief Convert the visibility mode
242  */
243 bt_adapter_visibility_mode_e _bt_get_bt_visibility_mode_e(bluetooth_discoverable_mode_t mode);
244
245 /**
246  * @internal
247  * @brief Since the Audio call back and event proxy call backs have different prototype it is wrapper function.
248  */
249 void _bt_audio_event_proxy(int event, bt_audio_event_param_t *param, void *user_data);
250
251 #ifdef TIZEN_WEARABLE
252 /**
253  * @internal
254  * @brief Since the HF call back and event proxy call backs have different prototype it is wrapper function.
255  */
256 void _bt_hf_event_proxy(int event, bt_hf_event_param_t *param, void *user_data);
257 #endif
258
259 /**
260  * @internal
261  * @brief Since the Telephony call back and event proxy call backs have different prototype it is wrapper function.
262  */
263 void _bt_telephony_event_proxy(int event, telephony_event_param_t *param, void *user_data);
264
265 /**
266  * @internal
267  * @brief Since the AVRCP call back and event proxy call backs have different prototype it is wrapper function.
268  */
269 void _bt_avrcp_event_proxy(int event, media_event_param_t *param, void *user_data);
270
271 /**
272  * @internal
273  * @brief Since the HID call back and event proxy call backs have different prototype it is wrapper function.
274  */
275 void _bt_hid_event_proxy(int event, hid_event_param_t *param, void *user_data);
276
277
278 #ifdef __cplusplus
279 }
280 #endif
281
282 #endif /* __TIZEN_NETWORK_BLUETOOTH_PRIVATE_H__ */