Revert "[Bluetooth][OTP-Client] Handle GATT operations for OTP"
[platform/core/connectivity/bluetooth-frwk.git] / include / bluetooth-api.h
old mode 100755 (executable)
new mode 100644 (file)
index f23273a..c35f4dd
@@ -1,11 +1,5 @@
 /*
- * Bluetooth-frwk
- *
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact:  Hocheol Seo <hocheol.seo@samsung.com>
- *              Girishashok Joshi <girish.joshi@samsung.com>
- *              Chanyeol Park <chanyeol.park@samsung.com>
+ * 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.
@@ -25,6 +19,7 @@
 #define _BLUETOOTH_API_H_
 
 #include <stdlib.h>
+#include <stdbool.h>
 #include <unistd.h>
 #include <glib.h>
 
@@ -41,21 +36,28 @@ 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_ADDRESS_STRING_LENGTH                17 /**< This specifies bluetooth device address length (AA:BB:CC:DD:EE:FF) */
+#define BLUETOOTH_ADDRESS_LENGTH               6 /**< This specifies bluetooth device address length */
+#define BLUETOOTH_VERSION_LENGTH_MAX           30 /**< This specifies bluetooth device version length */
+#define BLUETOOTH_INTERFACE_NAME_LENGTH                16
+#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_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
+#define BLUETOOTH_MAX_SERVICES_FOR_DEVICE      40  /**< This specifies maximum number of services
                                                        a device can support */
 
+#define BLUETOOTH_MAX_ATT_MTU  512             /**< This specifies the maximum  ATT MTU Value*/
+
 #define BLUETOOTH_UUID_STRING_MAX 50
 #define BLUETOOTH_PATH_STRING 50
 
-#define BLUETOOTH_OOB_DATA_LENGTH              16
+#define BLUETOOTH_OOB_DATA_LENGTH 16
+
+#define BLUETOOTH_PIN_CODE_MAX_LENGTH 16
+
 /**
  * This is Bluetooth Connected event role
  */
@@ -73,6 +75,17 @@ extern "C" {
 #define BLUETOOTH_PBAP_MAX_SEARCH_VALUE_LENGTH 100
 
 
+#define BLUETOOTH_MAX_DPM_LIST 20      /**< This specifies maximum number of devices/uuids
+                                                       dpm shall store */
+
+#define BLUETOOTH_TDS_DATA_LENGTH_MAX  239 /**< This specifies maximum AD data length: 0xEF */
+#define BLUETOOTH_TDS_CONTROL_POINT_PARAM_LENGTH_MAX   500 /**< TDS Control Point parameter Max length */
+
+/*
+ * < This defines the maximum size of OTP server directory name
+ */
+#define BLUETOOTH_MAX_OTP_SERVER_DIR_NAME 100
+
 /**
  * This is Bluetooth error code
  */
@@ -164,6 +177,41 @@ extern "C" {
 #define BLUETOOTH_ERROR_NOT_INITIALIZED    ((int)BLUETOOTH_ERROR_BASE - 0x26)
                                                                /**< Not initialized */
 
+#define BLUETOOTH_ERROR_AUTHENTICATION_REJECTED        ((int)BLUETOOTH_ERROR_BASE - 0x27)
+                                                               /**< Authentication rejected */
+
+#define BLUETOOTH_ERROR_DEVICE_POLICY_RESTRICTION    ((int)BLUETOOTH_ERROR_BASE - 0x28)
+                                                               /**< Device Policy Restricted */
+
+/**
+ * Device disconnection reasons; received from stack
+ */
+#define BLUETOOTH_ERROR_PAGE_TIMEOUT   0x04
+#define BLUETOOTH_ERROR_AUTH_FAILURE   0x05
+#define BLUETOOTH_ERROR_PIN_OR_KEY_MISSING     0x06
+#define BLUETOOTH_ERROR_CONNECTION_TIMEOUT     0x08
+#define BLUETOOTH_ERROR_REMOTE_USER_TERM       0x13
+#define BLUETOOTH_ERROR_REMOTE_LOW_RESOURCES   0x14
+#define BLUETOOTH_ERROR_REMOTE_POWER_OFF       0x15
+#define BLUETOOTH_ERROR_LOCAL_HOST_TERM        0x16
+#define BLUETOOTH_ERROR_REPEATED_ATTEMPTS      0x17
+#define BLUETOOTH_ERROR_LMP_RESPONSE_TIMEOUT 0x22
+#define BLUETOOTH_ERROR_LMP_TRANSACTION_COLLISION 0x23
+#define BLUETOOTH_ERROR_INSTANT_PASSED 0x28
+#define BLUETOOTH_ERROR_INSUFFICIENT_SECURITY 0x2f
+#define BLUETOOTH_ERROR_CONNECTION_TERMINATED_DUE_TO_MIC_FAILURE 0x3d
+#define BLUETOOTH_ERROR_CONNECTION_FAILED_TO_BE_ESTABLISHED    0x3e
+
+/*
+ * Bluetooth OTP error codes
+ */
+#define BLUETOOTH_ERROR_INVALID_DIRECTORY 0x01
+#define BLUETOOTH_ERROR_NO_OBJECTS_FOUND 0x02
+#define BLUETOOTH_ERROR_WRITE_REQUEST_REJECTED 0x80
+#define BLUETOOTH_ERROR_OBJECT_NOT_SELECTED 0x81
+#define BLUETOOTH_ERROR_CONCURRENCY_LIMIT_EXCEEDED 0x82
+#define BLUETOOTH_ERROR_OBJECT_NAME_EXISITS 0x83
+
 /**
 * Device disconnect reason
 */
@@ -184,13 +232,21 @@ typedef struct {
 /**
  * This is Bluetooth device address type
  */
-typedef enum
-{
+typedef enum {
        BLUETOOTH_DEVICE_PUBLIC_ADDRESS = 0x00,
        BLUETOOTH_DEVICE_RANDOM_ADDRESS
 } bluetooth_device_address_type_t;
 
 /**
+ * This is BD Address type defined in kernel BT header
+ */
+typedef enum {
+       BLUETOOTH_BDADDR_BREDR = 0x00,
+       BLUETOOTH_BDADDR_LE_PUBLIC = 0x01,
+       BLUETOOTH_BDADDR_LE_RANDOM = 0x02
+} bluetooth_bdaddr_type_e;
+
+/**
  * This is Bluetooth version
  */
 typedef struct {
@@ -212,6 +268,10 @@ typedef struct {
        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
  */
@@ -258,6 +318,7 @@ typedef enum {
 
 /**
  * Service type
+ * Service type matched to bt_profile_type_t of bt-service-common.h
  */
 typedef enum {
        BLUETOOTH_RFCOMM_SERVICE = 0x01,
@@ -268,16 +329,19 @@ typedef enum {
        BLUETOOTH_HFG_SERVICE = 0x20,
        BLUETOOTH_GATT_SERVICE = 0x40,
        BLUETOOTH_NAP_SERVER_SERVICE = 0x80,
+       BLUETOOTH_A2DP_SINK_SERVICE = 0x100,
+       BLUETOOTH_PBAP_SERVICE = 0x200,
 } 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_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;
 
 /**
@@ -331,8 +395,21 @@ typedef enum {
        BLUETOOTH_ADV_CONNECTABLE_DIRECT_LOW = 0x04, /* ADV_DIRECT_IND, low duty cycle */
 } bluetooth_advertising_type_t;
 
-typedef enum
-{
+typedef enum {
+       BLUETOOTH_GATT_SERVICE_CHANGE_TYPE_ADD = 0x01,
+       BLUETOOTH_GATT_SERVICE_CHANGE_TYPE_REMOVE = 0x02,
+} bluetooth_gatt_service_change_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,
@@ -340,8 +417,93 @@ typedef enum
        BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_NOTIFY = 0x10,
        BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_INDICATE = 0x20,
        BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_SIGNED_WRITE = 0x40,
-       BLUETOOTH_GATT_CHARACTERISTIC_PROPERTY_EXTENDED_PROPS = 0x80
-}bt_gatt_characteristic_property_t;
+       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;
+
+/**
+ * Proximity Property Type
+ */
+typedef enum {
+               BLUETOOTH_PXP_PROPERTY_LLS = 0x01,      /* Link Loss Alert Proeprty */
+               BLUETOOTH_PXP_PROPERTY_IAS = 0x02,      /* Immediate Alert Proeprty */
+               BLUETOOTH_PXP_PROPERTY_TX_POWER = 0x04, /* TX Power */
+} bluetooth_pxp_poperty_t;
+
+/**
+ * TDS transport Type
+ */
+typedef enum {
+               BLUETOOTH_TDS_TRANSPORT_BT = 0x01,      /* Transport type BR-EDR */
+               BLUETOOTH_TDS_TRANSPORT_CUSTOM, /* Transport type custom */
+               /* ... */
+               BLUETOOTH_TDS_TRANSPORT_INVALID
+} bluetooth_tds_transport_t;
+
+/**
+ * TDS transport state
+ */
+typedef enum {
+       BLUETOOTH_TDS_TRANSPORT_STATE_OFF = 0,
+       BLUETOOTH_TDS_TRANSPORT_STATE_ON,
+       BLUETOOTH_TDS_TRANSPORT_STATE_UNAVAILABLE,
+       BLUETOOTH_TDS_TRANSPORT_STATE_RESERVED
+} bluetooth_tds_transport_state_t;
+
+/**
+* TDS data
+*/
+typedef struct {
+       int length;
+       guint8 data[BLUETOOTH_TDS_DATA_LENGTH_MAX];
+} bluetooth_tds_data_t;
+
+/**
+* TDS activation request
+*/
+typedef struct {
+       bluetooth_device_address_t rem_addr;
+       bluetooth_tds_transport_t transport;
+       bluetooth_tds_data_t tds_data;
+} bluetooth_tds_activation_req_t;
+
+/**
+* TDS Control Point data
+*/
+typedef struct {
+       int length;                                                     /**< Control point data length */
+       guint8 data[BLUETOOTH_TDS_CONTROL_POINT_PARAM_LENGTH_MAX];      /**< Control pint param data */
+} bluetooth_control_point_data_t;
+
+/**
+* TDS Indication Response data
+*/
+typedef struct {
+       bluetooth_device_address_t rem_addr;         /**< Device address */
+       bluetooth_control_point_data_t tds_data;     /**< TDS Control Point Indication params */
+} bluetooth_tds_indication_res_t;
+
+/**
+* Structure to hold the TDS Complete data information which is read from remote TDS provider
+*/
+typedef struct {
+       bluetooth_device_address_t device_address;      /**< Device address */
+       int data_length;                        /**< Data length */
+       char *data;                             /**< Complete Transport Specific data */
+} bluetooth_tds_transport_data_info_t;
 
 /**
 * Advertising parameters
@@ -366,11 +528,29 @@ typedef struct {
        LE Connection Update
  */
 typedef struct {
-       guint16 interval_min;
-       guint16 interval_max;
+       float interval_min;
+       float interval_max;
        guint16 latency;
-       guint16 time_out;
-} bluetooth_le_conn_update_t;
+       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
@@ -380,6 +560,18 @@ typedef struct {
        char *message;
 } bluetooth_vendor_dep_at_cmd_t;
 
+/**
+ * Transfer Types
+ */
+typedef enum {
+       BLUETOOTH_TRANSFER_INBOUND,         /**< Inbound Transfer Type */
+       BLUETOOTH_TRANSFER_OUTBOUND,        /**< Outbound Transfer Type */
+} bluetooth_opp_transfer_type_t;
+
+typedef struct {
+       gint event;
+       gint value;
+} bluetooth_hf_ciev_device_event_t;
 
 #define BLUETOOTH_EVENT_BASE            ((int)(0x0000))                /**< No event */
 #define BLUETOOTH_EVENT_GAP_BASE        ((int)(BLUETOOTH_EVENT_BASE + 0x0010))
@@ -401,7 +593,7 @@ typedef struct {
 
 #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 */
@@ -409,6 +601,10 @@ typedef struct {
                                                                /**< 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 */
+#define BLUETOOTH_EVENT_MAP_BASE  ((int)(BLUETOOTH_EVENT_IPSP_BASE + 0x0020))
+                                                               /**< Base ID for MAP events */
 
 /**
  * Bluetooth event type
@@ -429,7 +625,7 @@ typedef enum {
        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_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 */
@@ -439,12 +635,17 @@ 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_SUPPORTED_PROFILE_TRUSTED,      /**< Bluetooth event Supported Profile Trusted */
+       BLUETOOTH_EVENT_PASSKEY_NOTIFICATION,       /**< Bluetooth event passkey notification */
 
        BLUETOOTH_EVENT_SERVICE_SEARCHED = BLUETOOTH_EVENT_SDP_BASE,
                                                    /**< Bluetooth event serice search base id */
@@ -478,11 +679,34 @@ typedef enum {
 
        BLUETOOTH_EVENT_OPC_CONNECTED = BLUETOOTH_EVENT_OPC_BASE,
                                                                /* OPC Connected event */
-       BLUETOOTH_EVENT_OPC_DISCONNECTED,               /* OPC Disonnected event */
+       BLUETOOTH_EVENT_OPC_DISCONNECTED,               /* OPC Disonnected event */
        BLUETOOTH_EVENT_OPC_TRANSFER_STARTED,   /* OPC Transfer started event */
        BLUETOOTH_EVENT_OPC_TRANSFER_PROGRESS,  /* OPC Transfer progress event */
        BLUETOOTH_EVENT_OPC_TRANSFER_COMPLETE,  /* OPC Transfer Complete event */
 
+       BLUETOOTH_EVENT_MAP_CONNECTED = BLUETOOTH_EVENT_MAP_BASE,
+       BLUETOOTH_EVENT_MAP_DISCONNECTED,
+       /*
+       BLUETOOTH_EVENT_MAP_SET_FOLDER_COMPLETE,
+       BLUETOOTH_EVENT_MAP_SET_FOLDER_INVALID_ARGUMENTS,
+       BLUETOOTH_EVENT_MAP_SET_FOLDER_FAILED,
+       BLUETOOTH_EVENT_MAP_UPDATE_INBOX_COMPLETE,
+       BLUETOOTH_EVENT_MAP_UPDATE_INBOX_FAILED,
+       */
+       BLUETOOTH_EVENT_MAP_LIST_FOLDERS_COMPLETE,
+       BLUETOOTH_EVENT_MAP_LIST_FOLDERS_INVALID_ARGUMENTS,
+       BLUETOOTH_EVENT_MAP_LIST_FOLDERS_FAILED,
+       BLUETOOTH_EVENT_MAP_LIST_MESSAGES_COMPLETE,
+       BLUETOOTH_EVENT_MAP_LIST_MESSAGES_INVALID_ARGUMENTS,
+       BLUETOOTH_EVENT_MAP_LIST_MESSAGES_FAILED,
+       BLUETOOTH_EVENT_MAP_PUSH_MESSAGE_COMPLETE,
+       BLUETOOTH_EVENT_MAP_PUSH_MESSAGE_INVALID_ARGUMENTS,
+       BLUETOOTH_EVENT_MAP_PUSH_MESSAGE_FAILED,
+       BLUETOOTH_EVENT_MAP_GET_MESSAGE_COMPLETE,
+       BLUETOOTH_EVENT_MAP_GET_MESSAGE_INVALID_ARGUMENTS,
+       BLUETOOTH_EVENT_MAP_GET_MESSAGE_FAILED,
+       BLUETOOTH_EVENT_MAP_LIST_FILTER_FIELD_COMPLETE,
+
        BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_AUTHORIZE = BLUETOOTH_EVENT_OBEX_SERVER_BASE,
                                                                /* Obex server authorize event*/
        BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_STARTED,   /* Obex Server transfer started event*/
@@ -504,7 +728,13 @@ typedef enum {
        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_ATT_MTU_CHANGED, /**<Attribute protocol MTU changed event */
        BLUETOOTH_EVENT_GATT_SERVER_CHARACTERISTIC_VALUE_CHANGED, /**<Gatt Char write callback event */
+       BLUETOOTH_EVENT_GATT_SERVER_READ_REQUESTED, /** <GATT Characteristic/Descriptor Read Request event */
+       BLUETOOTH_EVENT_GATT_SERVER_VALUE_CHANGED, /** <GATT Characteristic/Descriptor Value change event */
+       BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_STATE_CHANGED, /** <GATT Characteristic Notification change event */
+       BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_COMPLETED, /** <GATT Characteristic Notification or Indication completed event */
+       BLUETOOTH_EVENT_GATT_CLIENT_SERVICE_CHANGED, /** <GATT Client service change event */
 
        BLUETOOTH_EVENT_AG_CONNECTED = BLUETOOTH_EVENT_AUDIO_BASE, /**<AG service connected event*/
        BLUETOOTH_EVENT_AG_DISCONNECTED, /**<AG service disconnected event*/
@@ -514,6 +744,8 @@ 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*/
@@ -537,9 +769,18 @@ typedef enum {
        BLUETOOTH_EVENT_HF_VOICE_RECOGNITION_DISABLED,
        BLUETOOTH_EVENT_HF_VOLUME_SPEAKER,
        BLUETOOTH_EVENT_HF_VENDOR_DEP_CMD,
+       BLUETOOTH_EVENT_HF_CALLSETUP_INCOMING,
+       BLUETOOTH_EVENT_HF_CALL_FAILED_TO_DIAL,
+       BLUETOOTH_EVENT_HF_CALL_IDLE,
+       BLUETOOTH_EVENT_HF_CALLSETUP_DIALING,
+       BLUETOOTH_EVENT_HF_CALLSETUP_ALERTING,
+       BLUETOOTH_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED,
 
        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 */
@@ -550,7 +791,8 @@ typedef enum {
        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/disconnectd event*/
+       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*/
@@ -566,6 +808,20 @@ typedef enum {
        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_PXP_PROPERTY_CHANGED, /** Proximity property changed */
+       BLUETOOTH_EVENT_TDS_ACTIVATION_REQUESTED, /** TDS activation requested */
+       BLUETOOTH_EVENT_TDS_TRANSPORT_DATA_RECEIVED,  /** TDS Transport Data received */
+       BLUETOOTH_EVENT_TDS_ACTIVATION_RESULT,        /** TDS Activation Result */
+       BLUETOOTH_EVENT_TDS_CONTROL_POINT_ENABLED,    /** TDS CCCD enabled event */
+       BLUETOOTH_EVENT_TDS_ACTIVATION_INDICATION,    /** TDS Activation Indication from Provider */
+
+       BLUETOOTH_EVENT_OTP_SERVER_STATE_CHANGED,       /* OTP Server Status **/
 } bluetooth_event_type_t;
 
  /**
@@ -579,6 +835,7 @@ typedef enum {
        BLUETOOTH_DUN_PROFILE_UUID = ((unsigned short)0x1103),                  /**<DUN*/
        BLUETOOTH_OBEX_IR_MC_SYNC_SERVICE_UUID = ((unsigned short)0x1104),      /**<OBEX IR MC SYNC*/
        BLUETOOTH_OBEX_OBJECT_PUSH_SERVICE_UUID = ((unsigned short)0x1105),     /**<OPP*/
+       BLUETOOTH_OBEX_MESSAGE_ACCESS_SERVICE_UUID = ((unsigned short)0x1134),  /**<MAP*/
        BLUETOOTH_OBEX_FILE_TRANSFER_UUID = ((unsigned short)0x1106),           /**<FTP*/
        BLUETOOTH_IRMC_SYNC_COMMAND_UUID = ((unsigned short)0x1107),            /**<IRMC SYNC COMMAND*/
        BLUETOOTH_HS_PROFILE_UUID = ((unsigned short)0x1108),                   /**<HS*/
@@ -630,7 +887,7 @@ typedef enum {
        BLUETOOTH_GENERIC_FILE_TRANSFER_UUID = ((unsigned short)0x1202),/**<GENERIC FILE TRANSFER*/
        BLUETOOTH_GENERIC_AUDIO_UUID = ((unsigned short)0x1203),        /**<GENERIC AUDIO*/
        BLUETOOTH_GENERIC_TELEPHONY_UUID = ((unsigned short)0x1204),    /**<GENERIC TELEPHONY*/
-       BLUETOOTH_VIDEO_SOURCE_UUID = ((unsigned short)0x1303),         /**<VEDIO SOURCE*/
+       BLUETOOTH_VIDEO_SOURCE_UUID = ((unsigned short)0x1303), /**<VEDIO SOURCE*/
        BLUETOOTH_VIDEO_SINK_UUID = ((unsigned short)0x1304),           /**<VEDIO SINK*/
        BLUETOOTH_VIDEO_DISTRIBUTION_UUID = ((unsigned short)0x1305),   /**<VEDIO DISTRIBUTION*/
        BLUETOOTH_HDP_UUID = ((unsigned short)0x1400),                  /**<HDP*/
@@ -815,6 +1072,37 @@ typedef enum {
 } 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 {
@@ -824,10 +1112,11 @@ 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 */
+       gboolean is_alias_set;          /** is device alias set flag**/
        bluetooth_manufacturer_data_t manufacturer_data;        /**< manafacturer specific class */
 } bluetooth_device_info_t;
 
@@ -847,6 +1136,28 @@ typedef struct {
        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;
+
+typedef struct {
+       bluetooth_device_address_t device_address;      /**< device address */
+       unsigned int mtu;       /** < MTU set for the ATT connection */
+       unsigned int status; /** < status of the MTU exchange */
+} bluetooth_le_att_mtu_info_t;
+
 /**
  * structure to hold the paired device information
  */
@@ -867,6 +1178,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 {
@@ -915,13 +1246,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
+} bt_hid_header_type_t;
+
+/**
+ * HID Param type
+ */
+typedef enum {
+       PTYPE_DATA_RTYPE_INPUT,
+       PTYPE_DATA_RTYPE_OUTPUT
+} bt_hid_param_type_t;
+
+/**
+ * Stucture to hid receive data
+ */
+typedef struct {
+       const char *address;
+       bt_hid_header_type_t type;
+               /**< Header type containing */
+       bt_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];
@@ -946,6 +1313,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
  */
@@ -953,7 +1327,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
@@ -961,7 +1335,7 @@ typedef enum {
 typedef enum {
        HDP_ROLE_SOURCE = 0x0,
        HDP_ROLE_SINK
-}bt_hdp_role_type_t;
+} bt_hdp_role_type_t;
 
 
 /**
@@ -995,10 +1369,20 @@ typedef struct {
  * Stucture to OPP client transfer information
  */
 typedef struct {
+       char *device_addr;
        char *filename;
        unsigned long size;
        int percentage;
-}bt_opc_transfer_info_t;
+} bt_opc_transfer_info_t;
+
+/* TODO: MAP client structures, see above */
+/**
+ * Stucture to Map filter fields
+ */
+typedef struct {
+       char **fields;
+       int size;
+} bt_map_list_filter_fields_info_t;
 
 /* Obex Server transfer type */
 #define TRANSFER_PUT "PUT"
@@ -1009,6 +1393,8 @@ typedef struct {
 typedef struct {
        char *filename;
        int length;
+       char *address;
+       char *name;
 } bt_obex_server_authorize_into_t;
 
 /**
@@ -1031,9 +1417,21 @@ typedef struct {
        unsigned long file_size;
        int percentage;
        bt_obex_server_type_t server_type;
+       char *address;
+       unsigned char *contact_auth_info;
 } bt_obex_server_transfer_info_t;
 
 /**
+ * Stucture to OPP/FTP server connection/disconnection information
+ */
+typedef struct {
+       char *address;
+       char *device_name;
+       int transfer_id;
+} bt_obex_server_connection_info_t;
+
+
+/**
  * Stucture to OOB data
  */
 
@@ -1042,6 +1440,11 @@ typedef struct {
        unsigned char randomizer[BLUETOOTH_OOB_DATA_LENGTH];
        unsigned int hash_len;
        unsigned int randomizer_len;
+
+       unsigned char hash256[BLUETOOTH_OOB_DATA_LENGTH];
+       unsigned char randomizer256[BLUETOOTH_OOB_DATA_LENGTH];
+       unsigned int hash256_len;
+       unsigned int randomizer256_len;
 } bt_oob_data_t;
 
 /**
@@ -1061,7 +1464,7 @@ typedef struct {
        char *uuid;
        char *handle;
        gboolean primary;
-       bt_gatt_handle_info_t handle_info;
+       bt_gatt_handle_info_t include_handles;
        bt_gatt_handle_info_t char_handle;
 } bt_gatt_service_property_t;
 
@@ -1124,6 +1527,55 @@ typedef struct {
        guint32 val_len;
 } bt_gatt_char_value_t;
 
+/**
+ * Structure to GATT Read Request
+ */
+typedef struct {
+       char *att_handle;
+       char *service_handle;
+       char *address;
+       guint16 offset;
+       guint req_id;
+} bt_gatt_read_req_t;
+
+/**
+ * Structure to GATT Value change
+ */
+typedef struct {
+       char *att_handle;
+       char *service_handle;
+       char *address;
+       guint req_id;
+       gboolean response_needed;
+       guint16 offset;
+       guint8 *att_value;
+       guint32 val_len;
+} bt_gatt_value_change_t;
+
+typedef struct {
+       bluetooth_device_address_t device_addr;
+       char *svc_path;
+       bluetooth_gatt_service_change_type_t change_type;
+} bt_gatt_service_change_t;
+
+/**
+ * Structure to GATT characteristc Notification change
+ */
+typedef struct {
+       char *att_handle;
+       char *service_handle;
+       gboolean att_notify;
+} bt_gatt_char_notify_change_t;
+
+/**
+ * Structure to Indication confirmation
+ */
+typedef struct {
+       char *att_handle;
+       char *service_handle;
+       char *address;
+       gboolean complete;
+} bt_gatt_indicate_confirm_t;
 
 /**
  * Structure to RSSI Signal Strength Alert
@@ -1166,6 +1618,17 @@ typedef struct {
        int high_threshold;
 } bt_rssi_threshold_t;
 
+
+/**
+ * Structure for Suppoted Profiles and Trusted Profiles
+ */
+typedef struct {
+       char *address;
+       int profile;
+       gboolean supported;
+       gboolean trusted;
+} bt_supported_profile_trusted_t;
+
 /**
  * Structure for PBAP Folder Parameters
  */
@@ -1286,63 +1749,300 @@ typedef struct {
 } bt_hf_call_list_s;
 
 /**
- * Callback pointer type
+ * Profile types
  */
-typedef void (*bluetooth_cb_func_ptr) (int, bluetooth_event_param_t *, void *);
+typedef enum {
+       TRUSTED_PROFILE_PBAP = 1,
+       TRUSTED_PROFILE_MAP,
+       TRUSTED_PROFILE_SAP,
+       TRUSTED_PROFILE_ALL = 0xFFFFFFFF,
+} bluetooth_trusted_profile_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;
+ * Restricted Profile types
+ */
+typedef enum {
+       RESTRICTED_PROFILE_HFP_HS = 1,
+       RESTRICTED_PROFILE_A2DP,
+} bluetooth_restricted_profile_t;
 
-       switch(event)
-       {
-               // Code for each event
-               default:
-                       g_main_loop_quit(main_loop);
-                       break;
-       }
-}
+/**
+ * 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;
 
-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 for proximity property change params
  */
-int bluetooth_register_callback(bluetooth_cb_func_ptr callback_ptr, void *user_data);
+typedef struct {
+       bluetooth_device_address_t device_address;
+       int role;
+       int service_type;
+       int alert_lvl;
+} bt_pxp_property_changed_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_connection_info_t;
+
+typedef struct {
+       char* session_path;
+       char* remote_address;
+} bt_map_client_session_info_s;
+
+typedef char* bt_map_client_message_object_t;
+
+typedef struct {
+       int16_t offset;
+       int16_t max_count;
+} bt_map_client_list_folders_filter_t;
+
+typedef struct {
+       int16_t offset;
+       int16_t max_count;
+       int8_t subject_length;
+       char *fields;
+       char *types;
+       char *period_begin;
+       char *period_end;
+       int is_read;
+       char *recipient;
+       char *sender;
+       int is_priority;
+} bt_map_client_list_messages_filter_t;
+
+typedef struct {
+       bt_map_client_message_object_t message_object;
+       char *folder;
+       char *subject;
+       char *timestamp;
+       char *sender;
+       char *sender_address;
+       char *reply_to;
+       char *recipient;
+       char *recipient_address;
+       char *type;
+       int64_t size;
+       int is_text;
+       char *status;
+       int64_t attachment_size;
+       int is_priority;
+       int is_read;
+       int is_sent;
+       int is_protected;
+} bt_map_client_message_item_t;
+
+typedef struct {
+       int is_transparent;
+       int is_retry;
+       char *charset;
+} bt_map_client_push_message_args_t;
+
+typedef struct {
+       char *folder;
+       char *subject;
+       char *timestamp;
+       char *sender;
+       char *sender_address;
+       char *reply_to;
+       char *recipient;
+       char *recipient_address;
+       char *type;
+       int64_t size;
+       char *status;
+       int is_priority;
+       int is_read;
+       int is_deleted;
+       int is_sent;
+       int is_protected;
+} bt_map_client_message_t;
+
+typedef struct {
+       char **names; // holding %size null-terminated folder names
+       int64_t size;
+} bt_map_client_folders_s;
+
+typedef struct {
+       bt_map_client_message_item_t *message_items;
+       int64_t size;
+} bt_map_client_message_items_s;
+
+typedef struct {
+       const char* target_file;
+       void* user_data;
+} bt_get_message_callback_data;
+
+/**
+ * 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;
+       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
+ */
+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)
@@ -1794,6 +2494,125 @@ 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_set_profile_trusted(const bluetooth_device_address_t *device_address, int profile, int trust)
+ * @brief Sets a profile trusted for a device
+ *
+ * This function is used to Set a profile as trusted for a device
+ *
+ * This function is a synchronous call.
+ *
+ * @param[in]  device_address  a device address of remote bluetooth device
+ * @param[in]  profile profile which is to be set as trusted[0-PBAP, 1-MAP, 2-SAP]
+ * @param[in]  trust   to set as trusted or untrusted[1-trusted 0-untrusted]
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
+ *             BLUETOOTH_ERROR_INVALID_PARAM - Bluetooth name parameter is incorrect \n
+ *             BLUETOOTH_ERROR_INTERNAL - The dbus method call is fail \n
+ *
+ * @remark      None
+ */
+int bluetooth_set_profile_trusted(
+               const bluetooth_device_address_t *device_address,
+               int profile, int trust);
+
+/**
+ * @fn int bluetooth_get_profile_trusted(const bluetooth_device_address_t *device_address, int profile, int *trust)
+ * @brief Gets a profile is trusted for a device
+ *
+ * This function is used to Get a profile is trusted or not for a device
+ *
+ * This function is a synchronous call.
+ *
+ * @param[in]  device_address  a device address of remote bluetooth device
+ * @param[in]  profile profile whose trust status is needed[0-PBAP, 1-MAP, 2-SAP]
+ * @param[out] trust   profile is set as trusted or untrusted[1-trusted 0-untrusted]
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
+ *             BLUETOOTH_ERROR_INVALID_PARAM - Bluetooth name parameter is incorrect \n
+ *             BLUETOOTH_ERROR_INTERNAL - The dbus method call is fail \n
+ *
+ * @remark      None
+ */
+int bluetooth_get_profile_trusted(
+               const bluetooth_device_address_t *device_address,
+               int profile, int *trust);
+
+/**
+ * @fn int bluetooth_set_profile_restricted(const bluetooth_device_address_t *device_address, int profile, int restricted)
+ * @brief Sets a profile restricted connection for a device
+ *
+ * This function is used to Set a profile as restricted for a device
+ *
+ * This function is a synchronous call.
+ *
+ * @param[in]  device_address  a device address of remote bluetooth device
+ * @param[in]  profile profile which is to be set as restricted[1-HFP_HS, 2-A2DP]
+ * @param[in]  restricted      to set as restricted or not[1-restricted 0-permitted]
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
+ *             BLUETOOTH_ERROR_INVALID_PARAM - Bluetooth name parameter is incorrect \n
+ *             BLUETOOTH_ERROR_INTERNAL - The dbus method call is fail \n
+ *
+ * @remark      None
+ */
+int bluetooth_set_profile_restricted(
+               const bluetooth_device_address_t *device_address,
+               int profile, int restricted);
+
+/**
+ * @fn int bluetooth_get_profile_restricted(const bluetooth_device_address_t *device_address, int profile, int *restricted)
+ * @brief Gets a restricted connection state
+ *
+ * This function is used to Get a profile is restricted or not for a device
+ *
+ * This function is a synchronous call.
+ *
+ * @param[in]  device_address  a device address of remote bluetooth device
+ * @param[in]  profile profile whose restricted status is needed[1-HFP_HS, 2-A2DP]
+ * @param[out] restricted      profile is set as restricted or not[1-restricted 0-permitted]
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *             BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter is not enabled \n
+ *             BLUETOOTH_ERROR_INVALID_PARAM - Bluetooth name parameter is incorrect \n
+ *             BLUETOOTH_ERROR_INTERNAL - The dbus method call is fail \n
+ *
+ * @remark      None
+ */
+int bluetooth_get_profile_restricted(
+               const bluetooth_device_address_t *device_address,
+               int profile, int *restricted);
+
+/**
  * @fn int bluetooth_get_discoverable_mode(bluetooth_discoverable_mode_t *discoverable_mode_ptr)
  * @brief Get the visibility mode
  *
@@ -2303,6 +3122,97 @@ ret = bluetooth_is_le_discovering ();
 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);
+
+gboolean bluetooth_is_scan_filter_supported(void);
+
+/**
+ * @fn int bluetooth_force_hcidump(int timeout)
+ * @brief Enable /disable force-hcidump
+ *
+ * This function control force-hcidump.
+ *
+ * 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
+ *
+ * @param[in]   start  To enable or disable force-hcidump[TRUE / FALSE]
+ *
+ *
+ * @remark      None
+ */
+int bluetooth_force_hcidump(int timeout);
+
+/**
+ * @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
@@ -2630,6 +3540,9 @@ void bt_get_bonded_devices(void)
  */
 int bluetooth_get_bonded_device_list(GPtrArray **dev_list);
 
+int bluetooth_get_profile_connected_device_list(
+               const char *profile_uuid, GPtrArray **addr_list);
+
 /**
  * @fn int bluetooth_get_bonded_device(const bluetooth_device_address_t *device_address,
  *                                     bluetooth_device_info_t *dev_info)
@@ -2682,6 +3595,32 @@ void bt_get_bonded_device(void)
 int bluetooth_get_bonded_device(const bluetooth_device_address_t *device_address,
                                        bluetooth_device_info_t *dev_info);
 
+
+/**
+ * @fn int bluetooth_get_is_alias_set(const bluetooth_device_address_t *device_address,
+ *                                     gboolean *is_alias_set)
+ * @brief Get is_alias_set property of device
+ *
+ * This API gets is_alias_set property of a bonded device.
+ *
+ * This function is a synchronous call.
+ * Information for is_alias_set property can be obtained only when result code is BLUETOOTH_ERROR_NONE.
+ * If not,there is no valid information in the is_alias_set.
+ *
+ * @return     BLUETOOTH_ERROR_NONE - Success \n
+ *                     BLUETOOTH_ERROR_NOT_SUPPORT - Opreation not supported \n
+ * @remark None
+ @code
+       int ret = 0;
+       gboolean alias_set;
+       bluetooth_device_address_t device_address = {{0x00,0x1C,0x43,0x2B,0x1A,0xE5}};
+
+       ret = bluetooth_get_is_alias_set(&device_address, &alias_set);
+ @endcode
+ */
+int bluetooth_get_is_alias_set(const bluetooth_device_address_t *device_address,
+                               gboolean *is_alias_set);
+
 /**
  * @fn int bluetooth_set_alias(const bluetooth_device_address_t *device_address, const char *alias)
  * @brief set alias for bonded device
@@ -2785,6 +3724,32 @@ 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_passkey_reply(char *passkey, gboolean reply)
+ *
+ * @brief Receives Legacy Passkey\pin with following authentication response types
+ *
+ * @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
@@ -2876,6 +3841,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
  *
@@ -2922,6 +3920,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
  *
@@ -2997,6 +4041,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
  *
@@ -3059,9 +4153,9 @@ int bluetooth_rfcomm_listen(int socket_fd, int max_pending_connection);
  *
  * @exception   None
  * @remark       None
- * @see          bluetooth_rfcomm_reject_connection
+ * @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()
@@ -3077,7 +4171,7 @@ int bluetooth_rfcomm_accept_connection(int server_fd, int *client_fd);
  *
  * @exception   None
  * @remark       None
- * @see          bluetooth_rfcomm_accept_connection
+ * @see        bluetooth_rfcomm_accept_connection
  */
 int bluetooth_rfcomm_reject_connection(int server_fd);
 
@@ -3256,8 +4350,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(bluetooth_device_address_t *device_address, gboolean *connected);
-int bluetooth_rfcomm_server_is_connected(bluetooth_device_address_t *device_address, gboolean *connected);
+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)
@@ -3389,7 +4483,7 @@ int bluetooth_network_server_disconnect(const bluetooth_device_address_t *device
  *                             should be HDP_QOS_ANY.
  * @param[out]  app_handle    The application handler against corresponding service
  * @remark       None
- * @see           bluetooth_hdp_deactivate
+ * @see        bluetooth_hdp_deactivate
  */
 int bluetooth_hdp_activate(unsigned short  data_type,
                                bt_hdp_role_type_t role,
@@ -3409,7 +4503,7 @@ int bluetooth_hdp_activate(unsigned short  data_type,
  * @exception   None
  * @param[in]  app_handle   The application handler against corresponding service
  * @remark       None
- * @see           bluetooth_hdp_deactivate
+ * @see        bluetooth_hdp_deactivate
  */
 int bluetooth_hdp_deactivate(const char *app_handle);
 
@@ -3431,7 +4525,7 @@ int bluetooth_hdp_deactivate(const char *app_handle);
  * @param[in]  buffer   The pdu buffer.
  * @param[in]  size   Size of the buffer.
  * @remark       None
- * @see           bluetooth_hdp_connect
+ * @see        bluetooth_hdp_connect
  */
 int bluetooth_hdp_send_data(unsigned int channel_id,
                                const char *buffer, unsigned int size);
@@ -3457,7 +4551,7 @@ int bluetooth_hdp_send_data(unsigned int channel_id,
  * @param[in]  device_address   The remote device Bd address.
  *
  * @remark       None
- * @see           bluetooth_hdp_disconnect
+ * @see        bluetooth_hdp_disconnect
  */
 int bluetooth_hdp_connect(const char *app_handle,
                        bt_hdp_qos_type_t channel_type,
@@ -3481,7 +4575,7 @@ int bluetooth_hdp_connect(const char *app_handle,
  * @param[in]  device_address   The remote device Bd address.
  *
  * @remark       None
- * @see           bluetooth_hdp_connect
+ * @see        bluetooth_hdp_connect
  */
 int bluetooth_hdp_disconnect(unsigned int channel_id,
                        const bluetooth_device_address_t  *device_address);
@@ -3503,7 +4597,7 @@ int bluetooth_hdp_disconnect(unsigned int channel_id,
  * @exception   None
  *
  * @remark       None
- * @see          bluetooth_opc_deinit
+ * @see        bluetooth_opc_deinit
  */
 int bluetooth_opc_init(void);
 
@@ -3521,10 +4615,10 @@ int bluetooth_opc_init(void);
  * @exception   None
  *
  * @remark       None
- * @see          bluetooth_opc_init
+ * @see        bluetooth_opc_init
  */
 
- int bluetooth_opc_deinit(void);
+int bluetooth_opc_deinit(void);
 
 /**
  * @fn int bluetooth_opc_push_files(bluetooth_device_address_t *remote_address,
@@ -3547,11 +4641,11 @@ int bluetooth_opc_init(void);
  * @param[in]  file_name_array  Array of filepaths to be sent.
  *
  * @remark       None
- * @see         bluetooth_opc_cancel_push
+ * @see        bluetooth_opc_cancel_push
  */
 
 int bluetooth_opc_push_files(bluetooth_device_address_t *remote_address,
-                               char **file_name_array);
+                               char **file_name_array);
 
 /**
  * @fn int bluetooth_opc_cancel_push(void)
@@ -3568,7 +4662,7 @@ int bluetooth_opc_push_files(bluetooth_device_address_t *remote_address,
  * @exception   None
  *
  * @remark       None
- * @see          bluetooth_opc_push_files
+ * @see        bluetooth_opc_push_files
  */
 
 int bluetooth_opc_cancel_push(void);
@@ -3585,7 +4679,7 @@ int bluetooth_opc_cancel_push(void);
  * @exception   None
  *
  * @remark       None
- * @see         None
+ * @see        None
  */
 
 gboolean bluetooth_opc_session_is_exist(void);
@@ -3609,6 +4703,27 @@ gboolean bluetooth_opc_session_is_exist(void);
 int bluetooth_opc_is_sending(gboolean *is_sending);
 
 /**
+ * @fn int bluetooth_opp_get_transfer_progress(bluetooth_opp_transfer_type_t transfer_type,
+               int transfer_id, unsigned char *progress)
+ * @brief Gets the percentage progress for ongoing transfers.
+ *
+ * This function is a synchronous call.
+ *
+ * @return   BLUETOOTH_ERROR_NONE  - Success \n
+ *               BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Not enabled \n
+ *               BLUETOOTH_ERROR_NOT_FOUND - Not found \n
+ *
+ * @exception   None
+ * @param[in] transfer_type    Transfer Type: (@c BLUETOOTH_TRANSFER_INBOUND = receiving , @c  BLUETOOTH_TRANSFER_OUTBOUND = sending)
+ * @param[in] transfer_id      Transfer ID
+ * @param[out] progress                Percentage Progress
+ * @remark       None
+ * @see            None
+ */
+int bluetooth_opp_get_transfer_progress(bluetooth_opp_transfer_type_t transfer_type,
+               int transfer_id, unsigned char *progress);
+
+/**
  * @fn int bluetooth_obex_server_init(const char *dst_path)
  * @brief Initialize OPP and FTP server.
  *
@@ -3624,7 +4739,7 @@ int bluetooth_opc_is_sending(gboolean *is_sending);
  * @exception   None
  * @param[in]  dst_path   OPS destination file path.
  * @remark       None
- * @see          bluetooth_obex_server_deinit
+ * @see        bluetooth_obex_server_deinit
  */
 int bluetooth_obex_server_init(const char *dst_path);
 
@@ -3643,7 +4758,7 @@ int bluetooth_obex_server_init(const char *dst_path);
  * @exception   None
  *
  * @remark       None
- * @see          bluetooth_obex_server_init
+ * @see        bluetooth_obex_server_init
  */
 int bluetooth_obex_server_deinit(void);
 
@@ -3682,7 +4797,7 @@ gboolean bluetooth_obex_server_is_activated(void);
  * @exception   None
  * @param[in]  dst_path   OPS destination file path.
  * @remark       None
- * @see          bluetooth_obex_server_deinit_without_agent
+ * @see        bluetooth_obex_server_deinit_without_agent
  */
 int bluetooth_obex_server_init_without_agent(const char *dst_path);
 
@@ -3701,7 +4816,7 @@ int bluetooth_obex_server_init_without_agent(const char *dst_path);
  * @exception   None
  *
  * @remark       None
- * @see          bluetooth_obex_server_init_without_agent
+ * @see        bluetooth_obex_server_init_without_agent
  */
 int bluetooth_obex_server_deinit_without_agent(void);
 
@@ -3719,7 +4834,7 @@ int bluetooth_obex_server_deinit_without_agent(void);
  *
  * @exception   None
  * @remark       None
- * @see          bluetooth_obex_server_reject_authorize
+ * @see        bluetooth_obex_server_reject_authorize
  */
 int bluetooth_obex_server_accept_connection(void);
 
@@ -3737,7 +4852,7 @@ int bluetooth_obex_server_accept_connection(void);
  *
  * @exception   None
  * @remark       None
- * @see          bluetooth_obex_server_reject_authorize
+ * @see        bluetooth_obex_server_reject_authorize
  */
 int bluetooth_obex_server_reject_connection(void);
 
@@ -3759,7 +4874,7 @@ int bluetooth_obex_server_reject_connection(void);
  * @param[in]  filename   Authorized filename.
 
  * @remark       None
- * @see          bluetooth_obex_server_reject_authorize
+ * @see        bluetooth_obex_server_reject_authorize
  */
 
 int bluetooth_obex_server_accept_authorize(const char *filename);
@@ -3779,7 +4894,7 @@ int bluetooth_obex_server_accept_authorize(const char *filename);
  * @exception   None
 
  * @remark       None
- * @see          bluetooth_obex_server_accept_authorize
+ * @see        bluetooth_obex_server_accept_authorize
  */
 
 int bluetooth_obex_server_reject_authorize(void);
@@ -3800,7 +4915,7 @@ int bluetooth_obex_server_reject_authorize(void);
  * @param[in]  dst_path   OPS destination file path.
 
  * @remark       None
- * @see         None
+ * @see        None
  */
 
 int bluetooth_obex_server_set_destination_path(const char *dst_path);
@@ -3823,7 +4938,7 @@ int bluetooth_obex_server_set_destination_path(const char *dst_path);
  * @param[in]   root   FTS root folder.
 
  * @remark       None
- * @see         None
+ * @see        None
  */
 
 int bluetooth_obex_server_set_root(const char *root);
@@ -3848,7 +4963,7 @@ int bluetooth_obex_server_set_root(const char *root);
  * @param[in] transfer_id transfer ID
 
  * @remark       None
- * @see         None
+ * @see        None
  */
 int bluetooth_obex_server_cancel_transfer(int transfer_id);
 
@@ -3872,7 +4987,7 @@ int bluetooth_obex_server_cancel_transfer(int transfer_id);
  * @exception None
  *
  * @remark       None
- * @see         None
+ * @see        None
  */
 int bluetooth_obex_server_cancel_all_transfers(void);
 
@@ -3891,12 +5006,76 @@ int bluetooth_obex_server_cancel_all_transfers(void);
  * @param[out] is_receiving The receiving status: (@c TRUE = in receiving , @c  false = not in receiving)
  *
  * @remark       None
- * @see            None
+ * @see        None
  */
 int bluetooth_obex_server_is_receiving(gboolean *is_receiving);
 
 
 /**
+ * @fn int bluetooth_map_client_init(void)
+ * @brief Initialize MAP client.
+ *
+ * This function is a synchronous call.
+ * No event corresponding to this api
+ *
+ * @return   BLUETOOTH_ERROR_NONE  - Success \n
+ *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
+ *              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *              BLUETOOTH_ERROR_NO_RESOURCES - Not resource available \n
+ *              BLUETOOTH_ERROR_ACCESS_DENIED -Memory allocation failed \n
+ *
+ * @exception None
+ *
+ * @remark None
+ * @see bluetooth_map_client_deinit
+ */
+int bluetooth_map_client_init(void);
+
+int bluetooth_map_client_deinit(void);
+
+int bluetooth_map_client_create_session(bt_map_client_session_info_s *session);
+
+int bluetooth_map_client_destroy_session(bt_map_client_session_info_s *session);
+
+int bluetooth_map_client_set_folder(bt_map_client_session_info_s *session, const char *name);
+
+int bluetooth_map_client_list_folders(bt_map_client_session_info_s *session,
+                       bt_map_client_list_folders_filter_t *filter);
+
+/**
+ * @fn int bluetooth_map_client_list_filter_fields(bt_map_session_info_s* session)
+ * @brief Return all available fields that can be used in Fields filter.
+ *
+ * This function is a asynchronous call.
+ *
+ * @return   BLUETOOTH_ERROR_NONE  - Success \n
+ *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
+ *              BLUETOOTH_ERROR_INTERNAL - Update inbox failed \n
+ *
+ * @exception   None
+ * @param[in]  session   Information about session.
+ * @remark       None
+ */
+int bluetooth_map_client_list_filter_fields(bt_map_client_session_info_s *session);
+
+int bluetooth_map_client_list_messages(bt_map_client_session_info_s *session,
+                       const char *folder,
+                       bt_map_client_list_messages_filter_t *filter);
+
+int bluetooth_map_client_update_inbox(bt_map_client_session_info_s *session);
+
+int bluetooth_map_client_push_message(bt_map_client_session_info_s *session,
+                       const char *source_file,
+                       const char *folder,
+                       bt_map_client_push_message_args_t *args);
+
+int bluetooth_map_client_get_message(bt_map_client_session_info_s *session,
+                       const bt_map_client_message_object_t message_object,
+                       const char *target_file,
+                       bool attachment);
+
+
+/**
  * @fn int bluetooth_oob_read_local_data(bt_oob_data_t *local_oob_data)
  * @brief Read the local Hash and Randmizer.
  *
@@ -3910,7 +5089,7 @@ int bluetooth_obex_server_is_receiving(gboolean *is_receiving);
  * @param[out] local_oob_data - Pointer to the local OOB data
  *
  * @remark       None
- * @see         None
+ * @see        None
  */
 
 int bluetooth_oob_read_local_data(bt_oob_data_t *local_oob_data);
@@ -3919,6 +5098,7 @@ int bluetooth_oob_read_local_data(bt_oob_data_t *local_oob_data);
 /**
  * @fn int bluetooth_oob_add_remote_data(
  *                     const bluetooth_device_address_t *remote_device_address,
+ *                     bluetooth_bdaddr_type_e address_type,
  *                     bt_oob_data_t *oob_data)
  * @brief Add/updated the remote device  Hash and Randmizer.
  *
@@ -3930,6 +5110,7 @@ int bluetooth_oob_read_local_data(bt_oob_data_t *local_oob_data);
  *
  * @exception  None
  * @param[in] remote_device_address - Remote device address
+  *          address_type - bdaddr type
  *           remote_oob_data - Ponter to Hash and Randomizer oob data structure
  *
  * @remark     None
@@ -3938,6 +5119,7 @@ int bluetooth_oob_read_local_data(bt_oob_data_t *local_oob_data);
 
 int bluetooth_oob_add_remote_data(
                   const bluetooth_device_address_t *remote_device_address,
+                  bluetooth_bdaddr_type_e address_type,
                   bt_oob_data_t *remote_oob_data);
 
 
@@ -3956,7 +5138,7 @@ int bluetooth_oob_add_remote_data(
  * @param[in] remote_device_address - Remote device address
  *
  * @remark       None
- * @see         None
+ * @see        None
  */
 
 int bluetooth_oob_remove_remote_data(
@@ -4007,6 +5189,9 @@ int bluetooth_gatt_get_primary_services(const bluetooth_device_address_t *addres
  */
 int bluetooth_gatt_discover_service_characteristics(const char *service_handle);
 
+int bluetooth_gatt_set_service_change_watcher(
+               const bluetooth_device_address_t *address, gboolean enable);
+
 /**
  * @fn int bluetooth_gatt_get_service_property(const char *service_handle,
  *                                             bt_gatt_service_property_t *service);
@@ -4048,7 +5233,7 @@ int bluetooth_gatt_get_service_property(const char *service_handle,
  * @param[in]  service_handle - Handle for remote service.
  *
  * @remark     None
- * @see        None
+ * @see        None
  */
 int bluetooth_gatt_watch_characteristics(const char *service_handle);
 
@@ -4147,6 +5332,33 @@ 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)
  *
@@ -4212,7 +5424,7 @@ int bluetooth_gatt_read_characteristic_value(const char *char_handle);
  * @remark     None
  * @see                None
  */
- int bluetooth_gatt_get_service_from_uuid(bluetooth_device_address_t *address,
+int bluetooth_gatt_get_service_from_uuid(bluetooth_device_address_t *address,
                                        const char *service_uuid,
                                        bt_gatt_service_property_t *service);
 
@@ -4295,7 +5507,7 @@ int bluetooth_gatt_free_service_property(bt_gatt_service_property_t *svc_pty);
  * @remark     None
  * @see                bluetooth_gatt_get_characteristics_property()
  */
- int bluetooth_gatt_free_char_property(bt_gatt_char_property_t *char_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);
@@ -4314,12 +5526,11 @@ int bluetooth_gatt_free_service_property(bt_gatt_service_property_t *svc_pty);
  * @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_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_connect_le(const bluetooth_device_address_t *device_address, gboolean auto_connect);
 
- int bluetooth_disconnect_le(const bluetooth_device_address_t *device_address);
+int bluetooth_disconnect_le(const bluetooth_device_address_t *device_address);
 
  /**
  * @fn int bluetooth_gatt_discover_characteristic_descriptor(const char *characteristic_handle);
@@ -4356,7 +5567,7 @@ int bluetooth_gatt_discover_characteristic_descriptor(const char *characteristic
  * @remark     None
  * @see        None
  */
- int bluetooth_gatt_read_descriptor_value(const char *desc_handle);
+int bluetooth_gatt_read_descriptor_value(const char *desc_handle);
 
 /**
  * @fn int bluetooth_gatt_write_descriptor_value(const char *desc_handle,
@@ -4379,7 +5590,7 @@ int bluetooth_gatt_discover_characteristic_descriptor(const char *characteristic
  * @remark     None
  * @see        None
  */
- int bluetooth_gatt_write_descriptor_value(const char *desc_handle,
+int bluetooth_gatt_write_descriptor_value(const char *desc_handle,
                        const guint8 *value, int length);
 
 /* @fn int bluetooth_gatt_init(void)
@@ -4388,9 +5599,9 @@ int bluetooth_gatt_discover_characteristic_descriptor(const char *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
+*      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
@@ -4404,9 +5615,9 @@ int bluetooth_gatt_init(void);
 *
 * 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
+*      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
@@ -4437,7 +5648,8 @@ int bluetooth_gatt_add_service(const char *svc_uuid,
 
 /* @fn int bluetooth_gatt_add_new_characteristic(
                        const char *svc_path, const char *char_uuid,
-                       bt_gatt_characteristic_property_t *properties,
+                       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.
@@ -4458,6 +5670,7 @@ int bluetooth_gatt_add_service(const char *svc_uuid,
 */
 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);
 
@@ -4484,9 +5697,9 @@ int bluetooth_gatt_set_characteristic_value(
                        const char *characteristic, const char *char_value,
                        int value_length);
 
-/* @fn int bluetooth_gatt_add_descriptor(const char *desc_uuid,
-                       const char *desc_value, int value_length,
-                       const char *permissions, const char *char_path,
+/* @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.
@@ -4498,19 +5711,21 @@ int bluetooth_gatt_set_characteristic_value(
 *       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]  char_path        characteristics object path of the exported character.
+* @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,
+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(
@@ -4528,8 +5743,8 @@ int bluetooth_gatt_add_descriptor(const char *char_path,
 *
 * @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.
+* @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()
@@ -4560,7 +5775,7 @@ 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.
+* @brief Registers the given service path with the library.
 *
 * This function is a synchronous call.
 *
@@ -4576,9 +5791,32 @@ int bluetooth_gatt_get_service(const char *svc_uuid);
 * @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.
@@ -4601,9 +5839,10 @@ int bluetooth_gatt_register_service(const char *svc_path);
 */
 int bluetooth_gatt_unregister_service(const char *svc_path);
 
-/* @fn int bluetooth_gatt_delete_services(void)
+/* @fn int bluetooth_gatt_unregister_application(void)
 *
-* @brief deletes (unregisters) all services from the gatt server database..
+* @brief Removes(unregister) the application with the bluez gatt server,
+*        and deletes all the service registered.
 *
 * This function is a synchronous call.
 *
@@ -4615,17 +5854,19 @@ int bluetooth_gatt_unregister_service(const char *svc_path);
 * @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()
+* @see bluetooth_gatt_register_service()
+* @see  bluetooth_gatt_unregister_service()
 */
-int bluetooth_gatt_delete_services(void);
+int bluetooth_gatt_unregister_application(void);
 
-/* @fn int bluetooth_gatt_update_characteristic(void)
+/* @fn int bluetooth_gatt_send_response(int request_id,
+*                              int offset, char *value, int value_length)
 *
-* @brief updates the given characteristic with a new value
+* @brief Updates the attribute value in local attribute list.
 *
 * This function is a synchronous call.
 *
@@ -4635,49 +5876,120 @@ int bluetooth_gatt_delete_services(void);
 *       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()
-* @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(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(gboolean enable);
+int bluetooth_gatt_send_response(int request_id, guint req_type,
+                               int resp_state, int offset, char *value, int value_length);
 
-/**
- * @fn int bluetooth_set_custom_advertising(gboolean enable, float interval_min, float interval_max,
- *                                     guint8 filter_policy);
- *
- * @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
- *
+/* @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
@@ -4693,7 +6005,7 @@ int bluetooth_set_advertising(gboolean enable);
  * @remark     None
  * @see                bluetooth_set_advertising_data
  */
-int bluetooth_set_custom_advertising(gboolean enable,
+int bluetooth_set_custom_advertising(int handle, gboolean enable,
                                        bluetooth_advertising_params_t *params);
 
 /**
@@ -4724,7 +6036,7 @@ ret = bluetooth_get_advertising_data(&value, &length);
 int bluetooth_get_advertising_data(bluetooth_advertising_data_t *value, int *length);
 
 /**
- * @fn int bluetooth_set_advertising_data(const 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
  *
@@ -4742,7 +6054,23 @@ int bluetooth_get_advertising_data(bluetooth_advertising_data_t *value, int *len
  *
  * @remark     None
  */
-int bluetooth_set_advertising_data(const bluetooth_advertising_data_t *value, int length);
+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);
@@ -4772,7 +6100,7 @@ ret = bluetooth_get_scan_response_data(&value, &length);
 int bluetooth_get_scan_response_data(bluetooth_scan_resp_data_t *value, int *length);
 
 /**
- * @fn int bluetooth_set_scan_response_data(const 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
  *
@@ -4789,7 +6117,7 @@ int bluetooth_get_scan_response_data(bluetooth_scan_resp_data_t *value, int *len
  *
  * @remark     None
  */
-int bluetooth_set_scan_response_data(const bluetooth_scan_resp_data_t *value, int length);
+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);
@@ -4906,7 +6234,7 @@ int bluetooth_clear_white_list(void);
 
 /**
  * @fn int bluetooth_le_conn_update(bluetooth_device_address_t *address,
- *          const bluetooth_le_conn_update_t *parameters)
+ *          const bluetooth_le_connection_param_t *parameters)
  * @brief update connection paramter of LE connection.
  *
  * This function is a synchronous call.
@@ -4922,8 +6250,7 @@ int bluetooth_clear_white_list(void);
  * @see     bluetooth_bond_device
  */
 int bluetooth_le_conn_update(const bluetooth_device_address_t *address,
-            const bluetooth_le_conn_update_t *parameters);
-
+               const bluetooth_le_connection_param_t *parameters);
 
 /**
  * @fn int bluetooth_enable_le_privacy(gboolean enable_privacy);
@@ -4946,6 +6273,142 @@ int bluetooth_le_conn_update(const bluetooth_device_address_t *address,
  */
 int bluetooth_enable_le_privacy(gboolean enable_privacy);
 
+/**
+ * @fn int bluetooth_set_le_static_random_address(gboolean enable);
+ *
+ * @brief Enable/Disable LE static random address.
+ *
+ * This function is used to enable or disable LE static random address.
+ *
+ * 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 LE static random address to be activated/deactivated[True/False].
+ *
+ * @remark     None
+ */
+int bluetooth_set_le_static_random_address(gboolean enable);
+
+/**
+ * @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_request_att_mtu(const bluetooth_device_address_t *device_address, guint16 mtu)
+ * @brief Request for new ATT MTU value.
+ *
+ * This function is a asynchronous 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]  mtu - MTU value to be set.
+ *
+ * @remark       None
+ */
+int bluetooth_request_att_mtu(const bluetooth_device_address_t *device_address, unsigned int mtu);
+
+/**
+ * @fn int bluetooth_get_att_mtu(const bluetooth_device_address_t *device_address,
+ *                             unsigned int *mtu)
+ * @brief Gets the xisting MTU value set for a 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[out]  mtu - MTU value set for the connection.
+ *
+ * @remark              None
+ */
+int bluetooth_get_att_mtu(const bluetooth_device_address_t *device_address,
+                               unsigned int *mtu);
+
+/**
+ * @fn int bluetooth_get_device_ida(const bluetooth_device_address_t *device_rpa,
+ *                                     bluetooth_device_address_t *id_address)
+ * @brief Gets the Identity address of remote device.
+ *
+ * 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]  device_rpa - remote Resolvable private address.
+ * @param[out] id_address - remote Identity device address value.
+ *
+ * @remark              None
+ */
+int bluetooth_get_device_ida(const bluetooth_device_address_t *device_rpa,
+       bluetooth_device_address_t *id_address);
+
+/**
+ * @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);
@@ -4980,6 +6443,1132 @@ int bluetooth_pbap_phonebook_search(const bluetooth_device_address_t *address,
  * @remark     None
  */
 int bluetooth_set_manufacturer_data(const bluetooth_manufacturer_data_t *value);
+
+int bluetooth_set_passkey_notification(gboolean 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);
+
+/**
+ * @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);
+
+/**
+ * @fn int bluetooth_proximity_monitor_set_property(const bluetooth_device_address_t *device_address,
+ *                                             bluetooth_pxp_poperty_t property, int value);
+ *
+ * @brief Sets the Proximity alert level/properties for monitor role.
+ *
+ * This function 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
+ *
+ * @exception  None
+ * @param[in] device_address remote device address
+ * @param[in] property proximity profile property
+ * @param[in] value alert level/property value to be set
+ * @param[out] None
+ *
+ * @remark     None
+ */
+int bluetooth_proximity_monitor_set_property(const bluetooth_device_address_t *device_address,
+                                                       bluetooth_pxp_poperty_t property, int value);
+
+/**
+ * @fn int bluetooth_proximity_monitor_get_property(const bluetooth_device_address_t *device_address,
+ *                                             bluetooth_pxp_poperty_t property, int *value);
+ *
+ * @brief Reads the Proximity alert level/properties for monitor role.
+ *
+ * This function 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
+ *
+ * @exception  None
+ * @param[in] device_address remote device address
+ * @param[in] property proximity profile property
+ * @param[out] value alert level/property value
+ *
+ * @remark     None
+ */
+int bluetooth_proximity_monitor_get_property(const bluetooth_device_address_t *device_address,
+                                                       bluetooth_pxp_poperty_t property, int *value);
+
+/**
+ * @fn int bluetooth_proximity_monitor_get_supported_services(const bluetooth_device_address_t *device_address,
+ *                                             int *services_supported);
+ *
+ * @brief Reads the Proximity Monitor profile supported properties/services.
+ *
+ * This function 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
+ *
+ * @exception  None
+ * @param[in] device_address remote device address
+ * @param[out] services_supported proximity profile property/service
+ *
+ * @remark     None
+ */
+int bluetooth_proximity_monitor_get_supported_services(const bluetooth_device_address_t *device_address,
+                                                       int *services_supported);
+
+/**
+ * @fn int bluetooth_proximity_reporter_register();
+ *
+ * @brief Register all proximity related services in BlueZ.
+ *
+ * This function is a synchronous call.
+ *
+ * @return      BLUETOOTH_ERROR_NONE - Success \n
+ *                      BLUETOOTH_ERROR_NOT_FOUND - Cannot find the proxy\n
+ *
+ * @exception  None
+ *
+ * @remark     None
+ */
+int bluetooth_proximity_reporter_register(void);
+
+/**
+ * @fn int bluetooth_proximity_reporter_unregister();
+ *
+ * @brief Unregister all proximity related services in BlueZ.
+ *
+ * This function is a synchronous call.
+ *
+ * @return      BLUETOOTH_ERROR_NONE - Success \n
+ *                      BLUETOOTH_ERROR_NOT_FOUND - Cannot find the proxy\n
+ *
+ * @exception  None
+ *
+ * @remark     None
+ */
+int bluetooth_proximity_reporter_unregister(void);
+
+/**
+ * @fn int bluetooth_proximity_reporter_get_property(const bluetooth_device_address_t *device_address,
+ *                                             bluetooth_pxp_poperty_t property, int *value);
+ *
+ * @brief Reads the Proximity alert level/properties for reporter role.
+ *
+ * This function 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
+ *
+ * @exception  None
+ * @param[in] device_address remote device address
+ * @param[in] property proximity profile property
+ * @param[out] value alert level/property value
+ *
+ * @remark     None
+ */
+int bluetooth_proximity_reporter_get_property(const bluetooth_device_address_t *device_address,
+                                                       bluetooth_pxp_poperty_t property, int *value);
+
+/**
+ * @fn int bluetooth_tds_provider_register(void);
+ *
+ * @brief Register Transport Discovery Provider role.
+ *
+ * This function is a synchronous call.
+ *
+ * @return      BLUETOOTH_ERROR_NONE - Success \n
+ *                              BLUETOOTH_ERROR_ALREADY_INITIALIZED - Already done \n
+ *                              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter not enabled \n
+ *                              BLUETOOTH_ERROR_INTERNAL - Operation failed\n
+ *
+ * @exception  None
+ * @param[in] None
+ * @param[out] None
+ *
+ * @remark     None
+ */
+int bluetooth_tds_provider_register(void);
+
+/**
+ * @fn int bluetooth_tds_provider_unregister(void);
+ *
+ * @brief Unregister Transport Discovery Provider role.
+ *
+ * This function is a synchronous call.
+ *
+ * @return      BLUETOOTH_ERROR_NONE - Success \n
+ *                              BLUETOOTH_ERROR_NOT_INITIALIZED - Provider not registered \n
+ *                              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter not enabled \n
+ *                              BLUETOOTH_ERROR_INTERNAL - Operation failed\n
+ *
+ * @exception  None
+ * @param[in] None
+ * @param[out] None
+ *
+ * @remark     None
+ */
+int bluetooth_tds_provider_unregister(void);
+
+/**
+ * @fn int bluetooth_tds_provider_create(int transport, unsigned int handle);
+ *
+ * @brief Create Transport Discovery Provider for a transport.
+ *
+ * This function is a synchronous call.
+ *
+ * @return      BLUETOOTH_ERROR_NONE - Success \n
+ *                              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
+ *                              BLUETOOTH_ERROR_NOT_INITIALIZED - Provider not registered \n
+ *                              BLUETOOTH_ERROR_INTERNAL - Operation failed\n
+ *
+ * @exception  None
+ * @param[in] Transport (BT, CUSTOM etc.)
+ * @param[in] Unique handle for TDS provider.
+ * @param[out] None
+ *
+ * @remark     None
+ */
+int bluetooth_tds_provider_create(int transport, unsigned int handle);
+
+/**
+ * @fn int bluetooth_tds_provider_destroy(unsigned int handle);
+ *
+ * @brief Remove previously created Transport Discovery Provider.
+ *
+ * This function is a synchronous call.
+ *
+ * @return      BLUETOOTH_ERROR_NONE - Success \n
+ *                              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
+ *
+ * @exception  None
+ * @param[in] Unique handle for previously created provider.
+ * @param[out] None
+ *
+ * @remark     None
+ */
+int bluetooth_tds_provider_destroy(unsigned int handle);
+
+/**
+ * @fn int bluetooth_set_tds_provider_manuf_data(unsigned char *buf, unsigned int length);
+ *
+ * @brief Set transport block for in advertisement and gatt db.
+ *
+ * This function is a synchronous call.
+ *
+ * @return      BLUETOOTH_ERROR_NONE - Success \n
+ *                              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
+ *                              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter not enabled \n
+ *                              BLUETOOTH_ERROR_INTERNAL - Operation failed\n
+ *
+ * @exception  None
+ * @param[in] Provider specific manufacturer data.
+ * @param[in] Provider specific manufacturer data length.
+ * @param[out] None
+ *
+ * @remark     None
+ */
+int bluetooth_set_tds_provider_manuf_data(unsigned char *buf, unsigned int length);
+
+/**
+ * @fn int bluetooth_set_tds_provider_transport_data(unsigned int tds_handle,
+ *             bluetooth_tds_transport_state_t state, unsigned char *buf, unsigned int length);
+ *
+ * @brief Set transport block for in advertisement and gatt db.
+ *
+ * This function is a synchronous call.
+ *
+ * @return      BLUETOOTH_ERROR_NONE - Success \n
+ *                              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
+ *                              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Adapter not enabled \n
+ *                              BLUETOOTH_ERROR_INTERNAL - Operation failed\n
+ *
+ * @exception  None
+ * @param[in] Unique handle for TDS provider.
+ * @param[in] Transport state (On/Off/Not Available).
+ * @param[in] Transport specific data block.
+ * @param[in] Transport specific data block length.
+ * @param[out] None
+ *
+ * @remark     None
+ */
+int bluetooth_set_tds_provider_transport_data(unsigned int tds_handle,
+               bluetooth_tds_transport_state_t state, unsigned char *buf, unsigned int length);
+
+/**
+ * @fn int bluetooth_send_tds_activation_response(bluetooth_device_address_t *device_address,
+ *             unsigned int tds_handle, int response, unsigned char *buf, unsigned int length);
+ *
+ * @brief Send response to TDS activation request from remoted device.
+ *
+ * This function is a synchronous call.
+ *
+ * @return      BLUETOOTH_ERROR_NONE - Success \n
+ *                              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
+ *                              BLUETOOTH_ERROR_NOT_INITIALIZED - Provider not registered \n
+ *                              BLUETOOTH_ERROR_INTERNAL - Operation failed\n
+ *
+ * @exception  None
+ * @param[in] Remote device BT address.
+ * @param[in] Unique handle for TDS provider.
+ * @param[in] Response for TDS activation request.
+ * @param[in] Transport specific data block to be sent in activation response.
+ * @param[in] Data block length.
+ * @param[out] None
+ *
+ * @remark     None
+ */
+int bluetooth_send_tds_activation_response(bluetooth_device_address_t *device_address,
+       unsigned int tds_handle, int response, unsigned char *buf, unsigned int length);
+
+/**
+ * @fn int bluetooth_tds_read_transport_data(bluetooth_device_address_t *device_address, const char *handle);
+ *
+ * @brief Reads the Complete TDS transport Blocks from Remote Provider's GATT database.
+ *
+ * This function is an asynchronous call.
+ *
+ * @return      BLUETOOTH_ERROR_NONE - Success \n
+ *                              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
+ *                              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *                              BLUETOOTH_ERROR_IN_PROGRESS - Already Read Request is pending on same provider \n
+ *                              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
+ *
+ * @exception  None
+ * @param[in] device_address remote device address
+ * @param[in] handle attribute handle
+ *
+ * @remark     BLUETOOTH_EVENT_TDS_TRANSPORT_DATA_RECEIVED event is sent to pplication
+ * when TDS data is received from Remote provider
+ */
+int bluetooth_tds_read_transport_data(const bluetooth_device_address_t *device_address,
+                                               const char *handle);
+
+/**
+ * @fn int bluetooth_tds_enable_control_point(const bluetooth_device_address_t *device_address, const char *handle);
+ *
+ * @brief Enables CCCD on Remote Provider.
+ *
+ * This function is an asynchronous call.
+ *
+ * @return      BLUETOOTH_ERROR_NONE - Success \n
+ *                              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
+ *                              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *                              BLUETOOTH_ERROR_IN_PROGRESS - Already Control Point activation is ongoing to Same Provider \n
+ *                              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
+ *
+ * @exception  None
+ * @param[in] device_address remote device address
+ * @param[in] handle attribute handle
+ *
+ * @remark     BLUETOOTH_EVENT_TDS_CONTROL_POINT_ENABLED event is sent to application
+ * when Indication is enabled on Remote provider
+ */
+int bluetooth_tds_enable_control_point(const bluetooth_device_address_t *device_address,
+                                               const char *handle);
+
+/**
+ * @fn int bluetooth_tds_activate_control_point(const bluetooth_device_address_t *device_address, const char *handle
+ *                                                     unsigned char *buf, int length);
+ * @brief Sends activation request for Alternate Transport enable on Remote Provider
+ *
+ * This function is an asynchronous call.
+ *
+ * @return      BLUETOOTH_ERROR_NONE - Success \n
+ *                              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
+ *                              BLUETOOTH_ERROR_INTERNAL - Internal Error \n
+ *                              BLUETOOTH_ERROR_IN_PROGRESS - Already Control Point activation is ongoing to Same Provider \n
+ *                              BLUETOOTH_ERROR_INVALID_PARAM - Invalid parameter \n
+ *
+ * @exception  None
+ * @param[in] device_address remote device address
+ * @param[in] handle attribute handle
+ * @param[in] buf Control point activation param
+ * @param[in] param length
+ *
+ * @remark     BLUETOOTH_EVENT_TDS_ACTIVATION_INDICATION event is sent to application when Indication response
+ * is received from remote Provider
+ */
+int bluetooth_tds_activate_control_point(const bluetooth_device_address_t *device_address, const char *handle,
+                                               unsigned char *buf, int length);
+
+/**
+ * @fn int bluetooth_otp_server_init(const char *directory);
+ *
+ * @brief Starts OTP server.
+ *
+ * This function is a synchronous call.
+ *
+ * @return
+ *
+ * @exception  None
+ * @param[in] None
+ * @param[out] None
+ *
+ * @remark     None
+ */
+int bluetooth_otp_server_init(const char *directory);
+
+/**
+ * @fn int bluetooth_otp_server_deinit();
+ *
+ * @brief Stops OTP server.
+ *
+ * This function is a synchronous call.
+ *
+ * @return
+ *
+ * @exception  None
+ * @param[in] None
+ * @param[out] None
+ *
+ * @remark     None
+ */
+int bluetooth_otp_server_deinit();
+
 /**
  * @}
  */