[OTP] Add support for OACP Read
[platform/core/connectivity/bluetooth-frwk.git] / include / bluetooth-api.h
index cccd59f..94f8a89 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
  */
@@ -186,9 +198,21 @@ 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
 
-
+/*
+ * 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
@@ -216,6 +240,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 +320,7 @@ typedef enum {
 
 /**
  * Service type
+ * Service type matched to bt_profile_type_t of bt-service-common.h
  */
 typedef enum {
        BLUETOOTH_RFCOMM_SERVICE = 0x01,
@@ -412,6 +446,94 @@ typedef enum {
 } 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 {
@@ -509,6 +631,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
@@ -588,6 +712,29 @@ typedef enum {
        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*/
@@ -696,6 +843,18 @@ typedef enum {
        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;
 
  /**
@@ -709,6 +868,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*/
@@ -1248,6 +1408,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"
@@ -1399,7 +1568,7 @@ typedef struct {
        char *service_handle;
        char *address;
        guint16 offset;
-       guint8 req_id;
+       guint req_id;
 } bt_gatt_read_req_t;
 
 /**
@@ -1409,7 +1578,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;
@@ -1761,6 +1931,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
  */
@@ -4788,6 +5045,70 @@ 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.
  *
@@ -4810,6 +5131,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.
  *
@@ -4821,6 +5143,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
@@ -4829,6 +5152,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);
 
 
@@ -6899,10 +7223,10 @@ 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_set_proximity_property(const bluetooth_device_address_t *device_address,
+ * @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.
+ * @brief Sets the Proximity alert level/properties for monitor role.
  *
  * This function is a synchronous call.
  *
@@ -6919,14 +7243,14 @@ int bluetooth_dpm_get_data_transfer_state(bt_dpm_status_t *value);
  *
  * @remark     None
  */
-int bluetooth_set_proximity_property(const bluetooth_device_address_t *device_address,
+int bluetooth_proximity_monitor_set_property(const bluetooth_device_address_t *device_address,
                                                        bluetooth_pxp_poperty_t property, int value);
 
 /**
- * @fn int bluetooth_get_proximity_property(const bluetooth_device_address_t *device_address,
+ * @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.
+ * @brief Reads the Proximity alert level/properties for monitor role.
  *
  * This function is a synchronous call.
  *
@@ -6942,21 +7266,21 @@ int bluetooth_set_proximity_property(const bluetooth_device_address_t *device_ad
  *
  * @remark     None
  */
-int bluetooth_get_proximity_property(const bluetooth_device_address_t *device_address,
+int bluetooth_proximity_monitor_get_property(const bluetooth_device_address_t *device_address,
                                                        bluetooth_pxp_poperty_t property, int *value);
 
 /**
- * @fn int bluetooth_get_proximity_supported_services(const bluetooth_device_address_t *device_address,
+ * @fn int bluetooth_proximity_monitor_get_supported_services(const bluetooth_device_address_t *device_address,
  *                                             int *services_supported);
  *
- * @brief Reads the Proximity profile supported properties/services.
+ * @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
+ * @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
@@ -6964,40 +7288,406 @@ int bluetooth_get_proximity_property(const bluetooth_device_address_t *device_ad
  *
  * @remark     None
  */
-int bluetooth_get_proximity_supported_services(const bluetooth_device_address_t *device_address,
+int bluetooth_proximity_monitor_get_supported_services(const bluetooth_device_address_t *device_address,
                                                        int *services_supported);
 
 /**
- * @fn int bluetooth_register__proximity_reporter();
+ * @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
+ * @return      BLUETOOTH_ERROR_NONE - Success \n
+ *                      BLUETOOTH_ERROR_NOT_FOUND - Cannot find the proxy\n
  *
  * @exception  None
  *
  * @remark     None
  */
-int bluetooth_register_proximity_reporter();
+int bluetooth_proximity_reporter_register(void);
 
 /**
- * @fn int bluetooth_unregister__proximity_reporter();
+ * @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
+ * @return      BLUETOOTH_ERROR_NONE - Success \n
+ *                      BLUETOOTH_ERROR_NOT_FOUND - Cannot find the proxy\n
  *
  * @exception  None
  *
  * @remark     None
  */
-int bluetooth_unregister_proximity_reporter();
+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);
 
 /**
  * @}