Implement the getter function about the pbap connected status
[platform/core/connectivity/bluetooth-frwk.git] / include / bluetooth-api.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 _BLUETOOTH_API_H_
19 #define _BLUETOOTH_API_H_
20
21 #include <stdlib.h>
22 #include <unistd.h>
23 #include <glib.h>
24
25 #ifdef __cplusplus
26 extern "C" {
27 #endif                          /* __cplusplus */
28
29 /**
30  * @defgroup BLUETOOTHFW BluetoothFW
31  *
32  * A base library for bluetooth framework
33  *
34  * @addtogroup BLUETOOTHFW
35  * @{
36  */
37
38 #define BLUETOOTH_ADDRESS_LENGTH                6 /**< This specifies bluetooth device address length */
39 #define BLUETOOTH_VERSION_LENGTH_MAX            30 /**< This specifies bluetooth device version length */
40 #define BLUETOOTH_INTERFACE_NAME_LENGTH         16
41 #define BLUETOOTH_DEVICE_NAME_LENGTH_MAX        248 /**< This specifies maximum device name length */
42 #define BLUETOOTH_DEVICE_PASSKEY_LENGTH_MAX       50 /**< This specifies maximum length of the passkey */
43 #define BLUETOOTH_ADVERTISING_DATA_LENGTH_MAX   31 /**< This specifies maximum AD data length */
44 #define BLUETOOTH_SCAN_RESP_DATA_LENGTH_MAX     31 /**< This specifies maximum LE Scan response data length */
45 #define BLUETOOTH_MANUFACTURER_DATA_LENGTH_MAX  240 /**< This specifies maximum manufacturer data length */
46
47 #define BLUETOOTH_MAX_SERVICES_FOR_DEVICE       40  /**< This specifies maximum number of services
48                                                         a device can support */
49
50 #define BLUETOOTH_MAX_ATT_MTU   512             /**< This specifies the maximum  ATT MTU Value*/
51
52 #define BLUETOOTH_UUID_STRING_MAX 50
53 #define BLUETOOTH_PATH_STRING 50
54
55 #define BLUETOOTH_OOB_DATA_LENGTH 16
56
57 #define BLUETOOTH_PIN_CODE_MAX_LENGTH 16
58
59 /**
60  * This is Bluetooth Connected event role
61  */
62 #define RFCOMM_ROLE_SERVER 1
63 #define RFCOMM_ROLE_CLIENT 2
64
65 /**
66  * This is RFCOMM default Channel Value
67  */
68 #define RFCOMM_DEFAULT_PROFILE_CHANNEL 0
69
70 /**
71  * This is maximum length for search value string for PBAP Phonebook Search
72  */
73 #define BLUETOOTH_PBAP_MAX_SEARCH_VALUE_LENGTH 100
74
75
76 #define BLUETOOTH_MAX_DPM_LIST 20       /**< This specifies maximum number of devices/uuids
77                                                         dpm shall store */
78
79 /**
80  * This is Bluetooth error code
81  */
82 #define BLUETOOTH_ERROR_BASE                   ((int)0)         /**< Error code base */
83
84 #define BLUETOOTH_ERROR_NONE                   ((int)0)         /**< No error #0 */
85 #define BLUETOOTH_ERROR_CANCEL                 ((int)BLUETOOTH_ERROR_BASE - 0x01)
86                                                                 /**< cancelled */
87 #define BLUETOOTH_ERROR_INVALID_CALLBACK       ((int)BLUETOOTH_ERROR_BASE - 0x02)
88                                                                 /**< Callback error */
89 #define BLUETOOTH_ERROR_INVALID_PARAM          ((int)BLUETOOTH_ERROR_BASE - 0x03)
90                                                                 /**< invalid paramerror */
91 #define BLUETOOTH_ERROR_INVALID_DATA           ((int)BLUETOOTH_ERROR_BASE - 0x04)
92                                                                 /**< invalid data error */
93 #define BLUETOOTH_ERROR_MEMORY_ALLOCATION      ((int)BLUETOOTH_ERROR_BASE - 0x05)
94                                                                 /**< Memory allocation error */
95 #define BLUETOOTH_ERROR_OUT_OF_MEMORY          ((int)BLUETOOTH_ERROR_BASE - 0x06)
96                                                                 /**< out of memory error */
97 #define BLUETOOTH_ERROR_TIMEOUT                ((int)BLUETOOTH_ERROR_BASE - 0x07)
98                                                                 /**< timeout error */
99 #define BLUETOOTH_ERROR_NO_RESOURCES           ((int)BLUETOOTH_ERROR_BASE - 0x08)
100                                                                 /**< No resource error */
101 #define BLUETOOTH_ERROR_INTERNAL               ((int)BLUETOOTH_ERROR_BASE - 0x09)
102                                                                 /**< internal error */
103 #define BLUETOOTH_ERROR_NOT_SUPPORT            ((int)BLUETOOTH_ERROR_BASE - 0x0a)
104                                                                 /**< Not supported error */
105 #define BLUETOOTH_ERROR_DEVICE_NOT_ENABLED     ((int)BLUETOOTH_ERROR_BASE - 0x0b)
106                                                                 /**< Operation is failed because
107                                                                 of not enabled BT Adapter */
108 #define BLUETOOTH_ERROR_DEVICE_ALREADY_ENABLED  ((int)BLUETOOTH_ERROR_BASE - 0x0c)
109                                                                 /**< Enabling is failed because of
110                                                                 already enabled BT Adapter */
111 #define BLUETOOTH_ERROR_DEVICE_BUSY            ((int)BLUETOOTH_ERROR_BASE - 0x0d)
112                                                                 /**< Operation is failed because of
113                                                                 other on going operation */
114 #define BLUETOOTH_ERROR_ACCESS_DENIED          ((int)BLUETOOTH_ERROR_BASE - 0x0e)
115                                                                 /**< access denied error */
116 #define BLUETOOTH_ERROR_MAX_CLIENT             ((int)BLUETOOTH_ERROR_BASE - 0x0f)
117                                                                 /**< max client error */
118 #define BLUETOOTH_ERROR_NOT_FOUND              ((int)BLUETOOTH_ERROR_BASE - 0x10)
119                                                                 /**< not found error */
120 #define BLUETOOTH_ERROR_SERVICE_SEARCH_ERROR   ((int)BLUETOOTH_ERROR_BASE - 0x11)
121                                                                 /**< service search fail */
122 #define BLUETOOTH_ERROR_PARING_FAILED          ((int)BLUETOOTH_ERROR_BASE - 0x12)
123                                                                 /**< pairing failed error */
124 #define BLUETOOTH_ERROR_NOT_PAIRED             ((int)BLUETOOTH_ERROR_BASE - 0x13)
125                                                                 /**< Not paired error */
126 #define BLUETOOTH_ERROR_SERVICE_NOT_FOUND      ((int)BLUETOOTH_ERROR_BASE - 0x14)
127                                                                 /**< no service error */
128 #define BLUETOOTH_ERROR_NOT_CONNECTED          ((int)BLUETOOTH_ERROR_BASE - 0x15)
129                                                                 /**< no connection error */
130 #define BLUETOOTH_ERROR_ALREADY_CONNECT        ((int)BLUETOOTH_ERROR_BASE - 0x16)
131                                                                 /**< alread connected error */
132 #define BLUETOOTH_ERROR_CONNECTION_BUSY        ((int)BLUETOOTH_ERROR_BASE - 0x17)
133                                                                 /**< connection busy error */
134 #define BLUETOOTH_ERROR_CONNECTION_ERROR       ((int)BLUETOOTH_ERROR_BASE - 0x18)
135                                                                 /**< connection error */
136 #define BLUETOOTH_ERROR_MAX_CONNECTION         ((int)BLUETOOTH_ERROR_BASE - 0x19)
137                                                                 /**< max connection error*/
138 #define BLUETOOTH_ERROR_NOT_IN_OPERATION       ((int)BLUETOOTH_ERROR_BASE - 0x1a)
139                                                                 /**< Not in operation */
140 #define BLUETOOTH_ERROR_CANCEL_BY_USER         ((int)BLUETOOTH_ERROR_BASE - 0x1b)
141                                                                 /**< Cancelled by user */
142 #define BLUETOOTH_ERROR_REGISTRATION_FAILED    ((int)BLUETOOTH_ERROR_BASE - 0x1c)
143                                                                 /**< Service record registration failed */
144 #define BLUETOOTH_ERROR_IN_PROGRESS            ((int)BLUETOOTH_ERROR_BASE - 0x1d)
145                                                                 /**< Operation in progress */
146 #define BLUETOOTH_ERROR_AUTHENTICATION_FAILED  ((int)BLUETOOTH_ERROR_BASE - 0x1e)
147                                                                 /**< authentication failed error when paring*/
148 #define BLUETOOTH_ERROR_HOST_DOWN              ((int)BLUETOOTH_ERROR_BASE - 0x1f)
149                                                                 /**< Remote host is down */
150 #define BLUETOOTH_ERROR_END_OF_DEVICE_LIST     ((int)BLUETOOTH_ERROR_BASE - 0x20)
151                                                                 /**< End of device list */
152
153 #define BLUETOOTH_ERROR_AGENT_ALREADY_EXIST      ((int)BLUETOOTH_ERROR_BASE - 0x21)
154                                                                 /**< Obex agent already exists */
155 #define BLUETOOTH_ERROR_AGENT_DOES_NOT_EXIST    ((int)BLUETOOTH_ERROR_BASE - 0x22)
156                                                                 /**< Obex agent does not exist */
157
158 #define BLUETOOTH_ERROR_ALREADY_INITIALIZED    ((int)BLUETOOTH_ERROR_BASE - 0x23)
159                                                                 /**< Already initialized */
160
161 #define BLUETOOTH_ERROR_PERMISSION_DEINED    ((int)BLUETOOTH_ERROR_BASE - 0x24)
162                                                                 /**< Permission deined */
163
164 #define BLUETOOTH_ERROR_ALREADY_DEACTIVATED    ((int)BLUETOOTH_ERROR_BASE - 0x25)
165                                                                 /**< Nap already done */
166
167 #define BLUETOOTH_ERROR_NOT_INITIALIZED    ((int)BLUETOOTH_ERROR_BASE - 0x26)
168                                                                 /**< Not initialized */
169
170 #define BLUETOOTH_ERROR_AUTHENTICATION_REJECTED ((int)BLUETOOTH_ERROR_BASE - 0x27)
171                                                                 /**< Authentication rejected */
172
173 #define BLUETOOTH_ERROR_DEVICE_POLICY_RESTRICTION    ((int)BLUETOOTH_ERROR_BASE - 0x28)
174                                                                 /**< Device Policy Restricted */
175
176 /**
177  * Device disconnection reasons; received from stack
178  */
179 #define BLUETOOTH_ERROR_PAGE_TIMEOUT    0x04
180 #define BLUETOOTH_ERROR_AUTH_FAILURE    0x05
181 #define BLUETOOTH_ERROR_PIN_OR_KEY_MISSING      0x06
182 #define BLUETOOTH_ERROR_CONNECTION_TIMEOUT      0x08
183 #define BLUETOOTH_ERROR_REMOTE_USER_TERM        0x13
184 #define BLUETOOTH_ERROR_REMOTE_LOW_RESOURCES    0x14
185 #define BLUETOOTH_ERROR_REMOTE_POWER_OFF        0x15
186 #define BLUETOOTH_ERROR_LOCAL_HOST_TERM 0x16
187 #define BLUETOOTH_ERROR_REPEATED_ATTEMPTS       0x17
188 #define BLUETOOTH_ERROR_LMP_RESPONSE_TIMEOUT 0x22
189 #define BLUETOOTH_ERROR_CONNECTION_FAILED_TO_BE_ESTABLISHED     0x3e
190
191
192
193 /**
194 * Device disconnect reason
195 */
196 typedef enum {
197         BLUETOOTH_DEVICE_DISCONNECT_UNKNOWN,
198         BLUETOOTH_DEVICE_DISCONNECT_TIMEOUT,
199         BLUETOOTH_DEVICE_DISCONNECT_LOCAL_HOST,
200         BLUETOOTH_DEVICE_DISCONNECT_REMOTE,
201 } bluetooth_device_disconnect_reason_t;
202
203 /**
204  * This is Bluetooth device address type, fixed to 6 bytes ##:##:##:##:##:##
205  */
206 typedef struct {
207         unsigned char addr[BLUETOOTH_ADDRESS_LENGTH];
208 } bluetooth_device_address_t;
209
210 /**
211  * This is Bluetooth device address type
212  */
213 typedef enum {
214         BLUETOOTH_DEVICE_PUBLIC_ADDRESS = 0x00,
215         BLUETOOTH_DEVICE_RANDOM_ADDRESS
216 } bluetooth_device_address_type_t;
217
218 /**
219  * This is Bluetooth version
220  */
221 typedef struct {
222         char version[BLUETOOTH_VERSION_LENGTH_MAX + 1];
223 } bluetooth_version_t;
224
225 /**
226  * This is Bluetooth device name type, maximum size of Bluetooth device name is 248 bytes
227  */
228 typedef struct {
229         char name[BLUETOOTH_DEVICE_NAME_LENGTH_MAX + 1];
230 } bluetooth_device_name_t;
231
232 /**
233  * This is Bluetooth manufacturer specific data, maximum size of data is 240 bytes
234  */
235 typedef struct {
236         int data_len;           /**< manafacturer specific data length */
237         char data[BLUETOOTH_MANUFACTURER_DATA_LENGTH_MAX];
238 } bluetooth_manufacturer_data_t;
239
240 typedef struct {
241         char pin_code[BLUETOOTH_PIN_CODE_MAX_LENGTH + 1];
242 } bluetooth_device_pin_code_t;
243
244 /**
245  * Adapter state
246  */
247 typedef enum {
248         BLUETOOTH_ADAPTER_DISABLED,         /**< Bluetooth adapter is disabled */
249         BLUETOOTH_ADAPTER_ENABLED,          /**< Bluetooth adapter is enabled */
250         BLUETOOTH_ADAPTER_CHANGING_ENABLE,  /**< Bluetooth adapter is currently enabling */
251         BLUETOOTH_ADAPTER_CHANGING_DISABLE, /**< Bluetooth adapter is currently disabling */
252 } bluetooth_adapter_state_t;
253
254 /**
255  * Adapter state
256  */
257 typedef enum {
258         BLUETOOTH_ADAPTER_LE_DISABLED,      /**< Bluetooth adapter le is disabled */
259         BLUETOOTH_ADAPTER_LE_ENABLED,       /**< Bluetooth adapter le is enabled */
260         BLUETOOTH_ADAPTER_LE_CHANGING_ENABLE,  /**< Bluetooth adapter le is currently enabling */
261         BLUETOOTH_ADAPTER_LE_CHANGING_DISABLE, /**< Bluetooth adapter le is currently disabling */
262 } bluetooth_adapter_le_state_t;
263
264 /**
265  * Discoverable mode
266  */
267 typedef enum {
268         BLUETOOTH_DISCOVERABLE_MODE_CONNECTABLE,         /**< Non discoverable mode */
269         /*Changed the order to make it compatable with old method */
270         BLUETOOTH_DISCOVERABLE_MODE_GENERAL_DISCOVERABLE,/**< Discoverable mode */
271         BLUETOOTH_DISCOVERABLE_MODE_TIME_LIMITED_DISCOVERABLE,
272                                                          /**< Discoverable mode with time limit
273                                                         After specific timeout, it is changed
274                                                                 to non discoverable mode */
275 } bluetooth_discoverable_mode_t;
276
277 /**
278  * Network connect mode
279  */
280 typedef enum {
281         BLUETOOTH_NETWORK_PANU_ROLE,
282                                  /**< PAN user */
283         BLUETOOTH_NETWORK_NAP_ROLE,/**< Network Access Point */
284         BLUETOOTH_NETWORK_GN_ROLE,  /**< Group ad-hoc Network */
285         BLUETOOTH_NETWORK_CUSTOM_UUID, /**< Custom role */
286 } bluetooth_network_role_t;
287
288 /**
289  * Service type
290  */
291 typedef enum {
292         BLUETOOTH_RFCOMM_SERVICE = 0x01,
293         BLUETOOTH_A2DP_SERVICE = 0x02,
294         BLUETOOTH_HSP_SERVICE = 0x04,
295         BLUETOOTH_HID_SERVICE = 0x08,
296         BLUETOOTH_NAP_SERVICE = 0x10,
297         BLUETOOTH_HFG_SERVICE = 0x20,
298         BLUETOOTH_GATT_SERVICE = 0x40,
299         BLUETOOTH_NAP_SERVER_SERVICE = 0x80,
300         BLUETOOTH_A2DP_SINK_SERVICE = 0x100,
301         BLUETOOTH_PBAP_SERVICE = 0x200,
302 } bluetooth_service_type_t;
303
304 /**
305  * Service type
306  */
307 typedef enum {
308         BLUETOOTH_DEV_CONN_DEFAULT = 0xFF, /* represents that connection
309                                         * type can both BR/EDR and LE */
310         BLUETOOTH_DEV_CONN_BREDR = 0x00,
311         BLUETOOTH_DEV_CONN_LE = 0x01,
312 } bluetooth_conn_type_t;
313
314 /**
315  * Service type
316  */
317 typedef enum {
318         BLUETOOTH_CODEC_ID_CVSD = 0x01,
319         BLUETOOTH_CODEC_ID_MSBC = 0x02,
320 } bluetooth_codec_type_t;
321
322 /**
323  * Service type
324  */
325 typedef enum {
326         BLUETOOTH_HF_AUDIO_DISCONNECTED = 0x00,
327         BLUETOOTH_HF_AUDIO_CONNECTED = 0x01,
328 } bluetooth_hf_audio_connected_type_t;
329
330 /**
331  * Advertising data
332  */
333 typedef struct {
334         guint8 data[BLUETOOTH_ADVERTISING_DATA_LENGTH_MAX];
335 } bluetooth_advertising_data_t;
336
337 /**
338  * Scan response data
339  */
340 typedef struct {
341         guint8 data[BLUETOOTH_SCAN_RESP_DATA_LENGTH_MAX];
342 } bluetooth_scan_resp_data_t;
343
344 /**
345  * Advertising filter policy
346  */
347 typedef enum {
348         BLUETOOTH_ALLOW_SCAN_CONN_ALL = 0x00,
349         BLUETOOTH_ALLOW_CONN_ALL_SCAN_WHITE_LIST = 0x01,
350         BLUETOOTH_ALLOW_SCAN_ALL_CONN_WHITE_LIST = 0x02,
351         BLUETOOTH_ALLOW_SCAN_CONN_WHITE_LIST = 0x03,
352 } bluetooth_advertising_filter_policy_t;
353
354 /**
355  * Advertising type
356  */
357 typedef enum {
358         BLUETOOTH_ADV_CONNECTABLE = 0x00, /* ADV_IND */
359         BLUETOOTH_ADV_CONNECTABLE_DIRECT_HIGH = 0x01, /* ADV_DIRECT_IND, high duty cycle */
360         BLUETOOTH_ADV_SCANNABLE = 0x02, /* ADV_SCAN_IND */
361         BLUETOOTH_ADV_NON_CONNECTABLE = 0x03, /* ADV_NONCOND_IND */
362         BLUETOOTH_ADV_CONNECTABLE_DIRECT_LOW = 0x04, /* ADV_DIRECT_IND, low duty cycle */
363 } bluetooth_advertising_type_t;
364
365 typedef enum {
366         BLUETOOTH_GATT_SERVICE_CHANGE_TYPE_ADD = 0x01,
367         BLUETOOTH_GATT_SERVICE_CHANGE_TYPE_REMOVE = 0x02,
368 } bluetooth_gatt_service_change_type_t;
369
370 typedef enum {
371         BLUETOOTH_GATT_PERMISSION_READ = 0x01,
372         BLUETOOTH_GATT_PERMISSION_WRITE = 0x02,
373         BLUETOOTH_GATT_PERMISSION_ENCRYPT_READ = 0x04,
374         BLUETOOTH_GATT_PERMISSION_ENCRYPT_WRITE = 0x08,
375         BLUETOOTH_GATT_PERMISSION_ENCRYPT_AUTHENTICATED_READ = 0x10,
376         BLUETOOTH_GATT_PERMISSION_ENCRYPT_AUTHENTICATED_WRITE = 0x20,
377 } bt_gatt_permission_t;
378
379 typedef enum {
380         BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_BROADCAST = 0x01,
381         BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_READ = 0x02,
382         BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_WRITE_NO_RESPONSE = 0x04,
383         BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_WRITE = 0x08,
384         BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_NOTIFY = 0x10,
385         BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_INDICATE = 0x20,
386         BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_SIGNED_WRITE = 0x40,
387         BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_RELIABLE_WRITE = 0x80,
388         BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_WRITABLE_AUXILIARIES = 0x100,
389         BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_ENCRYPT_READ = 0x200,
390         BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_ENCRYPT_WRITE = 0x400,
391         BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_ENCRYPT_AUTHENTICATED_READ = 0x800,
392         BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_ENCRYPT_AUTHENTICATED_WRITE = 0x1000,
393         BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_EXTENDED_PROPS = 0xffff,
394 } bt_gatt_characteristic_property_t;
395
396 /**
397 * Remote device request types for attributes
398 */
399 typedef enum {
400         BLUETOOTH_GATT_ATT_REQUEST_TYPE_READ = 0x00, /* Read Requested*/
401         BLUETOOTH_GATT_ATT_REQUEST_TYPE_WRITE = 0x01, /* Write Requested*/
402 } bluetooth_gatt_att_request_tyep_t;
403
404 /**
405 * Advertising parameters
406 */
407 typedef struct {
408         float interval_min;
409         float interval_max;
410         guint8 filter_policy;
411         guint8 type;
412 } bluetooth_advertising_params_t;
413
414 /**
415 * LE Scan parameters
416 */
417 typedef struct {
418         int type;  /**< passive 0, active 1 */
419         float interval;  /**< LE scan interval */
420         float window;  /**< LE scan window */
421 } bluetooth_le_scan_params_t;
422
423 /*
424         LE Connection Update
425  */
426 typedef struct {
427         float interval_min;
428         float interval_max;
429         guint16 latency;
430         guint16 timeout;
431 } bluetooth_le_connection_param_t;
432
433 /*
434         LE Read Maximum Data Length
435  */
436 typedef struct {
437         guint16 max_tx_octets;
438         guint16 max_tx_time;
439         guint16 max_rx_octets;
440         guint16 max_rx_time;
441 } bluetooth_le_read_maximum_data_length_t;
442
443 /*
444         LE Read Host suggested default Data Length
445  */
446 typedef struct {
447         guint16 def_tx_octets;
448         guint16 def_tx_time;
449 } bluetooth_le_read_host_suggested_data_length_t;
450
451 /**
452  * Samsung XSAT Vendor dependent command
453  */
454 typedef struct {
455         gint app_id;
456         char *message;
457 } bluetooth_vendor_dep_at_cmd_t;
458
459 /**
460  * Transfer Types
461  */
462 typedef enum {
463         BLUETOOTH_TRANSFER_INBOUND,         /**< Inbound Transfer Type */
464         BLUETOOTH_TRANSFER_OUTBOUND,        /**< Outbound Transfer Type */
465 } bluetooth_opp_transfer_type_t;
466
467 typedef struct {
468         gint event;
469         gint value;
470 } bluetooth_hf_ciev_device_event_t;
471
472 #define BLUETOOTH_EVENT_BASE            ((int)(0x0000))         /**< No event */
473 #define BLUETOOTH_EVENT_GAP_BASE        ((int)(BLUETOOTH_EVENT_BASE + 0x0010))
474                                                                 /**< Base ID for GAP Event */
475 #define BLUETOOTH_EVENT_SDP_BASE        ((int)(BLUETOOTH_EVENT_GAP_BASE + 0x0020))
476                                                                 /**< Base ID for SDP events */
477 #define BLUETOOTH_EVENT_RFCOMM_BASE     ((int)(BLUETOOTH_EVENT_SDP_BASE + 0x0020))
478                                                                 /**< Base ID for RFCOMM events */
479 #define BLUETOOTH_EVENT_NETWORK_BASE     ((int)(BLUETOOTH_EVENT_RFCOMM_BASE + 0x0020))
480                                                                 /**< Base ID for NETWORK events */
481 #define BLUETOOTH_EVENT_HDP_BASE     ((int)(BLUETOOTH_EVENT_NETWORK_BASE + 0x0020))
482                                                                 /**< Base ID for HDP events */
483 #define BLUETOOTH_EVENT_OPC_BASE  ((int)(BLUETOOTH_EVENT_HDP_BASE + 0x0020))
484                                                                 /**< Base ID for OPC events */
485 #define BLUETOOTH_EVENT_OBEX_SERVER_BASE ((int)(BLUETOOTH_EVENT_OPC_BASE + 0x0020))
486                                                                 /**< Base ID for Obex Server events */
487 #define BLUETOOTH_EVENT_GATT_BASE ((int)(BLUETOOTH_EVENT_OBEX_SERVER_BASE + 0x0020))
488                                                                 /**< Base ID for GATT events */
489
490 #define BLUETOOTH_EVENT_AUDIO_BASE ((int)(BLUETOOTH_EVENT_GATT_BASE + 0x0020))
491                                                                 /**< Base ID for Audio events */
492 #define BLUETOOTH_EVENT_HID_BASE ((int)(BLUETOOTH_EVENT_AUDIO_BASE + 0x0030))
493                                                                 /**< Base ID for HID events */
494 #define BLUETOOTH_EVENT_ADVERTISING_BASE ((int)(BLUETOOTH_EVENT_HID_BASE + 0x0020))
495                                                                 /**< Base ID for Advertising events */
496 #define BLUETOOTH_EVENT_PBAP_CLIENT_BASE ((int)(BLUETOOTH_EVENT_ADVERTISING_BASE + 0x0020))
497                                                                 /**< Base ID for PBAP Client events */
498 #define BLUETOOTH_EVENT_AVRCP_CONTROL_BASE ((int)(BLUETOOTH_EVENT_PBAP_CLIENT_BASE + 0x0020))
499                                                                 /**< Base ID for AVRCP events */
500 #define BLUETOOTH_EVENT_IPSP_BASE ((int)(BLUETOOTH_EVENT_AVRCP_CONTROL_BASE + 0x0020))
501                                                                 /**< Base ID for IPSP events */
502
503 /**
504  * Bluetooth event type
505  */
506 typedef enum {
507         BLUETOOTH_EVENT_NONE = BLUETOOTH_EVENT_BASE,/**< No event */
508
509         BLUETOOTH_EVENT_ENABLED,                    /**< Bluetooth event adpater enabled */
510         BLUETOOTH_EVENT_DISABLED,                   /**< Bluetooth event adpater disabled */
511         BLUETOOTH_EVENT_LE_ENABLED,                 /**< Bluetooth event adpater enabled */
512         BLUETOOTH_EVENT_LE_DISABLED,                /**< Bluetooth event adpater disabled */
513         BLUETOOTH_EVENT_LOCAL_NAME_CHANGED,         /**< Bluetooth event local name changed*/
514         BLUETOOTH_EVENT_DISCOVERABLE_TIMEOUT_REQUESTED,
515                                         /**< Bluetooth event Discoverable timeout requested*/
516         BLUETOOTH_EVENT_DISCOVERABLE_MODE_CHANGED,  /**< Bluetooth event mode changed */
517         BLUETOOTH_EVENT_DISCOVERY_OPTION_REQUESTED, /**< Bluetooth event discovery option */
518         BLUETOOTH_EVENT_DISCOVERY_STARTED,          /**< Bluetooth event discovery started */
519         BLUETOOTH_EVENT_DISCOVERY_FINISHED,         /**< Bluetooth event discovery finished */
520         BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND,        /**< Bluetooth event remote deice found */
521         BLUETOOTH_EVENT_LE_DISCOVERY_STARTED,           /**< Bluetooth event LE discovery started */
522         BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED,  /**< Bluetooth event LE discovery finished */
523         BLUETOOTH_EVENT_REMOTE_LE_DEVICE_FOUND,     /**< Bluetooth event remote deice found (LE dev) */
524         BLUETOOTH_EVENT_REMOTE_DEVICE_NAME_UPDATED,/**< Bluetooth event remote device name updated*/
525         BLUETOOTH_EVENT_BONDING_FINISHED,           /**< Bluetooth event bonding completed */
526         BLUETOOTH_EVENT_BONDED_DEVICE_REMOVED,      /**< Bluetooth event bonding removed */
527         BLUETOOTH_EVENT_BONDED_DEVICE_FOUND,        /**< Bluetooth event paired device found */
528         BLUETOOTH_EVENT_REMOTE_DEVICE_READ,         /**< Bluetooth event read remote device */
529         BLUETOOTH_EVENT_DEVICE_AUTHORIZED,          /**< Bluetooth event authorize device */
530         BLUETOOTH_EVENT_DEVICE_UNAUTHORIZED,        /**< Bluetooth event unauthorize device */
531         BLUETOOTH_EVENT_DISCOVERABLE_TIMEOUT_CHANGED,  /**< Bluetooth event mode changed */
532         BLUETOOTH_EVENT_KEYBOARD_PASSKEY_DISPLAY,       /**Bluetooth event for displaying keyboard  passkey to user*/
533         BLUETOOTH_EVENT_PIN_REQUEST,    /**Bluetooth event for PIN input by user*/
534         BLUETOOTH_EVENT_PASSKEY_REQUEST,        /**Bluetooth event for entering Passkey by user*/
535         BLUETOOTH_EVENT_PASSKEY_CONFIRM_REQUEST,        /**Bluetooth event for Passkey confirmation by user*/
536         BLUETOOTH_EVENT_CONNECTABLE_CHANGED,        /**< Bluetooth event connectable changed */
537
538         BLUETOOTH_EVENT_RSSI_ENABLED,           /**< Bluetooth event RSSI monitoring enabled */
539         BLUETOOTH_EVENT_RSSI_ALERT,                             /**< Bluetooth event RSSI Alert */
540         BLUETOOTH_EVENT_RAW_RSSI,                               /**< Bluetooth event Raw RSSI */
541         BLUETOOTH_EVENT_SUPPORTED_PROFILE_TRUSTED,      /**< Bluetooth event Supported Profile Trusted */
542         BLUETOOTH_EVENT_PASSKEY_NOTIFICATION,       /**< Bluetooth event passkey notification */
543
544         BLUETOOTH_EVENT_SERVICE_SEARCHED = BLUETOOTH_EVENT_SDP_BASE,
545                                                     /**< Bluetooth event serice search base id */
546         BLUETOOTH_EVENT_SERVICE_SEARCH_CANCELLED,   /**< Bluetooth event service search cancelled */
547         BLUETOOTH_EVENT_RFCOMM_DATA_RECEIVED = BLUETOOTH_EVENT_RFCOMM_BASE,
548                                                         /**< RFCOMM data receive event */
549         BLUETOOTH_EVENT_RFCOMM_CONNECTED,               /**< Rfcomm server incomming connection */
550         BLUETOOTH_EVENT_RFCOMM_DISCONNECTED,            /**< Rfcomm server/client disconnect */
551
552         BLUETOOTH_EVENT_RFCOMM_AUTHORIZE,
553
554         BLUETOOTH_EVENT_DEVICE_CONNECTED,           /**< Bluetooth event device connected */
555         BLUETOOTH_EVENT_DEVICE_DISCONNECTED,        /**< Bluetooth event device disconnected */
556
557         BLUETOOTH_EVENT_RFCOMM_SERVER_REMOVED,
558
559         BLUETOOTH_EVENT_NETWORK_SERVER_ACTIVATED = BLUETOOTH_EVENT_NETWORK_BASE,
560                                                                 /**< Bluetooth Network event */
561         BLUETOOTH_EVENT_NETWORK_SERVER_DEACTIVATED, /**< Network server deactivated */
562         BLUETOOTH_EVENT_NETWORK_SERVER_CONNECTED,     /**< Network connected event in server */
563         BLUETOOTH_EVENT_NETWORK_SERVER_DISCONNECTED,
564                                                    /**< Network disconnected evnet in server */
565
566         BLUETOOTH_EVENT_NETWORK_CONNECTED,              /**< Network connected event in client*/
567         BLUETOOTH_EVENT_NETWORK_DISCONNECTED,           /**< Network disconnected evnet in client*/
568
569         BLUETOOTH_EVENT_HDP_CONNECTED
570                         = BLUETOOTH_EVENT_HDP_BASE,                /**<HDP Connect>*/
571         BLUETOOTH_EVENT_HDP_DISCONNECTED,          /**<HDP Disconnect>*/
572         BLUETOOTH_EVENT_HDP_DATA_RECEIVED,         /**<HDP Data Indication>*/
573
574         BLUETOOTH_EVENT_OPC_CONNECTED = BLUETOOTH_EVENT_OPC_BASE,
575                                                                 /* OPC Connected event */
576         BLUETOOTH_EVENT_OPC_DISCONNECTED,               /* OPC Disonnected event */
577         BLUETOOTH_EVENT_OPC_TRANSFER_STARTED,   /* OPC Transfer started event */
578         BLUETOOTH_EVENT_OPC_TRANSFER_PROGRESS,  /* OPC Transfer progress event */
579         BLUETOOTH_EVENT_OPC_TRANSFER_COMPLETE,  /* OPC Transfer Complete event */
580
581         BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_AUTHORIZE = BLUETOOTH_EVENT_OBEX_SERVER_BASE,
582                                                                 /* Obex server authorize event*/
583         BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_STARTED,   /* Obex Server transfer started event*/
584         BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_PROGRESS,/* Obex Server transfer progress event*/
585         BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_COMPLETED,/* Obex Server transfer complete event*/
586         BLUETOOTH_EVENT_OBEX_SERVER_CONNECTION_AUTHORIZE,
587         BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_CONNECTED, /* Obex Transfer connected event */
588         BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_DISCONNECTED, /* Obex Transfer disconnected event */
589
590         BLUETOOTH_EVENT_GATT_SVC_CHAR_DISCOVERED = BLUETOOTH_EVENT_GATT_BASE,
591                                 /**<Discovered GATT service characteristics event*/
592         BLUETOOTH_EVENT_GATT_CHAR_VAL_CHANGED,
593                                 /**<Remote GATT charateristic value changed event*/
594         BLUETOOTH_EVENT_GATT_GET_CHAR_FROM_UUID,
595         BLUETOOTH_EVENT_GATT_READ_CHAR, /**<Gatt Read Characteristic Value */
596         BLUETOOTH_EVENT_GATT_WRITE_CHAR, /**<Gatt Write Characteristic Value */
597         BLUETOOTH_EVENT_GATT_READ_DESC, /**<Gatt Read Characteristic Descriptor Value */
598         BLUETOOTH_EVENT_GATT_WRITE_DESC, /**<Gatt Write Characteristic Descriptor Value */
599         BLUETOOTH_EVENT_GATT_SVC_CHAR_DESC_DISCOVERED, /**<Gatt Char Descriptors Discovered Event*/
600         BLUETOOTH_EVENT_GATT_CONNECTED,/**<Gatt connected event */
601         BLUETOOTH_EVENT_GATT_DISCONNECTED, /**<Gatt Disconnected event */
602         BLUETOOTH_EVENT_GATT_ATT_MTU_CHANGED, /**<Attribute protocol MTU changed event */
603         BLUETOOTH_EVENT_GATT_SERVER_CHARACTERISTIC_VALUE_CHANGED, /**<Gatt Char write callback event */
604         BLUETOOTH_EVENT_GATT_SERVER_READ_REQUESTED, /** <GATT Characteristic/Descriptor Read Request event */
605         BLUETOOTH_EVENT_GATT_SERVER_VALUE_CHANGED, /** <GATT Characteristic/Descriptor Value change event */
606         BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_STATE_CHANGED, /** <GATT Characteristic Notification change event */
607         BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_COMPLETED, /** <GATT Characteristic Notification or Indication completed event */
608         BLUETOOTH_EVENT_GATT_CLIENT_SERVICE_CHANGED, /** <GATT Client service change event */
609
610         BLUETOOTH_EVENT_AG_CONNECTED = BLUETOOTH_EVENT_AUDIO_BASE, /**<AG service connected event*/
611         BLUETOOTH_EVENT_AG_DISCONNECTED, /**<AG service disconnected event*/
612         BLUETOOTH_EVENT_AG_SPEAKER_GAIN, /**<Speaker gain request event*/
613         BLUETOOTH_EVENT_AG_MIC_GAIN, /**<Mic gain request event*/
614         BLUETOOTH_EVENT_AG_AUDIO_CONNECTED, /**<AV & AG service connected event*/
615         BLUETOOTH_EVENT_AG_AUDIO_DISCONNECTED,  /**<AV & AG service disconnected event*/
616         BLUETOOTH_EVENT_AV_CONNECTED, /**<AV service connected event*/
617         BLUETOOTH_EVENT_AV_DISCONNECTED, /**<AV service disconnected event*/
618         BLUETOOTH_EVENT_AV_SOURCE_CONNECTED, /**<AV Source device connected event */
619         BLUETOOTH_EVENT_AV_SOURCE_DISCONNECTED, /**<AV Source device disconnected event */
620         BLUETOOTH_EVENT_AVRCP_CONNECTED, /**<AVRCP service connected event*/
621         BLUETOOTH_EVENT_AVRCP_DISCONNECTED, /**<AVRCP service disconnected event*/
622         BLUETOOTH_EVENT_AVRCP_SETTING_SHUFFLE_STATUS, /**<AVRCP service player suffle  status event*/
623         BLUETOOTH_EVENT_AVRCP_SETTING_EQUALIZER_STATUS, /**<AVRCP service player equalizer status event*/
624         BLUETOOTH_EVENT_AVRCP_SETTING_REPEAT_STATUS, /**<AVRCP service player repeat status event*/
625         BLUETOOTH_EVENT_AVRCP_SETTING_SCAN_STATUS, /**<AVRCP service player scan status event*/
626         BLUETOOTH_EVENT_HF_CONNECTED,
627         BLUETOOTH_EVENT_HF_DISCONNECTED,
628         BLUETOOTH_EVENT_HF_AUDIO_CONNECTED,
629         BLUETOOTH_EVENT_HF_AUDIO_DISCONNECTED,
630         BLUETOOTH_EVENT_HF_RING_INDICATOR,
631         BLUETOOTH_EVENT_HF_CALL_WAITING,
632         BLUETOOTH_EVENT_HF_CALL_TERMINATED,
633         BLUETOOTH_EVENT_HF_CALL_STARTED,
634         BLUETOOTH_EVENT_HF_CALL_ENDED,
635         BLUETOOTH_EVENT_HF_CALL_UNHOLD,
636         BLUETOOTH_EVENT_HF_CALL_SWAPPED,
637         BLUETOOTH_EVENT_HF_CALL_ON_HOLD,
638         BLUETOOTH_EVENT_HF_CALL_STATUS,
639         BLUETOOTH_EVENT_HF_VOICE_RECOGNITION_ENABLED,
640         BLUETOOTH_EVENT_HF_VOICE_RECOGNITION_DISABLED,
641         BLUETOOTH_EVENT_HF_VOLUME_SPEAKER,
642         BLUETOOTH_EVENT_HF_VENDOR_DEP_CMD,
643         BLUETOOTH_EVENT_HF_CALLSETUP_INCOMING,
644         BLUETOOTH_EVENT_HF_CALL_FAILED_TO_DIAL,
645         BLUETOOTH_EVENT_HF_CALL_IDLE,
646         BLUETOOTH_EVENT_HF_CALLSETUP_DIALING,
647         BLUETOOTH_EVENT_HF_CALLSETUP_ALERTING,
648         BLUETOOTH_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED,
649
650         BLUETOOTH_HID_CONNECTED = BLUETOOTH_EVENT_HID_BASE, /**< Input connectd event*/
651         BLUETOOTH_HID_DISCONNECTED, /**< Input disconnectd event*/
652         BLUETOOTH_HID_DEVICE_CONNECTED, /**< HID Device connected event*/
653         BLUETOOTH_HID_DEVICE_DISCONNECTED, /**< HID Device disconnected event*/
654         BLUETOOTH_HID_DEVICE_DATA_RECEIVED, /**< HID Device data received event*/
655
656         BLUETOOTH_EVENT_ADVERTISING_STARTED = BLUETOOTH_EVENT_ADVERTISING_BASE, /**< Advertising started event */
657         BLUETOOTH_EVENT_ADVERTISING_STOPPED, /**< Advertising stopped event */
658         BLUETOOTH_EVENT_ADVERTISING_MANUFACTURER_DATA_CHANGED, /**< Advertising manufacturer data changed event */
659         BLUETOOTH_EVENT_SCAN_RESPONSE_MANUFACTURER_DATA_CHANGED, /**< Scan response manufacturer data changed event */
660         BLUETOOTH_EVENT_MANUFACTURER_DATA_CHANGED, /**< Manufacturer data changed event */
661         BLUETOOTH_EVENT_DEVICE_ERROR, /**< Hardware error */
662         BLUETOOTH_EVENT_TX_TIMEOUT_ERROR, /** TX Timeout Error*/
663         BLUETOOTH_EVENT_MAX, /**< Bluetooth event Max value */
664
665         BLUETOOTH_PBAP_CONNECTED = BLUETOOTH_EVENT_PBAP_CLIENT_BASE, /**< PBAP connected event*/
666         BLUETOOTH_PBAP_DISCONNECTED, /**< PBAP disconnectd event*/
667         BLUETOOTH_PBAP_PHONEBOOK_SIZE, /**< PBAP Phonebook Size event*/
668         BLUETOOTH_PBAP_PHONEBOOK_PULL, /**< PBAP Phonebook Pull event*/
669         BLUETOOTH_PBAP_VCARD_LIST, /**< PBAP vCard List event*/
670         BLUETOOTH_PBAP_VCARD_PULL, /**< PBAP vCard Pull event*/
671         BLUETOOTH_PBAP_PHONEBOOK_SEARCH, /**< PBAP Phonebook Search event*/
672
673         BLUETOOTH_EVENT_AVRCP_CONTROL_CONNECTED = BLUETOOTH_EVENT_AVRCP_CONTROL_BASE, /**<AVRCP service connected event*/
674         BLUETOOTH_EVENT_AVRCP_CONTROL_DISCONNECTED, /**<AVRCP service disconnected event*/
675         BLUETOOTH_EVENT_AVRCP_CONTROL_SHUFFLE_STATUS, /**<AVRCP control suffle  status event*/
676         BLUETOOTH_EVENT_AVRCP_CONTROL_EQUALIZER_STATUS, /**<AVRCP control equalizer status event*/
677         BLUETOOTH_EVENT_AVRCP_CONTROL_REPEAT_STATUS, /**<AVRCP control repeat status event*/
678         BLUETOOTH_EVENT_AVRCP_CONTROL_SCAN_STATUS, /**<AVRCP control scan status event*/
679         BLUETOOTH_EVENT_AVRCP_SONG_POSITION_STATUS, /**<AVRCP control play Postion status event*/
680         BLUETOOTH_EVENT_AVRCP_PLAY_STATUS_CHANGED, /**<AVRCP control play status event*/
681         BLUETOOTH_EVENT_AVRCP_TRACK_CHANGED, /**<AVRCP control song metadata event*/
682
683         BLUETOOTH_EVENT_IPSP_INIT_STATE_CHANGED = BLUETOOTH_EVENT_IPSP_BASE, /**<IPSP init event*/
684         BLUETOOTH_EVENT_IPSP_CONNECTED, /**< IPSP connected event  */
685         BLUETOOTH_EVENT_IPSP_DISCONNECTED, /**< IPSP Disconnected event */
686         BLUETOOTH_EVENT_IPSP_INTERFACE_INFO, /** IPSP BT Interface Info after connection */
687         BLUETOOTH_EVENT_LE_DATA_LENGTH_CHANGED,  /** LE data length values changed */
688 } bluetooth_event_type_t;
689
690  /**
691  * This bt_service_uuid_list_t  enum  indicates service uuid list .
692  * This values is stored the service_list_array in bt_sdp_info_t and bluetooth_device_info_t.
693  */
694
695 typedef enum {
696         BLUETOOTH_SPP_PROFILE_UUID = ((unsigned short)0x1101),                  /**<SPP*/
697         BLUETOOTH_LAP_PROFILE_UUID = ((unsigned short)0x1102),                  /**<LAP*/
698         BLUETOOTH_DUN_PROFILE_UUID = ((unsigned short)0x1103),                  /**<DUN*/
699         BLUETOOTH_OBEX_IR_MC_SYNC_SERVICE_UUID = ((unsigned short)0x1104),      /**<OBEX IR MC SYNC*/
700         BLUETOOTH_OBEX_OBJECT_PUSH_SERVICE_UUID = ((unsigned short)0x1105),     /**<OPP*/
701         BLUETOOTH_OBEX_FILE_TRANSFER_UUID = ((unsigned short)0x1106),           /**<FTP*/
702         BLUETOOTH_IRMC_SYNC_COMMAND_UUID = ((unsigned short)0x1107),            /**<IRMC SYNC COMMAND*/
703         BLUETOOTH_HS_PROFILE_UUID = ((unsigned short)0x1108),                   /**<HS*/
704         BLUETOOTH_CTP_PROFILE_UUID = ((unsigned short)0x1109),                  /**<CTP*/
705         BLUETOOTH_AUDIO_SOURCE_UUID = ((unsigned short)0x110A),                 /**<AUDIO SOURCE*/
706         BLUETOOTH_AUDIO_SINK_UUID = ((unsigned short)0x110B),                   /**<AUDIO SINK*/
707         BLUETOOTH_AV_REMOTE_CONTROL_TARGET_UUID = ((unsigned short)0x110C),     /**<AV REMOTE CONTROL
708                                                                                 TARGET*/
709         BLUETOOTH_ADVANCED_AUDIO_PROFILE_UUID = ((unsigned short)0x110D),       /**<A2DP*/
710         BLUETOOTH_AV_REMOTE_CONTROL_UUID = ((unsigned short)0x110E),            /**<AV REMOTE CONTROL UUID*/
711         BLUETOOTH_AV_REMOTE_CONTROL_CONTROLLER_UUID = ((unsigned short)0x110F), /**<AV REMOTE CONTROLLER UUID*/
712         BLUETOOTH_ICP_PROFILE_UUID = ((unsigned short)0x1110),                  /**<ICP*/
713         BLUETOOTH_FAX_PROFILE_UUID = ((unsigned short)0x1111),                  /**<FAX*/
714         BLUETOOTH_HEADSET_AG_SERVICE_UUID = ((unsigned short)0x1112),           /**<HS AG */
715         BLUETOOTH_PAN_PANU_PROFILE_UUID = ((unsigned short)0x1115),             /**<PAN*/
716         BLUETOOTH_PAN_NAP_PROFILE_UUID = ((unsigned short)0x1116),              /**<PAN*/
717         BLUETOOTH_PAN_GN_PROFILE_UUID = ((unsigned short)0x1117),               /**<PAN*/
718         BLUETOOTH_DIRECT_PRINTING = ((unsigned short)0x1118),
719         BLUETOOTH_OBEX_BPPS_PROFILE_UUID = ((unsigned short)0x1118),            /**<OBEX BPPS*/ /* Will be removed */
720         BLUETOOTH_REFERENCE_PRINTING = ((unsigned short)0x1119),
721         BLUETOOTH_OBEX_IMAGING_UUID = ((unsigned short)0x111A),                 /**<OBEX_IMAGING*/
722         BLUETOOTH_OBEX_IMAGING_RESPONDER_UUID = ((unsigned short)0x111B),       /**<OBEX_IMAGING
723                                                                                 RESPONDER*/
724         BLUETOOTH_IMAGING_AUTOMATIC_ARCHIVE_UUID = ((unsigned short)0x111C),    /**<IMAGING AUTOMATIC ARCHIVE*/
725         BLUETOOTH_IMAGING_REFERENCED_OBJECTS_UUID = ((unsigned short)0x111D),   /**<IMAGING REFERENCED OBJECTS*/
726         BLUETOOTH_HF_PROFILE_UUID = ((unsigned short)0x111E),                   /**<HF*/
727         BLUETOOTH_HFG_PROFILE_UUID = ((unsigned short)0x111F),                  /**<HFG*/
728         BLUETOOTH_DIRECT_PRINTING_REFERENCE_OBJ_UUID = ((unsigned short)0x1120),
729                                                                         /**<DIRECT PRINTING*/
730         BLUETOOTH_REFLECTED_UI = ((unsigned short)0x1121),              /**<REFLECTED UI*/
731         BLUETOOTH_BASIC_PRINTING = ((unsigned short)0x1122),            /**<BASIC PRINTING*/
732         BLUETOOTH_PRINTING_STATUS = ((unsigned short)0x1123),           /**<PRINTING  STATUS*/
733         BLUETOOTH_OBEX_PRINTING_STATUS_UUID = ((unsigned short)0x1123), /**<OBEX PRINTING STATUS*/ /* Will be removed */
734         BLUETOOTH_HID_PROFILE_UUID = ((unsigned short)0x1124),          /**<HID*/
735         BLUETOOTH_HCR_PROFILE_UUID = ((unsigned short)0x1125),          /**<HCRP*/
736         BLUETOOTH_HCR_PRINT_UUID = ((unsigned short)0x1126),            /**<HCR PRINT*/
737         BLUETOOTH_HCR_SCAN_UUID = ((unsigned short)0x1127),             /**<HCR SCAN*/
738         BLUETOOTH_SIM_ACCESS_PROFILE_UUID = ((unsigned short)0x112D),   /**<SIM ACCESS PROFILE*/
739         BLUETOOTH_PBAP_PCE_UUID = ((unsigned short)0x112E),             /**<PBAP - PCE*/
740         BLUETOOTH_PBAP_PSE_UUID = ((unsigned short)0x112F),             /**<OBEX PBA*/
741         BLUETOOTH_OBEX_PBA_PROFILE_UUID = ((unsigned short)0x112F),     /**<OBEX PBA*/ /* Will be removed */
742         BLUETOOTH_OBEX_PBAP_UUID = ((unsigned short)0x1130),            /**<OBEX PBA*/
743         BLUETOOTH_HEADSET_HS_UUID = ((unsigned short)0x1131),           /**<HEADSET HS*/
744         BLUETOOTH_MESSAGE_ACCESS_SERVER_UUID = ((unsigned short)0x1132),/**<MESSAGE ACCESS SERVER*/
745         BLUETOOTH_MESSAGE_NOTIFICATION_SERVER_UUID = ((unsigned short)0x1133),/**<MESSAGE NOTIFICATION SERVER*/
746         BLUETOOTH_MESSAGE_ACCESS_PROFILE_UUID = ((unsigned short)0x1134),/**<MESSAGE ACCESS PROFILE*/
747         BLUETOOTH_PNP_INFORMATION_UUID = ((unsigned short)0x1200),      /**<PNP*/
748         BLUETOOTH_GENERIC_NETWORKING_UUID = ((unsigned short)0x1201),   /**<GENERIC NETWORKING*/
749         BLUETOOTH_GENERIC_FILE_TRANSFER_UUID = ((unsigned short)0x1202),/**<GENERIC FILE TRANSFER*/
750         BLUETOOTH_GENERIC_AUDIO_UUID = ((unsigned short)0x1203),        /**<GENERIC AUDIO*/
751         BLUETOOTH_GENERIC_TELEPHONY_UUID = ((unsigned short)0x1204),    /**<GENERIC TELEPHONY*/
752         BLUETOOTH_VIDEO_SOURCE_UUID = ((unsigned short)0x1303),         /**<VEDIO SOURCE*/
753         BLUETOOTH_VIDEO_SINK_UUID = ((unsigned short)0x1304),           /**<VEDIO SINK*/
754         BLUETOOTH_VIDEO_DISTRIBUTION_UUID = ((unsigned short)0x1305),   /**<VEDIO DISTRIBUTION*/
755         BLUETOOTH_HDP_UUID = ((unsigned short)0x1400),                  /**<HDP*/
756         BLUETOOTH_HDP_SOURCE_UUID = ((unsigned short)0x1401),           /**<HDP SOURCE*/
757         BLUETOOTH_HDP_SINK_UUID = ((unsigned short)0x1402),             /**<HDP SINK*/
758         BLUETOOTH_OBEX_SYNCML_TRANSFER_UUID = ((unsigned short)0x0000)  /**<OBEX_SYNC*/ /* Will be removed */
759 } bluetooth_service_uuid_list_t;
760
761 /**
762 * Service class part of class of device returned from device discovery
763 */
764 typedef enum {
765         BLUETOOTH_DEVICE_SERVICE_CLASS_LIMITED_DISCOVERABLE_MODE = 0x002000,
766         BLUETOOTH_DEVICE_SERVICE_CLASS_POSITIONING = 0x010000,                  /**<  */
767         BLUETOOTH_DEVICE_SERVICE_CLASS_NETWORKING = 0x020000,                   /**<  */
768         BLUETOOTH_DEVICE_SERVICE_CLASS_RENDERING = 0x040000,                    /**<  */
769         BLUETOOTH_DEVICE_SERVICE_CLASS_CAPTURING = 0x080000,                    /**<  */
770         BLUETOOTH_DEVICE_SERVICE_CLASS_OBJECT_TRANSFER = 0x100000,              /**<  */
771         BLUETOOTH_DEVICE_SERVICE_CLASS_AUDIO = 0x200000,                        /**<  */
772         BLUETOOTH_DEVICE_SERVICE_CLASS_TELEPHONY = 0x400000,                    /**<  */
773         BLUETOOTH_DEVICE_SERVICE_CLASS_INFORMATION = 0x800000,                  /**<  */
774 } bluetooth_device_service_class_t;
775
776
777 /**
778  * Major device mask (For device discovery)
779  */
780 typedef enum {
781         BLUETOOTH_DEVICE_MAJOR_MASK_MISC = 0x00,
782         BLUETOOTH_DEVICE_MAJOR_MASK_COMPUTER = 0x0001,
783         BLUETOOTH_DEVICE_MAJOR_MASK_PHONE = 0x0002,
784         BLUETOOTH_DEVICE_MAJOR_MASK_LAN_ACCESS_POINT = 0x0004,
785         BLUETOOTH_DEVICE_MAJOR_MASK_AUDIO = 0x0008,
786         BLUETOOTH_DEVICE_MAJOR_MASK_PERIPHERAL = 0x0010,
787         BLUETOOTH_DEVICE_MAJOR_MASK_IMAGING = 0x0020,
788         BLUETOOTH_DEVICE_MAJOR_MASK_WEARABLE = 0x0040,
789         BLUETOOTH_DEVICE_MAJOR_MASK_TOY = 0x0080,
790         BLUETOOTH_DEVICE_MAJOR_MASK_HEALTH = 0x0100,
791 } bluetooth_device_major_mask_t;
792
793
794 /**
795  * Major device class (part of Class of Device)
796  */
797 typedef enum {
798         BLUETOOTH_DEVICE_MAJOR_CLASS_MISC = 0x00,       /**< Miscellaneous major device class*/
799         BLUETOOTH_DEVICE_MAJOR_CLASS_COMPUTER = 0x01,           /**< Computer major device class*/
800         BLUETOOTH_DEVICE_MAJOR_CLASS_PHONE = 0x02,              /**< Phone major device class*/
801         BLUETOOTH_DEVICE_MAJOR_CLASS_LAN_ACCESS_POINT = 0x03,   /**< LAN major device class*/
802         BLUETOOTH_DEVICE_MAJOR_CLASS_AUDIO = 0x04,              /**< AUDIO major device class*/
803         BLUETOOTH_DEVICE_MAJOR_CLASS_PERIPHERAL = 0x05,         /**< Peripheral major device class*/
804         BLUETOOTH_DEVICE_MAJOR_CLASS_IMAGING = 0x06,            /**< Imaging major device class*/
805         BLUETOOTH_DEVICE_MAJOR_CLASS_WEARABLE = 0x07,           /**< Wearable device class*/
806         BLUETOOTH_DEVICE_MAJOR_CLASS_TOY = 0x08,                /**< Toy device class*/
807         BLUETOOTH_DEVICE_MAJOR_CLASS_HEALTH = 0x09,             /**< Health device class*/
808         BLUETOOTH_DEVICE_MAJOR_CLASS_UNCLASSIFIED = 0x1F        /**< Unknown major device class*/
809 } bluetooth_device_major_class_t;
810
811 typedef enum {
812         BLUETOOTH_DEVICE_MINOR_CLASS_UNCLASSIFIED = 0x00,       /**< unclassified minor class */
813
814         /* About Computer Major class */
815         BLUETOOTH_DEVICE_MINOR_CLASS_DESKTOP_WORKSTATION = 0x04,        /**< desktop workstation
816                                                                         minor class */
817         BLUETOOTH_DEVICE_MINOR_CLASS_SERVER_CLASS_COMPUTER = 0x08,      /**< server minor class */
818         BLUETOOTH_DEVICE_MINOR_CLASS_LAPTOP = 0x0C,                     /**< laptop minor class */
819         BLUETOOTH_DEVICE_MINOR_CLASS_HANDHELD_PC_OR_PDA = 0x10,         /**< PDA minor class */
820         BLUETOOTH_DEVICE_MINOR_CLASS_PALM_SIZED_PC_OR_PDA = 0x14,       /**< PALM minor class */
821         BLUETOOTH_DEVICE_MINOR_CLASS_WEARABLE_COMPUTER = 0x18,  /**< Wearable PC minor class */
822
823         /* About Phone Major class */
824         BLUETOOTH_DEVICE_MINOR_CLASS_CELLULAR = 0x04,                   /**< Cellular minor class */
825         BLUETOOTH_DEVICE_MINOR_CLASS_CORDLESS = 0x08,                   /**< cordless minor class */
826         BLUETOOTH_DEVICE_MINOR_CLASS_SMART_PHONE = 0x0C,        /**< smart phone minor class */
827         BLUETOOTH_DEVICE_MINOR_CLASS_WIRED_MODEM_OR_VOICE_GATEWAY = 0x10,
828                                                                 /**< voice gateway minor class */
829         BLUETOOTH_DEVICE_MINOR_CLASS_COMMON_ISDN_ACCESS = 0x14,         /**< ISDN minor class */
830
831         /* About LAN/Network Access Point Major class */
832         BLUETOOTH_DEVICE_MINOR_CLASS_FULLY_AVAILABLE = 0x04,            /**< Fully available minor class */
833         BLUETOOTH_DEVICE_MINOR_CLASS_1_TO_17_PERCENT_UTILIZED = 0x20,   /**< 1-17% utilized minor class */
834         BLUETOOTH_DEVICE_MINOR_CLASS_17_TO_33_PERCENT_UTILIZED = 0x40,  /**< 17-33% utilized minor class */
835         BLUETOOTH_DEVICE_MINOR_CLASS_33_TO_50_PERCENT_UTILIZED = 0x60,  /**< 33-50% utilized minor class */
836         BLUETOOTH_DEVICE_MINOR_CLASS_50_to_67_PERCENT_UTILIZED = 0x80,  /**< 50-67% utilized minor class */
837         BLUETOOTH_DEVICE_MINOR_CLASS_67_TO_83_PERCENT_UTILIZED = 0xA0,  /**< 67-83% utilized minor class */
838         BLUETOOTH_DEVICE_MINOR_CLASS_83_TO_99_PERCENT_UTILIZED = 0xC0,  /**< 83-99% utilized minor class */
839         BLUETOOTH_DEVICE_MINOR_CLASS_NO_SERVICE_AVAILABLE = 0xE0,               /**< No service available minor class */
840
841         /* About Audio/Video Major class */
842         BLUETOOTH_DEVICE_MINOR_CLASS_HEADSET_PROFILE = 0x04,            /**< Headset minor class */
843         BLUETOOTH_DEVICE_MINOR_CLASS_HANDSFREE = 0x08,                  /**< Handsfree minor class*/
844
845         BLUETOOTH_DEVICE_MINOR_CLASS_MICROPHONE = 0x10,         /**< Microphone minor class */
846         BLUETOOTH_DEVICE_MINOR_CLASS_LOUD_SPEAKER = 0x14,       /**< Loud Speaker minor class */
847         BLUETOOTH_DEVICE_MINOR_CLASS_HEADPHONES = 0x18,         /**< Headphones minor class */
848         BLUETOOTH_DEVICE_MINOR_CLASS_PORTABLE_AUDIO = 0x1C,     /**< Portable Audio minor class */
849         BLUETOOTH_DEVICE_MINOR_CLASS_CAR_AUDIO = 0x20,           /**< Car Audio minor class */
850         BLUETOOTH_DEVICE_MINOR_CLASS_SET_TOP_BOX = 0x24,        /**< Set top box minor class */
851         BLUETOOTH_DEVICE_MINOR_CLASS_HIFI_AUDIO_DEVICE = 0x28,  /**< Hifi minor class */
852         BLUETOOTH_DEVICE_MINOR_CLASS_VCR = 0x2C,                /**< VCR minor class */
853         BLUETOOTH_DEVICE_MINOR_CLASS_VIDEO_CAMERA = 0x30,       /**< Video Camera minor class */
854         BLUETOOTH_DEVICE_MINOR_CLASS_CAM_CORDER = 0x34,         /**< CAM Corder minor class */
855         BLUETOOTH_DEVICE_MINOR_CLASS_VIDEO_MONITOR = 0x38,      /**<Video Monitor minor class */
856         BLUETOOTH_DEVICE_MINOR_CLASS_VIDEO_DISPLAY_AND_LOUD_SPEAKER = 0x3C,
857                                                                         /**< Video Display and Loud
858                                                                         Speaker minor class */
859         BLUETOOTH_DEVICE_MINOR_CLASS_VIDEO_CONFERENCING = 0x40, /**< Video Conferencing minor
860                                                                 class */
861
862         BLUETOOTH_DEVICE_MINOR_CLASS_GAMING_OR_TOY = 0x48,      /**< Gaming or toy minor class */
863
864         /* About Peripheral Major class */
865         BLUETOOTH_DEVICE_MINOR_CLASS_KEY_BOARD = 0x40,          /**< Key board minor class */
866         BLUETOOTH_DEVICE_MINOR_CLASS_POINTING_DEVICE = 0x80,    /**< Pointing Device minor class */
867         BLUETOOTH_DEVICE_MINOR_CLASS_COMBO_KEYBOARD_OR_POINTING_DEVICE = 0xC0,
868                                                                 /**< Combo Keyboard or pointing
869                                                                 device minorclass */
870
871         BLUETOOTH_DEVICE_MINOR_CLASS_JOYSTICK = 0x04,           /**< JoyStick minor class */
872         BLUETOOTH_DEVICE_MINOR_CLASS_GAME_PAD = 0x08,           /**< Game Pad minor class */
873         BLUETOOTH_DEVICE_MINOR_CLASS_REMOTE_CONTROL = 0x0C,     /**< Remote Control minor class */
874         BLUETOOTH_DEVICE_MINOR_CLASS_SENSING_DEVICE = 0x10,     /**< Sensing Device minor class */
875         BLUETOOTH_DEVICE_MINOR_CLASS_DIGITIZER_TABLET = 0x14,   /**< Digitizer minor class */
876         BLUETOOTH_DEVICE_MINOR_CLASS_CARD_READER = 0x18,        /**< Card Reader minor class */
877         BLUETOOTH_DEVICE_MINOR_CLASS_DIGITAL_PEN = 0x1C,        /**< Digital pen minor class */
878         BLUETOOTH_DEVICE_MINOR_CLASS_HANDHELD_SCANNER = 0x20,   /**< Handheld scanner for bar-codes, RFID minor class */
879         BLUETOOTH_DEVICE_MINOR_CLASS_HANDHELD_GESTURAL_INPUT_DEVICE = 0x24,     /**< Handheld gestural input device minor class */
880
881         /* About Imaging Major class */
882         BLUETOOTH_DEVICE_MINOR_CLASS_DISPLAY = 0x10,            /**< Display minor class */
883         BLUETOOTH_DEVICE_MINOR_CLASS_CAMERA = 0x20,             /**< Camera minor class */
884         BLUETOOTH_DEVICE_MINOR_CLASS_SCANNER = 0x40,            /**< Scanner minor class */
885         BLUETOOTH_DEVICE_MINOR_CLASS_PRINTER = 0x80,            /**< Printer minor class */
886
887         /* About Wearable Major class */
888         BLUETOOTH_DEVICE_MINOR_CLASS_WRIST_WATCH = 0x04,        /**< Wrist watch minor class */
889         BLUETOOTH_DEVICE_MINOR_CLASS_PAGER = 0x08,              /**< Pager minor class */
890         BLUETOOTH_DEVICE_MINOR_CLASS_JACKET = 0x0C,             /**< Jacket minor class */
891         BLUETOOTH_DEVICE_MINOR_CLASS_HELMET = 0x10,             /**< Helmet minor class */
892         BLUETOOTH_DEVICE_MINOR_CLASS_GLASSES = 0x14,            /**< Glasses minor class */
893
894         /* About Toy Major class */
895         BLUETOOTH_DEVICE_MINOR_CLASS_ROBOT = 0x04,              /**< Robot minor class */
896         BLUETOOTH_DEVICE_MINOR_CLASS_VEHICLE = 0x08,            /**< Vehicle minor class */
897         BLUETOOTH_DEVICE_MINOR_CLASS_DOLL_OR_ACTION = 0x0C,     /**< Doll or Action minor class */
898         BLUETOOTH_DEVICE_MINOR_CLASS_CONTROLLER = 0x10,         /**< Controller minor class */
899         BLUETOOTH_DEVICE_MINOR_CLASS_GAME = 0x14,               /**< Game minor class */
900
901         /* About Health Major class */
902         BLUETOOTH_DEVICE_MINOR_CLASS_BLOOD_PRESSURE_MONITOR = 0x04,     /**< Blood Pressure minor class */
903         BLUETOOTH_DEVICE_MINOR_CLASS_THERMOMETER = 0x08,                /**< Thermometer minor class */
904         BLUETOOTH_DEVICE_MINOR_CLASS_WEIGHING_SCALE = 0x0C,             /**< Weighing Scale minor class */
905         BLUETOOTH_DEVICE_MINOR_CLASS_GLUCOSE_METER = 0x10,              /**< Glucose minor class */
906         BLUETOOTH_DEVICE_MINOR_CLASS_PULSE_OXIMETER = 0x14,             /**< Pulse Oximeter minor class */
907         BLUETOOTH_DEVICE_MINOR_CLASS_HEART_OR_PULSE_RATE_MONITOR = 0x18,/**< Heart or pulse rate monitor minor class */
908         BLUETOOTH_DEVICE_MINOR_CLASS_MEDICAL_DATA_DISPLAY = 0x1C,       /**< Medical minor class */
909         BLUETOOTH_DEVICE_MINOR_CLASS_STEP_COUNTER = 0x20,               /**< Step Counter minor class */
910         BLUETOOTH_DEVICE_MINOR_CLASS_BODY_COMPOSITION_ANALYZER = 0x24,  /**< Body composition analyzer minor class */
911         BLUETOOTH_DEVICE_MINOR_CLASS_PEAK_FLOW_MONITOR = 0x28,  /**< Peak flow monitor minor class */
912         BLUETOOTH_DEVICE_MINOR_CLASS_MEDICATION_MONITOR = 0x2C, /**< Medication monitor minor class */
913         BLUETOOTH_DEVICE_MINOR_CLASS_KNEE_PROSTHESIS = 0x30,    /**< Knee prosthesis minor class */
914         BLUETOOTH_DEVICE_MINOR_CLASS_ANKLE_PROSTHESIS = 0x34,   /**< Ankle prosthesis minor class */
915 } bluetooth_device_minor_class_t;
916
917 /**
918  * structure to hold the device information
919  */
920 typedef struct {
921         bluetooth_device_major_class_t major_class; /**< major device class */
922         bluetooth_device_minor_class_t minor_class; /**< minor device class */
923         bluetooth_device_service_class_t service_class;
924                                                     /**< service device class */
925 } bluetooth_device_class_t;
926
927 /**
928  * Discovery Role types
929  */
930 typedef enum {
931         DISCOVERY_ROLE_BREDR = 0x1,
932         DISCOVERY_ROLE_LE,
933         DISCOVERY_ROLE_LE_BREDR
934 } bt_discovery_role_type_t;
935
936 /**
937  * Connected state types
938  */
939 typedef enum {
940         BLUETOOTH_CONNECTED_LINK_NONE = 0x00,
941         BLUETOOTH_CONNECTED_LINK_BREDR = 0x01,
942         BLUETOOTH_CONNECTED_LINK_LE = 0x02,
943         BLUETOOTH_CONNECTED_LINK_BREDR_LE = 0x03,
944 } bluetooth_connected_link_t;
945
946 /**
947 * Scan filter entry
948 */
949 typedef enum {
950         BLUETOOTH_LE_SCAN_FILTER_FEATURE_DEVICE_ADDRESS = 0x01,                 /**< device address */
951         BLUETOOTH_LE_SCAN_FILTER_FEATURE_SERVICE_UUID = 0x04,                   /**< service uuid */
952         BLUETOOTH_LE_SCAN_FILTER_FEATURE_SERVICE_SOLICITATION_UUID = 0x08,      /**< service solicitation uuid */
953         BLUETOOTH_LE_SCAN_FILTER_FEATURE_DEVICE_NAME = 0x10,                    /**< device name */
954         BLUETOOTH_LE_SCAN_FILTER_FEATURE_MANUFACTURER_DATA = 0x20,              /**< manufacturer data */
955         BLUETOOTH_LE_SCAN_FILTER_FEATURE_SERVICE_DATA = 0x40,                   /**< service data */
956 } bluetooth_le_scan_filter_feature_t;
957
958 /**
959  * LE connection mode
960  */
961 typedef enum {
962         BLUETOOTH_LE_CONNECTION_MODE_BALANCED,
963         BLUETOOTH_LE_CONNECTION_MODE_LOW_LATENCY,
964         BLUETOOTH_LE_CONNECTION_MODE_LOW_POWER
965 } bluetooth_le_connection_mode_t;
966
967 /**
968 * structure to hold the device information
969 */
970 typedef struct {
971         bluetooth_device_address_t device_address;      /**< device address */
972         bluetooth_device_name_t device_name;    /**< device name */
973         bluetooth_device_class_t device_class;  /**< device class */
974         char uuids[BLUETOOTH_MAX_SERVICES_FOR_DEVICE][BLUETOOTH_UUID_STRING_MAX];
975         unsigned int service_list_array[BLUETOOTH_MAX_SERVICES_FOR_DEVICE]; /**< Use enum values in bt_service_uuid_list_t */
976         int service_index;
977         int rssi;                               /**< received strength signal*/
978         gboolean paired;                        /**< paired flag */
979         bluetooth_connected_link_t connected;   /**< connected link type */
980         gboolean trust;                         /**< trust flag */
981         gboolean is_alias_set;          /** is device alias set flag**/
982         bluetooth_manufacturer_data_t manufacturer_data;        /**< manafacturer specific class */
983 } bluetooth_device_info_t;
984
985 /**
986 * structure to hold the LE device information
987 */
988 typedef struct {
989         int data_len;           /**< manafacturer specific data length */
990         bluetooth_advertising_data_t data;              /**< manafacturer specific data */
991 } bluetooth_le_advertising_data_t;
992
993 typedef struct {
994         bluetooth_device_address_t device_address;      /**< device address */
995         int addr_type;                  /**< address type*/
996         int rssi;                       /**< received strength signal*/
997         bluetooth_le_advertising_data_t adv_ind_data;
998         bluetooth_le_advertising_data_t scan_resp_data;
999 } bluetooth_le_device_info_t;
1000
1001 typedef struct {
1002         int slot_id;
1003         bluetooth_le_scan_filter_feature_t added_features;              /**< added features */
1004         bluetooth_device_address_t device_address;                      /**< device address */
1005         char device_name[BLUETOOTH_ADVERTISING_DATA_LENGTH_MAX];        /**< device name */
1006         bluetooth_le_advertising_data_t service_uuid;                   /**< service uuid */
1007         bluetooth_le_advertising_data_t service_uuid_mask;              /**< service uuid mask */
1008         bluetooth_le_advertising_data_t service_solicitation_uuid;      /**< service solicitation uuid */
1009         bluetooth_le_advertising_data_t service_solicitation_uuid_mask; /**< service solicitation uuid mask */
1010         bluetooth_le_advertising_data_t service_data;                   /**< service data */
1011         bluetooth_le_advertising_data_t service_data_mask;              /**< service data mask */
1012         int manufacturer_id;                                            /**< manufacturer ID */
1013         bluetooth_le_advertising_data_t manufacturer_data;              /**< manufacturer data */
1014         bluetooth_le_advertising_data_t manufacturer_data_mask;         /**< manufacturer data mask */
1015 } bluetooth_le_scan_filter_t;
1016
1017 typedef struct {
1018         bluetooth_device_address_t device_address;      /**< device address */
1019         unsigned int mtu;       /** < MTU set for the ATT connection */
1020         unsigned int status; /** < status of the MTU exchange */
1021 } bluetooth_le_att_mtu_info_t;
1022
1023 /**
1024  * structure to hold the paired device information
1025  */
1026 typedef struct {
1027         bluetooth_device_address_t device_address;  /**< paired device address */
1028         bluetooth_device_name_t device_name;        /**< device name */
1029         bluetooth_device_class_t device_class;      /**< device class */
1030 } bluetooth_paired_device_info_t;
1031
1032 /**
1033 * structure to hold the paired device information
1034 */
1035 typedef struct {
1036         bluetooth_device_address_t device_address;
1037                                                /**< device address */
1038         char interface_name[BLUETOOTH_INTERFACE_NAME_LENGTH + 1];
1039                                                           /**< network interface name */
1040 } bluetooth_network_device_info_t;
1041
1042 /**
1043  * Authentication event types
1044  */
1045
1046 typedef enum {
1047         BLUETOOTH_AUTH_KEYBOARD_PASSKEY_REQUEST = 0,
1048         BLUETOOTH_AUTH_PIN_REQUEST,
1049         BLUETOOTH_AUTH_PASSKEY_REQUEST,
1050         BLUETOOTH_AUTH_PASSKEY_CONFIRM_REQUEST,
1051 } bluetooth_auth_type_t;
1052
1053 /**
1054 * structure to hold the pincode/pass-key req informations
1055 */
1056 typedef struct {
1057         bluetooth_device_address_t device_address;  /**< remote device address */
1058         bluetooth_device_name_t device_name;        /**< device name */
1059         char str_passkey[BLUETOOTH_DEVICE_PASSKEY_LENGTH_MAX]; /**< pass-key string */
1060 } bluetooth_authentication_request_info_t;
1061
1062 /**
1063 * Stucture to hold discovery option
1064 */
1065 typedef struct {
1066         unsigned short max_response;    /**< the number of maximum response */
1067         unsigned short discovery_duration;
1068                                         /**< duration of discovery (seconds) */
1069         unsigned int classOfDeviceMask; /**<  mask for values of class of device. to be used with
1070                                         classOfDevice variable */
1071 } bluetooth_discovery_option_t;
1072
1073 /**
1074  * Stucture to hold event information
1075  */
1076 typedef struct {
1077         int event;      /**< event type */
1078         int result;     /**< Success or error value */
1079         void *param_data;
1080                         /**<parameter data pointer */
1081         void *user_data;
1082 } bluetooth_event_param_t;
1083
1084 typedef struct {
1085         bluetooth_device_address_t device_addr;
1086         char uuids[BLUETOOTH_MAX_SERVICES_FOR_DEVICE][BLUETOOTH_UUID_STRING_MAX];
1087         unsigned int service_list_array[BLUETOOTH_MAX_SERVICES_FOR_DEVICE]; /**< Use enum values in bt_service_uuid_list_t */
1088         unsigned int service_name_array[BLUETOOTH_MAX_SERVICES_FOR_DEVICE];
1089         int service_index;
1090 } bt_sdp_info_t;
1091
1092 typedef struct {
1093         bluetooth_device_address_t device_addr;
1094         unsigned char addr_type;
1095         int disc_reason;
1096 } bt_connection_info_t;
1097
1098 /**
1099  * Stucture to rfcomm receive data
1100  */
1101
1102 typedef struct {
1103         int socket_fd;
1104                 /**< the socket fd */
1105         int buffer_size;/**< the length of the receive buffer */
1106         char *buffer;
1107                 /**< the receive data buffer */
1108 } bluetooth_rfcomm_received_data_t;
1109
1110 /**
1111  * HID Header type
1112  */
1113 typedef enum {
1114         HTYPE_TRANS_HANDSHAKE,
1115         HTYPE_TRANS_HID_CONTROL,
1116         HTYPE_TRANS_GET_REPORT,
1117         HTYPE_TRANS_SET_REPORT,
1118         HTYPE_TRANS_GET_PROTOCOL,
1119         HTYPE_TRANS_SET_PROTOCOL,
1120         HTYPE_TRANS_DATA,
1121         HTYPE_TRANS_UNKNOWN
1122 }bt_hid_header_type_t;
1123
1124 /**
1125  * HID Param type
1126  */
1127 typedef enum {
1128         PTYPE_DATA_RTYPE_INPUT,
1129         PTYPE_DATA_RTYPE_OUTPUT
1130 }bt_hid_param_type_t;
1131
1132 /**
1133  * Stucture to hid receive data
1134  */
1135 typedef struct {
1136         const char *address;
1137         bt_hid_header_type_t type;
1138                 /**< Header type containing */
1139         bt_hid_param_type_t param;
1140                 /**< Param type in header like INPUT Report or OutPut Report */
1141         int buffer_size;/**< the length of the receive buffer */
1142         char *buffer;
1143                 /**< the receive data buffer */
1144 } bluetooth_hid_received_data_t;
1145
1146 /**
1147 * Stucture to rfcomm connection
1148 */
1149
1150 typedef struct {
1151         int socket_fd; /**< the socket fd */
1152         int server_id; /* Server id */
1153         int device_role; /** < Device role - RFCOMM_ROLE_SERVER or RFCOMM_ROLE_CLIENT */
1154         bluetooth_device_address_t device_addr;
1155                                               /**< device address */
1156         char uuid[BLUETOOTH_UUID_STRING_MAX];
1157 } bluetooth_rfcomm_connection_t;
1158
1159 /**
1160  * Stucture to rfcomm disconnection
1161  */
1162 typedef struct {
1163         int socket_fd;
1164                 /**< the socket fd */
1165         int device_role;/** < Device role - RFCOMM_ROLE_SERVER or RFCOMM_ROLE_CLIENT */
1166         bluetooth_device_address_t device_addr;
1167                                               /**< device address */
1168         char uuid[BLUETOOTH_UUID_STRING_MAX];
1169 } bluetooth_rfcomm_disconnection_t;
1170
1171 typedef struct {
1172         int socket_fd;
1173                 /**< the socket fd */
1174         bluetooth_device_address_t device_addr;
1175                                               /**< device address */
1176 } bluetooth_rfcomm_connection_request_t;
1177
1178 typedef struct {
1179         int socket_fd;
1180                 /**< the socket fd */
1181         bluetooth_device_address_t device_addr;
1182                                               /**< device address */
1183 } bluetooth_hid_request_t;
1184
1185 /**
1186  * HDP QOS types
1187  */
1188 typedef enum {
1189         HDP_QOS_RELIABLE,
1190         HDP_QOS_STREAMING,
1191         HDP_QOS_ANY
1192 } bt_hdp_qos_type_t;
1193
1194 /**
1195  * HDP Role types
1196  */
1197 typedef enum {
1198         HDP_ROLE_SOURCE = 0x0,
1199         HDP_ROLE_SINK
1200 } bt_hdp_role_type_t;
1201
1202
1203 /**
1204  * Stucture to HDP connected
1205  */
1206 typedef struct {
1207         const char *app_handle; /**< the application handle */
1208         unsigned int channel_id;        /**< the channel id */
1209         bt_hdp_qos_type_t type; /**< the QOS type */
1210         bluetooth_device_address_t device_address; /**< the remote address */
1211 } bt_hdp_connected_t;
1212
1213 /**
1214  * Stucture to HDP disconnected
1215  */
1216 typedef struct {
1217         unsigned int channel_id; /**< the channel id */
1218         bluetooth_device_address_t device_address; /**< the remote address */
1219 } bt_hdp_disconnected_t;
1220
1221 /**
1222  * Stucture to HDP data indication
1223  */
1224 typedef struct {
1225         unsigned int channel_id;         /**< the channel id */
1226         const char *buffer;      /**< the RX data buffer */
1227         unsigned int size;       /**< the RX data size */
1228 } bt_hdp_data_ind_t;
1229
1230 /**
1231  * Stucture to OPP client transfer information
1232  */
1233 typedef struct {
1234         char *device_addr;
1235         char *filename;
1236         unsigned long size;
1237         int percentage;
1238 } bt_opc_transfer_info_t;
1239
1240 /* Obex Server transfer type */
1241 #define TRANSFER_PUT "PUT"
1242 #define TRANSFER_GET "GET"
1243 /**
1244  * Stucture to OPP/FTP Server authorize information
1245  */
1246 typedef struct {
1247         char *filename;
1248         int length;
1249         char *address;
1250         char *name;
1251 } bt_obex_server_authorize_into_t;
1252
1253 /**
1254  * Server type
1255  */
1256 typedef enum {
1257         OPP_SERVER = 0x0,
1258         FTP_SERVER
1259 } bt_obex_server_type_t;
1260
1261 /**
1262  * Stucture to OPP/FTP server transfer information
1263  */
1264 typedef struct {
1265         char *filename;
1266         char *device_name;
1267         char *file_path;
1268         char *type;
1269         int transfer_id;
1270         unsigned long file_size;
1271         int percentage;
1272         bt_obex_server_type_t server_type;
1273         char *address;
1274         unsigned char *contact_auth_info;
1275 } bt_obex_server_transfer_info_t;
1276
1277 /**
1278  * Stucture to OPP/FTP server connection/disconnection information
1279  */
1280 typedef struct {
1281         char *address;
1282         char *device_name;
1283         int transfer_id;
1284 } bt_obex_server_connection_info_t;
1285
1286
1287 /**
1288  * Stucture to OOB data
1289  */
1290
1291 typedef struct {
1292         unsigned char hash[BLUETOOTH_OOB_DATA_LENGTH];
1293         unsigned char randomizer[BLUETOOTH_OOB_DATA_LENGTH];
1294         unsigned int hash_len;
1295         unsigned int randomizer_len;
1296
1297         unsigned char hash256[BLUETOOTH_OOB_DATA_LENGTH];
1298         unsigned char randomizer256[BLUETOOTH_OOB_DATA_LENGTH];
1299         unsigned int hash256_len;
1300         unsigned int randomizer256_len;
1301 } bt_oob_data_t;
1302
1303 /**
1304  * Structure to GATT attribute handle data
1305  */
1306
1307 typedef struct {
1308         int count;
1309         char **handle;
1310 } bt_gatt_handle_info_t;
1311
1312 /**
1313  * Structure to GATT Remote service data
1314  */
1315
1316 typedef struct {
1317         char *uuid;
1318         char *handle;
1319         gboolean primary;
1320         bt_gatt_handle_info_t include_handles;
1321         bt_gatt_handle_info_t char_handle;
1322 } bt_gatt_service_property_t;
1323
1324 /**
1325  * Structure to GATT Remote characteristic data
1326  */
1327
1328 typedef struct {
1329         char *service_handle;
1330         bt_gatt_handle_info_t handle_info;
1331 } bt_gatt_discovered_char_t;
1332
1333 /**
1334  * Structure to format of GATT Characteristic Value
1335  */
1336
1337 typedef struct {
1338         unsigned char format;
1339         unsigned char exponent;
1340         unsigned short unit;
1341         unsigned char name_space;
1342         unsigned short description;
1343 } bt_gatt_char_format_t;
1344
1345 /**
1346  * Structure to GATT Characteristic property
1347  */
1348
1349 typedef struct {
1350         char *handle;
1351         char *uuid;
1352         char *name;
1353         char *description;
1354         bt_gatt_char_format_t format;
1355         unsigned char *val;
1356         unsigned int val_len;
1357         unsigned int permission;
1358         char *representation;
1359         bt_gatt_handle_info_t char_desc_handle;
1360 } bt_gatt_char_property_t;
1361
1362 /**
1363  * Structure to GATT Characteristic descriptor property
1364  */
1365
1366 typedef struct {
1367         char *handle;
1368         char *uuid;
1369         unsigned char *val;
1370         unsigned int val_len;
1371 } bt_gatt_char_descriptor_property_t;
1372
1373 /**
1374  * Structure to GATT Characteristic value
1375  */
1376
1377 typedef struct {
1378         char *char_handle;
1379         guint8 *char_value;
1380         guint32 val_len;
1381 } bt_gatt_char_value_t;
1382
1383 /**
1384  * Structure to GATT Read Request
1385  */
1386 typedef struct {
1387         char *att_handle;
1388         char *service_handle;
1389         char *address;
1390         guint16 offset;
1391         guint8 req_id;
1392 } bt_gatt_read_req_t;
1393
1394 /**
1395  * Structure to GATT Value change
1396  */
1397 typedef struct {
1398         char *att_handle;
1399         char *service_handle;
1400         char *address;
1401         guint8 req_id;
1402         guint16 offset;
1403         guint8 *att_value;
1404         guint32 val_len;
1405 } bt_gatt_value_change_t;
1406
1407 typedef struct {
1408         bluetooth_device_address_t device_addr;
1409         char *svc_path;
1410         bluetooth_gatt_service_change_type_t change_type;
1411 } bt_gatt_service_change_t;
1412
1413 /**
1414  * Structure to GATT characteristc Notification change
1415  */
1416 typedef struct {
1417         char *att_handle;
1418         char *service_handle;
1419         gboolean att_notify;
1420 } bt_gatt_char_notify_change_t;
1421
1422 /**
1423  * Structure to Indication confirmation
1424  */
1425 typedef struct {
1426         char *att_handle;
1427         char *service_handle;
1428         char *address;
1429         gboolean complete;
1430  } bt_gatt_indicate_confirm_t;
1431
1432 /**
1433  * Structure to RSSI Signal Strength Alert
1434  */
1435
1436 typedef struct {
1437         char *address;
1438         int link_type;
1439         int alert_type;
1440         int rssi_dbm;
1441 } bt_rssi_alert_t;
1442
1443 /**
1444  * Structure to RSSI Signal Strength
1445  */
1446
1447 typedef struct {
1448         char *address;
1449         int link_type;
1450         int rssi_dbm;
1451 } bt_raw_rssi_t;
1452
1453 /**
1454  * Structure for RSSI Enabled or Disabled
1455  */
1456
1457 typedef struct {
1458         char *address;
1459         int link_type;
1460         gboolean rssi_enabled;
1461 } bt_rssi_enabled_t;
1462
1463 /**
1464  * Structure for RSSI Threshold
1465  */
1466
1467 typedef struct {
1468         int low_threshold;
1469         int in_range_threshold;
1470         int high_threshold;
1471 } bt_rssi_threshold_t;
1472
1473
1474 /**
1475  * Structure for Suppoted Profiles and Trusted Profiles
1476  */
1477 typedef struct {
1478         char *address;
1479         int profile;
1480         gboolean supported;
1481         gboolean trusted;
1482 } bt_supported_profile_trusted_t;
1483
1484 /**
1485  * Structure for PBAP Folder Parameters
1486  */
1487 typedef struct {
1488         unsigned char addressbook;
1489         unsigned char folder_type;
1490 } bt_pbap_folder_t;
1491
1492 /**
1493  * Structure for PBAP Pull application Parameters
1494  */
1495 typedef struct {
1496         unsigned char format;
1497         unsigned char order;
1498         unsigned short offset;
1499         unsigned short maxlist;
1500         long long unsigned fields;
1501 } bt_pbap_pull_parameters_t;
1502
1503 /**
1504  * Structure for PBAP List application Parameters
1505  */
1506 typedef struct {
1507         unsigned char order;
1508         unsigned short offset;
1509         unsigned short maxlist;
1510 } bt_pbap_list_parameters_t;
1511
1512 /**
1513  * Structure for PBAP Pull vCard application Parameters
1514  */
1515 typedef struct {
1516         unsigned char format;
1517         long long unsigned fields;
1518         int index;
1519 } bt_pbap_pull_vcard_parameters_t;
1520
1521 /**
1522  * Structure for PBAP Search application Parameters
1523  */
1524 typedef struct {
1525         unsigned char order;
1526         unsigned short offset;
1527         unsigned short maxlist;
1528         unsigned char search_attribute;
1529         char search_value[BLUETOOTH_PBAP_MAX_SEARCH_VALUE_LENGTH];
1530 } bt_pbap_search_parameters_t;
1531
1532 /**
1533  * Structure for PBAP Connection Status
1534  */
1535 typedef struct {
1536         bluetooth_device_address_t btaddr;
1537         int connected;
1538 } bt_pbap_connected_t;
1539
1540 /**
1541  * Structure for PBAP Phonebook Size
1542  */
1543 typedef struct {
1544         bluetooth_device_address_t btaddr;
1545         int size;
1546 } bt_pbap_phonebook_size_t;
1547
1548 /**
1549  * Structure for PBAP Phonebook Pull
1550  */
1551 typedef struct {
1552         bluetooth_device_address_t btaddr;
1553         char *vcf_file;
1554         int success;
1555 } bt_pbap_phonebook_pull_t;
1556
1557 /**
1558  * Structure for PBAP vCard List
1559  */
1560 typedef struct {
1561         bluetooth_device_address_t btaddr;
1562         char **vcards;
1563         int length;
1564         int success;
1565 } bt_pbap_vcard_list_t;
1566
1567 /**
1568  * Structure for PBAP vCard Pull
1569  */
1570 typedef struct {
1571         bluetooth_device_address_t btaddr;
1572         char *vcf_file;
1573         int success;
1574 } bt_pbap_vcard_pull_t;
1575
1576 /**
1577  * Structure for PBAP Phonebook search List
1578  */
1579 typedef struct {
1580         bluetooth_device_address_t btaddr;
1581         char **vcards;
1582         int length;
1583         int success;
1584 } bt_pbap_phonebook_search_list_t;
1585
1586 /**
1587  * Stucture to HF Call status information
1588  */
1589
1590 typedef struct {
1591         char *number; /*Phone Number */
1592         int direction; /*Direction :Incoming(1), Outgoing(0)*/
1593         int status; /* Call Status :Active(0), Held(1), Waiting(5), Dailing(2)*/
1594         int mpart; /*Multiparty/conf call: Yes(1), No(0) */
1595         int idx; /*Call index/ID */
1596 } bt_hf_call_status_info_t;
1597
1598 typedef struct {
1599         GList *list;
1600         int count;
1601 } bt_hf_call_list_s;
1602
1603 /**
1604  * Profile types
1605  */
1606 typedef enum {
1607         TRUSTED_PROFILE_PBAP = 1,
1608         TRUSTED_PROFILE_MAP,
1609         TRUSTED_PROFILE_SAP,
1610         TRUSTED_PROFILE_ALL = 0xFFFFFFFF,
1611 } bluetooth_trusted_profile_t;
1612
1613 /**
1614  * Restricted Profile types
1615  */
1616 typedef enum {
1617         RESTRICTED_PROFILE_HFP_HS = 1,
1618         RESTRICTED_PROFILE_A2DP,
1619 } bluetooth_restricted_profile_t;
1620
1621 /**
1622  * Structure for LE data length change params
1623  */
1624 typedef struct {
1625         bluetooth_device_address_t device_address;
1626         guint16 max_tx_octets;
1627         guint16 max_tx_time;
1628         guint16 max_rx_octets;
1629         guint16 max_rx_time;
1630 } bt_le_data_length_params_t;
1631
1632
1633  /**
1634  * @brief DPM BT allowance state
1635  * @see
1636  */
1637  typedef enum {
1638          BLUETOOTH_DPM_ERROR     = -1,   /**< bluetooth allowance error */
1639          BLUETOOTH_DPM_BT_ALLOWED,               /**< bluetooth allowance allowed */
1640          BLUETOOTH_DPM_HANDSFREE_ONLY,  /**< bluetooth allowance handsfree only */
1641          BLUETOOTH_DPM_BT_RESTRICTED,  /**< bluetooth allowance restricted */
1642  } bt_dpm_allow_t;
1643
1644  /**
1645  * @brief DPM API result
1646  * @see
1647  */
1648 typedef enum {
1649         BLUETOOTH_DPM_RESULT_SERVICE_NOT_ENABLED = -5,  /**< DPM API result service not enabled. */
1650         BLUETOOTH_DPM_RESULT_ACCESS_DENIED = -4,                        /**< DPM API result access denied. */
1651         BLUETOOTH_DPM_RESULT_INVALID_PARAM = -3,                        /**< DPM API result invalid parameter. */
1652         BLUETOOTH_DPM_RESULT_NOT_SUPPORTED = -2,                        /**< DPM API result not supported. */
1653         BLUETOOTH_DPM_RESULT_FAIL        = -1,                          /**< DPM API result fail. */
1654         BLUETOOTH_DPM_RESULT_SUCCESS     = 0,                           /**< DPM API result success. */
1655 } bt_dpm_result_t;
1656
1657 /**
1658  * @brief DPM Policy status
1659  * @see
1660  */
1661 typedef enum {
1662         BLUETOOTH_DPM_STATUS_ERROR      = -1,
1663
1664         BLUETOOTH_DPM_ALLOWED           = 0,    /**< DPM Policy status allowed. */
1665         BLUETOOTH_DPM_RESTRICTED                = 1,    /**< DPM Policy status restricted. */
1666
1667         BLUETOOTH_DPM_ENABLE                    = 1,    /**< DPM Policy status enabled. */
1668         BLUETOOTH_DPM_DISABLE   = 0,    /**< DPM Policy status disabled. */
1669
1670         BLUETOOTH_DPM_FALSE                     = 0,    /**< DPM Policy status false. */
1671         BLUETOOTH_DPM_TRUE                      = 1,    /**< DPM Policy status true. */
1672 } bt_dpm_status_t;
1673
1674 typedef enum {
1675         /* policy-group : BLUETOOTH */
1676         BLUETOOTH_DPM_POLICY_ALLOW,
1677         BLUETOOTH_DPM_POLICY_DEVICE_RESTRICTION,
1678         BLUETOOTH_DPM_POLICY_UUID_RESTRICTION,
1679         BLUETOOTH_DPM_POLICY_DEVICES_WHITELIST,
1680         BLUETOOTH_DPM_POLICY_DEVICES_BLACKLIST,
1681         BLUETOOTH_DPM_POLICY_UUIDS_WHITELIST,
1682         BLUETOOTH_DPM_POLICY_UUIDS_BLACKLIST,
1683         BLUETOOTH_DPM_POLICY_ALLOW_OUTGOING_CALL,
1684         BLUETOOTH_DPM_POLICY_PAIRING_STATE,
1685         BLUETOOTH_DPM_POLICY_DESKTOP_CONNECTIVITY_STATE,
1686         BLUETOOTH_DPM_POLICY_DISCOVERABLE_STATE,
1687         BLUETOOTH_DPM_POLICY_LIMITED_DISCOVERABLE_STATE,
1688         BLUETOOTH_DPM_POLICY_DATA_TRANSFER_STATE,
1689         BLUETOOTH_DPM_POLICY_END,
1690 } bt_dpm_policy_cmd_t;
1691
1692
1693 struct bt_dpm_policy {
1694         union {
1695                 int value;
1696                 GSList *list;
1697         };
1698 };
1699 typedef struct bt_dpm_policy bt_dpm_policy_t;
1700
1701 typedef enum {
1702         BLUETOOTH_DPM_POLICY_A2DP_PROFILE_STATE,
1703         BLUETOOTH_DPM_POLICY_AVRCP_PROFILE_STATE,
1704         BLUETOOTH_DPM_POLICY_BPP_PROFILE_STATE,
1705         BLUETOOTH_DPM_POLICY_DUN_PROFILE_STATE,
1706         BLUETOOTH_DPM_POLICY_FTP_PROFILE_STATE,
1707         BLUETOOTH_DPM_POLICY_HFP_PROFILE_STATE,
1708         BLUETOOTH_DPM_POLICY_HSP_PROFILE_STATE,
1709         BLUETOOTH_DPM_POLICY_PBAP_PROFILE_STATE,
1710         BLUETOOTH_DPM_POLICY_SAP_PROFILE_STATE,
1711         BLUETOOTH_DPM_POLICY_SPP_PROFILE_STATE,
1712         BLUETOOTH_DPM_PROFILE_NONE,
1713 } bt_dpm_profile_t;
1714
1715 struct bt_dpm_profile_val {
1716                 int value; /* tells whether the profile is enabled or disabled */
1717 };
1718 typedef struct dpm_profile_val dpm_profile_state_t;
1719
1720 /**
1721  * Structure to DPM device list
1722  */
1723 typedef struct {
1724         int count;
1725         bluetooth_device_address_t addresses[BLUETOOTH_MAX_DPM_LIST];
1726 } bt_dpm_device_list_t;
1727
1728 /**
1729  * Structure to DPM uuid list
1730  */
1731 typedef struct {
1732         int count;
1733         char uuids[BLUETOOTH_MAX_DPM_LIST][BLUETOOTH_UUID_STRING_MAX];
1734 } bt_dpm_uuids_list_t;
1735
1736 /**
1737  * Structure for IPSP Interface Info
1738  */
1739 typedef struct {
1740         bluetooth_device_address_t btaddr;
1741         char if_name[16];
1742 } bt_ipsp_connection_info_t;
1743
1744 /**
1745  * Callback pointer type
1746  */
1747 typedef void (*bluetooth_cb_func_ptr) (int, bluetooth_event_param_t *, void *);
1748
1749 /**
1750  * @fn int bluetooth_register_callback(bluetooth_cb_func_ptr callback_ptr, void *user_data)
1751  * @brief Set the callback function pointer for bluetooth event
1752  *
1753  *
1754  * This API will register the callback function, when any response and event are received from
1755  * bluetooth framework. @n
1756  * this registered callback function will be get called with appropriate event and data structures.
1757  * This function is a synchronous call. An application developer can call
1758  * bluetooth_register_callback() function to register a callback function of bluetooth_cb_func_ptr
1759  * type. This registered function will receive events of bluetooth_event_type_t type along with
1760  * data any.
1761  *
1762  *
1763  * @param[in]   callback_ptr    A pointer to the callback function
1764  * @param[in]   user_data    A pointer to user data
1765  * @return      BLUETOOTH_ERROR_NONE - Success
1766  * @remark      None
1767  * @see         None
1768 @code
1769 void bt_event_callback(int event, bluetooth_event_param_t *param, void *user_data)
1770 {
1771         GMainLoop *main_loop = (GMainLoop*) user_data;
1772
1773         switch(event)
1774         {
1775                 // Code for each event
1776                 default:
1777                         g_main_loop_quit(main_loop);
1778                         break;
1779         }
1780 }
1781
1782 int main()
1783 {
1784         GMainLoop *main_loop = NULL;
1785         int ret = 0;
1786         g_type_init();
1787         main_loop = g_main_loop_new(NULL, FALSE);
1788         ret = bluetooth_register_callback(bt_event_callback, (void*)main_loop);
1789         if (ret >= BLUETOOTH_ERROR_NONE)
1790         {
1791                 // bluetooth_register_callback returned Success
1792         }
1793         else
1794         {
1795                 // bluetooth_register_callback returned failiure
1796         }
1797         g_main_loop_run(main_loop);
1798 }
1799 @endcode
1800  */
1801 int bluetooth_register_callback(bluetooth_cb_func_ptr callback_ptr, void *user_data);
1802
1803 /**
1804  * @fn int bluetooth_le_register_callback(bluetooth_cb_func_ptr callback_ptr, void *user_data)
1805  * @brief Set the callback function pointer for bluetooth le event
1806  *
1807  *
1808  * This API will register the callback function, when any response and event are received from
1809  * bluetooth framework. @n
1810  * this registered callback function will be get called with appropriate event and data structures.
1811  * This function is a synchronous call. An application developer can call
1812  * bluetooth_le_register_callback() function to register a callback function of bluetooth_cb_func_ptr
1813  * type. This registered function will receive events of bluetooth_event_type_t type along with
1814  * data any.
1815  *
1816  *
1817  * @param[in]   callback_ptr    A pointer to the callback function
1818  * @param[in]   user_data    A pointer to user data
1819  * @return      BLUETOOTH_ERROR_NONE - Success
1820  * @remark      None
1821  * @see         None
1822  * */
1823 int bluetooth_le_register_callback(bluetooth_cb_func_ptr callback_ptr, void *user_data);
1824
1825 /**
1826  * @fn int bluetooth_le_unregister_callback(void)
1827  * @brief Set the callback function pointer for bluetooth le event
1828  *
1829  *
1830  * This API will register the callback function, when any response and event are received from
1831  * bluetooth framework. @n
1832  * this registered callback function will be get called with appropriate event and data structures.
1833  * This function is a synchronous call. An application developer can call
1834  * bluetooth_le_register_callback() function to register a callback function of bluetooth_cb_func_ptr
1835  * type. This registered function will receive events of bluetooth_event_type_t type along with
1836  * data any.
1837  *
1838  *
1839  * @param[in]   none
1840  * @return      BLUETOOTH_ERROR_NONE - Success
1841  * @remark      None
1842  * @see         None
1843  * */
1844 int bluetooth_le_unregister_callback(void);
1845
1846 /**
1847  * @fn int bluetooth_deregister_callback(bluetooth_cb_func_ptr callback_ptr)
1848  * @brief Set the callback function pointer for bluetooth event
1849  *
1850  *
1851  * This API will register the callback function, when any response and event are received from
1852  * bluetooth framework. @n
1853  * this registered callback function will be get called with appropriate event and data structures.
1854  * This function is a synchronous call. An application developer can call
1855  * bluetooth_register_callback() function to register a callback function of bluetooth_cb_func_ptr
1856  * type. This registered function will receive events of bluetooth_event_type_t type along with
1857  * data any.
1858  *
1859  *
1860  * @param[in]   none
1861  * @return      BLUETOOTH_ERROR_NONE - Success
1862  * @remark      None
1863  * @see         None
1864 @code
1865 void bt_event_callback(int event, bluetooth_event_param_t *param, void *user_data)
1866 {
1867         GMainLoop *main_loop = (GMainLoop*) user_data;
1868
1869         switch(event)
1870         {
1871                 // Code for each event
1872                 default:
1873                         g_main_loop_quit(main_loop);
1874                         break;
1875         }
1876 }
1877
1878 int main()
1879 {
1880         GMainLoop *main_loop = NULL;
1881         int ret = 0;
1882         g_type_init();
1883         main_loop = g_main_loop_new(NULL, FALSE);
1884         ret = bluetooth_register_callback(bt_event_callback, (void*)main_loop);
1885         if (ret >= BLUETOOTH_ERROR_NONE)
1886         {
1887                 // bluetooth_register_callback returned Success
1888         }
1889         else
1890         {
1891                 // bluetooth_register_callback returned failiure
1892         }
1893         ret = bluetooth_deregister_callback(void);
1894         g_main_loop_run(main_loop);
1895 }
1896 @endcode
1897  */
1898 int bluetooth_unregister_callback(void);
1899
1900 /**
1901  * @fn int bluetooth_enable_adapter(void)
1902  * @brief Enable the Bluetooth H/W
1903  *
1904  *
1905  * This API can be used to activate Bluetooth. It initializes Bluetooth protocol stack for use and
1906  * send request to bluetooth chip for activation.
1907  * This function is typically called at startup or when Bluetooth services are required.  This
1908  * function must be called before calling any other API of Bluetooth operations.
1909  *
1910  * Before performing any operations like Device discover, service search etc.., the adapter must be
1911  * enabled.
1912  *
1913  * This function is a asynchronous call.
1914  * If the call is success then the application will receive BLUETOOTH_EVENT_ENABLED event
1915  * through registered callback function with appropriate result code
1916  *                      BLUETOOTH_CHANGE_STATUS_TIMEOUT - Timeout has happen \n
1917  *                      BLUETOOTH_ERROR_NONE - Success \n
1918  *
1919  * If the adpter is not enabled with in 30 seconds then BLUETOOTH_EVENT_ENABLED with result code
1920  * BLUETOOTH_CHANGE_STATUS_TIMEOUT will come
1921  *
1922  * @return      BLUETOOTH_ERROR_NONE - Success\n
1923  *              BLUETOOTH_ERROR_DEVICE_ALREADY_ENABLED - Adapter already enabled\n
1924  *              BLUETOOTH_ERROR_ACCESS_DENIED - Enabling adapter is not allowed by MDM policy\n
1925  *              BLUETOOTH_ERROR_IN_PROGRESS - Adapter is activating or deactivating\n
1926  * @exception   BLUETOOTH_ERROR_INTERNAL - Dbus proxy call is fail
1927  * @remark      None
1928  * @see         bluetooth_check_adapter, bluetooth_disable_adapter
1929 @code
1930 void bt_event_callback(int event, bluetooth_event_param_t *param)
1931 {
1932         switch(event)
1933         {
1934                 case BLUETOOTH_EVENT_ENABLED:
1935                         if (param->result == BLUETOOTH_ERROR_NONE)
1936                         {
1937                                 // Successfully Enabled
1938                         }
1939                         else
1940                         {
1941                                 // Failed
1942                         }
1943                         break;
1944         }
1945 }
1946
1947 ...
1948
1949 int ret = 0;
1950 ret = bluetooth_enable_adapter();
1951
1952 @endcode
1953  */
1954 int bluetooth_enable_adapter(void);
1955
1956 /**
1957  * @fn int bluetooth_disable_adapter(void)
1958  * @brief Disable the Bluetooth H/W
1959  *
1960  *
1961  * This function disables Bluetooth protocol stack and hardware. This function is called when
1962  * Bluetooth is no longer used. It will internally free all resources and power off the RF radio.
1963  *
1964  * Bluetooth adapter should be disabled to switch off Bluetooth chip (and thereby saving power).
1965  * bluetooth_disable_adapter() API will do that job for you. After switching off Bluetooth,
1966  * BLUETOOTH_EVENT_DISABLED will be sent by SDK to application for confirmation with appropriate
1967  * error code.
1968  * The various error codes are BLUETOOTH_ERROR_NONE for success and BLUETOOTH_ERROR_INTERNAL for
1969  * internal error.
1970  *
1971  * This function is a asynchronous call.
1972  * If this call is success then the applications will receive BLUETOOTH_EVENT_DISABLED event
1973  * through registered callback function.
1974  *
1975  *
1976  * @return      BLUETOOTH_ERROR_NONE - Success\n
1977  *              BLUETOOTH_ERROR_IN_PROGRESS - Adapter is activating or deactivating\n
1978  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Bluetooth adapter is not enabled\n
1979  * @exception   BLUETOOTH_ERROR_INTERNAL - Dbus proxy call is fail
1980  * @remark      None
1981  * @see         bluetooth_check_adapter, bluetooth_enable_adapter
1982 @code
1983 void bt_event_callback(int event, bluetooth_event_param_t *param)
1984 {
1985         switch(event)
1986         {
1987                 case BLUETOOTH_EVENT_DISABLED:
1988                         if (param->result == BLUETOOTH_ERROR_NONE)
1989                         {
1990                                 // Successfully disabled
1991                         }
1992                         else
1993                         {
1994                                 // Failed
1995                         }
1996                         break;
1997         }
1998 }
1999
2000 ...
2001
2002 int ret = 0;
2003 ret = bluetooth_disable_adapter();
2004 @endcode
2005  */
2006 int bluetooth_disable_adapter(void);
2007 int bluetooth_recover_adapter(void);
2008 int bluetooth_check_adapter_le(void);
2009 int bluetooth_enable_adapter_le(void);
2010
2011 int bluetooth_disable_adapter_le(void);
2012
2013 /**
2014  * @fn int bluetooth_reset_adapter(void)
2015  * @brief Reset the Bluetooth H/W and values
2016  *
2017  *
2018  * This function resets Bluetooth protocol stack and hardware. This function is called when
2019  * an user want to initialize Bluetooth environment.
2020  *
2021  * The various error codes are BLUETOOTH_ERROR_NONE for success and BLUETOOTH_ERROR_INTERNAL for
2022  * internal error.
2023  *
2024  * This function is a synchronous call.
2025  *
2026  * @return      BLUETOOTH_ERROR_NONE - Success\n
2027  * @exception   BLUETOOTH_ERROR_INTERNAL - Dbus proxy call is fail
2028  * @remark      None
2029  * @see         bluetooth_check_adapter, bluetooth_enable_adapter
2030 @code
2031 ...
2032
2033 int ret = 0;
2034 ret = bluetooth_reset_adapter();
2035 @endcode
2036  */
2037 int bluetooth_reset_adapter(void);
2038
2039 /**
2040  * @fn int bluetooth_is_supported(void)
2041  * @brief Check if the bluetooth is supported or not by the current target
2042  *
2043  * This API checks whether the bluetooth is supported or not.
2044  * This API only run by root permission.
2045  *
2046  * This function is a synchronous call.
2047  *
2048  * @return      0 - if bluetooth is not supported\n
2049  *              1 - if bluetooth is supported\n
2050  *              BLUETOOTH_ERROR_INTERNAL - Error in API internal
2051  * @remark      None
2052 @code
2053
2054 int ret = 0;
2055 ret = bluetooth_is_supported();
2056 @endcode
2057  */
2058 int bluetooth_is_supported(void);
2059
2060
2061 /**
2062  * @fn int bluetooth_check_adapter(void)
2063  * @brief Check the current status of the Bluetooth adapter
2064  *
2065  *
2066  * This API checks whether the Bluetooth adapter is enabled or not. Before performing any operations
2067  * the bluetooth adapter should be enabled. This API helps to find out the current state of the
2068  * bluetooth adapter.
2069  * This API get the adapter internal data structure and check current adapter status.
2070  *
2071  * This function is a synchronous call.
2072  *
2073  *
2074  * @return      BLUETOOTH_ADAPTER_DISABLED - if bluetooth adapter is disabled\n
2075  *              BLUETOOTH_ADAPTER_ENABLED - if bluetooth adapter is enabled\n
2076  * @remark      None
2077  * @see         bluetooth_enable_adapter, bluetooth_disable_adapter
2078 @code
2079
2080 int ret = 0;
2081 ret = bluetooth_check_adapter();
2082 @endcode
2083  */
2084 int bluetooth_check_adapter(void);
2085
2086 /**
2087  * @fn int bluetooth_get_local_address(bluetooth_device_address_t *local_address)
2088  * @brief Get the local adapter bluetooth address
2089  *
2090  *
2091  * This API is used, get the device address of the local bluetooth adapter. Before calling this API,
2092  * the adapter should be enabled.
2093  * In its output parameter, you can receive bluetooth_device_address_t type of pointer which will
2094  * contain Bluetooth address.
2095  * Since its inconvenient for user to remember the address, Bluetooth provides a method to have a
2096  * friendly name for each device.
2097  * There is no event callback for this API.
2098  *
2099  * This function is a synchronous call.
2100  *
2101  *
2102  * @return      BLUETOOTH_ERROR_NONE - Succeess \n
2103  *              BLUETOOTH_ERROR_INVALID_PARAM -  Invalid parameter (NULL buffer) \n
2104  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED -  Adapter is disabled \n
2105  * @param[out]  local_address   a device address of local bluetooth adapter
2106  * @remark      None
2107  * @see         None
2108 @code
2109
2110 bluetooth_device_address_t local_address={0,};
2111 int ret = 0;
2112
2113 ret = bluetooth_get_local_address(&local_address);
2114 @endcode
2115  */
2116 int bluetooth_get_local_address(bluetooth_device_address_t *local_address);
2117
2118 /**
2119  * @fn int bluetooth_get_local_version(bluetooth_version_t *version)
2120  * @brief Get the hci version
2121  *
2122  *
2123  * This function is used to get the bluetooth hci version
2124  * Before calling this API make sure that the adapter is enabled.
2125  *
2126  * This function is a synchronous call.
2127  *
2128  *
2129  * @return      BLUETOOTH_ERROR_NONE - Success \n
2130  *              BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
2131  * @param[out]  timeout   remain visibility timeout value
2132  * @remark      None
2133  @code
2134 bluetooth_version_t *version;
2135  int ret = 0;
2136  ret = bluetooth_get_local_version (&version);
2137  @endcode
2138  */
2139 int bluetooth_get_local_version(bluetooth_version_t *version);
2140
2141 /**
2142  * @fn int bluetooth_get_local_name(bluetooth_device_name_t* local_name)
2143  * @brief Get the local device name
2144  *
2145  *
2146  * This function is used, get the local device name. Since its difficult to remember the Adapter
2147  * address, the friendly name can be assigned to the adapter and we can get it using this API. This
2148  * friendly name is retrived by the remote device and displaying.
2149  * Before calling this API, the adapter should be enabled. There is no event callback for this API.
2150  *
2151  * This function is a synchronous call.
2152  *
2153  *
2154  * @return      BLUETOOTH_ERROR_NONE - Success \n
2155  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter (NULL buffer)\n
2156  * @param[out]  local_name      a local device name
2157  * @remark      None
2158  * @see         None
2159 @code
2160 bluetooth_device_name_t local_name={0,}
2161 int ret = 0;
2162 ret = bluetooth_get_local_name (&local_name);
2163 @endcode
2164  */
2165 int bluetooth_get_local_name(bluetooth_device_name_t *local_name);
2166
2167 /**
2168  * @fn int bluetooth_set_local_name(const bluetooth_device_name_t *local_name)
2169  * @brief Set the local device name
2170  *
2171  *
2172  * This function is used to set the local device name. This is a human friendly name whose
2173  * length can be BLUETOOTH_DEVICE_NAME_LENGTH_MAX maximum
2174  *
2175  * This function is a synchronous call.
2176  *
2177  * @param[in]   local_name   bluetooth device name to set local device
2178  *
2179  * @return      BLUETOOTH_ERROR_NONE - Success \n
2180  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
2181  *              BLUETOOTH_ERROR_INVALID_PARAM - Bluetooth name parameter is incorrect \n
2182  *              BLUETOOTH_ERROR_INVALID_DATA - Device address provided is incorrect \n
2183  *              BLUETOOTH_ERROR_NO_RESOURCES - Pre-allocated memory error \n
2184  *              BLUETOOTH_ERROR_INTERNAL - The dbus method call is fail \n
2185  *
2186  * @remark      None
2187
2188 @code
2189 bluetooth_device_name_t local_name={0,}
2190 int ret = 0;
2191 ret = bluetooth_set_local_name (&local_name);
2192 @endcode
2193  */
2194 int bluetooth_set_local_name(const bluetooth_device_name_t *local_name);
2195
2196
2197 /**
2198  * @fn int bluetooth_is_service_used(const char *service_uuid, gboolean *used)
2199  * @brief Check if the uuid is used or not
2200  *
2201  * This function is used to check if the uuid is used or not.
2202  *
2203  * This function is a synchronous call.
2204  *
2205  * @param[in]   service_uuid   service uuid (UUID 128 bit as string)
2206  * @param[out] used  if the uuid is used or not
2207  *
2208  * @return      BLUETOOTH_ERROR_NONE - Success \n
2209  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
2210  *              BLUETOOTH_ERROR_INVALID_PARAM - Bluetooth name parameter is incorrect \n
2211  *              BLUETOOTH_ERROR_INTERNAL - The dbus method call is fail \n
2212  *
2213  * @remark      None
2214  *
2215 @code
2216 gboolean used = FALSE;
2217 const char *uuid ="00001101-0000-1000-8000-00805F9B34FB";
2218 ret = bluetooth_is_service_used(uuid, &used);
2219 @endcode
2220  */
2221 int bluetooth_is_service_used(const char *service_uuid, gboolean *used);
2222
2223 /**
2224  * @fn int bluetooth_is_device_connected(const bluetooth_device_address_t *device_address, bluetooth_service_type_t type, gboolean *is_connected)
2225  * @brief Check if the device is connected to the specific service
2226  *
2227  * This function is used to check if if the device is connected to the specific service.
2228  *
2229  * This function is a synchronous call.
2230  *
2231  * @param[in]   local_address   a device address of remote bluetooth device
2232  * @param[in]   type the service type
2233  * @param[out] is_connected  if the device is connected or not
2234  *
2235  * @return      BLUETOOTH_ERROR_NONE - Success \n
2236  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
2237  *              BLUETOOTH_ERROR_INVALID_PARAM - Bluetooth name parameter is incorrect \n
2238  *              BLUETOOTH_ERROR_INTERNAL - The dbus method call is fail \n
2239  *
2240  * @remark      None
2241  *
2242 @code
2243 gboolean is_connected = FALSE;
2244 bluetooth_device_address_t device_address={{0x00,0x0D,0xFD,0x24,0x5E,0xFF}};
2245 ret = bluetooth_is_device_connected(&device_address, BLUETOOTH_HSP_SERVICE, &used);
2246 @endcode
2247  */
2248 int bluetooth_is_device_connected(const bluetooth_device_address_t *device_address,
2249                                 bluetooth_service_type_t type,
2250                                 gboolean *is_connected);
2251
2252 /**
2253  * @fn int bluetooth_get_connected_link_type(const bluetooth_device_address_t *device_address, bluetooth_connected_link_t *connected_link)
2254  * @brief Gets device's connected link type
2255  *
2256  * This function is used to get device's connected link type
2257  *
2258  * This function is a synchronous call.
2259  *
2260  * @param[in]   device_address  a device address of remote bluetooth device
2261  * @param[out]  connected_link  a device's connected link type
2262  *
2263  * @return      BLUETOOTH_ERROR_NONE - Success \n
2264  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
2265  *              BLUETOOTH_ERROR_INVALID_PARAM - Bluetooth name parameter is incorrect \n
2266  *              BLUETOOTH_ERROR_INTERNAL - The dbus method call is fail \n
2267  *
2268  * @remark      None
2269  *
2270 @code
2271 bluetooth_connected_link_t *connected_link = BLUETOOTH_CONNECTED_LINK_NONE;
2272 bluetooth_device_address_t device_address={{0x00,0x0D,0xFD,0x24,0x5E,0xFF}};
2273 ret = bluetooth_get_connected_link(&device_address, &connected_link);
2274 @endcode
2275  */
2276 int bluetooth_get_connected_link_type(const bluetooth_device_address_t *device_address,
2277                                 bluetooth_connected_link_t *connected_link);
2278
2279 /**
2280  * @fn int bluetooth_set_profile_trusted(const bluetooth_device_address_t *device_address, int profile, int trust)
2281  * @brief Sets a profile trusted for a device
2282  *
2283  * This function is used to Set a profile as trusted for a device
2284  *
2285  * This function is a synchronous call.
2286  *
2287  * @param[in]   device_address  a device address of remote bluetooth device
2288  * @param[in]   profile profile which is to be set as trusted[0-PBAP, 1-MAP, 2-SAP]
2289  * @param[in]   trust   to set as trusted or untrusted[1-trusted 0-untrusted]
2290  *
2291  * @return      BLUETOOTH_ERROR_NONE - Success \n
2292  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
2293  *              BLUETOOTH_ERROR_INVALID_PARAM - Bluetooth name parameter is incorrect \n
2294  *              BLUETOOTH_ERROR_INTERNAL - The dbus method call is fail \n
2295  *
2296  * @remark      None
2297  */
2298 int bluetooth_set_profile_trusted(
2299                 const bluetooth_device_address_t *device_address,
2300                 int profile, int trust);
2301
2302 /**
2303  * @fn int bluetooth_get_profile_trusted(const bluetooth_device_address_t *device_address, int profile, int *trust)
2304  * @brief Gets a profile is trusted for a device
2305  *
2306  * This function is used to Get a profile is trusted or not for a device
2307  *
2308  * This function is a synchronous call.
2309  *
2310  * @param[in]   device_address  a device address of remote bluetooth device
2311  * @param[in]   profile profile whose trust status is needed[0-PBAP, 1-MAP, 2-SAP]
2312  * @param[out]  trust   profile is set as trusted or untrusted[1-trusted 0-untrusted]
2313  *
2314  * @return      BLUETOOTH_ERROR_NONE - Success \n
2315  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
2316  *              BLUETOOTH_ERROR_INVALID_PARAM - Bluetooth name parameter is incorrect \n
2317  *              BLUETOOTH_ERROR_INTERNAL - The dbus method call is fail \n
2318  *
2319  * @remark      None
2320  */
2321 int bluetooth_get_profile_trusted(
2322                 const bluetooth_device_address_t *device_address,
2323                 int profile, int *trust);
2324
2325 /**
2326  * @fn int bluetooth_set_profile_restricted(const bluetooth_device_address_t *device_address, int profile, int restricted)
2327  * @brief Sets a profile restricted connection for a device
2328  *
2329  * This function is used to Set a profile as restricted for a device
2330  *
2331  * This function is a synchronous call.
2332  *
2333  * @param[in]   device_address  a device address of remote bluetooth device
2334  * @param[in]   profile profile which is to be set as restricted[1-HFP_HS, 2-A2DP]
2335  * @param[in]   restricted      to set as restricted or not[1-restricted 0-permitted]
2336  *
2337  * @return      BLUETOOTH_ERROR_NONE - Success \n
2338  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
2339  *              BLUETOOTH_ERROR_INVALID_PARAM - Bluetooth name parameter is incorrect \n
2340  *              BLUETOOTH_ERROR_INTERNAL - The dbus method call is fail \n
2341  *
2342  * @remark      None
2343  */
2344 int bluetooth_set_profile_restricted(
2345                 const bluetooth_device_address_t *device_address,
2346                 int profile, int restricted);
2347
2348 /**
2349  * @fn int bluetooth_get_profile_restricted(const bluetooth_device_address_t *device_address, int profile, int *restricted)
2350  * @brief Gets a restricted connection state
2351  *
2352  * This function is used to Get a profile is restricted or not for a device
2353  *
2354  * This function is a synchronous call.
2355  *
2356  * @param[in]   device_address  a device address of remote bluetooth device
2357  * @param[in]   profile profile whose restricted status is needed[1-HFP_HS, 2-A2DP]
2358  * @param[out]  restricted      profile is set as restricted or not[1-restricted 0-permitted]
2359  *
2360  * @return      BLUETOOTH_ERROR_NONE - Success \n
2361  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
2362  *              BLUETOOTH_ERROR_INVALID_PARAM - Bluetooth name parameter is incorrect \n
2363  *              BLUETOOTH_ERROR_INTERNAL - The dbus method call is fail \n
2364  *
2365  * @remark      None
2366  */
2367 int bluetooth_get_profile_restricted(
2368                 const bluetooth_device_address_t *device_address,
2369                 int profile, int *restricted);
2370
2371 /**
2372  * @fn int bluetooth_get_discoverable_mode(bluetooth_discoverable_mode_t *discoverable_mode_ptr)
2373  * @brief Get the visibility mode
2374  *
2375  *
2376  * This function is used to get the discoverable mode (Visibility option). Depending upon the
2377  * visibity mode, the property of the device is determined whether it can be discoverable, non
2378  * discoverable, connectable etc. Before calling this API make sure that the adapter is enabled.
2379  *
2380  * This function is a synchronous call.
2381  *
2382  *
2383  * @return      BLUETOOTH_ERROR_NONE - Success \n
2384  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
2385  *              BLUETOOTH_ERROR_INVALID_DATA - Invalid data \n
2386  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
2387  *              BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
2388  * @param[out]  discoverable_mode   current bluetooth discoverable mode
2389  * @remark      None
2390  * @see         bluetooth_set_discoverable_mode
2391  @code
2392  bluetooth_discoverable_mode_t discoverable_mode_ptr;
2393  int ret = 0;
2394  ret = bluetooth_get_discoverable_mode (&discoverable_mode_ptr);
2395  @endcode
2396  */
2397 int bluetooth_get_discoverable_mode(bluetooth_discoverable_mode_t *discoverable_mode_ptr);
2398
2399 /**
2400  * @fn int bluetooth_set_discoverable_mode(bluetooth_discoverable_mode_t discoverable_mode,
2401  *                                              int timeout)
2402  * @brief Set the visibility mode
2403  *
2404  *
2405  * This function is used to set the discoverable mode (Visibility option).
2406  *
2407  * Many times user may want to keep his device discoverable so that when peer device is performing
2408  * device search, he/she can find user's device. Application programmer can keep the mode as
2409  * BLUETOOTH_DISCOVERABLE_MODE_GENERAL_DISCOVERABLE or
2410  * BLUETOOTH_DISCOVERABLE_MODE_TIME_LIMITED_DISCOVERABLE for the same purpose. However, all these
2411  * modes cause bluetooth adapter to consume more battery. Hence developer should generally
2412  * keep discoverable mode as BLUETOOTH_DISCOVERABLE_MODE_CONNECTABLE.
2413  *
2414  * This function is a synchronous call.
2415  *
2416  * @return      BLUETOOTH_ERROR_NONE - Success \n
2417  *              BLUETOOTH_ERROR_NOT_SUPPORT - Requested mode is not supported \n
2418  *
2419  * @param[in]  discoverable_mode   the bluetooth discoverable mode to set
2420  * @param[in]  timeout   discoverable time in only limited discoverable mode (second), default: 0
2421  * @remark      None
2422  * @see         bluetooth_get_discoverable_mode
2423
2424 @code
2425
2426 bluetooth_discoverable_mode_t mode;
2427 int ret = 0;
2428 mode= BLUETOOTH_DISCOVERABLE_MODE_TIME_LIMITED_DISCOVERABLE;
2429 ret = bluetooth_set_discoverable_mode (mode, 180);
2430
2431 @endcode
2432  */
2433 int bluetooth_set_discoverable_mode(bluetooth_discoverable_mode_t discoverable_mode,
2434                                             int timeout);
2435
2436
2437 /**
2438  * @fn int bluetooth_get_timeout_value(int *timeout)
2439  * @brief Get the visibility timeout value
2440  *
2441  *
2442  * This function is used to get the visibility timeout
2443  * Before calling this API make sure that the adapter is enabled.
2444  *
2445  * This function is a synchronous call.
2446  *
2447  *
2448  * @return      BLUETOOTH_ERROR_NONE - Success \n
2449  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
2450  *              BLUETOOTH_ERROR_INVALID_DATA - Invalid data \n
2451  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
2452  *              BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
2453  * @param[out]  timeout   remain visibility timeout value
2454  * @remark      None
2455  * @see         bluetooth_set_discoverable_mode
2456  @code
2457  int timeout;
2458  int ret = 0;
2459  ret = bluetooth_get_timeout_value (&timeout);
2460  @endcode
2461  */
2462 int bluetooth_get_timeout_value(int *timeout);
2463
2464
2465 /**
2466  * @fn int bluetooth_start_discovery(unsigned short max_response, unsigned short discovery_duration,
2467  *                                      unsigned int  classOfDeviceMask)
2468  * @brief Start the generic device discovery which finds both the BR/EDR and LE devices.
2469  *
2470  * To connect connect to peer bluetooth device, you will need to know its bluetooth address and its
2471  * name. You can search for Bluetooth devices in vicinity by bluetooth_start_discovery() API. It
2472  * first performs an inquiry and try to find both the BREDR and LE devices. For each device found
2473  * from the inquiry it gets the remote name of the device. Bluetooth device address and name are
2474  * given to Application via BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND event. In param_data of
2475  * bluetooth_event_param_t, you will receive a pointer to a structure of bluetooth_device_info_t type.
2476  * You will receive device address, device name, device class, rssi (received signal strength indicator).
2477  * please see bluetooth_device_info_t for more details.
2478  *
2479  *
2480  * This API provides searching options like max responses, discovery duration in seconds and class
2481  * of device mask to filter device search. some times there may be too many bluetooth devices in
2482  * vicinity of your device.in such scenario, application can request to reduce number of responces
2483  * (BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND event) with help of max_response parameter. However if you
2484  * pass zero, bluetooth adapter will not restrict number of responses. you can also specify duration
2485  * of the seach in discovery_duration. bluetooth adapter will automatically stop device search after
2486  * application defined time. please note that discovery_duration should be mentioned in seconds.
2487  * Also note that search will end after 180 seconds automatically if you pass 0 in discovery
2488  * duration.
2489  *
2490  * Sometimes user may want to search for a particular kind of device. for ex, mobile or pc. in such
2491  * case, you can use classOfDeviceMask parameter. please see bluetooth_device_service_class_t,
2492  * bluetooth_device_major_class_t and bluetooth_device_minor_class_t enums
2493  *
2494  * This function is a asynchronous call.
2495  * If the call is success then the application will receive BLUETOOTH_EVENT_DISCOVERY_STARTED event
2496  * through registered callback function.
2497  *
2498  * The discovery is responded by an BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND event for each device it
2499  * found and a BLUETOOTH_EVENT_REMOTE_DEVICE_NAME_UPDATED event for its name updation.
2500  *
2501  * The completion or cancellation of the discovery is indicated by an
2502  * BLUETOOTH_EVENT_DISCOVERY_FINISHED event.
2503  *
2504  * The device discovery can be cancelled by calling bluetooth_stop_discovery().
2505  *
2506  *
2507  * @return      BLUETOOTH_ERROR_NONE - Success \n
2508  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Bluetooth adapter is not enabled \n
2509  *              BLUETOOTH_ERROR_DEVICE_BUSY - Bluetooth adapter is busy doing some operation \n
2510  *              BLUETOOTH_ERROR_INTERNAL - System error like heap full has occured or bluetooth
2511                                                 agent is not running \n
2512  *
2513  * @param[in] max_response              define the maximum response of the number of founded devices
2514                                         (0 means unlimited)
2515  * @param[in] discovery_duration        define bluetooth discovery duration (0 means 180s )
2516  * @param[in] classOfDeviceMask         define classes of the device mask which user wants
2517                                         (refer to class of device)
2518  * @remark      None
2519  * @see         bluetooth_start_custom_discovery(), bluetooth_cancel_discovery, bluetooth_device_info_t
2520
2521 @code
2522 void bt_event_callback(int event, bluetooth_event_param_t *param)
2523 {
2524         switch(event)
2525         {
2526                 case BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND:
2527                 {
2528                         bluetooth_device_info_t *device_info = NULL;
2529                         printf("BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND, result [0x%04x]",
2530                                         param->result);
2531                         device_info  = (bluetooth_device_info_t *)param->param_data;
2532                         memcpy(&searched_device, &device_info->device_address,
2533                                                 sizeof(bluetooth_device_address_t));
2534                         printf("dev [%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X]",
2535                                 device_info->device_address.addr[0],
2536                                 device_info->device_address.addr[1],
2537                                 device_info->device_address.addr[2],
2538                                 device_info->device_address.addr[3],
2539                                 device_info->device_address.addr[4],
2540                                 device_info->device_address.addr[5]);
2541                         break;
2542                 }
2543                 case BLUETOOTH_EVENT_REMOTE_DEVICE_NAME_UPDATED:
2544                 {
2545                         bluetooth_device_info_t *device_info = NULL;
2546                         printf("BLUETOOTH_EVENT_REMOTE_DEVICE_NAME_UPDATED, result [0x%04x]",
2547                                                                                 param->result);
2548                         device_info  = (bluetooth_device_info_t *)param->param_data;
2549                         memcpy(&searched_device, &device_info->device_address,
2550                                                                 sizeof(bluetooth_device_address_t));
2551                         printf("dev [%s] [%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X]",
2552                                                         device_info->device_name.name,
2553                                                         device_info->device_address.addr[0],
2554                                                         device_info->device_address.addr[1],
2555                                                         device_info->device_address.addr[2],
2556                                                         device_info->device_address.addr[3],
2557                                                         device_info->device_address.addr[4],
2558                                                         device_info->device_address.addr[5]);
2559                         break;
2560                 }
2561
2562                 case BLUETOOTH_EVENT_DISCOVERY_FINISHED:
2563                         printf("BLUETOOTH_EVENT_DISCOVERY_FINISHED, result[0x%04x]", param->result);
2564                         break;
2565         }
2566 }
2567
2568 unsigned short max_response;
2569 unsigned short discovery_duration;
2570 unsigned classOfDeviceMask;
2571 int ret = 0;
2572
2573 max_response =0;
2574 discovery_duration =0;
2575 classOfDeviceMask =0;
2576
2577 ret = bluetooth_start_discovery(max_response,discovery_duration,classOfDeviceMask);
2578
2579 @endcode
2580  *
2581  */
2582 int bluetooth_start_discovery(unsigned short max_response,
2583                                       unsigned short discovery_duration,
2584                                       unsigned int classOfDeviceMask);
2585
2586 /**
2587  * @fn int bluetooth_start_custom_discovery(bt_discovery_role_type_t role
2588  *                                      unsigned short max_response,
2589  *                                      unsigned short discovery_duration,
2590  *                                      unsigned int  classOfDeviceMask)
2591  * @brief Start the custom device discovery with specific type such as BR/EDR, LE, LE+BR/EDR etc.
2592  *
2593  * Sometimes user may want to search for a particular kind of device. for ex, LE only or BR/EDR only.
2594  * In such case, you can use type parameter. This API is similar to that of bluetooth_start_discovery().
2595  * Please see bluetooth_start_discovery() for other parameters description.
2596  *
2597  * This function is a asynchronous call.
2598  * If the call is success then the application will receive BLUETOOTH_EVENT_DISCOVERY_STARTED event
2599  * through registered callback function.
2600  *
2601  * The discovery is responded by an BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND event for each device it
2602  * found and a BLUETOOTH_EVENT_REMOTE_DEVICE_NAME_UPDATED event for its name updation.
2603  *
2604  * The completion or cancellation of the discovery is indicated by an
2605  * BLUETOOTH_EVENT_DISCOVERY_FINISHED event.
2606  *
2607  * The device discovery can be cancelled by calling bluetooth_stop_discovery().
2608  *
2609  *
2610  * @return      BLUETOOTH_ERROR_NONE - Success \n
2611  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Bluetooth adapter is not enabled \n
2612  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
2613  *              BLUETOOTH_ERROR_IN_PROGRESS - Bluetooth adapter is busy with another discovery \n
2614  *              BLUETOOTH_ERROR_INTERNAL - System error like heap full has occured or bluetooth
2615                                                 agent is not running \n
2616  *
2617  * @param[in] role              define the role type of devices to be discovered. See enum bt_discovery_role_type_t.
2618                                         (DISCOVERY_ROLE_BREDR means BREDR only, DISCOVERY_ROLE_LE mean Low Energy only,
2619                                         DISCOVERY_ROLE_LE_BREDR means LE & BREDR - same as bluetooth_start_discovery())
2620  * @param[in] max_response              define the maximum response of the number of founded devices
2621                                         (0 means unlimited)
2622  * @param[in] discovery_duration        define bluetooth discovery duration (0 means 180s )
2623  * @param[in] classOfDeviceMask         define classes of the device mask which user wants
2624                                         (refer to class of device)
2625  * @remark      None
2626  * @see         bluetooth_start_discovery(), bluetooth_cancel_discovery, bluetooth_device_info_t
2627
2628 @code
2629 unsigned short type;
2630 unsigned short max_response;
2631 unsigned short discovery_duration;
2632 unsigned classOfDeviceMask;
2633 int ret = 0;
2634
2635 type = 1;
2636 max_response =0;
2637 discovery_duration =0;
2638 classOfDeviceMask =0;
2639
2640 ret = bluetooth_start_custom_discovery(type, max_response, discovery_duration, classOfDeviceMask);
2641
2642 @endcode
2643  *
2644  */
2645 int bluetooth_start_custom_discovery(bt_discovery_role_type_t role,
2646                                                 unsigned short max_response,
2647                                                 unsigned short discovery_duration,
2648                                                 unsigned int classOfDeviceMask);
2649
2650 /**
2651  * @fn int bluetooth_cancel_discovery (void)
2652  * @brief Cancel the on-going device discovery operation
2653  *
2654  *
2655  * This function stops the on-going device discovery operation. This API has to be called after the
2656  * bluetooth_start_discovery API and before the BLUETOOTH_EVENT_DISCOVERY_FINISHED event comes of
2657  * the bluetooth_start_discovery API
2658  *
2659  * Normally the device discovery takes a more time (~10.24 seconds) to get all the devices in its
2660  * vicinity and it recevies as BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND event. This API helps us to
2661  * cancel the discover request once the user received the device to which he wish to connect.
2662  *
2663  * This function is a asynchronous call.
2664  * If the call is success to cancel discovey then the application will receive
2665  * BLUETOOTH_EVENT_DISCOVERY_FINISHED event through registered callback function
2666  * with an error code BLUETOOTH_ERROR_CANCEL. In the case of failure the error code will be
2667  * BLUETOOTH_ERROR_NONE
2668  *
2669  *
2670  * @return      BLUETOOTH_ERROR_NONE - Success \n
2671  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
2672  *              BLUETOOTH_ERROR_NOT_IN_OPERATION - No Discovery operation in progess to cancel \n
2673  *              BLUETOOTH_ERROR_ACCESS_DENIED - Currently in discovery but it is requested from
2674                                                 other application \n
2675  *              BLUETOOTH_ERROR_INTERNAL - Internel IPC error \n
2676  * @remark      None
2677  * @see         bluetooth_start_discovery
2678 @code
2679 void bt_event_callback(int event, bluetooth_event_param_t *param)
2680 {
2681         switch(event)
2682         {
2683                 case BLUETOOTH_EVENT_DISCOVERY_FINISHED:
2684                         TC_PRT("BLUETOOTH_EVENT_DISCOVERY_FINISHED, result[0x%04x]", param->result);
2685                         break;
2686         }
2687 }
2688
2689 ..
2690
2691 int ret = 0;
2692
2693 ret = bluetooth_cancel_discovery();
2694 @endcode
2695  */
2696 int bluetooth_cancel_discovery(void);
2697
2698 /**
2699  * @fn int bluetooth_start_le_discovery(void)
2700  * @brief Start the generic device discovery which finds the LE devices.
2701  *
2702  * To connect connect to peer bluetooth device, you will need to know its bluetooth address and its
2703  * name. You can search for Bluetooth devices in vicinity by bluetooth_start_le_discovery() API.
2704  * It try to find LE devices. Bluetooth device address and name are
2705  * given to Application via BLUETOOTH_EVENT_REMOTE_LE_DEVICE_FOUND event. In param_data of
2706  * bluetooth_event_param_t, you will receive a pointer to a structure of bluetooth_device_info_t type.
2707  * You will receive device address, device name, device class, rssi (received signal strength indicator).
2708  * please see bluetooth_device_info_t for more details.
2709  *
2710  * This function is a asynchronous call.
2711  * If the call is success then the application will receive BLUETOOTH_EVENT_LE_DISCOVERY_STARTED event
2712  * through registered callback function.
2713  *
2714  * The discovery is responded by an BLUETOOTH_EVENT_REMOTE_LE_DEVICE_FOUND event for each device it
2715  * found.
2716  *
2717  * The completion or cancellation of the discovery is indicated by an
2718  * BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED event.
2719  *
2720  * The device discovery can be cancelled by calling bluetooth_stop_le_discovery().
2721  *
2722  *
2723  * @return      BLUETOOTH_ERROR_NONE - Success \n
2724  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Bluetooth adapter is not enabled \n
2725  *              BLUETOOTH_ERROR_DEVICE_BUSY - Bluetooth adapter is busy doing some operation \n
2726  *              BLUETOOTH_ERROR_INTERNAL - System error like heap full has occured or bluetooth
2727                                                 agent is not running \n
2728  *
2729  * @remark      None
2730  * @see         bluetooth_stop_le_discovery, bluetooth_device_info_t
2731
2732 @code
2733 void bt_event_callback(int event, bluetooth_event_param_t *param)
2734 {
2735         switch(event)
2736         {
2737                 case BLUETOOTH_EVENT_REMOTE_LE_DEVICE_FOUND:
2738                 {
2739                         bluetooth_device_info_t *device_info = NULL;
2740                         printf("BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND, result [0x%04x]",
2741                                         param->result);
2742                         device_info  = (bluetooth_device_info_t *)param->param_data;
2743                         memcpy(&searched_device, &device_info->device_address,
2744                                                 sizeof(bluetooth_device_address_t));
2745                         printf("dev [%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X]",
2746                                 device_info->device_address.addr[0],
2747                                 device_info->device_address.addr[1],
2748                                 device_info->device_address.addr[2],
2749                                 device_info->device_address.addr[3],
2750                                 device_info->device_address.addr[4],
2751                                 device_info->device_address.addr[5]);
2752                         break;
2753                 }
2754
2755                 case BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED:
2756                         printf("BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED, result[0x%04x]", param->result);
2757                         break;
2758         }
2759 }
2760
2761 int ret = 0;
2762 ret = bluetooth_start_discovery();
2763
2764 @endcode
2765  *
2766  */
2767 int bluetooth_start_le_discovery(void);
2768
2769 /**
2770  * @fn int bluetooth_stop_le_discovery (void)
2771  * @brief Cancel the on-going device LE discovery operation
2772  *
2773  *
2774  * This function stops the on-going device discovery operation. This API has to be called after the
2775  * bluetooth_start_le_discovery API and before the BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED event comes of
2776  * the bluetooth_start_le_discovery API
2777  *
2778  *
2779  * This function is a asynchronous call.
2780  * If the call is success to cancel discovey then the application will receive
2781  * BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED event through registered callback function
2782  * with an error code BLUETOOTH_ERROR_CANCEL. In the case of failure the error code will be
2783  * BLUETOOTH_ERROR_NONE
2784  *
2785  *
2786  * @return      BLUETOOTH_ERROR_NONE - Success \n
2787  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
2788  *              BLUETOOTH_ERROR_NOT_IN_OPERATION - No Discovery operation in progess to cancel \n
2789  *              BLUETOOTH_ERROR_ACCESS_DENIED - Currently in discovery but it is requested from
2790                                                 other application \n
2791  *              BLUETOOTH_ERROR_INTERNAL - Internel IPC error \n
2792  * @remark      None
2793  * @see         bluetooth_start_discovery
2794 @code
2795 void bt_event_callback(int event, bluetooth_event_param_t *param)
2796 {
2797         switch(event)
2798         {
2799                 case BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED:
2800                         TC_PRT("BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED, result[0x%04x]", param->result);
2801                         break;
2802         }
2803 }
2804
2805 ..
2806
2807 int ret = 0;
2808
2809 ret = bluetooth_stop_le_discovery();
2810 @endcode
2811  */
2812 int bluetooth_stop_le_discovery(void);
2813
2814 /**
2815  * @fn int bluetooth_is_discovering(void)
2816  * @brief Check for the device discovery is in-progress or not.
2817  *
2818  * This API is used to check the current status of the Discovery operation.If discovery is in\
2819  * progress normally other operations are not allowed.
2820  * If a device discovery is in progress, we have to either cancel the discovery operation or wait
2821  * for the BLUETOOTH_EVENT_DISCOVERY_FINISHED
2822  * event before performing other operations. This API is used to get for the current discovery
2823  * operation status and using bluetooth_cancel_discovery()
2824  * we can cancell the ongoing discovery process.
2825  * Before calling this API, make sure that the adapter is enabled. There is no callback event for
2826  * this API.
2827  *
2828  * This function checks whether the device discovery is started or not.
2829  *
2830  * This function is a synchronous call.
2831  *
2832  *
2833  * @return      BLUETOOTH_ERROR_NONE - Discovery is not in progress \n
2834  *              BLUETOOTH_ERROR_NONE+1 - Discovery in progress \n
2835  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
2836  *
2837  * @remark      None
2838  * @see         bluetooth_start_discovery, bluetooth_cancel_discovery
2839
2840 @code
2841 int ret = 0;
2842 ret = bluetooth_is_discovering ();
2843 @endcode
2844  */
2845 int bluetooth_is_discovering(void);
2846
2847 /**
2848  * @fn int bluetooth_is_le_discovering(void)
2849  * @brief Check for the device LE discovery is in-progress or not.
2850  *
2851  * This API is used to check the current status of the LE Discovery operation.If discovery is in\
2852  * progress normally other operations are not allowed.
2853  * If a device discovery is in progress, we have to either cancel the discovery operation or wait
2854  * for the BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED
2855  * event before performing other operations. This API is used to get for the current discovery
2856  * operation status and using bluetooth_stop_le_discovery()
2857  * we can cancell the ongoing LE discovery process.
2858  * Before calling this API, make sure that the adapter is enabled. There is no callback event for
2859  * this API.
2860  *
2861  * This function checks whether the device  LE discovery is started or not.
2862  *
2863  * This function is a synchronous call.
2864  *
2865  *
2866  * @return      BLUETOOTH_ERROR_NONE - Discovery is not in progress \n
2867  *              BLUETOOTH_ERROR_NONE+1 - Discovery in progress \n
2868  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
2869  *
2870  * @remark      None
2871  * @see         bluetooth_start_le_discovery, bluetooth_stop_le_discovery
2872
2873 @code
2874 int ret = 0;
2875 ret = bluetooth_is_le_discovering ();
2876 @endcode
2877  */
2878 int bluetooth_is_le_discovering(void);
2879
2880 /**
2881  * @fn int bluetooth_is_le_scanning(void)
2882  * @brief Check for the device LE scan is in-progress or not.
2883  *
2884  * This API is used to check the current status of the LE Scan operation.If discovery is in\
2885  * progress normally other operations are not allowed.
2886  *
2887  * This function checks whether the device  LE Scan is started or not.
2888  *
2889  * This function is a synchronous call.
2890  *
2891  * @return   TRUE  - LE Scan in progress \n
2892  *              FALSE - LE Scan is not in progress \n
2893  *
2894  * @remark      None
2895
2896 @code
2897 gboolean is_le_scanning = 0;
2898 is_le_scanning = bluetooth_is_le_scanning ();
2899 @endcode
2900  */
2901 gboolean bluetooth_is_le_scanning(void);
2902
2903 gboolean bluetooth_is_scan_filter_supported(void);
2904
2905 /**
2906  * @fn int bluetooth_force_hcidump(int timeout)
2907  * @brief Enable /disable force-hcidump
2908  *
2909  * This function control force-hcidump.
2910  *
2911  * This function is a synchronous call.
2912  *
2913  * @return      BLUETOOTH_ERROR_NONE - Success \n
2914  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
2915  *              BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
2916  *
2917  * @param[in]   start  To enable or disable force-hcidump[TRUE / FALSE]
2918  *
2919  *
2920  * @remark      None
2921  */
2922 int bluetooth_force_hcidump(int timeout);
2923
2924 /**
2925  * @fn int bluetooth_register_scan_filter(bluetooth_le_scan_filter_t *filter, int *slot_id)
2926  * @brief Register scan filter.
2927  *
2928  * This function registers the scan filter.
2929  *
2930  * This function is a synchronous call.
2931  *
2932  * @return      BLUETOOTH_ERROR_NONE - Success \n
2933  *
2934  * @param[in]   filter   scan filter to register
2935  * @param[out]  slot_id  the slot ID of scan filter
2936  *
2937  * @remark      None
2938  */
2939 int bluetooth_register_scan_filter(bluetooth_le_scan_filter_t *filter, int *slot_id);
2940
2941 /**
2942  * @fn int bluetooth_unregister_scan_filter(int slot_id)
2943  * @brief Register scan filter.
2944  *
2945  * This function unregisters the scan filter.
2946  *
2947  * This function is a synchronous call.
2948  *
2949  * @return      BLUETOOTH_ERROR_NONE - Success \n
2950  *
2951  * @param[in]   slot_id  the slot ID of scan filter
2952  *
2953  * @remark      None
2954  */
2955 int bluetooth_unregister_scan_filter(int slot_id);
2956
2957 /**
2958  * @fn int bluetooth_unregister_all_scan_filters(void)
2959  * @brief Register scan filter.
2960  *
2961  * This function usregisters all scan filters.
2962  *
2963  * This function is a synchronous call.
2964  *
2965  * @return      BLUETOOTH_ERROR_NONE - Success \n
2966  *
2967  * @remark      None
2968  */
2969 int bluetooth_unregister_all_scan_filters(void);
2970
2971 /**
2972  * @fn int bluetooth_enable_rssi(const bluetooth_device_address_t *remote_address,
2973                 int link_type, bt_rssi_threshold_t rssi_threshold)
2974  * @brief Enable RSSI monitoring
2975  *
2976  * This function enables RSSI monitoring and sets threshold for a connection
2977  *
2978  * @return      BLUETOOTH_ERROR_NONE - Success \n
2979  *
2980  * @remark      None
2981  * @see bluetooth_get_rssi_strength
2982  */
2983 int bluetooth_enable_rssi(const bluetooth_device_address_t *remote_address,
2984                 int link_type, bt_rssi_threshold_t *rssi_threshold);
2985
2986 /**
2987  * @fn int bluetooth_get_rssi_strength(const bluetooth_device_address_t *remote_address, int link_type)
2988  * @brief Gets Raw RSSI signal Strength
2989  *
2990  * This function gives the Raw RSSI signal strength for a connection.
2991  *
2992  * @return      BLUETOOTH_ERROR_NONE - Success \n
2993  *
2994  * @remark      None
2995  * @see bluetooth_enable_rssi
2996  */
2997 int bluetooth_get_rssi_strength(const bluetooth_device_address_t *remote_address, int link_type);
2998
2999 int bluetooth_set_connectable(gboolean is_connectable);
3000
3001 int bluetooth_is_connectable(gboolean *is_connectable);
3002
3003 /**
3004  * @fn int bluetooth_bond_device(const bluetooth_device_address_t *device_address)
3005  * @brief Initiate a bonding process
3006  *
3007  *
3008  * This function initiates a bonding procedure with a peer device.  The bonding procedure
3009  * enables authentication and optionally encryption on the Bluetooth link.
3010  *
3011  * Bonding is applied to the discovered device to which we need a secure connection. We cannot
3012  * inititate the bonding request to the devices already in the paired list.
3013  *
3014  * Usually we call this API after the device discovery.
3015  * This function is a asynchronous call.
3016  *
3017  * Response will be received through BLUETOOTH_EVENT_BONDING_FINISHED event. It can any of the below
3018  * mentioed result code
3019  * BLUETOOTH_ERROR_PARING_FAILED - Pairing faied \n
3020  * BLUETOOTH_ERROR_ACCESS_DENIED - Authetication rejected \n
3021  * BLUETOOTH_ERROR_CANCEL_BY_USER - Cancelled by the user \n
3022  * BLUETOOTH_ERROR_PARING_FAILED - Pairing failed \n
3023  * BLUETOOTH_ERROR_TIMEOUT - Timeout has haapened \n
3024  *
3025  * If the remote user is not responding with in a specific time(60 seconds), then a timeout happens
3026  * and BLUETOOTH_EVENT_BONDING_FINISHED callback event is called with and BLUETOOTH_ERROR_TIMEOUT
3027  * result code
3028  *
3029  * The bonding operation can be cancelled by calling bluetooth_cancel_bonding().
3030  *
3031  *
3032  * @return      BLUETOOTH_ERROR_NONE - Success \n
3033  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
3034  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
3035  *              BLUETOOTH_ERROR_DEVICE_BUSY - Adapter is busy or Discovery is in Progress \n
3036  *              BLUETOOTH_ERROR_INVALID_DATA - Invalid BD address \n
3037  * @exception   None
3038  * @param[in]   device_address   This indicates an address of the device with which the pairing
3039  *                                      should be initiated
3040  * @remark      None
3041  * @see         bluetooth_cancel_bonding
3042  @code
3043 void bt_event_callback(int event, bluetooth_event_param_t *param)
3044 {
3045         switch(event)
3046         {
3047                 case BLUETOOTH_EVENT_BONDING_FINISHED:
3048                 {
3049                         TC_PRT("BLUETOOTH_EVENT_BONDING_FINISHED, result [0x%04x]", param->result);
3050                         if (param->result >= BLUETOOTH_ERROR_NONE)
3051                         {
3052                                 bluetooth_device_info_t *device_info = NULL;
3053                                 device_info  = (bluetooth_device_info_t *)param->param_data;
3054                                 printf("dev [%s] [%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X]
3055                                                         mjr[%#x] min[%#x] srv[%#x]",
3056                                                         device_info->device_name.name,
3057                                                         device_info->device_address.addr[0],
3058                                                         device_info->device_address.addr[1],
3059                                                         device_info->device_address.addr[2],
3060                                                         device_info->device_address.addr[3],
3061                                                         device_info->device_address.addr[4],
3062                                                         device_info->device_address.addr[5],
3063                                                         device_info->device_class.major_class,
3064                                                         device_info->device_class.minor_class,
3065                                                         device_info->device_class.service_class);
3066                         }
3067                         else
3068                         {
3069                                 //bonding failed
3070                         }
3071                         break;
3072                 }
3073         }
3074 }
3075
3076 ...
3077
3078 int ret = 0;
3079 bluetooth_device_address_t device_address={{0}};
3080
3081 ret = bluetooth_bond_device(&device_address);
3082
3083 @endcode
3084  */
3085 int bluetooth_bond_device(const bluetooth_device_address_t *device_address);
3086
3087 /**
3088  * @fn int bluetooth_bond_device_by_type(const bluetooth_device_address_t *device_address,
3089  *                              bluetooth_conn_type_t conn_type)
3090  * @brief Initiate a bonding process
3091  *
3092  *
3093  * This function initiates a bonding procedure with a peer device on the basis of connection type (BLE or BREDR).
3094  * The bonding procedure enables authentication and optionally encryption on the Bluetooth link.
3095  *
3096  * Bonding is applied to the discovered device to which we need a secure connection. We cannot
3097  * inititate the bonding request to the devices already in the paired list.
3098  *
3099  * Usually we call this API after the device discovery.
3100  * This function is a asynchronous call.
3101  *
3102  * Response will be received through BLUETOOTH_EVENT_BONDING_FINISHED event. It can any of the below
3103  * mentioed result code
3104  * BLUETOOTH_ERROR_PARING_FAILED - Pairing faied \n
3105  * BLUETOOTH_ERROR_ACCESS_DENIED - Authetication rejected \n
3106  * BLUETOOTH_ERROR_CANCEL_BY_USER - Cancelled by the user \n
3107  * BLUETOOTH_ERROR_PARING_FAILED - Pairing failed \n
3108  * BLUETOOTH_ERROR_TIMEOUT - Timeout has haapened \n
3109  *
3110  * If the remote user is not responding with in a specific time(60 seconds), then a timeout happens
3111  * and BLUETOOTH_EVENT_BONDING_FINISHED callback event is called with and BLUETOOTH_ERROR_TIMEOUT
3112  * result code
3113  *
3114  * The bonding operation can be cancelled by calling bluetooth_cancel_bonding().
3115  *
3116  *
3117  * @return BLUETOOTH_ERROR_NONE - Success \n
3118  *             BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
3119  *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
3120  *             BLUETOOTH_ERROR_DEVICE_BUSY - Adapter is busy or Discovery is in Progress \n
3121  *             BLUETOOTH_ERROR_INVALID_DATA - Invalid BD address \n
3122  * @exception None
3123  * @param[in] device_address This indicates an address of the device with which pairing
3124  *                                        should be initiated
3125  * @param[in] conn_type This Indicates the connection type to be used for pairing in case of
3126  *                                 dual mode devices
3127  * @remark None
3128  * @see bluetooth_cancel_bonding
3129  */
3130 int bluetooth_bond_device_by_type(const bluetooth_device_address_t *device_address,
3131                                 bluetooth_conn_type_t conn_type);
3132
3133 /**
3134  * @fn int bluetooth_cancel_bonding(void)
3135  * @brief Cancel the on-going bonding process
3136  *
3137  * This API is called to cancel the on-going bonding procedure. It should be called before the
3138  * BLUETOOTH_EVENT_BONDING_FINISHED event comes.
3139  * This API is useful when the remote device is not responding to the bond request or we wish to
3140  * cancel the bonding request. In this case we need not wait for the timeout to happen.
3141  *
3142  * This function is a synchronous call.
3143  *
3144  * @return      BLUETOOTH_ERROR_NONE - Success \n
3145  *              BLUETOOTH_ERROR_NOT_IN_OPERATION - No bonding request in progress \n
3146  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
3147  * @exception   None
3148  * @remark      None
3149  * @see         bluetooth_bond_device
3150 @code
3151 ...
3152
3153 int ret = 0;
3154
3155 ret = bluetooth_cancel_bonding();
3156 @endcode
3157  */
3158 int bluetooth_cancel_bonding(void);
3159
3160 /**
3161  * @fn int bluetooth_unbond_device(const bluetooth_device_address_t *device_address)
3162  * @brief Remove bonding
3163  *
3164  *
3165  * To communicate with remote device over bluetooth link, user should bond with peer device.
3166  * After bonding is over, peer device is added to list of bonded devices. bluetooth_unbond_device()
3167  * API is used to remove peer device from the list. Please note that after removing the device
3168  * from bonded device list, you cannot communication with peer device until bonding happens again.
3169  *
3170  * User can call this function by passing bluetooth device address of any bonded device. Please note
3171  * that after successful return of this function, any bluetooth application running on your device
3172  * will not be able to communicate with unbonded device until bond operation happens again using
3173  * bluetooth_bond_device()
3174  *
3175  *
3176  * This function is a asynchronous call. The request to remove the specified device from the bonded
3177  * list is responded by an BLUETOOTH_EVENT_BONDED_DEVICE_REMOVED event. if the operation is success,
3178  * you will receive BLUETOOTH_ERROR_NONE. BLUETOOTH_ERROR_NOT_PAIRED may be received in result code
3179  * in case if there is a problem in locating given bluetooth device address in bonded devices list
3180  *
3181  *
3182  *
3183  * @return      BLUETOOTH_ERROR_NONE - Success \n
3184  *              BLUETOOTH_ERROR_INVALID_PARAM - Device address is not valid \n
3185  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Bluetooth adapter is not enabled \n
3186  *              BLUETOOTH_ERROR_DEVICE_BUSY     - Bluetooth adapter is busy doing some operation \n
3187  *              BLUETOOTH_ERROR_INVALID_DATA - Device address provided is incorrect \n
3188  *              BLUETOOTH_ERROR_INTERNAL - System error like heap full has occured or bluetooth
3189  *                                              agent is not running \n
3190  *              BLUETOOTH_ERROR_NOT_PAIRED - Device address mentioned in the argument is not a
3191  *                                              bonded device \n
3192  *
3193  * @param[in]   device_address   This indicates an address of the device to remove bonding
3194  *
3195  * @remark      None
3196  *
3197  * @see         bluetooth_bond_device, bluetooth_cancel_bonding
3198  *
3199 @code
3200 void bt_event_callback(int event, bluetooth_event_param_t *param)
3201 {
3202         switch(event) {
3203                 case BLUETOOTH_EVENT_BONDED_DEVICE_REMOVED: {
3204                         bluetooth_device_address_t *dev_addr = NULL;
3205
3206                         if (param->result == BLUETOOTH_ERROR_NONE) {
3207                                 dev_addr = (bluetooth_device_address_t *)param->param_data;
3208                                 //Unbound scuccess
3209                                 printf("%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X\n",
3210                                         dev_addr->addr[0], dev_addr->addr[1]
3211                                         dev_addr->addr[2], dev_addr->addr[3]
3212                                         dev_addr->addr[4], dev_addr->addr[5]
3213                         } else {
3214                                 //unbound failure
3215                         }
3216                 }
3217         }
3218 }
3219
3220 ...
3221
3222 int ret = 0;
3223 bluetooth_device_address_t *device_address;
3224
3225 // copy valid device address in device_address
3226
3227 ret = bluetooth_unbond_device(device_address);
3228 @endcode
3229  */
3230 int bluetooth_unbond_device(const bluetooth_device_address_t *device_address);
3231
3232 /**
3233  * @fn int bluetooth_get_bonded_device_list(GPtrArray **dev_list)
3234  * @brief Get bonded(paired) device list
3235  *
3236  *
3237  * This API gets all bonded device list.
3238  * The devices in the bonded device list further can be used to perform the authorization by calling
3239  * bluetooth_authorize_device API.
3240  *
3241  * This function is a synchronous call.
3242  * Information for bonded devices can be obtained when result code is BLUETOOTH_ERROR_NONE. If not,
3243  * there is no valid information in the dev_list.
3244  * The len field in the dev_list represents the number of bonded devices. The data structure for
3245  * bonded device information is bluetooth_device_info_t.
3246  *
3247  *
3248  * @return      BLUETOOTH_ERROR_NONE - Success \n
3249  *              BLUETOOTH_ERROR_NOT_SUPPORT - Opreation not supported \n
3250  * @remark      None
3251  * @see         bluetooth_bond_device, bluetooth_unbond_device, bluetooth_authorize_device
3252  @code
3253 void bt_get_bonded_devices(void)
3254 {
3255 ...
3256         int i;
3257         GPtrArray *devinfo = NULL;
3258         bluetooth_device_info_t *ptr;
3259
3260         // allocate the g_pointer_array
3261         devinfo = g_ptr_array_new();
3262
3263         ret = bluetooth_get_bonded_device_list(&devinfo);
3264         if (ret != BLUETOOTH_ERROR_NONE)
3265         {
3266                 printf("bluetooth_get_bonded_device_list failed with [%d]",ret);
3267         }
3268         else
3269         {
3270                 printf("g pointer arrary count : [%d]", devinfo->len);
3271                 for (i=0; i<devinfo->len; i++)
3272                 {
3273                         ptr = g_ptr_array_index(devinfo, i);
3274                         if (ptr != NULL)
3275                         {
3276                                 printf("Name [%s]\n", ptr->device_name.name);
3277                                 printf("Major Class [%d]\n", ptr->device_class.major_class);
3278                                 printf("Minor Class [%d]\n", ptr->device_class.minor_class);
3279                                 printf("Service Class [%d]\n", ptr->device_class.service_class);
3280                                 printf("%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X\n",
3281                                                                 ptr->device_address.addr[0],
3282                                 ptr->device_address.addr[1], ptr->device_address.addr[2],
3283                                                                 ptr->device_address.addr[3],
3284                                 ptr->device_address.addr[4], ptr->device_address.addr[5]);
3285
3286                                 // handle
3287                                 ...
3288                         }
3289                 }
3290         }
3291         // free g_pointer_array
3292         g_ptr_array_free(devinfo, TRUE);
3293 }
3294
3295 @endcode
3296  */
3297 int bluetooth_get_bonded_device_list(GPtrArray **dev_list);
3298
3299 int bluetooth_get_profile_connected_device_list(
3300                 const char *profile_uuid, GPtrArray **addr_list);
3301
3302 /**
3303  * @fn int bluetooth_get_bonded_device(const bluetooth_device_address_t *device_address,
3304  *                                      bluetooth_device_info_t *dev_info)
3305  * @brief Get a bonded(paired) device
3306  *
3307  *
3308  * This API gets a bonded device.
3309  *
3310  * This function is a synchronous call.
3311  * Information for bonded devices can be obtained when result code is BLUETOOTH_ERROR_NONE. If not,
3312  * there is no valid information in the dev_info.
3313  * The data structure for bonded device information is bluetooth_device_info_t.
3314  *
3315  *
3316  * @return      BLUETOOTH_ERROR_NONE - Success \n
3317  *              BLUETOOTH_ERROR_NOT_SUPPORT - Opreation not supported \n
3318  * @remark      None
3319  * @see         bluetooth_bond_device, bluetooth_unbond_device, bluetooth_authorize_device
3320  @code
3321 void bt_get_bonded_device(void)
3322 {
3323 ...
3324         int i;
3325         bluetooth_device_info_t devinfo = {0};
3326         bluetooth_device_address_t device_address={{0x00,0x1C,0x43,0x2B,0x1A,0xE5}};
3327
3328         ret = bluetooth_get_bonded_device(&device_address, &devinfo);
3329         if (ret != BLUETOOTH_ERROR_NONE)
3330         {
3331                 printf("bluetooth_get_bonded_device failed with [%d]",ret);
3332         }
3333         else
3334         {
3335                 printf("Name [%s]\n", devinfo.device_name.name);
3336                 printf("Major Class [%d]\n", devinfo.device_class.major_class);
3337                 printf("Minor Class [%d]\n", devinfo.device_class.minor_class);
3338                 printf("Service Class [%d]\n", devinfo.device_class.service_class);
3339                 printf("%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X\n", devinfo.device_address.addr[0],
3340                 devinfo.device_address.addr[1], devinfo.device_address.addr[2],
3341                 devinfo.device_address.addr[3], devinfo.device_address.addr[4],
3342                 devinfo.device_address.addr[5]);
3343
3344                 // handle
3345                 ...
3346         }
3347 }
3348
3349 @endcode
3350  */
3351 int bluetooth_get_bonded_device(const bluetooth_device_address_t *device_address,
3352                                         bluetooth_device_info_t *dev_info);
3353
3354 /**
3355  * @fn int bluetooth_set_alias(const bluetooth_device_address_t *device_address, const char *alias)
3356  * @brief set alias for bonded device
3357  *
3358  *
3359  * This function set alias for bonded device.
3360  *
3361  * This function is a synchronous call.
3362  *
3363  *
3364  * @return      BLUETOOTH_ERROR_NONE - Success \n
3365  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
3366  * @param[in]   device_address   This indicates an address of the remote device
3367  * @param[in]   alias                   This indicates an alias to set
3368  * @remark      None
3369  * @see         None
3370 @code
3371 int ret = 0;
3372 ret = bluetooth_set_alias(&remote_address);
3373 @endcode
3374  */
3375 int bluetooth_set_alias(const bluetooth_device_address_t *device_address,
3376                                 const char *alias);
3377
3378 /**
3379  * @fn int bluetooth_get_remote_device(const bluetooth_device_address_t *device_address)
3380  * @brief Get remote deivice
3381  *
3382  *
3383  * This function gets specific remote device.
3384  *
3385  * This function is a asynchronous call.
3386  * This API is responded by an BLUETOOTH_EVENT_REMOTE_DEVICE_READ event.
3387  *
3388  *
3389  * @return      BLUETOOTH_ERROR_NONE - Success \n
3390  *              BLUETOOTH_ERROR_NOT_SUPPORT - Operation not supported \n
3391  * @param[in]   device_address   This indicates an address of the remote device
3392  * @remark      None
3393  * @see         None
3394 @code
3395 int ret = 0;
3396 ret = bluetooth_get_remote_device(&remote_address);
3397 @endcode
3398  */
3399 int bluetooth_get_remote_device(const bluetooth_device_address_t *device_address);
3400
3401 /**
3402  * @fn int bluetooth_authorize_device(const bluetooth_device_address_t *device_address,
3403  *                                      gboolean authorized)
3404  * @brief Authorize/Unauthorize a bonded device
3405  *
3406  *
3407  * This function authorizes/unauthorize a bonded device. It decides the device to connect
3408  * with/without user confirmation.
3409  *
3410  * If we select a paired device and make it authorized by calling this API with the authorized
3411  * parameter to TRUE, then it will not ask for the user conformation before connecting. Similarly
3412  * if we unauthorize the paired device by calling this API with the authorized parameter to FALSE,
3413  * then it will ask for the user conformation before the connection.
3414  *
3415  * This API supposed to be called on the paired devices. Which means we have to use this API only
3416  * after successful pairing.
3417  *
3418  * This function is a asynchronous call.
3419  * Response will be received through BLUETOOTH_EVENT_DEVICE_AUTHORIZED event.
3420  *
3421  * @return      BLUETOOTH_ERROR_NONE - Success \n
3422  * @exception   BLUETOOTH_ERROR_INTERNAL - Cannot get the interal DBUS proxy \n
3423  * @param[in]   device_address   This indicates an address of the device to authorize \n
3424  * @param[in]   authorized      TRUE : authorize FALSE: unauthorize
3425  * @remark      None
3426  * @see         bluetooth_get_bonded_device_list
3427 @code
3428 void bt_event_callback(int event, bluetooth_event_param_t *param)
3429 {
3430         switch(event)
3431         {
3432                 case BLUETOOTH_EVENT_DEVICE_AUTHORIZED :
3433                 {
3434                         if (param->result == BLUETOOTH_ERROR_NONE)
3435                         {
3436                                 //Device authorized
3437                         }
3438                         //device authorization failed failure
3439                 }
3440         }
3441 }
3442
3443 ...
3444
3445 int ret = 0;
3446 bluetooth_device_address_t device_address={{0}};
3447 gboolean authorized;
3448
3449 authorized =TRUE;
3450
3451 ret = bluetooth_authorize_device(&device_address,authorized);
3452 @endcode
3453  */
3454 int bluetooth_authorize_device(const bluetooth_device_address_t *device_address,
3455                                        gboolean authorized);
3456
3457 int bluetooth_set_pin_code(const bluetooth_device_address_t *device_address,
3458                                 const bluetooth_device_pin_code_t *pin_code);
3459
3460 int bluetooth_unset_pin_code(const bluetooth_device_address_t *device_address);
3461
3462 /**
3463  * @fn int bluetooth_passkey_reply(char *passkey, gboolean reply)
3464  *
3465  * @brief Receives Legacy Passkey\pin with following authentication response types
3466  *
3467  * @param[in]   passkey : This is the PIN or PASSKEY string required for remote device authentication
3468  * @param[in]   reply    TRUE : Accept AUthentication FALSE: Cancels authentication
3469  *
3470  */
3471 int bluetooth_passkey_reply(char *passkey, gboolean reply);
3472
3473 /**
3474  * @fn int bluetooth_passkey_confirmation_reply(gboolean reply);
3475  *
3476  * @brief This API sends user confirmation reply to the local adapter.
3477  *
3478  * @param[in] reply TRUE : Accept AUthentication FALSE: Cancels authentication
3479  *
3480  */
3481 int bluetooth_passkey_confirmation_reply(gboolean reply);
3482
3483 /**
3484  * @fn int bluetooth_search_service(const bluetooth_device_address_t *device_address)
3485  * @brief Get all services supported by remote device
3486  *
3487  *
3488  * This API call initiates the search for the services supported by the specified device. Normally
3489  * the service search will take a couple of seconds to get it completed. Before calling this API
3490  * make sure that the Adapter is enabled. We have to give the device address of the remote device to
3491  * perform the service search. We can get the device address by doing a device discovery operation.
3492  *
3493  *
3494  * This function is a asynchronous call.
3495  * The service search request is responded by BLUETOOTH_EVENT_SERVICE_SEARCHED event.
3496  *
3497  * There is a timeout associated with the service search. The default time out is 40 seconds. If the
3498  * remove device did not respond with in the time out period the BLUETOOTH_EVENT_SERVICE_SEARCHED
3499  * event is generated with appropriate result code.
3500  *
3501  * @return      BLUETOOTH_ERROR_NONE - Success \n
3502  *              BLUETOOTH_ERROR_SERVICE_SEARCH_ERROR - Service search error (NULL device address) \n
3503  *              BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
3504  * @param[in]   device_address   This indicates an address of the device
3505  *                               whose services need to be found
3506  * @remark      None
3507  * @see         bluetooth_cancel_service_search
3508  */
3509 int bluetooth_search_service(const bluetooth_device_address_t *device_address);
3510
3511 /**
3512  * @fn int bluetooth_cancel_service_search(void)
3513  * @brief Cancel the ongoing service search operation
3514  *
3515  *
3516  * This function cancel the ongoing service search operation. This API is usually calling after the
3517  * bluetooth_search_service API.
3518  * Normally service search will take a more time (> 5 seconds) to complete. This API will be called
3519  * if the user wish to cancel the Ongoing service search operation.
3520  *
3521  * This API should be called just after the bluetooth_search_service API and before the
3522  * BLUETOOTH_EVENT_SERVICE_SEARCHED event
3523  *
3524  * This function is a synchronous call.
3525  *
3526  * @return      BLUETOOTH_ERROR_NONE - Success \n
3527  *              BLUETOOTH_ERROR_CANCEL - Error in service search cancel operation \n
3528  *              BLUETOOTH_ERROR_NOT_PAIRED - Not paired device \n
3529  *              BLUETOOTH_ERROR_NOT_IN_OPERATION - Searching service is not in operation \n
3530  *
3531  * @remark      None
3532  * @see         bluetooth_search_service
3533 @code
3534 ...
3535
3536 int ret = 0;
3537 ret = bluetooth_cancel_service_search();
3538 @endcode
3539 */
3540 int bluetooth_cancel_service_search(void);
3541
3542 /**
3543  * @fn int bluetooth_rfcomm_create_socket(const char *uuid)
3544  * @brief Register rfcomm socket with a specific uuid
3545  *
3546  *
3547  * This API register rfcomm socket with the given UUID. The return value of this API is the socket
3548  * descriptor of the server.
3549  * This is the first API which is called to create the server. Once we created the server socket,
3550  * we will listen on that return socket.
3551  * So a bluetooth_rfcomm_listen_and_accept should follow this API call. This is a synchronous call.
3552  *
3553  *
3554  * @return  socket FD on Success \n
3555  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
3556  *              BLUETOOTH_ERROR_INTERNAL - Internal error\n
3557  *              BLUETOOTH_ERROR_MAX_CONNECTION - Maximum connection reached\n
3558  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
3559  * @param[in]   UUID (128 bits)
3560  *
3561  * @remark      None
3562  * @see       bluetooth_rfcomm_listen_and_accept, bluetooth_rfcomm_remove_socket
3563  *
3564  @code
3565
3566   const char *rfcomm_test_uuid="00001101-0000-1000-8000-00805F9B34FB";
3567   fd  = bluetooth_rfcomm_create_socket(rfcomm_test_uuid);
3568
3569  @endcode
3570  */
3571 int bluetooth_rfcomm_create_socket(const char *uuid);
3572
3573 /**
3574  * @fn int bluetooth_rfcomm_create_socket_ex(const char *uuid, const char *bus_name, const char *path)
3575  * @brief Register rfcomm socket with a specific uuid
3576  *
3577  *
3578  * This API register rfcomm socket with the given UUID. The return value of this API is the socket
3579  * descriptor of the server.
3580  * This is the first API which is called to create the server. Once we created the server socket,
3581  * we will listen on that return socket.
3582  * So a bluetooth_rfcomm_listen_and_accept_ex should follow this API call. This is a synchronous call.
3583  *
3584  *
3585  * @return  socket FD on Success \n
3586  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
3587  *              BLUETOOTH_ERROR_INTERNAL - Internal error\n
3588  *              BLUETOOTH_ERROR_MAX_CONNECTION - Maximum connection reached\n
3589  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
3590  * @param[in]   UUID (128 bits)
3591  * @param[in]   bus_name (const char)
3592  * @param[in]   path (const char)
3593  *
3594  * @remark      None
3595  * @see       bluetooth_rfcomm_listen_and_accept_ex, bluetooth_rfcomm_remove_socket
3596  *
3597  @code
3598
3599   const char *rfcomm_test_uuid="00001101-0000-1000-8000-00805F9B34FB";
3600   fd  = bluetooth_rfcomm_create_socket_ex(rfcomm_test_uuid, bus_name, path);
3601
3602  @endcode
3603  */
3604 int bluetooth_rfcomm_create_socket_ex(const char *uuid, const char *bus_name, const char *path);
3605
3606 /**
3607  * @fn int bluetooth_rfcomm_remove_socket(int socket_fd, const char *uuid)
3608  * @brief De-register the rfcomm socket
3609  *
3610  *
3611  * This API deregister rfcomm socket with the given socket fd and  UUID. If the remote device is
3612  * already connected then we will receive the BLUETOOTH_EVENT_RFCOMM_DISCONNECTED with socket
3613  * descriptor else no event will come. We will call this API only after the
3614  * bluetooth_rfcomm_listen_and_accept.
3615  * This is a synchronous call.
3616  *
3617  * @return   BLUETOOTH_ERROR_NONE - Success \n
3618  *               BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
3619  *               BLUETOOTH_ERROR_NOT_FOUND - Cannot find the proxy\n
3620  *               BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
3621  * @param[in]  int socket_fd
3622  *
3623  * @remark      None
3624  * @see       bluetooth_rfcomm_create_socket, bluetooth_rfcomm_listen_and_accept
3625  *
3626  @code
3627  void bt_event_callback(int event, bluetooth_event_param_t *param)
3628  {
3629         switch(event)
3630         {
3631                 case BLUETOOTH_EVENT_RFCOMM_DISCONNECTED:
3632                 {
3633                         bluetooth_rfcomm_connection_t *discon_ind =
3634                                         (bluetooth_rfcomm_connection_t *)param->param_data;
3635
3636                         printf("\nDisconnected from FD %d",  discon_ind->socket_fd);
3637                 }
3638         }
3639  }
3640
3641  ...
3642
3643  int ret = 0;
3644  fd  = bluetooth_rfcomm_create_socket(rfcomm_test_uuid);
3645  ret = bluetooth_rfcomm_listen_and_accept(fd, 1);
3646  ....
3647  ret = bluetooth_rfcomm_remove_socket(fd);
3648  @endcode
3649  */
3650 int bluetooth_rfcomm_remove_socket(int socket_fd);
3651
3652 /**
3653  * @fn int bluetooth_rfcomm_remove_socket(const char *uuid)
3654  * @brief De-register the rfcomm socket
3655  *
3656  *
3657  * This API deregister rfcomm socket with the given socket UUID. If the remote device is
3658  * already connected then we will receive the BLUETOOTH_EVENT_RFCOMM_DISCONNECTED with socket
3659  * descriptor else no event will come. We will call this API only after the
3660  * bluetooth_rfcomm_listen_and_accept_ex.
3661  * This is a synchronous call.
3662  *
3663  * @return   BLUETOOTH_ERROR_NONE - Success \n
3664  *               BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
3665  *               BLUETOOTH_ERROR_NOT_FOUND - Cannot find the proxy\n
3666  *               BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
3667  * @param[in]   UUID (128 bits)
3668  *
3669  * @remark      None
3670  * @see       bluetooth_rfcomm_create_socket_ex, bluetooth_rfcomm_listen_and_accept_ex
3671  *
3672  @code
3673  void bt_event_callback(int event, bluetooth_event_param_t *param)
3674  {
3675         switch(event)
3676         {
3677                 case BLUETOOTH_EVENT_RFCOMM_DISCONNECTED:
3678                 {
3679                         bluetooth_rfcomm_connection_t *discon_ind =
3680                                         (bluetooth_rfcomm_connection_t *)param->param_data;
3681
3682                         printf("\nDisconnected from FD %d",  discon_ind->socket_fd);
3683                 }
3684         }
3685  }
3686
3687  ...
3688
3689  int ret = 0;
3690  fd  = bluetooth_rfcomm_create_socket_ex(rfcomm_test_uuid, path, bus_name);
3691  ret = bluetooth_rfcomm_listen_and_accept_ex(rfcomm_test_uuid, 1, bus_name, path);
3692  ....
3693  ret = bluetooth_rfcomm_remove_socket_ex(rfcomm_test_uuid);
3694  @endcode
3695  */
3696 int bluetooth_rfcomm_remove_socket_ex(const char *uuid);
3697
3698 /**
3699  * @fn int bluetooth_rfcomm_server_disconnect(int socket_fd)
3700  * @brief Disconnect rfcomm connection
3701  *
3702  *
3703  * Disconnect a specific(device node fd)  RFCOMM connection. This is a Synchronous call and there
3704  * is no cabbback events for this API. We have to provice the valid client fd to disconnect from the
3705  * remote server.
3706  *
3707  * @return   BLUETOOTH_ERROR_NONE  - Success \n
3708  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
3709  *              BLUETOOTH_ERROR_NOT_CONNECTED - Not connected \n
3710  * @param[in]  int socket_fd the sending socket fd
3711  *
3712  * @remark      None
3713  *
3714  @code
3715
3716   ret = bluetooth_rfcomm_server_disconnect(g_ret_fd);
3717   if (ret < 0)
3718         printf("Disconnection failed");
3719   else
3720   printf("Disconnection Success");
3721
3722  @endcode
3723  */
3724 int bluetooth_rfcomm_server_disconnect(int socket_fd);
3725
3726 /**
3727  * @fn int bluetooth_rfcomm_listen_and_accept(int socket_fd,int max_pending_connection)
3728  * @brief Rfcomm socket listen
3729  *
3730  *
3731  * This API make rfcomm socket listen and accept with socket. We will call this API immediatly
3732  * after the bluetooth_rfcomm_create_socket API.
3733  * This API listen for the incomming connection and once it receives a connection, it will give
3734  * BLUETOOTH_EVENT_RFCOMM_CONNECTED
3735  * event to the application. This is an Asynchronous API call.
3736  *
3737  *
3738  * @return  BLUETOOTH_ERROR_NONE - Success \n
3739  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
3740  *              BLUETOOTH_ERROR_CONNECTION_ERROR - Listen failed \n
3741
3742  * @param[in]  int socket_fd
3743  * @param[in]  max pending connection.
3744  *
3745  * @remark      None
3746  * @see       bluetooth_rfcomm_create_socket
3747  *
3748   @code
3749   void bt_event_callback(int event, bluetooth_event_param_t* param)
3750  {
3751         switch(event)
3752         {
3753                 case BLUETOOTH_EVENT_RFCOMM_CONNECTED:
3754                 {
3755                         bluetooth_rfcomm_connection_t *conn_ind =
3756                                                 (bluetooth_rfcomm_connection_t *)param->param_data;
3757
3758                         printf("\nConnected from FD %d",  conn_ind->socket_fd);
3759                 }
3760         }
3761  }
3762
3763  ...
3764
3765  int ret = 0;
3766  fd  = bluetooth_rfcomm_create_socket(rfcomm_test_uuid);
3767  ret = bluetooth_rfcomm_listen_and_accept(fd, 1);
3768
3769  @endcode
3770  */
3771 int bluetooth_rfcomm_listen_and_accept(int socket_fd, int max_pending_connection);
3772
3773 /**
3774  * @fn int bluetooth_rfcomm_listen_and_accept_ex(const char *uuid, int max_pending_connection, const char *bus_name, const char *path)
3775  * @brief Rfcomm socket listen
3776  *
3777  *
3778  * This API make rfcomm socket listen and accept with socket. We will call this API immediatly
3779  * after the bluetooth_rfcomm_create_socket API.
3780  * This API listen for the incomming connection and once it receives a connection, it will give
3781  * BLUETOOTH_EVENT_RFCOMM_CONNECTED
3782  * event to the application. This is an Asynchronous API call.
3783  *
3784  *
3785  * @return  BLUETOOTH_ERROR_NONE - Success \n
3786  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
3787  *              BLUETOOTH_ERROR_CONNECTION_ERROR - Listen failed \n
3788
3789  * @param[in]  int socket_fd
3790  * @param[in]  max pending connection.
3791  * @param[in]  name
3792  * @param[in]  path
3793  *
3794  * @remark      None
3795  * @see       bluetooth_rfcomm_create_socket_ex
3796  *
3797   @code
3798   void bt_event_callback(int event, bluetooth_event_param_t* param)
3799  {
3800         switch(event)
3801         {
3802                 case BLUETOOTH_EVENT_RFCOMM_CONNECTED:
3803                 {
3804                         bluetooth_rfcomm_connection_t *conn_ind =
3805                                                 (bluetooth_rfcomm_connection_t *)param->param_data;
3806
3807                         printf("\nConnected from FD %d",  conn_ind->socket_fd);
3808                 }
3809         }
3810  }
3811
3812  ...
3813
3814  int ret = 0;
3815  fd  = bluetooth_rfcomm_create_socket_ex(rfcomm_test_uuid);
3816  ret = bluetooth_rfcomm_listen_and_accept_ex(rfcomm_test_uuid, 1, bus_name, path);
3817
3818  @endcode
3819  */
3820
3821 int bluetooth_rfcomm_listen_and_accept_ex(const char *uuid, int max_pending_connection, const char *bus_name, const char *path);
3822
3823 /**
3824  * @fn int bluetooth_rfcomm_listen(int socket_fd,int max_pending_connection)
3825  * @brief Rfcomm socket listen
3826  *
3827  *
3828  * This API make rfcomm socket listen and accept with socket. We will call this API immediatly
3829  * after the bluetooth_rfcomm_create_socket API.
3830  * This API listen for the incomming connection and once it receives a connection, it will give
3831  * BLUETOOTH_EVENT_RFCOMM_AUTHORIZE
3832  * event to the application. This is an Asynchronous API call.
3833  *
3834  *
3835  * @return  BLUETOOTH_ERROR_NONE - Success \n
3836  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
3837  *              BLUETOOTH_ERROR_CONNECTION_ERROR - Listen failed \n
3838
3839  * @param[in]  int socket_fd
3840  * @param[in]  max pending connection.
3841  *
3842  * @remark      None
3843  * @see       bluetooth_rfcomm_create_socket
3844  *
3845   @code
3846   void bt_event_callback(int event, bluetooth_event_param_t* param)
3847  {
3848         switch(event)
3849         {
3850                 case BLUETOOTH_EVENT_RFCOMM_AUTHORIZE:
3851                 {
3852                         char *name = (char *)param->param_data;
3853
3854                         printf("\nConnected from %s",  name);
3855
3856                         bluetooth_rfcomm_accept_connection();
3857                 }
3858         }
3859  }
3860
3861  ...
3862
3863  int ret = 0;
3864  fd  = bluetooth_rfcomm_create_socket(rfcomm_test_uuid);
3865  ret = bluetooth_rfcomm_listen(fd, 1);
3866
3867  @endcode
3868  */
3869 int bluetooth_rfcomm_listen(int socket_fd, int max_pending_connection);
3870
3871 /**
3872  * @fn int bluetooth_rfcomm_accept_connection()
3873  * @brief Accepts the authorization request indicated by the event
3874   * BLUETOOTH_EVENT_RFCOMM_AUTHORIZE.
3875  *
3876  * This function is a synchronous call.
3877  *
3878  * @return   BLUETOOTH_ERROR_NONE  - Success \n
3879  *              BLUETOOTH_ERROR_INTERNAL - Internal error \n
3880  *
3881  * @param[in]  the socket fd of the server
3882  * @param[out]  the socket fd of the client
3883  *
3884  * @exception   None
3885  * @remark       None
3886  * @see           bluetooth_rfcomm_reject_connection
3887  */
3888 int bluetooth_rfcomm_accept_connection(int server_fd);
3889
3890 /**
3891  * @fn int bluetooth_rfcomm_reject_connection()
3892  * @brief Rejects the authorization request indicated by the event
3893   * BLUETOOTH_EVENT_RFCOMM_AUTHORIZE.
3894  *
3895  * This function is a synchronous call.
3896  *
3897  * @return   BLUETOOTH_ERROR_NONE  - Success \n
3898  *              BLUETOOTH_ERROR_INTERNAL - Internal error \n
3899  *
3900  * @param[in]  the socket fd of the server
3901  *
3902  * @exception   None
3903  * @remark       None
3904  * @see           bluetooth_rfcomm_accept_connection
3905  */
3906 int bluetooth_rfcomm_reject_connection(int server_fd);
3907
3908 /**
3909  * @fn gboolean bluetooth_rfcomm_is_server_uuid_available(const char *uuid)
3910  * @brief Informs whether rfcomm server uuid is available or not.
3911  *
3912  * This function is a synchronous call.
3913  *
3914  * @return   TRUE  - RFCOMM uuid is available \n
3915  *              FALSE - RFCOMM uuid is not available \n
3916  *
3917  * @param[in]  uuid UUID string
3918  *
3919  * @exception   None
3920  *
3921  * @remark       None
3922  */
3923 gboolean bluetooth_rfcomm_is_server_uuid_available(const char *uuid);
3924
3925 /**
3926  * @fn int bluetooth_rfcomm_connect(const bluetooth_device_address_t  *remote_bt_address,
3927  *                                                                      const char *remote_uuid)
3928  * @brief Connect to the remote device rfcomm *
3929  *
3930  * Connect to a specific RFCOMM based service on a remote device UUID. This is a Async call. Once
3931  * the connection is successful callback BLUETOOTH_EVENT_RFCOMM_CONNECTED events is generated,
3932  * which contains the socket_fd, device role (RFCOMM_ROLE_SERVER/RFCOMM_ROLE_CLIENT), device addess
3933  * etc. The socket_fd can be further used to send the data. It better to do a sevice search before
3934  * initiating a connection.
3935  *
3936  * @return  BLUETOOTH_ERROR_NONE  - Success \n
3937  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
3938  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
3939  *              BLUETOOTH_ERROR_CONNECTION_BUSY - Connection in progress \n
3940  *              BLUETOOTH_ERROR_INTERNAL - Internal Error\n
3941  * @param[in]  bluetooth_device_address_t remote bt_address
3942  * @param[in]  char remote uuid
3943  * @remark      None
3944  * @see         bluetooth_rfcomm_disconnect, bluetooth_rfcomm_write, bluetooth_search_service
3945  *
3946  @code
3947
3948  void bt_event_callback(int event, bluetooth_event_param_t *param)
3949  {
3950         switch(event)
3951         {
3952                 case BLUETOOTH_EVENT_SERVICE_SEARCHED:
3953                 {
3954                         if (param->result >= BLUETOOTH_ERROR_NONE)
3955                         {
3956                                 bt_sdp_info_t *bt_sdp_info=param->param_data;
3957
3958                                 printf("Dev add = %2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X\n",
3959                                         bt_sdp_info->device_addr.addr[0],
3960                                         bt_sdp_info->device_addr.addr[1],
3961                                         bt_sdp_info->device_addr.addr[2],
3962                                         bt_sdp_info->device_addr.addr[3],
3963                                         bt_sdp_info->device_addr.addr[4],
3964                                         bt_sdp_info->device_addr.addr[5]);
3965
3966                                         printf("Supported service list:\n");
3967                                         for(i=0; i<bt_sdp_info->service_index; i++)
3968                                                 printf("[%#x]\n",
3969                                                         bt_sdp_info->service_list_array[i]);
3970
3971                                 //Alternate method
3972                                 //ret = bluetooth_rfcomm_connect(bt_sdp_info->device_addr,
3973                                                                                 //rfcomm_test_uuid);
3974                         }
3975                         break;
3976                 }
3977                 case BLUETOOTH_EVENT_RFCOMM_CONNECTED:
3978                 {
3979                         bluetooth_rfcomm_connection_t *conn_ind =
3980                                                 (bluetooth_rfcomm_connection_t *)param->param_data;
3981
3982                         printf("\nConnected from FD %d, Role = %s",  conn_ind->socket_fd,
3983                                                 (conn_ind->device_role == RFCOMM_ROLE_SERVER) ?
3984                                                                         "SERVER" : "CLIENT");
3985                 }
3986         }
3987  }
3988
3989   bluetooth_device_address_t remote_address = {{0},};
3990   remote_address.addr[0] = 0x0; remote_address.addr[1] = 0x0A; remote_address.addr[2] = 0x3A;
3991   remote_address.addr[3]= 0x54; remote_address.addr[4] = 0x19;  remote_address.addr[5]= 0x36;
3992   ret = bluetooth_search_service(&remote_address);
3993  if (ret < 0)
3994         printf("Seach failed, Reason = %d", ret);
3995   else
3996          printf("Search Success, Ret = %d", ret);
3997
3998   ret = bluetooth_rfcomm_connect(&remote_address, rfcomm_test_uuid);
3999   if (ret < 0)
4000         printf("Connection failed, Reason = %d", ret);
4001   else
4002          printf("Connection Success, Ret = %d", ret);
4003
4004   @endcode
4005   */
4006 int bluetooth_rfcomm_connect(const bluetooth_device_address_t *remote_bt_address,
4007                                      const char *remote_uuid);
4008
4009 /**
4010  * @fn int bluetooth_rfcomm_disconnect(int socket_fd)
4011  * @brief Disconnect rfcomm connection
4012  *
4013  *
4014  * Disconnect a specific(device node fd)  RFCOMM connection. This is a Synchronous call and there
4015  * is no cabbback events for this API. We have to provice the valid client fd to disconnect from the
4016  * remote server.
4017  *
4018  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4019  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
4020  *              BLUETOOTH_ERROR_NOT_CONNECTED - Not connected \n
4021  * @param[in]  char remote bt_address
4022  *
4023  * @remark      None
4024  * @see         bluetooth_rfcomm_connect
4025  *
4026  @code
4027
4028   ret = bluetooth_rfcomm_disconnect(g_ret_fd);
4029   if (ret < 0)
4030         printf("Disconnection failed");
4031   else
4032   printf("Disconnection Success");
4033
4034  @endcode
4035  */
4036
4037 int bluetooth_rfcomm_disconnect(int socket_fd);
4038
4039 /**
4040  * @fn int bluetooth_rfcomm_write (int fd, const char *buff, int length)
4041  * @brief Write to rfcomm connection
4042  *
4043  *
4044  * This API is used to send the data over the rfcomm connection. This is a synchronous API. The same
4045  * API is used to send the data for server and the client.
4046  *
4047  * @return  BLUETOOTH_ERROR_NONE  - Success \n
4048  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
4049  *              BLUETOOTH_ERROR_NOT_IN_OPERATION - The Fd is currently not in operation\n
4050  * @param[in]  int fd
4051  * @param[in]  const char *buff  Data buffer to send
4052  * @param[in]  int length Length of the data
4053  *
4054  * @remark      None
4055  * @see         bluetooth_rfcomm_connect
4056  *
4057   @code
4058   char *buff = "Test data 123456789"
4059   ret =  bluetooth_rfcomm_write(g_ret_fd, buff, 15);
4060   if (ret < 0)
4061         printf("Send failed");
4062   else
4063    printf("Send success");
4064
4065  @endcode
4066  */
4067 int bluetooth_rfcomm_write(int fd, const char *buf, int length);
4068
4069 /**
4070  * @fn gboolean bluetooth_rfcomm_is_client_connected(void)
4071  * @brief Informs whether rfcomm client is connected.
4072  *
4073  * This function is a synchronous call.
4074  *
4075  * @return   TRUE  - RFCOMM client is connected \n
4076  *              FALSE - RFCOMM client is not connected \n
4077  *
4078  * @exception   None
4079  *
4080  * @remark       None
4081  */
4082 gboolean bluetooth_rfcomm_is_client_connected(void);
4083 int bluetooth_rfcomm_client_is_connected(const bluetooth_device_address_t *device_address, gboolean *connected);
4084 int bluetooth_rfcomm_server_is_connected(const bluetooth_device_address_t *device_address, gboolean *connected);
4085
4086 /**
4087  * @fn int bluetooth_network_activate_server(void)
4088  * @brief Activate the NAP (Network Access Point) service
4089  *
4090  * This function is a asynchronous call.
4091  * The activate server request is responded by BLUETOOTH_EVENT_NETWORK_SERVER_ACTIVATED event.
4092  *
4093  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4094  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
4095  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4096  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Not enabled \n
4097  *
4098  * @remark      None
4099   * @see        bluetooth_network_deactivate_server
4100  *
4101  */
4102 int bluetooth_network_activate_server(void);
4103
4104 /**
4105  * @fn int bluetooth_network_deactivate_server(void)
4106  * @brief Deactivate the NAP (Network Access Point) service
4107  *
4108  * This function is a asynchronous call.
4109  * The deactivate server request is responded by BLUETOOTH_EVENT_NETWORK_SERVER_DEACTIVATED event.
4110  *
4111  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4112  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
4113  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4114  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Not enabled \n
4115  *
4116  * @remark      None
4117  * @see         bluetooth_network_activate_server
4118  *
4119  */
4120 int bluetooth_network_deactivate_server(void);
4121
4122 /**
4123  * @fn int bluetooth_network_connect(const bluetooth_device_address_t *device_address,
4124  *                                      bluetooth_network_role_t role,
4125  *                                      char  custom_uuid)
4126  * @brief Connect the network server in the peer
4127  *
4128  * This function is a asynchronous call.
4129  * The network connect request is responded by BLUETOOTH_EVENT_NETWORK_CONNECTED event.
4130  *
4131  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4132  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
4133  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4134  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Not enabled \n
4135  *
4136  * @exception   None
4137  * @param[in]  device_address   This indicates an address of the device with which the pairing
4138  *                              should be initiated
4139  * @param[in]  role   The role to connect. PANU / GN / NAP / CUSTOM. If use the CUSTOM value,
4140  *                      need to use the third parameter.
4141  * @param[in]  custom_uuid   If use the CUSTOM value in second parameter, use this parameter to
4142  *                              connect. UUID string
4143  * @remark      None
4144  * @see         bluetooth_network_disconnect
4145  */
4146 int bluetooth_network_connect(const bluetooth_device_address_t *device_address,
4147                                       bluetooth_network_role_t role, char *custom_uuid);
4148
4149 /**
4150  * @fn int bluetooth_network_disconnect(const bluetooth_device_address_t *device_address,
4151  *                                                      bluetooth_network_role_t role,
4152  *                                                        char *custom_uuid)
4153  * @brief Connect the network server in the peer
4154  *
4155  * This function is a asynchronous call.
4156  * The network disconnect request is responded by BLUETOOTH_EVENT_NETWORK_CONNECTED event.
4157  *
4158  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4159  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
4160  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4161  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Not enabled \n
4162  *
4163  * @exception   None
4164  * @param[in]   device_address   This indicates an address of the device with which the pairing
4165  *                                      should be initiated
4166  * @remark       None
4167  * @see         bluetooth_network_connect
4168  */
4169 int bluetooth_network_disconnect(const bluetooth_device_address_t *device_address);
4170
4171 /**
4172  * @fn int bluetooth_network_server_disconnect(const bluetooth_device_address_t *device_address)
4173  * @brief Disconnect the device from the network
4174  *
4175  * This function is an asynchronous call.
4176  * The network server disconnect request is responded by
4177  * BLUETOOTH_EVENT_NETWORK_SERVER_DISCONNECTED event.
4178  *
4179  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4180  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
4181  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4182  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Not enabled \n
4183  *
4184  * @exception   None
4185  * @param[in]   device_address   This indicates an address of the connected client device
4186  * @remark       None
4187  * @see         bluetooth_network_activate_server
4188  */
4189 int bluetooth_network_server_disconnect(const bluetooth_device_address_t *device_address);
4190
4191 /*HDP - API's*/
4192
4193 /**
4194  * @fn int bluetooth_hdp_activate(unsigned short  data_type,
4195  *                                      bt_hdp_role_type_t role,
4196  *                                      bt_hdp_qos_type_t channel_type,
4197  *                                      char **app_handle)
4198  * @brief Activate the HDP service for a particular data type
4199  *
4200  * This function is a synchronous call.
4201  *
4202  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4203  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
4204  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4205  *              BLUETOOTH_ERROR_NO_RESOURCES - Not resource available \n
4206  *
4207  * @exception   None
4208  * @param[in]  data_type   The data type against corresponding service
4209  * @param[in]  role   The role of HDP. HDP_ROLE_SOURCE/HDP_ROLE_SINK.
4210  * @param[in]  channel_type   The QOS type for the channel.
4211  *                              HDP_QOS_RELIABLE/HDP_QOS_STREAMING/HDP_QOS_ANY.
4212  *                              For role = HDP_ROLE_SINK, the channel_type
4213  *                              should be HDP_QOS_ANY.
4214  * @param[out]  app_handle    The application handler against corresponding service
4215  * @remark       None
4216  * @see            bluetooth_hdp_deactivate
4217  */
4218 int bluetooth_hdp_activate(unsigned short  data_type,
4219                                 bt_hdp_role_type_t role,
4220                                 bt_hdp_qos_type_t channel_type,
4221                                 char **app_handle);
4222 /**
4223  * @fn int bluetooth_hdp_deactivate(const char *app_handle)
4224  * @brief Deactivate the HDP service for a particular service using the handler
4225  *
4226  * This function is a synchronous call.
4227  *
4228  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4229  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
4230  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4231  *              BLUETOOTH_ERROR_NO_RESOURCES - Not resource available \n
4232  *
4233  * @exception   None
4234  * @param[in]  app_handle   The application handler against corresponding service
4235  * @remark       None
4236  * @see            bluetooth_hdp_deactivate
4237  */
4238 int bluetooth_hdp_deactivate(const char *app_handle);
4239
4240 /**
4241  * @fn int bluetooth_hdp_send_data(unsigned int channel_id,
4242  *                                      const char *buffer, unsigned int size)
4243  * @brief Send data to the remote HDP device
4244  *
4245  * This function is a synchronous call.
4246  *
4247  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4248  *             BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
4249  *             BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4250  *             BLUETOOTH_ERROR_NO_RESOURCES - Not resource available \n
4251  *             BLUETOOTH_ERROR_NOT_IN_OPERATION - FD is invalid  \n
4252  *
4253  * @exception   None
4254  * @param[in]  channel_id   The channel id for the connection.
4255  * @param[in]  buffer   The pdu buffer.
4256  * @param[in]  size   Size of the buffer.
4257  * @remark       None
4258  * @see            bluetooth_hdp_connect
4259  */
4260 int bluetooth_hdp_send_data(unsigned int channel_id,
4261                                 const char *buffer, unsigned int size);
4262 /**
4263  * @fn int bluetooth_hdp_connect(const char *app_handle,
4264  *                              bt_hdp_qos_type_t channel_type,
4265  *                              const bluetooth_device_address_t *device_address)
4266  * @brief Connect to the remote device(Mainly used by source)
4267  *
4268  * This function is a asynchronous call.
4269  * The HDP activate is responded by BLUETOOTH_EVENT_HDP_CONNECTED event.
4270  *
4271  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4272  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
4273  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4274  *              BLUETOOTH_ERROR_NO_RESOURCES - Not resource available \n
4275  *              BLUETOOTH_ERROR_MEMORY_ALLOCATION -Memory allocation failed \n
4276  *
4277  * @exception   None
4278  * @param[in]  app_handle   The application handler against corresponding service
4279  * @param[in]  channel_type   The QOS type for the channel.
4280  *                              HDP_QOS_RELIABLE/HDP_QOS_STREAMING.
4281  * @param[in]  device_address   The remote device Bd address.
4282  *
4283  * @remark       None
4284  * @see            bluetooth_hdp_disconnect
4285  */
4286 int bluetooth_hdp_connect(const char *app_handle,
4287                         bt_hdp_qos_type_t channel_type,
4288                         const bluetooth_device_address_t *device_address);
4289 /**
4290  * @fn int bluetooth_hdp_disconnect(unsigned int channel_id,
4291  *                      const bluetooth_device_address_t *device_address)
4292  * @brief Disconnect from the remote device(Mainly used by source)
4293  *
4294  * This function is a asynchronous call.
4295  * The HDP activate is responded by BLUETOOTH_EVENT_HDP_DISCONNECTED event.
4296  *
4297  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4298  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
4299  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4300  *              BLUETOOTH_ERROR_NO_RESOURCES - Not resource available \n
4301   *              BLUETOOTH_ERROR_MEMORY_ALLOCATION -Memory allocation failed \n
4302  *
4303  * @exception   None
4304  * @param[in]  channel_id    The channel id for the connection.
4305  * @param[in]  device_address   The remote device Bd address.
4306  *
4307  * @remark       None
4308  * @see            bluetooth_hdp_connect
4309  */
4310 int bluetooth_hdp_disconnect(unsigned int channel_id,
4311                         const bluetooth_device_address_t  *device_address);
4312
4313
4314 /**
4315  * @fn int bluetooth_opc_init(void)
4316  * @brief Initialize OPP client.
4317  *
4318  * This function is a synchronous call.
4319  * No event corresponding to this api
4320  *
4321  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4322  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
4323  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4324  *              BLUETOOTH_ERROR_NO_RESOURCES - Not resource available \n
4325   *             BLUETOOTH_ERROR_ACCESS_DENIED -Memory allocation failed \n
4326  *
4327  * @exception   None
4328  *
4329  * @remark       None
4330  * @see           bluetooth_opc_deinit
4331  */
4332 int bluetooth_opc_init(void);
4333
4334 /**
4335  * @fn int bluetooth_opc_deinit(void)
4336  * @brief Deinitialize OPP client.
4337  *
4338  * This function is a synchronous call.
4339  * No event corresponding to this api
4340  *
4341  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4342  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
4343  *              BLUETOOTH_ERROR_ACCESS_DENIED -Memory allocation failed \n
4344  *
4345  * @exception   None
4346  *
4347  * @remark       None
4348  * @see           bluetooth_opc_init
4349  */
4350
4351  int bluetooth_opc_deinit(void);
4352
4353 /**
4354  * @fn int bluetooth_opc_push_files(bluetooth_device_address_t *remote_address,
4355                                         char **file_name_array)
4356  * @brief Send multiple files to a remote device.
4357  *
4358  * This function is a asynchronous call.
4359  * This api  is responded by BLUETOOTH_EVENT_OPC_CONNECTED event.
4360  *
4361  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4362  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
4363  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
4364  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4365  *              BLUETOOTH_ERROR_NO_RESOURCES - Not resource available \n
4366  *              BLUETOOTH_ERROR_IN_PROGRESS -Already one push in progress \n
4367  *              BLUETOOTH_ERROR_ACCESS_DENIED - Not allowed by MDM policy \n
4368  *
4369  * @exception   None
4370  * @param[in]  device_address   The remote device Bd address.
4371  * @param[in]  file_name_array  Array of filepaths to be sent.
4372  *
4373  * @remark       None
4374  * @see          bluetooth_opc_cancel_push
4375  */
4376
4377 int bluetooth_opc_push_files(bluetooth_device_address_t *remote_address,
4378                                 char **file_name_array);
4379
4380 /**
4381  * @fn int bluetooth_opc_cancel_push(void)
4382  * @brief Cancels the ongoing file push.
4383  *
4384  * This function is a asynchronous call.
4385  * This api is responded with either BLUETOOTH_EVENT_OPC_CONNECTED or
4386  * BLUETOOTH_EVENT_OPC_TRANSFER_COMPLETED event.
4387  *
4388  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4389  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
4390  *              BLUETOOTH_ERROR_ACCESS_DENIED - No push in progress \n
4391  *
4392  * @exception   None
4393  *
4394  * @remark       None
4395  * @see           bluetooth_opc_push_files
4396  */
4397
4398 int bluetooth_opc_cancel_push(void);
4399
4400 /**
4401  * @fn gboolean bluetooth_opc_session_is_exist(void)
4402  * @brief Informs whether opc session exists or not.
4403  *
4404  * This function is a synchronous call.
4405  *
4406  * @return   TRUE  - OPC session exists \n
4407  *              FALSE - OPC session does not exist \n
4408  *
4409  * @exception   None
4410  *
4411  * @remark       None
4412  * @see          None
4413  */
4414
4415 gboolean bluetooth_opc_session_is_exist(void);
4416
4417 /**
4418  * @fn int bluetooth_opc_is_sending(gboolean *is_sending)
4419  * @brief Informs whether opc session exists or not.
4420  *
4421  * This function is a synchronous call.
4422  *
4423  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4424  *               BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Not enabled \n
4425  *               BLUETOOTH_ERROR_INTERNAL \n
4426  *
4427  * @exception   None
4428  * @param[out] is_sending The sending status: (@c TRUE = in sending , @c  false = not in sending)
4429  *
4430  * @remark       None
4431  * @see            None
4432  */
4433 int bluetooth_opc_is_sending(gboolean *is_sending);
4434
4435 /**
4436  * @fn int bluetooth_opp_get_transfer_progress(bluetooth_opp_transfer_type_t transfer_type,
4437                 int transfer_id, unsigned char *progress)
4438  * @brief Gets the percentage progress for ongoing transfers.
4439  *
4440  * This function is a synchronous call.
4441  *
4442  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4443  *               BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Not enabled \n
4444  *               BLUETOOTH_ERROR_NOT_FOUND - Not found \n
4445  *
4446  * @exception   None
4447  * @param[in] transfer_type     Transfer Type: (@c BLUETOOTH_TRANSFER_INBOUND = receiving , @c  BLUETOOTH_TRANSFER_OUTBOUND = sending)
4448  * @param[in] transfer_id       Transfer ID
4449  * @param[out] progress         Percentage Progress
4450  * @remark       None
4451  * @see            None
4452  */
4453 int bluetooth_opp_get_transfer_progress(bluetooth_opp_transfer_type_t transfer_type,
4454                 int transfer_id, unsigned char *progress);
4455
4456 /**
4457  * @fn int bluetooth_obex_server_init(const char *dst_path)
4458  * @brief Initialize OPP and FTP server.
4459  *
4460  * This function is a synchronous call.
4461  * No event corresponding to this api
4462  *
4463  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4464  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
4465  *              BLUETOOTH_ERROR_NO_RESOURCES - Not resource available \n
4466  *              BLUETOOTH_ERROR_AGENT_ALREADY_EXIST - Obex agent already registered \n
4467  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
4468  *
4469  * @exception   None
4470  * @param[in]  dst_path   OPS destination file path.
4471  * @remark       None
4472  * @see           bluetooth_obex_server_deinit
4473  */
4474 int bluetooth_obex_server_init(const char *dst_path);
4475
4476
4477 /**
4478  * @fn int bluetooth_obex_server_deinit(void)
4479  * @brief Deinitialize OPP and FTP server.
4480  *
4481  * This function is a synchronous call.
4482  * No event corresponding to this api
4483  *
4484  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4485  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
4486  *              BLUETOOTH_ERROR_AGENT_DOES_NOT_EXIST -Obex agent not registered \n
4487  *
4488  * @exception   None
4489  *
4490  * @remark       None
4491  * @see           bluetooth_obex_server_init
4492  */
4493 int bluetooth_obex_server_deinit(void);
4494
4495
4496 /**
4497  * @fn gboolean bluetooth_obex_server_is_activated(void)
4498  * @brief Informs whether obex server is activated or not.
4499  *
4500  * This function is a synchronous call.
4501  *
4502  * @return   TRUE  - OBEX server is activated \n
4503  *              FALSE - OBEX server is not activated \n
4504  *
4505  * @exception   None
4506  *
4507  * @remark       None
4508  */
4509
4510 gboolean bluetooth_obex_server_is_activated(void);
4511
4512
4513 /**
4514  * @fn int bluetooth_obex_server_init_without_agent(const char *dst_path)
4515  * @brief Initialize OPP and FTP server without the conneciton authorization of the agent
4516  *
4517  * This function is a synchronous call.
4518  * No event corresponding to this api
4519  *
4520  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4521  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
4522  *              BLUETOOTH_ERROR_NO_RESOURCES - Not resource available \n
4523  *              BLUETOOTH_ERROR_AGENT_ALREADY_EXIST - Obex agent already registered \n
4524  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
4525  *
4526  *
4527  * @exception   None
4528  * @param[in]  dst_path   OPS destination file path.
4529  * @remark       None
4530  * @see           bluetooth_obex_server_deinit_without_agent
4531  */
4532 int bluetooth_obex_server_init_without_agent(const char *dst_path);
4533
4534
4535 /**
4536  * @fn int bluetooth_obex_server_deinit_without_agent(void)
4537  * @brief Deinitialize OPP and FTP server without the conneciton authorization of the agent
4538  *
4539  * This function is a synchronous call.
4540  * No event corresponding to this api
4541  *
4542  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4543  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
4544  *              BLUETOOTH_ERROR_AGENT_DOES_NOT_EXIST -Obex agent not registered \n
4545  *
4546  * @exception   None
4547  *
4548  * @remark       None
4549  * @see           bluetooth_obex_server_init_without_agent
4550  */
4551 int bluetooth_obex_server_deinit_without_agent(void);
4552
4553
4554 /**
4555  * @fn int bluetooth_obex_server_accept_connection(void)
4556  * @brief Accepts the authorization request indicated by the event
4557   * BLUETOOTH_EVENT_OBEX_SERVER_CONNECTION_AUTHORIZE.
4558  *
4559  * This function is a synchronous call.
4560  *
4561  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4562  *              BLUETOOTH_ERROR_NO_RESOURCES - Not resource available \n
4563  *              BLUETOOTH_ERROR_INTERNAL - Internal error \n
4564  *
4565  * @exception   None
4566  * @remark       None
4567  * @see           bluetooth_obex_server_reject_authorize
4568  */
4569 int bluetooth_obex_server_accept_connection(void);
4570
4571
4572 /**
4573  * @fn int bluetooth_obex_server_reject_connection(void)
4574  * @brief Rejects the authorization request indicated by the event
4575   * BLUETOOTH_EVENT_OBEX_SERVER_CONNECTION_AUTHORIZE.
4576  *
4577  * This function is a synchronous call.
4578  *
4579  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4580  *              BLUETOOTH_ERROR_NO_RESOURCES - Not resource available \n
4581  *              BLUETOOTH_ERROR_INTERNAL - Internal error \n
4582  *
4583  * @exception   None
4584  * @remark       None
4585  * @see           bluetooth_obex_server_reject_authorize
4586  */
4587 int bluetooth_obex_server_reject_connection(void);
4588
4589
4590 /**
4591  * @fn int bluetooth_obex_server_accept_authorize(const char *filename)
4592  * @brief Accepts the authorization request indicated by the event
4593   * BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_AUTHORIZE.
4594  *
4595  * This function is a asynchronous call.
4596  * This api will be responded with the event BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_STARTED.
4597  *
4598  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4599  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
4600  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
4601  *              BLUETOOTH_ERROR_AGENT_DOES_NOT_EXIST -Obex agent not registered \n
4602  *
4603  * @exception   None
4604  * @param[in]  filename   Authorized filename.
4605
4606  * @remark       None
4607  * @see           bluetooth_obex_server_reject_authorize
4608  */
4609
4610 int bluetooth_obex_server_accept_authorize(const char *filename);
4611
4612 /**
4613  * @fn int bluetooth_obex_server_reject_authorize(void)
4614  * @brief Reject the authorization request indicated by the event
4615   * BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_AUTHORIZE.
4616  *
4617  * This function is a asynchronous call.
4618  * No event for this api..
4619  *
4620  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4621  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
4622  *              BLUETOOTH_ERROR_AGENT_DOES_NOT_EXIST -Obex agent not registered \n
4623  *
4624  * @exception   None
4625
4626  * @remark       None
4627  * @see           bluetooth_obex_server_accept_authorize
4628  */
4629
4630 int bluetooth_obex_server_reject_authorize(void);
4631
4632 /**
4633  * @fn int bluetooth_obex_server_set_destination_path(const char *dst_path)
4634  * @brief Set the OPS destination file path..
4635  *
4636  * This function is a asynchronous call.
4637  * No event for this api..
4638  *
4639  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4640  *              BLUETOOTH_ERROR_NO_RESOURCES - Not resource available \n
4641  *              BLUETOOTH_ERROR_AGENT_DOES_NOT_EXIST -Obex agent not registered \n
4642  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid Param \n
4643  *
4644  * @exception   None
4645  * @param[in]  dst_path   OPS destination file path.
4646
4647  * @remark       None
4648  * @see          None
4649  */
4650
4651 int bluetooth_obex_server_set_destination_path(const char *dst_path);
4652
4653 /**
4654  * @fn int bluetooth_obex_server_set_root(const char *root)
4655  * @brief Set the FTS root folder..
4656  *
4657  * This function is a asynchronous call.
4658  * No event for this api..
4659  *
4660  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4661  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
4662  *              BLUETOOTH_ERROR_NO_RESOURCES - Not resource available \n
4663  *              BLUETOOTH_ERROR_ACCESS_DENIED - Operation not allowed \n
4664  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
4665  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4666  *
4667  * @exception  None
4668  * @param[in]   root   FTS root folder.
4669
4670  * @remark       None
4671  * @see          None
4672  */
4673
4674 int bluetooth_obex_server_set_root(const char *root);
4675
4676 /**
4677  * @fn int bluetooth_obex_server_cancel_transfer(int transfer_id)
4678  * @brief Cancel the transfer on server
4679  *
4680  * This function is an asynchronous call.
4681  * If the function call that cancels transfer is successful, the application would receive
4682  * BLUETOOTH_EVENT_TRANSFER_COMPLETED event through registered callback
4683  * function with an error code BLUETOOTH_ERROR_CANCEL. In the case of failure
4684  * the error code will be BLUETOOTH_ERROR_NONE
4685  *
4686  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4687  *               BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Not enabled \n
4688  *               BLUETOOTH_ERROR_AGENT_DOES_NOT_EXIST -Obex agent not registered \n
4689  *               BLUETOOTH_ERROR_INTERNAL - internal error (proxy does not exist) \n
4690  *               BLUETOOTH_ERROR_NOT_FOUND - The transfer is not found \n
4691  *
4692  * @exception None
4693  * @param[in] transfer_id transfer ID
4694
4695  * @remark       None
4696  * @see          None
4697  */
4698 int bluetooth_obex_server_cancel_transfer(int transfer_id);
4699
4700
4701 /**
4702  * @fn int bluetooth_obex_server_cancel_all_transfers(void)
4703  * @brief Cancel the transfer on server
4704  *
4705  * This function is an asynchronous call.
4706  * If the function call that cancels transfer is successful, the application would receive
4707  * BLUETOOTH_EVENT_TRANSFER_COMPLETED event through registered callback
4708  * function with an error code BLUETOOTH_ERROR_CANCEL. In the case of failure
4709  * the error code will be BLUETOOTH_ERROR_NONE
4710  *
4711  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4712  *               BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Not enabled \n
4713  *               BLUETOOTH_ERROR_AGENT_DOES_NOT_EXIST -Obex agent not registered \n
4714  *               BLUETOOTH_ERROR_INTERNAL - internal error (proxy does not exist) \n
4715  *               BLUETOOTH_ERROR_NOT_FOUND - The transfer is not found \n
4716  *
4717  * @exception None
4718  *
4719  * @remark       None
4720  * @see          None
4721  */
4722 int bluetooth_obex_server_cancel_all_transfers(void);
4723
4724
4725 /**
4726  * @fn int bluetooth_obex_server_is_receiving(gboolean *is_receiving)
4727  * @brief Informs whether obex server is receiving or not.
4728  *
4729  * This function is a synchronous call.
4730  *
4731  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4732  *               BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Not enabled \n
4733  *               BLUETOOTH_ERROR_INTERNAL \n
4734  *
4735  * @exception   None
4736  * @param[out] is_receiving The receiving status: (@c TRUE = in receiving , @c  false = not in receiving)
4737  *
4738  * @remark       None
4739  * @see            None
4740  */
4741 int bluetooth_obex_server_is_receiving(gboolean *is_receiving);
4742
4743
4744 /**
4745  * @fn int bluetooth_oob_read_local_data(bt_oob_data_t *local_oob_data)
4746  * @brief Read the local Hash and Randmizer.
4747  *
4748  * This function is a synchronous call.
4749  *
4750  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4751  *           BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4752  *
4753  * @exception  None
4754  * @param[in]  None.
4755  * @param[out] local_oob_data - Pointer to the local OOB data
4756  *
4757  * @remark       None
4758  * @see          None
4759  */
4760
4761 int bluetooth_oob_read_local_data(bt_oob_data_t *local_oob_data);
4762
4763
4764 /**
4765  * @fn int bluetooth_oob_add_remote_data(
4766  *                      const bluetooth_device_address_t *remote_device_address,
4767  *                      bt_oob_data_t *oob_data)
4768  * @brief Add/updated the remote device  Hash and Randmizer.
4769  *
4770  * This function is a synchronous call.
4771  * No event for this api..
4772  *
4773  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4774  *           BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4775  *
4776  * @exception   None
4777  * @param[in] remote_device_address - Remote device address
4778  *            remote_oob_data - Ponter to Hash and Randomizer oob data structure
4779  *
4780  * @remark      None
4781  * @see         None
4782  */
4783
4784 int bluetooth_oob_add_remote_data(
4785                    const bluetooth_device_address_t *remote_device_address,
4786                    bt_oob_data_t *remote_oob_data);
4787
4788
4789 /**
4790  * @fn int bluetooth_oob_remove_remote_data(
4791  *                      const bluetooth_device_address_t *remote_device_address)
4792  * @brief Delete the Hash and Randomizer w.r.t the remote device address.
4793  *
4794  * This function is a synchronous call.
4795  * No event for this api..
4796  *
4797  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4798  *           BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4799  *
4800  * @exception  None
4801  * @param[in] remote_device_address - Remote device address
4802  *
4803  * @remark       None
4804  * @see          None
4805  */
4806
4807 int bluetooth_oob_remove_remote_data(
4808                         const bluetooth_device_address_t *remote_device_address);
4809
4810 /**
4811  * @fn int bluetooth_gatt_get_primary_services(const bluetooth_device_address_t *address,
4812  *                                              bt_gatt_handle_info_t *prim_svc);
4813  *
4814  * @brief Gets the GATT based primary services handle supported by remote device
4815  *
4816  * This function is a synchronous call.
4817  * The output parameter needs to be freed by calling bluetooth_gatt_free_primary_services()
4818  *
4819  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4820  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4821  *              BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
4822  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
4823  *
4824  * @exception    None
4825  * @param[in]    address - Remote device address
4826  * @param[out] prim_svc - Structure containing remote service count and handle list.
4827  *
4828  * @remark      None
4829  * @see         bluetooth_gatt_free_primary_services()
4830  */
4831 int bluetooth_gatt_get_primary_services(const bluetooth_device_address_t *address,
4832                                                 bt_gatt_handle_info_t *prim_svc);
4833
4834 /**
4835  * @fn int bluetooth_gatt_discover_service_characteristics(const char *service_handle)
4836  *
4837  * @brief Discovers the characteristics of GATT based service of remote device
4838  *
4839  * This function is an asynchronous call.
4840  * This API is responded with BLUETOOTH_EVENT_GATT_SVC_CHAR_DISCOVERED
4841  *
4842  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4843  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4844  *              BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
4845  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
4846  *
4847  * @exception   None
4848  * @param[in]   service_handle - Handle for remote service.
4849  *
4850  * @remark      None
4851  * @see         None
4852  */
4853 int bluetooth_gatt_discover_service_characteristics(const char *service_handle);
4854
4855 int bluetooth_gatt_set_service_change_watcher(
4856                 const bluetooth_device_address_t *address, gboolean enable);
4857
4858 /**
4859  * @fn int bluetooth_gatt_get_service_property(const char *service_handle,
4860  *                                              bt_gatt_service_property_t *service);
4861  *
4862  * @brief Gets the properties of GATT based service of remote device
4863  *
4864  * This function is a synchronous call.
4865  * The output parameter needs to be freed by calling bluetooth_gatt_free_primary_services()
4866  *
4867  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4868  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4869  *              BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
4870  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
4871  *
4872  * @exception   None
4873  * @param[in]   service_handle - Handle for remote service.
4874  * @param[out]  service - Structure containing remote service property.
4875  *
4876  * @remark      None
4877  * @see         bluetooth_gatt_free_service_property()
4878  */
4879 int bluetooth_gatt_get_service_property(const char *service_handle,
4880                                                 bt_gatt_service_property_t *service);
4881
4882 /**
4883  * @fn int bluetooth_gatt_watch_characteristics(const char *service_handle)
4884  *
4885  * @brief Register to GATT based service to receive value change notification/indication.
4886  *
4887  * This function is a synchronous call.
4888  * No event for this api.
4889  *
4890  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4891  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4892  *              BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
4893  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
4894  *
4895  * @exception   None
4896  * @param[in]   service_handle - Handle for remote service.
4897  *
4898  * @remark      None
4899  * @see         None
4900  */
4901 int bluetooth_gatt_watch_characteristics(const char *service_handle);
4902
4903 /**
4904  * @fn int bluetooth_gatt_unwatch_characteristics(const char *service_handle)
4905  *
4906  * @brief Unregister GATT based service to receive value change notification/indication.
4907  *
4908  * This function is a synchronous call.
4909  * No event for this api.
4910  *
4911  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4912  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4913  *              BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
4914  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
4915  *
4916  * @exception   None
4917  * @param[in]   service_handle - Handle for remote service.
4918  *
4919  * @remark      None
4920  * @see         None
4921  */
4922 int bluetooth_gatt_unwatch_characteristics(const char *service_handle);
4923
4924 /**
4925  * @fn int bluetooth_gatt_get_characteristics_property(const char *char_handle,
4926  *                                              bt_gatt_char_property_t *characteristic);
4927  *
4928  * @brief Provides characteristic value along with properties.
4929  *
4930  * This function is a synchronous call.
4931  * The output parameter needs to be freed by calling bluetooth_gatt_free_char_property()
4932  *
4933  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4934  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4935  *              BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
4936  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
4937  *
4938  * @exception   None
4939  * @param[in]   char_handle - Handle for Characteristic property.
4940  * @param[out] characteristic - Structure containing remote characteristic property.
4941  *
4942  * @remark      None
4943  * @see         bluetooth_gatt_free_char_property()
4944  */
4945 int bluetooth_gatt_get_characteristics_property(const char *char_handle,
4946                                                 bt_gatt_char_property_t *characteristic);
4947
4948 /**
4949  * @fn int bluetooth_gatt_get_char_descriptor_property(const char *char_handle,
4950  *                                              bt_gatt_char_property_t *characteristic);
4951  *
4952  * @brief Provides characteristic descriptor value along with its UUID.
4953  *
4954  * This function is a synchronous call.
4955  * The output parameter needs to be freed by calling bluetooth_gatt_free_desc_property()
4956  *
4957  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4958  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4959  *              BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
4960  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
4961  *
4962  * @exception   None
4963  * @param[in]   desc_handle - Handle for Characteristic descriptor.
4964  * @param[out] descriptor - Structure containing remote characteristic descriptor property.
4965  *
4966  * @remark      None
4967  * @see         bluetooth_gatt_free_desc_property()
4968  */
4969 int bluetooth_gatt_get_char_descriptor_property(const char *desc_handle,
4970                                                 bt_gatt_char_descriptor_property_t *descriptor);
4971
4972
4973 /**
4974  * @fn int bluetooth_gatt_set_characteristics_value(const char *char_handle,
4975  *                                              const guint8 *value, int length)
4976  *
4977  * @brief Set characteristic value.
4978  *
4979  * This function is a synchronous call.
4980  *
4981  * @return   BLUETOOTH_ERROR_NONE  - Success \n
4982  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
4983  *              BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
4984  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
4985  *
4986  * @exception   None
4987  * @param[in]   char_handle - Handle for Characteristic property.
4988  * @param[in]   value - New value to set for characteristic property.
4989  * @param[in]   length - Length of the value to be set.
4990  *
4991  * @remark      None
4992  * @see         None
4993  */
4994 int bluetooth_gatt_set_characteristics_value(const char *char_handle,
4995                                                 const guint8 *value, int length);
4996
4997 /**
4998  * @fn int bluetooth_gatt_set_characteristics_value_by_type(const char *char_handle,
4999  *                              const guint8 *value, int length, guint8 write_type)
5000  *
5001  * @brief Set characteristic value by write type.
5002  *
5003  * This function is a synchronous call if write type is "write without resonse"
5004  * and it is an asynchronous call if write type is "write with response"
5005  *
5006  * @return   BLUETOOTH_ERROR_NONE  - Success \n
5007  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5008  *              BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5009  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5010  *
5011  * @exception   None
5012  * @param[in]   char_handle - Handle for Characteristic property.
5013  * @param[in]   value - New value to set for characteristic property.
5014  * @param[in]   length - Length of the value to be set.
5015  * @param[in]   write_type - Type of write.
5016  *
5017  * @remark      None
5018  * @see         None
5019  */
5020 int bluetooth_gatt_set_characteristics_value_by_type(const char *char_handle,
5021                                 const guint8 *value, int length, guint8 write_type);
5022
5023
5024 /**
5025  * @fn int bluetooth_gatt_set_characteristics_value_request(const char *char_handle,
5026  *                                              const guint8 *value, int length)
5027  *
5028  * @brief Set characteristic value request.
5029  *
5030  * This function is an asynchronous call.
5031  *
5032  * @return   BLUETOOTH_ERROR_NONE  - Success \n
5033  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5034  *              BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5035  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5036  *
5037  * @exception   None
5038  * @param[in]   char_handle - Handle for Characteristic property.
5039  * @param[in]   value - New value to set for characteristic property.
5040  * @param[in]   length - Length of the value to be set.
5041   *
5042  * @remark      None
5043  * @see         None
5044  */
5045 int bluetooth_gatt_set_characteristics_value_request(const char *char_handle,
5046                                                 const guint8 *value, int length);
5047
5048 /**
5049  * @fn int bluetooth_gatt_read_characteristic_value(const char *char_handle)
5050  *
5051  * @brief Read characteristic value.
5052  *
5053  * This function is a asynchronous call.
5054  *
5055  * @return   BLUETOOTH_ERROR_NONE  - Success \n
5056  *             BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5057  *             BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5058  *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5059  *
5060  * @exception  None
5061  * @param[in]  char_handle - Handle for Characteristic property.
5062  *
5063  * @remark     None
5064  * @see        None
5065  */
5066 int bluetooth_gatt_read_characteristic_value(const char *char_handle);
5067
5068 /**
5069  * @fn int bluetooth_gatt_get_service_from_uuid(bluetooth_device_address_t *address,
5070  *                                      const char *service_uuid,
5071  *                                      bt_gatt_service_property_t *service)
5072  *
5073  * @brief Gets the service property from a device based on a particular uuid
5074  *
5075  * This function is a synchronous call.
5076  *
5077  * @return   BLUETOOTH_ERROR_NONE  - Success \n
5078  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5079  *              BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5080  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5081  *
5082  * @exception   None
5083  * @param[in]   address - BD address of the remote device
5084  * @param[in]   service_uuid - uuid of the service.
5085  * @param[out] service - Structure containing the service property.
5086  *
5087  * @remark      None
5088  * @see         None
5089  */
5090  int bluetooth_gatt_get_service_from_uuid(bluetooth_device_address_t *address,
5091                                         const char *service_uuid,
5092                                         bt_gatt_service_property_t *service);
5093
5094 /**
5095  * @fn int bluetooth_gatt_get_char_from_uuid(const char *service_handle,
5096  *                                                      const char *char_uuid)
5097  *
5098  * @brief Gets the characteristic property from a service based on a particular char uuid
5099  *
5100  * This function is an asynchronous call.
5101  * This API is responded with BLUETOOTH_EVENT_GATT_GET_CHAR_FROM_UUID
5102  *
5103  * @return   BLUETOOTH_ERROR_NONE  - Success \n
5104  *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5105  *              BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5106  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5107  *
5108  * @exception   None
5109  * @param[in]   service_handle - Service handle.
5110  * @param[in]   uuid - Characteristic uuid.
5111  *
5112  * @remark      None
5113  * @see         None
5114  */
5115 int bluetooth_gatt_get_char_from_uuid(const char *service_handle,
5116                                                 const char *char_uuid);
5117
5118 /**
5119  * @fn int bluetooth_gatt_free_primary_services(bt_gatt_handle_info_t *prim_svc);
5120  *
5121  * @brief Releases the memory allocated by bluetooth_gatt_get_primary_services()
5122  *
5123  * This function is a synchronous call.
5124  * The input parameter is obtained by calling bluetooth_gatt_get_primary_services()
5125  *
5126  * @return   BLUETOOTH_ERROR_NONE  - Success \n
5127  *              BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5128  *
5129  * @exception   None
5130  * @param[in]   prim_svc - GATT handle info structure
5131  *
5132  * @remark      None
5133  * @see         bluetooth_gatt_get_primary_services()
5134  */
5135 int bluetooth_gatt_free_primary_services(bt_gatt_handle_info_t *prim_svc);
5136
5137 /**
5138  * @fn int bluetooth_gatt_free_service_property(bt_gatt_service_property_t *svc_pty);
5139  *
5140  * @brief  Releases the memory allocated by bluetooth_gatt_get_service_property()
5141  *
5142  * This function is a synchronous call.
5143  * The input parameter is obtained by calling bluetooth_gatt_get_service_property()
5144  *
5145  * @return   BLUETOOTH_ERROR_NONE  - Success \n
5146  *              BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5147  *
5148  * @exception   None
5149  * @param[in]   svc_pty - GATT service property structure.
5150  *
5151  * @remark      None
5152  * @see         bluetooth_gatt_get_service_property()
5153  */
5154 int bluetooth_gatt_free_service_property(bt_gatt_service_property_t *svc_pty);
5155
5156 /**
5157  * @fn int bluetooth_gatt_free_char_property(bt_gatt_char_property_t *char_pty);
5158  *
5159  * @brief Provides characteristic value along with properties.
5160  *
5161  * This function is a synchronous call.
5162  * The input parameter is obtained by calling bluetooth_gatt_get_characteristics_property()
5163  *
5164  * @return   BLUETOOTH_ERROR_NONE  - Success \n
5165  *              BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5166  *
5167  * @exception   None
5168  * @param[in]   char_pty - GATT characteristics property structure.
5169  *
5170  * @remark      None
5171  * @see         bluetooth_gatt_get_characteristics_property()
5172  */
5173  int bluetooth_gatt_free_char_property(bt_gatt_char_property_t *char_pty);
5174
5175 /**
5176  * @fn int bluetooth_gatt_free_desc_property(bt_gatt_char_descriptor_property_t *desc_pty);
5177  *
5178  * @brief Releases the memory allocated by bluetooth_gatt_get_char_descriptor_property()
5179  *
5180  * This function is a synchronous call.
5181  * The input parameter is obtained by calling bluetooth_gatt_get_char_descriptor_property()
5182  *
5183  * @return   BLUETOOTH_ERROR_NONE  - Success \n
5184  *              BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5185  *
5186  * @exception   None
5187  * @param[in]   desc_pty - GATT characteristics descriptor property structure.
5188  *
5189  * @remark      None
5190  * @see         bluetooth_gatt_get_char_descriptor_property()
5191  */
5192  int bluetooth_gatt_free_desc_property(bt_gatt_char_descriptor_property_t *desc_pty);
5193
5194
5195  int bluetooth_connect_le(const bluetooth_device_address_t *device_address, gboolean auto_connect);
5196
5197  int bluetooth_disconnect_le(const bluetooth_device_address_t *device_address);
5198
5199  /**
5200  * @fn int bluetooth_gatt_discover_characteristic_descriptor(const char *characteristic_handle);
5201  *
5202  * @brief Discovers the characteristic descriptor value of a characteristic within its definition, asynchronously
5203  *
5204  * The input parameter is obtained by calling bluetooth_gatt_get_characteristics_property()
5205  *
5206  * @return  BLUETOOTH_ERROR_NONE  - Success \n
5207  *                      BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5208  *
5209  * @exception   None
5210  * @param[in]   characteristic_handle - The characteristic handle for which characteristic descriptor has to be discovered.
5211  *
5212  * @remark      None
5213  */
5214 int bluetooth_gatt_discover_characteristic_descriptor(const char *characteristic_handle);
5215
5216 /**
5217  * @fn int bluetooth_gatt_read_descriptor_value(const char *desc_handle)
5218  *
5219  * @brief Read characteristic descriptor value.
5220  *
5221  * This function is a asynchronous call.
5222  *
5223  * @return   BLUETOOTH_ERROR_NONE  - Success \n
5224  *             BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5225  *             BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5226  *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5227  *
5228  * @exception  None
5229  * @param[in]  desc_handle - Handle for Characteristic descriptor
5230  *
5231  * @remark     None
5232  * @see        None
5233  */
5234  int bluetooth_gatt_read_descriptor_value(const char *desc_handle);
5235
5236 /**
5237  * @fn int bluetooth_gatt_write_descriptor_value(const char *desc_handle,
5238  *                      const guint8 *value, int length);
5239  *
5240  * @brief Set characteristic descriptor value.
5241  *
5242  * This function is a asynchronous call.
5243  *
5244  * @return   BLUETOOTH_ERROR_NONE  - Success \n
5245  *             BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5246  *             BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5247  *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5248  *
5249  * @exception  None
5250  * @param[in]  desc_handle - Handle for Characteristic descriptor
5251  * @param[in]  value - New value to set for characteristic descriptor
5252  * @param[in]  length - Length of the value to be set.
5253  *
5254  * @remark     None
5255  * @see        None
5256  */
5257  int bluetooth_gatt_write_descriptor_value(const char *desc_handle,
5258                         const guint8 *value, int length);
5259
5260 /* @fn int bluetooth_gatt_init(void)
5261 *
5262 * @brief Initializes the gatt service.
5263 *
5264 * This function is a synchronous call.
5265 * @return   BLUETOOTH_ERROR_NONE        - Success \n
5266 *        BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5267 *        BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5268 *        BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5269 *
5270 * @exception     None
5271 * @remark  Adapter should be enabled
5272 * @see  bluetooth_gatt_deinit()
5273 */
5274 int bluetooth_gatt_init(void);
5275
5276 /* @fn int bluetooth_gatt_init(void)
5277 *
5278 * @brief DeInitializes the gatt service.
5279 *
5280 * This function is a synchronous call.
5281 * @return   BLUETOOTH_ERROR_NONE        - Success \n
5282 *        BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5283 *        BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5284 *        BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5285 *
5286 * @exception     None
5287 * @remark  Adapter should be enabled
5288 * @see  bluetooth_gatt_init()
5289 */
5290 int bluetooth_gatt_deinit(void);
5291
5292 /* @fn int bluetooth_gatt_add_service(const char *svc_uuid,
5293                         unsigned char **svc_path)
5294 *
5295 * @brief Exports a new gatt service to the service interface.
5296 *
5297 * This function is a synchronous call.
5298 *
5299 * @return       BLUETOOTH_ERROR_NONE    - Success \n
5300 *        BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5301 *        BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5302 *        BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5303 *
5304 * @exception     None
5305 * @param[in]   svc_uuid  Gatt service uuid.
5306 * @param[out] svc_path  service object path of the exported service.
5307 * @remark  Adapter should be enabled
5308 * @see  bluetooth_gatt_init()
5309 */
5310 int bluetooth_gatt_add_service(const char *svc_uuid,
5311                         char **svc_path);
5312
5313 /* @fn int bluetooth_gatt_add_new_characteristic(
5314                         const char *svc_path, const char *char_uuid,
5315                         bt_gatt_permission_t permissions,
5316                         bt_gatt_characteristic_property_t properties,
5317                         int flags_length, char **char_path);;
5318 *
5319 * @brief Exports a new gatt characteristic to the characteristic interface.
5320 *
5321 * This function is a synchronous call.
5322 * @return       BLUETOOTH_ERROR_NONE    - Success \n
5323 *        BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5324 *        BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5325 *        BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5326 * @exception     None
5327 * @param[in]   svc_path service object path of the exported service.
5328 * @param[in]   char_uuid  Gatt service uuid.
5329 * @param[in]   properties       GATT characteristic properties.
5330 * @param[out] char_path characteristic object path of the exported characteristic.
5331 *
5332 * @remark  Adapter should be enabled
5333 * @see  bluetooth_gatt_add_service()
5334 */
5335 int bluetooth_gatt_add_new_characteristic(
5336                         const char *svc_path, const char *char_uuid,
5337                         bt_gatt_permission_t permissions,
5338                         bt_gatt_characteristic_property_t properties,
5339                         char **char_path);
5340
5341 /* @fn bluetooth_gatt_set_characteristic_value(
5342                         const char *characteristic, const char *char_value,
5343                         int value_length);
5344 *
5345 * @brief adds gatt charactertisic value to the given charactertistic path.
5346 *
5347 * This function is a synchronous call.
5348 * @return       BLUETOOTH_ERROR_NONE    - Success \n
5349 *        BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5350 *        BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5351 *        BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5352 * @exception     None
5353 * @param[in]   char_value Value of the GATT characteristic to be added.
5354 * @param[in]   value_length length of the chantacteristic value..
5355 * @param[out] characteristic characteristic object path..
5356 *
5357 * @remark  Adapter should be enabled
5358 * @see  bluetooth_gatt_add_service()
5359 */
5360 int bluetooth_gatt_set_characteristic_value(
5361                         const char *characteristic, const char *char_value,
5362                         int value_length);
5363
5364 /* @fn  int bluetooth_gatt_add_descriptor(
5365                         const char *char_path, const char *desc_uuid,
5366                         bt_gatt_permission_t permissions,
5367                         char **desc_path);
5368 *
5369 * @brief Exports a new gatt descriptor to the descriptor interface.
5370 *
5371 * This function is a synchronous call.
5372 *
5373 * @return       BLUETOOTH_ERROR_NONE    - Success \n
5374 *        BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5375 *        BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5376 *        BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5377 *
5378 * @exception     None
5379 * @param[in]   desc_uuid  Gatt descriptor uuid.
5380 * @param[in]   desc_value       GATT descriptor value.
5381 * @param[in]   value_length     Length of GATT descriptor value.
5382 * @param[in]   permissions      descriptor permissions.
5383 * @param[in]   properties       GATT descriptor properties.
5384 * @param[in]  char_path characteristics object path of the exported character.
5385 *
5386 * @remark  Adapter should be enabled
5387 * @see  bluetooth_gatt_add_service()
5388 * @see  bluetooth_gatt_add_characteristics()
5389 */
5390 int bluetooth_gatt_add_descriptor(
5391                         const char *char_path, const char *desc_uuid,
5392                         bt_gatt_permission_t permissions,
5393                         char **desc_path);
5394
5395 /* @fn int bluetooth_gatt_set_descriptor_value(
5396                    const char *desc_path, const char *desc_value,
5397                    int value_length);
5398 *
5399 * @brief Adds value to the given descriptor handle.
5400 *
5401 * This function is a synchronous call.
5402 *
5403 * @return       BLUETOOTH_ERROR_NONE    - Success \n
5404 *        BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5405 *        BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5406 *        BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5407 *
5408 * @exception     None
5409 * @param[in]   desc_value       GATT descriptor value.
5410 * @param[in]   value_length     Length of GATT descriptor value.
5411 * @param[in]  desc_path descriptor path to which the value needs to be added.
5412 *
5413 * @remark  Adapter should be enabled
5414 * @see  bluetooth_gatt_add_service()
5415 * @see  bluetooth_gatt_add_characteristics()
5416 */
5417 int bluetooth_gatt_set_descriptor_value(
5418                    const char *desc_path, const char *desc_value,
5419                    int value_length);
5420
5421 /* @fn int bluetooth_gatt_get_service(const char *svc_uuid);
5422 *
5423 * @brief Reads the Service registered on manager interface.
5424 *
5425 * This function is a synchronous call.
5426 *
5427 * @return       BLUETOOTH_ERROR_NONE    - Success \n
5428 *        BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5429 *        BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5430 *        BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5431 *
5432 * @exception     None
5433 * @param[in]   svc_uuid  Gatt Service uuid.
5434 *
5435 * @remark  Adapter should be enabled and service should be registered.
5436 * @see  bluetooth_gatt_register_service()
5437 */
5438 int bluetooth_gatt_get_service(const char *svc_uuid);
5439
5440 /* @fn int bluetooth_gatt_register_service(const  char *svc_path)
5441 *
5442 * @brief Registers the given service path with the library.
5443 *
5444 * This function is a synchronous call.
5445 *
5446 * @return       BLUETOOTH_ERROR_NONE    - Success \n
5447 *        BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5448 *        BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5449 *        BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5450 *
5451 * @exception     None
5452 * @param[in] svc_path   service object path of the exported service.
5453 *
5454 * @remark  Adapter should be enabled
5455 * @see  bluetooth_gatt_add_service()
5456 * @see  bluetooth_gatt_add_characteristics()
5457 * @see  bluetooth_gatt_add_descriptor()
5458 * @see  bluetooth_gatt_register_application()
5459 */
5460 int bluetooth_gatt_register_service(const char *svc_path);
5461
5462 /* @fn int bluetooth_gatt_register_application(void)
5463 *
5464 * @brief Registers the application with the bluez gatt server.
5465 *
5466 * This function is a synchronous call.
5467 *
5468 * @return       BLUETOOTH_ERROR_NONE    - Success \n
5469 *        BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5470 *        BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5471 *        BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5472 *
5473 * @exception     None
5474 *
5475 * @remark  Adapter should be enabled
5476 * @see  bluetooth_gatt_init()
5477 * @see  bluetooth_gatt_add_service()
5478 * @see  bluetooth_gatt_add_characteristics()
5479 * @see  bluetooth_gatt_add_descriptor()
5480 * @see  bluetooth_gatt_register_service()
5481 */
5482 int bluetooth_gatt_register_application(void);
5483
5484 /* @fn int bluetooth_gatt_unregister_service(const  char *svc_path)
5485 *
5486 * @brief Removes(unregister) service from the bluez gatt server db.
5487 *
5488 * This function is a synchronous call.
5489 *
5490 * @return       BLUETOOTH_ERROR_NONE    - Success \n
5491 *        BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5492 *        BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5493 *        BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5494 *
5495 * @exception     None
5496 * @param[in] svc_path   service object path of the exported service.
5497 *
5498 * @remark  Adapter should be enabled
5499 * @see  bluetooth_gatt_add_service()
5500 * @see  bluetooth_gatt_add_characteristics()
5501 * @see  bluetooth_gatt_add_descriptor()
5502 * @see bluetooth_gatt_register_service()
5503 */
5504 int bluetooth_gatt_unregister_service(const char *svc_path);
5505
5506 /* @fn int bluetooth_gatt_unregister_application(void)
5507 *
5508 * @brief Removes(unregister) the application with the bluez gatt server,
5509 *        and deletes all the service registered.
5510 *
5511 * This function is a synchronous call.
5512 *
5513 * @return       BLUETOOTH_ERROR_NONE    - Success \n
5514 *        BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5515 *        BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5516 *        BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5517 *
5518 * @exception     None
5519 *
5520 * @remark  Adapter should be enabled
5521 * @see  bluetooth_gatt_init()
5522 * @see  bluetooth_gatt_add_service()
5523 * @see  bluetooth_gatt_add_characteristics()
5524 * @see  bluetooth_gatt_add_descriptor()
5525 * @see  bluetooth_gatt_register_service()
5526 * @see  bluetooth_gatt_unregister_service()
5527 */
5528 int bluetooth_gatt_unregister_application(void);
5529
5530 /* @fn int bluetooth_gatt_send_response(int request_id,
5531 *                               int offset, char *value, int value_length)
5532 *
5533 * @brief Updates the attribute value in local attribute list.
5534 *
5535 * This function is a synchronous call.
5536 *
5537 * @return       BLUETOOTH_ERROR_NONE    - Success \n
5538 *        BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5539 *        BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5540 *        BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5541 *
5542 * @exception     None
5543 * @param[in] request_id The identification of a read request
5544 * @param[in] req_type The identification of  request type (TRUE for Read request and FALSE for write request)
5545 * @param[in] resp_state The identification of response state
5546 * @param[in] offset The offset from where a value is read
5547 * @param[in] value The value to be sent. It will be sent from @a offset.
5548 *               If it is NULL, a requested GATT handle's value will be sent from @a offset.
5549 * @param[in] value_length Value Length.
5550 *
5551 * @remark  Adapter should be enabled
5552 * @see  bluetooth_gatt_add_service()
5553 * @see  bluetooth_gatt_add_characteristics()
5554 * @see  bluetooth_gatt_add_descriptor()
5555 * @see bluetooth_gatt_register_service()
5556 */
5557 int bluetooth_gatt_send_response(int request_id, guint req_type,
5558                                 int resp_state, int offset, char *value, int value_length);
5559
5560 /* @fn bluetooth_gatt_server_set_notification(const char *char_path)
5561 *
5562 * @brief Sets the notification property for a characteristic.
5563 *
5564 * This function is a synchronous call.
5565 *
5566 * @return       BLUETOOTH_ERROR_NONE    - Success \n
5567 *        BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5568 *        BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5569 *        BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5570 *
5571 * @exception     None
5572 * @param[in] char_path characteristic object path.
5573 * @param[in]   unicast_address remote device address. if set notification is sent to only one device.
5574 *
5575 * @remark  Adapter should be enabled
5576 * @see  bluetooth_gatt_update_characteristic()
5577 */
5578 int bluetooth_gatt_server_set_notification(const char *char_path,
5579                                 bluetooth_device_address_t *unicast_address);
5580
5581 /* @fn int bluetooth_gatt_delete_services(void)
5582 *
5583 * @brief deletes (unregisters) all services from the gatt server database..
5584 *
5585 * This function is a synchronous call.
5586 *
5587 * @return       BLUETOOTH_ERROR_NONE    - Success \n
5588 *        BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5589 *        BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5590 *        BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5591 *
5592 * @exception     None
5593 *
5594 * @remark  Adapter should be enabled
5595 * @see  bluetooth_gatt_add_service()
5596 * @see  bluetooth_gatt_add_characteristics()
5597 * @see  bluetooth_gatt_add_descriptor()
5598 * @see bluetooth_gatt_register_service()
5599 * @see bluetooth_gatt_unregister_service()
5600 */
5601 int bluetooth_gatt_delete_services(void);
5602
5603 /* @fn int bluetooth_gatt_update_characteristic(void)
5604 *
5605 * @brief updates the given characteristic with a new value
5606 *
5607 * This function is a synchronous call.
5608 *
5609 * @return       BLUETOOTH_ERROR_NONE    - Success \n
5610 *        BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5611 *        BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
5612 *        BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
5613 *
5614 * @exception     None
5615 *
5616 * @remark  Adapter should be enabled
5617 * @see  bluetooth_gatt_add_service()
5618 * @see  bluetooth_gatt_add_characteristics()
5619 * @see  bluetooth_gatt_add_descriptor()
5620 * @see bluetooth_gatt_register_service()
5621 * @see bluetooth_gatt_unregister_service()
5622 */
5623 int bluetooth_gatt_update_characteristic(const char *char_path,
5624                 const char* char_value, int value_length);
5625
5626 /**
5627  * @fn int bluetooth_set_advertising(int handle, gboolean enable);
5628  *
5629  * @brief Set advertising status.
5630  *
5631  * This function is used to enable or disable LE advertising.
5632  * Once advertising is enabled, Advertising data is transmitted in the advertising packets
5633  *
5634  * This function is a synchronous call.
5635  *
5636  * @return      BLUETOOTH_ERROR_NONE - Success \n
5637  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
5638  *              BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
5639  *
5640  * @exception   None
5641  * @param[in]   enable - The status of advertising
5642  *
5643  * @remark      None
5644  * @see         bluetooth_set_advertising_data
5645  */
5646 int bluetooth_set_advertising(int handle, gboolean enable);
5647
5648 /**
5649  * @fn int bluetooth_set_custom_advertising(int handle, gboolean enable, bluetooth_advertising_params_t *params);
5650  *
5651  * @brief Set advertising status along with interval value.
5652  *
5653  * This function is used to enable or disable LE advertising.
5654  * Interval_min and Interval_max is used to set the best advertising interval.
5655  * Once advertising is enabled, Advertising data is transmitted in the advertising packets
5656  *
5657  * This function is a synchronous call.
5658  *
5659  * @return      BLUETOOTH_ERROR_NONE - Success \n
5660  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
5661  *              BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
5662  *
5663  * @exception   None
5664  * @param[in]   enable - The status of advertising
5665  * @param[in]   interval_min - Minimum interval of advertising (msec)
5666  * @param[in]   interval_max - Maximum interval of advertising (msec)
5667  * @param[in]   filter_policy - Advertising filter policy
5668  *
5669  * @remark      None
5670  * @see         bluetooth_set_advertising_data
5671  */
5672 int bluetooth_set_custom_advertising(int handle, gboolean enable,
5673                                         bluetooth_advertising_params_t *params);
5674
5675 /**
5676  * @fn int bluetooth_get_advertising_data(bluetooth_advertising_data_t *value, int *length);
5677  * @brief Get the advertising data
5678  *
5679  * This function is used to get advertising data.
5680  * Before calling this API, the adapter should be enabled.
5681  *
5682  * This function is a synchronous call.
5683  *
5684  * @return      BLUETOOTH_ERROR_NONE - Success \n
5685  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
5686  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter (NULL buffer)\n
5687  *              BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
5688  *
5689  * @param[out]  value - Advertising data structure.
5690  * @param[out]  length - The length of Advertising data.
5691  *
5692  * @remark      None
5693 @code
5694 bluetooth_advertising_data_t *value = { {0} };
5695 int length;
5696 int ret = 0;
5697 ret = bluetooth_get_advertising_data(&value, &length);
5698 @endcode
5699  */
5700 int bluetooth_get_advertising_data(bluetooth_advertising_data_t *value, int *length);
5701
5702 /**
5703  * @fn int bluetooth_set_advertising_data(int handle, const bluetooth_advertising_data_t *value, int length);
5704  *
5705  * @brief Set advertising data with value
5706  *
5707  * This function is used to set advertising data and Maximum size of advertising data
5708  *  is 28 byte (Except Flag)
5709  *
5710  * This function is a synchronous call.
5711  *
5712  * @return      BLUETOOTH_ERROR_NONE - Success \n
5713  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
5714  *              BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
5715  *
5716  * @exception   None
5717  * @param[in]   value - Advertising data structure.
5718  *
5719  * @remark      None
5720  */
5721 int bluetooth_set_advertising_data(int handle, const bluetooth_advertising_data_t *value, int length);
5722
5723 /**
5724  * @fn int bluetooth_check_privilege_advertising_parameter(void);
5725  *
5726  * @brief Check the privilege for advertising parameter setting
5727  *
5728  * This function is a synchronous call.
5729  *
5730  * @return      BLUETOOTH_ERROR_NONE - Success \n
5731  *              BLUETOOTH_ERROR_PERMISSION_DEINED - Permission deined \n
5732  *
5733  * @exception   None
5734  *
5735  * @remark      None
5736  */
5737 int bluetooth_check_privilege_advertising_parameter(void);
5738
5739 /**
5740  * @fn int bluetooth_get_scan_response_data(bluetooth_scan_resp_data_t *value, int *length);
5741  * @brief Get the LE scan response data
5742  *
5743  * This function is used to get scan response data.
5744  * Before calling this API, the adapter should be enabled.
5745  *
5746  * This function is a synchronous call.
5747  *
5748  * @return      BLUETOOTH_ERROR_NONE - Success \n
5749  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
5750  *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter (NULL buffer)\n
5751  *              BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
5752  *
5753  * @param[out]  value - Scan response data structure.
5754  * @param[out]  length - The length of Scan response data.
5755  *
5756  * @remark      None
5757 @code
5758 bluetooth_scan_resp_data_t *value = { {0} };
5759 int length;
5760 int ret = 0;
5761 ret = bluetooth_get_scan_response_data(&value, &length);
5762 @endcode
5763  */
5764 int bluetooth_get_scan_response_data(bluetooth_scan_resp_data_t *value, int *length);
5765
5766 /**
5767  * @fn int bluetooth_set_scan_response_data(int handle, const bluetooth_scan_resp_data_t *value, int length);
5768  *
5769  * @brief Set scan response data with value
5770  *
5771  * This function is used to set scan response data and Maximum size of scan response data is 31 byte
5772  *
5773  * This function is a synchronous call.
5774  *
5775  * @return      BLUETOOTH_ERROR_NONE - Success \n
5776  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
5777  *              BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
5778  *
5779  * @exception   None
5780  * @param[in]   value - LE Scan response data structure.
5781  *
5782  * @remark      None
5783  */
5784 int bluetooth_set_scan_response_data(int handle, const bluetooth_scan_resp_data_t *value, int length);
5785
5786 /**
5787  * @fn int bluetooth_set_scan_parameters(bluetooth_le_scan_params_t *params);
5788  *
5789  * @brief Set scan interval and window
5790  *
5791  * This function is used to set LE scan interval and window size
5792  *
5793  * This function is a synchronous call.
5794  *
5795  * @return      BLUETOOTH_ERROR_NONE - Success \n
5796  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
5797  *              BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
5798  *
5799  * @exception   None
5800  * @param[in]   interval - Interval of LE scan (msec)
5801  * @param[in]   window - Window size of LE scan (msec)
5802  *
5803  * @remark      None
5804  */
5805 int bluetooth_set_scan_parameters(bluetooth_le_scan_params_t *params);
5806
5807 /**
5808  * @fn int bluetooth_is_advertising(void)
5809  * @brief Check for the advertising is in-progress or not.
5810  *
5811  * This API is used to check the current status of the advertising procedure.
5812  * Before calling this API, make sure that the adapter is enabled. There is no callback event for
5813  * this API.
5814  *
5815  * This function checks whether the advertising is started or not.
5816  *
5817  * This function is a synchronous call.
5818  *
5819  * @param[out] is_advertising The advertising status: (@c TRUE = in progress, @c  false = not in progress)
5820  *
5821  * @return      BLUETOOTH_ERROR_NONE - Success \n
5822  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
5823  *
5824  * @remark      None
5825  * @see         bluetooth_set_advertising, bluetooth_set_custom_advertising
5826
5827 @code
5828 int ret;
5829 gboolean is_advertising = 0;
5830
5831 ret = bluetooth_is_advertising(&is_advertising);
5832 @endcode
5833  */
5834 int bluetooth_is_advertising(gboolean *is_advertising);
5835
5836 /**
5837  * @fn int bluetooth_add_white_list(bluetooth_device_address_t *address, bluetooth_device_address_type_t address_type)
5838  * @brief Add LE device to white list
5839  *
5840  * This API is used to add LE device to white list
5841  * Before calling this API, make sure that the adapter is enabled. There is no callback event for
5842  * this API.
5843  *
5844  *
5845  * This function is a synchronous call.
5846  *
5847  * @param[in] address The address of remote device
5848  *
5849  * @return      BLUETOOTH_ERROR_NONE - Success \n
5850  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
5851  *
5852  * @remark      None
5853  * @see         bluetooth_set_custom_advertising
5854  */
5855 int bluetooth_add_white_list(bluetooth_device_address_t *address, bluetooth_device_address_type_t address_type);
5856
5857 /**
5858  * @fn int bluetooth_remove_white_list(bluetooth_device_address_t *address, bluetooth_device_address_type_t address_type)
5859  * @brief Remove LE device from white list
5860  *
5861  * This API is used to remove LE device from white list
5862  * Before calling this API, make sure that the adapter is enabled. There is no callback event for
5863  * this API.
5864  *
5865  *
5866  * This function is a synchronous call.
5867  *
5868  * @param[in] address The address of remote device
5869  *
5870  * @return      BLUETOOTH_ERROR_NONE - Success \n
5871  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
5872  *
5873  * @remark      None
5874  * @see         bluetooth_set_custom_advertising
5875  */
5876 int bluetooth_remove_white_list(bluetooth_device_address_t *address, bluetooth_device_address_type_t address_type);
5877
5878 /**
5879  * @fn int bluetooth_clear_white_list(void)
5880  * @brief Clear white list
5881  *
5882  * This API is used to clear white list
5883  * Before calling this API, make sure that the adapter is enabled. There is no callback event for
5884  * this API.
5885  *
5886  *
5887  * This function is a synchronous call.
5888  *
5889  * @param[in] address The address of remote device
5890  *
5891  * @return      BLUETOOTH_ERROR_NONE - Success \n
5892  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
5893  *
5894  * @remark      None
5895  * @see         bluetooth_set_custom_advertising
5896  */
5897 int bluetooth_clear_white_list(void);
5898
5899 /**
5900  * @fn int bluetooth_le_conn_update(bluetooth_device_address_t *address,
5901  *          const bluetooth_le_connection_param_t *parameters)
5902  * @brief update connection paramter of LE connection.
5903  *
5904  * This function is a synchronous call.
5905  *
5906  * @return   BLUETOOTH_ERROR_NONE  - Success \n
5907  *           BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5908  *
5909  * @exception  None
5910  * @param[in]  address - remote device address value.
5911  * @param[in]  parameters - new connection parameters.
5912  *
5913  * @remark       None
5914  * @see     bluetooth_bond_device
5915  */
5916 int bluetooth_le_conn_update(const bluetooth_device_address_t *address,
5917             const bluetooth_le_connection_param_t *parameters);
5918
5919
5920 /**
5921  * @fn int bluetooth_enable_le_privacy(gboolean enable_privacy);
5922  *
5923  * @brief Enable/Disable LE Privacy feature.
5924  *
5925  * This function is used to enable or disable LE Privacy feature.
5926  * Once Privacy feature is enabled, Adapter can use Random Address for more security.
5927  *
5928  * This function is a synchronous call.
5929  *
5930  * @return      BLUETOOTH_ERROR_NONE - Success \n
5931  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
5932  *              BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
5933  *
5934  * @exception   None
5935  * @param[in]   enable_privacy - The status of Privacy feature to be activated/deactivated[True/False].
5936  *
5937  * @remark      None
5938  */
5939 int bluetooth_enable_le_privacy(gboolean enable_privacy);
5940
5941 /**
5942  * @fn int bluetooth_set_le_static_random_address(gboolean enable);
5943  *
5944  * @brief Enable/Disable LE static random address.
5945  *
5946  * This function is used to enable or disable LE static random address.
5947  *
5948  * This function is a synchronous call.
5949  *
5950  * @return      BLUETOOTH_ERROR_NONE - Success \n
5951  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
5952  *              BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
5953  *
5954  * @exception   None
5955  * @param[in]   enable - The status of LE static random address to be activated/deactivated[True/False].
5956  *
5957  * @remark      None
5958  */
5959 int bluetooth_set_le_static_random_address(gboolean enable);
5960
5961 /**
5962  * @fn int bluetooth_update_le_connection_mode(bluetooth_device_address_t *address,
5963  *                                             bluetooth_le_connection_mode_t mode)
5964  * @brief update connection paramter of LE connection.
5965  *
5966  * This function is a synchronous call.
5967  *
5968  * @return   BLUETOOTH_ERROR_NONE  - Success \n
5969  *           BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5970  *           BLUETOOTH_ERROR_INVALID_PARAM - Parameter is not valid \n
5971  *
5972  * @exception  None
5973  * @param[in]  address - remote device address value.
5974  * @param[in]  mode - new connection mode.
5975  *
5976  * @remark       None
5977  */
5978 int bluetooth_update_le_connection_mode(const bluetooth_device_address_t *address,
5979                 bluetooth_le_connection_mode_t mode);
5980
5981 /**
5982  * @fn int bluetooth_request_att_mtu(const bluetooth_device_address_t *device_address, guint16 mtu)
5983  * @brief Request for new ATT MTU value.
5984  *
5985  * This function is a asynchronous call.
5986  *
5987  * @return   BLUETOOTH_ERROR_NONE  - Success \n
5988  *           BLUETOOTH_ERROR_INTERNAL - Internal Error \n
5989  *           BLUETOOTH_ERROR_INVALID_PARAM - Parameter is not valid \n
5990  *
5991  * @exception  None
5992  * @param[in]  address - remote device address value.
5993  * @param[in]  mtu - MTU value to be set.
5994  *
5995  * @remark       None
5996  */
5997 int bluetooth_request_att_mtu(const bluetooth_device_address_t *device_address, unsigned int mtu);
5998
5999 /**
6000  * @fn int bluetooth_get_att_mtu(const bluetooth_device_address_t *device_address,
6001  *                              unsigned int *mtu)
6002  * @brief Gets the xisting MTU value set for a connection.
6003  *
6004  * This function is a synchronous call.
6005  *
6006  * @return       BLUETOOTH_ERROR_NONE  - Success \n
6007  *                       BLUETOOTH_ERROR_INTERNAL - Internal Error \n
6008  *                       BLUETOOTH_ERROR_INVALID_PARAM - Parameter is not valid \n
6009  *
6010  * @exception  None
6011  * @param[in]  address - remote device address value.
6012  * @param[out]  mtu - MTU value set for the connection.
6013  *
6014  * @remark               None
6015  */
6016 int bluetooth_get_att_mtu(const bluetooth_device_address_t *device_address,
6017                                 unsigned int *mtu);
6018
6019 /**
6020  * @fn int bluetooth_get_device_ida(const bluetooth_device_address_t *device_rpa,
6021  *                                      bluetooth_device_address_t *id_address)
6022  * @brief Gets the Identity address of remote device.
6023  *
6024  * This function is a synchronous call.
6025  *
6026  * @return       BLUETOOTH_ERROR_NONE  - Success \n
6027  *                       BLUETOOTH_ERROR_INTERNAL - Internal Error \n
6028  *                       BLUETOOTH_ERROR_INVALID_PARAM - Parameter is not valid \n
6029  *
6030  * @exception  None
6031  * @param[in]  device_rpa - remote Resolvable private address.
6032  * @param[out] id_address - remote Identity device address value.
6033  *
6034  * @remark               None
6035  */
6036 int bluetooth_get_device_ida(const bluetooth_device_address_t *device_rpa,
6037         bluetooth_device_address_t *id_address);
6038
6039 /**
6040  * @fn int bluetooth_le_read_maximum_data_length()
6041  * @brief reads the maximum LE data length supported in the controller.
6042  *
6043  * This function is a synchronous call.
6044  *
6045  * @return   BLUETOOTH_ERROR_NONE  - Success \n
6046  *           BLUETOOTH_ERROR_INTERNAL - Internal Error \n
6047  *
6048  * @exception  None
6049  *
6050  * @remark       None
6051  */
6052 int bluetooth_le_read_maximum_data_length(
6053                         bluetooth_le_read_maximum_data_length_t *max_le_datalength);
6054 /**
6055  * @fn int bluetooth_le_write_host_suggested_default_data_length()
6056  * @brief writes the host suggested values for the controllers max transmitted no of payload
6057  * octects to be used for new connections.
6058  *
6059  * This function is a synchronous call.
6060  *
6061  * @return   BLUETOOTH_ERROR_NONE  - Success \n
6062  *           BLUETOOTH_ERROR_INTERNAL - Internal Error \n
6063  *
6064  * @exception  None
6065  *
6066  * @remark       None
6067  */
6068 int bluetooth_le_write_host_suggested_default_data_length(
6069                 const unsigned int def_tx_Octets, const unsigned int def_tx_Time);
6070
6071 int bluetooth_le_read_suggested_default_data_length(
6072         bluetooth_le_read_host_suggested_data_length_t *le_data_length);
6073
6074 int bluetooth_le_set_data_length(bluetooth_device_address_t *address,
6075         const unsigned int max_tx_octets, const unsigned int max_tx_time);
6076
6077 int bluetooth_pbap_init(void);
6078 int bluetooth_pbap_deinit(void);
6079 int bluetooth_pbap_connect(const bluetooth_device_address_t *address);
6080 int bluetooth_pbap_disconnect(const bluetooth_device_address_t *address);
6081 int bluetooth_pbap_get_phonebook_size(const bluetooth_device_address_t *address,
6082                 bt_pbap_folder_t *folder);
6083 int bluetooth_pbap_get_phonebook(const bluetooth_device_address_t *address,
6084                 bt_pbap_folder_t *folder, bt_pbap_pull_parameters_t *app_param);
6085 int bluetooth_pbap_get_list(const bluetooth_device_address_t *address,
6086                 bt_pbap_folder_t *folder, bt_pbap_list_parameters_t *app_param);
6087 int bluetooth_pbap_pull_vcard(const bluetooth_device_address_t *address,
6088                 bt_pbap_folder_t *folder, bt_pbap_pull_vcard_parameters_t *app_param);
6089 int bluetooth_pbap_phonebook_search(const bluetooth_device_address_t *address,
6090                 bt_pbap_folder_t *folder, bt_pbap_search_parameters_t *app_param);
6091
6092 /**
6093  * @fn int bluetooth_set_manufacturer_data(const bluetooth_manufacturer_data_t *value);
6094  *
6095  * @brief Set manufacturer data with value
6096  *
6097  * This function is used to set manufacturer data.
6098  *
6099  * This function is a synchronous call.
6100  *
6101  * @return      BLUETOOTH_ERROR_NONE - Success \n
6102  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
6103  *              BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
6104  *
6105  * @exception   None
6106  * @param[in]   value - Manufacturer data structure.
6107  *
6108  * @remark      None
6109  */
6110 int bluetooth_set_manufacturer_data(const bluetooth_manufacturer_data_t *value);
6111
6112 int bluetooth_set_passkey_notification(gboolean enable);
6113
6114 #ifdef TIZEN_DPM_VCONF_ENABLE
6115 /**
6116  * @fn int bluetooth_dpm_is_mode_allowed(void);
6117  *
6118  * @brief Checks Restriction for BT mode(BT allowed or not)
6119  *
6120  * This function is a synchronous call.
6121  *
6122  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6123  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6124  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6125  *
6126  * @exception   None
6127  *  @param[in] None
6128  *
6129  * @remark      None
6130  */
6131 int bluetooth_dpm_is_mode_allowed(void);
6132 #endif
6133
6134 /**
6135  * @fn int bluetooth_dpm_set_allow_mode(bt_dpm_allow_t value);
6136  *
6137  * @brief Sets Restriction for BT mode(BT allowed or not)
6138  *
6139  * This function is a synchronous call.
6140  *
6141  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6142  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6143  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6144  *
6145  * @exception   None
6146  * @param[in]   value - BT Allow value.
6147  *              BLUETOOTH_DPM_ERROR  = -1,       < bluetooth allowance error
6148  *              BLUETOOTH_DPM_BT_ALLOWED,                < bluetooth allowance allowed
6149  *              BLUETOOTH_DPM_HANDSFREE_ONLY,  < bluetooth allowance handsfree only
6150  *              BLUETOOTH_DPM_BT_RESTRICTED,  < bluetooth allowance restricted
6151  *
6152  * @remark      None
6153  */
6154 int bluetooth_dpm_set_allow_mode(bt_dpm_allow_t value);
6155
6156 /**
6157  * @fn int bluetooth_dpm_get_allow_mode(bt_dpm_allow_t value);
6158  *
6159  * @brief Reads the Restriction for BT mode(BT allowed or not)
6160  *
6161  * This function is a synchronous call.
6162  *
6163  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6164  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6165  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6166  *
6167  * @exception   None
6168  *  @param[in] None
6169  * @param[out]  value - BT Allow value.
6170  *              BLUETOOTH_DPM_ERROR      = -1,   < bluetooth allowance error
6171  *              BLUETOOTH_DPM_BT_ALLOWED,                < bluetooth allowance allowed
6172  *              BLUETOOTH_DPM_HANDSFREE_ONLY,  < bluetooth allowance handsfree only
6173  *              BLUETOOTH_DPM_BT_RESTRICTED,  < bluetooth allowance restricted
6174  *
6175  * @remark      None
6176  */
6177 int bluetooth_dpm_get_allow_mode(bt_dpm_allow_t *value);
6178
6179 /**
6180  * @fn int bluetooth_dpm_activate_device_restriction(bt_dpm_status_t value);
6181  *
6182  * @brief Sets the Restriction for device.
6183  *
6184  * This function is a synchronous call.
6185  *
6186  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6187  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6188  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6189  *
6190  * @exception   None
6191  * @param[in]   value - State value.
6192  *              BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
6193  *              BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
6194  *
6195  * @remark      None
6196  */
6197 int bluetooth_dpm_activate_device_restriction(bt_dpm_status_t value);
6198
6199 /**
6200  * @fn int bluetooth_dpm_is_device_restriction_active(bt_dpm_status_t *value);
6201  *
6202  * @brief Reads the Restriction for device.
6203  *
6204  * This function is a synchronous call.
6205  *
6206  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6207  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6208  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6209  *
6210  * @exception   None
6211  * @param[in] None
6212  * @param[out]  value - State value.
6213  *              BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
6214  *              BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
6215  *
6216  * @remark      None
6217  */
6218 int bluetooth_dpm_is_device_restriction_active(bt_dpm_status_t *value);
6219
6220 /**
6221  * @fn int bluetooth_dpm_activate_bluetoooth_uuid_restriction(bt_dpm_status_t value);
6222  *
6223  * @brief Sets the Restriction for uuid.
6224  *
6225  * This function is a synchronous call.
6226  *
6227  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6228  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6229  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6230  *
6231  * @exception   None
6232  * @param[in]   value - State value.
6233  *              BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
6234  *              BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
6235  *
6236  * @remark      None
6237  */
6238 int bluetooth_dpm_activate_uuid_restriction(bt_dpm_status_t value);
6239
6240 /**
6241  * @fn int bluetooth_dpm_is_uuid_restriction_active(bt_dpm_status_t *value);
6242  *
6243  * @brief Reads the Restriction for uuid.
6244  *
6245  * This function is a synchronous call.
6246  *
6247  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6248  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6249  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6250  *
6251  * @exception   None
6252  * @param[in] None
6253  * @param[out]  value - State value.
6254  *              BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
6255  *              BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
6256  *
6257  * @remark      None
6258  */
6259 int bluetooth_dpm_is_uuid_restriction_active(bt_dpm_status_t *value);
6260
6261 /**
6262  * @fn int bluetooth_dpm_add_devices_to_blacklist(const bluetooth_device_address_t *device_address);
6263  *
6264  * @brief Adds the device to blacklist.
6265  *
6266  * This function is a synchronous call.
6267  *
6268  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6269  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6270  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6271  *
6272  * @exception   None
6273  * @param[in]   device_address - Device address
6274  *
6275  * @remark      None
6276  */
6277 int bluetooth_dpm_add_devices_to_blacklist(const bluetooth_device_address_t *device_address);
6278
6279 /**
6280  * @fn int bluetooth_dpm_add_devices_to_whitelist(const bluetooth_device_address_t *device_address);
6281  *
6282  * @brief Adds the device to whitelist.
6283  *
6284  * This function is a synchronous call.
6285  *
6286  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6287  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6288  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6289  *
6290  * @exception   None
6291  * @param[in]   device_address - Device address
6292  *
6293  * @remark      None
6294  */
6295 int bluetooth_dpm_add_devices_to_whitelist(const bluetooth_device_address_t *device_address);
6296
6297 /**
6298  * @fn int bluetooth_dpm_add_uuids_to_blacklist(const char *service_uuid);
6299  *
6300  * @brief Adds the Service UUIDS to blacklist.
6301  *
6302  * This function is a synchronous call.
6303  *
6304  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6305  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6306  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6307  *
6308  * @exception   None
6309  * @param[in]   service_uuids - profile or custom service uuids
6310  *
6311  * @remark      None
6312  */
6313 int bluetooth_dpm_add_uuids_to_blacklist(const char *service_uuid);
6314
6315 /**
6316  * @fn int bluetooth_dpm_add_uuids_to_whitelist(const char *service_uuid);
6317  *
6318  * @brief Adds the Service UUIDS to whitelist.
6319  *
6320  * This function is a synchronous call.
6321  *
6322  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6323  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6324  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6325  *
6326  * @exception   None
6327  * @param[in]   service_uuids - profile or custom service uuids
6328  *
6329  * @remark      None
6330  */
6331 int bluetooth_dpm_add_uuids_to_whitelist(const char *service_uuid);
6332
6333 /**
6334  * @fn int bluetooth_dpm_clear_devices_from_blacklist();
6335  *
6336  * @brief Clears the devices from blacklist.
6337  *
6338  * This function is a synchronous call.
6339  *
6340  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6341  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6342  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6343  *
6344  * @exception   None
6345  * @param[in]   None
6346  *
6347  * @remark      None
6348  */
6349 int bluetooth_dpm_clear_devices_from_blacklist(void);
6350
6351 /**
6352  * @fn int bluetooth_dpm_clear_devices_from_whitelist();
6353  *
6354  * @brief Clears the devices from whitelist.
6355  *
6356  * This function is a synchronous call.
6357  *
6358  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6359  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6360  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6361  *
6362  * @exception   None
6363  * @param[in]   None
6364  *
6365  * @remark      None
6366  */
6367 int bluetooth_dpm_clear_devices_from_whitelist(void);
6368
6369 /**
6370  * @fn int bluetooth_dpm_clear_uuids_from_blacklist();
6371  *
6372  * @brief Clears the uuids from blacklist.
6373  *
6374  * This function is a synchronous call.
6375  *
6376  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6377  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6378  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6379  *
6380  * @exception   None
6381  * @param[in]   None
6382  *
6383  * @remark      None
6384  */
6385 int bluetooth_dpm_clear_uuids_from_blacklist(void);
6386
6387 /**
6388  * @fn int bluetooth_dpm_clear_uuids_from_whitelist();
6389  *
6390  * @brief Clears the uuids from whitelist.
6391  *
6392  * This function is a synchronous call.
6393  *
6394  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6395  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6396  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6397  *
6398  * @exception   None
6399  * @param[in]   None
6400  *
6401  * @remark      None
6402  */
6403 int bluetooth_dpm_clear_uuids_from_whitelist(void);
6404
6405 /**
6406  * @fn int bluetooth_dpm_get_devices_from_blacklist(bt_dpm_device_list_t *device_list);
6407  *
6408  * @brief reads the devices from blacklist.
6409  *
6410  * This function is a synchronous call.
6411  *
6412  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6413  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6414  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6415  *
6416  * @exception   None
6417  * @param[out]  device_list - list of devices
6418  *
6419  * @remark      None
6420  */
6421 int bluetooth_dpm_get_devices_from_blacklist(bt_dpm_device_list_t *device_list);
6422
6423 /**
6424  * @fn int bluetooth_dpm_get_devices_from_whitelist(bt_dpm_device_list_t *device_list);
6425  *
6426  * @brief reads the devices from whitelist.
6427  *
6428  * This function is a synchronous call.
6429  *
6430  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6431  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6432  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6433  *
6434  * @exception   None
6435  * @param[out]  device_list - list of devices
6436  *
6437  * @remark      None
6438  */
6439 int bluetooth_dpm_get_devices_from_whitelist(bt_dpm_device_list_t *device_list);
6440
6441 /**
6442  * @fn int bluetooth_dpm_get_uuids_from_blacklist(bt_dpm_uuids_list_t *uuid_list);
6443  *
6444  * @brief reads the uuids from blacklist.
6445  *
6446  * This function is a synchronous call.
6447  *
6448  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6449  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6450  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6451  *
6452  * @exception   None
6453  * @param[in]   uuid_list - list of uuids
6454  *
6455  * @remark      None
6456  */
6457 int bluetooth_dpm_get_uuids_from_blacklist(bt_dpm_uuids_list_t *uuid_list);
6458
6459 /**
6460  * @fn int bluetooth_dpm_get_uuids_from_whitelist(bt_dpm_uuids_list_t *uuid_list);
6461  *
6462  * @brief reads the uuids from whitelist.
6463  *
6464  * This function is a synchronous call.
6465  *
6466  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6467  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6468  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6469  *
6470  * @exception   None
6471  * @param[in]   uuid_list - list of uuids
6472  *
6473  * @remark      None
6474  */
6475 int bluetooth_dpm_get_uuids_from_whitelist(bt_dpm_uuids_list_t *uuid_list);
6476
6477 /**
6478  * @fn int bluetooth_dpm_remove_device_from_whitelist(const bluetooth_device_address_t *device_address);
6479  *
6480  * @brief Removes the device from whitelist.
6481  *
6482  * This function is a synchronous call.
6483  *
6484  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6485  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6486  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6487  *
6488  * @exception   None
6489  * @param[in]   device_address - Device address
6490  *
6491  * @remark      None
6492  */
6493 int bluetooth_dpm_remove_device_from_whitelist(const bluetooth_device_address_t *device_address);
6494
6495 /**
6496  * @fn int bluetooth_dpm_remove_device_from_blacklist(const bluetooth_device_address_t *device_address);
6497  *
6498  * @brief Removes the device from blacklist.
6499  *
6500  * This function is a synchronous call.
6501  *
6502  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6503  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6504  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6505  *
6506  * @exception   None
6507  * @param[in]   device_address - Device address
6508  *
6509  * @remark      None
6510  */
6511 int bluetooth_dpm_remove_device_from_blacklist(const bluetooth_device_address_t *device_address);
6512
6513 /**
6514  * @fn int bluetooth_dpm_remove_uuid_from_whitelist(const char *service_uuid);
6515  *
6516  * @brief Removes the Service UUIDS from whitelist.
6517  *
6518  * This function is a synchronous call.
6519  *
6520  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6521  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6522  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6523  *
6524  * @exception   None
6525  * @param[in]   service_uuids - profile or custom service uuids
6526  *
6527  * @remark      None
6528  */
6529 int bluetooth_dpm_remove_uuid_from_whitelist(const char *service_uuid);
6530
6531 /**
6532  * @fn int bluetooth_dpm_remove_uuid_from_blacklist(const char *service_uuid);
6533  *
6534  * @brief Removes the Service UUIDS from blacklist.
6535  *
6536  * This function is a synchronous call.
6537  *
6538  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6539  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6540  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6541  *
6542  * @exception   None
6543  * @param[in]   service_uuids - profile or custom service uuids
6544  *
6545  * @remark      None
6546  */
6547 int bluetooth_dpm_remove_uuid_from_blacklist(const char *service_uuid);
6548
6549 /**
6550  * @fn int bluetooth_dpm_set_allow_outgoing_call(bt_dpm_status_t value);
6551  *
6552  * @brief Sets the Restriction for outgoing call.
6553  *
6554  * This function is a synchronous call.
6555  *
6556  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6557  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6558  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6559  *
6560  * @exception   None
6561  * @param[in]   value - State value.
6562  *              BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
6563  *              BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
6564  *
6565  * @remark      None
6566  */
6567 int bluetooth_dpm_set_allow_outgoing_call(bt_dpm_status_t value);
6568
6569 /**
6570  * @fn int bluetooth_dpm_get_allow_outgoing_call(bt_dpm_status_t *value);
6571  *
6572  * @brief Reads the Restriction for  outgoing call.
6573  *
6574  * This function is a synchronous call.
6575  *
6576  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6577  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6578  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6579  *
6580  * @exception   None
6581  * @param[in] None
6582  * @param[out]  value - State value.
6583  *              BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
6584  *              BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
6585  *
6586  * @remark      None
6587  */
6588 int bluetooth_dpm_get_allow_outgoing_call(bt_dpm_status_t *value);
6589
6590 /**
6591  * @fn int bluetooth_dpm_set_pairing_state(bt_dpm_status_t value);
6592  *
6593  * @brief Sets the Restriction for Pairing.
6594  *
6595  * This function is a synchronous call.
6596  *
6597  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6598  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6599  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6600  *
6601  * @exception   None
6602  * @param[in]   value - State value.
6603  *              BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
6604  *              BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
6605  *
6606  * @remark      None
6607  */
6608 int bluetooth_dpm_set_pairing_state(bt_dpm_status_t value);
6609
6610 /**
6611  * @fn int bluetooth_dpm_get_pairing_state(bt_dpm_status_t *value);
6612  *
6613  * @brief Reads the Restriction for Pairing
6614  *
6615  * This function is a synchronous call.
6616  *
6617  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6618  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6619  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6620  *
6621  * @exception   None
6622  * @param[in] None
6623  * @param[out]  value - State value.
6624  *              BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
6625  *              BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
6626  *
6627  * @remark      None
6628  */
6629 int bluetooth_dpm_get_pairing_state(bt_dpm_status_t *value);
6630
6631 /**
6632  * @fnint bluetooth_dpm_set_profile_state(bt_dpm_profile_t profile, bt_dpm_status_t value);
6633  *
6634  * @brief Sets the Restriction for using Profiles.
6635  *
6636  * This function is a synchronous call.
6637  *
6638  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6639  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6640  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6641  *
6642  * @exception   None
6643  * @param[in]profile - Profile.
6644  *              BLUETOOTH_DPM_POLICY_A2DP_PROFILE_STATE,
6645  *              BLUETOOTH_DPM_POLICY_AVRCP_PROFILE_STATE,
6646  *              BLUETOOTH_DPM_POLICY_BPP_PROFILE_STATE,
6647  *              BLUETOOTH_DPM_POLICY_DUN_PROFILE_STATE,
6648  *              BLUETOOTH_DPM_POLICY_FTP_PROFILE_STATE,
6649  *              BLUETOOTH_DPM_POLICY_HFP_PROFILE_STATE,
6650  *              BLUETOOTH_DPM_POLICY_HSP_PROFILE_STATE,
6651  *              BLUETOOTH_DPM_POLICY_PBAP_PROFILE_STATE,
6652  *              BLUETOOTH_DPM_POLICY_SAP_PROFILE_STATE,
6653  *              BLUETOOTH_DPM_POLICY_SPP_PROFILE_STATE,
6654  *              BLUETOOTH_DPM_PROFILE_NONE
6655  * @param[in]   value - State value.
6656  *              BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
6657  *              BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
6658  *
6659  * @remark      None
6660  */
6661 int bluetooth_dpm_set_profile_state(bt_dpm_profile_t profile, bt_dpm_status_t value);
6662
6663 /**
6664  * @fn int bluetooth_dpm_get_profile_state(bt_dpm_profile_t profile, bt_dpm_status_t *value);
6665  *
6666  * @brief Reads the Restriction for using Profiles.
6667  *
6668  * This function is a synchronous call.
6669  *
6670  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6671  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6672  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6673  *
6674  * @exception   None
6675  * @param[in]profile - Profile.
6676  *              BLUETOOTH_DPM_POLICY_A2DP_PROFILE_STATE,
6677  *              BLUETOOTH_DPM_POLICY_AVRCP_PROFILE_STATE,
6678  *              BLUETOOTH_DPM_POLICY_BPP_PROFILE_STATE,
6679  *              BLUETOOTH_DPM_POLICY_DUN_PROFILE_STATE,
6680  *              BLUETOOTH_DPM_POLICY_FTP_PROFILE_STATE,
6681  *              BLUETOOTH_DPM_POLICY_HFP_PROFILE_STATE,
6682  *              BLUETOOTH_DPM_POLICY_HSP_PROFILE_STATE,
6683  *              BLUETOOTH_DPM_POLICY_PBAP_PROFILE_STATE,
6684  *              BLUETOOTH_DPM_POLICY_SAP_PROFILE_STATE,
6685  *              BLUETOOTH_DPM_POLICY_SPP_PROFILE_STATE,
6686  *              BLUETOOTH_DPM_PROFILE_NONE
6687  * @param[out]  value - State value.
6688  *              BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
6689  *              BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
6690  *
6691  * @remark      None
6692  */
6693 int bluetooth_dpm_get_profile_state(bt_dpm_profile_t profile, bt_dpm_status_t *value);
6694
6695 /**
6696  * @fn int bluetooth_dpm_set_desktop_connectivity_state(bt_dpm_status_t value);
6697  *
6698  * @brief Sets the Restriction for Desktop Connectivity.
6699  *
6700  * This function is a synchronous call.
6701  *
6702  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6703  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6704  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6705  *
6706  * @exception   None
6707  * @param[in]   value - State value.
6708  *              BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
6709  *              BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
6710  *
6711  * @remark      None
6712  */
6713 int bluetooth_dpm_set_desktop_connectivity_state(bt_dpm_status_t value);
6714
6715 /**
6716  * @fn int bluetooth_dpm_get_desktop_connectivity_state(bt_dpm_status_t *value);
6717  *
6718  * @brief Reads the Restriction for Desktop Connectivity.
6719  *
6720  * This function is a synchronous call.
6721  *
6722  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6723  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6724  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6725  *
6726  * @exception   None
6727  * @param[in] None
6728  * @param[out]  value - State value.
6729  *              BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
6730  *              BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
6731  *
6732  * @remark      None
6733  */
6734 int bluetooth_dpm_get_desktop_connectivity_state(bt_dpm_status_t *value);
6735
6736 /**
6737  * @fn int bluetooth_dpm_set_discoverable_state(bt_dpm_status_t value);
6738  *
6739  * @brief Sets the Restriction for Discoverable state.
6740  *
6741  * This function is a synchronous call.
6742  *
6743  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6744  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6745  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6746  *
6747  * @exception   None
6748  * @param[in]   value - State value.
6749  *              BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
6750  *              BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
6751  *
6752  * @remark      None
6753  */
6754 int bluetooth_dpm_set_discoverable_state(bt_dpm_status_t value);
6755
6756 /**
6757  * @fn int bluetooth_dpm_get_discoverable_state(bt_dpm_status_t *value);
6758  *
6759  * @brief Reads the Restriction for Discoverable state.
6760  *
6761  * This function is a synchronous call.
6762  *
6763  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6764  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6765  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6766  *
6767  * @exception   None
6768  * @param[in] None
6769  * @param[out]  value - State value.
6770  *              BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
6771  *              BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
6772  *
6773  * @remark      None
6774  */
6775 int bluetooth_dpm_get_discoverable_state(bt_dpm_status_t *value);
6776
6777 /**
6778  * @fn int bluetooth_dpm_set_limited_discoverable_state(bt_dpm_status_t value);
6779  *
6780  * @brief Sets the Restriction for linited discoverable state..
6781  *
6782  * This function is a synchronous call.
6783  *
6784  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6785  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6786  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6787  *
6788  * @exception   None
6789  * @param[in]   value - State value.
6790  *              BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
6791  *              BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
6792  *
6793  * @remark      None
6794  */
6795 int bluetooth_dpm_set_limited_discoverable_state(bt_dpm_status_t value);
6796
6797 /**
6798  * @fn int bluetooth_dpm_get_limited_discoverable_state(bt_dpm_status_t *value);
6799  *
6800  * @brief Reads the Restriction for limited discoverable state.
6801  *
6802  * This function is a synchronous call.
6803  *
6804  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6805  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6806  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6807  *
6808  * @exception   None
6809  * @param[in] None
6810  * @param[out]  value - State value.
6811  *              BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
6812  *              BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
6813  *
6814  * @remark      None
6815  */
6816 int bluetooth_dpm_get_limited_discoverable_state(bt_dpm_status_t *value);
6817 /**
6818  * @fn int bluetooth_dpm_set_data_transfer_state(bt_dpm_status_t value);
6819  *
6820  * @brief Sets the Restriction for Data trasnfer.
6821  *
6822  * This function is a synchronous call.
6823  *
6824  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6825  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6826  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6827  *
6828  * @exception   None
6829  * @param[in]   value - State value.
6830  *              BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
6831  *              BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
6832  *
6833  * @remark      None
6834  */
6835 int bluetooth_dpm_set_data_transfer_state(bt_dpm_status_t value);
6836
6837
6838 /**
6839  * @fn int bluetooth_dpm_get_data_transfer_state(bt_dpm_status_t *value);
6840  *
6841  * @brief Reads the Restriction for Data trasnfer.
6842  *
6843  * This function is a synchronous call.
6844  *
6845  * @return      BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
6846  *              BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
6847  *              BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
6848  *
6849  * @exception   None
6850  * @param[in] None
6851  * @param[out]  value - State value.
6852  *              BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
6853  *              BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
6854  *
6855  * @remark      None
6856  */
6857 int bluetooth_dpm_get_data_transfer_state(bt_dpm_status_t *value);
6858
6859 /**
6860  * @}
6861  */
6862
6863 #ifdef __cplusplus
6864 }
6865 #endif                          /* __cplusplus */
6866 #endif                          /* _BLUETOOTH_API_H_*/