Fix the function and variable name for IPSP
[platform/core/connectivity/bluetooth-frwk.git] / include / bluetooth-api.h
index d006dc7..4af98b4 100644 (file)
@@ -1,13 +1,11 @@
 /*
- * bluetooth-frwk
- *
- * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *              http://www.apache.org/licenses/LICENSE-2.0
+ *             http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -38,15 +36,24 @@ extern "C" {
  */
 
 #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
 #define BLUETOOTH_DEVICE_NAME_LENGTH_MAX       248 /**< This specifies maximum device name length */
+#define BLUETOOTH_DEVICE_PASSKEY_LENGTH_MAX       50 /**< This specifies maximum length of the passkey */
+#define BLUETOOTH_ADVERTISING_DATA_LENGTH_MAX  31 /**< This specifies maximum AD data length */
+#define BLUETOOTH_SCAN_RESP_DATA_LENGTH_MAX     31 /**< This specifies maximum LE Scan response data length */
+#define BLUETOOTH_MANUFACTURER_DATA_LENGTH_MAX 240 /**< This specifies maximum manufacturer data length */
 
 #define BLUETOOTH_MAX_SERVICES_FOR_DEVICE       40  /**< This specifies maximum number of services
                                                        a device can support */
 
 #define BLUETOOTH_UUID_STRING_MAX 50
+#define BLUETOOTH_PATH_STRING 50
+
+#define BLUETOOTH_OOB_DATA_LENGTH 16
+
+#define BLUETOOTH_PIN_CODE_MAX_LENGTH 16
 
-#define BLUETOOTH_OOB_DATA_LENGTH              16
 /**
  * This is Bluetooth Connected event role
  */
@@ -54,6 +61,20 @@ extern "C" {
 #define RFCOMM_ROLE_CLIENT 2
 
 /**
+ * This is RFCOMM default Channel Value
+ */
+#define RFCOMM_DEFAULT_PROFILE_CHANNEL 0
+
+/**
+ * This is maximum length for search value string for PBAP Phonebook Search
+ */
+#define BLUETOOTH_PBAP_MAX_SEARCH_VALUE_LENGTH 100
+
+
+#define BLUETOOTH_MAX_DPM_LIST 20      /**< This specifies maximum number of devices/uuids
+                                                       dpm shall store */
+
+/**
  * This is Bluetooth error code
  */
 #define BLUETOOTH_ERROR_BASE                   ((int)0)                /**< Error code base */
@@ -135,6 +156,27 @@ extern "C" {
 #define BLUETOOTH_ERROR_ALREADY_INITIALIZED    ((int)BLUETOOTH_ERROR_BASE - 0x23)
                                                                /**< Already initialized */
 
+#define BLUETOOTH_ERROR_PERMISSION_DEINED    ((int)BLUETOOTH_ERROR_BASE - 0x24)
+                                                               /**< Permission deined */
+
+#define BLUETOOTH_ERROR_ALREADY_DEACTIVATED    ((int)BLUETOOTH_ERROR_BASE - 0x25)
+                                                               /**< Nap already done */
+
+#define BLUETOOTH_ERROR_NOT_INITIALIZED    ((int)BLUETOOTH_ERROR_BASE - 0x26)
+                                                               /**< Not initialized */
+
+#define BLUETOOTH_ERROR_DEVICE_POLICY_RESTRICTION    ((int)BLUETOOTH_ERROR_BASE - 0x27)
+                                                               /**< Device Policy Restricted */
+
+/**
+* Device disconnect reason
+*/
+typedef enum {
+       BLUETOOTH_DEVICE_DISCONNECT_UNKNOWN,
+       BLUETOOTH_DEVICE_DISCONNECT_TIMEOUT,
+       BLUETOOTH_DEVICE_DISCONNECT_LOCAL_HOST,
+       BLUETOOTH_DEVICE_DISCONNECT_REMOTE,
+} bluetooth_device_disconnect_reason_t;
 
 /**
  * This is Bluetooth device address type, fixed to 6 bytes ##:##:##:##:##:##
@@ -144,6 +186,21 @@ typedef struct {
 } bluetooth_device_address_t;
 
 /**
+ * This is Bluetooth device address type
+ */
+typedef enum {
+       BLUETOOTH_DEVICE_PUBLIC_ADDRESS = 0x00,
+       BLUETOOTH_DEVICE_RANDOM_ADDRESS
+} bluetooth_device_address_type_t;
+
+/**
+ * This is Bluetooth version
+ */
+typedef struct {
+       char version[BLUETOOTH_VERSION_LENGTH_MAX + 1];
+} bluetooth_version_t;
+
+/**
  * This is Bluetooth device name type, maximum size of Bluetooth device name is 248 bytes
  */
 typedef struct {
@@ -151,6 +208,18 @@ typedef struct {
 } bluetooth_device_name_t;
 
 /**
+ * This is Bluetooth manufacturer specific data, maximum size of data is 240 bytes
+ */
+typedef struct {
+       int data_len;           /**< manafacturer specific data length */
+       char data[BLUETOOTH_MANUFACTURER_DATA_LENGTH_MAX];
+} bluetooth_manufacturer_data_t;
+
+typedef struct {
+       char pin_code[BLUETOOTH_PIN_CODE_MAX_LENGTH + 1];
+} bluetooth_device_pin_code_t;
+
+/**
  * Adapter state
  */
 typedef enum {
@@ -161,6 +230,16 @@ typedef enum {
 } bluetooth_adapter_state_t;
 
 /**
+ * Adapter state
+ */
+typedef enum {
+       BLUETOOTH_ADAPTER_LE_DISABLED,      /**< Bluetooth adapter le is disabled */
+       BLUETOOTH_ADAPTER_LE_ENABLED,       /**< Bluetooth adapter le is enabled */
+       BLUETOOTH_ADAPTER_LE_CHANGING_ENABLE,  /**< Bluetooth adapter le is currently enabling */
+       BLUETOOTH_ADAPTER_LE_CHANGING_DISABLE, /**< Bluetooth adapter le is currently disabling */
+} bluetooth_adapter_le_state_t;
+
+/**
  * Discoverable mode
  */
 typedef enum {
@@ -192,8 +271,164 @@ typedef enum {
        BLUETOOTH_A2DP_SERVICE = 0x02,
        BLUETOOTH_HSP_SERVICE = 0x04,
        BLUETOOTH_HID_SERVICE = 0x08,
+       BLUETOOTH_NAP_SERVICE = 0x10,
+       BLUETOOTH_HFG_SERVICE = 0x20,
+       BLUETOOTH_GATT_SERVICE = 0x40,
+       BLUETOOTH_NAP_SERVER_SERVICE = 0x80,
+       BLUETOOTH_A2DP_SINK_SERVICE = 0x100,
 } bluetooth_service_type_t;
 
+/**
+ * Service type
+ */
+typedef enum {
+        BLUETOOTH_DEV_CONN_DEFAULT = 0xFF, /* represents that connection
+                                        * type can both BR/EDR and LE */
+        BLUETOOTH_DEV_CONN_BREDR = 0x00,
+        BLUETOOTH_DEV_CONN_LE = 0x01,
+} bluetooth_conn_type_t;
+
+/**
+ * Service type
+ */
+typedef enum {
+       BLUETOOTH_CODEC_ID_CVSD = 0x01,
+       BLUETOOTH_CODEC_ID_MSBC = 0x02,
+} bluetooth_codec_type_t;
+
+/**
+ * Service type
+ */
+typedef enum {
+       BLUETOOTH_HF_AUDIO_DISCONNECTED = 0x00,
+       BLUETOOTH_HF_AUDIO_CONNECTED = 0x01,
+} bluetooth_hf_audio_connected_type_t;
+
+/**
+ * Advertising data
+ */
+typedef struct {
+       guint8 data[BLUETOOTH_ADVERTISING_DATA_LENGTH_MAX];
+} bluetooth_advertising_data_t;
+
+/**
+ * Scan response data
+ */
+typedef struct {
+       guint8 data[BLUETOOTH_SCAN_RESP_DATA_LENGTH_MAX];
+} bluetooth_scan_resp_data_t;
+
+/**
+ * Advertising filter policy
+ */
+typedef enum {
+       BLUETOOTH_ALLOW_SCAN_CONN_ALL = 0x00,
+       BLUETOOTH_ALLOW_CONN_ALL_SCAN_WHITE_LIST = 0x01,
+       BLUETOOTH_ALLOW_SCAN_ALL_CONN_WHITE_LIST = 0x02,
+       BLUETOOTH_ALLOW_SCAN_CONN_WHITE_LIST = 0x03,
+} bluetooth_advertising_filter_policy_t;
+
+/**
+ * Advertising type
+ */
+typedef enum {
+       BLUETOOTH_ADV_CONNECTABLE = 0x00, /* ADV_IND */
+       BLUETOOTH_ADV_CONNECTABLE_DIRECT_HIGH = 0x01, /* ADV_DIRECT_IND, high duty cycle */
+       BLUETOOTH_ADV_SCANNABLE = 0x02, /* ADV_SCAN_IND */
+       BLUETOOTH_ADV_NON_CONNECTABLE = 0x03, /* ADV_NONCOND_IND */
+       BLUETOOTH_ADV_CONNECTABLE_DIRECT_LOW = 0x04, /* ADV_DIRECT_IND, low duty cycle */
+} bluetooth_advertising_type_t;
+
+typedef enum {
+       BLUETOOTH_GATT_PERMISSION_READ = 0x01,
+       BLUETOOTH_GATT_PERMISSION_WRITE = 0x02,
+       BLUETOOTH_GATT_PERMISSION_ENCRYPT_READ = 0x04,
+       BLUETOOTH_GATT_PERMISSION_ENCRYPT_WRITE = 0x08,
+       BLUETOOTH_GATT_PERMISSION_ENCRYPT_AUTHENTICATED_READ = 0x10,
+       BLUETOOTH_GATT_PERMISSION_ENCRYPT_AUTHENTICATED_WRITE = 0x20,
+} bt_gatt_permission_t;
+
+typedef enum {
+       BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_BROADCAST = 0x01,
+       BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_READ = 0x02,
+       BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_WRITE_NO_RESPONSE = 0x04,
+       BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_WRITE = 0x08,
+       BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_NOTIFY = 0x10,
+       BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_INDICATE = 0x20,
+       BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_SIGNED_WRITE = 0x40,
+       BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_RELIABLE_WRITE = 0x80,
+       BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_WRITABLE_AUXILIARIES = 0x100,
+       BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_ENCRYPT_READ = 0x200,
+       BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_ENCRYPT_WRITE = 0x400,
+       BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_ENCRYPT_AUTHENTICATED_READ = 0x800,
+       BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_ENCRYPT_AUTHENTICATED_WRITE = 0x1000,
+       BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_EXTENDED_PROPS = 0xffff,
+} bt_gatt_characteristic_property_t;
+
+/**
+* Remote device request types for attributes
+*/
+typedef enum {
+       BLUETOOTH_GATT_ATT_REQUEST_TYPE_READ = 0x00, /* Read Requested*/
+       BLUETOOTH_GATT_ATT_REQUEST_TYPE_WRITE = 0x01, /* Write Requested*/
+} bluetooth_gatt_att_request_tyep_t;
+
+/**
+* Advertising parameters
+*/
+typedef struct {
+       float interval_min;
+       float interval_max;
+       guint8 filter_policy;
+       guint8 type;
+} bluetooth_advertising_params_t;
+
+/**
+* LE Scan parameters
+*/
+typedef struct {
+       int type;  /**< passive 0, active 1 */
+       float interval;  /**< LE scan interval */
+       float window;  /**< LE scan window */
+} bluetooth_le_scan_params_t;
+
+/*
+       LE Connection Update
+ */
+typedef struct {
+       guint16 interval_min;
+       guint16 interval_max;
+       guint16 latency;
+       guint16 timeout;
+} bluetooth_le_connection_param_t;
+
+/*
+       LE Read Maximum Data Length
+ */
+typedef struct {
+       guint16 max_tx_octets;
+       guint16 max_tx_time;
+       guint16 max_rx_octets;
+       guint16 max_rx_time;
+} bluetooth_le_read_maximum_data_length_t;
+
+/*
+       LE Read Host suggested default Data Length
+ */
+typedef struct {
+       guint16 def_tx_octets;
+       guint16 def_tx_time;
+} bluetooth_le_read_host_suggested_data_length_t;
+
+/**
+ * Samsung XSAT Vendor dependent command
+ */
+typedef struct {
+       gint app_id;
+       char *message;
+} bluetooth_vendor_dep_at_cmd_t;
+
+
 #define BLUETOOTH_EVENT_BASE            ((int)(0x0000))                /**< No event */
 #define BLUETOOTH_EVENT_GAP_BASE        ((int)(BLUETOOTH_EVENT_BASE + 0x0010))
                                                                /**< Base ID for GAP Event */
@@ -214,8 +449,16 @@ typedef enum {
 
 #define BLUETOOTH_EVENT_AUDIO_BASE ((int)(BLUETOOTH_EVENT_GATT_BASE + 0x0020))
                                                                /**< Base ID for Audio events */
-#define BLUETOOTH_EVENT_HID_BASE ((int)(BLUETOOTH_EVENT_AUDIO_BASE + 0x0020))
+#define BLUETOOTH_EVENT_HID_BASE ((int)(BLUETOOTH_EVENT_AUDIO_BASE + 0x0030))
                                                                /**< Base ID for HID events */
+#define BLUETOOTH_EVENT_ADVERTISING_BASE ((int)(BLUETOOTH_EVENT_HID_BASE + 0x0020))
+                                                               /**< Base ID for Advertising events */
+#define BLUETOOTH_EVENT_PBAP_CLIENT_BASE ((int)(BLUETOOTH_EVENT_ADVERTISING_BASE + 0x0020))
+                                                               /**< Base ID for PBAP Client events */
+#define BLUETOOTH_EVENT_AVRCP_CONTROL_BASE ((int)(BLUETOOTH_EVENT_PBAP_CLIENT_BASE + 0x0020))
+                                                               /**< Base ID for AVRCP events */
+#define BLUETOOTH_EVENT_IPSP_BASE ((int)(BLUETOOTH_EVENT_AVRCP_CONTROL_BASE + 0x0020))
+                                                               /**< Base ID for IPSP events */
 
 /**
  * Bluetooth event type
@@ -225,6 +468,8 @@ typedef enum {
 
        BLUETOOTH_EVENT_ENABLED,                    /**< Bluetooth event adpater enabled */
        BLUETOOTH_EVENT_DISABLED,                   /**< Bluetooth event adpater disabled */
+       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*/
        BLUETOOTH_EVENT_DISCOVERABLE_TIMEOUT_REQUESTED,
                                        /**< Bluetooth event Discoverable timeout requested*/
@@ -232,8 +477,10 @@ typedef enum {
        BLUETOOTH_EVENT_DISCOVERY_OPTION_REQUESTED, /**< Bluetooth event discovery option */
        BLUETOOTH_EVENT_DISCOVERY_STARTED,          /**< Bluetooth event discovery started */
        BLUETOOTH_EVENT_DISCOVERY_FINISHED,         /**< Bluetooth event discovery finished */
-
        BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND,        /**< Bluetooth event remote deice found */
+       BLUETOOTH_EVENT_LE_DISCOVERY_STARTED,           /**< Bluetooth event LE discovery started */
+       BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED,  /**< Bluetooth event LE discovery finished */
+       BLUETOOTH_EVENT_REMOTE_LE_DEVICE_FOUND,     /**< Bluetooth event remote deice found (LE dev) */
        BLUETOOTH_EVENT_REMOTE_DEVICE_NAME_UPDATED,/**< Bluetooth event remote device name updated*/
        BLUETOOTH_EVENT_BONDING_FINISHED,           /**< Bluetooth event bonding completed */
        BLUETOOTH_EVENT_BONDED_DEVICE_REMOVED,      /**< Bluetooth event bonding removed */
@@ -242,7 +489,15 @@ typedef enum {
        BLUETOOTH_EVENT_DEVICE_AUTHORIZED,          /**< Bluetooth event authorize device */
        BLUETOOTH_EVENT_DEVICE_UNAUTHORIZED,        /**< Bluetooth event unauthorize device */
        BLUETOOTH_EVENT_DISCOVERABLE_TIMEOUT_CHANGED,  /**< Bluetooth event mode changed */
-       BLUETOOTH_EVENT_REMOTE_DEVICE_DISAPPEARED, /**< Bluetooth event remote device disappeared*/
+       BLUETOOTH_EVENT_KEYBOARD_PASSKEY_DISPLAY,       /**Bluetooth event for displaying keyboard  passkey to user*/
+       BLUETOOTH_EVENT_PIN_REQUEST,    /**Bluetooth event for PIN input by user*/
+       BLUETOOTH_EVENT_PASSKEY_REQUEST,        /**Bluetooth event for entering Passkey by user*/
+       BLUETOOTH_EVENT_PASSKEY_CONFIRM_REQUEST,        /**Bluetooth event for Passkey confirmation by user*/
+       BLUETOOTH_EVENT_CONNECTABLE_CHANGED,        /**< Bluetooth event connectable changed */
+
+       BLUETOOTH_EVENT_RSSI_ENABLED,           /**< Bluetooth event RSSI monitoring enabled */
+       BLUETOOTH_EVENT_RSSI_ALERT,                             /**< Bluetooth event RSSI Alert */
+       BLUETOOTH_EVENT_RAW_RSSI,                               /**< Bluetooth event Raw RSSI */
 
        BLUETOOTH_EVENT_SERVICE_SEARCHED = BLUETOOTH_EVENT_SDP_BASE,
                                                    /**< Bluetooth event serice search base id */
@@ -287,12 +542,26 @@ typedef enum {
        BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_PROGRESS,/* Obex Server transfer progress event*/
        BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_COMPLETED,/* Obex Server transfer complete event*/
        BLUETOOTH_EVENT_OBEX_SERVER_CONNECTION_AUTHORIZE,
+       BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_CONNECTED, /* Obex Transfer connected event */
+       BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_DISCONNECTED, /* Obex Transfer disconnected event */
 
        BLUETOOTH_EVENT_GATT_SVC_CHAR_DISCOVERED = BLUETOOTH_EVENT_GATT_BASE,
                                /**<Discovered GATT service characteristics event*/
        BLUETOOTH_EVENT_GATT_CHAR_VAL_CHANGED,
                                /**<Remote GATT charateristic value changed event*/
        BLUETOOTH_EVENT_GATT_GET_CHAR_FROM_UUID,
+       BLUETOOTH_EVENT_GATT_READ_CHAR, /**<Gatt Read Characteristic Value */
+       BLUETOOTH_EVENT_GATT_WRITE_CHAR, /**<Gatt Write Characteristic Value */
+       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*/
+       BLUETOOTH_EVENT_GATT_CONNECTED,/**<Gatt connected event */
+       BLUETOOTH_EVENT_GATT_DISCONNECTED, /**<Gatt Disconnected 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_AG_CONNECTED = BLUETOOTH_EVENT_AUDIO_BASE, /**<AG service connected event*/
        BLUETOOTH_EVENT_AG_DISCONNECTED, /**<AG service disconnected event*/
@@ -302,16 +571,70 @@ typedef enum {
        BLUETOOTH_EVENT_AG_AUDIO_DISCONNECTED,  /**<AV & AG service disconnected event*/
        BLUETOOTH_EVENT_AV_CONNECTED, /**<AV service connected event*/
        BLUETOOTH_EVENT_AV_DISCONNECTED, /**<AV service disconnected event*/
+       BLUETOOTH_EVENT_AV_SOURCE_CONNECTED, /**<AV Source device connected event */
+       BLUETOOTH_EVENT_AV_SOURCE_DISCONNECTED, /**<AV Source device disconnected event */
        BLUETOOTH_EVENT_AVRCP_CONNECTED, /**<AVRCP service connected event*/
        BLUETOOTH_EVENT_AVRCP_DISCONNECTED, /**<AVRCP service disconnected event*/
        BLUETOOTH_EVENT_AVRCP_SETTING_SHUFFLE_STATUS, /**<AVRCP service player suffle  status event*/
        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_HF_CONNECTED,
+       BLUETOOTH_EVENT_HF_DISCONNECTED,
+       BLUETOOTH_EVENT_HF_AUDIO_CONNECTED,
+       BLUETOOTH_EVENT_HF_AUDIO_DISCONNECTED,
+       BLUETOOTH_EVENT_HF_RING_INDICATOR,
+       BLUETOOTH_EVENT_HF_CALL_WAITING,
+       BLUETOOTH_EVENT_HF_CALL_TERMINATED,
+       BLUETOOTH_EVENT_HF_CALL_STARTED,
+       BLUETOOTH_EVENT_HF_CALL_ENDED,
+       BLUETOOTH_EVENT_HF_CALL_UNHOLD,
+       BLUETOOTH_EVENT_HF_CALL_SWAPPED,
+       BLUETOOTH_EVENT_HF_CALL_ON_HOLD,
+       BLUETOOTH_EVENT_HF_CALL_STATUS,
+       BLUETOOTH_EVENT_HF_VOICE_RECOGNITION_ENABLED,
+       BLUETOOTH_EVENT_HF_VOICE_RECOGNITION_DISABLED,
+       BLUETOOTH_EVENT_HF_VOLUME_SPEAKER,
+       BLUETOOTH_EVENT_HF_VENDOR_DEP_CMD,
 
        BLUETOOTH_HID_CONNECTED = BLUETOOTH_EVENT_HID_BASE, /**< Input connectd event*/
        BLUETOOTH_HID_DISCONNECTED, /**< Input disconnectd event*/
+       BLUETOOTH_HID_DEVICE_CONNECTED, /**< HID Device connected event*/
+       BLUETOOTH_HID_DEVICE_DISCONNECTED, /**< HID Device disconnected event*/
+       BLUETOOTH_HID_DEVICE_DATA_RECEIVED, /**< HID Device data received event*/
+
+       BLUETOOTH_EVENT_ADVERTISING_STARTED = BLUETOOTH_EVENT_ADVERTISING_BASE, /**< Advertising started event */
+       BLUETOOTH_EVENT_ADVERTISING_STOPPED, /**< Advertising stopped event */
+       BLUETOOTH_EVENT_ADVERTISING_MANUFACTURER_DATA_CHANGED, /**< Advertising manufacturer data changed event */
+       BLUETOOTH_EVENT_SCAN_RESPONSE_MANUFACTURER_DATA_CHANGED, /**< Scan response manufacturer data changed event */
+       BLUETOOTH_EVENT_MANUFACTURER_DATA_CHANGED, /**< Manufacturer data changed event */
+       BLUETOOTH_EVENT_DEVICE_ERROR, /**< Hardware error */
+       BLUETOOTH_EVENT_TX_TIMEOUT_ERROR, /** TX Timeout Error*/
        BLUETOOTH_EVENT_MAX, /**< Bluetooth event Max value */
+
+       BLUETOOTH_PBAP_CONNECTED = BLUETOOTH_EVENT_PBAP_CLIENT_BASE, /**< PBAP connected event*/
+       BLUETOOTH_PBAP_DISCONNECTED, /**< PBAP disconnectd event*/
+       BLUETOOTH_PBAP_PHONEBOOK_SIZE, /**< PBAP Phonebook Size event*/
+       BLUETOOTH_PBAP_PHONEBOOK_PULL, /**< PBAP Phonebook Pull event*/
+       BLUETOOTH_PBAP_VCARD_LIST, /**< PBAP vCard List event*/
+       BLUETOOTH_PBAP_VCARD_PULL, /**< PBAP vCard Pull event*/
+       BLUETOOTH_PBAP_PHONEBOOK_SEARCH, /**< PBAP Phonebook Search event*/
+
+       BLUETOOTH_EVENT_AVRCP_CONTROL_CONNECTED = BLUETOOTH_EVENT_AVRCP_CONTROL_BASE, /**<AVRCP service connected event*/
+       BLUETOOTH_EVENT_AVRCP_CONTROL_DISCONNECTED, /**<AVRCP service disconnected event*/
+       BLUETOOTH_EVENT_AVRCP_CONTROL_SHUFFLE_STATUS, /**<AVRCP control suffle  status event*/
+       BLUETOOTH_EVENT_AVRCP_CONTROL_EQUALIZER_STATUS, /**<AVRCP control equalizer status event*/
+       BLUETOOTH_EVENT_AVRCP_CONTROL_REPEAT_STATUS, /**<AVRCP control repeat status event*/
+       BLUETOOTH_EVENT_AVRCP_CONTROL_SCAN_STATUS, /**<AVRCP control scan status event*/
+       BLUETOOTH_EVENT_AVRCP_SONG_POSITION_STATUS, /**<AVRCP control play Postion status event*/
+       BLUETOOTH_EVENT_AVRCP_PLAY_STATUS_CHANGED, /**<AVRCP control play status event*/
+       BLUETOOTH_EVENT_AVRCP_TRACK_CHANGED, /**<AVRCP control song metadata event*/
+
+       BLUETOOTH_EVENT_IPSP_INIT_STATE_CHANGED = BLUETOOTH_EVENT_IPSP_BASE, /**<IPSP init event*/
+       BLUETOOTH_EVENT_IPSP_CONNECTED, /**< IPSP connected event  */
+       BLUETOOTH_EVENT_IPSP_DISCONNECTED, /**< IPSP Disconnected event */
+       BLUETOOTH_EVENT_IPSP_INTERFACE_INFO, /** IPSP BT Interface Info after connection */
+       BLUETOOTH_EVENT_LE_DATA_LENGTH_CHANGED,  /** LE data length values changed */
 } bluetooth_event_type_t;
 
  /**
@@ -552,6 +875,46 @@ typedef struct {
 } bluetooth_device_class_t;
 
 /**
+ * Discovery Role types
+ */
+typedef enum {
+       DISCOVERY_ROLE_BREDR = 0x1,
+       DISCOVERY_ROLE_LE,
+       DISCOVERY_ROLE_LE_BREDR
+} bt_discovery_role_type_t;
+
+/**
+ * Connected state types
+ */
+typedef enum {
+       BLUETOOTH_CONNECTED_LINK_NONE = 0x00,
+       BLUETOOTH_CONNECTED_LINK_BREDR = 0x01,
+       BLUETOOTH_CONNECTED_LINK_LE = 0x02,
+       BLUETOOTH_CONNECTED_LINK_BREDR_LE = 0x03,
+} bluetooth_connected_link_t;
+
+/**
+* Scan filter entry
+*/
+typedef enum {
+       BLUETOOTH_LE_SCAN_FILTER_FEATURE_DEVICE_ADDRESS = 0x01,                 /**< device address */
+       BLUETOOTH_LE_SCAN_FILTER_FEATURE_SERVICE_UUID = 0x04,                   /**< service uuid */
+       BLUETOOTH_LE_SCAN_FILTER_FEATURE_SERVICE_SOLICITATION_UUID = 0x08,      /**< service solicitation uuid */
+       BLUETOOTH_LE_SCAN_FILTER_FEATURE_DEVICE_NAME = 0x10,                    /**< device name */
+       BLUETOOTH_LE_SCAN_FILTER_FEATURE_MANUFACTURER_DATA = 0x20,              /**< manufacturer data */
+       BLUETOOTH_LE_SCAN_FILTER_FEATURE_SERVICE_DATA = 0x40,                   /**< service data */
+} bluetooth_le_scan_filter_feature_t;
+
+/**
+ * LE connection mode
+ */
+typedef enum {
+       BLUETOOTH_LE_CONNECTION_MODE_BALANCED,
+       BLUETOOTH_LE_CONNECTION_MODE_LOW_LATENCY,
+       BLUETOOTH_LE_CONNECTION_MODE_LOW_POWER
+} bluetooth_le_connection_mode_t;
+
+/**
 * structure to hold the device information
 */
 typedef struct {
@@ -561,13 +924,46 @@ typedef struct {
        char uuids[BLUETOOTH_MAX_SERVICES_FOR_DEVICE][BLUETOOTH_UUID_STRING_MAX];
        unsigned int service_list_array[BLUETOOTH_MAX_SERVICES_FOR_DEVICE]; /**< Use enum values in bt_service_uuid_list_t */
        int service_index;
-       int rssi;                       /**< received strength signal*/
-       gboolean paired;                /**< paired flag */
-       gboolean connected;     /**< connected flag */
-       gboolean trust;         /**< connected flag */
+       int rssi;                               /**< received strength signal*/
+       gboolean paired;                        /**< paired flag */
+       bluetooth_connected_link_t connected;   /**< connected link type */
+       gboolean trust;                         /**< trust flag */
+       bluetooth_manufacturer_data_t manufacturer_data;        /**< manafacturer specific class */
 } bluetooth_device_info_t;
 
 /**
+* structure to hold the LE device information
+*/
+typedef struct {
+       int data_len;           /**< manafacturer specific data length */
+       bluetooth_advertising_data_t data;              /**< manafacturer specific data */
+} bluetooth_le_advertising_data_t;
+
+typedef struct {
+       bluetooth_device_address_t device_address;      /**< device address */
+       int addr_type;                  /**< address type*/
+       int rssi;                       /**< received strength signal*/
+       bluetooth_le_advertising_data_t adv_ind_data;
+       bluetooth_le_advertising_data_t scan_resp_data;
+} bluetooth_le_device_info_t;
+
+typedef struct {
+       int slot_id;
+       bluetooth_le_scan_filter_feature_t added_features;              /**< added features */
+       bluetooth_device_address_t device_address;                      /**< device address */
+       char device_name[BLUETOOTH_ADVERTISING_DATA_LENGTH_MAX];        /**< device name */
+       bluetooth_le_advertising_data_t service_uuid;                   /**< service uuid */
+       bluetooth_le_advertising_data_t service_uuid_mask;              /**< service uuid mask */
+       bluetooth_le_advertising_data_t service_solicitation_uuid;      /**< service solicitation uuid */
+       bluetooth_le_advertising_data_t service_solicitation_uuid_mask; /**< service solicitation uuid mask */
+       bluetooth_le_advertising_data_t service_data;                   /**< service data */
+       bluetooth_le_advertising_data_t service_data_mask;              /**< service data mask */
+       int manufacturer_id;                                            /**< manufacturer ID */
+       bluetooth_le_advertising_data_t manufacturer_data;              /**< manufacturer data */
+       bluetooth_le_advertising_data_t manufacturer_data_mask;         /**< manufacturer data mask */
+} bluetooth_le_scan_filter_t;
+
+/**
  * structure to hold the paired device information
  */
 typedef struct {
@@ -587,6 +983,26 @@ typedef struct {
 } bluetooth_network_device_info_t;
 
 /**
+ * Authentication event types
+ */
+
+typedef enum {
+       BLUETOOTH_AUTH_KEYBOARD_PASSKEY_REQUEST = 0,
+       BLUETOOTH_AUTH_PIN_REQUEST,
+       BLUETOOTH_AUTH_PASSKEY_REQUEST,
+       BLUETOOTH_AUTH_PASSKEY_CONFIRM_REQUEST,
+} bluetooth_auth_type_t;
+
+/**
+* structure to hold the pincode/pass-key req informations
+*/
+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 */
+} bluetooth_authentication_request_info_t;
+
+/**
 * Stucture to hold discovery option
 */
 typedef struct {
@@ -616,6 +1032,12 @@ typedef struct {
        int service_index;
 } bt_sdp_info_t;
 
+typedef struct {
+       bluetooth_device_address_t device_addr;
+       unsigned char addr_type;
+       int disc_reason;
+} bt_connection_info_t;
+
 /**
  * Stucture to rfcomm receive data
  */
@@ -629,13 +1051,49 @@ typedef struct {
 } bluetooth_rfcomm_received_data_t;
 
 /**
+ * HID Header type
+ */
+typedef enum {
+       HTYPE_TRANS_HANDSHAKE,
+       HTYPE_TRANS_HID_CONTROL,
+       HTYPE_TRANS_GET_REPORT,
+       HTYPE_TRANS_SET_REPORT,
+       HTYPE_TRANS_GET_PROTOCOL,
+       HTYPE_TRANS_SET_PROTOCOL,
+       HTYPE_TRANS_DATA,
+       HTYPE_TRANS_UNKNOWN
+} bluetooth_hid_header_type_t;
+
+/**
+ * HID Param type
+ */
+typedef enum {
+       PTYPE_DATA_RTYPE_INPUT,
+       PTYPE_DATA_RTYPE_OUTPUT
+} bluetooth_hid_param_type_t;
+
+/**
+ * Stucture to hid receive data
+ */
+typedef struct {
+       const char *address;
+       bluetooth_hid_header_type_t type;
+               /**< Header type containing */
+       bluetooth_hid_param_type_t param;
+               /**< Param type in header like INPUT Report or OutPut Report */
+       int buffer_size;/**< the length of the receive buffer */
+       char *buffer;
+               /**< the receive data buffer */
+} bluetooth_hid_received_data_t;
+
+/**
 * Stucture to rfcomm connection
 */
 
 typedef struct {
-       int socket_fd;
-               /**< the socket fd */
-       int device_role;/** < Device role - RFCOMM_ROLE_SERVER or RFCOMM_ROLE_CLIENT */
+       int socket_fd; /**< the socket fd */
+       int server_id; /* Server id */
+       int device_role; /** < Device role - RFCOMM_ROLE_SERVER or RFCOMM_ROLE_CLIENT */
        bluetooth_device_address_t device_addr;
                                              /**< device address */
        char uuid[BLUETOOTH_UUID_STRING_MAX];
@@ -660,6 +1118,13 @@ 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
  */
@@ -667,7 +1132,7 @@ typedef enum {
        HDP_QOS_RELIABLE,
        HDP_QOS_STREAMING,
        HDP_QOS_ANY
-}bt_hdp_qos_type_t;
+} bt_hdp_qos_type_t;
 
 /**
  * HDP Role types
@@ -675,7 +1140,7 @@ typedef enum {
 typedef enum {
        HDP_ROLE_SOURCE = 0x0,
        HDP_ROLE_SINK
-}bt_hdp_role_type_t;
+} bt_hdp_role_type_t;
 
 
 /**
@@ -712,7 +1177,7 @@ typedef struct {
        char *filename;
        unsigned long size;
        int percentage;
-}bt_opc_transfer_info_t;
+} bt_opc_transfer_info_t;
 
 /* Obex Server transfer type */
 #define TRANSFER_PUT "PUT"
@@ -726,15 +1191,25 @@ typedef struct {
 } bt_obex_server_authorize_into_t;
 
 /**
+ * Server type
+ */
+typedef enum {
+       OPP_SERVER = 0x0,
+       FTP_SERVER
+} bt_obex_server_type_t;
+
+/**
  * Stucture to OPP/FTP server transfer information
  */
 typedef struct {
        char *filename;
        char *device_name;
+       char *file_path;
        char *type;
        int transfer_id;
        unsigned long file_size;
        int percentage;
+       bt_obex_server_type_t server_type;
 } bt_obex_server_transfer_info_t;
 
 /**
@@ -764,7 +1239,9 @@ typedef struct {
 typedef struct {
        char *uuid;
        char *handle;
-       bt_gatt_handle_info_t handle_info;
+       gboolean primary;
+       bt_gatt_handle_info_t include_handles;
+       bt_gatt_handle_info_t char_handle;
 } bt_gatt_service_property_t;
 
 /**
@@ -800,10 +1277,23 @@ typedef struct {
        bt_gatt_char_format_t format;
        unsigned char *val;
        unsigned int val_len;
+       unsigned int permission;
        char *representation;
+       bt_gatt_handle_info_t char_desc_handle;
 } bt_gatt_char_property_t;
 
 /**
+ * Structure to GATT Characteristic descriptor property
+ */
+
+typedef struct {
+       char *handle;
+       char *uuid;
+       unsigned char *val;
+       unsigned int val_len;
+} bt_gatt_char_descriptor_property_t;
+
+/**
  * Structure to GATT Characteristic value
  */
 
@@ -814,77 +1304,446 @@ typedef struct {
 } bt_gatt_char_value_t;
 
 /**
- * Callback pointer type
+ * Structure to GATT Read Request
  */
-typedef void (*bluetooth_cb_func_ptr) (int, bluetooth_event_param_t *, void *);
+typedef struct {
+       char *att_handle;
+       char *service_handle;
+       char *address;
+       guint16 offset;
+       guint8 req_id;
+} bt_gatt_read_req_t;
 
 /**
- * @fn int bluetooth_register_callback(bluetooth_cb_func_ptr callback_ptr, void *user_data)
- * @brief Set the callback function pointer for bluetooth event
- *
- *
- * This API will register the callback function, when any response and event are received from
- * bluetooth framework. @n
- * this registered callback function will be get called with appropriate event and data structures.
- * This function is a synchronous call. An application developer can call
- * bluetooth_register_callback() function to register a callback function of bluetooth_cb_func_ptr
- * type. This registered function will receive events of bluetooth_event_type_t type along with
- * data any.
- *
- *
- * @param[in]   callback_ptr    A pointer to the callback function
- * @param[in]   user_data    A pointer to user data
- * @return      BLUETOOTH_ERROR_NONE - Success
- * @remark      None
- * @see         None
-@code
-void bt_event_callback(int event, bluetooth_event_param_t *param, void *user_data)
-{
-       GMainLoop *main_loop = (GMainLoop*) user_data;
+ * Structure to GATT Value change
+ */
+typedef struct {
+       char *att_handle;
+       char *service_handle;
+       char *address;
+       guint8 req_id;
+       guint16 offset;
+       guint8 *att_value;
+       guint32 val_len;
+} bt_gatt_value_change_t;
 
-       switch(event)
-       {
-               // Code for each event
-               default:
-                       g_main_loop_quit(main_loop);
-                       break;
-       }
-}
+/**
+ * Structure to GATT characteristc Notification change
+ */
+typedef struct {
+       char *att_handle;
+       char *service_handle;
+       gboolean att_notify;
+} bt_gatt_char_notify_change_t;
 
-int main()
-{
-       GMainLoop *main_loop = NULL;
-       int ret = 0;
-       g_type_init();
-       main_loop = g_main_loop_new(NULL, FALSE);
-       ret = bluetooth_register_callback(bt_event_callback, (void*)main_loop);
-       if (ret >= BLUETOOTH_ERROR_NONE)
-       {
-               // bluetooth_register_callback returned Success
-       }
-       else
-       {
-               // bluetooth_register_callback returned failiure
-       }
-       g_main_loop_run(main_loop);
-}
-@endcode
+/**
+ * Structure to Indication confirmation
  */
-int bluetooth_register_callback(bluetooth_cb_func_ptr callback_ptr, void *user_data);
+typedef struct {
+       char *att_handle;
+       char *service_handle;
+       char *address;
+       gboolean complete;
+ } bt_gatt_indicate_confirm_t;
 
 /**
- * @fn int bluetooth_deregister_callback(bluetooth_cb_func_ptr callback_ptr)
- * @brief Set the callback function pointer for bluetooth event
- *
- *
- * This API will register the callback function, when any response and event are received from
- * bluetooth framework. @n
- * this registered callback function will be get called with appropriate event and data structures.
- * This function is a synchronous call. An application developer can call
- * bluetooth_register_callback() function to register a callback function of bluetooth_cb_func_ptr
- * type. This registered function will receive events of bluetooth_event_type_t type along with
- * data any.
- *
+ * Structure to RSSI Signal Strength Alert
+ */
+
+typedef struct {
+       char *address;
+       int link_type;
+       int alert_type;
+       int rssi_dbm;
+} bt_rssi_alert_t;
+
+/**
+ * Structure to RSSI Signal Strength
+ */
+
+typedef struct {
+       char *address;
+       int link_type;
+       int rssi_dbm;
+} bt_raw_rssi_t;
+
+/**
+ * Structure for RSSI Enabled or Disabled
+ */
+
+typedef struct {
+       char *address;
+       int link_type;
+       gboolean rssi_enabled;
+} bt_rssi_enabled_t;
+
+/**
+ * Structure for RSSI Threshold
+ */
+
+typedef struct {
+       int low_threshold;
+       int in_range_threshold;
+       int high_threshold;
+} bt_rssi_threshold_t;
+
+/**
+ * Structure for PBAP Folder Parameters
+ */
+typedef struct {
+       unsigned char addressbook;
+       unsigned char folder_type;
+} bt_pbap_folder_t;
+
+/**
+ * Structure for PBAP Pull application Parameters
+ */
+typedef struct {
+       unsigned char format;
+       unsigned char order;
+       unsigned short offset;
+       unsigned short maxlist;
+       long long unsigned fields;
+} bt_pbap_pull_parameters_t;
+
+/**
+ * Structure for PBAP List application Parameters
+ */
+typedef struct {
+       unsigned char order;
+       unsigned short offset;
+       unsigned short maxlist;
+} bt_pbap_list_parameters_t;
+
+/**
+ * Structure for PBAP Pull vCard application Parameters
+ */
+typedef struct {
+       unsigned char format;
+       long long unsigned fields;
+       int index;
+} bt_pbap_pull_vcard_parameters_t;
+
+/**
+ * Structure for PBAP Search application Parameters
+ */
+typedef struct {
+       unsigned char order;
+       unsigned short offset;
+       unsigned short maxlist;
+       unsigned char search_attribute;
+       char search_value[BLUETOOTH_PBAP_MAX_SEARCH_VALUE_LENGTH];
+} bt_pbap_search_parameters_t;
+
+/**
+ * Structure for PBAP Connection Status
+ */
+typedef struct {
+       bluetooth_device_address_t btaddr;
+       int connected;
+} bt_pbap_connected_t;
+
+/**
+ * Structure for PBAP Phonebook Size
+ */
+typedef struct {
+       bluetooth_device_address_t btaddr;
+       int size;
+} bt_pbap_phonebook_size_t;
+
+/**
+ * Structure for PBAP Phonebook Pull
+ */
+typedef struct {
+       bluetooth_device_address_t btaddr;
+       char *vcf_file;
+       int success;
+} bt_pbap_phonebook_pull_t;
+
+/**
+ * Structure for PBAP vCard List
+ */
+typedef struct {
+       bluetooth_device_address_t btaddr;
+       char **vcards;
+       int length;
+       int success;
+} bt_pbap_vcard_list_t;
+
+/**
+ * Structure for PBAP vCard Pull
+ */
+typedef struct {
+       bluetooth_device_address_t btaddr;
+       char *vcf_file;
+       int success;
+} bt_pbap_vcard_pull_t;
+
+/**
+ * Structure for PBAP Phonebook search List
+ */
+typedef struct {
+       bluetooth_device_address_t btaddr;
+       char **vcards;
+       int length;
+       int success;
+} bt_pbap_phonebook_search_list_t;
+
+/**
+ * Stucture to HF Call status information
+ */
+
+typedef struct {
+       char *number; /*Phone Number */
+       int direction; /*Direction :Incoming(1), Outgoing(0)*/
+       int status; /* Call Status :Active(0), Held(1), Waiting(5), Dailing(2)*/
+       int mpart; /*Multiparty/conf call: Yes(1), No(0) */
+       int idx; /*Call index/ID */
+} bt_hf_call_status_info_t;
+
+typedef struct {
+       GList *list;
+       int count;
+} bt_hf_call_list_s;
+
+/**
+ * Structure for LE data length change params
+ */
+
+typedef struct {
+       bluetooth_device_address_t device_address;
+       guint16 max_tx_octets;
+       guint16 max_tx_time;
+       guint16 max_rx_octets;
+       guint16 max_rx_time;
+} bt_le_data_length_params_t;
+
+
+ /**
+ * @brief DPM BT allowance state
+ * @see
+ */
+ typedef enum {
+        BLUETOOTH_DPM_ERROR     = -1,   /**< bluetooth allowance error */
+        BLUETOOTH_DPM_BT_ALLOWED,               /**< bluetooth allowance allowed */
+        BLUETOOTH_DPM_HANDSFREE_ONLY,  /**< bluetooth allowance handsfree only */
+        BLUETOOTH_DPM_BT_RESTRICTED,  /**< bluetooth allowance restricted */
+ } bt_dpm_allow_t;
+
+ /**
+ * @brief DPM API result
+ * @see
+ */
+typedef enum {
+       BLUETOOTH_DPM_RESULT_SERVICE_NOT_ENABLED = -5,  /**< DPM API result service not enabled. */
+       BLUETOOTH_DPM_RESULT_ACCESS_DENIED = -4,                        /**< DPM API result access denied. */
+       BLUETOOTH_DPM_RESULT_INVALID_PARAM = -3,                        /**< DPM API result invalid parameter. */
+       BLUETOOTH_DPM_RESULT_NOT_SUPPORTED = -2,                        /**< DPM API result not supported. */
+       BLUETOOTH_DPM_RESULT_FAIL        = -1,                          /**< DPM API result fail. */
+       BLUETOOTH_DPM_RESULT_SUCCESS     = 0,                           /**< DPM API result success. */
+} bt_dpm_result_t;
+
+/**
+ * @brief DPM Policy status
+ * @see
+ */
+typedef enum {
+       BLUETOOTH_DPM_STATUS_ERROR      = -1,
+
+       BLUETOOTH_DPM_ALLOWED           = 0,    /**< DPM Policy status allowed. */
+       BLUETOOTH_DPM_RESTRICTED                = 1,    /**< DPM Policy status restricted. */
+
+       BLUETOOTH_DPM_ENABLE                    = 1,    /**< DPM Policy status enabled. */
+       BLUETOOTH_DPM_DISABLE   = 0,    /**< DPM Policy status disabled. */
+
+       BLUETOOTH_DPM_FALSE                     = 0,    /**< DPM Policy status false. */
+       BLUETOOTH_DPM_TRUE                      = 1,    /**< DPM Policy status true. */
+} bt_dpm_status_t;
+
+typedef enum {
+       /* policy-group : BLUETOOTH */
+       BLUETOOTH_DPM_POLICY_ALLOW,
+       BLUETOOTH_DPM_POLICY_DEVICE_RESTRICTION,
+       BLUETOOTH_DPM_POLICY_UUID_RESTRICTION,
+       BLUETOOTH_DPM_POLICY_DEVICES_WHITELIST,
+       BLUETOOTH_DPM_POLICY_DEVICES_BLACKLIST,
+       BLUETOOTH_DPM_POLICY_UUIDS_WHITELIST,
+       BLUETOOTH_DPM_POLICY_UUIDS_BLACKLIST,
+       BLUETOOTH_DPM_POLICY_ALLOW_OUTGOING_CALL,
+       BLUETOOTH_DPM_POLICY_PAIRING_STATE,
+       BLUETOOTH_DPM_POLICY_DESKTOP_CONNECTIVITY_STATE,
+       BLUETOOTH_DPM_POLICY_DISCOVERABLE_STATE,
+       BLUETOOTH_DPM_POLICY_LIMITED_DISCOVERABLE_STATE,
+       BLUETOOTH_DPM_POLICY_DATA_TRANSFER_STATE,
+       BLUETOOTH_DPM_POLICY_END,
+} bt_dpm_policy_cmd_t;
+
+
+struct bt_dpm_policy {
+       union {
+               int value;
+               GSList *list;
+       };
+};
+typedef struct bt_dpm_policy bt_dpm_policy_t;
+
+typedef enum {
+       BLUETOOTH_DPM_POLICY_A2DP_PROFILE_STATE,
+       BLUETOOTH_DPM_POLICY_AVRCP_PROFILE_STATE,
+       BLUETOOTH_DPM_POLICY_BPP_PROFILE_STATE,
+       BLUETOOTH_DPM_POLICY_DUN_PROFILE_STATE,
+       BLUETOOTH_DPM_POLICY_FTP_PROFILE_STATE,
+       BLUETOOTH_DPM_POLICY_HFP_PROFILE_STATE,
+       BLUETOOTH_DPM_POLICY_HSP_PROFILE_STATE,
+       BLUETOOTH_DPM_POLICY_PBAP_PROFILE_STATE,
+       BLUETOOTH_DPM_POLICY_SAP_PROFILE_STATE,
+       BLUETOOTH_DPM_POLICY_SPP_PROFILE_STATE,
+       BLUETOOTH_DPM_PROFILE_NONE,
+} bt_dpm_profile_t;
+
+struct bt_dpm_profile_val {
+               int value; /* tells whether the profile is enabled or disabled */
+};
+typedef struct dpm_profile_val dpm_profile_state_t;
+
+/**
+ * Structure to DPM device list
+ */
+typedef struct {
+       int count;
+       bluetooth_device_address_t addresses[BLUETOOTH_MAX_DPM_LIST];
+} bt_dpm_device_list_t;
+
+/**
+ * Structure to DPM uuid list
+ */
+typedef struct {
+       int count;
+       char uuids[BLUETOOTH_MAX_DPM_LIST][BLUETOOTH_UUID_STRING_MAX];
+} bt_dpm_uuids_list_t;
+
+/**
+ * Structure for IPSP Interface Info
+ */
+typedef struct {
+       bluetooth_device_address_t btaddr;
+       char if_name[16];
+} bt_ipsp_interface_info_t;
+
+/**
+ * Callback pointer type
+ */
+typedef void (*bluetooth_cb_func_ptr) (int, bluetooth_event_param_t *, void *);
+
+/**
+ * @fn int bluetooth_register_callback(bluetooth_cb_func_ptr callback_ptr, void *user_data)
+ * @brief Set the callback function pointer for bluetooth event
+ *
+ *
+ * This API will register the callback function, when any response and event are received from
+ * bluetooth framework. @n
+ * this registered callback function will be get called with appropriate event and data structures.
+ * This function is a synchronous call. An application developer can call
+ * bluetooth_register_callback() function to register a callback function of bluetooth_cb_func_ptr
+ * type. This registered function will receive events of bluetooth_event_type_t type along with
+ * data any.
+ *
+ *
+ * @param[in]   callback_ptr    A pointer to the callback function
+ * @param[in]   user_data    A pointer to user data
+ * @return      BLUETOOTH_ERROR_NONE - Success
+ * @remark      None
+ * @see         None
+@code
+void bt_event_callback(int event, bluetooth_event_param_t *param, void *user_data)
+{
+       GMainLoop *main_loop = (GMainLoop*) user_data;
+
+       switch(event)
+       {
+               // Code for each event
+               default:
+                       g_main_loop_quit(main_loop);
+                       break;
+       }
+}
+
+int main()
+{
+       GMainLoop *main_loop = NULL;
+       int ret = 0;
+       main_loop = g_main_loop_new(NULL, FALSE);
+       ret = bluetooth_register_callback(bt_event_callback, (void*)main_loop);
+       if (ret >= BLUETOOTH_ERROR_NONE)
+       {
+               // bluetooth_register_callback returned Success
+       }
+       else
+       {
+               // bluetooth_register_callback returned failiure
+       }
+       g_main_loop_run(main_loop);
+}
+@endcode
+ */
+int bluetooth_register_callback(bluetooth_cb_func_ptr callback_ptr, void *user_data);
+
+/**
+ * @fn int bluetooth_le_register_callback(bluetooth_cb_func_ptr callback_ptr, void *user_data)
+ * @brief Set the callback function pointer for bluetooth le event
+ *
+ *
+ * This API will register the callback function, when any response and event are received from
+ * bluetooth framework. @n
+ * this registered callback function will be get called with appropriate event and data structures.
+ * This function is a synchronous call. An application developer can call
+ * bluetooth_le_register_callback() function to register a callback function of bluetooth_cb_func_ptr
+ * type. This registered function will receive events of bluetooth_event_type_t type along with
+ * data any.
+ *
+ *
+ * @param[in]   callback_ptr    A pointer to the callback function
+ * @param[in]   user_data    A pointer to user data
+ * @return      BLUETOOTH_ERROR_NONE - Success
+ * @remark      None
+ * @see         None
+ * */
+int bluetooth_le_register_callback(bluetooth_cb_func_ptr callback_ptr, void *user_data);
+
+/**
+ * @fn int bluetooth_le_unregister_callback(void)
+ * @brief Set the callback function pointer for bluetooth le event
+ *
+ *
+ * This API will register the callback function, when any response and event are received from
+ * bluetooth framework. @n
+ * this registered callback function will be get called with appropriate event and data structures.
+ * This function is a synchronous call. An application developer can call
+ * bluetooth_le_register_callback() function to register a callback function of bluetooth_cb_func_ptr
+ * type. This registered function will receive events of bluetooth_event_type_t type along with
+ * data any.
+ *
+ *
+ * @param[in]   none
+ * @return      BLUETOOTH_ERROR_NONE - Success
+ * @remark      None
+ * @see         None
+ * */
+int bluetooth_le_unregister_callback(void);
+
+/**
+ * @fn int bluetooth_deregister_callback(bluetooth_cb_func_ptr callback_ptr)
+ * @brief Set the callback function pointer for bluetooth event
+ *
+ *
+ * This API will register the callback function, when any response and event are received from
+ * bluetooth framework. @n
+ * this registered callback function will be get called with appropriate event and data structures.
+ * This function is a synchronous call. An application developer can call
+ * bluetooth_register_callback() function to register a callback function of bluetooth_cb_func_ptr
+ * type. This registered function will receive events of bluetooth_event_type_t type along with
+ * data any.
+ *
  *
  * @param[in]   none
  * @return      BLUETOOTH_ERROR_NONE - Success
@@ -908,7 +1767,6 @@ int main()
 {
        GMainLoop *main_loop = NULL;
        int ret = 0;
-       g_type_init();
        main_loop = g_main_loop_new(NULL, FALSE);
        ret = bluetooth_register_callback(bt_event_callback, (void*)main_loop);
        if (ret >= BLUETOOTH_ERROR_NONE)
@@ -1033,6 +1891,11 @@ ret = bluetooth_disable_adapter();
 @endcode
  */
 int bluetooth_disable_adapter(void);
+int bluetooth_recover_adapter(void);
+int bluetooth_check_adapter_le(void);
+int bluetooth_enable_adapter_le(void);
+
+int bluetooth_disable_adapter_le(void);
 
 /**
  * @fn int bluetooth_reset_adapter(void)
@@ -1066,7 +1929,6 @@ int bluetooth_reset_adapter(void);
  *
  * This API checks whether the bluetooth is supported or not.
  * This API only run by root permission.
- * This API was made for the MDM service.
  *
  * This function is a synchronous call.
  *
@@ -1141,6 +2003,29 @@ ret = bluetooth_get_local_address(&local_address);
 int bluetooth_get_local_address(bluetooth_device_address_t *local_address);
 
 /**
+ * @fn int bluetooth_get_local_version(bluetooth_version_t *version)
+ * @brief Get the hci version
+ *
+ *
+ * This function is used to get the bluetooth hci version
+ * Before calling this API make sure that the adapter is enabled.
+ *
+ * This function is a synchronous call.
+ *
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *             BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
+ * @param[out]  timeout   remain visibility timeout value
+ * @remark      None
+ @code
+bluetooth_version_t *version;
+ int ret = 0;
+ ret = bluetooth_get_local_version (&version);
+ @endcode
+ */
+int bluetooth_get_local_version(bluetooth_version_t *version);
+
+/**
  * @fn int bluetooth_get_local_name(bluetooth_device_name_t* local_name)
  * @brief Get the local device name
  *
@@ -1252,6 +2137,33 @@ int bluetooth_is_device_connected(const bluetooth_device_address_t *device_addre
                                gboolean *is_connected);
 
 /**
+ * @fn int bluetooth_get_connected_link_type(const bluetooth_device_address_t *device_address, bluetooth_connected_link_t *connected_link)
+ * @brief Gets device's connected link type
+ *
+ * This function is used to get device's connected link type
+ *
+ * This function is a synchronous call.
+ *
+ * @param[in]  device_address  a device address of remote bluetooth device
+ * @param[out] connected_link  a device's connected link type
+ *
+ * @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
+ *
+@code
+bluetooth_connected_link_t *connected_link = BLUETOOTH_CONNECTED_LINK_NONE;
+bluetooth_device_address_t device_address={{0x00,0x0D,0xFD,0x24,0x5E,0xFF}};
+ret = bluetooth_get_connected_link(&device_address, &connected_link);
+@endcode
+ */
+int bluetooth_get_connected_link_type(const bluetooth_device_address_t *device_address,
+                               bluetooth_connected_link_t *connected_link);
+
+/**
  * @fn int bluetooth_get_discoverable_mode(bluetooth_discoverable_mode_t *discoverable_mode_ptr)
  * @brief Get the visibility mode
  *
@@ -1348,16 +2260,16 @@ int bluetooth_get_timeout_value(int *timeout);
 /**
  * @fn int bluetooth_start_discovery(unsigned short max_response, unsigned short discovery_duration,
  *                                     unsigned int  classOfDeviceMask)
- * @brief Start the device discovery
+ * @brief Start the generic device discovery which finds both the BR/EDR and LE devices.
  *
  * To connect connect to peer bluetooth device, you will need to know its bluetooth address and its
  * name. You can search for Bluetooth devices in vicinity by bluetooth_start_discovery() API. It
- * first performs an inquiry. For each device found from the inquiry it gets the remote name of the
- * device. Bluetooth device address and name are given to Application via
- * BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND event. In param_data of bluetooth_event_param_t, you will
- * receive a pointer to a structure of bluetooth_device_info_t type. you will receive device
- * address, device name, device class, rssi (received signal strength indicator). please see
- * bluetooth_device_info_t for more details.
+ * first performs an inquiry and try to find both the BREDR and LE devices. For each device found
+ * from the inquiry it gets the remote name of the device. Bluetooth device address and name are
+ * given to Application via BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND event. In param_data of
+ * bluetooth_event_param_t, you will receive a pointer to a structure of bluetooth_device_info_t type.
+ * You will receive device address, device name, device class, rssi (received signal strength indicator).
+ * please see bluetooth_device_info_t for more details.
  *
  *
  * This API provides searching options like max responses, discovery duration in seconds and class
@@ -1370,7 +2282,7 @@ int bluetooth_get_timeout_value(int *timeout);
  * Also note that search will end after 180 seconds automatically if you pass 0 in discovery
  * duration.
  *
- * sometimes user may want to search for a perticular kind of device. for ex, mobile or pc. in such
+ * Sometimes user may want to search for a particular kind of device. for ex, mobile or pc. in such
  * case, you can use classOfDeviceMask parameter. please see bluetooth_device_service_class_t,
  * bluetooth_device_major_class_t and bluetooth_device_minor_class_t enums
  *
@@ -1379,8 +2291,7 @@ int bluetooth_get_timeout_value(int *timeout);
  * through registered callback function.
  *
  * The discovery is responded by an BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND event for each device it
- * finds and an BLUETOOTH_EVENT_REMOTE_DEVICE_NAME_UPDATED event for each fount device its name
- * finds.
+ * found and a BLUETOOTH_EVENT_REMOTE_DEVICE_NAME_UPDATED event for its name updation.
  *
  * The completion or cancellation of the discovery is indicated by an
  * BLUETOOTH_EVENT_DISCOVERY_FINISHED event.
@@ -1400,7 +2311,7 @@ int bluetooth_get_timeout_value(int *timeout);
  * @param[in] classOfDeviceMask                define classes of the device mask which user wants
                                        (refer to class of device)
  * @remark      None
- * @see         bluetooth_cancel_discovery, bluetooth_device_info_t
+ * @see         bluetooth_start_custom_discovery(), bluetooth_cancel_discovery, bluetooth_device_info_t
 
 @code
 void bt_event_callback(int event, bluetooth_event_param_t *param)
@@ -1463,13 +2374,76 @@ ret = bluetooth_start_discovery(max_response,discovery_duration,classOfDeviceMas
 @endcode
  *
  */
-
 int bluetooth_start_discovery(unsigned short max_response,
                                      unsigned short discovery_duration,
                                      unsigned int classOfDeviceMask);
 
 /**
- * @fn int bluetooth_cancel_discovery (void)
+ * @fn int bluetooth_start_custom_discovery(bt_discovery_role_type_t role
+ *                                     unsigned short max_response,
+ *                                     unsigned short discovery_duration,
+ *                                     unsigned int  classOfDeviceMask)
+ * @brief Start the custom device discovery with specific type such as BR/EDR, LE, LE+BR/EDR etc.
+ *
+ * Sometimes user may want to search for a particular kind of device. for ex, LE only or BR/EDR only.
+ * In such case, you can use type parameter. This API is similar to that of bluetooth_start_discovery().
+ * Please see bluetooth_start_discovery() for other parameters description.
+ *
+ * This function is a asynchronous call.
+ * If the call is success then the application will receive BLUETOOTH_EVENT_DISCOVERY_STARTED event
+ * through registered callback function.
+ *
+ * The discovery is responded by an BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND event for each device it
+ * found and a BLUETOOTH_EVENT_REMOTE_DEVICE_NAME_UPDATED event for its name updation.
+ *
+ * The completion or cancellation of the discovery is indicated by an
+ * BLUETOOTH_EVENT_DISCOVERY_FINISHED event.
+ *
+ * The device discovery can be cancelled by calling bluetooth_stop_discovery().
+ *
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Bluetooth adapter is not enabled \n
+ *             BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
+ *             BLUETOOTH_ERROR_IN_PROGRESS - Bluetooth adapter is busy with another discovery \n
+ *             BLUETOOTH_ERROR_INTERNAL - System error like heap full has occured or bluetooth
+                                               agent is not running \n
+ *
+ * @param[in] role             define the role type of devices to be discovered. See enum bt_discovery_role_type_t.
+                                       (DISCOVERY_ROLE_BREDR means BREDR only, DISCOVERY_ROLE_LE mean Low Energy only,
+                                       DISCOVERY_ROLE_LE_BREDR means LE & BREDR - same as bluetooth_start_discovery())
+ * @param[in] max_response             define the maximum response of the number of founded devices
+                                       (0 means unlimited)
+ * @param[in] discovery_duration       define bluetooth discovery duration (0 means 180s )
+ * @param[in] classOfDeviceMask                define classes of the device mask which user wants
+                                       (refer to class of device)
+ * @remark      None
+ * @see         bluetooth_start_discovery(), bluetooth_cancel_discovery, bluetooth_device_info_t
+
+@code
+unsigned short type;
+unsigned short max_response;
+unsigned short discovery_duration;
+unsigned classOfDeviceMask;
+int ret = 0;
+
+type = 1;
+max_response =0;
+discovery_duration =0;
+classOfDeviceMask =0;
+
+ret = bluetooth_start_custom_discovery(type, max_response, discovery_duration, classOfDeviceMask);
+
+@endcode
+ *
+ */
+int bluetooth_start_custom_discovery(bt_discovery_role_type_t role,
+                                               unsigned short max_response,
+                                               unsigned short discovery_duration,
+                                               unsigned int classOfDeviceMask);
+
+/**
+ * @fn int bluetooth_cancel_discovery (void)
  * @brief Cancel the on-going device discovery operation
  *
  *
@@ -1517,6 +2491,122 @@ ret = bluetooth_cancel_discovery();
 int bluetooth_cancel_discovery(void);
 
 /**
+ * @fn int bluetooth_start_le_discovery(void)
+ * @brief Start the generic device discovery which finds the LE devices.
+ *
+ * To connect connect to peer bluetooth device, you will need to know its bluetooth address and its
+ * name. You can search for Bluetooth devices in vicinity by bluetooth_start_le_discovery() API.
+ * It try to find LE devices. Bluetooth device address and name are
+ * given to Application via BLUETOOTH_EVENT_REMOTE_LE_DEVICE_FOUND event. In param_data of
+ * bluetooth_event_param_t, you will receive a pointer to a structure of bluetooth_device_info_t type.
+ * You will receive device address, device name, device class, rssi (received signal strength indicator).
+ * please see bluetooth_device_info_t for more details.
+ *
+ * This function is a asynchronous call.
+ * If the call is success then the application will receive BLUETOOTH_EVENT_LE_DISCOVERY_STARTED event
+ * through registered callback function.
+ *
+ * The discovery is responded by an BLUETOOTH_EVENT_REMOTE_LE_DEVICE_FOUND event for each device it
+ * found.
+ *
+ * The completion or cancellation of the discovery is indicated by an
+ * BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED event.
+ *
+ * The device discovery can be cancelled by calling bluetooth_stop_le_discovery().
+ *
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Bluetooth adapter is not enabled \n
+ *             BLUETOOTH_ERROR_DEVICE_BUSY - Bluetooth adapter is busy doing some operation \n
+ *             BLUETOOTH_ERROR_INTERNAL - System error like heap full has occured or bluetooth
+                                               agent is not running \n
+ *
+ * @remark      None
+ * @see         bluetooth_stop_le_discovery, bluetooth_device_info_t
+
+@code
+void bt_event_callback(int event, bluetooth_event_param_t *param)
+{
+       switch(event)
+       {
+               case BLUETOOTH_EVENT_REMOTE_LE_DEVICE_FOUND:
+               {
+                       bluetooth_device_info_t *device_info = NULL;
+                       printf("BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND, result [0x%04x]",
+                                       param->result);
+                       device_info  = (bluetooth_device_info_t *)param->param_data;
+                       memcpy(&searched_device, &device_info->device_address,
+                                               sizeof(bluetooth_device_address_t));
+                       printf("dev [%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X]",
+                               device_info->device_address.addr[0],
+                               device_info->device_address.addr[1],
+                               device_info->device_address.addr[2],
+                               device_info->device_address.addr[3],
+                               device_info->device_address.addr[4],
+                               device_info->device_address.addr[5]);
+                       break;
+               }
+
+               case BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED:
+                       printf("BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED, result[0x%04x]", param->result);
+                       break;
+       }
+}
+
+int ret = 0;
+ret = bluetooth_start_discovery();
+
+@endcode
+ *
+ */
+int bluetooth_start_le_discovery(void);
+
+/**
+ * @fn int bluetooth_stop_le_discovery (void)
+ * @brief Cancel the on-going device LE discovery operation
+ *
+ *
+ * This function stops the on-going device discovery operation. This API has to be called after the
+ * bluetooth_start_le_discovery API and before the BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED event comes of
+ * the bluetooth_start_le_discovery API
+ *
+ *
+ * This function is a asynchronous call.
+ * If the call is success to cancel discovey then the application will receive
+ * BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED event through registered callback function
+ * with an error code BLUETOOTH_ERROR_CANCEL. In the case of failure the error code will be
+ * BLUETOOTH_ERROR_NONE
+ *
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
+ *             BLUETOOTH_ERROR_NOT_IN_OPERATION - No Discovery operation in progess to cancel \n
+ *             BLUETOOTH_ERROR_ACCESS_DENIED - Currently in discovery but it is requested from
+                                               other application \n
+ *             BLUETOOTH_ERROR_INTERNAL - Internel IPC error \n
+ * @remark      None
+ * @see                bluetooth_start_discovery
+@code
+void bt_event_callback(int event, bluetooth_event_param_t *param)
+{
+       switch(event)
+       {
+               case BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED:
+                       TC_PRT("BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED, result[0x%04x]", param->result);
+                       break;
+       }
+}
+
+..
+
+int ret = 0;
+
+ret = bluetooth_stop_le_discovery();
+@endcode
+ */
+int bluetooth_stop_le_discovery(void);
+
+/**
  * @fn int bluetooth_is_discovering(void)
  * @brief Check for the device discovery is in-progress or not.
  *
@@ -1550,6 +2640,141 @@ ret = bluetooth_is_discovering ();
 int bluetooth_is_discovering(void);
 
 /**
+ * @fn int bluetooth_is_le_discovering(void)
+ * @brief Check for the device LE discovery is in-progress or not.
+ *
+ * This API is used to check the current status of the LE Discovery operation.If discovery is in\
+ * progress normally other operations are not allowed.
+ * If a device discovery is in progress, we have to either cancel the discovery operation or wait
+ * for the BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED
+ * event before performing other operations. This API is used to get for the current discovery
+ * operation status and using bluetooth_stop_le_discovery()
+ * we can cancell the ongoing LE discovery process.
+ * Before calling this API, make sure that the adapter is enabled. There is no callback event for
+ * this API.
+ *
+ * This function checks whether the device  LE discovery is started or not.
+ *
+ * This function is a synchronous call.
+ *
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Discovery is not in progress \n
+ *             BLUETOOTH_ERROR_NONE+1 - Discovery in progress \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
+ *
+ * @remark      None
+ * @see         bluetooth_start_le_discovery, bluetooth_stop_le_discovery
+
+@code
+int ret = 0;
+ret = bluetooth_is_le_discovering ();
+@endcode
+ */
+int bluetooth_is_le_discovering(void);
+
+/**
+ * @fn int bluetooth_is_le_scanning(void)
+ * @brief Check for the device LE scan is in-progress or not.
+ *
+ * This API is used to check the current status of the LE Scan operation.If discovery is in\
+ * progress normally other operations are not allowed.
+ *
+ * This function checks whether the device  LE Scan is started or not.
+ *
+ * This function is a synchronous call.
+ *
+ * @return   TRUE  - LE Scan in progress \n
+ *              FALSE - LE Scan is not in progress \n
+ *
+ * @remark      None
+
+@code
+gboolean is_le_scanning = 0;
+is_le_scanning = bluetooth_is_le_scanning ();
+@endcode
+ */
+gboolean bluetooth_is_le_scanning(void);
+
+/**
+ * @fn int bluetooth_register_scan_filter(bluetooth_le_scan_filter_t *filter, int *slot_id)
+ * @brief Register scan filter.
+ *
+ * This function registers the scan filter.
+ *
+ * This function is a synchronous call.
+ *
+ * @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);
+
+/**
+ * @fn int bluetooth_enable_rssi(const bluetooth_device_address_t *remote_address,
+               int link_type, bt_rssi_threshold_t rssi_threshold)
+ * @brief Enable RSSI monitoring
+ *
+ * This function enables RSSI monitoring and sets threshold for a connection
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *
+ * @remark      None
+ * @see bluetooth_get_rssi_strength
+ */
+int bluetooth_enable_rssi(const bluetooth_device_address_t *remote_address,
+               int link_type, bt_rssi_threshold_t *rssi_threshold);
+
+/**
+ * @fn int bluetooth_get_rssi_strength(const bluetooth_device_address_t *remote_address, int link_type)
+ * @brief Gets Raw RSSI signal Strength
+ *
+ * This function gives the Raw RSSI signal strength for a connection.
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *
+ * @remark      None
+ * @see bluetooth_enable_rssi
+ */
+int bluetooth_get_rssi_strength(const bluetooth_device_address_t *remote_address, int link_type);
+
+int bluetooth_set_connectable(gboolean is_connectable);
+
+int bluetooth_is_connectable(gboolean *is_connectable);
+
+/**
  * @fn int bluetooth_bond_device(const bluetooth_device_address_t *device_address)
  * @brief Initiate a bonding process
  *
@@ -1634,6 +2859,52 @@ ret = bluetooth_bond_device(&device_address);
 int bluetooth_bond_device(const bluetooth_device_address_t *device_address);
 
 /**
+ * @fn int bluetooth_bond_device_by_type(const bluetooth_device_address_t *device_address,
+ *                             bluetooth_conn_type_t conn_type)
+ * @brief Initiate a bonding process
+ *
+ *
+ * This function initiates a bonding procedure with a peer device on the basis of connection type (BLE or BREDR).
+ * The bonding procedure enables authentication and optionally encryption on the Bluetooth link.
+ *
+ * Bonding is applied to the discovered device to which we need a secure connection. We cannot
+ * inititate the bonding request to the devices already in the paired list.
+ *
+ * Usually we call this API after the device discovery.
+ * This function is a asynchronous call.
+ *
+ * Response will be received through BLUETOOTH_EVENT_BONDING_FINISHED event. It can any of the below
+ * mentioed result code
+ * BLUETOOTH_ERROR_PARING_FAILED - Pairing faied \n
+ * BLUETOOTH_ERROR_ACCESS_DENIED - Authetication rejected \n
+ * BLUETOOTH_ERROR_CANCEL_BY_USER - Cancelled by the user \n
+ * BLUETOOTH_ERROR_PARING_FAILED - Pairing failed \n
+ * BLUETOOTH_ERROR_TIMEOUT - Timeout has haapened \n
+ *
+ * If the remote user is not responding with in a specific time(60 seconds), then a timeout happens
+ * and BLUETOOTH_EVENT_BONDING_FINISHED callback event is called with and BLUETOOTH_ERROR_TIMEOUT
+ * result code
+ *
+ * The bonding operation can be cancelled by calling bluetooth_cancel_bonding().
+ *
+ *
+ * @return BLUETOOTH_ERROR_NONE - Success \n
+ *             BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
+ *             BLUETOOTH_ERROR_DEVICE_BUSY - Adapter is busy or Discovery is in Progress \n
+ *             BLUETOOTH_ERROR_INVALID_DATA - Invalid BD address \n
+ * @exception None
+ * @param[in] device_address This indicates an address of the device with which pairing
+ *                                        should be initiated
+ * @param[in] conn_type This Indicates the connection type to be used for pairing in case of
+ *                                 dual mode devices
+ * @remark None
+ * @see bluetooth_cancel_bonding
+ */
+int bluetooth_bond_device_by_type(const bluetooth_device_address_t *device_address,
+                               bluetooth_conn_type_t conn_type);
+
+/**
  * @fn int bluetooth_cancel_bonding(void)
  * @brief Cancel the on-going bonding process
  *
@@ -1954,13 +3225,39 @@ ret = bluetooth_authorize_device(&device_address,authorized);
 int bluetooth_authorize_device(const bluetooth_device_address_t *device_address,
                                       gboolean authorized);
 
+int bluetooth_set_pin_code(const bluetooth_device_address_t *device_address,
+                               const bluetooth_device_pin_code_t *pin_code);
+
+int bluetooth_unset_pin_code(const bluetooth_device_address_t *device_address);
+
 /**
- * @fn int bluetooth_search_service(const bluetooth_device_address_t *device_address)
- * @brief Get all services supported by remote device
+ * @fn int bluetooth_passkey_reply(char *passkey, gboolean reply)
  *
+ * @brief Receives Legacy Passkey\pin with following authentication response types
  *
- * This API call initiates the search for the services supported by the specified device. Normally
- * the service search will take a couple of seconds to get it completed. Before calling this API
+ * @param[in]   passkey : This is the PIN or PASSKEY string required for remote device authentication
+ * @param[in]   reply    TRUE : Accept AUthentication FALSE: Cancels authentication
+ *
+ */
+int bluetooth_passkey_reply(char *passkey, gboolean reply);
+
+/**
+ * @fn int bluetooth_passkey_confirmation_reply(gboolean reply);
+ *
+ * @brief This API sends user confirmation reply to the local adapter.
+ *
+ * @param[in] reply TRUE : Accept AUthentication FALSE: Cancels authentication
+ *
+ */
+int bluetooth_passkey_confirmation_reply(gboolean reply);
+
+/**
+ * @fn int bluetooth_search_service(const bluetooth_device_address_t *device_address)
+ * @brief Get all services supported by remote device
+ *
+ *
+ * This API call initiates the search for the services supported by the specified device. Normally
+ * the service search will take a couple of seconds to get it completed. Before calling this API
  * make sure that the Adapter is enabled. We have to give the device address of the remote device to
  * perform the service search. We can get the device address by doing a device discovery operation.
  *
@@ -2045,6 +3342,39 @@ int bluetooth_cancel_service_search(void);
 int bluetooth_rfcomm_create_socket(const char *uuid);
 
 /**
+ * @fn int bluetooth_rfcomm_create_socket_ex(const char *uuid, const char *bus_name, const char *path)
+ * @brief Register rfcomm socket with a specific uuid
+ *
+ *
+ * This API register rfcomm socket with the given UUID. The return value of this API is the socket
+ * descriptor of the server.
+ * This is the first API which is called to create the server. Once we created the server socket,
+ * we will listen on that return socket.
+ * So a bluetooth_rfcomm_listen_and_accept_ex should follow this API call. This is a synchronous call.
+ *
+ *
+ * @return  socket FD on Success \n
+ *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
+ *              BLUETOOTH_ERROR_INTERNAL - Internal error\n
+ *              BLUETOOTH_ERROR_MAX_CONNECTION - Maximum connection reached\n
+ *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
+ * @param[in]   UUID (128 bits)
+ * @param[in]   bus_name (const char)
+ * @param[in]   path (const char)
+ *
+ * @remark      None
+ * @see       bluetooth_rfcomm_listen_and_accept_ex, bluetooth_rfcomm_remove_socket
+ *
+ @code
+
+  const char *rfcomm_test_uuid="00001101-0000-1000-8000-00805F9B34FB";
+  fd  = bluetooth_rfcomm_create_socket_ex(rfcomm_test_uuid, bus_name, path);
+
+ @endcode
+ */
+int bluetooth_rfcomm_create_socket_ex(const char *uuid, const char *bus_name, const char *path);
+
+/**
  * @fn int bluetooth_rfcomm_remove_socket(int socket_fd, const char *uuid)
  * @brief De-register the rfcomm socket
  *
@@ -2091,6 +3421,52 @@ int bluetooth_rfcomm_create_socket(const char *uuid);
 int bluetooth_rfcomm_remove_socket(int socket_fd);
 
 /**
+ * @fn int bluetooth_rfcomm_remove_socket(const char *uuid)
+ * @brief De-register the rfcomm socket
+ *
+ *
+ * This API deregister rfcomm socket with the given socket UUID. If the remote device is
+ * already connected then we will receive the BLUETOOTH_EVENT_RFCOMM_DISCONNECTED with socket
+ * descriptor else no event will come. We will call this API only after the
+ * bluetooth_rfcomm_listen_and_accept_ex.
+ * This is a synchronous call.
+ *
+ * @return   BLUETOOTH_ERROR_NONE - Success \n
+ *               BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
+ *               BLUETOOTH_ERROR_NOT_FOUND - Cannot find the proxy\n
+ *               BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
+ * @param[in]   UUID (128 bits)
+ *
+ * @remark      None
+ * @see       bluetooth_rfcomm_create_socket_ex, bluetooth_rfcomm_listen_and_accept_ex
+ *
+ @code
+ void bt_event_callback(int event, bluetooth_event_param_t *param)
+ {
+       switch(event)
+       {
+               case BLUETOOTH_EVENT_RFCOMM_DISCONNECTED:
+               {
+                       bluetooth_rfcomm_connection_t *discon_ind =
+                                       (bluetooth_rfcomm_connection_t *)param->param_data;
+
+                       printf("\nDisconnected from FD %d",  discon_ind->socket_fd);
+               }
+       }
+ }
+
+ ...
+
+ int ret = 0;
+ fd  = bluetooth_rfcomm_create_socket_ex(rfcomm_test_uuid, path, bus_name);
+ ret = bluetooth_rfcomm_listen_and_accept_ex(rfcomm_test_uuid, 1, bus_name, path);
+ ....
+ ret = bluetooth_rfcomm_remove_socket_ex(rfcomm_test_uuid);
+ @endcode
+ */
+int bluetooth_rfcomm_remove_socket_ex(const char *uuid);
+
+/**
  * @fn int bluetooth_rfcomm_server_disconnect(int socket_fd)
  * @brief Disconnect rfcomm connection
  *
@@ -2166,6 +3542,56 @@ int bluetooth_rfcomm_server_disconnect(int socket_fd);
 int bluetooth_rfcomm_listen_and_accept(int socket_fd, int max_pending_connection);
 
 /**
+ * @fn int bluetooth_rfcomm_listen_and_accept_ex(const char *uuid, int max_pending_connection, const char *bus_name, const char *path)
+ * @brief Rfcomm socket listen
+ *
+ *
+ * This API make rfcomm socket listen and accept with socket. We will call this API immediatly
+ * after the bluetooth_rfcomm_create_socket API.
+ * This API listen for the incomming connection and once it receives a connection, it will give
+ * BLUETOOTH_EVENT_RFCOMM_CONNECTED
+ * event to the application. This is an Asynchronous API call.
+ *
+ *
+ * @return  BLUETOOTH_ERROR_NONE - Success \n
+ *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
+ *              BLUETOOTH_ERROR_CONNECTION_ERROR - Listen failed \n
+
+ * @param[in]  int socket_fd
+ * @param[in]  max pending connection.
+ * @param[in]  name
+ * @param[in]  path
+ *
+ * @remark      None
+ * @see       bluetooth_rfcomm_create_socket_ex
+ *
+  @code
+  void bt_event_callback(int event, bluetooth_event_param_t* param)
+ {
+       switch(event)
+       {
+               case BLUETOOTH_EVENT_RFCOMM_CONNECTED:
+               {
+                       bluetooth_rfcomm_connection_t *conn_ind =
+                                               (bluetooth_rfcomm_connection_t *)param->param_data;
+
+                       printf("\nConnected from FD %d",  conn_ind->socket_fd);
+               }
+       }
+ }
+
+ ...
+
+ int ret = 0;
+ fd  = bluetooth_rfcomm_create_socket_ex(rfcomm_test_uuid);
+ ret = bluetooth_rfcomm_listen_and_accept_ex(rfcomm_test_uuid, 1, bus_name, path);
+
+ @endcode
+ */
+
+int bluetooth_rfcomm_listen_and_accept_ex(const char *uuid, int max_pending_connection, const char *bus_name, const char *path);
+
+/**
  * @fn int bluetooth_rfcomm_listen(int socket_fd,int max_pending_connection)
  * @brief Rfcomm socket listen
  *
@@ -2230,7 +3656,7 @@ int bluetooth_rfcomm_listen(int socket_fd, int max_pending_connection);
  * @remark       None
  * @see          bluetooth_rfcomm_reject_connection
  */
-int bluetooth_rfcomm_accept_connection(int server_fd, int *client_fd);
+int bluetooth_rfcomm_accept_connection(int server_fd);
 
 /**
  * @fn int bluetooth_rfcomm_reject_connection()
@@ -2425,6 +3851,8 @@ int bluetooth_rfcomm_write(int fd, const char *buf, int length);
  * @remark       None
  */
 gboolean bluetooth_rfcomm_is_client_connected(void);
+int bluetooth_rfcomm_client_is_connected(const bluetooth_device_address_t *device_address, gboolean *connected);
+int bluetooth_rfcomm_server_is_connected(const bluetooth_device_address_t *device_address, gboolean *connected);
 
 /**
  * @fn int bluetooth_network_activate_server(void)
@@ -2511,6 +3939,26 @@ int bluetooth_network_connect(const bluetooth_device_address_t *device_address,
  */
 int bluetooth_network_disconnect(const bluetooth_device_address_t *device_address);
 
+/**
+ * @fn int bluetooth_network_server_disconnect(const bluetooth_device_address_t *device_address)
+ * @brief Disconnect the device from the network
+ *
+ * This function is an asynchronous call.
+ * The network server disconnect request is responded by
+ * BLUETOOTH_EVENT_NETWORK_SERVER_DISCONNECTED event.
+ *
+ * @return   BLUETOOTH_ERROR_NONE  - Success \n
+ *              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
+ *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Not enabled \n
+ *
+ * @exception   None
+ * @param[in]   device_address   This indicates an address of the connected client device
+ * @remark       None
+ * @see                bluetooth_network_activate_server
+ */
+int bluetooth_network_server_disconnect(const bluetooth_device_address_t *device_address);
+
 /*HDP - API's*/
 
 /**
@@ -3245,6 +4693,31 @@ int bluetooth_gatt_get_characteristics_property(const char *char_handle,
                                                bt_gatt_char_property_t *characteristic);
 
 /**
+ * @fn int bluetooth_gatt_get_char_descriptor_property(const char *char_handle,
+ *                                             bt_gatt_char_property_t *characteristic);
+ *
+ * @brief Provides characteristic descriptor value along with its UUID.
+ *
+ * This function is a synchronous call.
+ * The output parameter needs to be freed by calling bluetooth_gatt_free_desc_property()
+ *
+ * @return   BLUETOOTH_ERROR_NONE  - Success \n
+ *             BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *             BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+ *
+ * @exception  None
+ * @param[in]  desc_handle - Handle for Characteristic descriptor.
+ * @param[out] descriptor - Structure containing remote characteristic descriptor property.
+ *
+ * @remark     None
+ * @see                bluetooth_gatt_free_desc_property()
+ */
+int bluetooth_gatt_get_char_descriptor_property(const char *desc_handle,
+                                               bt_gatt_char_descriptor_property_t *descriptor);
+
+
+/**
  * @fn int bluetooth_gatt_set_characteristics_value(const char *char_handle,
  *                                             const guint8 *value, int length)
  *
@@ -3269,6 +4742,77 @@ int bluetooth_gatt_set_characteristics_value(const char *char_handle,
                                                const guint8 *value, int length);
 
 /**
+ * @fn int bluetooth_gatt_set_characteristics_value_by_type(const char *char_handle,
+ *                             const guint8 *value, int length, guint8 write_type)
+ *
+ * @brief Set characteristic value by write type.
+ *
+ * This function is a synchronous call if write type is "write without resonse"
+ * and it is an asynchronous call if write type is "write with response"
+ *
+ * @return   BLUETOOTH_ERROR_NONE  - Success \n
+ *             BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *             BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+ *
+ * @exception  None
+ * @param[in]  char_handle - Handle for Characteristic property.
+ * @param[in]  value - New value to set for characteristic property.
+ * @param[in]  length - Length of the value to be set.
+ * @param[in]  write_type - Type of write.
+ *
+ * @remark     None
+ * @see                None
+ */
+int bluetooth_gatt_set_characteristics_value_by_type(const char *char_handle,
+                               const guint8 *value, int length, guint8 write_type);
+
+
+/**
+ * @fn int bluetooth_gatt_set_characteristics_value_request(const char *char_handle,
+ *                                             const guint8 *value, int length)
+ *
+ * @brief Set characteristic value request.
+ *
+ * This function is an asynchronous call.
+ *
+ * @return   BLUETOOTH_ERROR_NONE  - Success \n
+ *             BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *             BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+ *
+ * @exception  None
+ * @param[in]  char_handle - Handle for Characteristic property.
+ * @param[in]  value - New value to set for characteristic property.
+ * @param[in]  length - Length of the value to be set.
+  *
+ * @remark     None
+ * @see                None
+ */
+int bluetooth_gatt_set_characteristics_value_request(const char *char_handle,
+                                               const guint8 *value, int length);
+
+/**
+ * @fn int bluetooth_gatt_read_characteristic_value(const char *char_handle)
+ *
+ * @brief Read characteristic value.
+ *
+ * This function is a asynchronous call.
+ *
+ * @return   BLUETOOTH_ERROR_NONE  - Success \n
+ *             BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *             BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+ *
+ * @exception  None
+ * @param[in]  char_handle - Handle for Characteristic property.
+ *
+ * @remark     None
+ * @see        None
+ */
+int bluetooth_gatt_read_characteristic_value(const char *char_handle);
+
+/**
  * @fn int bluetooth_gatt_get_service_from_uuid(bluetooth_device_address_t *address,
  *                                     const char *service_uuid,
  *                                     bt_gatt_service_property_t *service)
@@ -3376,6 +4920,1610 @@ int bluetooth_gatt_free_service_property(bt_gatt_service_property_t *svc_pty);
  int bluetooth_gatt_free_char_property(bt_gatt_char_property_t *char_pty);
 
 /**
+ * @fn int bluetooth_gatt_free_desc_property(bt_gatt_char_descriptor_property_t *desc_pty);
+ *
+ * @brief Releases the memory allocated by bluetooth_gatt_get_char_descriptor_property()
+ *
+ * This function is a synchronous call.
+ * The input parameter is obtained by calling bluetooth_gatt_get_char_descriptor_property()
+ *
+ * @return   BLUETOOTH_ERROR_NONE  - Success \n
+ *             BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+ *
+ * @exception  None
+ * @param[in]  desc_pty - GATT characteristics descriptor property structure.
+ *
+ * @remark     None
+ * @see                bluetooth_gatt_get_char_descriptor_property()
+ */
+ int bluetooth_gatt_free_desc_property(bt_gatt_char_descriptor_property_t *desc_pty);
+
+
+ int bluetooth_connect_le(const bluetooth_device_address_t *device_address, gboolean auto_connect);
+
+ int bluetooth_disconnect_le(const bluetooth_device_address_t *device_address);
+
+ /**
+ * @fn int bluetooth_gatt_discover_characteristic_descriptor(const char *characteristic_handle);
+ *
+ * @brief Discovers the characteristic descriptor value of a characteristic within its definition, asynchronously
+ *
+ * The input parameter is obtained by calling bluetooth_gatt_get_characteristics_property()
+ *
+ * @return  BLUETOOTH_ERROR_NONE  - Success \n
+ *                     BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+ *
+ * @exception  None
+ * @param[in]  characteristic_handle - The characteristic handle for which characteristic descriptor has to be discovered.
+ *
+ * @remark     None
+ */
+int bluetooth_gatt_discover_characteristic_descriptor(const char *characteristic_handle);
+
+/**
+ * @fn int bluetooth_gatt_read_descriptor_value(const char *desc_handle)
+ *
+ * @brief Read characteristic descriptor value.
+ *
+ * This function is a asynchronous call.
+ *
+ * @return   BLUETOOTH_ERROR_NONE  - Success \n
+ *             BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *             BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+ *
+ * @exception  None
+ * @param[in]  desc_handle - Handle for Characteristic descriptor
+ *
+ * @remark     None
+ * @see        None
+ */
+ int bluetooth_gatt_read_descriptor_value(const char *desc_handle);
+
+/**
+ * @fn int bluetooth_gatt_write_descriptor_value(const char *desc_handle,
+ *                     const guint8 *value, int length);
+ *
+ * @brief Set characteristic descriptor value.
+ *
+ * This function is a asynchronous call.
+ *
+ * @return   BLUETOOTH_ERROR_NONE  - Success \n
+ *             BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *             BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+ *
+ * @exception  None
+ * @param[in]  desc_handle - Handle for Characteristic descriptor
+ * @param[in]  value - New value to set for characteristic descriptor
+ * @param[in]  length - Length of the value to be set.
+ *
+ * @remark     None
+ * @see        None
+ */
+ int bluetooth_gatt_write_descriptor_value(const char *desc_handle,
+                       const guint8 *value, int length);
+
+/* @fn int bluetooth_gatt_init(void)
+*
+* @brief Initializes the gatt service.
+*
+* This function is a synchronous call.
+* @return   BLUETOOTH_ERROR_NONE       - Success \n
+*       BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+*       BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+*       BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+*
+* @exception    None
+* @remark  Adapter should be enabled
+* @see  bluetooth_gatt_deinit()
+*/
+int bluetooth_gatt_init(void);
+
+/* @fn int bluetooth_gatt_init(void)
+*
+* @brief DeInitializes the gatt service.
+*
+* This function is a synchronous call.
+* @return   BLUETOOTH_ERROR_NONE       - Success \n
+*       BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+*       BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+*       BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+*
+* @exception    None
+* @remark  Adapter should be enabled
+* @see  bluetooth_gatt_init()
+*/
+int bluetooth_gatt_deinit(void);
+
+/* @fn int bluetooth_gatt_add_service(const char *svc_uuid,
+                       unsigned char **svc_path)
+*
+* @brief Exports a new gatt service to the service interface.
+*
+* This function is a synchronous call.
+*
+* @return      BLUETOOTH_ERROR_NONE    - Success \n
+*       BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+*       BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+*       BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+*
+* @exception    None
+* @param[in]   svc_uuid  Gatt service uuid.
+* @param[out] svc_path  service object path of the exported service.
+* @remark  Adapter should be enabled
+* @see bluetooth_gatt_init()
+*/
+int bluetooth_gatt_add_service(const char *svc_uuid,
+                       char **svc_path);
+
+/* @fn int bluetooth_gatt_add_new_characteristic(
+                       const char *svc_path, const char *char_uuid,
+                       bt_gatt_permission_t permissions,
+                       bt_gatt_characteristic_property_t properties,
+                       int flags_length, char **char_path);;
+*
+* @brief Exports a new gatt characteristic to the characteristic interface.
+*
+* This function is a synchronous call.
+* @return      BLUETOOTH_ERROR_NONE    - Success \n
+*       BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+*       BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+*       BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+* @exception    None
+* @param[in]   svc_path        service object path of the exported service.
+* @param[in]   char_uuid  Gatt service uuid.
+* @param[in]   properties      GATT characteristic properties.
+* @param[out] char_path        characteristic object path of the exported characteristic.
+*
+* @remark  Adapter should be enabled
+* @see bluetooth_gatt_add_service()
+*/
+int bluetooth_gatt_add_new_characteristic(
+                       const char *svc_path, const char *char_uuid,
+                       bt_gatt_permission_t permissions,
+                       bt_gatt_characteristic_property_t properties,
+                       char **char_path);
+
+/* @fn bluetooth_gatt_set_characteristic_value(
+                       const char *characteristic, const char *char_value,
+                       int value_length);
+*
+* @brief adds gatt charactertisic value to the given charactertistic path.
+*
+* This function is a synchronous call.
+* @return      BLUETOOTH_ERROR_NONE    - Success \n
+*       BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+*       BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+*       BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+* @exception    None
+* @param[in]   char_value Value of the GATT characteristic to be added.
+* @param[in]   value_length length of the chantacteristic value..
+* @param[out] characteristic characteristic object path..
+*
+* @remark  Adapter should be enabled
+* @see bluetooth_gatt_add_service()
+*/
+int bluetooth_gatt_set_characteristic_value(
+                       const char *characteristic, const char *char_value,
+                       int value_length);
+
+/* @fn  int bluetooth_gatt_add_descriptor(
+                       const char *char_path, const char *desc_uuid,
+                       bt_gatt_permission_t permissions,
+                       char **desc_path);
+*
+* @brief Exports a new gatt descriptor to the descriptor interface.
+*
+* This function is a synchronous call.
+*
+* @return      BLUETOOTH_ERROR_NONE    - Success \n
+*       BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+*       BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+*       BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+*
+* @exception    None
+* @param[in]   desc_uuid  Gatt descriptor uuid.
+* @param[in]   desc_value      GATT descriptor value.
+* @param[in]   value_length    Length of GATT descriptor value.
+* @param[in]   permissions     descriptor permissions.
+* @param[in]   properties      GATT descriptor properties.
+* @param[in]  char_path        characteristics object path of the exported character.
+*
+* @remark  Adapter should be enabled
+* @see bluetooth_gatt_add_service()
+* @see bluetooth_gatt_add_characteristics()
+*/
+int bluetooth_gatt_add_descriptor(
+                       const char *char_path, const char *desc_uuid,
+                       bt_gatt_permission_t permissions,
+                       char **desc_path);
+
+/* @fn int bluetooth_gatt_set_descriptor_value(
+                  const char *desc_path, const char *desc_value,
+                  int value_length);
+*
+* @brief Adds value to the given descriptor handle.
+*
+* This function is a synchronous call.
+*
+* @return      BLUETOOTH_ERROR_NONE    - Success \n
+*       BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+*       BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+*       BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+*
+* @exception    None
+* @param[in]   desc_value      GATT descriptor value.
+* @param[in]   value_length    Length of GATT descriptor value.
+* @param[in]  desc_path descriptor path to which the value needs to be added.
+*
+* @remark  Adapter should be enabled
+* @see bluetooth_gatt_add_service()
+* @see bluetooth_gatt_add_characteristics()
+*/
+int bluetooth_gatt_set_descriptor_value(
+                  const char *desc_path, const char *desc_value,
+                  int value_length);
+
+/* @fn int bluetooth_gatt_get_service(const char *svc_uuid);
+*
+* @brief Reads the Service registered on manager interface.
+*
+* This function is a synchronous call.
+*
+* @return      BLUETOOTH_ERROR_NONE    - Success \n
+*       BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+*       BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+*       BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+*
+* @exception    None
+* @param[in]   svc_uuid  Gatt Service uuid.
+*
+* @remark  Adapter should be enabled and service should be registered.
+* @see bluetooth_gatt_register_service()
+*/
+int bluetooth_gatt_get_service(const char *svc_uuid);
+
+/* @fn int bluetooth_gatt_register_service(const  char *svc_path)
+*
+* @brief Registers the given service path with the bluez gatt server.
+*
+* This function is a synchronous call.
+*
+* @return      BLUETOOTH_ERROR_NONE    - Success \n
+*       BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+*       BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+*       BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+*
+* @exception    None
+* @param[in] svc_path  service object path of the exported service.
+*
+* @remark  Adapter should be enabled
+* @see bluetooth_gatt_add_service()
+* @see bluetooth_gatt_add_characteristics()
+* @see bluetooth_gatt_add_descriptor()
+* @see  bluetooth_gatt_register_application()
+*/
+int bluetooth_gatt_register_service(const char *svc_path);
+
+/* @fn int bluetooth_gatt_register_application(void)
+*
+* @brief Registers the application with the bluez gatt server.
+*
+* This function is a synchronous call.
+*
+* @return      BLUETOOTH_ERROR_NONE    - Success \n
+*       BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+*       BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+*       BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+*
+* @exception    None
+*
+* @remark  Adapter should be enabled
+* @see  bluetooth_gatt_init()
+* @see bluetooth_gatt_add_service()
+* @see bluetooth_gatt_add_characteristics()
+* @see bluetooth_gatt_add_descriptor()
+* @see bluetooth_gatt_register_service()
+*/
+int bluetooth_gatt_register_application(void);
+
+/* @fn int bluetooth_gatt_unregister_service(const  char *svc_path)
+*
+* @brief Removes(unregister) service from the bluez gatt server db.
+*
+* This function is a synchronous call.
+*
+* @return      BLUETOOTH_ERROR_NONE    - Success \n
+*       BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+*       BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+*       BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+*
+* @exception    None
+* @param[in] svc_path  service object path of the exported service.
+*
+* @remark  Adapter should be enabled
+* @see bluetooth_gatt_add_service()
+* @see bluetooth_gatt_add_characteristics()
+* @see bluetooth_gatt_add_descriptor()
+* @see bluetooth_gatt_register_service()
+*/
+int bluetooth_gatt_unregister_service(const char *svc_path);
+
+/* @fn int bluetooth_gatt_unregister_application(void)
+*
+* @brief Removes(unregister) the application with the bluez gatt server,
+*        and deletes all the service registered.
+*
+* This function is a synchronous call.
+*
+* @return      BLUETOOTH_ERROR_NONE    - Success \n
+*       BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+*       BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+*       BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+*
+* @exception    None
+*
+* @remark  Adapter should be enabled
+* @see  bluetooth_gatt_init()
+* @see bluetooth_gatt_add_service()
+* @see bluetooth_gatt_add_characteristics()
+* @see bluetooth_gatt_add_descriptor()
+* @see bluetooth_gatt_register_service()
+* @see  bluetooth_gatt_unregister_service()
+*/
+int bluetooth_gatt_unregister_application(void);
+
+/* @fn int bluetooth_gatt_send_response(int request_id,
+*                              int offset, char *value, int value_length)
+*
+* @brief Updates the attribute value in local attribute list.
+*
+* This function is a synchronous call.
+*
+* @return      BLUETOOTH_ERROR_NONE    - Success \n
+*       BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+*       BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+*       BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+*
+* @exception    None
+* @param[in] request_id The identification of a read request
+* @param[in] req_type The identification of  request type (TRUE for Read request and FALSE for write request)
+* @param[in] resp_state The identification of response state
+* @param[in] offset The offset from where a value is read
+* @param[in] value The value to be sent. It will be sent from @a offset.
+*              If it is NULL, a requested GATT handle's value will be sent from @a offset.
+* @param[in] value_length Value Length.
+*
+* @remark  Adapter should be enabled
+* @see bluetooth_gatt_add_service()
+* @see bluetooth_gatt_add_characteristics()
+* @see bluetooth_gatt_add_descriptor()
+* @see bluetooth_gatt_register_service()
+*/
+int bluetooth_gatt_send_response(int request_id, guint req_type,
+                               int resp_state, int offset, char *value, int value_length);
+
+/* @fn bluetooth_gatt_server_set_notification(const char *char_path)
+*
+* @brief Sets the notification property for a characteristic.
+*
+* This function is a synchronous call.
+*
+* @return      BLUETOOTH_ERROR_NONE    - Success \n
+*       BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+*       BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+*       BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+*
+* @exception    None
+* @param[in] char_path characteristic object path.
+* @param[in]   unicast_address remote device address. if set notification is sent to only one device.
+*
+* @remark  Adapter should be enabled
+* @see bluetooth_gatt_update_characteristic()
+*/
+int bluetooth_gatt_server_set_notification(const char *char_path,
+                               bluetooth_device_address_t *unicast_address);
+
+/* @fn int bluetooth_gatt_delete_services(void)
+*
+* @brief deletes (unregisters) all services from the gatt server database..
+*
+* This function is a synchronous call.
+*
+* @return      BLUETOOTH_ERROR_NONE    - Success \n
+*       BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+*       BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+*       BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+*
+* @exception    None
+*
+* @remark  Adapter should be enabled
+* @see bluetooth_gatt_add_service()
+* @see bluetooth_gatt_add_characteristics()
+* @see bluetooth_gatt_add_descriptor()
+* @see bluetooth_gatt_register_service()
+* @see bluetooth_gatt_unregister_service()
+*/
+int bluetooth_gatt_delete_services(void);
+
+/* @fn int bluetooth_gatt_update_characteristic(void)
+*
+* @brief updates the given characteristic with a new value
+*
+* This function is a synchronous call.
+*
+* @return      BLUETOOTH_ERROR_NONE    - Success \n
+*       BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+*       BLUETOOTH_ERROR_INVALID_PARAM -Invalid Parameters \n
+*       BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is disabled \n
+*
+* @exception    None
+*
+* @remark  Adapter should be enabled
+* @see bluetooth_gatt_add_service()
+* @see bluetooth_gatt_add_characteristics()
+* @see bluetooth_gatt_add_descriptor()
+* @see bluetooth_gatt_register_service()
+* @see bluetooth_gatt_unregister_service()
+*/
+int bluetooth_gatt_update_characteristic(const char *char_path,
+               const char* char_value, int value_length);
+
+/**
+ * @fn int bluetooth_set_advertising(int handle, gboolean enable);
+ *
+ * @brief Set advertising status.
+ *
+ * This function is used to enable or disable LE advertising.
+ * Once advertising is enabled, Advertising data is transmitted in the advertising packets
+ *
+ * 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]  enable - The status of advertising
+ *
+ * @remark     None
+ * @see                bluetooth_set_advertising_data
+ */
+int bluetooth_set_advertising(int handle, gboolean enable);
+
+/**
+ * @fn int bluetooth_set_custom_advertising(int handle, gboolean enable, bluetooth_advertising_params_t *params);
+ *
+ * @brief Set advertising status along with interval value.
+ *
+ * This function is used to enable or disable LE advertising.
+ * Interval_min and Interval_max is used to set the best advertising interval.
+ * Once advertising is enabled, Advertising data is transmitted in the advertising packets
+ *
+ * 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]  enable - The status of advertising
+ * @param[in]  interval_min - Minimum interval of advertising (msec)
+ * @param[in]  interval_max - Maximum interval of advertising (msec)
+ * @param[in]  filter_policy - Advertising filter policy
+ *
+ * @remark     None
+ * @see                bluetooth_set_advertising_data
+ */
+int bluetooth_set_custom_advertising(int handle, gboolean enable,
+                                       bluetooth_advertising_params_t *params);
+
+/**
+ * @fn int bluetooth_get_advertising_data(bluetooth_advertising_data_t *value, int *length);
+ * @brief Get the advertising data
+ *
+ * This function is used to get advertising data.
+ * Before calling this API, the adapter should be enabled.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
+ *             BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter (NULL buffer)\n
+ *             BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
+ *
+ * @param[out] value - Advertising data structure.
+ * @param[out] length - The length of Advertising data.
+ *
+ * @remark     None
+@code
+bluetooth_advertising_data_t *value = { {0} };
+int length;
+int ret = 0;
+ret = bluetooth_get_advertising_data(&value, &length);
+@endcode
+ */
+int bluetooth_get_advertising_data(bluetooth_advertising_data_t *value, int *length);
+
+/**
+ * @fn int bluetooth_set_advertising_data(int handle, const bluetooth_advertising_data_t *value, int length);
+ *
+ * @brief Set advertising data with value
+ *
+ * This function is used to set advertising data and Maximum size of advertising data
+ *  is 28 byte (Except Flag)
+ *
+ * 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]  value - Advertising data structure.
+ *
+ * @remark     None
+ */
+int bluetooth_set_advertising_data(int handle, const bluetooth_advertising_data_t *value, int length);
+
+/**
+ * @fn int bluetooth_check_privilege_advertising_parameter(void);
+ *
+ * @brief Check the privilege for advertising parameter setting
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *             BLUETOOTH_ERROR_PERMISSION_DEINED - Permission deined \n
+ *
+ * @exception  None
+ *
+ * @remark     None
+ */
+int bluetooth_check_privilege_advertising_parameter(void);
+
+/**
+ * @fn int bluetooth_get_scan_response_data(bluetooth_scan_resp_data_t *value, int *length);
+ * @brief Get the LE scan response data
+ *
+ * This function is used to get scan response data.
+ * Before calling this API, the adapter should be enabled.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
+ *             BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter (NULL buffer)\n
+ *             BLUETOOTH_ERROR_INTERNAL - Internal IPC error \n
+ *
+ * @param[out] value - Scan response data structure.
+ * @param[out] length - The length of Scan response data.
+ *
+ * @remark     None
+@code
+bluetooth_scan_resp_data_t *value = { {0} };
+int length;
+int ret = 0;
+ret = bluetooth_get_scan_response_data(&value, &length);
+@endcode
+ */
+int bluetooth_get_scan_response_data(bluetooth_scan_resp_data_t *value, int *length);
+
+/**
+ * @fn int bluetooth_set_scan_response_data(int handle, const bluetooth_scan_resp_data_t *value, int length);
+ *
+ * @brief Set scan response data with value
+ *
+ * This function is used to set scan response data and Maximum size of scan response data is 31 byte
+ *
+ * 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]  value - LE Scan response data structure.
+ *
+ * @remark     None
+ */
+int bluetooth_set_scan_response_data(int handle, const bluetooth_scan_resp_data_t *value, int length);
+
+/**
+ * @fn int bluetooth_set_scan_parameters(bluetooth_le_scan_params_t *params);
+ *
+ * @brief Set scan interval and window
+ *
+ * This function is used to set LE scan interval and window size
+ *
+ * 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]  interval - Interval of LE scan (msec)
+ * @param[in]  window - Window size of LE scan (msec)
+ *
+ * @remark     None
+ */
+int bluetooth_set_scan_parameters(bluetooth_le_scan_params_t *params);
+
+/**
+ * @fn int bluetooth_is_advertising(void)
+ * @brief Check for the advertising is in-progress or not.
+ *
+ * This API is used to check the current status of the advertising procedure.
+ * Before calling this API, make sure that the adapter is enabled. There is no callback event for
+ * this API.
+ *
+ * This function checks whether the advertising is started or not.
+ *
+ * This function is a synchronous call.
+ *
+ * @param[out] is_advertising The advertising status: (@c TRUE = in progress, @c  false = not in progress)
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
+ *
+ * @remark      None
+ * @see         bluetooth_set_advertising, bluetooth_set_custom_advertising
+
+@code
+int ret;
+gboolean is_advertising = 0;
+
+ret = bluetooth_is_advertising(&is_advertising);
+@endcode
+ */
+int bluetooth_is_advertising(gboolean *is_advertising);
+
+/**
+ * @fn int bluetooth_add_white_list(bluetooth_device_address_t *address, bluetooth_device_address_type_t address_type)
+ * @brief Add LE device to white list
+ *
+ * This API is used to add LE device to white list
+ * Before calling this API, make sure that the adapter is enabled. There is no callback event for
+ * this API.
+ *
+ *
+ * This function is a synchronous call.
+ *
+ * @param[in] address The address of remote device
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
+ *
+ * @remark      None
+ * @see         bluetooth_set_custom_advertising
+ */
+int bluetooth_add_white_list(bluetooth_device_address_t *address, bluetooth_device_address_type_t address_type);
+
+/**
+ * @fn int bluetooth_remove_white_list(bluetooth_device_address_t *address, bluetooth_device_address_type_t address_type)
+ * @brief Remove LE device from white list
+ *
+ * This API is used to remove LE device from white list
+ * Before calling this API, make sure that the adapter is enabled. There is no callback event for
+ * this API.
+ *
+ *
+ * This function is a synchronous call.
+ *
+ * @param[in] address The address of remote device
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
+ *
+ * @remark      None
+ * @see         bluetooth_set_custom_advertising
+ */
+int bluetooth_remove_white_list(bluetooth_device_address_t *address, bluetooth_device_address_type_t address_type);
+
+/**
+ * @fn int bluetooth_clear_white_list(void)
+ * @brief Clear white list
+ *
+ * This API is used to clear white list
+ * Before calling this API, make sure that the adapter is enabled. There is no callback event for
+ * this API.
+ *
+ *
+ * This function is a synchronous call.
+ *
+ * @param[in] address The address of remote device
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
+ *
+ * @remark      None
+ * @see         bluetooth_set_custom_advertising
+ */
+int bluetooth_clear_white_list(void);
+
+/**
+ * @fn int bluetooth_le_conn_update(bluetooth_device_address_t *address,
+ *          const bluetooth_le_connection_param_t *parameters)
+ * @brief update connection paramter of LE connection.
+ *
+ * This function is a synchronous call.
+ *
+ * @return   BLUETOOTH_ERROR_NONE  - Success \n
+ *           BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *
+ * @exception  None
+ * @param[in]  address - remote device address value.
+ * @param[in]  parameters - new connection parameters.
+ *
+ * @remark       None
+ * @see     bluetooth_bond_device
+ */
+int bluetooth_le_conn_update(const bluetooth_device_address_t *address,
+            const bluetooth_le_connection_param_t *parameters);
+
+
+/**
+ * @fn int bluetooth_enable_le_privacy(gboolean enable_privacy);
+ *
+ * @brief Enable/Disable LE Privacy feature.
+ *
+ * This function is used to enable or disable LE Privacy feature.
+ * Once Privacy feature is enabled, Adapter can use Random Address for more security.
+ *
+ * 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]  enable_privacy - The status of Privacy feature to be activated/deactivated[True/False].
+ *
+ * @remark     None
+ */
+int bluetooth_enable_le_privacy(gboolean enable_privacy);
+
+/**
+ * @fn int bluetooth_update_le_connection_mode(bluetooth_device_address_t *address,
+ *                                             bluetooth_le_connection_mode_t mode)
+ * @brief update connection paramter of LE connection.
+ *
+ * This function is a synchronous call.
+ *
+ * @return   BLUETOOTH_ERROR_NONE  - Success \n
+ *           BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *           BLUETOOTH_ERROR_INVALID_PARAM - Parameter is not valid \n
+ *
+ * @exception  None
+ * @param[in]  address - remote device address value.
+ * @param[in]  mode - new connection mode.
+ *
+ * @remark       None
+ */
+int bluetooth_update_le_connection_mode(const bluetooth_device_address_t *address,
+               bluetooth_le_connection_mode_t mode);
+
+/**
+ * @fn int bluetooth_le_read_maximum_data_length()
+ * @brief reads the maximum LE data length supported in the controller.
+ *
+ * This function is a synchronous call.
+ *
+ * @return   BLUETOOTH_ERROR_NONE  - Success \n
+ *           BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *
+ * @exception  None
+ *
+ * @remark       None
+ */
+int bluetooth_le_read_maximum_data_length(
+                       bluetooth_le_read_maximum_data_length_t *max_le_datalength);
+/**
+ * @fn int bluetooth_le_write_host_suggested_default_data_length()
+ * @brief writes the host suggested values for the controllers max transmitted no of payload
+ * octects to be used for new connections.
+ *
+ * This function is a synchronous call.
+ *
+ * @return   BLUETOOTH_ERROR_NONE  - Success \n
+ *           BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *
+ * @exception  None
+ *
+ * @remark       None
+ */
+int bluetooth_le_write_host_suggested_default_data_length(
+               const unsigned int def_tx_Octets, const unsigned int def_tx_Time);
+
+int bluetooth_le_read_suggested_default_data_length(
+       bluetooth_le_read_host_suggested_data_length_t *le_data_length);
+
+int bluetooth_le_set_data_length(bluetooth_device_address_t *address,
+       const unsigned int max_tx_octets, const unsigned int max_tx_time);
+
+int bluetooth_pbap_init(void);
+int bluetooth_pbap_deinit(void);
+int bluetooth_pbap_connect(const bluetooth_device_address_t *address);
+int bluetooth_pbap_disconnect(const bluetooth_device_address_t *address);
+int bluetooth_pbap_get_phonebook_size(const bluetooth_device_address_t *address,
+               bt_pbap_folder_t *folder);
+int bluetooth_pbap_get_phonebook(const bluetooth_device_address_t *address,
+               bt_pbap_folder_t *folder, bt_pbap_pull_parameters_t *app_param);
+int bluetooth_pbap_get_list(const bluetooth_device_address_t *address,
+               bt_pbap_folder_t *folder, bt_pbap_list_parameters_t *app_param);
+int bluetooth_pbap_pull_vcard(const bluetooth_device_address_t *address,
+               bt_pbap_folder_t *folder, bt_pbap_pull_vcard_parameters_t *app_param);
+int bluetooth_pbap_phonebook_search(const bluetooth_device_address_t *address,
+               bt_pbap_folder_t *folder, bt_pbap_search_parameters_t *app_param);
+
+/**
+ * @fn int bluetooth_set_manufacturer_data(const bluetooth_manufacturer_data_t *value);
+ *
+ * @brief Set manufacturer data with value
+ *
+ * This function is used to set manufacturer data.
+ *
+ * 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]  value - Manufacturer data structure.
+ *
+ * @remark     None
+ */
+int bluetooth_set_manufacturer_data(const bluetooth_manufacturer_data_t *value);
+
+#ifdef TIZEN_DPM_VCONF_ENABLE
+/**
+ * @fn int bluetooth_dpm_is_mode_allowed(void);
+ *
+ * @brief Checks Restriction for BT mode(BT allowed or not)
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ *  @param[in] None
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_is_mode_allowed(void);
+#endif
+
+/**
+ * @fn int bluetooth_dpm_set_allow_mode(bt_dpm_allow_t value);
+ *
+ * @brief Sets Restriction for BT mode(BT allowed or not)
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  value - BT Allow value.
+ *             BLUETOOTH_DPM_ERROR  = -1,       < bluetooth allowance error
+ *             BLUETOOTH_DPM_BT_ALLOWED,                < bluetooth allowance allowed
+ *             BLUETOOTH_DPM_HANDSFREE_ONLY,  < bluetooth allowance handsfree only
+ *             BLUETOOTH_DPM_BT_RESTRICTED,  < bluetooth allowance restricted
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_set_allow_mode(bt_dpm_allow_t value);
+
+/**
+ * @fn int bluetooth_dpm_get_allow_mode(bt_dpm_allow_t value);
+ *
+ * @brief Reads the Restriction for BT mode(BT allowed or not)
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ *  @param[in] None
+ * @param[out] value - BT Allow value.
+ *             BLUETOOTH_DPM_ERROR      = -1,   < bluetooth allowance error
+ *             BLUETOOTH_DPM_BT_ALLOWED,                < bluetooth allowance allowed
+ *             BLUETOOTH_DPM_HANDSFREE_ONLY,  < bluetooth allowance handsfree only
+ *             BLUETOOTH_DPM_BT_RESTRICTED,  < bluetooth allowance restricted
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_get_allow_mode(bt_dpm_allow_t *value);
+
+/**
+ * @fn int bluetooth_dpm_activate_device_restriction(bt_dpm_status_t value);
+ *
+ * @brief Sets the Restriction for device.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  value - State value.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_activate_device_restriction(bt_dpm_status_t value);
+
+/**
+ * @fn int bluetooth_dpm_is_device_restriction_active(bt_dpm_status_t *value);
+ *
+ * @brief Reads the Restriction for device.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in] None
+ * @param[out] value - State value.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_is_device_restriction_active(bt_dpm_status_t *value);
+
+/**
+ * @fn int bluetooth_dpm_activate_bluetoooth_uuid_restriction(bt_dpm_status_t value);
+ *
+ * @brief Sets the Restriction for uuid.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  value - State value.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_activate_uuid_restriction(bt_dpm_status_t value);
+
+/**
+ * @fn int bluetooth_dpm_is_uuid_restriction_active(bt_dpm_status_t *value);
+ *
+ * @brief Reads the Restriction for uuid.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in] None
+ * @param[out] value - State value.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_is_uuid_restriction_active(bt_dpm_status_t *value);
+
+/**
+ * @fn int bluetooth_dpm_add_devices_to_blacklist(const bluetooth_device_address_t *device_address);
+ *
+ * @brief Adds the device to blacklist.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  device_address - Device address
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_add_devices_to_blacklist(const bluetooth_device_address_t *device_address);
+
+/**
+ * @fn int bluetooth_dpm_add_devices_to_whitelist(const bluetooth_device_address_t *device_address);
+ *
+ * @brief Adds the device to whitelist.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  device_address - Device address
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_add_devices_to_whitelist(const bluetooth_device_address_t *device_address);
+
+/**
+ * @fn int bluetooth_dpm_add_uuids_to_blacklist(const char *service_uuid);
+ *
+ * @brief Adds the Service UUIDS to blacklist.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  service_uuids - profile or custom service uuids
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_add_uuids_to_blacklist(const char *service_uuid);
+
+/**
+ * @fn int bluetooth_dpm_add_uuids_to_whitelist(const char *service_uuid);
+ *
+ * @brief Adds the Service UUIDS to whitelist.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  service_uuids - profile or custom service uuids
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_add_uuids_to_whitelist(const char *service_uuid);
+
+/**
+ * @fn int bluetooth_dpm_clear_devices_from_blacklist();
+ *
+ * @brief Clears the devices from blacklist.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  None
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_clear_devices_from_blacklist(void);
+
+/**
+ * @fn int bluetooth_dpm_clear_devices_from_whitelist();
+ *
+ * @brief Clears the devices from whitelist.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  None
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_clear_devices_from_whitelist(void);
+
+/**
+ * @fn int bluetooth_dpm_clear_uuids_from_blacklist();
+ *
+ * @brief Clears the uuids from blacklist.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  None
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_clear_uuids_from_blacklist(void);
+
+/**
+ * @fn int bluetooth_dpm_clear_uuids_from_whitelist();
+ *
+ * @brief Clears the uuids from whitelist.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  None
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_clear_uuids_from_whitelist(void);
+
+/**
+ * @fn int bluetooth_dpm_get_devices_from_blacklist(bt_dpm_device_list_t *device_list);
+ *
+ * @brief reads the devices from blacklist.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[out] device_list - list of devices
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_get_devices_from_blacklist(bt_dpm_device_list_t *device_list);
+
+/**
+ * @fn int bluetooth_dpm_get_devices_from_whitelist(bt_dpm_device_list_t *device_list);
+ *
+ * @brief reads the devices from whitelist.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[out] device_list - list of devices
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_get_devices_from_whitelist(bt_dpm_device_list_t *device_list);
+
+/**
+ * @fn int bluetooth_dpm_get_uuids_from_blacklist(bt_dpm_uuids_list_t *uuid_list);
+ *
+ * @brief reads the uuids from blacklist.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  uuid_list - list of uuids
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_get_uuids_from_blacklist(bt_dpm_uuids_list_t *uuid_list);
+
+/**
+ * @fn int bluetooth_dpm_get_uuids_from_whitelist(bt_dpm_uuids_list_t *uuid_list);
+ *
+ * @brief reads the uuids from whitelist.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  uuid_list - list of uuids
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_get_uuids_from_whitelist(bt_dpm_uuids_list_t *uuid_list);
+
+/**
+ * @fn int bluetooth_dpm_remove_device_from_whitelist(const bluetooth_device_address_t *device_address);
+ *
+ * @brief Removes the device from whitelist.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  device_address - Device address
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_remove_device_from_whitelist(const bluetooth_device_address_t *device_address);
+
+/**
+ * @fn int bluetooth_dpm_remove_device_from_blacklist(const bluetooth_device_address_t *device_address);
+ *
+ * @brief Removes the device from blacklist.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  device_address - Device address
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_remove_device_from_blacklist(const bluetooth_device_address_t *device_address);
+
+/**
+ * @fn int bluetooth_dpm_remove_uuid_from_whitelist(const char *service_uuid);
+ *
+ * @brief Removes the Service UUIDS from whitelist.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  service_uuids - profile or custom service uuids
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_remove_uuid_from_whitelist(const char *service_uuid);
+
+/**
+ * @fn int bluetooth_dpm_remove_uuid_from_blacklist(const char *service_uuid);
+ *
+ * @brief Removes the Service UUIDS from blacklist.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  service_uuids - profile or custom service uuids
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_remove_uuid_from_blacklist(const char *service_uuid);
+
+/**
+ * @fn int bluetooth_dpm_set_allow_outgoing_call(bt_dpm_status_t value);
+ *
+ * @brief Sets the Restriction for outgoing call.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  value - State value.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_set_allow_outgoing_call(bt_dpm_status_t value);
+
+/**
+ * @fn int bluetooth_dpm_get_allow_outgoing_call(bt_dpm_status_t *value);
+ *
+ * @brief Reads the Restriction for  outgoing call.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in] None
+ * @param[out] value - State value.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_get_allow_outgoing_call(bt_dpm_status_t *value);
+
+/**
+ * @fn int bluetooth_dpm_set_pairing_state(bt_dpm_status_t value);
+ *
+ * @brief Sets the Restriction for Pairing.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  value - State value.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_set_pairing_state(bt_dpm_status_t value);
+
+/**
+ * @fn int bluetooth_dpm_get_pairing_state(bt_dpm_status_t *value);
+ *
+ * @brief Reads the Restriction for Pairing
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in] None
+ * @param[out] value - State value.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_get_pairing_state(bt_dpm_status_t *value);
+
+/**
+ * @fnint bluetooth_dpm_set_profile_state(bt_dpm_profile_t profile, bt_dpm_status_t value);
+ *
+ * @brief Sets the Restriction for using Profiles.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]profile - Profile.
+ *             BLUETOOTH_DPM_POLICY_A2DP_PROFILE_STATE,
+ *             BLUETOOTH_DPM_POLICY_AVRCP_PROFILE_STATE,
+ *             BLUETOOTH_DPM_POLICY_BPP_PROFILE_STATE,
+ *             BLUETOOTH_DPM_POLICY_DUN_PROFILE_STATE,
+ *             BLUETOOTH_DPM_POLICY_FTP_PROFILE_STATE,
+ *             BLUETOOTH_DPM_POLICY_HFP_PROFILE_STATE,
+ *             BLUETOOTH_DPM_POLICY_HSP_PROFILE_STATE,
+ *             BLUETOOTH_DPM_POLICY_PBAP_PROFILE_STATE,
+ *             BLUETOOTH_DPM_POLICY_SAP_PROFILE_STATE,
+ *             BLUETOOTH_DPM_POLICY_SPP_PROFILE_STATE,
+ *             BLUETOOTH_DPM_PROFILE_NONE
+ * @param[in]  value - State value.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_set_profile_state(bt_dpm_profile_t profile, bt_dpm_status_t value);
+
+/**
+ * @fn int bluetooth_dpm_get_profile_state(bt_dpm_profile_t profile, bt_dpm_status_t *value);
+ *
+ * @brief Reads the Restriction for using Profiles.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]profile - Profile.
+ *             BLUETOOTH_DPM_POLICY_A2DP_PROFILE_STATE,
+ *             BLUETOOTH_DPM_POLICY_AVRCP_PROFILE_STATE,
+ *             BLUETOOTH_DPM_POLICY_BPP_PROFILE_STATE,
+ *             BLUETOOTH_DPM_POLICY_DUN_PROFILE_STATE,
+ *             BLUETOOTH_DPM_POLICY_FTP_PROFILE_STATE,
+ *             BLUETOOTH_DPM_POLICY_HFP_PROFILE_STATE,
+ *             BLUETOOTH_DPM_POLICY_HSP_PROFILE_STATE,
+ *             BLUETOOTH_DPM_POLICY_PBAP_PROFILE_STATE,
+ *             BLUETOOTH_DPM_POLICY_SAP_PROFILE_STATE,
+ *             BLUETOOTH_DPM_POLICY_SPP_PROFILE_STATE,
+ *             BLUETOOTH_DPM_PROFILE_NONE
+ * @param[out] value - State value.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_get_profile_state(bt_dpm_profile_t profile, bt_dpm_status_t *value);
+
+/**
+ * @fn int bluetooth_dpm_set_desktop_connectivity_state(bt_dpm_status_t value);
+ *
+ * @brief Sets the Restriction for Desktop Connectivity.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  value - State value.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_set_desktop_connectivity_state(bt_dpm_status_t value);
+
+/**
+ * @fn int bluetooth_dpm_get_desktop_connectivity_state(bt_dpm_status_t *value);
+ *
+ * @brief Reads the Restriction for Desktop Connectivity.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in] None
+ * @param[out] value - State value.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_get_desktop_connectivity_state(bt_dpm_status_t *value);
+
+/**
+ * @fn int bluetooth_dpm_set_discoverable_state(bt_dpm_status_t value);
+ *
+ * @brief Sets the Restriction for Discoverable state.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  value - State value.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_set_discoverable_state(bt_dpm_status_t value);
+
+/**
+ * @fn int bluetooth_dpm_get_discoverable_state(bt_dpm_status_t *value);
+ *
+ * @brief Reads the Restriction for Discoverable state.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in] None
+ * @param[out] value - State value.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_get_discoverable_state(bt_dpm_status_t *value);
+
+/**
+ * @fn int bluetooth_dpm_set_limited_discoverable_state(bt_dpm_status_t value);
+ *
+ * @brief Sets the Restriction for linited discoverable state..
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  value - State value.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_set_limited_discoverable_state(bt_dpm_status_t value);
+
+/**
+ * @fn int bluetooth_dpm_get_limited_discoverable_state(bt_dpm_status_t *value);
+ *
+ * @brief Reads the Restriction for limited discoverable state.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in] None
+ * @param[out] value - State value.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_get_limited_discoverable_state(bt_dpm_status_t *value);
+/**
+ * @fn int bluetooth_dpm_set_data_transfer_state(bt_dpm_status_t value);
+ *
+ * @brief Sets the Restriction for Data trasnfer.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in]  value - State value.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_set_data_transfer_state(bt_dpm_status_t value);
+
+
+/**
+ * @fn int bluetooth_dpm_get_data_transfer_state(bt_dpm_status_t *value);
+ *
+ * @brief Reads the Restriction for Data trasnfer.
+ *
+ * This function is a synchronous call.
+ *
+ * @return     BLUETOOTH_DPM_RESULT_SUCCESS - Success \n
+ *             BLUETOOTH_DPM_RESULT_ACCESS_DENIED - BT restricted \n
+ *             BLUETOOTH_DPM_RESULT_FAIL - Internal error \n
+ *
+ * @exception  None
+ * @param[in] None
+ * @param[out] value - State value.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
+ *
+ * @remark     None
+ */
+int bluetooth_dpm_get_data_transfer_state(bt_dpm_status_t *value);
+
+/**
  * @}
  */