Add interfaces for BT AVC feature with pulseaudio
[platform/core/connectivity/bluetooth-frwk.git] / include / bluetooth-api.h
index 2b43f87..3146e6d 100644 (file)
@@ -22,6 +22,8 @@
 #include <stdbool.h>
 #include <unistd.h>
 #include <glib.h>
+#include <stdint.h>
+
 
 #ifdef __cplusplus
 extern "C" {
@@ -36,7 +38,7 @@ extern "C" {
  * @{
  */
 
-#define BLUETOOTH_ADDRESS_STRING_LENGTH                17 /**< This specifies bluetooth device address length (AA:BB:CC:DD:EE:FF) */
+#define BLUETOOTH_ADDRESS_STRING_LENGTH                18 /**< This specifies bluetooth device address length (AA:BB:CC:DD:EE:FF) */
 #define BLUETOOTH_ADDRESS_LENGTH               6 /**< This specifies bluetooth device address length */
 #define BLUETOOTH_VERSION_LENGTH_MAX           30 /**< This specifies bluetooth device version length */
 #define BLUETOOTH_INTERFACE_NAME_LENGTH                16
@@ -56,8 +58,14 @@ extern "C" {
 
 #define BLUETOOTH_OOB_DATA_LENGTH 16
 
+#define BLUETOOTH_LE_OOB_DATA_LENGTH 100
+
 #define BLUETOOTH_PIN_CODE_MAX_LENGTH 16
 
+#ifdef TIZEN_GATT_CLIENT
+#define BLUETOOTH_GATT_ATT_DATA_LENGTH_MAX      610 /**< GATT ATT value max len */
+#endif
+
 /**
  * This is Bluetooth Connected event role
  */
@@ -184,6 +192,13 @@ extern "C" {
 
 #define BLUETOOTH_ERROR_DEVICE_POLICY_RESTRICTION    ((int)BLUETOOTH_ERROR_BASE - 0x28)
                                                                /**< Device Policy Restricted */
+
+#define BLUETOOTH_ERROR_NO_DATA    ((int)BLUETOOTH_ERROR_BASE - 0x29)
+                                                               /**< No data */
+
+#define BLUETOOTH_ERROR_AUTHORIZATION_REJECTED ((int)BLUETOOTH_ERROR_BASE - 0x2a)
+                                                               /**< Authorization rejected */
+
 /**
 * Error codes for ATT Error response *
 */
@@ -207,17 +222,18 @@ extern "C" {
 #define BLUETOOTH_ATT_ERROR_UNSUPPORTED_GROUP_TYPE             0x10
 #define BLUETOOTH_ATT_ERROR_INSUFFICIENT_RESOURCES             0x11
 /* Common profile error codes */
-#define BLUETOOTH_ATT_ERROR_WRITE_REQUEST_REJECTED             0x80
+#define BLUETOOTH_ATT_ERROR_WRITE_REQUEST_REJECTED             0xFC
 #define BLUETOOTH_ATT_ERROR_CCCD_IMPROPERLY_CONFIGURED         0xFD
 #define BLUETOOTH_ATT_ERROR_PROCEDURE_ALREADY_IN_PROGRESS      0xFE
-#define BLUETOOTH_ATT_ERROR_OUT_OF_RANGE                       0xFF
+#define BLUETOOTH_ATT_ERROR_OUT_OF_RANGE       0xFF
 
 /*
  * Bluetooth ATT error codes specific to OTP
  */
-#define BLUETOOTH_ATT_ERROR_OBJECT_NOT_SELECTED                0x81
-#define BLUETOOTH_ATT_ERROR_CONCURRENCY_LIMIT_EXCEEDED 0x82
-#define BLUETOOTH_ATT_ERROR_OBJECT_NAME_EXISTS         0x83
+#define BLUETOOTH_OTP_ERROR_WRITE_REQUEST_REJECTED     0x80
+#define BLUETOOTH_OTP_ERROR_OBJECT_NOT_SELECTED        0x81
+#define BLUETOOTH_OTP_ERROR_CONCURRENCY_LIMIT_EXCEEDED 0x82
+#define BLUETOOTH_OTP_ERROR_OBJECT_NAME_EXISTS         0x83
 
 /*
  * Bluetooth OTP error codes
@@ -233,6 +249,7 @@ extern "C" {
 #define BLUETOOTH_ERROR_AUTH_FAILURE   0x05
 #define BLUETOOTH_ERROR_PIN_OR_KEY_MISSING     0x06
 #define BLUETOOTH_ERROR_CONNECTION_TIMEOUT     0x08
+#define BLUETOOTH_ERROR_CONNECTION_REJECTED_DUE_TO_SECURITY_REASONS 0x0e
 #define BLUETOOTH_ERROR_REMOTE_USER_TERM       0x13
 #define BLUETOOTH_ERROR_REMOTE_LOW_RESOURCES   0x14
 #define BLUETOOTH_ERROR_REMOTE_POWER_OFF       0x15
@@ -306,6 +323,26 @@ typedef struct {
 } bluetooth_device_pin_code_t;
 
 /**
+ * This is data for battery usage monitoring
+ */
+
+typedef struct {
+       time_t session_start_time;
+       time_t session_end_time;
+       uint16_t session_connected_time;
+       uint16_t session_scan_time;
+       GSList *atm_list;
+} bt_battery_data;
+
+typedef struct {
+       uid_t uid;
+       pid_t pid;
+       uint16_t rx_bytes;
+       uint16_t tx_bytes;
+       uint time;
+} bt_battery_app_data;
+
+/**
  * Adapter state
  */
 typedef enum {
@@ -572,6 +609,7 @@ typedef struct {
        float interval_max;
        guint8 filter_policy;
        guint8 type;
+       int tx_power_level;
 } bluetooth_advertising_params_t;
 
 /**
@@ -583,6 +621,14 @@ typedef struct {
        float window;  /**< LE scan window */
 } bluetooth_le_scan_params_t;
 
+/**
+* LE Scan type
+*/
+typedef enum {
+       BLUETOOTH_LE_PASSIVE_SCAN = 0x00,
+       BLUETOOTH_LE_ACTIVE_SCAN
+} bluetooth_le_scan_type_t;
+
 /*
        LE Connection Update
  */
@@ -673,6 +719,7 @@ typedef enum {
 
        BLUETOOTH_EVENT_ENABLED,                    /**< Bluetooth event adpater enabled */
        BLUETOOTH_EVENT_DISABLED,                   /**< Bluetooth event adpater disabled */
+       BLUETOOTH_EVENT_DISABLED_BATTERY_DATA,      /**< Bluetooth event adapter disabled battery data*/
        BLUETOOTH_EVENT_LE_ENABLED,                 /**< Bluetooth event adpater enabled */
        BLUETOOTH_EVENT_LE_DISABLED,                /**< Bluetooth event adpater disabled */
        BLUETOOTH_EVENT_LOCAL_NAME_CHANGED,         /**< Bluetooth event local name changed*/
@@ -785,16 +832,25 @@ typedef enum {
        BLUETOOTH_EVENT_GATT_READ_DESC, /**<Gatt Read Characteristic Descriptor Value */
        BLUETOOTH_EVENT_GATT_WRITE_DESC, /**<Gatt Write Characteristic Descriptor Value */
        BLUETOOTH_EVENT_GATT_SVC_CHAR_DESC_DISCOVERED, /**<Gatt Char Descriptors Discovered Event*/
+#ifdef TIZEN_GATT_CLIENT
+       BLUETOOTH_EVENT_GATT_SERVER_CONNECTED,/**<Local Gatt Server connected event */
+       BLUETOOTH_EVENT_GATT_SERVER_DISCONNECTED, /**<Local Gatt Server Disconnected event */
+       BLUETOOTH_EVENT_GATT_CLIENT_CONNECTED,/**<Local Gatt Client connected event */
+       BLUETOOTH_EVENT_GATT_CLIENT_DISCONNECTED, /**<Local Gatt Client Disconnected event */
+#else
        BLUETOOTH_EVENT_GATT_CONNECTED,/**<Gatt connected event */
        BLUETOOTH_EVENT_GATT_DISCONNECTED, /**<Gatt Disconnected event */
+#endif
        BLUETOOTH_EVENT_GATT_ATT_MTU_CHANGED, /**<Attribute protocol MTU changed event */
+       BLUETOOTH_EVENT_GATT_SERVER_ATT_MTU_CHANGED, /**<Attribute protocol Server MTU changed event */
        BLUETOOTH_EVENT_GATT_SERVER_CHARACTERISTIC_VALUE_CHANGED, /**<Gatt Char write callback event */
        BLUETOOTH_EVENT_GATT_SERVER_READ_REQUESTED, /** <GATT Characteristic/Descriptor Read Request event */
        BLUETOOTH_EVENT_GATT_SERVER_VALUE_CHANGED, /** <GATT Characteristic/Descriptor Value change event */
        BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_STATE_CHANGED, /** <GATT Characteristic Notification change event */
        BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_COMPLETED, /** <GATT Characteristic Notification or Indication completed event */
        BLUETOOTH_EVENT_GATT_CLIENT_SERVICE_CHANGED, /** <GATT Client service change event */
-
+       BLUETOOTH_EVENT_GATT_SERVER_ACQUIRE_WRITE, /** <GATT Characteristic/Descriptor Value change event */
+       BLUETOOTH_EVENT_GATT_SERVER_ACQUIRE_NOTIFY,
        BLUETOOTH_EVENT_AG_CONNECTED = BLUETOOTH_EVENT_AUDIO_BASE, /**<AG service connected event*/
        BLUETOOTH_EVENT_AG_DISCONNECTED, /**<AG service disconnected event*/
        BLUETOOTH_EVENT_AG_SPEAKER_GAIN, /**<Speaker gain request event*/
@@ -811,6 +867,9 @@ typedef enum {
        BLUETOOTH_EVENT_AVRCP_SETTING_EQUALIZER_STATUS, /**<AVRCP service player equalizer status event*/
        BLUETOOTH_EVENT_AVRCP_SETTING_REPEAT_STATUS, /**<AVRCP service player repeat status event*/
        BLUETOOTH_EVENT_AVRCP_SETTING_SCAN_STATUS, /**<AVRCP service player scan status event*/
+       BLUETOOTH_EVENT_AVRCP_DELAY_CHANGED, /**<AVRCP service transport delay changed event*/
+       BLUETOOTH_EVENT_AVRCP_VOLUME_CHANGED, /**<AVRCP service transport volume changed event*/
+       BLUETOOTH_EVENT_AUDIO_AVC_STATUS, /**<Absolute Volume Control status changed event*/
        BLUETOOTH_EVENT_HF_CONNECTED,
        BLUETOOTH_EVENT_HF_DISCONNECTED,
        BLUETOOTH_EVENT_HF_AUDIO_CONNECTED,
@@ -834,6 +893,7 @@ typedef enum {
        BLUETOOTH_EVENT_HF_CALLSETUP_DIALING,
        BLUETOOTH_EVENT_HF_CALLSETUP_ALERTING,
        BLUETOOTH_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED,
+       BLUETOOTH_EVENT_AUDIO_AVC_MODE_CHANGED,
 
        BLUETOOTH_HID_CONNECTED = BLUETOOTH_EVENT_HID_BASE, /**< Input connectd event*/
        BLUETOOTH_HID_DISCONNECTED, /**< Input disconnectd event*/
@@ -1259,6 +1319,7 @@ typedef struct {
        bluetooth_device_address_t device_address;  /**< remote device address */
        bluetooth_device_name_t device_name;        /**< device name */
        char str_passkey[BLUETOOTH_DEVICE_PASSKEY_LENGTH_MAX]; /**< pass-key string */
+       bool incoming; /**< stores if bonding request is incoming */
 } bluetooth_authentication_request_info_t;
 
 /**
@@ -1295,6 +1356,7 @@ typedef struct {
        bluetooth_device_address_t device_addr;
        unsigned char addr_type;
        int disc_reason;
+       int rssi;
 } bt_connection_info_t;
 
 /**
@@ -1320,7 +1382,9 @@ typedef enum {
        HTYPE_TRANS_GET_PROTOCOL,
        HTYPE_TRANS_SET_PROTOCOL,
        HTYPE_TRANS_DATA,
-       HTYPE_TRANS_UNKNOWN
+       HTYPE_TRANS_UNKNOWN,
+       HTYPE_TRANS_GET_IDLE = 0xF0,
+       HTYPE_TRANS_SET_IDLE = 0xF1,
 } bt_hid_header_type_t;
 
 /**
@@ -1377,13 +1441,6 @@ typedef struct {
                                              /**< device address */
 } bluetooth_rfcomm_connection_request_t;
 
-typedef struct {
-       int socket_fd;
-               /**< the socket fd */
-       bluetooth_device_address_t device_addr;
-                                             /**< device address */
-} bluetooth_hid_request_t;
-
 /**
  * HDP QOS types
  */
@@ -1509,6 +1566,9 @@ typedef struct {
        unsigned char randomizer256[BLUETOOTH_OOB_DATA_LENGTH];
        unsigned int hash256_len;
        unsigned int randomizer256_len;
+
+       unsigned char eir[BLUETOOTH_LE_OOB_DATA_LENGTH];
+       unsigned int eir_len;
 } bt_oob_data_t;
 
 /**
@@ -1518,8 +1578,23 @@ typedef struct {
 typedef struct {
        int count;
        char **handle;
+#ifdef TIZEN_GATT_CLIENT
+       char uuids[BLUETOOTH_MAX_SERVICES_FOR_DEVICE][BLUETOOTH_UUID_STRING_MAX];
+       int inst_id[BLUETOOTH_MAX_SERVICES_FOR_DEVICE];
+#endif
 } bt_gatt_handle_info_t;
 
+#ifdef TIZEN_GATT_CLIENT
+/**
+ * Structure to a most basic GATT attribute handle data
+ */
+typedef struct {
+       int instance_id;
+       unsigned char uuid[16];
+       char address[BLUETOOTH_ADDRESS_STRING_LENGTH];
+} bt_gatt_handle_property_t;
+#endif
+
 /**
  * Structure to GATT Remote service data
  */
@@ -1530,6 +1605,9 @@ typedef struct {
        gboolean primary;
        bt_gatt_handle_info_t include_handles;
        bt_gatt_handle_info_t char_handle;
+#ifdef TIZEN_GATT_CLIENT
+       bt_gatt_handle_property_t prop; /* Added Service UUID, instance_id & associated remote device  */
+#endif
 } bt_gatt_service_property_t;
 
 /**
@@ -1568,6 +1646,12 @@ typedef struct {
        unsigned int permission;
        char *representation;
        bt_gatt_handle_info_t char_desc_handle;
+#ifdef TIZEN_GATT_CLIENT
+       bt_gatt_handle_property_t prop;      /* Added Char UUID, instance_id */
+       bt_gatt_handle_property_t svc_prop;  /* Added Service UUID, instance_id */
+       char value[BLUETOOTH_GATT_ATT_DATA_LENGTH_MAX]; /* Added */
+       char address[BLUETOOTH_ADDRESS_STRING_LENGTH];         /* Added */
+#endif
 } bt_gatt_char_property_t;
 
 /**
@@ -1579,6 +1663,13 @@ typedef struct {
        char *uuid;
        unsigned char *val;
        unsigned int val_len;
+#ifdef TIZEN_GATT_CLIENT
+       bt_gatt_handle_property_t prop;      /* Added Descriptor UUID, instance_id */
+       bt_gatt_handle_property_t char_prop; /* Added Char UUID, instance_id */
+       bt_gatt_handle_property_t svc_prop;  /* Added Service UUID, instance_id */
+       char value[BLUETOOTH_GATT_ATT_DATA_LENGTH_MAX];/* Added */
+       char address[BLUETOOTH_ADDRESS_STRING_LENGTH];          /* Added */
+#endif
 } bt_gatt_char_descriptor_property_t;
 
 /**
@@ -1591,6 +1682,13 @@ typedef struct {
        guint32 val_len;
 } bt_gatt_char_value_t;
 
+typedef struct {
+       unsigned char UUID[16];
+       char address[18];
+       char *val;
+       int len;
+} bt_gatt_notify_req_t ;
+
 /**
  * Structure to GATT Read Request
  */
@@ -1620,6 +1718,10 @@ typedef struct {
        bluetooth_device_address_t device_addr;
        char *svc_path;
        bluetooth_gatt_service_change_type_t change_type;
+#ifdef TIZEN_GATT_CLIENT
+       int inst_id;
+       char *uuid;
+#endif
 } bt_gatt_service_change_t;
 
 /**
@@ -1642,6 +1744,16 @@ typedef struct {
 } bt_gatt_indicate_confirm_t;
 
 /**
+ * Structure for GATT response data
+ */
+typedef struct {
+       char *handle;
+       guint8 *value;
+       guint32 len;
+       gpointer user_data;
+} bt_gatt_resp_data_t;
+
+/**
  * Structure to RSSI Signal Strength Alert
  */
 
@@ -1819,18 +1931,12 @@ typedef enum {
        TRUSTED_PROFILE_PBAP = 1,
        TRUSTED_PROFILE_MAP,
        TRUSTED_PROFILE_SAP,
+       TRUSTED_PROFILE_HFP_HF,
+       TRUSTED_PROFILE_A2DP,
        TRUSTED_PROFILE_ALL = 0xFFFFFFFF,
 } bluetooth_trusted_profile_t;
 
 /**
- * Restricted Profile types
- */
-typedef enum {
-       RESTRICTED_PROFILE_HFP_HS = 1,
-       RESTRICTED_PROFILE_A2DP,
-} bluetooth_restricted_profile_t;
-
-/**
  * Structure for LE data length change params
  */
 typedef struct {
@@ -2312,11 +2418,15 @@ ret = bluetooth_disable_adapter();
 @endcode
  */
 int bluetooth_disable_adapter(void);
+int bluetooth_read_battery_data(bt_battery_data *latest);
+int bluetooth_set_battery_monitor_state(bool state);
+int bluetooth_get_battery_monitor_state(void);
 int bluetooth_recover_adapter(void);
 int bluetooth_check_adapter_le(void);
 int bluetooth_enable_adapter_le(void);
 
 int bluetooth_disable_adapter_le(void);
+int bluetooth_get_uuid_name(const char *uuid, char **name);
 
 /**
  * @fn int bluetooth_reset_adapter(void)
@@ -2631,52 +2741,6 @@ int bluetooth_get_profile_trusted(
                int profile, int *trust);
 
 /**
- * @fn int bluetooth_set_profile_restricted(const bluetooth_device_address_t *device_address, int profile, int restricted)
- * @brief Sets a profile restricted connection for a device
- *
- * This function is used to Set a profile as restricted for a device
- *
- * This function is a synchronous call.
- *
- * @param[in]  device_address  a device address of remote bluetooth device
- * @param[in]  profile profile which is to be set as restricted[1-HFP_HS, 2-A2DP]
- * @param[in]  restricted      to set as restricted or not[1-restricted 0-permitted]
- *
- * @return     BLUETOOTH_ERROR_NONE - Success \n
- *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
- *             BLUETOOTH_ERROR_INVALID_PARAM - Bluetooth name parameter is incorrect \n
- *             BLUETOOTH_ERROR_INTERNAL - The dbus method call is fail \n
- *
- * @remark      None
- */
-int bluetooth_set_profile_restricted(
-               const bluetooth_device_address_t *device_address,
-               int profile, int restricted);
-
-/**
- * @fn int bluetooth_get_profile_restricted(const bluetooth_device_address_t *device_address, int profile, int *restricted)
- * @brief Gets a restricted connection state
- *
- * This function is used to Get a profile is restricted or not for a device
- *
- * This function is a synchronous call.
- *
- * @param[in]  device_address  a device address of remote bluetooth device
- * @param[in]  profile profile whose restricted status is needed[1-HFP_HS, 2-A2DP]
- * @param[out] restricted      profile is set as restricted or not[1-restricted 0-permitted]
- *
- * @return     BLUETOOTH_ERROR_NONE - Success \n
- *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
- *             BLUETOOTH_ERROR_INVALID_PARAM - Bluetooth name parameter is incorrect \n
- *             BLUETOOTH_ERROR_INTERNAL - The dbus method call is fail \n
- *
- * @remark      None
- */
-int bluetooth_get_profile_restricted(
-               const bluetooth_device_address_t *device_address,
-               int profile, int *restricted);
-
-/**
  * @fn int bluetooth_get_discoverable_mode(bluetooth_discoverable_mode_t *discoverable_mode_ptr)
  * @brief Get the visibility mode
  *
@@ -3208,7 +3272,7 @@ is_le_scanning = bluetooth_is_le_scanning ();
  */
 gboolean bluetooth_is_le_scanning(void);
 
-gboolean bluetooth_is_scan_filter_supported(void);
+int  bluetooth_is_scan_filter_supported(gboolean *is_supported);
 
 /**
  * @fn int bluetooth_force_hcidump(int timeout)
@@ -3230,7 +3294,7 @@ gboolean bluetooth_is_scan_filter_supported(void);
 int bluetooth_force_hcidump(int timeout);
 
 /**
- * @fn int bluetooth_register_scan_filter(bluetooth_le_scan_filter_t *filter, int *slot_id)
+ * @fn int bluetooth_register_scan_filter(bluetooth_le_scan_filter_t *filter)
  * @brief Register scan filter.
  *
  * This function registers the scan filter.
@@ -3240,41 +3304,10 @@ int bluetooth_force_hcidump(int timeout);
  * @return     BLUETOOTH_ERROR_NONE - Success \n
  *
  * @param[in]   filter   scan filter to register
- * @param[out]  slot_id  the slot ID of scan filter
- *
- * @remark      None
- */
-int bluetooth_register_scan_filter(bluetooth_le_scan_filter_t *filter, int *slot_id);
-
-/**
- * @fn int bluetooth_unregister_scan_filter(int slot_id)
- * @brief Register scan filter.
- *
- * This function unregisters the scan filter.
- *
- * This function is a synchronous call.
- *
- * @return     BLUETOOTH_ERROR_NONE - Success \n
- *
- * @param[in]   slot_id  the slot ID of scan filter
  *
  * @remark      None
  */
-int bluetooth_unregister_scan_filter(int slot_id);
-
-/**
- * @fn int bluetooth_unregister_all_scan_filters(void)
- * @brief Register scan filter.
- *
- * This function usregisters all scan filters.
- *
- * This function is a synchronous call.
- *
- * @return     BLUETOOTH_ERROR_NONE - Success \n
- *
- * @remark      None
- */
-int bluetooth_unregister_all_scan_filters(void);
+int bluetooth_register_scan_filter(bluetooth_le_scan_filter_t *filter);
 
 /**
  * @fn int bluetooth_enable_rssi(const bluetooth_device_address_t *remote_address,
@@ -3308,6 +3341,8 @@ int bluetooth_set_connectable(gboolean is_connectable);
 
 int bluetooth_is_connectable(gboolean *is_connectable);
 
+int bluetooth_disconnect_device(const bluetooth_device_address_t *device_address);
+
 /**
  * @fn int bluetooth_bond_device(const bluetooth_device_address_t *device_address)
  * @brief Initiate a bonding process
@@ -3659,7 +3694,6 @@ void bt_get_bonded_device(void)
 int bluetooth_get_bonded_device(const bluetooth_device_address_t *device_address,
                                        bluetooth_device_info_t *dev_info);
 
-
 /**
  * @fn int bluetooth_get_is_alias_set(const bluetooth_device_address_t *device_address,
  *                                     gboolean *is_alias_set)
@@ -5208,6 +5242,51 @@ int bluetooth_oob_add_remote_data(
 int bluetooth_oob_remove_remote_data(
                        const bluetooth_device_address_t *remote_device_address);
 
+
+/**
+ * @fn int bluetooth_le_oob_read_local_data(bt_oob_data_t *local_oob_data)
+ * @brief Read the local Hash and Randmizer.
+ *
+ * This function is a synchronous call.
+ *
+ * @return   BLUETOOTH_ERROR_NONE  - Success \n
+ *           BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *
+ * @exception  None
+ * @param[in]  None.
+ * @param[out] local_oob_data - Pointer to the local OOB data
+ *
+ * @remark       None
+ * @see        None
+ */
+int bluetooth_le_oob_read_local_data(bt_oob_data_t *local_oob_data);
+
+/**
+ * @fn int bluetooth_le_oob_add_remote_data(
+ *                     const bluetooth_device_address_t *remote_device_address,
+ *                     bluetooth_bdaddr_type_e address_type,
+ *                     bt_oob_data_t *oob_data)
+ * @brief Add/updated the remote device  Hash and Randmizer.
+ *
+ * This function is a synchronous call.
+ * No event for this api..
+ *
+ * @return   BLUETOOTH_ERROR_NONE  - Success \n
+ *           BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *
+ * @exception  None
+ * @param[in] remote_device_address - Remote device address
+  *          address_type - bdaddr type
+ *           remote_oob_data - Ponter to Hash and Randomizer oob data structure
+ *
+ * @remark     None
+ * @see                None
+ */
+int bluetooth_le_oob_add_remote_data(
+                       const bluetooth_device_address_t *remote_device_address,
+                       bluetooth_bdaddr_type_e address_type,
+                       bt_oob_data_t *remote_oob_data);
+
 /**
  * @fn int bluetooth_gatt_get_primary_services(const bluetooth_device_address_t *address,
  *                                             bt_gatt_handle_info_t *prim_svc);
@@ -5281,7 +5360,7 @@ int bluetooth_gatt_get_service_property(const char *service_handle,
                                                bt_gatt_service_property_t *service);
 
 /**
- * @fn int bluetooth_gatt_watch_characteristics(const char *service_handle)
+ * @fn int bluetooth_gatt_watch_characteristics(const char *service_handle, const char *svc_name)
  *
  * @brief Register to GATT based service to receive value change notification/indication.
  *
@@ -5295,11 +5374,12 @@ int bluetooth_gatt_get_service_property(const char *service_handle,
  *
  * @exception  None
  * @param[in]  service_handle - Handle for remote service.
+ * @param[in]  service_name - Friednly name of service uuid.
  *
  * @remark     None
  * @see        None
  */
-int bluetooth_gatt_watch_characteristics(const char *service_handle);
+int bluetooth_gatt_watch_characteristics(const char *service_handle, const char *svc_name);
 
 /**
  * @fn int bluetooth_gatt_unwatch_characteristics(const char *service_handle)
@@ -5419,7 +5499,8 @@ int bluetooth_gatt_set_characteristics_value(const char *char_handle,
  * @see                None
  */
 int bluetooth_gatt_set_characteristics_value_by_type(const char *char_handle,
-                               const guint8 *value, int length, guint8 write_type);
+                                       const guint8 *value, int length,
+                                       guint8 write_type, gpointer app_data);
 
 
 /**
@@ -5464,7 +5545,7 @@ int bluetooth_gatt_set_characteristics_value_request(const char *char_handle,
  * @remark     None
  * @see        None
  */
-int bluetooth_gatt_read_characteristic_value(const char *char_handle);
+int bluetooth_gatt_read_characteristic_value(const char *char_handle, gpointer app_data);
 
 /**
  * @fn int bluetooth_gatt_get_service_from_uuid(bluetooth_device_address_t *address,
@@ -5592,9 +5673,19 @@ int bluetooth_gatt_free_char_property(bt_gatt_char_property_t *char_pty);
  */
 int bluetooth_gatt_free_desc_property(bt_gatt_char_descriptor_property_t *desc_pty);
 
+#ifdef TIZEN_GATT_CLIENT
+int bluetooth_connect_le(const bluetooth_device_address_t *device_address,
+                               gboolean auto_connect, int client_id);
+#else
 int bluetooth_connect_le(const bluetooth_device_address_t *device_address, gboolean auto_connect);
+#endif
 
+#ifdef TIZEN_GATT_CLIENT
+int bluetooth_disconnect_le(const bluetooth_device_address_t *device_address,
+               int client_id);
+#else
 int bluetooth_disconnect_le(const bluetooth_device_address_t *device_address);
+#endif
 
  /**
  * @fn int bluetooth_gatt_discover_characteristic_descriptor(const char *characteristic_handle);
@@ -5631,7 +5722,7 @@ int bluetooth_gatt_discover_characteristic_descriptor(const char *characteristic
  * @remark     None
  * @see        None
  */
-int bluetooth_gatt_read_descriptor_value(const char *desc_handle);
+int bluetooth_gatt_read_descriptor_value(const char *desc_handle, gpointer app_data);
 
 /**
  * @fn int bluetooth_gatt_write_descriptor_value(const char *desc_handle,
@@ -5655,7 +5746,7 @@ int bluetooth_gatt_read_descriptor_value(const char *desc_handle);
  * @see        None
  */
 int bluetooth_gatt_write_descriptor_value(const char *desc_handle,
-                       const guint8 *value, int length);
+                       const guint8 *value, int length, gpointer app_data);
 
 /* @fn int bluetooth_gatt_init(void)
 *
@@ -6205,6 +6296,26 @@ int bluetooth_set_scan_response_data(int handle, const bluetooth_scan_resp_data_
 int bluetooth_set_scan_parameters(bluetooth_le_scan_params_t *params);
 
 /**
+ * @fn intbluetooth_set_scan_type(bluetooth_le_scan_type_t scan_type);
+ *ss
+ * @brief Set scan type
+ *
+ * This function is used to set LE scan type
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
+ *             BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
+ *
+ * @exception  None
+ * @param[in]  scan_type - LE scan type
+ *
+ * @remark     None
+ */
+int bluetooth_set_scan_type(bluetooth_le_scan_type_t scan_type);
+
+/**
  * @fn int bluetooth_is_advertising(void)
  * @brief Check for the advertising is in-progress or not.
  *
@@ -7666,7 +7777,7 @@ int bluetooth_otp_enable_notification(const char *handle);
  *
  * @remark     None
  */
-int bluetooth_otp_write_characteristics_value( const char *handle,
+int bluetooth_otp_write_characteristics_value(const char *handle,
                                        unsigned char *buf, int length);
 
 /**
@@ -7721,6 +7832,44 @@ int bluetooth_otp_connect_otc(const bluetooth_device_address_t *device_address);
 int bluetooth_otp_disconnect_otc(const bluetooth_device_address_t *device_address);
 
 /**
+ * @fn int bluetooth_is_le_2m_phy_supported(gboolean *is_supported)
+ * @brief Check if Adapter supports LE 2M PHY feature or not.
+ *
+ * This API is used to check the whether LE Adapter supports LE 2M PHY feature, which is introduced
+ * in BT 5.0 specification.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Succeess \n
+ *             BLUETOOTH_ERROR_INVALID_PARAM -  Invalid parameter (NULL buffer) \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED -  Adapter is disabled \n
+ *             BLUETOOTH_ERROR_INTERNAL -  Internal error \n
+ * @param[out] is_supported. This boolean variable indicates whether LE 2M PHY is supported or not
+ *
+ * @remark      None
+ */
+int bluetooth_is_le_2m_phy_supported(gboolean *is_supported);
+
+/**
+ * @fn int bluetooth_is_le_coded_phy_supported(gboolean *is_supported)
+ * @brief Check if Adapter supports LE 2M CODED feature or not.
+ *
+ * This API is used to check the whether LE Adapter supports LE CODED PHY feature, which is introduced
+ * in BT 5.0 specification.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Succeess \n
+ *             BLUETOOTH_ERROR_INVALID_PARAM -  Invalid parameter (NULL buffer) \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED -  Adapter is disabled \n
+ *             BLUETOOTH_ERROR_INTERNAL -  Internal error \n
+ * @param[out] is_supported. This boolean variable indicates whether LE CODED PHY is supported or not
+ *
+ * @remark      None
+ */
+int bluetooth_is_le_coded_phy_supported(gboolean *is_supported);
+
+/**
  * @}
  */