Apply tizen 3.0 based product patchsets
[platform/core/connectivity/bluetooth-frwk.git] / include / bluetooth-api.h
index 84ff2d9..59d7e3a 100644 (file)
@@ -19,6 +19,7 @@
 #define _BLUETOOTH_API_H_
 
 #include <stdlib.h>
+#include <stdbool.h>
 #include <unistd.h>
 #include <glib.h>
 
@@ -35,6 +36,7 @@ extern "C" {
  * @{
  */
 
+#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
@@ -76,6 +78,16 @@ extern "C" {
 #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
+
+#define BLUETOOTH_OTP_CHARC_VAL_MAX_LENGTH   500 /**< OTP Characteristics Value Max length */
+
 /**
  * This is Bluetooth error code
  */
@@ -172,6 +184,48 @@ extern "C" {
 
 #define BLUETOOTH_ERROR_DEVICE_POLICY_RESTRICTION    ((int)BLUETOOTH_ERROR_BASE - 0x28)
                                                                /**< Device Policy Restricted */
+/**
+* Error codes for ATT Error response *
+*/
+#define BLUETOOTH_ATT_ERROR_INTERNAL                           -1
+#define BLUETOOTH_ATT_ERROR_NONE                               0x00
+#define BLUETOOTH_ATT_ERROR_INVALID_HANDLE                     0x01
+#define BLUETOOTH_ATT_ERROR_READ_NOT_PERMITTED                 0x02
+#define BLUETOOTH_ATT_ERROR_WRITE_NOT_PERMITTED                        0x03
+#define BLUETOOTH_ATT_ERROR_INVALID_PDU                                0x04
+#define BLUETOOTH_ATT_ERROR_AUTHENTICATION                     0x05
+#define BLUETOOTH_ATT_ERROR_REQUEST_NOT_SUPPORTED              0x06
+#define BLUETOOTH_ATT_ERROR_INVALID_OFFSET                     0x07
+#define BLUETOOTH_ATT_ERROR_AUTHORIZATION                      0x08
+#define BLUETOOTH_ATT_ERROR_PREPARE_QUEUE_FULL                 0x09
+#define BLUETOOTH_ATT_ERROR_ATTRIBUTE_NOT_FOUND                        0x0A
+#define BLUETOOTH_ATT_ERROR_ATTRIBUTE_NOT_LONG                 0x0B
+#define BLUETOOTH_ATT_ERROR_INSUFFICIENT_ENCRYPTION_KEY_SIZE   0x0C
+#define BLUETOOTH_ATT_ERROR_INVALID_ATTRIBUTE_VALUE_LEN                0x0D
+#define BLUETOOTH_ATT_ERROR_UNLIKELY                           0x0E
+#define BLUETOOTH_ATT_ERROR_INSUFFICIENT_ENCRYPTION            0x0F
+#define BLUETOOTH_ATT_ERROR_UNSUPPORTED_GROUP_TYPE             0x10
+#define BLUETOOTH_ATT_ERROR_INSUFFICIENT_RESOURCES             0x11
+/* Common profile error codes */
+#define BLUETOOTH_ATT_ERROR_WRITE_REQUEST_REJECTED             0xFC
+#define BLUETOOTH_ATT_ERROR_CCCD_IMPROPERLY_CONFIGURED         0xFD
+#define BLUETOOTH_ATT_ERROR_PROCEDURE_ALREADY_IN_PROGRESS      0xFE
+#define BLUETOOTH_ATT_ERROR_OUT_OF_RANGE                       0xFF
+
+/*
+ * Bluetooth ATT error codes specific to OTP
+ */
+#define BLUETOOTH_OTP_ERROR_WRITE_REQUEST_REJECTED     0x80
+#define BLUETOOTH_OTP_ERROR_OBJECT_NOT_SELECTED        0x81
+#define BLUETOOTH_OTP_ERROR_CONCURRENCY_LIMIT_EXCEEDED 0x82
+#define BLUETOOTH_OTP_ERROR_OBJECT_NAME_EXISTS         0x83
+
+/*
+ * Bluetooth OTP error codes
+ * TODO: Check error code conflict
+ */
+#define BLUETOOTH_ERROR_INVALID_DIRECTORY      0x01
+#define BLUETOOTH_ERROR_NO_OBJECTS_FOUND       0x02
 
 /**
  * Device disconnection reasons; received from stack
@@ -186,10 +240,12 @@ extern "C" {
 #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
 
-
-
 /**
 * Device disconnect reason
 */
@@ -216,6 +272,15 @@ typedef enum {
 } 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 {
@@ -287,6 +352,7 @@ typedef enum {
 
 /**
  * Service type
+ * Service type matched to bt_profile_type_t of bt-service-common.h
  */
 typedef enum {
        BLUETOOTH_RFCOMM_SERVICE = 0x01,
@@ -305,10 +371,11 @@ typedef enum {
  * 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;
 
 /**
@@ -402,6 +469,103 @@ typedef enum {
 } 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;
+
+/**
+* OTP Characteristics Value
+*/
+typedef struct {
+       int length;                                                     /**< Characteristics value length */
+       guint8 data[BLUETOOTH_OTP_CHARC_VAL_MAX_LENGTH];        /**< Characteristics data */
+} bluetooth_otp_charc_data_t;
+
+/**
+* Structure to hold the OTP response data from remote OTP server
+*/
+typedef struct {
+       char *handle;      /**< Handle */
+       int data_length;                        /**< Data length */
+       char *data;                             /**< Read data */
+} bluetooth_otp_resp_info_t;
+
+/**
+* Structure to hold the OTC Channel Info
+*/
+typedef struct {
+       gboolean connected;     /**< Connection Status */
+       int fd;                         /**< Fd */
+       char *address;      /**< Remote address */
+} bluetooth_otc_info_t;
+
+/**
 * Advertising parameters
 */
 typedef struct {
@@ -499,6 +663,8 @@ typedef struct {
                                                                /**< 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
@@ -519,7 +685,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 */
@@ -573,11 +739,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*/
@@ -685,6 +874,19 @@ typedef enum {
        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_OTP_READ_CHAR_VAL,      /* OTP Read Value Response */
+       BLUETOOTH_EVENT_OTP_NOTIFICATION_ENABLED,       /* OTP Notification Enabled Response */
+       BLUETOOTH_EVENT_OTP_WRITE_CHAR_VAL,     /* OTP Write Value Response */
+       BLUETOOTH_EVENT_OTP_INDICATION, /* OTP Indication */
+       BLUETOOTH_EVENT_OTC_STATE_CHANGED,              /* OTC Connection State Changed Event */
 } bluetooth_event_type_t;
 
  /**
@@ -698,6 +900,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*/
@@ -749,7 +952,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*/
@@ -1118,8 +1321,10 @@ typedef enum {
        HTYPE_TRANS_GET_PROTOCOL,
        HTYPE_TRANS_SET_PROTOCOL,
        HTYPE_TRANS_DATA,
-       HTYPE_TRANS_UNKNOWN
-}bt_hid_header_type_t;
+       HTYPE_TRANS_UNKNOWN,
+       HTYPE_TRANS_GET_IDLE = 0xF0,
+       HTYPE_TRANS_SET_IDLE = 0xF1,
+} bt_hid_header_type_t;
 
 /**
  * HID Param type
@@ -1127,7 +1332,7 @@ typedef enum {
 typedef enum {
        PTYPE_DATA_RTYPE_INPUT,
        PTYPE_DATA_RTYPE_OUTPUT
-}bt_hid_param_type_t;
+} bt_hid_param_type_t;
 
 /**
  * Stucture to hid receive data
@@ -1237,6 +1442,15 @@ typedef struct {
        int percentage;
 } 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"
 #define TRANSFER_GET "GET"
@@ -1388,7 +1602,7 @@ typedef struct {
        char *service_handle;
        char *address;
        guint16 offset;
-       guint8 req_id;
+       guint req_id;
 } bt_gatt_read_req_t;
 
 /**
@@ -1398,7 +1612,8 @@ typedef struct {
        char *att_handle;
        char *service_handle;
        char *address;
-       guint8 req_id;
+       guint req_id;
+       gboolean response_needed;
        guint16 offset;
        guint8 *att_value;
        guint32 val_len;
@@ -1427,7 +1642,16 @@ typedef struct {
        char *service_handle;
        char *address;
        gboolean complete;
- } bt_gatt_indicate_confirm_t;
+} bt_gatt_indicate_confirm_t;
+
+/**
+ * Structure for GATT response data
+ */
+typedef struct {
+       guint8 *value;
+       guint32 len;
+       gpointer user_data;
+} bt_gatt_resp_data_t;
 
 /**
  * Structure to RSSI Signal Strength Alert
@@ -1629,17 +1853,26 @@ typedef struct {
        guint16 max_rx_time;
 } bt_le_data_length_params_t;
 
+/**
+ * Structure for proximity property change params
+ */
+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;
+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
@@ -1741,6 +1974,93 @@ typedef struct {
        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
  */
@@ -3351,6 +3671,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
@@ -3883,7 +4229,7 @@ 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);
 
@@ -3901,7 +4247,7 @@ int bluetooth_rfcomm_accept_connection(int server_fd);
  *
  * @exception   None
  * @remark       None
- * @see          bluetooth_rfcomm_accept_connection
+ * @see        bluetooth_rfcomm_accept_connection
  */
 int bluetooth_rfcomm_reject_connection(int server_fd);
 
@@ -4213,7 +4559,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,
@@ -4233,7 +4579,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);
 
@@ -4255,7 +4601,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);
@@ -4281,7 +4627,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,
@@ -4305,7 +4651,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);
@@ -4327,7 +4673,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);
 
@@ -4345,10 +4691,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,
@@ -4371,11 +4717,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)
@@ -4392,7 +4738,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);
@@ -4409,7 +4755,7 @@ int bluetooth_opc_cancel_push(void);
  * @exception   None
  *
  * @remark       None
- * @see         None
+ * @see        None
  */
 
 gboolean bluetooth_opc_session_is_exist(void);
@@ -4469,7 +4815,7 @@ int bluetooth_opp_get_transfer_progress(bluetooth_opp_transfer_type_t transfer_t
  * @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);
 
@@ -4488,7 +4834,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);
 
@@ -4527,7 +4873,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);
 
@@ -4546,7 +4892,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);
 
@@ -4564,7 +4910,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);
 
@@ -4582,7 +4928,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);
 
@@ -4604,7 +4950,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);
@@ -4624,7 +4970,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);
@@ -4645,7 +4991,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);
@@ -4668,7 +5014,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);
@@ -4693,7 +5039,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);
 
@@ -4717,7 +5063,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);
 
@@ -4736,12 +5082,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.
  *
@@ -4755,7 +5165,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);
@@ -4764,6 +5174,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.
  *
@@ -4775,6 +5186,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
@@ -4783,6 +5195,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);
 
 
@@ -4801,7 +5214,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(
@@ -4896,7 +5309,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);
 
@@ -5087,7 +5500,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);
 
@@ -5170,7 +5583,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);
@@ -5189,12 +5602,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);
@@ -5231,7 +5643,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,
@@ -5254,7 +5666,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)
@@ -5263,9 +5675,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
@@ -5279,9 +5691,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
@@ -5375,13 +5787,13 @@ 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]   properties      GATT descriptor properties.
-* @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()
@@ -5407,8 +5819,8 @@ int bluetooth_gatt_add_descriptor(
 *
 * @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()
@@ -5914,8 +6326,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_connection_param_t *parameters);
-
+               const bluetooth_le_connection_param_t *parameters);
 
 /**
  * @fn int bluetooth_enable_le_privacy(gboolean enable_privacy);
@@ -6018,14 +6429,14 @@ int bluetooth_get_att_mtu(const bluetooth_device_address_t *device_address,
 
 /**
  * @fn int bluetooth_get_device_ida(const bluetooth_device_address_t *device_rpa,
- *                                     bluetooth_device_address_t *id_address)
+ *                                     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
+ * @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.
@@ -6111,7 +6522,6 @@ int bluetooth_set_manufacturer_data(const bluetooth_manufacturer_data_t *value);
 
 int bluetooth_set_passkey_notification(gboolean enable);
 
-#ifdef TIZEN_DPM_VCONF_ENABLE
 /**
  * @fn int bluetooth_dpm_is_mode_allowed(void);
  *
@@ -6129,7 +6539,6 @@ int bluetooth_set_passkey_notification(gboolean enable);
  * @remark     None
  */
 int bluetooth_dpm_is_mode_allowed(void);
-#endif
 
 /**
  * @fn int bluetooth_dpm_set_allow_mode(bt_dpm_allow_t value);
@@ -6167,10 +6576,10 @@ int bluetooth_dpm_set_allow_mode(bt_dpm_allow_t value);
  * @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
+ *             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
  */
@@ -6189,7 +6598,7 @@ int bluetooth_dpm_get_allow_mode(bt_dpm_allow_t *value);
  *
  * @exception  None
  * @param[in]  value - State value.
- *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
+ *             BLUETOOTH_DPM_ALLOWED           = 0,    < DPM Policy status allowed.
  *             BLUETOOTH_DPM_RESTRICTED                = 1,    < DPM Policy status restricted.
  *
  * @remark     None
@@ -6857,6 +7266,473 @@ int bluetooth_dpm_set_data_transfer_state(bt_dpm_status_t value);
 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();
+
+/**
+ * @fn int bluetooth_otp_enable_notification(const char *handle);
+ *
+ * @brief Enable notification for remote OACP & OLCP characteristics.
+ *
+ * This function is a synchronous call.
+ *
+ * @return
+ *
+ * @exception  None
+ * @param[in] None
+ * @param[out] None
+ *
+ * @remark     None
+ */
+int bluetooth_otp_enable_notification(const char *handle);
+
+/**
+ * @fn int bluetooth_otp_write_characteristics_value( const char *handle,
+ *                                             unsigned char *buf, int length);
+ *
+ * @brief Write value on remote characteristics.
+ *
+ * This function is a synchronous call.
+ *
+ * @return
+ *
+ * @exception  None
+ * @param[in] None
+ * @param[out] None
+ *
+ * @remark     None
+ */
+int bluetooth_otp_write_characteristics_value( const char *handle,
+                                       unsigned char *buf, int length);
+
+/**
+ * @fn int bluetooth_otp_read_characteristic_value(const char *handle);
+ *
+ * @brief Read value for remote characteristics.
+ *
+ * This function is a synchronous call.
+ *
+ * @return
+ *
+ * @exception  None
+ * @param[in] None
+ * @param[out] None
+ *
+ * @remark     None
+ */
+int bluetooth_otp_read_characteristic_value(const char *handle);
+
+/**
+ * @fn int bluetooth_otp_connect_otc(const bluetooth_device_address_t *device_address);
+ *
+ * @brief Read value for remote characteristics.
+ *
+ * This function is a synchronous call.
+ *
+ * @return
+ *
+ * @exception  None
+ * @param[in] None
+ * @param[out] None
+ *
+ * @remark     None
+ */
+int bluetooth_otp_connect_otc(const bluetooth_device_address_t *device_address);
+
+/**
+ * @fn int bluetooth_otp_disconnect_otc(const bluetooth_device_address_t *device_address);
+ *
+ * @brief Read value for remote characteristics.
+ *
+ * This function is a synchronous call.
+ *
+ * @return
+ *
+ * @exception  None
+ * @param[in] None
+ * @param[out] None
+ *
+ * @remark     None
+ */
+int bluetooth_otp_disconnect_otc(const bluetooth_device_address_t *device_address);
+
+/**
  * @}
  */