Code synchronization from tizen_4.0 branch 20/153420/1
authorAnupam Roy <anupam.r@samsung.com>
Thu, 28 Sep 2017 09:56:08 +0000 (15:26 +0530)
committerAnupam Roy <anupam.r@samsung.com>
Thu, 28 Sep 2017 09:57:04 +0000 (15:27 +0530)
Change-Id: I5a71a092987fcb4744f5ae75d3a2167362bb3ae2
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
45 files changed:
CMakeLists.txt
doc/bluetooth_doc.h
include/bluetooth.h [new file with mode: 0644]
include/bluetooth_extension.h [new file with mode: 0644]
include/bluetooth_internal.h [new file with mode: 0644]
include/bluetooth_private.h
include/bluetooth_type.h [new file with mode: 0644]
include/bluetooth_type_extension.h [new file with mode: 0644]
include/bluetooth_type_internal.h [new file with mode: 0644]
include/mobile/bluetooth.h [deleted file]
include/mobile/bluetooth_extension.h [deleted file]
include/mobile/bluetooth_internal.h [deleted file]
include/mobile/bluetooth_type.h [deleted file]
include/mobile/bluetooth_type_extension.h [deleted file]
include/mobile/bluetooth_type_internal.h [deleted file]
include/tv/bluetooth.h [deleted file]
include/tv/bluetooth_extension.h [deleted file]
include/tv/bluetooth_internal.h [deleted file]
include/tv/bluetooth_type.h [deleted file]
include/tv/bluetooth_type_extension.h [deleted file]
include/tv/bluetooth_type_internal.h [deleted file]
include/wearable/bluetooth.h [deleted file]
include/wearable/bluetooth_extension.h [deleted file]
include/wearable/bluetooth_internal.h [deleted file]
include/wearable/bluetooth_type.h [deleted file]
include/wearable/bluetooth_type_extension.h [deleted file]
include/wearable/bluetooth_type_internal.h [deleted file]
packaging/capi-network-bluetooth.spec
src/bluetooth-adapter.c
src/bluetooth-audio.c
src/bluetooth-avrcp.c
src/bluetooth-common.c [changed mode: 0755->0644]
src/bluetooth-device.c
src/bluetooth-dpm.c
src/bluetooth-gatt.c
src/bluetooth-hid.c
src/bluetooth-ipsp.c
src/bluetooth-map-client.c [new file with mode: 0644]
src/bluetooth-otp.c [new file with mode: 0644]
src/bluetooth-pbap.c
src/bluetooth-proximity.c
src/bluetooth-tds.c [new file with mode: 0644]
test/CMakeLists.txt
test/bt_unit_test.c
test/bt_unit_test.h

index 067214efea762eed587997a1082a3358db00e370..c6d321931e1ad9494846a709fe317dae22f63a80 100644 (file)
@@ -7,23 +7,9 @@ SET(CMAKE_INSTALL_PREFIX /usr)
 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
 
 SET(INC_DIR include)
-IF (TIZEN_PROFILE_TV)
-    INCLUDE_DIRECTORIES(${INC_DIR})
-    INCLUDE_DIRECTORIES(${INC_DIR}/tv)
-ELSE ()
-       INCLUDE_DIRECTORIES(${INC_DIR})
-       IF (TIZEN_PROFILE_WEARABLE OR TIZEN_PROFILE_IVI)
-               INCLUDE_DIRECTORIES(${INC_DIR}/wearable)
-       ELSE ()
-               INCLUDE_DIRECTORIES(${INC_DIR}/mobile)
-       ENDIF (TIZEN_PROFILE_WEARABLE OR TIZEN_PROFILE_IVI)
-ENDIF (TIZEN_PROFILE_TV)
-
-IF (TIZEN_PROFILE_TV)
-       SET(dependents "dlog glib-2.0 capi-base-common capi-system-info bluetooth-api db-util")
-ELSE ()
-       SET(dependents "dlog glib-2.0 capi-base-common capi-system-info bluetooth-api")
-ENDIF (TIZEN_PROFILE_TV)
+INCLUDE_DIRECTORIES(${INC_DIR})
+
+SET(dependents "dlog glib-2.0 capi-base-common capi-system-info bluetooth-api db-util")
 SET(pc_dependents "capi-base-common glib-2.0")
 
 INCLUDE(FindPkgConfig)
@@ -44,24 +30,7 @@ ADD_DEFINITIONS("-DTIZEN_DEBUG")
 
 SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=${LIB_INSTALL_DIR}")
 
-IF (TIZEN_PROFILE_TV)
-SET(SOURCES
-src/bluetooth-common.c
-src/bluetooth-adapter.c
-src/bluetooth-device.c
-src/bluetooth-socket.c
-src/bluetooth-opp-server.c
-src/bluetooth-opp-client.c
-src/bluetooth-pan.c
-src/bluetooth-hdp.c
-src/bluetooth-hid.c
-src/bluetooth-audio.c
-src/bluetooth-avrcp.c
-src/bluetooth-gatt.c
-src/bluetooth-ipsp.c
-src/bluetooth-dpm.c
-)
-ELSE ()
+
 SET(SOURCES
 src/bluetooth-common.c
 src/bluetooth-adapter.c
@@ -69,6 +38,7 @@ src/bluetooth-device.c
 src/bluetooth-socket.c
 src/bluetooth-opp-server.c
 src/bluetooth-opp-client.c
+src/bluetooth-map-client.c
 src/bluetooth-pan.c
 src/bluetooth-hdp.c
 src/bluetooth-hid.c
@@ -78,11 +48,12 @@ src/bluetooth-gatt.c
 src/bluetooth-ipsp.c
 src/bluetooth-dpm.c
 src/bluetooth-proximity.c
+src/bluetooth-tds.c
+src/bluetooth-otp.c
 )
-IF (TIZEN_PROFILE_WEARABLE OR TIZEN_PROFILE_IVI)
+
+LIST(APPEND SOURCES src/bluetooth-proximity.c)
 LIST(APPEND SOURCES src/bluetooth-pbap.c)
-ENDIF (TIZEN_PROFILE_WEARABLE OR TIZEN_PROFILE_IVI)
-ENDIF (TIZEN_PROFILE_TV)
 
 ADD_LIBRARY(${fw_name} SHARED ${SOURCES})
 
@@ -103,28 +74,6 @@ INSTALL(
         PATTERN "*_private.h" EXCLUDE
         PATTERN "${INC_DIR}/*.h"
         )
-IF (TIZEN_PROFILE_TV)
-INSTALL(
-        DIRECTORY ${INC_DIR}/tv/ DESTINATION include/network
-        FILES_MATCHING
-        PATTERN "${INC_DIR}/tv/*.h"
-        )
-
-ELSE ()
-       IF (TIZEN_PROFILE_WEARABLE OR TIZEN_PROFILE_IVI)
-       INSTALL(
-               DIRECTORY ${INC_DIR}/wearable/ DESTINATION include/network
-               FILES_MATCHING
-               PATTERN "${INC_DIR}/wearable/*.h"
-               )
-       ELSE ()
-       INSTALL(
-               DIRECTORY ${INC_DIR}/mobile/ DESTINATION include/network
-               FILES_MATCHING
-               PATTERN "${INC_DIR}/mobile/*.h"
-               )
-       ENDIF (TIZEN_PROFILE_WEARABLE OR TIZEN_PROFILE_IVI)
-ENDIF (TIZEN_PROFILE_TV)
 
 SET(PC_NAME ${fw_name})
 SET(PC_REQUIRED ${pc_dependents})
@@ -137,10 +86,7 @@ CONFIGURE_FILE(
 )
 INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
 
-IF (TIZEN_PROFILE_TV)
-ELSE ()
 ADD_SUBDIRECTORY(test)
-ENDIF (TIZEN_PROFILE_TV)
 
 IF(UNIX)
 
index 5e47516d168f03fe75b5bfb045fb9992c61fb169..a8566f7c0422a1c2cffc268615efef1422e5570e 100644 (file)
  *
  * To ensure your application is only running on the device with specific features, please define the features in your manifest file using the manifest editor in the SDK
  *
- * More details on featuring your application can be found from <a href="https://developer.tizen.org/development/tools/native-tools/manifest-text-editor#feature"><b>Feat
+ * More details on featuring your application can be found from <a href="https://developer.tizen.org/development/tools/native-tools/manifest-text-editor#feature"><b>Feature Element</b>.</a>
  * @endif
  */
 
  *
  * To ensure your application is only running on the device with specific features, please define the features in your manifest file using the manifest editor in the SDK
  *
- * More details on featuring your application can be found from <a href="https://developer.tizen.org/development/tools/native-tools/manifest-text-editor#feature"><b>Feat
+ * More details on featuring your application can be found from <a href="https://developer.tizen.org/development/tools/native-tools/manifest-text-editor#feature"><b>Feature Element</b>.</a>
  * @endif
  */
 
  *
  */
 
+/**
+ * @defgroup CAPI_NETWORK_BLUETOOTH_IPSP_MODULE Bluetooth IPSP
+ * @brief Bluetooth IPSP(Internet Protocol Support Profile) API provides functions for supporting of exchanging IPv6 packets between devices over the BLE transport.
+ * @ingroup CAPI_NETWORK_BLUETOOTH_MODULE
+ *
+ * @section CAPI_NETWORK_BLUETOOTH_IPSP_MODULE_HEADER Required Header
+ *  \#include <bluetooth.h>
+ *
+ * @section CAPI_NETWORK_BLUETOOTH_IPSP_MODULE_OVERVIEW Overview
+ * Two roles are defined for devices that implement IPSP.
+ * The @a Router is used for devices that can route IPv6 packets.
+ * The @a Node is used for devices that can originate or consume IPv6 appllication packets.
+ *
+ * @section CAPI_NETWORK_BLUETOOTH_IPSP_MODULE_FEATURE Related Features
+ * This API is related with the following features:\n
+ *  - http://tizen.org/feature/network.bluetooth.le.ipsp\n
+ *
+ * It is recommended to design feature related codes in your application for reliability.\n
+ *
+ * You can check if a device supports the related features for this API by using @ref CAPI_SYSTEM_SYSTEM_INFO_MODULE, thereby controlling the procedure of your application.\n
+ *
+ * To ensure your application is only running on the device with specific features, please define the features in your manifest file using the manifest editor in the SDK.\n
+ *
+ * More details on featuring your application can be found from <a href="https://developer.tizen.org/development/tools/native-tools/manifest-text-editor#feature"><b>Feature Element</b>.</a>
+ *
+ */
+
 /**
  * @if WEARABLE
  * @defgroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE Bluetooth PBAP
diff --git a/include/bluetooth.h b/include/bluetooth.h
new file mode 100644 (file)
index 0000000..9be0e19
--- /dev/null
@@ -0,0 +1,6490 @@
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __TIZEN_NETWORK_BLUETOOTH_H__
+#define __TIZEN_NETWORK_BLUETOOTH_H__
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdbool.h>
+#include <tizen_error.h>
+#include <tizen.h>
+
+#include <bluetooth_type.h>
+
+#ifndef TIZEN_DEPRECATED_API
+#define TIZEN_DEPRECATED_API __attribute__((__visibility__("default"), deprecated))
+#endif
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+/**
+ * @file        bluetooth.h
+ * @brief       API to control the Bluetooth adapter and devices and communications.
+ * @ingroup     CAPI_NETWORK_BLUETOOTH_MODULE
+ */
+
+
+/**
+ * @addtogroup CAPI_NETWORK_BLUETOOTH_MODULE
+ * @{
+ */
+
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_MODULE
+ * @brief Initializes the Bluetooth API.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @remarks This function must be called before Bluetooth API starts. \n
+ * You must free all resources of the Bluetooth service by calling bt_deinitialize() if Bluetooth service is no longer needed.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see  bt_deinitialize()
+ */
+int bt_initialize(void);
+
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_MODULE
+ * @brief Releases all resources of the Bluetooth API.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @remarks This function must be called if Bluetooth API is no longer needed.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre Bluetooth API must be initialized with bt_initialize().
+ *
+ * @see bt_initialize()
+ */
+int bt_deinitialize(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_MODULE
+ * @brief Gets the specification name for the given UUID.
+ * @since_tizen 3.0
+ *
+ * @remarks The @a name must be released using free().
+ *
+ * @param[in] uuid The UUID
+ * @param[out] name The specification name defined at www.bluetooth.com
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_get_uuid()
+ */
+int bt_get_uuid_name(const char *uuid, char **name);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Gets the current state of local Bluetooth adapter.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[out] adapter_state The current adapter state
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_initialize()
+ */
+int bt_adapter_get_state(bt_adapter_state_e *adapter_state);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Gets the address of local Bluetooth adapter.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @remarks The @a local_address must be released with free() by you.
+ *
+ * @param[out] local_address The device address of local Bluetooth adapter
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @see bt_adapter_get_name()
+ */
+int bt_adapter_get_address(char **local_address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Gets the name of local Bluetooth adapter.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @details Use this function to get the friendly name associated with Bluetooth
+ * device, retrieved by the remote Bluetooth devices.
+ *
+ * @remarks The @a local_name must be released with free() by you.
+ *
+ * @param[out] local_name  The local device name
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ *
+ * @see bt_adapter_set_name()
+ */
+int bt_adapter_get_name(char **local_name);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Sets the name of local Bluetooth adapter.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] local_name The name of the Bluetooth device. \n
+ *                             The maximum length is 248 characters.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @post bt_adapter_name_changed_cb() will be invoked if this function returns #BT_ERROR_NONE.
+ *
+ * @see bt_adapter_get_name()
+ * @see bt_adapter_name_changed_cb()
+ * @see bt_adapter_set_name_changed_cb()
+ * @see bt_adapter_unset_name_changed_cb()
+ */
+int bt_adapter_set_name(const char *local_name);
+
+/**
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Gets the visibility mode of local Bluetooth adapter.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[out] mode  The visibility mode of the Bluetooth device
+ * @param[out] duration  The duration until the visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE (in seconds).
+ * @a duration is valid only if @a mode is #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE. This value can be NULL.
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ */
+int bt_adapter_get_visibility(bt_adapter_visibility_mode_e *mode, int *duration);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Starts the device discovery, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @details If a device is discovered, bt_adapter_device_discovery_state_changed_cb() will be invoked
+ * with #BT_ADAPTER_DEVICE_DISCOVERY_FOUND, and then bt_adapter_device_discovery_state_changed_cb()
+ * will be called with #BT_ADAPTER_DEVICE_DISCOVERY_FINISHED in case of the completion or cancellation of the discovery.
+ *
+ * @remarks To connect to peer Bluetooth device, you need to know its Bluetooth address. \n
+ * The device discovery can be stopped by bt_adapter_stop_device_discovery().
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @post This function invokes bt_adapter_device_discovery_state_changed_cb().
+ *
+ * @see bt_adapter_is_discovering()
+ * @see bt_adapter_stop_device_discovery()
+ * @see bt_adapter_device_discovery_state_changed_cb()
+ * @see bt_adapter_set_device_discovery_state_changed_cb()
+ * @see bt_adapter_unset_device_discovery_state_changed_cb()
+ */
+int bt_adapter_start_device_discovery(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Stops the device discovery, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @remarks The device discovery process will take 10 ~ 20 seconds to get all the devices in vicinity.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation is not in progress
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The device discovery must be in progress with bt_adapter_start_device_discovery().
+ * @post This function invokes bt_adapter_device_discovery_state_changed_cb().
+ *
+ * @see bt_adapter_is_discovering()
+ * @see bt_adapter_start_device_discovery()
+ * @see bt_adapter_set_device_discovery_state_changed_cb()
+ * @see bt_adapter_unset_device_discovery_state_changed_cb()
+ * @see bt_adapter_device_discovery_state_changed_cb()
+ */
+int bt_adapter_stop_device_discovery(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Checks for the device discovery is in progress or not.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @remarks If Bluetooth discovery is in progress, other operations are not allowed and
+ * you have to either stop the discovery operation, or wait for it to be finished,
+ * before performing other operations.
+
+ * @param[out] is_discovering The discovering status: (@c true = in progress , @c  false = not in progress )
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ *
+ * @see bt_adapter_start_device_discovery()
+ * @see bt_adapter_stop_device_discovery()
+ */
+int bt_adapter_is_discovering(bool *is_discovering);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Get the service mask from the uuid list.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] uuids The UUID list of the device.
+ * @param[in] no_of_service The number of the UUID list count.
+ * @param[out] service_mask_list Service mask list converted from the given UUID list.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_service_class_t
+ */
+int bt_device_get_service_mask_from_uuid_list(char **uuids,
+                                     int no_of_service,
+                                     bt_service_class_t *service_mask_list);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Retrieves the device information of all bonded devices.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param [in] callback The callback function to invoke
+ * @param [in] user_data The user data passed from the foreach function
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @post This function invokes bt_adapter_bonded_device_cb().
+ *
+ * @see bt_adapter_bonded_device_cb()
+ */
+int bt_adapter_foreach_bonded_device(bt_adapter_bonded_device_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Gets the device information of a bonded device.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @remarks The @a device_info must be released with bt_adapter_free_device_info() by you .
+ *
+ * @param [in] remote_address The address of remote device
+ * @param [out] device_info The bonded device information
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @post This function invokes bt_adapter_bonded_device_cb().
+ *
+ * @see bt_adapter_bonded_device_cb()
+ */
+int bt_adapter_get_bonded_device_info(const char *remote_address, bt_device_info_s **device_info);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Frees device info.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param [in] device_info The bonded device information
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_adapter_get_bonded_device_info()
+ */
+int bt_adapter_free_device_info(bt_device_info_s *device_info);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Checks whether the UUID of service is used or not
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] service_uuid The UUID of service
+ * @param[out] used Indicates whether the service is used or not
+ * @return true on success, otherwise false.
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_adapter_is_service_used(const char *service_uuid, bool *used);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Registers a callback function to be invoked when the Bluetooth adapter state changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] callback The callback function to invoke
+ * @param[in] user_data        The user data to be passed to the callback function
+ *
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post bt_adapter_state_changed_cb() will be invoked.
+ *
+ * @see bt_initialize()
+ * @see bt_adapter_state_changed_cb()
+ * @see bt_adapter_set_state_changed_cb()
+ * @see bt_adapter_unset_state_changed_cb()
+ */
+int bt_adapter_set_state_changed_cb(bt_adapter_state_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief      Unregisters the callback function.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @return     0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_initialize()
+ * @see bt_adapter_set_state_changed_cb()
+ */
+int bt_adapter_unset_state_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Registers a callback function to be invoked when the name of Bluetooth adapter changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] callback The callback function to invoke
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post  bt_adapter_name_changed_cb() will be invoked.
+ *
+ * @see bt_initialize()
+ * @see bt_adapter_name_changed_cb()
+ * @see bt_adapter_unset_name_changed_cb()
+ */
+int bt_adapter_set_name_changed_cb(bt_adapter_name_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief      Unregisters the callback function.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @return     0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_initialize()
+ * @see bt_adapter_set_name_changed_cb()
+ */
+int bt_adapter_unset_name_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Registers a callback function to be invoked when the visibility mode changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post bt_adapter_visibility_mode_changed_cb() will be invoked.
+ *
+ * @see bt_initialize()
+ * @see bt_adapter_visibility_mode_changed_cb()
+ * @see bt_adapter_unset_visibility_mode_changed_cb()
+ */
+int bt_adapter_set_visibility_mode_changed_cb(bt_adapter_visibility_mode_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Unregisters the callback function.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @return  0 on success, otherwise a negative error value.
+ * @retval  #BT_ERROR_NONE  Successful
+ * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre  The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see  bt_initialize()
+ * @see  bt_adapter_set_visibility_mode_changed_cb()
+ */
+int bt_adapter_unset_visibility_mode_changed_cb(void);
+
+/**
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Registers a callback function to be invoked every second
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * until the visibility mode is changed from #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE
+ * to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE.
+ * @details  When you set visibility mode as #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE,
+ * @a callback will be called every second until visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE.
+ * @param[in]  callback  The callback function to register
+ * @param[in]  user_data  The user data to be passed to the callback function
+ * @return  0 on success, otherwise a negative error value.
+ * @retval  #BT_ERROR_NONE  Successful
+ * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre  The Bluetooth service must be initialized by bt_initialize().
+ * @post  bt_adapter_visibility_duration_changed_cb() will be invoked.
+ * @see  bt_initialize()
+ * @see  bt_adapter_visibility_duration_changed_cb()
+ * @see  bt_adapter_unset_visibility_duration_changed_cb()
+ */
+int bt_adapter_set_visibility_duration_changed_cb(bt_adapter_visibility_duration_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief       Unregisters the callback function.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return  0 on success, otherwise a negative error value.
+ * @retval  #BT_ERROR_NONE  Successful
+ * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre  The Bluetooth service must be initialized with bt_initialize().
+ * @see  bt_initialize()
+ * @see  bt_adapter_set_visibility_duration_changed_cb()
+ */
+int bt_adapter_unset_visibility_duration_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Registers a callback function to be invoked when the device discovery state changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post bt_adapter_device_discovery_state_changed_cb() will be invoked.
+ *
+ * @see bt_initialize()
+ * @see bt_adapter_device_discovery_state_changed_cb()
+ * @see bt_adapter_set_device_discovery_state_changed_cb()
+ * @see bt_adapter_unset_device_discovery_state_changed_cb()
+ */
+int bt_adapter_set_device_discovery_state_changed_cb(bt_adapter_device_discovery_state_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief      Unregisters the callback function.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @return     0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_initialize()
+ * @see bt_adapter_set_device_discovery_state_changed_cb()
+ */
+int bt_adapter_unset_device_discovery_state_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Get the Hash and Randmoizer value, synchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[out] hash The hash value received from the controller
+ * @param[out] randomizer The hash value received from the controller
+ * @param[out] hash_len The length of the hash value
+ * @param[out] randomizer_len The length of the randomizer value
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ */
+int bt_adapter_get_local_oob_data(unsigned char **hash, unsigned char **randomizer,
+                                       int *hash_len, int *randomizer_len);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Sets the Hash and Randmoizer value, synchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] remote_address Remote device address
+ * @param[in] hash The hash value received from the controller
+ * @param[in] randomizer The hash value received from the controller
+ * @param[in] hash_len The length of the hash value. Allowed value is 16
+ * @param[in] randomizer_len The length of the randomizer value. Allowed value is 16
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ */
+int bt_adapter_set_remote_oob_data(const char *remote_address,
+                               unsigned char *hash, unsigned char *randomizer,
+                               int hash_len, int randomizer_len);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Gets the Hash and Randmoizer value, synchronously.
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @remarks The @a hash192, randomizer192, hash256 and randomizer256 must be released using free()
+ *
+ * @param[out] hash192 The hash value derived from the P-192 public key
+ * @param[out] randomizer192 The randomizer value associated with the P-192 public key
+ * @param[out] hash192_len The length of @a hash192
+ * @param[out] randomizer192_len The length of @a randomizer192
+ * @param[out] hash256 The hash value derived from the P-256 public key
+ * @param[out] randomizer256 The randomizer value associated with the P-256 public key
+ * @param[out] hash256_len The length of @a hash256
+ * @param[out] randomizer256_len The length of @a randomizer256
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ */
+int bt_adapter_get_local_oob_ext_data(unsigned char **hash192, unsigned char **randomizer192,
+               int *hash192_len, int *randomizer192_len,
+               unsigned char **hash256, unsigned char **randomizer256,
+               int *hash256_len, int *randomizer256_len);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Sets the Hash and Randmoizer value, synchronously.
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] remote_address Remote device address
+ * @param[in] hash192 The P-192 hash value received via OOB from remote device
+ * @param[in] randomizer192 The P-192 randomizer value received via OOB from remote device
+ * @param[in] hash192_len The length of @a hash192
+ * @param[in] randomizer192_len The length of @a randomizer192
+ * @param[in] hash256 The P-256 hash value received via OOB from remote device
+ * @param[in] randomizer256 The P-256 randomizer value received via OOB from remote device
+ * @param[in] hash256_len The length of @a hash256
+ * @param[in] randomizer256_len The length of @a randomizer256
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ */
+int bt_adapter_set_remote_oob_ext_data(const char *remote_address,
+               const unsigned char *hash192, const unsigned char *randomizer192,
+               int hash192_len, int randomizer192_len,
+               const unsigned char *hash256, const unsigned char *randomizer256,
+               int hash256_len, int randomizer256_len);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Deletes the Hash and Randomizer value, synchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] remote_address Remote device address
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ */
+int bt_adapter_remove_remote_oob_data(const char *remote_address);
+
+/**
+ * @deprecated Deprecated since 2.3.1
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Starts the LE device discovery.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @details If a LE device is discovered, bt_adapter_le_device_discovery_state_changed_cb()
+*  will be invoked with #BT_ADAPTER_LE_DEVICE_DISCOVERY_FOUND, and then bt_adapter_le_device_discovery_state_changed_cb()
+ * will be called with #BT_ADAPTER_LE_DEVICE_DISCOVERY_FINISHED in case of the completion or cancellation of the discovery.
+ *
+ * @remarks To connect to peer Bluetooth device, you need to know its Bluetooth address. \n
+ * The device discovery can be stopped by bt_adapter_le_stop_device_discovery().
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @post This function invokes bt_adapter_le_device_discovery_state_changed_cb().
+ *
+ * @see bt_adapter_le_is_discovering()
+ * @see bt_adapter_le_device_discovery_state_changed_cb()
+ * @see bt_adapter_le_set_device_discovery_state_changed_cb()
+ * @see bt_adapter_le_unset_device_discovery_state_changed_cb()
+ */
+int bt_adapter_le_start_device_discovery(void) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 2.3.1
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Stops the LE device discovery, asynchronously.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation is not in progress
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The device discovery must be in progress with bt_adapter_le_start_device_discovery().
+ * @post This function invokes bt_adapter_le_device_discovery_state_changed_cb().
+ *
+ * @see bt_adapter_le_is_discovering()
+ * @see bt_adapter_le_start_device_discovery()
+ * @see bt_adapter_le_set_device_discovery_state_changed_cb()
+ * @see bt_adapter_le_unset_device_discovery_state_changed_cb()
+ * @see bt_adapter_le_device_discovery_state_changed_cb()
+ */
+int bt_adapter_le_stop_device_discovery(void) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 2.3.1
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Checks for the LE device discovery is in progress or not.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ *
+ * @remarks If Bluetooth LE discovery is in progress, other operations are not allowed and
+ * you have to either stop the LE discovery operation, or wait for it to be finished,
+ * before performing other operations.
+
+ * @param[out] is_discovering The discovering status: (@c true = in progress , @c  false = not in progress )
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ *
+ * @see bt_adapter_le_start_device_discovery()
+ * @see bt_adapter_le_stop_device_discovery()
+ */
+int bt_adapter_le_is_discovering(bool *is_discovering) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 2.3.1
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief  Registers a callback function to be invoked when the LE device discovery state changes.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ *
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post bt_adapter_le_device_discovery_state_changed_cb() will be invoked.
+ *
+ * @see bt_initialize()
+ * @see bt_adapter_le_device_discovery_state_changed_cb()
+ * @see bt_adapter_le_unset_device_discovery_state_changed_cb()
+ */
+int bt_adapter_le_set_device_discovery_state_changed_cb(bt_adapter_le_device_discovery_state_changed_cb callback, void *user_data) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 2.3.1
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief      Unregisters the callback function.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ *
+ * @return     0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_initialize()
+ * @see bt_adapter_le_set_device_discovery_state_changed_cb()
+ */
+int bt_adapter_le_unset_device_discovery_state_changed_cb(void) TIZEN_DEPRECATED_API;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Starts the LE scan to find LE advertisement.
+ * @since_tizen 2.3.1
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @details If a LE advertisement is found, bt_adapter_le_scan_result_cb() will be invoked.
+ *
+ * @param[in] cb The callback to report the result of this function
+ * @param[in] user_data The user data to be passed when callback is called
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @post This function invokes bt_adapter_le_scan_result_cb().
+ *
+ * @see bt_adapter_le_scan_result_cb()
+ */
+int bt_adapter_le_start_scan(bt_adapter_le_scan_result_cb cb, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Stops the LE scan.
+ * @since_tizen 2.3.1
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation is not in progress
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The LE scan must be in progress with bt_adapter_le_start_scan().
+ *
+ * @see bt_adapter_le_start_scan()
+ */
+int bt_adapter_le_stop_scan(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Gets the service UUID list from the scan result information
+ * @since_tizen 2.3.1
+ *
+ * @remarks The @a uuids must be iterated as count and each pointed data must be released with free().
+ * Then uuids must be released with free(). \n
+ * 16-bit service UUID or 128-bit service UUID is supported. (e.g. 180F, 0000180F-0000-1000-8000-00805F9B34FB)
+ *
+ * @param[in] info The scan result information
+ * @param[in] pkt_type The packet type
+ * @param[out] uuids The list of string of the service uuid
+ * @param[out] count The count of the service UUIDs
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NO_DATA  No data available
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_scan_result_cb()
+ */
+int bt_adapter_le_get_scan_result_service_uuids(const bt_adapter_le_device_scan_result_info_s *info,
+                       bt_adapter_le_packet_type_e pkt_type, char ***uuids, int *count);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Gets the device name from the scan result information
+ * @since_tizen 2.3.1
+ *
+ * @remarks The @a name must be released with free() by you.
+ *
+ * @param[in] info The scan result information
+ * @param[in] pkt_type The packet type
+ * @param[out] name The device name
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NO_DATA  No data available
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_scan_result_cb()
+ */
+int bt_adapter_le_get_scan_result_device_name(const bt_adapter_le_device_scan_result_info_s *info,
+                       bt_adapter_le_packet_type_e pkt_type, char **name);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Gets the transmission power level from the scan result information
+ * @since_tizen 2.3.1
+ *
+ * @param[in] info The scan result information
+ * @param[in] pkt_type The packet type
+ * @param[out] power_level The transmission power level in dBm
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NO_DATA  No data available
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_scan_result_cb()
+ */
+int bt_adapter_le_get_scan_result_tx_power_level(const bt_adapter_le_device_scan_result_info_s *info,
+                       bt_adapter_le_packet_type_e pkt_type, int *power_level);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Gets the service solicitation UUID list from the scan result information
+ * @since_tizen 2.3.1
+ *
+ * @remarks The @a uuids must be iterated as count and each pointed data must be released with free().
+ * Then uuids must be released with free(). \n
+ * 16-bit service solicitation UUID or 128-bit service solicitation UUID is supported.
+ * (e.g. 180F, 0000180F-0000-1000-8000-00805F9B34FB)
+ *
+ * @param[in] info The scan result information
+ * @param[in] pkt_type The packet type
+ * @param[out] uuids The list of string of the service solicitation uuid
+ * @param[out] count The count of the service UUIDs
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NO_DATA  No data available
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_scan_result_cb()
+ */
+int bt_adapter_le_get_scan_result_service_solicitation_uuids(const bt_adapter_le_device_scan_result_info_s *info,
+                       bt_adapter_le_packet_type_e pkt_type, char ***uuids, int *count);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Gets the service data list from the scan result information
+ * @since_tizen 2.3.1
+ *
+ * @remarks The @a data_list must be released with bt_adapter_le_free_service_data_list() by you .
+ *
+ * @param[in] info The scan result information
+ * @param[in] pkt_type The packet type
+ * @param[out] data_list The list of the service data
+ * @param[out] count The count of the service data list
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NO_DATA  No data available
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_scan_result_cb()
+ */
+int bt_adapter_le_get_scan_result_service_data_list(const bt_adapter_le_device_scan_result_info_s *info,
+                       bt_adapter_le_packet_type_e pkt_type, bt_adapter_le_service_data_s **data_list, int *count);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Frees service data list.
+ * @since_tizen 2.3.1
+ *
+ * @param[in] data_list The list of the service data
+ * @param[in] count The count of the service data list
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_adapter_le_get_scan_result_service_data_list()
+ */
+int bt_adapter_le_free_service_data_list(bt_adapter_le_service_data_s *data_list, int count);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Gets the appearance from the scan result information
+ * @since_tizen 2.3.1
+ *
+ * @param[in] info The scan result information
+ * @param[in] pkt_type The packet type
+ * @param[out] appearance The appearance
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NO_DATA  No data available
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_scan_result_cb()
+ */
+int bt_adapter_le_get_scan_result_appearance(const bt_adapter_le_device_scan_result_info_s *info,
+                       bt_adapter_le_packet_type_e pkt_type, int *appearance);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Gets the manufacturer data from the scan result information
+ * @since_tizen 2.3.1
+ *
+ * @remarks The @a manufacturer_data must be released with free() by you.
+ *
+ * @param[in] info The scan result information
+ * @param[in] pkt_type The packet type
+ * @param[out] manufacturer_id The manufacturer ID
+ * @param[out] manufacturer_data The manufacturer data (byte array)
+ * @param[out] manufacturer_data_len The length of manufacturer data
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NO_DATA  No data available
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_scan_result_cb()
+ */
+int bt_adapter_le_get_scan_result_manufacturer_data(const bt_adapter_le_device_scan_result_info_s *info,
+                       bt_adapter_le_packet_type_e pkt_type, int *manufacturer_id, char **manufacturer_data, int *manufacturer_data_len);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Gets iBeacon format's data from the scan result information.
+ * @since_tizen 4.0
+ *
+ * @remarks The @a ibeacon_info must be released with bt_adapter_le_free_ibeacon_report().
+ *
+ * @param[in] info The scan result information
+ * @param[in] pkt_type The packet type
+ * @param[out] ibeacon_info The iBeacon format's scan result data
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NO_DATA  No data available
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_scan_result_cb()
+ */
+int bt_adapter_le_get_scan_result_ibeacon_report(const bt_adapter_le_device_scan_result_info_s *info,
+                       bt_adapter_le_packet_type_e pkt_type,
+                       bt_adapter_le_ibeacon_scan_result_info_s **ibeacon_info);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Frees iBeacon information.
+ * @since_tizen 4.0
+ *
+ * @param[in] ibeacon_info The iBeacon format's scan result data
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_adapter_le_get_scan_result_service_data_list()
+ */
+int bt_adapter_le_free_ibeacon_report(bt_adapter_le_ibeacon_scan_result_info_s *ibeacon_info);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Create advertiser to advertise device's existence or respond to LE scanning request.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[out] advertiser The handle of advertiser
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_destroy_advertiser()
+ */
+int bt_adapter_le_create_advertiser(bt_advertiser_h *advertiser);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Destroy advertiser.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[out] advertiser The handle of advertiser
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_create_advertiser()
+ */
+int bt_adapter_le_destroy_advertiser(bt_advertiser_h advertiser);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_IPSP_MODULE
+ * @brief Initializes the Bluetooth IPSP (Internet Protocol Support Profile) service.
+ * @since_tizen 4.0
+ * @param[in] callback The callback called when the initialization is finished
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ */
+int bt_ipsp_initialize(bt_ipsp_init_state_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_IPSP_MODULE
+ * @brief Deinitializes the Bluetooth IPSP (Internet Protocol Support Profile) service.
+ * @since_tizen 4.0
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ */
+int bt_ipsp_deinitialize(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_IPSP_MODULE
+ * @brief Connects to a remote device's IPSP service over LE, asynchronously.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] remote_address  The remote address
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @post bt_ipsp_set_connection_state_changed_cb() will be invoked.
+ * @see bt_ipsp_set_connection_state_changed_cb()
+ */
+int bt_ipsp_connect(const char *remote_address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_IPSP_MODULE
+ * @brief Disonneicts from a remote device's IPSP service, asynchronously.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] remote_address  The remote address
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The remote device must be connected by bt_ipsp_connect().
+ * @post bt_ipsp_set_connection_state_changed_cb() will be invoked.
+ * @see bt_ipsp_connect()
+ * @see bt_ipsp_set_connection_state_changed_cb()
+ */
+int bt_ipsp_disconnect(const char *remote_address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_IPSP_MODULE
+ * @brief  Registers a callback function that will be invoked when the connection state changes.
+ * @since_tizen 4.0
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ */
+int bt_ipsp_set_connection_state_changed_cb(bt_ipsp_connection_state_changed_cb callback,
+                                               void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_IPSP_MODULE
+ * @brief      Unregisters the callback function called when the connection state changes.
+ * @since_tizen 4.0
+ * @return     0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ */
+int bt_ipsp_unset_connection_state_changed_cb(void);
+
+/**
+ * @deprecated Deprecated since 2.3.1
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Set the data to be advertised or responded to scan request from LE scanning device.
+ *        The maximum advertised or responded data size is 31 bytes
+ *        including data type and system wide data.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ *
+ * @remarks In case the data_type is local name or tx power level, you don't need to input data
+ * because the data value is written automatically by system.
+ *
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] pkt_type The packet type
+ * @param[in] data_type The data type that is included in packet
+ * @param[in] data The data to be advertised or be responded to scan request from LE scanning device, no need in case of LOCAL_NAME or TX_POWER_LEVEL
+ * @param[in] data_size The size of data to be set.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_clear_advertising_data()
+ */
+int bt_adapter_le_add_advertising_data(bt_advertiser_h advertiser,
+               bt_adapter_le_packet_type_e pkt_type, bt_adapter_le_packet_data_type_e data_type,
+               void *data, unsigned int data_size) TIZEN_DEPRECATED_API;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Add a service UUID to advertise or scan response data.
+ *        The maximum advertised or responded data size is 31 bytes
+ *        including data type and system wide data.
+ * @since_tizen 2.3.1
+ *
+ * @remarks 16-bit UUID or 128-bit UUID is supported. (e.g. 180F, 0000180F-0000-1000-8000-00805F9B34FB)
+ *
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] pkt_type The packet type
+ * @param[in] uuid The string of the service UUID.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_clear_advertising_data()
+ */
+int bt_adapter_le_add_advertising_service_uuid(bt_advertiser_h advertiser,
+               bt_adapter_le_packet_type_e pkt_type, const char *uuid);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Add a service solicitation UUID to advertise or scan response data.
+ *        The maximum advertised or responded data size is 31 bytes
+ *        including data type and system wide data.
+ * @since_tizen 2.3.1
+ *
+ * @remarks 16-bit service solicitation UUID or 128-bit service solicitation UUID is supported.
+ * (e.g. 180F, 0000180F-0000-1000-8000-00805F9B34FB)
+ *
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] pkt_type The packet type
+ * @param[in] uuid The string of the service solicitation UUID.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_clear_advertising_data()
+ */
+int bt_adapter_le_add_advertising_service_solicitation_uuid(bt_advertiser_h advertiser,
+               bt_adapter_le_packet_type_e pkt_type, const char *uuid);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Add service data to advertise or scan response data.
+ *        The maximum advertised or responded data size is 31 bytes
+ *        including data type and system wide data.
+ * @since_tizen 2.3.1
+ *
+ * @remarks 16-bit UUID is supported. (e.g. 180F)
+ *
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] pkt_type The packet type
+ * @param[in] uuid 16-bit UUID of the service
+ * @param[in] service_data The service data
+ * @param[in] service_data_len The data length of service data
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_clear_advertising_data()
+ */
+int bt_adapter_le_add_advertising_service_data(bt_advertiser_h advertiser,
+               bt_adapter_le_packet_type_e pkt_type, const char *uuid,
+               const char *service_data, int service_data_len);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Sets the external appearance of this device to advertise or scan response data.
+ *        Please refer to the adopted Bluetooth specification for the the appearance.
+ * @since_tizen 2.3.1
+ *
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] pkt_type The packet type
+ * @param[in] appearance The external appearance of device
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_clear_advertising_data()
+ */
+int bt_adapter_le_set_advertising_appearance(bt_advertiser_h advertiser,
+               bt_adapter_le_packet_type_e pkt_type, int appearance);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Add manufacturer specific data to advertise or scan response data.
+ *        Please refer to the Bluetooth Assigned Numbers provided by the Bluetooth SIG for a list of existing company identifiers.
+ *        The maximum advertised or responded data size is 31 bytes
+ *        including data type and system wide data.
+ * @since_tizen 2.3.1
+ *
+ *
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] pkt_type The packet type
+ * @param[in] manufacturer_id Manufacturer identifier
+ * @param[in] manufacturer_data The manufacturer specific data
+ * @param[in] manufacturer_data_len The data length of manufacturer data
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_clear_advertising_data()
+ */
+int bt_adapter_le_add_advertising_manufacturer_data(bt_advertiser_h advertiser,
+               bt_adapter_le_packet_type_e pkt_type, int manufacturer_id, const char *manufacturer_data, int manufacturer_data_len);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Set whether the device name should be included in advertise or scan response data.
+ *        The maximum advertised or responded data size is 31 bytes
+ *        including data type and system wide data.
+ * @since_tizen 2.3.1
+ *
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] pkt_type The packet type
+ * @param[in] include_name Whether the device name should be included
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_clear_advertising_data()
+ */
+int bt_adapter_le_set_advertising_device_name(bt_advertiser_h advertiser,
+               bt_adapter_le_packet_type_e pkt_type, bool include_name);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Set whether the transmission power level should be included in advertise or scan response data.
+ *        The maximum advertised or responded data size is 31 bytes
+ *        including data type and system wide data.
+ * @since_tizen 2.3.1
+ *
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] pkt_type The packet type
+ * @param[in] include_tx_power Whether the transmission power level should be included
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_clear_advertising_data()
+ */
+int bt_adapter_le_set_advertising_tx_power_level(bt_advertiser_h advertiser,
+               bt_adapter_le_packet_type_e pkt_type, bool include_tx_power);
+
+/**
+ * @deprecated Deprecated since 2.3.1
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Unset the data to be advertised or responded to scan request from LE scanning device.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ *
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] pkt_type The packet type
+ * @param[in] data_type The data type to be removed from selected packet
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_add_advertising_data()
+ * @see bt_adapter_le_clear_advertising_data()
+ */
+int bt_adapter_le_remove_advertising_data(bt_advertiser_h advertiser,
+               bt_adapter_le_packet_type_e pkt_type, bt_adapter_le_packet_data_type_e data_type) TIZEN_DEPRECATED_API;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Clear all data to be advertised or responded to scan request from LE scanning device.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] pkt_type The packet type to be cleared
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_add_advertising_data()
+ */
+int bt_adapter_le_clear_advertising_data(bt_advertiser_h advertiser, bt_adapter_le_packet_type_e pkt_type);
+
+/**
+ * @deprecated Deprecated since 2.3.1
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Start advertising with passed advertiser and advertising parameters.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @details Once Bluetooth advertising is started, nearby Bluetooth LE(Low Energy) supported
+ * devices can know this device's existence. And one of them can make a connection request,
+ * if it is allowed.
+ *
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] adv_params The parameters of advertising \n
+ * If NULL is passed, default values which are defined in driver / controller are used.
+ * @param[in] cb The callback to report the result of this function
+ * @param[in] user_data The user data to be passed when callback is called
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post This function invokes bt_adapter_le_advertising_state_changed_cb().
+ *
+ * @see bt_adapter_le_stop_advertising()
+ * @see bt_adapter_le_advertising_state_changed_cb()
+ */
+int bt_adapter_le_start_advertising(bt_advertiser_h advertiser, bt_adapter_le_advertising_params_s *adv_params,
+               bt_adapter_le_advertising_state_changed_cb cb, void *user_data) TIZEN_DEPRECATED_API;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Stops the advertising.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] advertiser The handle of advertiser
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation is not in progress
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The advertising must be going on with bt_adapter_le_start_advertising_new().
+ * @post This function invokes bt_adapter_le_advertising_state_changed_cb().
+ *
+ * @see bt_adapter_le_start_advertising_new()
+ * @see bt_adapter_le_advertising_state_changed_cb()
+ */
+int bt_adapter_le_stop_advertising(bt_advertiser_h advertiser);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Start advertising with passed advertiser and advertising parameters.
+ * @since_tizen 2.3.1
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @details Once Bluetooth advertising is started, nearby Bluetooth LE(Low Energy) supported
+ * devices can know this device's existence. And one of them can make a connection request,
+ * if it is allowed.
+ *
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] cb The callback to report the result of this function
+ * @param[in] user_data The user data to be passed when callback is called
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post This function invokes bt_adapter_le_advertising_state_changed_cb().
+ *
+ * @see bt_adapter_le_stop_advertising()
+ * @see bt_adapter_le_advertising_state_changed_cb()
+ */
+int bt_adapter_le_start_advertising_new(bt_advertiser_h advertiser, bt_adapter_le_advertising_state_changed_cb cb, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Set advertising mode to control the advertising power and latency.
+ * @since_tizen 2.3.1
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] mode The mode of advertising
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_start_advertising_new()
+ */
+int bt_adapter_le_set_advertising_mode(bt_advertiser_h advertiser, bt_adapter_le_advertising_mode_e mode);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Set whether the advertising type should be connectable or non-connectable
+ * @since_tizen 2.3.1
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] connectable The type of advertising
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_start_advertising_new()
+ */
+int bt_adapter_le_set_advertising_connectable(bt_advertiser_h advertiser, bool connectable);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Sets Bluetooth LE scan mode
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] scan_mode The scan mode
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_ENABLED Adapter is not enabled
+ * @retval #BT_ERROR_INVALID_PARAMETER Parameter is invalid
+ * @retval #BT_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @pre The state of local bluetooth must be #BT_ADAPTER_ENABLED.
+ * @pre The bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ */
+int bt_adapter_le_set_scan_mode(bt_adapter_le_scan_mode_e scan_mode);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Creates a bond with a remote Bluetooth device, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @remarks A bond can be destroyed by bt_device_destroy_bond().\n
+ * The bonding request can be cancelled by bt_device_cancel_bonding().
+ *
+ * @param[in] remote_address The address of the remote Bluetooth device with which the bond should be created
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @pre The remote device must be discoverable with bt_adapter_start_device_discovery().
+ * @post This function invokes bt_device_bond_created_cb().
+ *
+ * @see bt_adapter_start_device_discovery()
+ * @see bt_device_bond_created_cb()
+ * @see bt_device_cancel_bonding()
+ * @see bt_device_destroy_bond()
+ * @see bt_device_set_bond_created_cb()
+ * @see bt_device_unset_bond_created_cb()
+ */
+int bt_device_create_bond(const char *remote_address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Cancels the bonding process.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @remarks Use this function when the remote Bluetooth device is not responding to the
+ * bond request or you wish to cancel the bonding request.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation not in progress
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The creating a bond must be in progress by bt_device_create_bond().
+ *
+ * @see bt_device_create_bond()
+ * @see bt_device_bond_created_cb()
+ * @see bt_device_set_bond_created_cb()
+ * @see bt_device_unset_bond_created_cb()
+ */
+int bt_device_cancel_bonding(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Destroys the bond, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] remote_address The address of the remote Bluetooth device to remove bonding
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @pre The bond with the remote device must be created with bt_device_create_bond().
+ * @post This function invokes bt_device_bond_destroyed_cb().
+ *
+ * @see bt_device_create_bond()
+ * @see bt_device_bond_destroyed_cb()
+ * @see bt_device_set_bond_destroyed_cb()
+ * @see bt_device_unset_bond_destroyed_cb()
+ */
+int bt_device_destroy_bond(const char *remote_address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Sets an alias for the bonded device.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] remote_address The address of the remote Bluetooth device
+ * @param[in] alias The alias of the remote Bluetooth device
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @pre The bond with the remote device must be created with bt_device_create_bond().
+ *
+ * @see bt_device_create_bond()
+ */
+int bt_device_set_alias(const char *remote_address, const char *alias);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Sets the authorization of a bonded device, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @remarks Once a device is authorized, you don't need to receive a confirmation.
+ *
+ * @param[in] remote_address The address of the remote Bluetooth device to authorize
+ * @param[in] authorization_state The Bluetooth authorization state
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @pre The bond with the remote device must be created with bt_device_create_bond().
+ * @post bt_device_authorization_changed_cb() will be invoked.
+ *
+ * @see bt_device_create_bond()
+ * @see bt_device_authorization_changed_cb()
+ * @see bt_device_set_authorization_changed_cb()
+ * @see bt_device_unset_authorization_changed_cb()
+ */
+int bt_device_set_authorization(const char *remote_address, bt_device_authorization_e authorization_state);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Starts the search for services supported by the specified device, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @remarks If creating a bond succeeds, which means bt_device_bond_created_cb() is called with result #BT_ERROR_NONE,
+ * then you don't need to run this function.\n
+ * The service search takes a couple of seconds to complete normally. \n
+ *
+ * @param[in] remote_address The address of the remote Bluetooth device whose services need to be checked
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
+ * @retval #BT_ERROR_SERVICE_SEARCH_FAILED  Service search failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @pre The remote device must be discoverable with bt_adapter_start_device_discovery().
+ * @pre The bond with the remote device must be created with bt_device_create_bond().
+ * @post This function invokes bt_device_service_searched_cb().
+ *
+ * @see bt_adapter_start_device_discovery()
+ * @see bt_device_create_bond()
+ * @see bt_device_bond_created_cb()
+ * @see bt_device_service_searched_cb()
+ * @see bt_device_set_service_searched_cb()
+ * @see bt_device_unset_service_searched_cb()
+ */
+int bt_device_start_service_search(const char *remote_address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Gets the connected profiles.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] remote_address The address of the remote device
+ * @param[in] callback The callback function to invoke
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @post bt_device_connected_profile() will be invoked.
+ * @see bt_device_connected_profile()
+ */
+int bt_device_foreach_connected_profiles(const char *remote_address, bt_device_connected_profile callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Gets the profile connected status.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] remote_address The address of the remote device
+ * @param[in] bt_profile wish to know bt_profile
+ * @param[out] connected_status the connected status
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ */
+int bt_device_is_profile_connected(const char *remote_address, bt_profile_e bt_profile,
+                                       bool *connected_status);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Updates a LE connection mode
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] remote_address The address of the remote Bluetooth device
+ * @param[in] mode The LE connection mode
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED   Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_device_update_le_connection_mode(const char *remote_address, bt_device_le_connection_mode_e mode);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Registers a callback function to be invoked when the bond creates.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post  bt_device_bond_created_cb() will be invoked.
+ * @see bt_initialize()
+ * @see bt_device_bond_created_cb()
+ * @see bt_device_unset_bond_created_cb()
+ */
+int bt_device_set_bond_created_cb(bt_device_bond_created_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief      Unregisters the callback function.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return     0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see bt_device_set_bond_created_cb()
+ */
+int bt_device_unset_bond_created_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Registers a callback function to be invoked when the bond destroys.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post  bt_device_bond_destroyed_cb() will be invoked.
+ * @see bt_initialize()
+ * @see bt_device_bond_destroyed_cb()
+ * @see bt_device_unset_bond_destroyed_cb()
+ */
+int bt_device_set_bond_destroyed_cb(bt_device_bond_destroyed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief      Unregisters the callback function.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return     0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see bt_device_set_bond_destroyed_cb()
+ */
+int bt_device_unset_bond_destroyed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Registers a callback function to be invoked when the authorization of device changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post  bt_device_authorization_changed_cb() will be invoked.
+ * @see bt_initialize()
+ * @see bt_device_authorization_changed_cb()
+ * @see bt_device_set_authorization_changed_cb()
+ * @see bt_device_unset_authorization_changed_cb()
+ */
+int bt_device_set_authorization_changed_cb(bt_device_authorization_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief      Unregisters the callback function.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return     0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see bt_device_set_authorization_changed_cb()
+ */
+int bt_device_unset_authorization_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Registers a callback function to be invoked when the process of service search finishes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post  bt_device_service_searched_cb() will be invoked.
+ * @see bt_initialize()
+ * @see bt_device_service_searched_cb()
+ * @see bt_device_unset_service_searched_cb()
+ */
+int bt_device_set_service_searched_cb(bt_device_service_searched_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief      Unregisters the callback function.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return     0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see bt_device_set_service_searched_cb()
+ */
+int bt_device_unset_service_searched_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Registers a callback function to be invoked when the connection state is changed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post bt_device_connection_state_changed_cb() will be invoked.
+ * @see bt_initialize()
+ * @see bt_device_connection_state_changed_cb()
+ * @see bt_device_unset_connection_state_changed_cb()
+ */
+int bt_device_set_connection_state_changed_cb(bt_device_connection_state_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief      Unregisters the callback function to be invoked when the connection state is changed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see bt_device_set_connection_state_changed_cb()
+ */
+int bt_device_unset_connection_state_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief Registers a rfcomm server socket with a specific UUID.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @remarks A socket can be destroyed by bt_socket_destroy_rfcomm().
+ *
+ * @param[in] service_uuid The UUID of service to provide
+ * @param[out] socket_fd The file descriptor of socket to listen
+ * @return 0 on success, otherwise a negative error value.
+ *
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ *
+ * @see bt_socket_listen_and_accept_rfcomm()
+ * @see bt_socket_destroy_rfcomm()
+ */
+int bt_socket_create_rfcomm(const char *service_uuid, int *socket_fd);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief Removes the rfcomm server socket which was created using bt_socket_create_rfcomm().
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @remarks If callback function bt_socket_connection_state_changed_cb() is set and the remote Bluetooth device is connected,
+ * then bt_socket_connection_state_changed_cb() will be called when this function is finished successfully.
+ *
+ * @param[in] socket_fd The file descriptor of socket (which was created using bt_socket_create_rfcomm()) to destroy
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The socket must be created with bt_socket_create_rfcomm().
+ * @post If callback function bt_socket_connection_state_changed_cb() is set and the remote Bluetooth device is connected,
+ * then bt_socket_connection_state_changed_cb() will be called.
+ * @see bt_socket_create_rfcomm()
+ * @see bt_socket_connection_state_changed_cb()
+ * @see bt_socket_set_connection_state_changed_cb()
+ * @see bt_socket_unset_connection_state_changed_cb()
+ */
+int bt_socket_destroy_rfcomm(int socket_fd);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief Starts listening on passed rfcomm socket and accepts connection requests.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @details Pop-up is shown automatically when a RFCOMM connection is requested.
+ * bt_socket_connection_state_changed_cb() will be called with
+ * #BT_SOCKET_CONNECTED if you click "yes" and connection is finished successfully.
+ * @param[in] socket_fd The file descriptor of socket on which start to listen
+ * @param[in] max_pending_connections The maximum number of pending connections
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The socket must be created with bt_socket_create_rfcomm().
+ * @post If callback function bt_socket_connection_state_changed_cb() is set,
+ * then bt_socket_connection_state_changed_cb() will be called when the remote Bluetooth device is connected.
+ * @see bt_socket_create_rfcomm()
+ * @see bt_socket_connection_state_changed_cb()
+ * @see bt_socket_set_connection_state_changed_cb()
+ * @see bt_socket_unset_connection_state_changed_cb()
+ */
+int bt_socket_listen_and_accept_rfcomm(int socket_fd, int max_pending_connections);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief Connects to a specific RFCOMM based service on a remote Bluetooth device UUID, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @remarks A connection can be disconnected by bt_socket_disconnect_rfcomm().
+ *
+ * @param[in] remote_address The address of the remote Bluetooth device
+ * @param[in] service_uuid The UUID of service provided by the remote Bluetooth device
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @pre The remote device must be discoverable with bt_adapter_start_device_discovery().
+ * @pre The bond with the remote device must be created with bt_device_create_bond().
+ * @post This function invokes bt_socket_connection_state_changed_cb().
+ *
+ * @see bt_device_create_bond()
+ * @see bt_adapter_start_device_discovery()
+ * @see bt_device_start_service_search()
+ * @see bt_socket_disconnect_rfcomm()
+ * @see bt_socket_connection_state_changed_cb()
+ * @see bt_socket_set_connection_state_changed_cb()
+ * @see bt_socket_unset_connection_state_changed_cb()
+ */
+int bt_socket_connect_rfcomm(const char *remote_address, const char *service_uuid);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief Disconnects the RFCOMM connection with the given file descriptor of connected socket.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] socket_fd  The file descriptor of socket to close which was received using bt_socket_connection_state_changed_cb().
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The connection must be established.
+ *
+ * @see bt_socket_connection_state_changed_cb()
+ * @see bt_socket_set_connection_state_changed_cb()
+ * @see bt_socket_unset_connection_state_changed_cb()
+ */
+int bt_socket_disconnect_rfcomm(int socket_fd);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief Sends data to the connected device.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @remark The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
+ *
+ * @param[in] socket_fd The file descriptor of connected socket which was received using bt_socket_connection_state_changed_cb()
+ * @param[in] data The data to be sent
+ * @param[in] length The length of data to be sent
+ *
+ * @return the number of bytes written (zero indicates nothing was written).
+ * @retval On error, -1 is returned, and errno is set appropriately. See write 2 man page.
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ * @exception BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @exception BT_ERROR_AGAIN  Resource temporarily unavailable
+ *
+ * @pre The connection must be established.
+ *
+ * @see bt_socket_connection_state_changed_cb()
+ * @see bt_socket_set_connection_state_changed_cb()
+ * @see bt_socket_unset_connection_state_changed_cb()
+ */
+int bt_socket_send_data(int socket_fd, const char *data, int length);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief  Register a callback function that will be invoked when you receive data.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post  bt_socket_data_received_cb() will be invoked.
+ * @see bt_initialize()
+ * @see bt_socket_data_received_cb()
+ * @see bt_socket_set_data_received_cb()
+ * @see bt_socket_unset_data_received_cb()
+ */
+int bt_socket_set_data_received_cb(bt_socket_data_received_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief      Unregisters the callback function.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return     0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see bt_socket_data_received_cb()
+ * @see bt_socket_set_data_received_cb()
+ */
+int bt_socket_unset_data_received_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief  Register a callback function that will be invoked when a RFCOMM connection is requested.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post bt_socket_connection_requested_cb() will be invoked.
+ * @see bt_initialize()
+ * @see bt_socket_unset_connection_requested_cb()
+ */
+int bt_socket_set_connection_requested_cb(bt_socket_connection_requested_cb callback, void *user_data);
+
+/**
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief  Unregisters the callback function.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return  0 on success, otherwise a negative error value.
+ * @retval  #BT_ERROR_NONE  Successful
+ * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval  #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre  The Bluetooth service must be initialized with bt_initialize().
+ * @see  bt_initialize()
+ * @see  bt_socket_set_connection_requested_cb()
+ * @see  bt_socket_connection_requested_cb()
+ */
+int bt_socket_unset_connection_requested_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief  Register a callback function that will be invoked when the connection state changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post bt_socket_connection_state_changed_cb() will be invoked.
+ * @see bt_initialize()
+ * @see bt_socket_connection_state_changed_cb()
+ * @see bt_socket_unset_connection_state_changed_cb()
+ */
+int bt_socket_set_connection_state_changed_cb(bt_socket_connection_state_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief      Unregisters the callback function.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return     0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see bt_socket_connection_state_changed_cb()
+ * @see bt_socket_set_connection_state_changed_cb()
+ */
+int bt_socket_unset_connection_state_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
+ * @brief Initializes the Bluetooth OPP server requested by bt_opp_server_connection_requested_cb().
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @details No popup appears when an OPP connection is requested from a remote device.
+ * Instead, @a connection_requested_cb() will be called.
+ * At that time, you can call either bt_opp_server_accept() or bt_opp_server_reject().
+ * @remarks This function must be called to start Bluetooth OPP server. \n
+ * You must free all resources of the Bluetooth service by calling bt_opp_server_deinitialize() if Bluetooth OPP service is no longer needed.
+ * @param[in] destination  The destination path
+ * @param[in] connection_requested_cb  The callback called when an OPP connection is requested
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @see  bt_opp_server_connection_requested_cb()
+ * @see  bt_opp_server_deinitialize()
+ * @see  bt_opp_server_accept()
+ * @see  bt_opp_server_reject()
+ */
+int bt_opp_server_initialize_by_connection_request(const char *destination, bt_opp_server_connection_requested_cb connection_requested_cb, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
+ * @brief Deinitializes the Bluetooth OPP server.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @see  bt_opp_server_deinitialize()
+ */
+int bt_opp_server_deinitialize(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
+ * @brief Accepts the push request from the remote device.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @remarks If you initialize OPP server by bt_opp_server_initialize_by_connection_request(), then name is ignored.
+ * You can cancel the pushes by bt_opp_server_cancel_transfer() with transfer_id.
+ * @param[in] progress_cb  The callback called when a file is being transferred
+ * @param[in] finished_cb  The callback called when a transfer is finished
+ * @param[in] name  The name to store. This can be NULL if you initialize OPP server by bt_opp_server_initialize_by_connection_request().
+ * @param[in] user_data The user data to be passed to the callback function
+ * @param[out]  transfer_id  The ID of transfer
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @see  bt_opp_server_reject()
+ */
+int bt_opp_server_accept(bt_opp_server_transfer_progress_cb progress_cb,
+       bt_opp_server_transfer_finished_cb finished_cb, const char *name,
+       void *user_data, int *transfer_id);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
+ * @brief Rejects the push request from the remote device.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @see  bt_opp_server_accept()
+ */
+int bt_opp_server_reject(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
+ * @brief Cancels the transfer.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] transfer_id  The ID of transfer
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @see  bt_opp_server_accept()
+ */
+int bt_opp_server_cancel_transfer(int transfer_id);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
+ * @brief Sets the destination path of file to be pushed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] destination  The destination path of file to be pushed
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ */
+int bt_opp_server_set_destination(const char *destination);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
+ * @brief Initializes the Bluetooth OPP client.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @remarks This function must be called before Bluetooth OPP client starts. \n
+ * You must free all resources of the Bluetooth service by calling bt_opp_client_deinitialize()
+ * if Bluetooth OPP service is no longer needed.
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @see  bt_opp_client_deinitialize()
+ */
+int bt_opp_client_initialize(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
+ * @brief Deinitializes the Bluetooth OPP client.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @see  bt_opp_client_initialize()
+ */
+int bt_opp_client_deinitialize(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
+ * @brief Adds file to be pushed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] file  The path of file to be pushed
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @see  bt_opp_client_clear_files()
+ * @see  bt_opp_client_push_files()
+ */
+int bt_opp_client_add_file(const char *file);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
+ * @brief Adds file to be pushed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @see  bt_opp_client_add_file()
+ * @see  bt_opp_client_push_files()
+ */
+int bt_opp_client_clear_files(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
+ * @brief Pushes the file to the remote device, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @details At first, bt_opp_client_push_responded_cb() will be called when OPP server responds to the push request.
+ * After connection is established, bt_opp_client_push_progress_cb() will be called repeatedly until a file is transferred completely.
+ * If you send several files, then bt_opp_client_push_progress_cb() with another file will be called repeatedly until the file is transferred completely.
+ * bt_opp_client_push_finished_cb() will be called when the push request is finished.
+ * @param[in] remote_address The remote address
+ * @param[in] responded_cb  The callback called when OPP server responds to the push request
+ * @param[in] progress_cb  The callback called when each file is being transferred
+ * @param[in] finished_cb  The callback called when the push request is finished
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @see bt_opp_client_initialize()
+ * @see bt_opp_client_cancel_push
+ */
+int bt_opp_client_push_files(const char *remote_address,
+       bt_opp_client_push_responded_cb responded_cb,
+       bt_opp_client_push_progress_cb progress_cb,
+       bt_opp_client_push_finished_cb finished_cb,
+       void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
+ * @brief Cancels the push request in progress, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre bt_opp_client_push_files() must be called.
+ * @post bt_opp_client_push_finished_cb() will be invoked with result #BT_ERROR_CANCELLED,
+ * which is a parameter of bt_opp_client_push_files().
+ * @see bt_opp_client_initialize()
+ * @see bt_opp_client_push_files()
+ */
+int bt_opp_client_cancel_push(void);
+
+/**
+ * @ingroup @if WEARABLE CAPI_NETWORK_BLUETOOTH_HID_HOST_MODULE CAPI @else_NETWORK_BLUETOOTH_HID_MODULE @endif
+ * @brief Initializes the Bluetooth HID(Human Interface Device) Host.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @remarks This function must be called before Bluetooth HID Host starts. \n
+ * You must free all resources of the Bluetooth service by calling bt_hid_host_deinitialize()
+ * if Bluetooth HID Host service is no longer needed.
+ * @param[in] connection_cb  The callback called when the connection state is changed
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see  bt_hid_host_deinitialize()
+ */
+int bt_hid_host_initialize(bt_hid_host_connection_state_changed_cb connection_cb, void *user_data);
+
+/**
+ * @ingroup @if WEARABLE CAPI_NETWORK_BLUETOOTH_HID_HOST_MODULE CAPI @else_NETWORK_BLUETOOTH_HID_MODULE @endif
+ * @brief Deinitializes the Bluetooth HID(Human Interface Device) Host.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The Bluetooth HID service must be initialized with bt_hid_host_initialize().
+ * @see  bt_hid_host_initialize()
+ */
+int bt_hid_host_deinitialize(void);
+
+/**
+ * @ingroup @if WEARABLE CAPI_NETWORK_BLUETOOTH_HID_HOST_MODULE CAPI @else_NETWORK_BLUETOOTH_HID_MODULE @endif
+ * @brief Connects the remote device with the HID(Human Interface Device) service, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] remote_address  The remote address
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The local device must be bonded with the remote device by bt_device_create_bond().
+ * @pre The Bluetooth HID service must be initialized with bt_hid_host_initialize().
+ * @post bt_hid_host_connection_state_changed_cb() will be invoked.
+ * @see bt_hid_host_disconnect()
+ * @see bt_hid_host_connection_state_changed_cb()
+ */
+int bt_hid_host_connect(const char *remote_address);
+
+/**
+ * @ingroup @if WEARABLE CAPI_NETWORK_BLUETOOTH_HID_HOST_MODULE CAPI @else_NETWORK_BLUETOOTH_HID_MODULE @endif
+ * @brief Disconnects the remote device with the HID(Human Interface Device) service, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] remote_address  The remote address
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The remote device must be connected by bt_hid_host_connect().
+ * @post bt_hid_host_connection_state_changed_cb() will be invoked.
+ * @see bt_hid_host_connect()
+ * @see bt_hid_host_connection_state_changed_cb()
+ */
+int bt_hid_host_disconnect(const char *remote_address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
+ * @brief Activates the Bluetooth HID Device role.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @remarks This function must be called to register HID UUID.
+ * Only then a remote device is able to identify this one as a HID device.
+ *
+ * @param[in] callback  The callback called when the connection state is changed
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Already activated
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see bt_hid_device_deactivate()
+ */
+int bt_hid_device_activate(bt_hid_device_connection_state_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
+ * @brief Deactivates the Bluetooth HID Device role.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @remarks This function must be called to deregister the HID UUID.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOT_IN_PROGRESS  Not activated
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see bt_hid_device_activate()
+ */
+int bt_hid_device_deactivate(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
+ * @brief Initiates the HID device connection with the Device role, asynchronously.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @remarks This function must be called to Initiate the HID device role connection.
+ *
+ * @param[in] remote_address The remote device's address.
+
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOT_IN_PROGRESS  Not activated
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_ALREADY_DONE   Already connected
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @pre The local device must be bonded with the remote device by bt_device_create_bond().
+ * @see bt_initialize()
+ * @see bt_hid_device_activate()
+ */
+int bt_hid_device_connect(const char *remote_address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
+ * @brief Disconnects from the HID Host device, asynchronously.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] remote_address The remote device's address.
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see bt_hid_device_connection_state_changed_cb()
+ */
+int bt_hid_device_disconnect(const char *remote_address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
+ * @brief Sends the mouse event data to the remote device.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] remote_address The remote device's address.
+ * @param[in] mouse_data The mouse data to be passed to the remote device.
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The HID connection must be established.
+ * @see bt_hid_device_connection_state_changed_cb()
+ */
+int bt_hid_device_send_mouse_event(const char *remote_address,
+                                       const bt_hid_mouse_data_s *mouse_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
+ * @brief Sends the keyboard event data to the remote device.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] remote_address The remote device's address.
+ * @param[in] key_data The key data to be passed to the remote device
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The HID connection must be established.
+ * @see bt_hid_device_connection_state_changed_cb()
+ */
+int bt_hid_device_send_key_event(const char *remote_address,
+                                       const bt_hid_key_data_s *key_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
+ * @brief Sets the callback called when the device receives data from the HID Host.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ *
+ * @param[in] callback The callback function to be set when data is received.
+ * @param[in] user_data The user data to be passed to the callback.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @see bt_hid_device_connection_state_changed_cb()
+ */
+int bt_hid_device_set_data_received_cb(bt_hid_device_data_received_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
+ * @brief Unsets the data received callback.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ *
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @see bt_hid_device_connection_state_changed_cb()
+ */
+int bt_hid_device_unset_data_received_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
+ * @brief Responds to reports from the HID Host.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] remote_address The remote device's address.
+ * @param[in] header_type The response header type
+ * @param[in] param_type The response parameter type
+ * @param[in] data The response data
+ * @param[in] data_len The length of the response data
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The HID connection must be established.
+ * @see bt_hid_device_connection_state_changed_cb()
+ */
+int bt_hid_device_reply_to_report(const char *remote_address,
+                               bt_hid_header_type_e header_type,
+                               bt_hid_param_type_e param_type,
+                               const char *data, unsigned int data_len);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
+ * @brief Initializes the Bluetooth profiles related with audio.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @remarks This function must be called before Bluetooth profiles related with audio starts. \n
+ * You must free all resources of the this service by calling bt_audio_deinitialize()
+ * if Bluetooth profiles related with audio service is no longer needed.
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see bt_audio_deinitialize()
+ */
+int bt_audio_initialize(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
+ * @brief Deinitializes the Bluetooth profiles related with audio.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ */
+int bt_audio_deinitialize(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
+ * @brief Connects the remote device with the given audio profile, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @details If you input type as #BT_AUDIO_PROFILE_TYPE_ALL and connection request succeeds, then bt_audio_connection_state_changed_cb() will be called twice
+ * when #BT_AUDIO_PROFILE_TYPE_HSP_HFP is connected and #BT_AUDIO_PROFILE_TYPE_A2DP is connected.
+ * @param[in] remote_address  The remote address
+ * @param[in] type  The type of audio profile
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @pre The local device must be bonded with the remote device by bt_device_create_bond().
+ * @post bt_audio_connection_state_changed_cb() will be invoked.
+ * @see bt_audio_disconnect()
+ * @see bt_audio_connection_state_changed_cb()
+ */
+int bt_audio_connect(const char *remote_address, bt_audio_profile_type_e type);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
+ * @brief Disconnects the remote device with the given audio profile, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @details If you input type as #BT_AUDIO_PROFILE_TYPE_ALL and disconnection request succeeds, then bt_audio_connection_state_changed_cb() will be called twice
+ * when #BT_AUDIO_PROFILE_TYPE_HSP_HFP is disconnected and #BT_AUDIO_PROFILE_TYPE_A2DP is disconnected.
+ * @param[in] remote_address  The remote address
+ * @param[in] type  The type of audio profile
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected by bt_audio_connect().
+ * @post bt_audio_connection_state_changed_cb() will be invoked.
+ * @see bt_audio_connect()
+ * @see bt_audio_connection_state_changed_cb()
+ */
+int bt_audio_disconnect(const char *remote_address, bt_audio_profile_type_e type);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
+ * @brief  Registers a callback function that will be invoked when the connection state is changed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_audio_connection_state_changed_cb()
+ */
+int bt_audio_set_connection_state_changed_cb(bt_audio_connection_state_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
+ * @brief  Unregisters a callback function that will be invoked when the connection state is changed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_audio_connection_state_changed_cb()
+ * @see bt_audio_set_connection_state_changed_cb()
+ */
+int bt_audio_unset_connection_state_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
+ * @brief Initializes the Bluetooth AVRCP (Audio/Video Remote Control Profile) target service.
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ * @remarks This function must be called before any other AVRCP target functions are called. \n
+ * You must free all resources of the this service by calling bt_avrcp_target_deinitialize()
+ * if Bluetooth AVRCP service is no longer needed.
+ * @param[in] callback The callback function called when the connection state is changed
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see bt_avrcp_target_deinitialize()
+ */
+int bt_avrcp_target_initialize(bt_avrcp_target_connection_state_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
+ * @brief Deinitializes the Bluetooth AVRCP (Audio/Video Remote Control Profile) target service.
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_avrcp_target_initialize().
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_target_deinitialize(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
+ * @brief  Notifies the equalizer state to the remote device.
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] state The state of equalizer
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_target_notify_equalizer_state(bt_avrcp_equalizer_state_e state);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
+ * @brief  Notifies the repeat mode to the remote device.
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] mode The repeat mode
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_target_notify_repeat_mode(bt_avrcp_repeat_mode_e mode);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
+ * @brief  Notifies the shuffle mode to the remote device.
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] mode The repeat mode
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_target_notify_shuffle_mode(bt_avrcp_shuffle_mode_e mode);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
+ * @brief  Notifies the scan mode to the remote device.
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] mode The scan mode
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_target_notify_scan_mode(bt_avrcp_scan_mode_e mode);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
+ * @brief  Notifies the player state to the remote device.
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] state The player state
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_target_notify_player_state(bt_avrcp_player_state_e state);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
+ * @brief  Notifies the current position of song to the remote device.
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] position The current position in milliseconds
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_target_notify_position(unsigned int position);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
+ * @brief  Notifies the track to the remote device.
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] title The title of track
+ * @param[in] artist The artist of track
+ * @param[in] album The album of track
+ * @param[in] genre The genre of track
+ * @param[in] track_num The track number
+ * @param[in] total_tracks The number of all tracks
+ * @param[in] duration The duration of track in milliseconds
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_target_notify_track(const char *title, const char *artist, const char *album, const char *genre, unsigned int track_num, unsigned int total_tracks, unsigned int duration);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Registers a callback function that will be invoked when the equalizer state is changed. (e.g., by a TV remote control or other input devices)
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
+ * @see bt_avrcp_target_initialize()
+ * @see bt_avrcp_control_initialize()
+ * @see bt_avrcp_unset_equalizer_state_changed_cb()
+ */
+int bt_avrcp_set_equalizer_state_changed_cb(bt_avrcp_equalizer_state_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Unregisters a callback function that will be invoked when the equalizer state is changed. (e.g., by a TV remote control or other input devices)
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
+ * @see bt_avrcp_target_initialize()
+ * @see bt_avrcp_control_initialize()
+ * @see bt_avrcp_set_equalizer_state_changed_cb()
+ */
+int bt_avrcp_unset_equalizer_state_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Registers a callback function that will be invoked when the repeat mode is changed. (e.g., by a TV remote control or other input devices)
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
+ * @see bt_avrcp_target_initialize()
+ * @see bt_avrcp_control_initialize()
+ * @see bt_avrcp_unset_repeat_mode_changed_cb()
+ */
+int bt_avrcp_set_repeat_mode_changed_cb(bt_avrcp_repeat_mode_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Unregisters a callback function that will be invoked when the repeat mode is changed. (e.g., by a TV remote control or other input devices)
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
+ * @see bt_avrcp_target_initialize()
+ * @see bt_avrcp_control_initialize()
+ * @see bt_avrcp_set_repeat_mode_changed_cb()
+ */
+int bt_avrcp_unset_repeat_mode_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Registers a callback function that will be invoked when the shuffle mode is changed. (e.g., by a TV remote control or other input devices)
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
+ * @see bt_avrcp_target_initialize()
+ * @see bt_avrcp_control_initialize()
+ * @see bt_avrcp_unset_shuffle_mode_changed_cb()
+ */
+int bt_avrcp_set_shuffle_mode_changed_cb(bt_avrcp_shuffle_mode_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Unregisters a callback function that will be invoked when the shuffle mode is changed. (e.g., by a TV remote control or other input devices)
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
+ * @see bt_avrcp_target_initialize()
+ * @see bt_avrcp_control_initialize()
+ * @see bt_avrcp_set_shuffle_mode_changed_cb()
+ */
+int bt_avrcp_unset_shuffle_mode_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Registers a callback function that will be invoked when the scan mode is changed. (e.g., by a TV remote control or other input devices)
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
+ * @see bt_avrcp_target_initialize()
+ * @see bt_avrcp_control_initialize()
+ * @see bt_avrcp_unset_scan_mode_changed_cb()
+ */
+int bt_avrcp_set_scan_mode_changed_cb(bt_avrcp_scan_mode_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Unregisters a callback function that will be invoked when the scan mode is changed. (e.g., by a TV remote control or other input devices)
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
+ * @see bt_avrcp_target_initialize()
+ * @see bt_avrcp_control_initialize()
+ * @see bt_avrcp_set_scan_mode_changed_cb()
+ */
+int bt_avrcp_unset_scan_mode_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Registers a callback function that will be invoked when the song position is changed. (e.g., by a TV remote control or other input devices)
+ * @since_tizen 3.0
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
+ * @see bt_avrcp_target_initialize()
+ * @see bt_avrcp_control_initialize()
+ * @see bt_avrcp_set_position_changed_cb()
+ */
+int bt_avrcp_set_position_changed_cb(bt_avrcp_position_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Unregisters a callback function that will be invoked when the song position is changed. (e.g., by a TV remote control or other input devices)
+ * @since_tizen 3.0
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
+ * @see bt_avrcp_target_initialize()
+ * @see bt_avrcp_control_initialize()
+ * @see bt_avrcp_set_position_changed_cb()
+ */
+int bt_avrcp_unset_position_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Registers a callback function that will be invoked when the Play status is changed. (e.g., by a TV remote control or other input devices)
+ * @since_tizen 3.0
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
+ * @see bt_avrcp_target_initialize()
+ * @see bt_avrcp_control_initialize()
+ * @see bt_avrcp_unset_play_status_changed_cb()
+ */
+int bt_avrcp_set_play_status_changed_cb(bt_avrcp_play_status_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Unregisters a callback function that will be invoked when the Play status is changed. (e.g., by a TV remote control or other input devices)
+ * @since_tizen 3.0
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
+ * @see bt_avrcp_target_initialize()
+ * @see bt_avrcp_control_initialize()
+ * @see bt_avrcp_unset_play_status_changed_cb()
+ */
+int bt_avrcp_unset_play_status_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Registers a callback function that will be invoked when the track metadata is changed. (e.g., by a TV remote control or other input devices)
+ * @since_tizen 3.0
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
+ * @see bt_avrcp_target_initialize()
+ * @see bt_avrcp_control_initialize()
+ * @see bt_avrcp_unset_track_info_changed_cb()
+ */
+int bt_avrcp_set_track_info_changed_cb(bt_avrcp_track_info_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Unregisters a callback function that will be invoked when the track metadata is changed. (e.g., by a TV remote control or other input devices)
+ * @since_tizen 3.0
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
+ * @see bt_avrcp_target_initialize()
+ * @see bt_avrcp_control_initialize()
+ * @see bt_avrcp_set_track_info_changed_cb()
+ */
+int bt_avrcp_unset_track_info_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
+ * @brief Initializes the Bluetooth AVRCP (Audio/Video Remote Control Profile) controller service.
+ * @since_tizen 3.0
+ * @remarks This function must be called before any other AVRCP controller functions are called. \n
+ * You must free all resources of the this service by calling bt_avrcp_control_deinitialize()
+ * if Bluetooth AVRCP service is no longer needed.
+ * @param[in] callback The callback function called when the connection state is changed
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see bt_avrcp_control_deinitialize()
+ */
+int bt_avrcp_control_initialize(bt_avrcp_control_connection_state_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
+ * @brief Deinitializes the Bluetooth AVRCP (Audio/Video Remote Control Profile) controller service.
+ * @since_tizen 3.0
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_avrcp_control_initialize().
+ * @see bt_avrcp_control_initialize()
+ */
+int bt_avrcp_control_deinitialize(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
+ * @brief Connects the AVRCP (Audio/Video Remote Control Profile) target device.
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] remote_address  The remote address
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_avrcp_control_initialize().
+ * @see bt_avrcp_control_initialize()
+ */
+int bt_avrcp_control_connect(const char *remote_address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
+ * @brief Disconnects from the AVRCP (Audio/Video Remote Control Profile) target device.
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] remote_address  The remote address
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_avrcp_control_initialize().
+ * @see bt_avrcp_control_initialize()
+ * @see bt_avrcp_control_connect()
+ */
+int bt_avrcp_control_disconnect(const char *remote_address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
+ * @brief Sends a command to the target device.
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] cmd The commands, one of: Play, Pause, Next, Rewind.
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_avrcp_control_initialize().
+ * @see bt_avrcp_control_initialize()
+ * @see bt_avrcp_control_connect()
+ */
+int bt_avrcp_control_send_player_command(bt_avrcp_player_command_e cmd);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
+ * @brief  Sends the equalizer state change request to the remote device.
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] state The new equalizer state, one of: ON, OFF
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_control_set_equalizer_state(bt_avrcp_equalizer_state_e state);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
+ * @brief  Gets the the equalizer state of the remote device.
+ * @since_tizen 3.0
+ * @param[out] state The equalizer state, one of: ON, OFF
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_control_get_equalizer_state(bt_avrcp_equalizer_state_e *state);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
+ * @brief  Sends the repeat change request to the remote device.
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] mode The new repeat mode, one of: OFF, SINGLE, ALL
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_control_set_repeat_mode(bt_avrcp_repeat_mode_e mode);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
+ * @brief  Gets the repeat state of the remote device.
+ * @since_tizen 3.0
+ * @param[out] mode The repeat mode, one of: OFF, SINGLE, ALL
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_control_get_repeat_mode(bt_avrcp_repeat_mode_e *mode);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
+ * @brief  Sends the shuffle mode change request to the remote device.
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] mode The new shuffle mode, one of: OFF, GROUP, ALL
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_control_set_shuffle_mode(bt_avrcp_shuffle_mode_e mode);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
+ * @brief  Gets the shuffle mode of the remote device.
+ * @since_tizen 3.0
+ * @param[out] mode The shuffle mode, one of: OFF, GROUP, ALL
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_control_get_shuffle_mode(bt_avrcp_shuffle_mode_e *mode);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
+ * @brief  Sends the scan mode change request to the remote device.
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] mode The new scan mode, one of: OFF, GROUP, ALL
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_control_set_scan_mode(bt_avrcp_scan_mode_e mode);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
+ * @brief  Gets the scan mode of the remote device.
+ * @since_tizen 3.0
+ * @param[out] mode The scan mode, one of: OFF, GROUP, ALL
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_control_get_scan_mode(bt_avrcp_scan_mode_e *mode);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
+ * @brief  Gets the position of the song played by the remote device.
+ * @since_tizen 3.0
+ * @param[out] position The position, in milliseconds
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_control_get_position(unsigned int *position);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
+ * @brief  Gets the play status of the remote device.
+ * @since_tizen 3.0
+ * @param[out] status The play status, one of: PLAYING, STOPPED...
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_control_get_play_status(bt_avrcp_player_state_e *status);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
+ * @brief  Gets the metadata of the track played by the remote device.
+ * @since_tizen 3.0
+ * @remarks The @a track must be released using bt_avrcp_control_free_track_info()
+ * @param[out] track The track metadata.
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_control_get_track_info(bt_avrcp_metadata_attributes_info_s **track);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
+ * @brief  Frees the track metadata.
+ * @since_tizen 3.0
+ * @param[in] track The track metadata.
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre track should point to valid metadata address.
+ * @see bt_avrcp_control_get_track_info()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_control_free_track_info(bt_avrcp_metadata_attributes_info_s *track);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
+ * @brief Registers an application that acts as the @a Sink role of HDP(Health Device Profile).
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @remarks The @a app_id must be released with free() by you.
+ * @param[in] data_type  The data type of MDEP. This value is defined in ISO/IEEE 11073-20601 spec.
+ * For example, pulse oximeter is 0x1004 and blood pressure monitor is 0x1007.
+ * @param[out] app_id  The ID of application
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @see bt_hdp_unregister_sink_app()
+ */
+int bt_hdp_register_sink_app(unsigned short data_type, char **app_id);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
+ * @brief Unregisters the given application that acts as the @a Sink role of HDP(Health Device Profile).
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] app_id  The ID of application
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_hdp_register_sink_app()
+ */
+int bt_hdp_unregister_sink_app(const char *app_id);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
+ * @brief Connects the remote device which acts as @a Source role, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] remote_address  The remote address
+ * @param[in] app_id  The ID of application
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Sink role of HDP must be registered with bt_hdp_register_sink_app().
+ * @pre The local device must be bonded with the remote device by bt_device_create_bond().
+ * @post bt_hdp_connected_cb() will be invoked.
+ * @see bt_hdp_disconnect()
+ * @see bt_hdp_set_connection_state_changed_cb()
+ * @see bt_hdp_unset_connection_state_changed_cb()
+ */
+int bt_hdp_connect_to_source(const char *remote_address, const char *app_id);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
+ * @brief Disconnects the remote device, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] remote_address  The remote address
+ * @param[in] channel  The connected data channel
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @post bt_hdp_disconnected_cb() will be invoked.
+ * @see bt_hdp_set_connection_state_changed_cb()
+ * @see bt_hdp_unset_connection_state_changed_cb()
+ */
+int bt_hdp_disconnect(const char *remote_address, unsigned int channel);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
+ * @brief Sends the data to the remote device.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] channel  The connected data channel
+ * @param[in] data  The data to send
+ * @param[in] size  The size of data to send (byte)
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_hdp_data_received_cb()
+ * @see bt_hdp_set_data_received_cb()
+ * @see bt_hdp_unset_data_received_cb()
+ */
+int bt_hdp_send_data(unsigned int channel, const char *data, unsigned int size);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
+ * @brief  Registers a callback function that will be invoked when the connection state is changed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] connected_cb The callback function called when a connection is established
+ * @param[in] disconnected_cb The callback function called when a connection is disconnected
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_hdp_unset_connection_state_changed_cb()
+ */
+int bt_hdp_set_connection_state_changed_cb(bt_hdp_connected_cb connected_cb, bt_hdp_disconnected_cb disconnected_cb, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
+ * @brief  Unregisters a callback function that will be invoked when the connection state is changed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_hdp_set_connection_state_changed_cb()
+ */
+int bt_hdp_unset_connection_state_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
+ * @brief  Registers a callback function that will be invoked when you receive the data.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_hdp_unset_data_received_cb()
+ */
+int bt_hdp_set_data_received_cb(bt_hdp_data_received_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
+ * @brief  Unregisters a callback function that will be invoked when you receive the data.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_hdp_set_data_received_cb()
+ */
+int bt_hdp_unset_data_received_cb(void);
+
+/**
+ * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_foreach_services or bt_gatt_client_get_service instead.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Gets the primary services of GATT(Generic Attribute Profile).
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in]  remote_address  The address of the remote device
+ * @param[in]  callback  The callback function to invoke
+ * @param[in]  user_data  The user data to be passed to the callback function
+ * @return  0 on success, otherwise a negative error value.
+ * @retval  #BT_ERROR_NONE  Successful
+ * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval  #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @post  @a callback will be called if there are primary services.
+ * @see  bt_gatt_primary_service_cb()
+ */
+int bt_gatt_foreach_primary_services(const char *remote_address, bt_gatt_primary_service_cb callback, void *user_data) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 2.3.1. This function call is not required because characteristic discovery is happened automatically.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Discovers the characteristics in service, asynchronously.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in]  service  The attribute handle of service
+ * @param[in]  callback  The result callback
+ * @param[in]  user_data  The user data to be passed to the callback function
+ * @return  0 on success, otherwise a negative error value.
+ * @retval  #BT_ERROR_NONE  Successful
+ * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @post  @a callback will be called.
+ * @see  bt_gatt_characteristics_discovered_cb()
+ */
+int bt_gatt_discover_characteristics(bt_gatt_attribute_h service, bt_gatt_characteristics_discovered_cb callback, void *user_data) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 2.3.1. Use bt_gatt_get_uuid instead.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Gets the UUID of service.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @remarks  @a uuid must be released with free() by you.
+ * @param[in]  service  The attribute handle of service
+ * @param[out]  uuid  The UUID of service
+ * @return  0 on success, otherwise a negative error value.
+ * @retval  #BT_ERROR_NONE  Successful
+ * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval  #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ */
+int bt_gatt_get_service_uuid(bt_gatt_attribute_h service, char **uuid) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 2.3.1. Use bt_gatt_service_foreach_included_services or bt_gatt_service_get_included_service instead.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Gets the included services in service.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in]  service  The attribute handle of service
+ * @param[in]  callback  The callback function to invoke
+ * @param[in]  user_data  The user data to be passed to the callback function
+ * @return  0 on success, otherwise a negative error value.
+ * @retval  #BT_ERROR_NONE  Successful
+ * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval  #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @post  @a callback will be called if there are included services.
+ * @see  bt_gatt_included_service_cb()
+ */
+int bt_gatt_foreach_included_services(bt_gatt_attribute_h service, bt_gatt_included_service_cb callback, void *user_data) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_set_characteristic_value_changed_cb instead.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Registers a callback function that will be invoked when a characteristic value is changed.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ * @param[in]  callback  The callback function to register
+ * @param[in]  user_data  The user data to be passed to the callback function
+ * @return  0 on success, otherwise a negative error value.
+ * @retval  #BT_ERROR_NONE  Successful
+ * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre  The Bluetooth service must be initialized with bt_initialize().
+ * @see  bt_gatt_unset_characteristic_changed_cb()
+ */
+int bt_gatt_set_characteristic_changed_cb(bt_gatt_characteristic_changed_cb callback, void *user_data) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_unset_characteristic_value_changed_cb instead.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Unregisters a callback function that will be invoked when a characteristic is changed.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_gatt_set_characteristic_changed_cb()
+ */
+int bt_gatt_unset_characteristic_changed_cb(void) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_set_characteristic_value_changed_cb instead.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Watches all the characteristic value changes of the service.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in]  service  The attribute handle of service
+ * @return  0 on success, otherwise a negative error value.
+ * @retval  #BT_ERROR_NONE  Successful
+ * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre  The Bluetooth service must be initialized with bt_initialize().
+ * @see  bt_gatt_unset_characteristic_changed_cb()
+ */
+int bt_gatt_watch_characteristic_changes(bt_gatt_attribute_h service) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_unset_characteristic_value_changed_cb instead.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Remove watching of all the characteristic value changes of the service.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in]  service  The attribute handle of service
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_gatt_set_characteristic_changed_cb()
+ */
+int bt_gatt_unwatch_characteristic_changes(bt_gatt_attribute_h service) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 2.3.1. Use bt_gatt_get_value or bt_gatt_get_uuid after bt_gatt_client_read_value instead.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Gets the characteristic declaration.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @remarks  @a uuid and @a value must be released with free() by you.
+ * @param[in]  characteristic  The attribute handle of characteristic
+ * @param[out]  uuid  The UUID of service
+ * @param[out]  value  The value of characteristic (byte array)
+ * @param[out]  value_length  The length of value
+ * @return  0 on success, otherwise a negative error value.
+ * @retval  #BT_ERROR_NONE  Successful
+ * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval  #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @see  bt_gatt_set_characteristic_value()
+ */
+int bt_gatt_get_characteristic_declaration(bt_gatt_attribute_h characteristic, char **uuid, unsigned char **value, int *value_length) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 2.3.1. Use bt_gatt_set_value and bt_gatt_client_write_value instead.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Sets the value of characteristic.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in]  characteristic  The attribute handle of characteristic
+ * @param[in]  value  The value of characteristic (byte array)
+ * @param[in]  value_length  The length of value
+ * @return  0 on success, otherwise a negative error value.
+ * @retval  #BT_ERROR_NONE  Successful
+ * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @see  bt_gatt_get_characteristic_declaration()
+ */
+int bt_gatt_set_characteristic_value(bt_gatt_attribute_h characteristic, const unsigned char *value, int value_length) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 2.3.1. Use bt_gatt_set_value and bt_gatt_client_write_value instead.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Sets the value of characteristic request.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in]  characteristic  The attribute handle of characteristic
+ * @param[in]  value  The value of characteristic (byte array)
+ * @param[in]  value_length  The length of value
+ * @param[in]  callback  The result callback
+ * @return  0 on success, otherwise a negative error value.
+ * @retval  #BT_ERROR_NONE  Successful
+ * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @see  bt_gatt_get_characteristic_declaration()
+ */
+int bt_gatt_set_characteristic_value_request(bt_gatt_attribute_h characteristic, const unsigned char *value,
+                               int value_length, bt_gatt_characteristic_write_cb callback) TIZEN_DEPRECATED_API;
+
+/**
+* @deprecated Deprecated since 2.3.1. GATT handle clone is not allowed. Instead, all handles for client role must be got from GATT client handle.
+* @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+* @brief  Clones the attribute handle.
+* @since_tizen @if WEARABLE @else 2.3 @endif
+* @remarks  @a clone must be released with bt_gatt_destroy_attribute_handle().
+* @param[out]  clone  The cloned attribute handle
+* @param[in]  origin  The origin attribute handle
+* @return  0 on success, otherwise negative error value.
+* @retval  #BT_ERROR_NONE  Successful
+* @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+* @retval  #BT_ERROR_OUT_OF_MEMORY  Out of memory
+* @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
+*
+* @see  bt_gatt_destroy_attribute_handle()
+*/
+int bt_gatt_clone_attribute_handle(bt_gatt_attribute_h *clone,
+       bt_gatt_attribute_h origin) TIZEN_DEPRECATED_API;
+
+/**
+* @deprecated Deprecated since 2.3.1. GATT handle clone and destroy are not allowed.
+* @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+* @brief  Destroys the attribute handle.
+* @since_tizen @if WEARABLE  @else 2.3 @endif
+* @param[in]  handle  The attribute handle
+* @return  0 on success, otherwise negative error value.
+* @retval  #BT_ERROR_NONE  Successful
+* @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+* @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
+*
+* @see  bt_gatt_clone_attribute_handle()
+*/
+int bt_gatt_destroy_attribute_handle(bt_gatt_attribute_h handle) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 2.3.1. Use gatt_client_read_value instead.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Reads the value of characteristic from remote device.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in]  char_handle  The attribute handle of characteristic
+ * @param[in]  callback  The result callback
+ * @return     0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE      Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @see  bt_gatt_get_characteristic_declaration()
+ */
+int bt_gatt_read_characteristic_value(bt_gatt_attribute_h char_handle,
+               bt_gatt_characteristic_read_cb callback) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 2.3.1. This function call is not required because descriptor discovery is happened automatically.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Discovers the characteristic descriptors of a characteristic within its definition, asynchronously.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in]  characteristic_handle  The attribute handle of characteristic
+ * @param[in]  callback  The result callback
+ * @param[in]  user_data  The user data to be passed to the callback function
+ * @return  0 on success, otherwise a negative error value.
+ * @retval  #BT_ERROR_NONE  Successful
+ * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @post  @a callback will be called.
+ * @see  bt_gatt_characteristic_descriptor_discovered_cb()
+ */
+int bt_gatt_discover_characteristic_descriptor(bt_gatt_attribute_h characteristic_handle,
+               bt_gatt_characteristic_descriptor_discovered_cb callback,
+               void *user_data) TIZEN_DEPRECATED_API;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Gets the value of a characteristic or descriptor's GATT handle.
+ * @since_tizen 2.3.1
+ *
+ * @remarks @a value must be released using free(). \n
+ * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_read_value() must be used prior to this function \n
+ * in order to get the remote device's current value.
+ *
+ * @param[in] gatt_handle The handle of a characteristic or descriptor
+ * @param[out] value The value of @a gatt_handle. It is a byte stream type.
+ * @param[out] value_length The length of @a value
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_gatt_get_value(bt_gatt_h gatt_handle, char **value, int *value_length);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Gets the value of a characteristic or descriptor's GATT handle as an integer type.
+ * @since_tizen 2.3.1
+ *
+ * @remarks This function returns a locally saved value in @a gatt_handle. \n
+ * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_read_value() must be used prior to this function \n
+ * in order to get the remote device's current value.
+ *
+ * @param[in] gatt_handle The handle of a characteristic or descriptor
+ * @param[in] type The type of a saved value in @a gatt_handle
+ * @param[in] offset The offset from where a value will be read from @a gatt_handle as an integer type
+ * @param[out] value The integer type's value of @a gatt_handle
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_gatt_get_int_value(bt_gatt_h gatt_handle, bt_data_type_int_e type,
+                       int offset, int *value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Gets the value of a characteristic or descriptor's GATT handle as a float type.
+ * @since_tizen 2.3.1
+ *
+ * @remarks This function returns a locally saved value in @a gatt_handle. \n
+ * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_read_value() must be used prior to this function \n
+ * in order to get the remote device's current value.
+ *
+ * @param[in] gatt_handle  The handle of a characteristic or descriptor
+ * @param[in] type The type of a saved value in @a gatt_handle
+ * @param[in] offset The offset from where a value will be read from @a gatt_handle as an integer type
+ * @param[out] value The float type's value of @a gatt_handle
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_gatt_get_float_value(bt_gatt_h gatt_handle, bt_data_type_float_e type,
+                       int offset, float *value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Updates the value of a characteristic or descriptor's GATT handle.
+ * @since_tizen 2.3.1
+ *
+ * @remarks This function updates a value of @a gatt_handle locally. \n
+ * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_write_value() can be used after this function \n
+ * in order to update the remote device's value. \n
+ *
+ * @param[in] gatt_handle The handle of a characteristic or descriptor
+ * @param[in] value The value to be updated
+ * @param[in] value_length The length of @a value
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_gatt_set_value(bt_gatt_h gatt_handle, const char *value, int value_length);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Updates the value of a characteristic or descriptor's GATT handle using a integer type's value.
+ * @since_tizen 2.3.1
+ *
+ * @remarks This function updates a value of @a gatt_handle locally. \n
+ * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_write_value() can be used after this function \n
+ * in order to update the remote device's value. \n
+ *
+ * @param[in] gatt_handle The handle of a characteristic or descriptor
+ * @param[in] type @a value will be saved in @a gatt_handle as this type
+ * @param[in] value The integer type's value to be updated
+ * @param[in] offset The offset from where @a value will be saved in @a gatt_handle
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_gatt_set_int_value(bt_gatt_h gatt_handle, bt_data_type_int_e type,
+                       int value, int offset);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Updates the value of a characteristic or descriptor's GATT handle using a float type's value.
+ * @since_tizen 2.3.1
+ *
+ * @remarks This function updates a value of @a gatt_handle locally. \n
+ * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_write_value() can be used after this function \n
+ * in order to update the remote device's value. \n
+ *
+ * @param[in] gatt_handle The handle of a characteristic or descriptor
+ * @param[in] type @a mantissa and @a exponent will be saved in @a gatt_handle as this type
+ * @param[in] mantissa The mantissa of float type's value to be updated
+ * @param[in] exponent The exponent of float type's value to be updated
+ * @param[in] offset The offset from where @a mantissa and @a exponent will be saved in @a gatt_handle
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_gatt_set_float_value(bt_gatt_h gatt_handle, bt_data_type_float_e type,
+                       int mantissa, int exponent, int offset);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Gets the UUID of a service, characteristic or descriptor's GATT handle.
+ * @since_tizen 2.3.1
+ *
+ * @remarks @a uuid must be released using free(). \n
+ * 16-bit UUID or 128-bit UUID is supported. (e.g. 2A19, 00002A19-0000-1000-8000-00805F9B34FB)
+ *
+ * @param[in] gatt_handle The handle of a service, characteristic or descriptor
+ * @param[out] uuid The string of the UUID of @a gatt_handle
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_gatt_get_uuid(bt_gatt_h gatt_handle, char **uuid);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Gets the type of GATT handle.
+ * @since_tizen 2.3.1
+ *
+ * @param[in] gatt_handle The GATT handle
+ * @param[out] gatt_type The type of @a gatt_handle
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_gatt_get_type(bt_gatt_h gatt_handle, bt_gatt_type_e *gatt_type);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Gets the GATT client handle which the specified service belongs to.
+ * @since_tizen 2.3.1
+ *
+ * @remark This function doesn't allocate new memory for GATT client handle.
+ * The returned GATT client handle is the same one which was got from bt_gatt_client_create().
+ * So if it is destroyed by bt_gatt_client_destroy(), all related GATT handles are freed also.
+ *
+ * @param[in] service The service's GATT handle
+ * @param[out] client The GATT client handle which @a service belongs to
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_client_create()
+ */
+int bt_gatt_service_get_client(bt_gatt_h service, bt_gatt_client_h *client);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Gets a characteristic's GATT handle which has specific UUID.
+ * @since_tizen 2.3.1
+ *
+ * @remark The returned GATT handle must not be freed by application.
+ * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
+ * If there are multiple characteristics which have same UUID, only the first matched one will be returned.
+ *
+ * @param[in] service The service's GATT handle
+ * @param[in] uuid The characteristic's GATT handle which has this UUID will be returned if it exists
+ * @param[out] characteristic The characteristic's GATT handle which has @a uuid if it exists
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NO_DATA  No data available
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_gatt_service_get_characteristic(bt_gatt_h service, const char *uuid,
+                                       bt_gatt_h *characteristic);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Invokes @a callback function on each characteristic that belongs to the specified service.
+ * @since_tizen 2.3.1
+ *
+ * @param[in] service The service's GATT handle
+ * @param[in] callback The function to be invoked on each characteristic
+ * @param[in] user_data The user data to be passed to @a callback function
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_foreach_cb()
+ */
+int bt_gatt_service_foreach_characteristics(bt_gatt_h service,
+                                       bt_gatt_foreach_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Gets an included service's GATT handle which has specific UUID.
+ * @since_tizen 2.3.1
+ *
+ * @remark The returned GATT handle must not be freed by application.
+ * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
+ * If there are multiple included services which have same UUID, only the first matched one will be returned.
+ *
+ * @param[in] service The service's GATT handle
+ * @param[in] uuid The included service's GATT handle which has this UUID will be returned if it exists
+ * @param[out] included_service The included service's GATT handle which has @a uuid if it exists
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NO_DATA  No data available
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_gatt_service_get_included_service(bt_gatt_h service, const char *uuid,
+                                               bt_gatt_h *included_service);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Invokes @a callback function on each included service that belongs to the specified service.
+ * @since_tizen 2.3.1
+ *
+ * @param[in] service The service's GATT handle
+ * @param[in] callback The function to be invoked on each included service
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_foreach_cb()
+ */
+int bt_gatt_service_foreach_included_services(bt_gatt_h service,
+                                       bt_gatt_foreach_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Gets the service's GATT handle which the specified characteristic belongs to.
+ * @since_tizen 2.3.1
+ *
+ * @remark The returned GATT handle must not be freed by application.
+ * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
+ *
+ * @param[in] characteristic The characteristic's GATT handle
+ * @param[out] service The service's GATT handle which @a characteristic belongs to
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_gatt_characteristic_get_service(bt_gatt_h characteristic, bt_gatt_h *service);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Gets the properties which a characteristic's GATT handle has.
+ * @since_tizen 2.3.1
+ *
+ * @param[in] characteristic The characteristic's GATT handle
+ * @param[out] properties The properties which a characteristic's GATT handle has
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_property_e
+ */
+int bt_gatt_characteristic_get_properties(bt_gatt_h characteristic, int *properties);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief Gets the write type of the specified characteristic.
+ * @since_tizen 2.3.1
+ *
+ * @param[in] characteristic The characteristic's GATT handle
+ * @param[out] write_type The write type of the specified characteristic
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_write_type_e
+ */
+int bt_gatt_characteristic_get_write_type(bt_gatt_h characteristic,
+                                       bt_gatt_write_type_e *write_type);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Updates the write type of the specified characteristic.
+ * @since_tizen 2.3.1
+ *
+ * @param[in] characteristic The characteristic's GATT handle
+ * @param[in] write_type The write type to be updated
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_client_write_value()
+ * @see bt_gatt_write_type_e
+ */
+int bt_gatt_characteristic_set_write_type(bt_gatt_h characteristic,
+                                       bt_gatt_write_type_e write_type);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Gets a descriptor's GATT handle which has specific UUID.
+ * @since_tizen 2.3.1
+ *
+ * @remark The returned GATT handle must not be freed by application.
+ * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
+ * If there are multiple descriptors which have same UUID, only the first matched one will be returned.
+ *
+ * @param[in] characteristic The characteristic's GATT handle
+ * @param[in] uuid The descriptor's GATT handle which has this UUID will be returned if it exists
+ * @param[out] descriptor The descriptor's GATT handle which has @a uuid if it exists
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NO_DATA  No data available
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_gatt_characteristic_get_descriptor(bt_gatt_h characteristic, const char *uuid,
+                                               bt_gatt_h *descriptor);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Invokes @a callback function on each descriptor that belongs to the specified characteristic.
+ * @since_tizen 2.3.1
+ *
+ * @param[in] characteristic The characteristic's GATT handle
+ * @param[in] callback The function to be invoked on each descriptor
+ * @param[in] user_data The user data to be passed to @a callback function
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_foreach_cb()
+ */
+int bt_gatt_characteristic_foreach_descriptors(bt_gatt_h characteristic,
+                                       bt_gatt_foreach_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Gets the characteristic's GATT handle which the specified descriptor belongs to.
+ * @since_tizen 2.3.1
+ *
+ * @remark The returned GATT handle must not be freed by application.
+ * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
+ *
+ * @param[in] descriptor The descriptor's GATT handle
+ * @param[out] characteristic The characteristic's GATT handle which @a descriptor belongs to
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_gatt_descriptor_get_characteristic(bt_gatt_h descriptor, bt_gatt_h *characteristic);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Creates the GATT client handle.
+ * @since_tizen 2.3.1
+ *
+ * @remark The GATT client handle must be freed by bt_gatt_client_destroy() after use
+ *
+ * @param[in] remote_address The address of the remote device
+ * @param[out] client The created GATT client's handle
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_ALREADY_DONE  Operation is already done
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_client_destroy()
+ */
+int bt_gatt_client_create(const char *remote_address, bt_gatt_client_h *client);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Destroys the GATT client's handle.
+ * @since_tizen 2.3.1
+ *
+ * @remark All related service, characteristic and descriptor's GATT handles are freed also
+ *
+ * @param[in] client The GATT client's handle
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_client_create()
+ */
+int bt_gatt_client_destroy(bt_gatt_client_h client);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Gets the address of remote device.
+ * @since_tizen 2.3.1
+ *
+ * @param[in] client The created GATT client's handle
+ * @param[out] remote_address The address of the remote device which is associated with @a client
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_client_create()
+ */
+int bt_gatt_client_get_remote_address(bt_gatt_client_h client,
+                                       char **remote_address);
+
+/**
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Reads the value of a characteristic or descriptor from the remote device asynchronously.
+ * @since_tizen 2.3.1
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] gatt_handle The GATT handle of a characteristic or descriptor
+ * @param[in] callback When a read request is completed, this callback function will be called
+ * @param[in] user_data The user data to be passed to @a callback function
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE      Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_client_create()
+ * @see bt_gatt_client_request_completed_cb()
+ */
+int bt_gatt_client_read_value(bt_gatt_h gatt_handle,
+               bt_gatt_client_request_completed_cb callback, void *user_data);
+
+/**
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Writes the value of a characteristic or descriptor to the remote device asynchronously.
+ * @since_tizen 2.3.1
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] gatt_handle The GATT handle of a characteristic or descriptor
+ * @param[in] callback When a write request is completed, this callback function will be called
+ * @param[in] user_data The user data to be passed to @a callback function
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE      Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_client_create()
+ * @see bt_gatt_characteristic_set_write_type()
+ * @see bt_gatt_set_value()
+ * @see bt_gatt_set_int_value()
+ * @see bt_gatt_set_float_value()
+ * @see bt_gatt_client_request_completed_cb()
+ */
+int bt_gatt_client_write_value(bt_gatt_h gatt_handle,
+               bt_gatt_client_request_completed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief Requests a change of the ATT MTU value.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] client The created GATT client's handle
+ * @param[in] mtu The new MTU value
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED   Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @see bt_gatt_client_set_att_mtu_changed_cb()
+ */
+int bt_gatt_client_request_att_mtu_change(bt_gatt_client_h client, unsigned int mtu);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief Gets the ATT MTU value set for a connection.
+ * @since_tizen 4.0
+ *
+ * @param[in] client The created GATT client's handle
+ * @param[out] mtu The MTU value set for a connection
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
+ */
+int bt_gatt_client_get_att_mtu(bt_gatt_client_h client, unsigned int *mtu);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Registers a callback function to be invoked when the ATT MTU is changed.
+ * @since_tizen 4.0
+ * @param[in] client The created GATT client's handle
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post bt_device_connection_state_changed_cb() will be invoked.
+ * @see bt_initialize()
+ * @see bt_gatt_client_request_att_mtu_change()
+ * @see bt_gatt_client_unset_att_mtu_changed_cb()
+ */
+int bt_gatt_client_set_att_mtu_changed_cb(bt_gatt_client_h client, bt_gatt_client_att_mtu_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief Unregisters the callback function to be invoked when the ATT MTU is changed.
+ * @since_tizen 4.0
+ * @param[in] client The created GATT client's handle
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see bt_gatt_client_request_att_mtu_change()
+ * @see bt_gatt_client_set_att_mtu_changed_cb()
+ */
+int bt_gatt_client_unset_att_mtu_changed_cb(bt_gatt_client_h client);
+
+/**
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Registers a callback function to be invoked when the characteristic value is changed on the remote device.
+ * @since_tizen 2.3.1
+ *
+ * @param[in] characteristic The characteristic's GATT handle
+ * @param[in] callback The callback to be invoked when the value is changed and it is informed
+ * @param[in] user_data The user data to be passed to @a callback function
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE      Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_client_characteristic_value_changed_cb()
+ * @see bt_gatt_client_unset_characteristic_value_change()
+ */
+int bt_gatt_client_set_characteristic_value_changed_cb(bt_gatt_h characteristic,
+               bt_gatt_client_characteristic_value_changed_cb callback,
+               void *user_data);
+
+/**
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Unregisters a callback function to be invoked when the characteristic value is changed on the remote device.
+ * @since_tizen 2.3.1
+ *
+ * @param[in] characteristic The characteristic's GATT handle, whose value change will not be informed
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE      Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_client_set_characteristic_value_changed_cb()
+ */
+int bt_gatt_client_unset_characteristic_value_changed_cb(bt_gatt_h characteristic);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Gets a service's GATT handle which has specific UUID.
+ * @since_tizen 2.3.1
+ *
+ * @remark The returned GATT handle must not be freed by application.
+ * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
+ * If there are multiple services which have same UUID, only the first matched one will be returned.
+ *
+ * @param[in] client The GATT client's handle
+ * @param[in] uuid The service's GATT handle which has this UUID will be returned if it exists
+ * @param[out] service The service's GATT handle which has @a uuid if it exists
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NO_DATA  No data available
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_gatt_client_get_service(bt_gatt_client_h client, const char *uuid,
+                               bt_gatt_h *service);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Invokes @a callback function on each service that belongs to the specified GATT client.
+ * @since_tizen 2.3.1
+ *
+ * @param[in] client The GATT client's handle
+ * @param[in] callback The function to be invoked on each service
+ * @param[in] user_data The user data to be passed to @a callback function
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_foreach_cb()
+ */
+int bt_gatt_client_foreach_services(bt_gatt_client_h client,
+                                   bt_gatt_foreach_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Registers a callback function to be invoked when service is changed from a remote device(GATT server).
+ * @since_tizen 3.0
+ *
+ * @param[in] client The GATT client's handle
+ * @param[in] callback The callback to be invoked
+ * @param[in] user_data The user data to be passed to @a callback function
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_client_unset_service_changed_cb()
+ */
+int bt_gatt_client_set_service_changed_cb(bt_gatt_client_h client,
+               bt_gatt_client_service_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Unregisters a callback function
+ * @since_tizen 3.0
+ *
+ * @param[in] client The GATT client's handle
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_client_set_service_changed_cb()
+ */
+int bt_gatt_client_unset_service_changed_cb(bt_gatt_client_h client);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief Connect to a specific LE based service on a remote bluetooth device address, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @remarks A connection can be disconnected by bt_gatt_disconnect().
+ *
+ * @param[in] address The address of the remote Bluetooth device.
+ * @param[in] auto_connect The flag of the auto connection.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED Not enabled
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @pre The remote device must support le connection.
+ * @post This function invokes bt_gatt_connection_state_changed_cb().
+ *
+ * @see bt_initialize()
+ * @see bt_gatt_disconnect()
+ * @see bt_gatt_set_connection_state_changed_cb()
+ * @see bt_gatt_unset_connection_state_changed_cb()
+ * @see bt_gatt_connection_state_changed_cb()
+ */
+int bt_gatt_connect(const char *address, bool auto_connect);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief Disconnect to LE connection with the given remote Bluetooth device address, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] address The address of the remote Bluetooth device
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED Not enabled
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The connection must be established.
+ * @post This function invokes bt_gatt_connection_state_changed_cb().
+ *
+ * @see bt_initialize()
+ * @see bt_gatt_connect()
+ * @see bt_gatt_set_connection_state_changed_cb()
+ * @see bt_gatt_unset_connection_state_changed_cb()
+ * @see bt_gatt_connection_state_changed_cb()
+ */
+int bt_gatt_disconnect(const char *address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief Registers a callback function that will be invoked when the connection state is changed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] callback The callback function to register.
+ * @param[in] user_data The user data to be passed  to the callback function.
+ *
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_connect()
+ * @see bt_gatt_disconnect()
+ * @see bt_gatt_unset_connection_state_changed_cb()
+ */
+int bt_gatt_set_connection_state_changed_cb(bt_gatt_connection_state_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief Unregisters a callback function that will be invoked when the connection state is changed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_connect()
+ * @see bt_gatt_disconnect()
+ * @see bt_gatt_connection_state_changed_cb()
+ */
+int bt_gatt_unset_connection_state_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief Destroys the GATT handle of service.
+ * @since_tizen 3.0
+ *
+ * @param[in] gatt_handle The handle of service
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_service_create()
+ */
+int bt_gatt_service_destroy(bt_gatt_h gatt_handle);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief Destroys the GATT handle of characteristic.
+ * @since_tizen 3.0
+ *
+ * @param[in] gatt_handle The handle of characteristic
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_characteristic_create()
+ */
+int bt_gatt_characteristic_destroy(bt_gatt_h gatt_handle);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief Destroys the GATT handle of descriptor.
+ * @since_tizen 3.0
+ *
+ * @param[in] gatt_handle The handle of descriptor
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_descriptor_create()
+ */
+int bt_gatt_descriptor_destroy(bt_gatt_h gatt_handle);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Gets the permissions which a characteristic's GATT handle has.
+ * @since_tizen 3.0
+ *
+ * @remarks The @a permissions can be one or more values of #bt_gatt_permission_e, combined with bitwise 'or'.
+ *
+ * @param[in] gatt_handle The handle of a characteristic
+ * @param[out] permissions The permissions which a characteristic's GATT handle has
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_characteristic_create()
+ * @see bt_gatt_permission_e
+ */
+int bt_gatt_characteristic_get_permissions(bt_gatt_h gatt_handle, int *permissions);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Gets the permissions which a descriptor's GATT handle has.
+ * @since_tizen 3.0
+ *
+ * @remarks The @a permissions can be one or more values of #bt_gatt_permission_e, combined with bitwise 'or'.
+ *
+ * @param[in] gatt_handle The handle of a descriptor
+ * @param[out] permissions The permissions which a descriptor's GATT handle has
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_descriptor_create()
+ * @see bt_gatt_permission_e
+ */
+int bt_gatt_descriptor_get_permissions(bt_gatt_h gatt_handle, int *permissions);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Creates the GATT service.
+ * @since_tizen 3.0
+ *
+ * @remarks The @a service should be destroyed by using bt_gatt_service_destroy()
+ *
+ * @param[in] uuid The UUID of the service
+ * @param[in] type The type of the service
+ * @param[out] service The GATT handle of the created service
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_service_destroy()
+ */
+int bt_gatt_service_create(const char *uuid, bt_gatt_service_type_e type,
+                          bt_gatt_h *service);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Adds a characteristic to a specified service.
+ * @since_tizen 3.0
+ *
+ * @param[in] service The service's GATT handle
+ * @param[in] characteristic The characteristic's GATT handle to be added
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_service_create()
+ * @see bt_gatt_characteristic_create()
+ */
+int bt_gatt_service_add_characteristic(bt_gatt_h service,
+                                       bt_gatt_h characteristic);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Adds a service to a specified service as included service.
+ * @since_tizen 3.0
+ *
+ * @param[in] service The service's GATT handle
+ * @param[in] included_service The service's GATT handle to be added as included service
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_service_create()
+ */
+int bt_gatt_service_add_included_service(bt_gatt_h service,
+                                       bt_gatt_h included_service);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Gets the GATT server handle to which the specified service belongs.
+ * @since_tizen 3.0
+ *
+ * @remarks The returned Server handle must not be freed by application.
+ *
+ * @param[in] service The service's GATT handle
+ * @param[out] server The GATT server handle to which @a service belongs
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_server_create()
+ * @see bt_gatt_service_create()
+ * @see bt_gatt_server_register_service()
+ */
+int bt_gatt_service_get_server(bt_gatt_h service, bt_gatt_server_h *server);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Creates the GATT characteristic.
+ * @since_tizen 3.0
+ *
+ * @remarks The @a permissions can be one or more values of #bt_gatt_permission_e, combined with bitwise 'or'.
+ * @remarks The @a properties can be one or more values of #bt_gatt_property_e, combined with bitwise 'or'.
+ * @remarks The @a characteristic should be destroyed by using bt_gatt_characteristic_destroy().
+ *
+ * @param[in] uuid The UUID of the characteristic
+ * @param[in] permissions the permissions of the characteristic
+ * @param[in] properties The properties of the characteristic
+ * @param[in] value The value(byte stream) of the characteristic
+ * @param[in] value_length The length of @a value
+ * @param[out] characteristic The GATT handle of the created characteristic
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_characteristic_destroy()
+ */
+int bt_gatt_characteristic_create(const char *uuid, int permissions,
+                               int properties, const char *value, int value_length,
+                               bt_gatt_h *characteristic);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Adds a descriptor to a specified characteristic.
+ * @since_tizen 3.0
+ *
+ * @param[in] characteristic The GATT handle of the characteristic
+ * @param[in] descriptor The descriptor's GATT handle to be added
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_characteristic_create()
+ * @see bt_gatt_descriptor_create()
+ */
+int bt_gatt_characteristic_add_descriptor(bt_gatt_h characteristic,
+                                       bt_gatt_h descriptor);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Creates the GATT characteristic descriptor.
+ * @since_tizen 3.0
+ *
+ * @remarks The @a permissions can be one or more values of #bt_gatt_permission_e, combined with bitwise 'or'.
+ * @remarks The @a descriptor should be destroyed by using bt_gatt_descriptor_destroy().
+ *
+ * @param[in] uuid The UUID of the descriptor
+ * @param[in] permissions The permissions of the descriptor
+ * @param[in] value The value(byte stream) associated with the descriptor
+ * @param[in] value_length The length of @a value
+ * @param[out] descriptor The GATT handle of the created characteristic descriptor
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_descriptor_destroy()
+ */
+int bt_gatt_descriptor_create(const char *uuid, int permissions,
+                               const char *value, int value_length,
+                               bt_gatt_h *descriptor);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief Initializes the GATT Server.
+ * @since_tizen 3.0
+ *
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre        The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @see        bt_gatt_server_deinitialize()
+ */
+int bt_gatt_server_initialize(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief DeInitializes the GATT server.
+ * @since_tizen 3.0
+ *
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE      Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre        The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @see        bt_gatt_server_initialize()
+ */
+int bt_gatt_server_deinitialize(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Creates the GATT server's handle.
+ * @since_tizen 3.0
+ *
+ * @remarks The @a server handle should be destroyed by using bt_gatt_server_destroy()
+ *
+ * @param[out] server The GATT server's handle
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_server_destroy()
+ */
+int bt_gatt_server_create(bt_gatt_server_h *server);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Destroys the GATT server's handle.
+ * @since_tizen 3.0
+ *
+ * @remarks All registered services to GATT server are unregistered
+ *
+ * @param[in] server The GATT server's handle
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_server_create()
+ */
+int bt_gatt_server_destroy(bt_gatt_server_h server);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Registers a callback function to be invoked when a read request for a specified characteristic or descriptor is issued from a remote device(GATT client).
+ * @since_tizen 3.0
+ *
+ * @param[in] gatt_handle The GATT handle of a characteristic or descriptor
+ * @param[in] callback The callback to be invoked
+ * @param[in] user_data The user data to be passed to @a callback function
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_server_read_value_requested_cb()
+ * @see bt_gatt_server_send_response()
+ */
+int bt_gatt_server_set_read_value_requested_cb(bt_gatt_h gatt_handle,
+                               bt_gatt_server_read_value_requested_cb callback,
+                               void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Registers a callback function to be invoked when the remote device enables or disables the Notification/Indication for particular characteristics.
+ * @since_tizen 3.0
+ *
+ * @param[in] gatt_handle The GATT handle of a characteristic
+ * @param[in] callback The callback to be invoked
+ * @param[in] user_data The user data to be passed to @a callback function
+ * @return     0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
+ *
+ * @see bt_gatt_server_characteristic_notification_state_changed_cb()
+ */
+int bt_gatt_server_set_characteristic_notification_state_change_cb(bt_gatt_h gatt_handle,
+                               bt_gatt_server_characteristic_notification_state_changed_cb callback,
+                               void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Registers a callback function to be invoked when a value of a characteristic or descriptor has been changed by a remote device(GATT client)'s request.
+ * @since_tizen 3.0
+ *
+ * @param[in] gatt_handle The GATT handle of a characteristic or descriptor
+ * @param[in] callback The callback to be invoked
+ * @param[in] user_data The user data to be passed to @a callback function
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_server_write_value_requested_cb()
+ */
+int bt_gatt_server_set_write_value_requested_cb(bt_gatt_h gatt_handle,
+                               bt_gatt_server_write_value_requested_cb callback,
+                               void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Registers a specified service to the specified GATT server that the local device is hosting.
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] server The GATT server that local device is hosting
+ * @param[in] service The service, which needs to be registered in @a server
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_ALREADY_DONE Operation is already done
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_server_create()
+ * @see bt_gatt_service_create()
+ * @see bt_gatt_server_start()
+ * @see bt_gatt_server_unregister_service()
+ */
+int bt_gatt_server_register_service(bt_gatt_server_h server, bt_gatt_h service);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Unregisters a specified service from the specified GATT server that the local device is hosting.
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] server The GATT server that local device is hosting
+ * @param[in] service The service, which needs to be unregistered from @a server
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_SERVICE_NOT_FOUND  Service not found
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_server_register_service()
+ */
+int bt_gatt_server_unregister_service(bt_gatt_server_h server, bt_gatt_h service);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Unregisters all services from the specified GATT server that the local device is hosting.
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] server The GATT server that local device is hosting
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_server_register_service()
+ */
+int bt_gatt_server_unregister_all_services(bt_gatt_server_h server);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Registers the application along with the GATT services of the application it is hosting.
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_ALREADY_DONE Operation is already done
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_server_initialize()
+ * @see bt_gatt_server_create()
+ * @see bt_gatt_service_create()
+ * @see bt_gatt_server_unregister_service()
+ */
+int bt_gatt_server_start(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Sends a response to the remote device as a result of a read/write request.
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @remarks Until this function is called, a read/write request is not finished.
+ *
+ * @param[in] request_id The identification of a read/write request
+ * @param[in] request_type The request type for read/write
+ * @param[in] offset The offset from where a value is read
+ * @param[in] resp_status The application error if any occurred or BT_ERROR_NONE for successful.
+ * @param[in] value The value to be sent. It will be sent from @a offset. If it is NULL, a requested GATT handle's value will be sent from @a offset.
+ * @param[in] value_length Value Length
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_server_read_value_requested_cb()
+ */
+int bt_gatt_server_send_response(int request_id, bt_gatt_att_request_type_e request_type,
+                       int offset, int resp_status, char *value, int value_length);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Notifies value change of the characteristic to the remote devices which enable a Client Characteristic Configuration Descriptor.
+ * @since_tizen 3.0
+ *
+ * @param[in] characteristic The characteristic which has a changed value
+ * @param[in] callback The function to be invoked on each remote device when a sending operation is done
+ * @param[in] device_address Remote device address to send notify or indicate and if set to NULL then notify/indicate all is enabled.
+ * @param[in] user_data The user data to be passed to @a callback function
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_server_notification_sent_cb()
+ */
+int bt_gatt_server_notify_characteristic_changed_value(bt_gatt_h characteristic,
+                               bt_gatt_server_notification_sent_cb callback,
+                               const char *device_address, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Gets a service's GATT handle which has specific UUID.
+ * @since_tizen 3.0
+ *
+ * @remark The returned GATT handle must not be freed by application.
+ * It will be freed when an associated server is destroyed by bt_gatt_server_destroy().
+ * If there are multiple services which have same UUID, only the first matched one will be returned.
+ *
+ * @param[in] server The GATT server's handle
+ * @param[in] uuid The service's GATT handle which has this UUID will be returned if it exists
+ * @param[out] service The service's GATT handle which has @a uuid if it exists
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NO_DATA  No data available
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_gatt_server_get_service(bt_gatt_server_h server, const char *uuid,
+                               bt_gatt_h *service);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Invokes @a callback function on each service that belongs to the specified GATT server.
+ * @since_tizen 3.0
+ *
+ * @param[in] server The GATT server's handle
+ * @param[in] callback The function to be invoked on each service
+ * @param[in] user_data The user data to be passed to @a callback function
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_foreach_cb()
+ */
+int bt_gatt_server_foreach_services(bt_gatt_server_h server,
+               bt_gatt_foreach_cb callback, void *user_data);
+
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief Initializes the Bluetooth PBAP Client.
+ * @details This initialization is necessary to call other PBAP client APIs.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ *
+ * @remarks This function must be called to initialize Bluetooth PBAP client. You must free all resources of the Bluetooth service
+ * by calling bt_pbap_client_deinitialize() if Bluetooth PBAP Client is no longer needed.
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of the local Bluetooth adapter must be #BT_ADAPTER_ENABLED.
+ *
+ * @see  bt_pbap_client_deinitialize()
+ * @see  bt_pbap_client_connect()
+ * @see  bt_pbap_client_disconnect()
+ * @see  bt_pbap_client_get_phone_book_size()
+ * @see  bt_pbap_client_get_phone_book()
+ * @see  bt_pbap_client_get_list()
+ * @see  bt_pbap_client_pull_vcard()
+ * @see  bt_pbap_client_search_phone_book()
+ */
+int bt_pbap_client_initialize(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief Deinitializes the Bluetooth PBAP Client.
+ * @details This deinitialization must be done to free resources when the PBAP client is not longer needed.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of the local Bluetooth adapter must be #BT_ADAPTER_ENABLED.
+ *     The PBAP client must be initialized with bt_pbap_client_initialize().
+ * @see  bt_pbap_client_deinitialize()
+ * @see  bt_pbap_client_connect()
+ * @see  bt_pbap_client_disconnect()
+ * @see  bt_pbap_client_get_phone_book_size()
+ * @see  bt_pbap_client_get_phone_book()
+ * @see  bt_pbap_client_get_list()
+ * @see  bt_pbap_client_pull_vcard()
+ * @see  bt_pbap_client_search_phone_book()
+ */
+int bt_pbap_client_deinitialize(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief  Registers a callback function that will be invoked when the connection state is changed.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The PBAP client must be initialized with bt_pbap_client_initialize().
+ * @see bt_pbap_client_initialize()
+ */
+int bt_pbap_client_set_connection_state_changed_cb(bt_pbap_connection_state_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief  Unregisters a callback function that will be invoked when the connection state is changed.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The PBAP client must be initialized with bt_pbap_client_initialize().
+ * @see bt_pbap_client_initialize()
+ */
+int bt_pbap_client_unset_connection_state_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief Connects to PBAP server, asynchronously.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel public
+ * @privilege http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] address The other device's address
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of the local Bluetooth adapter must be #BT_ADAPTER_ENABLED.
+ * @pre The PBAP client must be initialized with bt_pbap_client_initialize().
+ * @pre The local device must be bonded with the remote device by bt_device_create_bond().
+ * @post bt_pbap_connection_state_changed_cb() will be invoked.
+ * @see bt_pbap_client_disconnect()
+ * @see bt_pbap_client_set_connection_state_changed_cb()
+ */
+int bt_pbap_client_connect(const char *address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief Disconnects from PBAP server, asynchronously.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel public
+ * @privilege http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] address The other device's address
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of the local Bluetooth adapter must be #BT_ADAPTER_ENABLED.
+ * @pre The PBAP client must be initialized with bt_pbap_client_initialize().
+ * @pre PBAP connection must be created with bt_pbap_client_connect().
+ * @post bt_pbap_connection_state_changed_cb() will be invoked.
+ * @see bt_pbap_client_connect()
+ * @see bt_pbap_client_set_connection_state_changed_cb()
+ */
+int bt_pbap_client_disconnect(const char *address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief Gets size of phone book from PBAP server, asynchronously.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel public
+ * @privilege http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] address The other device's address
+ * @param[in] source Source of the phone book (Phone/SIM)
+ * @param[in] folder_type Type of folder
+ * @param[in] callback The callback function called when PBAP phone book size is returned.
+ * @param[in] user_data Data to be passed to the PBAP phone book size callback.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of the local Bluetooth adapter must be #BT_ADAPTER_ENABLED.
+ * @pre The PBAP client must be initialized with bt_pbap_client_initialize().
+ * @pre PBAP connection must be created with bt_pbap_client_connect().
+ *
+ * @see bt_pbap_client_connect()
+ */
+int bt_pbap_client_get_phone_book_size(const char *address,
+                                               bt_pbap_address_book_source_e source,
+                                               bt_pbap_folder_type_e folder_type,
+                                               bt_pbap_phone_book_size_cb callback,
+                                               void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief Gets all contacts and call logs as vCard from PBAP server, asynchronously.
+ * @details The received phone book file will be saved in the platform downloads folder.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel public
+ * @privilege http://tizen.org/privilege/bluetooth
+ *                 http://tizen.org/privilege/mediastorage
+ *
+ * @param[in] address The other device's address
+ * @param[in] source Source of phone book (Phone/SIM)
+ * @param[in] folder_type Type of folder
+ * @param[in] format The vCard format
+ * @param[in] order Specifies which field shall be used to sort vCards.
+ * @param[in] offset The number of vCards to be excluded, counting from the beginning
+ * @param[in] max_list_count The maximum number of vCards to be fetched
+ * @param[in] fields vCard fields to be fetched; one or more #bt_pbap_field_e values combined with bitwise 'or'
+ * @param[in] callback The callback function called when PBAP phone book is Pulled.
+ * @param[in] user_data Data to be passed to the PBAP phone book pulling callback.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of the local Bluetooth adapter must be #BT_ADAPTER_ENABLED.
+ * @pre The PBAP client must be initialized with bt_pbap_client_initialize().
+ * @pre PBAP connection must be created with bt_pbap_client_connect().
+ *
+ * @see bt_pbap_client_connect()
+ */
+int bt_pbap_client_get_phone_book(const char *address,
+                                               bt_pbap_address_book_source_e source,
+                                               bt_pbap_folder_type_e folder_type,
+                                               bt_pbap_vcard_format_e format,
+                                               bt_pbap_sort_order_e order,
+                                               unsigned short offset,
+                                               unsigned short max_list_count,
+                                               unsigned int fields,
+                                               bt_pbap_phone_book_received_cb callback,
+                                               void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief Gets contact and call log information from the PBAP server, asynchronously.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel public
+ * @privilege http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] address The other device's address
+ * @param[in] source Source of phone book (Phone/SIM)
+ * @param[in] folder_type Type of folder
+ * @param[in] order Specifies which field shall be used to sort vCards.
+ * @param[in] offset vCards to be excluded from beginning.
+ * @param[in] max_list_count Maximum number of vCards to be fetched
+ * @param[in] callback The callback function called when PBAP List is returned.
+ * @param[in] user_data Data to be passed to the PBAP phone book pulling callback.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of the local Bluetooth adapter must be #BT_ADAPTER_ENABLED.
+ * @pre The PBAP client must be initialized with bt_pbap_client_initialize().
+ * @pre PBAP connection must be created with bt_pbap_client_connect().
+ *
+ * @see bt_pbap_client_connect()
+ */
+int bt_pbap_client_get_list(const char *address,
+                                       bt_pbap_address_book_source_e source,
+                                       bt_pbap_folder_type_e folder_type,
+                                       bt_pbap_sort_order_e order,
+                                       unsigned short offset,
+                                       unsigned short max_list_count,
+                                       bt_pbap_list_vcards_cb callback,
+                                       void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief Gets the selected contact using the index parameter as vCard from PBAP server, asynchronously.
+ * @details The received phone book file will be saved in the platform downloads folder.
+ *              The @a index value should be equal to the value of the @a index field in the #bt_pbap_vcard_info_s structure,
+ *              which can be obtained with bt_pbap_client_get_list() or bt_pbap_client_search_phone_book().
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel public
+ * @privilege http://tizen.org/privilege/bluetooth
+ *                 http://tizen.org/privilege/mediastorage
+ *
+ * @param[in] address The other device's address
+ * @param[in] source Source of phone book (Phone/SIM)
+ * @param[in] folder_type Type of folder
+ * @param[in] index The handle index of vCard to be fetched
+ * @param[in] format Format of vCard
+ * @param[in] fields vCard fields to be fetched; one or more #bt_pbap_field_e values combined with bitwise 'or'
+ * @param[in] callback The callback function called when PBAP phone book is Pulled.
+ * @param[in] user_data Data to be passed to the PBAP phone book Pulling callback.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of the local Bluetooth adapter must be #BT_ADAPTER_ENABLED.
+ * @pre The PBAP client must be initialized with bt_pbap_client_initialize().
+ * @pre PBAP connection must be created with bt_pbap_client_connect().
+ * @pre The vCard information (#bt_pbap_vcard_info_s) must be obtained with bt_pbap_client_get_list() or bt_pbap_client_search_phone_book().
+ * @see bt_pbap_client_connect()
+ * @see bt_pbap_client_get_list()
+ * @see bt_pbap_client_search_phone_book()
+ */
+int bt_pbap_client_pull_vcard(const char *address,
+                                       bt_pbap_address_book_source_e source,
+                                       bt_pbap_folder_type_e folder_type,
+                                       int index,
+                                       bt_pbap_vcard_format_e format,
+                                       unsigned int fields,
+                                       bt_pbap_phone_book_received_cb callback,
+                                       void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief Finds and fetches the contact and call log information from the PBAP server, asynchronously.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel public
+ * @privilege http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] address The other device's address
+ * @param[in] source Source of phone book (Phone/SIM)
+ * @param[in] folder_type Type of folder
+ * @param[in] search_attribute field to be search
+ * @param[in] search_value pattern to be searched for
+ * @param[in] order Specifies which field shall be used to sort vCards.
+ * @param[in] offset vCards to be excluded from beginning.
+ * @param[in] max_list_count Maximum number of vCards to be fetched
+ * @param[in] callback The callback function called when PBAP List is returned.
+ * @param[in] user_data Data to be passed to the PBAP phone book pulling callback.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of the local Bluetooth adapter must be #BT_ADAPTER_ENABLED.
+ * @pre The PBAP client must be initialized with bt_pbap_client_initialize().
+ * @pre PBAP connection must be created with bt_pbap_client_connect().
+ *
+ * @see bt_pbap_client_connect()
+ */
+int bt_pbap_client_search_phone_book(const char *address,
+                                       bt_pbap_address_book_source_e source,
+                                       bt_pbap_folder_type_e folder_type,
+                                       bt_pbap_search_field_e search_attribute,
+                                       const char *search_value,
+                                       bt_pbap_sort_order_e order,
+                                       unsigned short offset,
+                                       unsigned short max_list_count,
+                                       bt_pbap_list_vcards_cb callback,
+                                       void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Creates a scan filter to find only LE advertisements which match specific requirements.
+ * @details If the filter's attribute is not set, then the filter will accept
+ *              all values of that attribute. If an attribute is set, the filter
+ *              will accept only advertisements which match the set attribute.
+ *
+ *              For example, if device name is set with
+ *              bt_adapter_le_scan_filter_set_device_name(), the filter will accept
+ *              only advertisements from devices with the given name. If device name
+ *              is not set, advertisements will be filtered without regard to device
+ *              names.
+ * @since_tizen 4.0
+ *
+ * @remarks The @a scan_filter should be destroyed with bt_adapter_le_scan_filter_destroy().
+ *
+ * @param[out] scan_filter The scan filter handle
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_scan_filter_destroy()
+ */
+int bt_adapter_le_scan_filter_create(bt_scan_filter_h *scan_filter);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Destroys a scan filter.
+ * @since_tizen 4.0
+ *
+ * @param[in] scan_filter The scan filter handle
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_scan_filter_create()
+ */
+int bt_adapter_le_scan_filter_destroy(bt_scan_filter_h scan_filter);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Sets the device address for the advertisements filter.
+ * @since_tizen 4.0
+ *
+ * @param[in] scan_filter The scan filter handle
+ * @param[in] address The device address by which advertisements will be filtered
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ */
+int bt_adapter_le_scan_filter_set_device_address(bt_scan_filter_h scan_filter, const char *address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Sets the device name for the advertisements filter.
+ * @details Any previously set value will be overwritten.
+ * @since_tizen 4.0
+ *
+ * @param[in] scan_filter The scan filter handle
+ * @param[in] name The device name by which advertisements will be filtered
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ */
+int bt_adapter_le_scan_filter_set_device_name(bt_scan_filter_h scan_filter, const char *name);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Sets the service UUID for the advertisements filter.
+ * @details Any previously set value will be overwritten.
+ * @since_tizen 4.0
+ *
+ * @param[in] scan_filter The scan filter handle
+ * @param[in] uuid The service UUID by which advertisements will be filtered
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ */
+int bt_adapter_le_scan_filter_set_service_uuid(bt_scan_filter_h scan_filter, const char *uuid);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Sets the service UUID and the mask for the advertisements filter,
+ *           to use for filtering by partial data.
+ * @details Any previously set value will be overwritten. The mask works as follows:
+ *             For each bit set to 1 in the mask, the corresponding bits in @a uuid
+ *             and in the filtered data will have to be equal. If the mask bit is set to 0,
+ *             the corresponding bits will be ignored.
+ * @since_tizen 4.0
+ *
+ * @remarks The @a mask and the service @a uuid must have equal lengths.
+ *
+ * @param[in] scan_filter The scan filter handle
+ * @param[in] uuid The service UUID by which advertisements will be filtered
+ * @param[in] mask The mask to filter advertisements
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ */
+int bt_adapter_le_scan_filter_set_service_uuid_with_mask(bt_scan_filter_h scan_filter,
+                       const char *uuid, const char *mask);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Sets the service solicitation UUID for the advertisements filter.
+ * @details Any previously set value will be overwritten.
+ * @since_tizen 4.0
+ *
+ * @param[in] scan_filter The scan filter handle
+ * @param[in] uuid The service solicitation UUID by which advertisements will be filtered
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ */
+int bt_adapter_le_scan_filter_set_service_solicitation_uuid(bt_scan_filter_h scan_filter, const char *uuid);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Sets the service solicitation UUID and the mask for the advertisements filter,
+ *           to use for filtering by partial data.
+ * @details Any previously set value will be overwritten. The mask works as follows:
+ *             For each bit set to 1 in the mask, the corresponding bits in @a uuid
+ *             and in the filtered data will have to be equal. If the mask bit is set to 0,
+ *             the corresponding bits will be ignored.
+ * @since_tizen 4.0
+ *
+ * @remarks The @a mask and the service solicitation @a uuid must have equal lengths.
+ *
+ * @param[in] scan_filter The scan filter handle
+ * @param[in] uuid The service solicitation UUID by which advertisements will be filtered
+ * @param[in] mask The mask by which advertisements will be filtered
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ */
+int bt_adapter_le_scan_filter_set_service_solicitation_uuid_with_mask(bt_scan_filter_h scan_filter,
+                       const char *uuid, const char *mask);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Sets the service data for the advertisements filter.
+ * @details Any previously set value will be overwritten.
+ * @since_tizen 4.0
+ *
+ * @param[in] scan_filter The scan filter handle
+ * @param[in] uuid The service UUID by which advertisements will be filtered
+ * @param[in] data The service data by which advertisements will be filtered
+ * @param[in] data_len The length of the service data
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ */
+int bt_adapter_le_scan_filter_set_service_data(bt_scan_filter_h scan_filter,
+                       const char *uuid, const char *data, unsigned int data_len);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Sets the service data and the mask for the advertisements filter,
+ *           to use for filtering by partial data.
+ * @details Any previously set value will be overwritten. The mask works as follows:
+ *             For each bit set to 1 in the mask, the corresponding bits in @a data
+ *             and in the filtered data will have to be equal. If the mask bit is set to 0,
+ *             the corresponding bits will be ignored.
+ * @since_tizen 4.0
+ *
+ * @remarks The @a mask and the service @a data must have equal lengths.
+ *
+ * @param[in] scan_filter The scan filter handle
+ * @param[in] uuid The service UUID by which advertisements will be filtered
+ * @param[in] data The service data by which advertisements will be filtered
+ * @param[in] data_len The length of the service data
+ * @param[in] mask The mask by which advertisements will be filtered
+ * @param[in] mask_len The length of the mask
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ */
+int bt_adapter_le_scan_filter_set_service_data_with_mask(bt_scan_filter_h scan_filter,
+                       const char *uuid,
+                       const char *data,
+                       unsigned int data_len,
+                       const char *mask,
+                       unsigned int mask_len);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Sets the manufacturer data for the advertisements filter.
+ * @details Any previously set value will be overwritten.
+ * @since_tizen 4.0
+ *
+ * @param[in] scan_filter The scan filter handle
+ * @param[in] manufacturer_id The manufacturer ID (0x0000 ~ 0xFFFF)
+ * @param[in] data The manufacturer data (byte array)
+ * @param[in] data_len The length of the manufacturer data
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ */
+int bt_adapter_le_scan_filter_set_manufacturer_data(bt_scan_filter_h scan_filter,
+                       int manufacturer_id,
+                       const char *data,
+                       unsigned int data_len);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Sets the manufacturer data and the mask for the advertisements filter,
+ *           to use for filtering by partial data.
+ * @details Any previously set value will be overwritten. The mask works as follows:
+ *             For each bit set to 1 in the mask, the corresponding bits in @a data
+ *             and in the filtered data will have to be equal. If the mask bit is set to 0,
+ *             the corresponding bits will be ignored.
+ * @since_tizen 4.0
+ *
+ * @remarks The @a mask and the manufacturer @a data must have equal lengths.
+ *
+ * @param[in] scan_filter The scan filter handle
+ * @param[in] manufacturer_id The manufacturer ID (0x0000 ~ 0xFFFF)
+ * @param[in] data The manufacturer data (byte array)
+ * @param[in] data_len The length of the manufacturer data
+ * @param[in] mask The mask by which advertisements will be filtered
+ * @param[in] mask_len The length of the mask
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ */
+int bt_adapter_le_scan_filter_set_manufacturer_data_with_mask(bt_scan_filter_h scan_filter,
+                       int manufacturer_id,
+                       const char *data,
+                       unsigned int data_len,
+                       const char *mask,
+                       unsigned int mask_len);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Sets the scan filter type for the advertisements filter.
+ * @details The filter type is used when searching only for iBeacon or proximity
+ *              type's advertising data. If the type is not set, LE scanner will
+ *              search devices as with regard to other filtered attributes.
+ *              If the type is set, all other attributes set for the filter are ignored.
+ * @since_tizen 4.0
+ *
+ * @param[in] scan_filter The scan filter handle
+ * @param[in] mode The scan filter type
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ */
+int bt_adapter_le_scan_filter_set_type(bt_scan_filter_h scan_filter,
+                        bt_adapter_le_scan_filter_type_e mode);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Registers a scan filter to use for scanning.
+ * @details If the filter is registered, it cannot be changed.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @remarks Several scan filters can be registered. If an advertisement passes
+ *                any of the registered scan filters, it will be included in the results.
+ *
+ * @param[in] scan_filter The scan filter handle
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Scan is in progress
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ */
+int bt_adapter_le_scan_filter_register(bt_scan_filter_h scan_filter);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Unregisters all registered scan filters.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] scan_filter The scan filter handle
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Scan is in progress
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ */
+int bt_adapter_le_scan_filter_unregister(bt_scan_filter_h scan_filter);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Unregisters all registered scan filters.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Scan is in progress
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ */
+int bt_adapter_le_scan_filter_unregister_all(void);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __TIZEN_NETWORK_BLUETOOTH_H__ */
diff --git a/include/bluetooth_extension.h b/include/bluetooth_extension.h
new file mode 100644 (file)
index 0000000..f6c4e90
--- /dev/null
@@ -0,0 +1,291 @@
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __TIZEN_NETWORK_BLUETOOTH_EXTENSION_H__
+#define __TIZEN_NETWORK_BLUETOOTH_EXTENSION_H__
+
+#include "bluetooth_type.h"
+#include "bluetooth_type_extension.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+/**
+ * @file        bluetooth_extension.h
+ */
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief Opens a SCO(Synchronous Connection Oriented link) to connected remote device, asynchronously.
+ * @since_tizen 2.3
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_ALREADY_DONE  Operation is already done
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio device must be connected with bt_audio_connect().
+ * @post bt_ag_sco_state_changed_cb() will be invoked.
+ * @see bt_ag_close_sco()
+ * @see bt_ag_sco_state_changed_cb()
+ * @see bt_audio_connect()
+ */
+int bt_ag_open_sco(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief Closes an opened SCO(Synchronous Connection Oriented link), asynchronously.
+ * @since_tizen 2.3
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The SCO must be opened with bt_ag_open_sco().
+ * @post bt_ag_sco_state_changed_cb() will be invoked.
+ * @see bt_ag_open_sco()
+ * @see bt_ag_sco_state_changed_cb()
+ */
+int bt_ag_close_sco(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief Checks whether an opened SCO(Synchronous Connection Oriented link) exists or not.
+ * @since_tizen 2.3
+ * @param[out] opened The SCO status: (@c true = opened, @c  false = not opened)
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_ag_open_sco()
+ * @see bt_ag_close_sco()
+ */
+int bt_ag_is_sco_opened(bool *opened);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Registers a callback function that will be invoked when the SCO(Synchronous Connection Oriented link) state is changed.
+ * @since_tizen 2.3
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_sco_state_changed_cb()
+ * @see bt_ag_unset_sco_state_changed_cb()
+ */
+int bt_ag_set_sco_state_changed_cb(bt_ag_sco_state_changed_cb callback, void *user_data);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Unregisters a callback function that will be invoked when the SCO(Synchronous Connection Oriented link) state is changed.
+ * @since_tizen 2.3
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_sco_state_changed_cb()
+ * @see bt_ag_set_sco_state_changed_cb()
+ */
+int bt_ag_unset_sco_state_changed_cb(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief Notifies the state of voice recognition.
+ * @since_tizen 2.3
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ * @param[in] state  The state of voice recognition: (@c true = enabled, @c  false = disabled)
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio device must be connected with bt_audio_connect().
+ * @see bt_audio_connect()
+ */
+int bt_ag_notify_voice_recognition_state(bool state);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Notifies the speaker gain to the remote device.
+ * @since_tizen 2.3
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ * @details This function sends a signal to the remote device. This signal has the gain value.
+ * @a gain is represented on a scale from 0 to 15. This value is absolute value relating to a particular volume level.
+ * When the speaker gain of remote device is changed to the requested gain, bt_audio_speaker_gain_changed_cb() will be called.
+ * @param[in] gain The gain of speaker (0 ~ 15)
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device is connected by bt_audio_connect() with #BT_AUDIO_PROFILE_TYPE_HSP_HFP service.
+ * @see bt_ag_get_speaker_gain()
+ * @see bt_ag_set_speaker_gain_changed_cb()
+ * @see bt_ag_unset_speaker_gain_changed_cb()
+ */
+int bt_ag_notify_speaker_gain(int gain);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Gets the current speaker gain of the remote device.
+ * @since_tizen 2.3
+ * @details This function gets the value of speaker gain of the remote device.
+ * @a gain is represented on a scale from 0 to 15. This value is absolute value relating to a particular volume level.
+ * @param[out] gain The gain of speaker (0 ~ 15)
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device is connected by bt_audio_connect() with #BT_AUDIO_PROFILE_TYPE_HSP_HFP service.
+ * @see bt_ag_notify_speaker_gain()
+ * @see bt_ag_set_speaker_gain_changed_cb()
+ * @see bt_ag_unset_speaker_gain_changed_cb()
+ */
+int bt_ag_get_speaker_gain(int *gain);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Registers a callback function that will be invoked when the speaker gain of the remote device is changed.
+ * @since_tizen 2.3
+ * @details This function let you know the change of the speaker gain of the remote device.
+ * @a gain is represented on a scale from 0 to 15. This value is absolute value relating to a particular volume level.
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_unset_speaker_gain_changed_cb()
+ */
+int bt_ag_set_speaker_gain_changed_cb(bt_ag_speaker_gain_changed_cb callback, void *user_data);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Unregisters a callback function that will be invoked when the speaker gain of the remote device is changed.
+ * @since_tizen 2.3
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_set_speaker_gain_changed_cb()
+ */
+int bt_ag_unset_speaker_gain_changed_cb(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Registers a callback function that will be invoked when the microphone gain of the remote device is changed.
+ * @since_tizen 2.3
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_unset_microphone_gain_changed_cb()
+ */
+int bt_ag_set_microphone_gain_changed_cb(bt_ag_microphone_gain_changed_cb callback, void *user_data);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Unregisters a callback function that will be invoked when the microphone gain of the remote device is changed.
+ * @since_tizen 2.3
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_set_microphone_gain_changed_cb()
+ */
+int bt_ag_unset_microphone_gain_changed_cb(void);
+
+/**
+ * @}
+ */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __TIZEN_NETWORK_BLUETOOTH_EXTENSION_H__ */
diff --git a/include/bluetooth_internal.h b/include/bluetooth_internal.h
new file mode 100644 (file)
index 0000000..c7d261f
--- /dev/null
@@ -0,0 +1,4234 @@
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __TIZEN_NETWORK_BLUETOOTH_INTERNAL_H__
+#define __TIZEN_NETWORK_BLUETOOTH_INTERNAL_H__
+
+#include <glib.h>
+#include "bluetooth_type.h"
+#include "bluetooth_type_internal.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+/**
+ * @file        bluetooth_internal.h
+ */
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Enables the local Bluetooth adapter, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @details This function enables Bluetooth protocol stack and hardware.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_ALREADY_DONE  Already enabled
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre Bluetooth service must be initialized with bt_initialize().
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_DISABLED
+ * @post This function invokes bt_adapter_state_changed_cb().
+ *
+ * @see bt_initialize()
+ * @see bt_adapter_get_state()
+ * @see bt_adapter_set_state_changed_cb()
+ * @see bt_adapter_unset_state_changed_cb()
+ * @see bt_adapter_state_changed_cb()
+ *
+ */
+int bt_adapter_enable(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Disables the local Bluetooth adapter, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @details This function disables Bluetooth protocol stack and hardware.
+ *
+ * @remarks You should disable Bluetooth adapter, which is helpful for saving power.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED
+ * @post This function invokes bt_adapter_state_changed_cb().
+ *
+ * @see bt_adapter_get_state()
+ * @see bt_adapter_state_changed_cb()
+ * @see bt_adapter_set_state_changed_cb()
+ * @see bt_adapter_unset_state_changed_cb ()
+ *
+ */
+int bt_adapter_disable(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Recover the local Bluetooth adapter, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @details This function does recovery logic, disables Bluetooth protocol stack and hardware, then enables after a few seconds.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED
+ * @post This function invokes bt_adapter_state_changed_cb().
+ *
+ * @see bt_adapter_get_state()
+ * @see bt_adapter_state_changed_cb()
+ * @see bt_adapter_set_state_changed_cb()
+ * @see bt_adapter_unset_state_changed_cb ()
+ *
+ */
+int bt_adapter_recover(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
+ * @brief  A2DP source/sink role is switched using this API
+ * @since_tizen 4.0
+ * @param[in] Role for A2DP
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_OPERATION_FAILED Internal Error
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_initialize()
+ * @see bt_audio_initialize()
+ */
+int bt_audio_select_role(bt_audio_role_e role);
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Reset the local Bluetooth adapter, synchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @details This function resets Bluetooth protocol and values.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre Bluetooth service must be initialized with bt_initialize().
+ * @post bt_adapter_state_changed_cb() will be invoked if The state of local Bluetooth was #BT_ADAPTER_ENABLED.
+ *
+ * @see bt_initialize()
+ * @see bt_adapter_get_state()
+ * @see bt_adapter_set_state_changed_cb()
+ * @see bt_adapter_unset_state_changed_cb()
+ * @see bt_adapter_state_changed_cb()
+ *
+ */
+int bt_adapter_reset(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Gets the version of local Bluetooth adapter.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @remarks The @a local_version must be released with free() by you.
+ *
+ * @param[out] local_version The version of local Bluetooth adapter
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ */
+int bt_adapter_get_version(char **local_version);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Gets the information regarding local Bluetooth adapter.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @remarks The @a all parameters must be released with free() by you.
+ *
+ * @param[out] chipset Chipset name of local Bluetooth adapter
+ * @param[out] firmware Firmware info. of local Bluetooth adapter
+ * @param[out] stack_version Bluetooth stack version
+ * @param[out] profiles The profile list of local Bluetooth adapter
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ */
+int bt_adapter_get_local_info(char **chipset, char **firmware, char **stack_version, char **profiles);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Sets the visibility mode.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @remarks #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE will change to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE
+ * after the given @a duration goes.
+ *
+ * @param[in] discoverable_mode The Bluetooth visibility mode to set
+ * @param[in] duration The duration until the visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE (in seconds).
+ * @a duration is used only for #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE mode.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @post bt_adapter_visibility_mode_changed_cb() will be invoked if this function returns #BT_ERROR_NONE.
+ *
+ * @see bt_adapter_get_visibility()
+ * @see bt_adapter_visibility_mode_changed_cb()
+ * @see bt_adapter_set_visibility_mode_changed_cb()
+ * @see bt_adapter_unset_visibility_mode_changed_cb()
+ */
+int bt_adapter_set_visibility(bt_adapter_visibility_mode_e discoverable_mode, int duration);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Registers a callback function that will be invoked when remote device requests authentication.
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
+ * @pre The Bluetooth service must be initialized by bt_initialize().
+ * @param[in] callback  callback function to be set when a request is received.
+ * @param[in] user_data data from application which will be provided in callback.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @see bt_initialize()
+ * @see bt_adapter_set_authentication_req_cb()
+ */
+int bt_adapter_set_authentication_req_cb(bt_adapter_authentication_req_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Unregisters a callback function that will be invoked when remote device requests authentication.
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
+ * @pre The Bluetooth service must be initialized by bt_initialize().
+ * @see bt_initialize()
+ * @see bt_adapter_set_authentication_req_cb()
+ */
+int bt_adapter_unset_authentication_req_cb(void);
+
+/**
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  API to reply with PIN or PASSKEY with authentication type - TRUE or FALSE.
+ * @remarks  This function can be called by application when remote device requests PIN or PASSKEY from
+ *           local adapter.
+ * @param[in]  passkey  The passkey to be provided by application when remote devices requests for it.
+ * @param[in]  authentication_reply This indicates whether application wants to accept or cancel the on-going pairing
+ * @pre  This function can only be called when application receieves authentication event (BT_AUTH_PIN_REQUEST)
+ *       from remote device.
+ * @see  bt_adapter_set_authentication_req_cb()
+ */
+int bt_adapter_passkey_reply(char *passkey, bool authentication_reply);
+
+/**
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  API to reply to the PASSKEY confirmation for on-going pairing with remote device.
+ * @remarks  This function can be called by application, when local adapter wants PASSKEY confirmation from user.
+ * @param[in]  confirmation_reply This indicates whether application wants to accepts or cancels the on-going pairing
+ *             confirmation_reply : TRUE will indicate that Application has confirmed the PASSKEY
+ *             confirmation_reply : FALSE will indicate that Application has failed to confirm the PASSKEY. In this situation
+ *             the pairing will be failed.
+ * @pre  This function can only be called when application receives authentication event (BT_AUTH_PASSKEY_CONFIRM_REQUEST)
+ *       from remote device.
+ * @see  bt_adapter_set_authentication_req_cb()
+ */
+int bt_adapter_passkey_confirmation_reply(bool confirmation_reply);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Registers a callback function to be invoked when the connectable state changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post bt_adapter_connectable_changed_cb() will be invoked.
+ *
+ * @see bt_initialize()
+ * @see bt_adapter_connectable_changed_cb()
+ * @see bt_adapter_unset_connectable_changed_cb()
+ */
+int bt_adapter_set_connectable_changed_cb(bt_adapter_connectable_changed_cb callback, void *user_data);
+
+/**
+ * @internal
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Unregisters the callback function.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @return  0 on success, otherwise a negative error value.
+ * @retval  #BT_ERROR_NONE  Successful
+ * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre  The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see  bt_initialize()
+ * @see  bt_adapter_set_connectable_changed_cb()
+ */
+int bt_adapter_unset_connectable_changed_cb(void);
+
+/**
+ * @internal
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Gets the connectable state of local Bluetooth adapter.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @remarks When connectable state is false, no device can connect to this device and visibility mode cannot be changed.
+ *
+ * @param[out] connectable The connectable state of local Bluetooth adapter
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ *
+ * @see bt_adapter_set_connectable()
+ */
+int bt_adapter_get_connectable(bool *connectable);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Sets the connectable state of local Bluetooth adapter.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @remarks When connectable state is false, no device can connect to this device and visibility mode cannot be changed.
+ *
+ * @param[in] connectable The connectable state to set
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @post bt_adapter_connectable_changed_cb() will be invoked if this function returns #BT_ERROR_NONE.
+ *
+ * @see bt_adapter_get_connectable()
+ * @see bt_adapter_connectable_changed_cb()
+ * @see bt_adapter_set_connectable_changed_cb()
+ * @see bt_adapter_unset_connectable_changed_cb()
+ */
+int bt_adapter_set_connectable(bool connectable);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Sets the manufacturer data of local Bluetooth adapter.
+ * @since_tizen 2.3
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]   data   The manufacturer specific data of the Bluetooth device.
+ * @param[in]   len    The length of @a data.Maximaum length is 240 bytes.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @post bt_adapter_manufacturer_data_changed_cb() will be invoked
+ * if this function returns #BT_ERROR_NONE.
+ *
+ * @see bt_adapter_manufacturer_data_changed_cb
+ * @see bt_adapter_set_manufacturer_data_changed_cb()
+ * @see bt_adapter_unset_manufacturer_data_changed_cb()
+ */
+int bt_adapter_set_manufacturer_data(char *data, int len);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Parse the samsung specific manufacturer data of discovered device.
+ *
+ * @remarks bt_adapter_free_manufacturer_data should be invoked
+ * to free the memory associated with parsed data
+ *
+ * @param[in]   manufacturer_data      The manufacturer specific data of the discovered Bluetooth device.
+ * @param[in]   len            length of the received manufacturer data
+ * @param[out] data Parsed manufacturer data
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ *
+ * @see bt_adapter_free_manufacturer_data()
+ */
+int bt_adapter_parse_manufacturer_data(bt_manufacturer_data *data,
+               char *manufacturer_data, int manufacturer_data_len);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Free the memory associated with parsed manufacturer data
+ *
+ * @param[in] data parsed manufactrer data
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ *
+ * @see bt_adapter_parse_manufacturer_data()
+ */
+int bt_adapter_free_manufacturer_data(bt_manufacturer_data *data);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Registers a callback function to be invoked
+ * when the manufacturer data of Bluetooth adapter changes.
+ * @since_tizen 2.3
+ *
+ * @param[in]   callback       The callback function to invoke
+ * @param[in]   user_data      The user data to be passed to the callback function
+ *
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post  bt_adapter_manufacturer_data_changed_cb() will be invoked.
+ *
+ * @see bt_initialize()
+ * @see bt_adapter_unset_manufacturer_data_changed_cb()
+ */
+int bt_adapter_set_manufacturer_data_changed_cb(
+               bt_adapter_manufacturer_data_changed_cb callback,
+               void *user_data);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief      Unregisters the callback function.
+ * @since_tizen 2.3
+ *
+ * @return     0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_initialize()
+ * @see bt_adapter_set_manufacturer_data_changed_cb()
+ */
+int bt_adapter_unset_manufacturer_data_changed_cb(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Enables the local Bluetooth le adapter, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @details This function enables Bluetooth protocol stack and hardware.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_ALREADY_DONE  Already enabled
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre Bluetooth service must be initialized with bt_initialize().
+ * @post This function invokes bt_adapter_le_state_changed_cb().
+ *
+ * @see bt_initialize()
+ * @see bt_adapter_le_get_state()
+ * @see bt_adapter_le_set_state_changed_cb()
+ * @see bt_adapter_le_unset_state_changed_cb()
+ * @see bt_adapter_le_state_changed_cb()
+ *
+ */
+int bt_adapter_le_enable(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Disables the local Bluetooth le adapter, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @details This function disables Bluetooth le protocol stack and hardware.
+ *
+ * @remarks
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_LE_ENABLED
+ * @post This function invokes bt_adapter_le_state_changed_cb().
+ *
+ * @see bt_adapter_le_get_state()
+ * @see bt_adapter_le_state_changed_cb()
+ * @see bt_adapter_le_set_state_changed_cb()
+ * @see bt_adapter_le_unset_state_changed_cb ()
+ *
+ */
+int bt_adapter_le_disable(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Gets the current state of local Bluetooth adapter.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[out] adapter_le_state The current adapter le state
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_initialize()
+ */
+int bt_adapter_le_get_state(bt_adapter_le_state_e *adapter_le_state);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief  Registers a callback function to be invoked when the Bluetooth adapter le state changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] callback The callback function to invoke
+ * @param[in] user_data        The user data to be passed to the callback function
+ *
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post bt_adapter_le_state_changed_cb() will be invoked.
+ *
+ * @see bt_initialize()
+ * @see bt_adapter_le_state_changed_cb()
+ * @see bt_adapter_le_unset_state_changed_cb()
+ */
+int bt_adapter_le_set_state_changed_cb(bt_adapter_le_state_changed_cb callback, void *user_data);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief      Unregisters the callback function.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @return     0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_initialize()
+ * @see bt_adapter_le_set_state_changed_cb()
+ */
+int bt_adapter_le_unset_state_changed_cb(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief add address to whitelist for accepting scanning request.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @remarks If the adress is in the whitelist then other LE devices are able to
+ * search this device. Before calling this API, make sure that the adapter is
+ * enabled. There is no callback event for this API.
+
+ * @param[in] address The other device's address
+ * @param[in] address_type The other device's address type
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
+ * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ *
+ * @see bt_adapter_le_start_advertising_new()
+ * @see bt_adapter_le_stop_advertising()
+ */
+int bt_adapter_le_add_white_list(const char *address, bt_device_address_type_e address_type);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief remove address from the whitelist for not accepting scanning request.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @remarks If the adress is in the whitelist then other LE devices are able to
+ * search this device. Before calling this API, make sure that the adapter is
+ * enabled. There is no callback event for this API.
+ *
+ * @param[in] address The other device's address
+ * @param[in] address_type The other device's address type
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
+ * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ *
+ * @see bt_adapter_le_start_advertising_new()
+ * @see bt_adapter_le_stop_advertising()
+ */
+int bt_adapter_le_remove_white_list(const char *address, bt_device_address_type_e address_type);
+
+/**
+ * @internal
+ * @deprecated Deprecated since 2.3.1
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief clear address from the whitelist for not accepting scanning request.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @remarks If the adress is in the whitelist then other LE devices are able to
+ * search this device. Before calling this API, make sure that the adapter is
+ * enabled. There is no callback event for this API.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
+ * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ *
+ * @see bt_adapter_le_start_advertising_new()
+ * @see bt_adapter_le_stop_advertising()
+ */
+int bt_adapter_le_clear_white_list(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief  Sets the Privacy feature state of local Bluetooth adapter.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] enable_privacy The privacy feature to set/unset.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_LE_ENABLED.
+ *
+ */
+int bt_adapter_le_enable_privacy(bool enable_privacy);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Sets the Hash and Randmoizer value, synchronously for LE OOB pairing.
+ * @since_tizen 4.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] remote_address Remote device address
+ * @param[in] address_type Remote device address type
+ * @param[in] hash256 The P-256 hash value received via OOB from remote device
+ * @param[in] randomizer256 The P-256 randomizer value received via OOB from remote device
+ * @param[in] hash256_len The length of @a hash256
+ * @param[in] randomizer256_len The length of @a randomizer256
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ */
+int bt_adapter_le_set_remote_oob_ext_data(const char *remote_address,
+               bt_device_address_type_e address_type,
+               const unsigned char *hash256, const unsigned char *randomizer256,
+               int hash256_len, int randomizer256_len);
+
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Set advertising filter policy to use white list
+ * @since_tizen 2.4
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ *
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] filter_policy The filter policy of advertising
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_adapter_le_start_advertising_new()
+ */
+int bt_adapter_le_set_advertising_filter_policy(bt_advertiser_h advertiser, bt_adapter_le_advertising_filter_policy_e filter_policy);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Retrieves the address of the devices connected with the specific profile.
+ * @since_tizen 4.0
+ *
+ * @param[in] profile_uuid The UUID of profile service uuid of the connected device
+ * @param [in] callback The callback function to invoke
+ * @param [in] user_data The user data passed from the foreach function
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_OUT_OF_MEMORY     Out of memory
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  There is no connected device
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @post This function invokes bt_adapter_profile_connected_devices_cb().
+ *
+ * @see bt_adapter_profile_connected_devices_cb()
+ */
+int bt_adapter_foreach_profile_connected_devices(const char *profile_uuid,
+       bt_adapter_profile_connected_devices_cb callback, void *user_data);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Gets a connection state
+ * @since_tizen @if WEARABLE @else 2.4 @endif
+ *
+ * @param[in] remote_address The address of the remote Bluetooth device
+ * @param[in] link_type The link type to get a connection state
+ * @param[out] connected The connection state
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED   Operation failed
+ */
+int bt_device_get_connection_state(const char *remote_address, bt_device_connection_link_type_e link_type, bool *connected);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Creates a bond with a remote Bluetooth device, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @remarks A bond can be destroyed by bt_device_destroy_bond().\n
+ * The bonding request can be cancelled by bt_device_cancel_bonding().
+ *
+ * @param[in] remote_address The address of the remote Bluetooth device with which the bond should be created
+ * @param[in] conn_type The connection type(LE or BREDR) to create bond with remote device
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_RESOURCE_BUSY     Device or resource busy
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ * @pre The remote device must be discoverable with bt_adapter_start_device_discovery().
+ * @post This function invokes bt_device_bond_created_cb().
+ *
+ * @see bt_adapter_start_device_discovery()
+ * @see bt_device_create_bond()
+ * @see bt_device_bond_created_cb()
+ * @see bt_device_cancel_bonding()
+ * @see bt_device_destroy_bond()
+ * @see bt_device_set_bond_created_cb()
+ * @see bt_device_unset_bond_created_cb()
+ */
+int bt_device_create_bond_by_type(const char *remote_address,
+                                 bt_device_connection_link_type_e conn_type);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Cancels service search process.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
+ * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation not in progress
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The service search must be in progress by bt_device_start_service_search().
+ *
+ * @see bt_device_start_service_search()
+ * @see bt_device_service_searched_cb()
+ * @see bt_device_set_service_searched_cb()
+ * @see bt_device_unset_service_searched_cb()
+ */
+int bt_device_cancel_service_search(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Gets a connection state
+ * @since_tizen @if WEARABLE 2.4 @endif
+ *
+ * @param[in] remote_address The address of the remote Bluetooth device
+ * @param[in] link_type The link type to get a connection state
+ * @param[out] connected The connection state
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED   Operation failed
+ */
+int bt_device_get_connection_state(const char *remote_address, bt_device_connection_link_type_e link_type, bool *connected);
+
+/**
+ * @internal
+ * @deprecated Deprecated since 4.0. Use bt_device_set_profile_trusted instead.
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Sets a profile restricted connection for a device
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
+ * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation not in progress
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_device_set_profile_restricted(const char *device_address, bt_restricted_profile_t profile, bool restricted);
+
+/**
+ * @internal
+ * @deprecated Deprecated since 4.0. Use bt_device_get_profile_trusted instead.
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Gets a profile restricted connection for a device
+ * @since_tizen 3.0
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
+ * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation not in progress
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_device_get_profile_restricted(const char *device_address, bt_restricted_profile_t profile, int *restricted);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief   Set a profile trusted or untrusted for a device.
+ * @since_tizen 4.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INTERNAL Internal Error
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not supported
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid Parameter
+ * @retval #BT_ERROR_NOT_ENABLED Invalid Parameter
+ */
+int bt_device_set_profile_trusted(const char *device_address, bt_trusted_profile_t profile, bool trust);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief   Get a profile is trusted or untrusted for a device.
+ * @since_tizen 4.0
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INTERNAL Internal Error
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not supported
+ * @retval #BT_ERROR_NOT_ENABLED Invalid Parameter
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid Parameter
+ */
+int bt_device_get_profile_trusted(const char *device_address, bt_trusted_profile_t profile, int *trust);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief   Registers a callback function to be invoked when Trusted Profiles are changed.
+ * @since_tizen 2.4
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not supported
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid Parameter
+ */
+int bt_device_set_trusted_profile_cb(bt_device_trusted_profiles_cb callback, void *user_data);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief   Unregisters the callback function registered with bt_device_set_trusted_profile_cb().
+ * @since_tizen 2.4
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not supported
+ */
+int bt_device_unset_trusted_profile_cb(void);
+
+/**
+ * @deprecated Deprecated since 4.0. Use bt_gatt_client_request_att_mtu_change instead.
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Request to change ATT MTU value
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] remote_address The address of the remote Bluetooth device
+ * @param[in] mtu New MTU value to be changed
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED   Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_device_request_att_mtu(const char *remote_address, unsigned int mtu) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 4.0. Use bt_gatt_client_get_att_mtu instead.
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Gets the ATT MTU value set for a connection
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] remote_address The address of the remote Bluetooth device
+ * @param[ot] mtu MTU value set for a connection
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
+ */
+int bt_device_get_att_mtu(const char *remote_address, unsigned int *mtu) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 4.0. Use bt_gatt_client_set_att_mtu_changed_cb instead.
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Registers a callback function to be invoked when the ATT MTU is changed.
+ * @since_tizen 3.0
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post bt_device_connection_state_changed_cb() will be invoked.
+ * @see bt_initialize()
+ * @see bt_device_unset_att_mtu_changed_cb()
+ */
+int bt_device_set_att_mtu_changed_cb(bt_device_att_mtu_changed_cb callback, void *user_data) TIZEN_DEPRECATED_API;
+
+/**
+ * @deprecated Deprecated since 4.0. Use bt_gatt_client_unset_att_mtu_changed_cb instead.
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief      Unregisters the callback function to be invoked when the ATT MTU is changed.
+ * @since_tizen 3.0
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see bt_device_set_att_mtu_changed_cb()
+ */
+int bt_device_unset_att_mtu_changed_cb(void) TIZEN_DEPRECATED_API;
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief Registers a rfcomm server socket with a specific UUID. Activation by dbus is possible when the profile is connected.
+ * @since_tizen 2.4
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @remarks A socket can be destroyed by bt_socket_destroy_rfcomm_ex().
+ * Application should call this API to receive a connection event when launched again by dbus.
+ *
+ * @param[in] uuid The UUID of service to provide
+ * @param[in] bus_name bus_name of the application which is provided in service file.
+ * @param[in] object_path dbus of the application
+ * @return 0 on success, otherwise a negative error value.
+ *
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Already registered
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ *
+ * @see bt_socket_listen_and_accept_rfcomm_ex()
+ * @see bt_socket_destroy_rfcomm_ex()
+ */
+int bt_socket_create_rfcomm_ex(const char *uuid, const char *bus_name, const char *object_path);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief Removes the rfcomm server socket which was created using bt_socket_create_rfcomm_ex().
+ * @since_tizen 2.4
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ * @remarks If callback function bt_socket_connection_state_changed_cb() is set and the remote Bluetooth device is connected,
+ * then bt_socket_connection_state_changed_cb() will be called when this function is finished successfully.
+ *
+ * @param[in] uuid The UUID (which was created using bt_socket_create_rfcomm()) to destroy
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The socket must be created with bt_socket_create_rfcomm_ex().
+ * @post If callback function bt_socket_connection_state_changed_cb() is set and the remote Bluetooth device is connected,
+ * then bt_socket_connection_state_changed_cb() will be called.
+ * @see bt_socket_create_rfcomm_ex()
+ * @see bt_socket_connection_state_changed_cb()
+ * @see bt_socket_set_connection_state_changed_cb()
+ * @see bt_socket_unset_connection_state_changed_cb()
+ */
+int bt_socket_destroy_rfcomm_ex(const char *uuid);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief Starts listening on passed rfcomm socket and accepts connection requests. Activation by dbus is possible when the profile is connected.
+ * @since_tizen 2.4
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ * @details Pop-up is shown automatically when a RFCOMM connection is requested.
+ * bt_socket_connection_state_changed_cb() will be called with
+ * #BT_SOCKET_CONNECTED if you click "yes" and connection is finished successfully.
+ * @param[in] uuid The UUID of service to provide
+ * @param[in] max_pending_connections The maximum number of pending connections
+ * @param[in] bus_name bus_name of the application which is provided in service file.
+ * @param[in] object_path dbus of the application
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The socket must be created with bt_socket_create_rfcomm_ex().
+ * @post If callback function bt_socket_connection_state_changed_cb() is set,
+ * then bt_socket_connection_state_changed_cb() will be called when the remote Bluetooth device is connected.
+ * @see bt_socket_create_rfcomm_ex()
+ * @see bt_socket_connection_state_changed_cb()
+ * @see bt_socket_set_connection_state_changed_cb()
+ * @see bt_socket_unset_connection_state_changed_cb()
+ */
+int bt_socket_listen_and_accept_rfcomm_ex(const char *uuid, int max_pending_connections, const char* bus_name, const char *object_path);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief Starts listening on passed rfcomm socket.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ * @details bt_socket_connection_requested_cb() will be called when a RFCOMM connection is requested.
+ *
+ * @param[in] socket_fd  The file descriptor socket on which start to listen
+ * @param[in] max_pending_connections  The number of pending connections
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The socket must be created with bt_socket_create_rfcomm().
+ * @post This function invokes bt_socket_connection_state_changed_cb().
+ *
+ * @see bt_socket_create_rfcomm()
+ * @see bt_socket_set_connection_requested_cb()
+ * @see bt_socket_unset_connection_requested_cb()
+ * @see bt_socket_connection_requested_cb()
+ */
+int bt_socket_listen(int socket_fd, int max_pending_connections);
+
+/**
+ * @internal
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief  Accepts a connection request.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ * @param[in] requested_socket_fd  The file descriptor of socket on which a connection is requested
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The connection is requested by bt_socket_connection_requested_cb().
+ * @see bt_socket_create_rfcomm()
+ * @see bt_socket_connection_requested_cb()
+ * @see bt_socket_listen()
+ * @see bt_socket_reject()
+*/
+int bt_socket_accept(int requested_socket_fd);
+
+/**
+ * @internal
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief  Rejects a connection request.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ * @param[in] socket_fd  The file descriptor of socket on which a connection is requested
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The connection is requested by bt_socket_connection_requested_cb().
+ * @see bt_socket_create_rfcomm()
+ * @see bt_socket_connection_requested_cb()
+ * @see bt_socket_listen()
+ * @see bt_socket_accept()
+ */
+int bt_socket_reject(int socket_fd);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
+ * @brief Initializes the Bluetooth OPP server requested by bt_opp_server_push_requested_cb().
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @details The popup appears when an OPP connection is requested from a remote device.
+ * If you accept the request, then connection will be established and bt_opp_server_push_requested_cb() will be called.
+ * At that time, you can call either bt_opp_server_accept() or bt_opp_server_reject().
+ * @remarks This function must be called to start Bluetooth OPP server. You must free all resources of the Bluetooth service
+ * by calling bt_opp_server_deinitialize() if Bluetooth OPP service is no longer needed.
+ * @param[in] destination  The destination path
+ * @param[in] push_requested_cb  The callback called when a push is requested
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @see  bt_opp_server_push_requested_cb()
+ * @see  bt_opp_server_deinitialize()
+ * @see  bt_opp_server_accept()
+ * @see  bt_opp_server_reject()
+ */
+int bt_opp_server_initialize(const char *destination, bt_opp_server_push_requested_cb push_requested_cb, void *user_data);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_MODULE
+ * @brief Gets the percentage progress for ongoing transfers.
+ * @since_tizen 3.0
+ * @exception   None
+ * @param[in] transfer_type    Transfer Type: (@c BLUETOOTH_TRANSFER_INBOUND = receiving , @c  BLUETOOTH_TRANSFER_OUTBOUND = sending)
+ * @param[in] transfer_id      Transfer ID
+ * @param[out] progress                Percentage Progress
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ */
+int bt_opp_get_transfer_progress(bt_opp_transfer_type_t transfer_type,
+               int transfer_id, unsigned char *progress);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief Notifies the call event to the remote bluetooth device.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ * @remarks Before notifying #BT_AG_CALL_EVENT_ANSWERED or #BT_AG_CALL_EVENT_DIALING, you should open SCO(Synchronous Connection Oriented link)
+ * if Bluetooth Hands-Free need SCO connection.
+ * @param[in] event  The call event
+ * @param[in] call_id  The call ID
+ * @param[in] phone_number  The phone number. You must set this value in case of #BT_AG_CALL_EVENT_DIALING and #BT_AG_CALL_EVENT_INCOMING.
+ * In other cases, this value can be NULL.
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio device must be connected with bt_audio_connect().
+ * @see bt_audio_connect()
+ */
+int bt_ag_notify_call_event(bt_ag_call_event_e event, unsigned int call_id, const char *phone_number);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief Notifies the call list to the remote bluetooth device.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ * @param[in] list  The call list
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio device must be connected with bt_audio_connect().
+ * @see bt_audio_connect()
+ */
+int bt_ag_notify_call_list(bt_call_list_h list);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief Notifies the state of voice recognition.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ * @param[in] state  The state of voice recognition: (@c true = enabled, @c  false = disabled)
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio device must be connected with bt_audio_connect().
+ * @see bt_audio_connect()
+ */
+int bt_ag_notify_voice_recognition_state(bool state);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Registers a callback function that will be invoked when a call handling event happened from Hands-Free.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_call_handling_event_cb()
+ * @see bt_ag_unset_call_handling_event_cb()
+ */
+int bt_ag_set_call_handling_event_cb(bt_ag_call_handling_event_cb callback, void *user_data);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Unregisters a callback function that will be invoked when a call handling event happened from Hands-Free.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_call_handling_event_cb()
+ * @see bt_ag_set_call_handling_event_cb()
+ */
+int bt_ag_unset_call_handling_event_cb(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Registers a callback function that will be invoked when a multi call handling event happened from Hands-Free.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_multi_call_handling_event_cb()
+ * @see bt_ag_unset_multi_call_handling_event_cb()
+ */
+int bt_ag_set_multi_call_handling_event_cb(bt_ag_multi_call_handling_event_cb callback, void *user_data);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Unregisters a callback function that will be invoked when a multi call handling event happened from Hands-Free.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_multi_call_handling_event_cb()
+ * @see bt_ag_set_multi_call_handling_event_cb()
+ */
+int bt_ag_unset_multi_call_handling_event_cb(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Registers a callback function that will be invoked when a DTMF(Dual Tone Multi Frequency) is transmitted from Hands-Free.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_dtmf_transmitted_cb()
+ * @see bt_ag_unset_dtmf_transmitted_cb()
+ */
+int bt_ag_set_dtmf_transmitted_cb(bt_ag_dtmf_transmitted_cb callback, void *user_data);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Unregisters a callback function that will be invoked when a DTMF(Dual Tone Multi Frequency) is transmitted from Hands-Free.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_dtmf_transmitted_cb()
+ * @see bt_ag_set_dtmf_transmitted_cb()
+ */
+int bt_ag_unset_dtmf_transmitted_cb(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief Checks whether the remoted device enables NREC(Noise Reduction and Echo Canceling) or not.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[out] enabled The NREC status: (@c true = enabled, @c  false = not enabled)
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device is connected by bt_audio_connect() with #BT_AUDIO_PROFILE_TYPE_HSP_HFP service.
+ * @see bt_audio_connect()
+ */
+int bt_ag_is_nrec_enabled(bool *enabled);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_CALL_MODULE
+ * @brief Creates a handle of call list.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[out] list  The handle of call list
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_call_list_destroy()
+ */
+int bt_call_list_create(bt_call_list_h *list);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_CALL_MODULE
+ * @brief Destroys the handle of call list.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] list  The handle of call list
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_call_list_create()
+ */
+int bt_call_list_destroy(bt_call_list_h list);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_CALL_MODULE
+ * @brief Resets the handle of call list.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] list  The handle of call list
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_call_list_create()
+ */
+int bt_call_list_reset(bt_call_list_h list);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_CALL_MODULE
+ * @brief Adds a call to the handle of call list.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] list  The handle of call list
+ * @param[in] call_id  The call ID
+ * @param[in] state  The state of audio gate call
+ * @param[in] phone_number The phone number. You must set this value in case of #BT_AG_CALL_EVENT_DIALING and      #BT_AG_CALL_EVENT_INCOMING.
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_call_list_create()
+ */
+int bt_call_list_add(bt_call_list_h list, unsigned int call_id, bt_ag_call_state_e state, const char *phone_number);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Registers a callback function that will be invoked when a XSATvendor AT command is transmitted from Hands-Free.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_vendor_cmd_cb()
+ * @see bt_ag_unset_vendor_cmd_cb()
+ */
+int bt_ag_set_vendor_cmd_cb(bt_ag_vendor_cmd_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Unregisters a callback function that will be invoked when a XSATvendor AT command is transmitted from Hands-Free
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_vendor_cmd_cb()
+ * @see bt_ag_set_vendor_cmd_cb()
+ */
+int bt_ag_unset_vendor_cmd_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief Checks whether the remoted device is wbs (Wide Band Speech) mode or not.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @param[out] wbs_mode The wbs status: (@c true = wide band speech, @c  false = narrow band speech)
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The remote device is connected by bt_audio_connect() with #BT_AUDIO_PROFILE_TYPE_HSP_HFP service.
+ * @see bt_audio_connect()
+ */
+int bt_ag_is_wbs_mode(bool *wbs_mode);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief Gets the HF(Hands-Free) profile connected status for AG role.
+ * @since_tizen 2.4
+ * @param[out] connected the connected status: (@c true = connected , @c  false = not connected )
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ */
+int bt_ag_is_connected(bool *connected);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief Switch between the connected headsets for AG role.
+ * @since_tizen 3.0
+ * @param[out]
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Not connected
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ */
+int bt_ag_switch_headset(const char *remote_addr);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Registers a callback function that will be invoked when the SCO(Synchronous Connection Oriented link) state is changed.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_sco_state_changed_cb()
+ * @see bt_ag_unset_sco_state_changed_cb()
+ */
+int bt_hf_set_sco_state_changed_cb(bt_hf_sco_state_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Unregisters a callback function that will be invoked when the SCO(Synchronous Connection Oriented link) state is changed.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_sco_state_changed_cb()
+ * @see bt_ag_set_sco_state_changed_cb()
+ */
+int bt_hf_unset_sco_state_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Registers a callback function that will be invoked when a call handling event happened from Hands-Free.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_call_handling_event_cb()
+ * @see bt_ag_unset_call_handling_event_cb()
+ */
+int bt_hf_set_call_handling_event_cb(bt_hf_call_handling_event_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Unregisters a callback function that will be invoked when a call handling event happened from Hands-Free.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_call_handling_event_cb()
+ * @see bt_ag_set_call_handling_event_cb()
+ */
+int bt_hf_unset_call_handling_event_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Registers a callback function that will be invoked when a call event happend from Audio-Gateway device.
+ * @since_tizen 3.0
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_hf_remote_call_event_cb()
+ * @see bt_hf_unset_remote_call_event_cb()
+ */
+int bt_hf_set_remote_call_event_cb(bt_hf_remote_call_event_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Unregisters a callback function.
+ * @since_tizen 3.0
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_hf_remote_call_event_cb()
+ * @see bt_hf_set_remote_call_event_cb()
+ */
+int bt_hf_unset_remote_call_event_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Registers a callback function that will be invoked when a multi call handling event happened from Hands-Free.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_multi_call_handling_event_cb()
+ * @see bt_ag_unset_multi_call_handling_event_cb()
+ */
+int bt_hf_set_multi_call_handling_event_cb(bt_hf_multi_call_handling_event_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Unregisters a callback function that will be invoked when a multi call handling event happened from Hands-Free.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_ag_multi_call_handling_event_cb()
+ * @see bt_ag_set_multi_call_handling_event_cb()
+ */
+int bt_hf_unset_multi_call_handling_event_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief Initializes the Bluetooth HF profile related with audio.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @remarks This function must be called before Bluetooth profiles related with audio starts.
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_hf_deinitialize()
+ */
+int bt_hf_initialize(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief Deinitializes the Bluetooth HF profile related with audio.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ */
+int bt_hf_deinitialize(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief Notifies the call event to the remote bluetooth device.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @privlevel platform
+ * @privilege http://tizen.org/privilege/bluetooth.admin
+ * @remarks Before notifying #BT_HF_CALL_EVENT_ANSWERED or #BT_HF_CALL_EVENT_DIALING, you should open SCO(Synchronous Connection Oriented link)
+ * if Bluetooth Hands-Free need SCO connection.
+ * @param[in] event  The call event
+ * @param[in] call_id  The call ID
+ * @param[in] phone_number  The phone number. You must set this value in case of #BT_HF_CALL_EVENT_DIALING and #BT_HF_CALL_EVENT_INCOMING.
+ * In other cases, this value can be NULL.
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio device must be connected with bt_audio_connect().
+ * @see bt_audio_connect()
+ */
+int bt_hf_notify_call_event(bt_hf_call_event_e event, char *phone_number);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Notifies the speaker gain to the remote device.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @privlevel platform
+ * @privilege http://tizen.org/privilege/bluetooth.admin
+ * @details This function sends a signal to the remote device. This signal has the gain value.
+ * @a gain is represented on a scale from 0 to 15. This value is absolute value relating to a particular volume level.
+ * When the speaker gain of remote device is changed to the requested gain, bt_audio_speaker_gain_changed_cb() will be called.
+ * @param[in] gain The gain of speaker (0 ~ 15)
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The remote device is connected by bt_audio_connect() with #BT_AUDIO_PROFILE_TYPE_HSP_HFP service.
+ * @see bt_hf_get_speaker_gain()
+ * @see bt_hf_set_speaker_gain_changed_cb()
+ * @see bt_hf_unset_speaker_gain_changed_cb()
+ */
+int bt_hf_notify_speaker_gain(int gain);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Registers a callback function that will be invoked when the speaker gain of the remote device is changed.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @details This function let you know the change of the speaker gain of the remote device.
+ * @a gain is represented on a scale from 0 to 15. This value is absolute value relating to a particular volume level.
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_hf_unset_speaker_gain_changed_cb()
+ */
+int bt_hf_set_speaker_gain_changed_cb(bt_hf_speaker_gain_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Unregisters a callback function that will be invoked when the speaker gain of the remote device is changed.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_hf_set_speaker_gain_changed_cb()
+ */
+int bt_hf_unset_speaker_gain_changed_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief Notifies the state of voice recognition.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @privlevel platform
+ * @privilege http://tizen.org/privilege/bluetooth.admin
+ * @param[in] state  The state of voice recognition: (@c true = enabled, @c  false = disabled)
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio device must be connected with bt_audio_connect().
+ * @see bt_audio_connect()
+ */
+int bt_hf_notify_voice_recognition_state(bool state);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Registers a callback function that will be invoked when a call status event happened from Hands-Free.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_hf_unset_call_status_updated_event_cb()
+ */
+int bt_hf_set_call_status_updated_event_cb(bt_hf_call_status_updated_event_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Unregisters a callback function that will be invoked when a call status event happened from Hands-Free.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_hf_set_call_status_updated_event_cb()
+ */
+int bt_hf_unset_call_status_updated_event_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief Closes an opened SCO(Synchronous Connection Oriented link), synchronously.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @privlevel platform
+ * @privilege http://tizen.org/privilege/bluetooth.admin
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_hf_close_sco(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief Sends the DTMF(Dual Tone Multi Frequency).
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @privlevel platform
+ * @privilege http://tizen.org/privilege/bluetooth.admin
+ * @param[in] dtmf  The DTMF to send
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The Bluetooth audio device must be connected with bt_audio_connect().
+ * @see bt_audio_connect()
+ */
+int bt_hf_send_dtmf(char *dtmf);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief Gets the HF(Hands-Free) profile connected status for HF role.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @param[out] connected the connected status: (@c true = connected , @c  false = not connected )
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ */
+int bt_hf_is_connected(bool *connected);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief Checks whether an opened SCO(Synchronous Connection Oriented link) exists or not.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ *
+ * @param[out] opened The SCO status: (@c true = opened, @c  false = not opened)
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio device must be connected with bt_audio_connect().
+ * @see bt_audio_connect()
+ */
+int bt_hf_is_sco_opened(bool *opened);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief Gets the codec ID.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @remarks The @a codec_id must be released with free() by you.
+ *
+ * @param[out] codec_id The codec ID
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio device must be connected with bt_audio_connect().
+ * @see bt_audio_connect()
+ */
+int bt_hf_get_codec_id(unsigned int *codec_id);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief Gets the call status information list.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ * @remarks The @a call_list must be released with bt_hf_free_call_status_info_list() by you.
+ * @remarks call_info_list has elements which consist of bt_hf_call_status_info_s
+ *
+ * @param[out] call_list The call status information list
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio device must be connected with bt_audio_connect().
+ * @see bt_hf_call_status_info_s
+ * @see bt_audio_connect()
+ */
+int bt_hf_get_call_status_info_list(GSList **call_list);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief Frees the call status information list.
+ * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
+ *
+ * @param[in] call_list The call status information list
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_hf_get_call_status_info_list()
+ */
+int bt_hf_free_call_status_info_list(GSList *call_list);
+
+/**
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_AUDIO_A2DP_MODULE
+ * @brief  Sets copy protection. streaming application that needs to have the copy protection for the streaming data, shall invoke this API.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ * @param[in] status - TRUE/FALSE
+ * @return  0 on success, otherwise negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_OPERATION_FAILED  on failure
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ */
+int bt_a2dp_set_content_protection(bool status);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief Gets the specification name from the UUID
+ * @since_tizen 2.4
+ *
+ * @remarks @a name must be released with free() by you.
+ *
+ * @param[in] uuid The UUID
+ * @param[out] name The specification name which defined from www.bluetooth.org
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_get_uuid()
+ */
+int bt_gatt_get_uuid_specification_name(const char *uuid, char **name);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Updates the permissions which a characteristic or descriptor's GATT handle has.
+ * @since_tizen 3.0
+ *
+ * @param[in] gatt_handle The handle of a characteristic or descriptor
+ * @param[in] permissions The permissions to be updated
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_characteristic_create()
+ * @see bt_gatt_descriptor_create()
+ * @see bt_gatt_permission_e
+ */
+int bt_gatt_set_permissions(bt_gatt_h gatt_handle, int permissions);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Updates the properties which a characteristic's GATT handle has.
+ * @since_tizen 3.0
+ *
+ * @param[in] characteristic The characteristic's GATT handle
+ * @param[in] properties The properties to be updated
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_property_e
+ */
+int bt_gatt_characteristic_set_properties(bt_gatt_h characteristic, int properties);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief Destroys the GATT handle
+ * @since_tizen 2.4
+ *
+ * @param[in] gatt_handle The handle of service, characteristic or descriptor
+ * @return  0 on success, otherwise a negative error value
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @see bt_gatt_service_create()
+ * @see bt_gatt_characteristic_create()
+ * @see bt_gatt_descriptor_create()
+ */
+int bt_gatt_destroy(bt_gatt_h gatt_handle);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
+ * @brief  Registers a callback function that will be invoked when the A2DP Source connection state is changed.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_audio_connection_state_changed_cb()
+ */
+int bt_a2dp_source_audio_set_connection_state_changed_cb(bt_audio_connection_state_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
+ * @brief  Unregisters a callback function that will be invoked when the A2DP Source connection state is changed.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
+ * @see bt_audio_initialize()
+ * @see bt_audio_connection_state_changed_cb()
+ * @see bt_audio_set_connection_state_changed_cb()
+ */
+int bt_a2dp_source_audio_unset_connection_state_changed_cb(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
+ * @brief Activates the NAP(Network Access Point).
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_ALREADY_DONE  Operation is already done
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED
+ * @see bt_nap_deactivate()
+ */
+int bt_nap_activate(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
+ * @brief Deactivates the NAP(Network Access Point).
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_ALREADY_DONE  Operation is already done
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth NAP service must be activated with bt_nap_activate().
+ * @see bt_nap_activate()
+ */
+int bt_nap_deactivate(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
+ * @brief Disconnects the all PANUs(Personal Area Networking User) which are connected to you.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth NAP service must be activated with bt_nap_activate().
+ * @see bt_nap_activate()
+ */
+int bt_nap_disconnect_all(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
+ * @brief Disconnects the specified PANU(Personal Area Networking User) which is connected to you.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] remote_address  The remote address
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth NAP service must be activated with bt_nap_activate().
+ * @see bt_nap_activate()
+ */
+int bt_nap_disconnect(const char *remote_address);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
+ * @brief  Registers a callback function that will be invoked when the connection state changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post bt_nap_connection_state_changed_cb() will be invoked.
+ * @see bt_initialize()
+ * @see bt_nap_connection_state_changed_cb()
+ * @see bt_nap_unset_connection_state_changed_cb()
+ */
+int bt_nap_set_connection_state_changed_cb(bt_nap_connection_state_changed_cb callback, void *user_data);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
+ * @brief  Unregisters a callback function that will be invoked when the connection state changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post bt_nap_connection_state_changed_cb() will be invoked.
+ * @see bt_initialize()
+ * @see bt_nap_connection_state_changed_cb()
+ * @see bt_nap_set_connection_state_changed_cb()
+ */
+int bt_nap_unset_connection_state_changed_cb(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
+ * @brief  Registers a callback function that will be invoked when the connection state changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post bt_nap_connection_state_changed_cb() will be invoked.
+ * @see bt_initialize()
+ * @see bt_panu_connection_state_changed_cb()
+ * @see bt_panu_unset_connection_state_changed_cb()
+ */
+int bt_panu_set_connection_state_changed_cb(bt_panu_connection_state_changed_cb callback, void *user_data);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
+ * @brief  Unregisters a callback function that will be invoked when the connection state changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @return   0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post bt_nap_connection_state_changed_cb() will be invoked.
+ * @see bt_initialize()
+ * @see bt_panu_connection_state_changed_cb()
+ * @see bt_panu_set_connection_state_changed_cb()
+ */
+int bt_panu_unset_connection_state_changed_cb(void);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
+ * @brief Connects the remote device with the PAN(Personal Area Networking) service, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] remote_address  The remote address
+ * @param[in] type  The type of PAN service
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The local device must be bonded with the remote device by bt_device_create_bond().
+ * @post bt_panu_connection_state_changed_cb() will be invoked.
+ * @see bt_panu_disconnect()
+ * @see bt_panu_connection_state_changed_cb()
+ */
+int bt_panu_connect(const char *remote_address, bt_panu_service_type_e type);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
+ * @brief Disconnects the remote device with the PAN(Personal Area Networking) service, asynchronously.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] remote_address  The remote address
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected by bt_panu_connect().
+ * @post bt_panu_connection_state_changed_cb() will be invoked.
+ * @see bt_panu_connect()
+ * @see bt_panu_connection_state_changed_cb()
+ */
+int bt_panu_disconnect(const char *remote_address);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief   update LE connection.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The Bluetooth service must be initialized by bt_initialize().
+ * @pre The remote device must be connected with bt_gatt_connect().
+ */
+int bt_device_le_conn_update(const char *device_address,
+                            const bt_le_conn_update_s *parameters);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Gets the is_alias_set property of a bonded device.
+ * @since_tizen 3.0
+ *
+ * @param [in] remote_address The address of remote device
+ * @param [out] is_alias_set The is_alias_set property of device
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+  * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ */
+int bt_adapter_get_bonded_device_is_alias_set(const char *remote_address, gboolean *is_alias_set);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
+ * @brief Registers the method for HID Device role
+ * @since_tizen @if WEAREABLE @else 2.3.1 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @remarks This function must be called to register HID UUID
+ * then only remote device could be able identify this one as HID device
+ *
+ * @param[in] callback  The callback called when the connection state is changed
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOW_IN_PROGRESS  Already activated
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see bt_hid_device_deactivate()
+ */
+int bt_hid_device_activate(bt_hid_device_connection_state_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
+ * @brief Unregisters the method for HID Device role
+ * @since_tizen @if WEAREABLE @else 2.3.1 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @remarks This function must be called to deregister HID UUID
+ *
+ * @param[in] socket_fd on which uuid need to be deregistered.
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOT_IN_PROGRESS  Not activated
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see bt_hid_device_activate()
+ */
+int bt_hid_device_deactivate(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
+ * @brief Initiates HID device Connection with device role, asynchronously.
+ * @since_tizen @if WEAREABLE @else 2.3.1 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @remarks This function must be called to Initiate Hid device role connection
+ *
+ * @param[in] remote_address device address of remote device.
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_NOT_IN_PROGRESS  Not activated
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_ALREADY_DONE   Already connected
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @pre The local device must be bonded with the remote device by bt_device_create_bond().
+ * @see bt_initialize()
+ * @see bt_hid_device_activate()
+ */
+int bt_hid_device_connect(const char *remote_address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
+ * @brief Disconnects the connection with HID Host device, asynchronously.
+ * @since_tizen @if WEAREABLE @else 2.3.1 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] remote_address device address of remote device.
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @see bt_initialize()
+ * @see bt_hid_device_connection_state_changed_cb()
+ */
+int bt_hid_device_disconnect(const char *remote_address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
+ * @brief Sends the mouse event data.
+ * @since_tizen @if WEAREABLE @else 2.3.1 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] remote_address device address of remote device.
+ * @param[in] mouse_data mouse data that need to be passed to remote device
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ *
+ * @pre The HID connection must be established.
+ * @see bt_hid_device_connection_state_changed_cb()
+ */
+int bt_hid_device_send_mouse_event(const char *remote_address,
+                       const bt_hid_mouse_data_s *mouse_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
+ * @brief Sends the keyboard event data.
+ * @since_tizen @if WEAREABLE @else 2.3.1 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] remote_address device address of remote device.
+ * @param[in] key_data  key data the need to be passed to remote device
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ *
+ * @pre The HID connection must be established.
+ * @see bt_hid_device_connection_state_changed_cb()
+ */
+int bt_hid_device_send_key_event(const char *remote_address,
+                       const bt_hid_key_data_s *key_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
+ * @brief Sets the callback when device gets some data from HID Host.
+ * @since_tizen @if WEAREABLE @else 2.3.1 @endif
+ *
+ * @param[in] callback  callback function to be set when data is received.
+ * @param[in] user_data data from application which will be provided in callback.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @see bt_hid_device_connection_state_changed_cb()
+ */
+int bt_hid_device_set_data_received_cb(bt_hid_device_data_received_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
+ * @brief Unsets the callback when device gets some data from HID Host.
+ * @since_tizen @if WEAREABLE @else 2.3.1 @endif
+ *
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ *
+ * @see bt_hid_device_connection_state_changed_cb()
+ */
+int bt_hid_device_unset_data_received_cb(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
+ * @brief Responds to the reports from HID Host.
+ * @since_tizen @if WEAREABLE @else 2.3.1 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] remote_address device address of remote device.
+ * @param[in] header_type Header type to be there in response
+ * @param[in] param_type Parameter type to be there in response.
+ * @param[in] data Data to be present in data payload of response.
+ * @param[in] data_len The length of the response data
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ *
+ * @pre The HID connection must be established.
+ * @see bt_hid_device_connection_state_changed_cb()
+ */
+int bt_hid_device_reply_to_report(const char *remote_address,
+               bt_hid_header_type_e header_type, bt_hid_param_type_e param_type,
+               const char *data, unsigned int data_len);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
+ * @brief Sends the custom event data.
+ * @since_tizen @if WEAREABLE @else 3.0 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] remote_address device address of remote device.
+ * @param[in] report_id  reoport id need to be passed to remote device
+ * @param[in] data  The data need to be passed to remote device
+ * @param[in] data_len  The length of the data
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ *
+ * @pre The HID connection must be established.
+ * @see bt_hid_device_connection_state_changed_cb()
+ */
+int bt_hid_device_send_custom_event(const char *remote_address,
+               unsigned char report_id, const char *data, unsigned int data_len);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Sets Restriction for BT mode(BT allowed or not).
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  value - BT Allow value.
+ *             BT_DPM_ERROR     = -1,   < bluetooth allowance error
+ *             BT_DPM_BT_ALLOWED,               < bluetooth allowance allowed
+ *             BT_DPM_HANDSFREE_ONLY,  < bluetooth allowance handsfree only
+ *             BT_DPM_BT_RESTRICTED,  < bluetooth allowance restricted
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre none.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_set_allow_bluetooth_mode(bt_dpm_allow_e value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Reads Restriction for BT mode(BT allowed or not).
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] none
+ * @param[out] value - BT Allow value.
+ *             BT_DPM_ERROR     = -1,   < bluetooth allowance error
+ *             BT_DPM_BT_ALLOWED,               < bluetooth allowance allowed
+ *             BT_DPM_HANDSFREE_ONLY,  < bluetooth allowance handsfree only
+ *             BT_DPM_BT_RESTRICTED,  < bluetooth allowance restricted
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre none.
+ * @see bt_dpm_set_allow_bluetooth_mode()
+ */
+int bt_dpm_get_allow_bluetooth_mode(bt_dpm_allow_e *value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Sets the Restriction for device.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  value - State value.
+ *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
+ *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_activate_device_restriction(bt_dpm_status_e value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Reads the Restriction for device.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[out] value - State value.
+ *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
+ *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_is_device_restriction_active(bt_dpm_status_e *value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Sets the Restriction for uuid.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  value - State value.
+ *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
+ *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_activate_uuid_restriction(bt_dpm_status_e value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Reads the Restriction for uuid.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[out] value - State value.
+ *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
+ *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_is_uuid_restriction_active(bt_dpm_status_e *value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Adds the device to blacklist.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  device_address - Device address
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_add_devices_to_blacklist(const char *device_address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Adds the device to whitelist.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  device_address - Device address
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_add_devices_to_whitelist(const char *device_address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Adds the uuids to blacklist.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  service_uuids - profile or custom service uuids
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_add_uuids_to_blacklist(const char *service_uuid);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Adds the uuid to whitelist.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  service_uuids - profile or custom service uuids
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_add_uuids_to_whitelist(const char *service_uuid);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Clears the device from blacklist.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  none
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_clear_devices_from_blacklist(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Clears the device from whitelist.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  none
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_clear_devices_from_whitelist(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Clears the uuids from blacklist.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  none
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_clear_uuids_from_blacklist(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Clears the uuids from whitelist.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  none
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_clear_uuids_from_whitelist(void);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Reads the devices from blacklist.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[out] device_list - list of devices
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_get_devices_from_blacklist(bt_dpm_device_list_s **device_list);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Reads the devices from whitelist.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[out] device_list - list of devices
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_get_devices_from_whitelist(bt_dpm_device_list_s **device_list);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Reads the uuids from blacklist.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[out] uuid_list - list of uuids
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_get_uuids_from_blacklist(bt_dpm_uuids_list_s **uuid_list);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Reads the uuids from whitelist.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[out] uuid_list - list of uuids
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_get_uuids_from_whitelist(bt_dpm_uuids_list_s **uuid_list);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Removes the devices from whitelist.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  device_address - Device address
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_remove_device_from_whitelist(const char *device_address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Removes the devices from blacklist.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  device_address - Device address
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_remove_device_from_blacklist(const char *device_address);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Removes the uuids from whitelist.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  service_uuids - profile or custom service uuids
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_remove_uuid_from_whitelist(const char *service_uuid);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Removes the uuids from blacklist.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  service_uuids - profile or custom service uuids
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_remove_uuid_from_blacklist(const char *service_uuid);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Sets the Restriction for  outgoing call.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  value - State value.
+ *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
+ *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_set_allow_outgoing_call(bt_dpm_status_e value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Reads the Restriction for  outgoing call.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[out] value - State value.
+ *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
+ *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_get_allow_outgoing_call(bt_dpm_status_e *value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Sets the Restriction for pairing.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  value - State value.
+ *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
+ *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_set_pairing_state(bt_dpm_status_e value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Reads the Restriction for pairing.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[out] value - State value.
+ *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
+ *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_get_pairing_state(bt_dpm_status_e *value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Sets the Restriction for profiles.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]profile - Profile.
+ *             BT_DPM_POLICY_A2DP_PROFILE_STATE,
+ *             BT_DPM_POLICY_AVRCP_PROFILE_STATE,
+ *             BT_DPM_POLICY_BPP_PROFILE_STATE,
+ *             BT_DPM_POLICY_DUN_PROFILE_STATE,
+ *             BT_DPM_POLICY_FTP_PROFILE_STATE,
+ *             BT_DPM_POLICY_HFP_PROFILE_STATE,
+ *             BT_DPM_POLICY_HSP_PROFILE_STATE,
+ *             BT_DPM_POLICY_PBAP_PROFILE_STATE,
+ *             BT_DPM_POLICY_SAP_PROFILE_STATE,
+ *             BT_DPM_POLICY_SPP_PROFILE_STATE,
+ *             BT_DPM_PROFILE_NONE
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_set_profile_state(bt_dpm_profile_e profile, bt_dpm_status_e value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Reads the Restriction for profiles.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]profile - Profile.
+ *             BT_DPM_POLICY_A2DP_PROFILE_STATE,
+ *             BT_DPM_POLICY_AVRCP_PROFILE_STATE,
+ *             BT_DPM_POLICY_BPP_PROFILE_STATE,
+ *             BT_DPM_POLICY_DUN_PROFILE_STATE,
+ *             BT_DPM_POLICY_FTP_PROFILE_STATE,
+ *             BT_DPM_POLICY_HFP_PROFILE_STATE,
+ *             BT_DPM_POLICY_HSP_PROFILE_STATE,
+ *             BT_DPM_POLICY_PBAP_PROFILE_STATE,
+ *             BT_DPM_POLICY_SAP_PROFILE_STATE,
+ *             BT_DPM_POLICY_SPP_PROFILE_STATE,
+ *             BT_DPM_PROFILE_NONE
+ * @param[out] value - State value.
+ *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
+ *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_get_profile_state(bt_dpm_profile_e profile, bt_dpm_status_e *value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Sets the Restriction for desktop connectivity.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  value - State value.
+ *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
+ *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_set_desktop_connectivity_state(bt_dpm_status_e value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Reads the Restriction for desktop connectivity.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[out] value - State value.
+ *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
+ *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_get_desktop_connectivity_state(bt_dpm_status_e *value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Sets the Restriction for discoverable mode.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  value - State value.
+ *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
+ *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_set_discoverable_state(bt_dpm_status_e value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Reads the Restriction for discoverable mode.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[out] value - State value.
+ *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
+ *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_get_discoverable_state(bt_dpm_status_e *value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Sets the Restriction for limited discoverable mode.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  value - State value.
+ *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
+ *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+
+int bt_dpm_set_limited_discoverable_state(bt_dpm_status_e value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Reads the Restriction for limited discoverable mode.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[out] value - State value.
+ *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
+ *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_get_limited_discoverable_state(bt_dpm_status_e *value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Sets the Restriction for Data transfer.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in]  value - State value.
+ *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
+ *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_set_data_transfer_state(bt_dpm_status_e value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+ * @brief Reads the Restriction for Data transfer.
+ * @since_tizen 3.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[out] value - State value.
+ *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
+ *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
+ * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED operation failed
+ *
+ * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
+ * @see bt_dpm_get_allow_bluetooth_mode()
+ */
+int bt_dpm_get_data_transfer_state(bt_dpm_status_e *value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief Gets the pbap connected status.
+ * @since_tizen 3.0
+ * @param[in] remote_address The address of the remote device
+ * @param[out] connected_status the connected status
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ */
+int bt_pbap_client_is_connected(const char *address, bool *connected_status);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
+ * @brief Sends the custom event data.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] remote_address device address of remote device.
+ * @param[in] report_id  reoport id need to be passed to remote device
+ * @param[in] data  The data need to be passed to remote device
+ * @param[in] data_len  The length of the data
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ *
+ * @pre The HID connection must be established.
+ * @see bt_hid_device_connection_state_changed_cb()
+ */
+int bt_hid_device_send_custom_event(const char *remote_address,
+               unsigned char report_id, const char *data, unsigned int data_len);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
+ * @brief  Sends the volume change request to the remote device.
+ * @since_tizen 4.0
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ * @param[in] value The new volume level
+ * @return  0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED  Not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
+ * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
+ * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre The remote device must be connected.
+ * @see bt_avrcp_target_connection_state_changed_cb()
+ * @see bt_avrcp_target_initialize()
+ */
+int bt_avrcp_control_set_absolute_volume(unsigned int value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Creates the Proximity Profile Reporter Role.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] None
+ * @param[out] reporter proximity reporter server handle
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_ALREADY_DONE Already Enabled
+ * @retval #BT_ERROR_OUT_OF_MEMORY out Of Memory
+ */
+int bt_proximity_reporter_create(bt_proximity_reporter_h *reporter);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Destroys the Proximity Profile Reporter Role.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] reporter proximity reporter server handle
+ * @return @c 0 on success,
+ *                otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
+ */
+int bt_proximity_reporter_destroy(bt_proximity_reporter_h reporter);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Creates the Proximity Profile Monitor Role.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] remote address
+ * @param[out] monitor proximity monitor handle
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_ALREADY_DONE Already Enabled
+ * @retval #BT_ERROR_OUT_OF_MEMORY out Of Memory
+ */
+int bt_proximity_monitor_create(const char *remote_address, bt_proximity_monitor_h *monitor);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Creates the Proximity Profile Monitor Role.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] monitor proximity monitor handle
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED Device not Connected
+ */
+int bt_proximity_monitor_destroy(bt_proximity_monitor_h monitor);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Proximity Monitor initiates the connection to remote reporter device.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] monitor proximity monitor handle
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
+ */
+int bt_proximity_monitor_connect(bt_proximity_monitor_h monitor);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Proximity Monitor disconnects with the remote reporter device.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] proximity monitor handle
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
+ */
+int bt_proximity_monitor_disconnect(bt_proximity_monitor_h monitor);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Sets proximity monitor connection state changed event change callback.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] proximity monitor handle
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED Device not Connected
+ */
+int bt_proximity_monitor_set_connection_state_changed_cb(bt_proximity_monitor_h monitor,
+                               bt_proximity_monitor_connection_state_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Unsets proximity monitor connection state changed event change callback.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] proximity monitor handle
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED Device not Connected
+ */
+int bt_proximity_monitor_unset_connection_state_changed_cb(bt_proximity_monitor_h monitor);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Sets proximity reporter connection state changed event change callback.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] reporter proximity reporter handle
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ */
+int bt_proximity_reporter_set_connection_state_changed_cb(bt_proximity_reporter_h reporter,
+                               bt_proximity_reporter_connection_state_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Unsets proximity reporter connection state changed event change callback.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] proximity reporter handle
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ */
+int bt_proximity_reporter_unset_connection_state_changed_cb(bt_proximity_reporter_h reporter);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Sets proximity reporter properties change callback.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] reporter proximity reporter handle
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ */
+int bt_proximity_reporter_set_property_changed_cb(bt_proximity_reporter_h reporter,
+                               bt_proximity_reporter_property_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Unsets proximity reporter properties change callback.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] reporter proximity reporter handle
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ */
+int bt_proximity_reporter_unset_property_changed_cb(bt_proximity_reporter_h reporter);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Set the Proximity Profile monitor linkloss alert value.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] monitor proximity monitor handle
+ * @param[in] value The value to be set for link loss alert
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED Device not Connected
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ */
+int bt_proximity_monitor_set_linkloss_alert(bt_proximity_monitor_h monitor, int value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Set the Proximity Profile monitor immediate alert value.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] monitor proximity monitor handle
+ * @param[in] value The value to be set for immediate alert
+ * @return @c 0 on success,
+ *                otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED Device not Connected
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ */
+int bt_proximity_monitor_set_immediate_alert(bt_proximity_monitor_h monitor, int value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Read the Proximity Profile monitor linkloss alert value.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] monitor proximity monitor handle
+ * @param[out] value value read for the linkloss alert.
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED Device not Connected
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ */
+int bt_proximity_monitor_get_linkloss_alert(bt_proximity_monitor_h monitor, int *value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Read the Proximity Profile monitor immediate alert value.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] monitor proximity monitor handle
+ * @param[out] value value read for the immedaite alert.
+ * @return @c 0 on success,
+ *                otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED Device not Connected
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ */
+int bt_proximity_monitor_get_immediate_alert(bt_proximity_monitor_h monitor, int *value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Read the Proximity Profile monitor Signal level value.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] monitor proximity monitor handle
+ * @param[out] value value read for the signal level.
+ * @return @c 0 on success,
+ *                otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED Device not Connected
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ */
+int bt_proximity_monitor_get_signal_level(bt_proximity_monitor_h monitor, int *value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Read the Proximity Profile reporter linkloss alert value.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] remote_address remote device reporter address
+ * @param[out] value value read for the linkloss alert.
+ * @return @c 0 on success,
+ *                otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ */
+int bt_proximity_reporter_get_linkloss_alert(const char *remote_address, int *value);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Read the Proximity Profile reporter immediate alert value.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] remote_address remote device reporter address
+ * @param[out] value value read for the immediate alert.
+ * @return @c 0 on success,
+ *                otherwise a negative error value
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED not initialized
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ */
+int bt_proximity_reporter_get_immediate_alert(const char *remote_address, int *value);
+
+/* This internal API will be removed */
+/**
+ * @internal
+ * @deprecated Deprecated since 4.0. Use bt_adapter_le_scan_filter_unregister instead.
+ * @brief API to Unset the Proximity uuids scan report
+ */
+int bt_adapter_le_scan_filter_unset_proximity_uuid(bt_scan_filter_h scan_filter) TIZEN_DEPRECATED_API;
+
+/**
+ * @internal
+ * @brief API to register TDS provider.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] None
+ * @param[out] None
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ * @see bt_initialize()
+ * @see bt_tds_provider_unregister()
+ */
+int bt_tds_provider_register(void);
+
+/**
+ * @internal
+ * @brief API to unregister TDS provider.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] None
+ * @param[out] None
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @pre TDS provider must be registered with bt_tds_provider_register().
+ *
+ * @see bt_initialize()
+ * @see bt_tds_provider_register()
+ */
+int bt_tds_provider_unregister(void);
+
+/**
+ * @internal
+ * @brief API to create TDS provider.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] transport Transport to be discovered over BLE.
+ * @param[out] provider The handle associated with the newly created provider.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @pre TDS provider must be registered with bt_tds_provider_register().
+ *
+ * @see bt_initialize()
+ * @see bt_tds_provider_register()
+ * @see bt_tds_provider_unregister()
+ * @see bt_tds_provider_destroy()
+ */
+int bt_tds_provider_create(bt_tds_provider_h *provider, bt_tds_transport_e transport);
+
+/**
+ * @internal
+ * @brief API to destroy TDS provider.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] provider The handle associated with the provider
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @pre TDS provider must be registered with bt_tds_provider_register().
+ * @pre TDS provider must be created with bt_tds_provider_create().
+ *
+ * @see bt_initialize()
+ * @see bt_tds_provider_register()
+ * @see bt_tds_provider_create()
+ */
+int bt_tds_provider_destroy(bt_tds_provider_h provider);
+
+/**
+ * @internal
+ * @brief API to set transport block data for transport provider.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] provider The handle associated with the provider
+ * @param[in] transport_state State of transport
+ * @param[in] buf transport block data
+ * @param[in] length transport block data length
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @pre TDS provider must be registered with bt_tds_provider_register().
+ * @pre TDS provider must be created with bt_tds_provider_create().
+ *
+ * @see bt_initialize()
+ * @see bt_tds_provider_register()
+ * @see bt_tds_provider_create()
+ */
+int bt_tds_provider_set_transport_data(bt_tds_provider_h provider,
+               bt_tds_transport_state_e transport_state, unsigned char *buf, int length);
+
+/**
+ * @internal
+ * @brief API to set TDS provider manufacturer specific data.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] buf manufacturer specific data
+ * @param[in] length manufacturer data length
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @pre TDS provider must be registered with bt_tds_provider_register().
+ *
+ * @see bt_initialize()
+ * @see bt_tds_provider_register()
+ * @see bt_tds_provider_create()
+ */
+int bt_tds_provider_set_manufacturer_data(unsigned char *buf, int length);
+
+/**
+ * @internal
+ * @brief API to send activation response to TDS seeker.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] address Remote device bluetooth address
+ * @param[in] result Result of activation request
+ *             BT_ERROR_NONE: success
+ *             BT_ERROR_INVALID_PARAMETER: Invalid data in activation request
+ *             BT_ERROR_OPERATION_FAILED: Operation failed
+ * @param[in] provider The handle associated with the provider
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @pre TDS provider must be registered with bt_tds_provider_register().
+ *
+ * @see bt_initialize()
+ * @see bt_tds_provider_register()
+ * @see bt_tds_activation_requested_cb()
+ * @see bt_tds_set_transport_activation_requested_cb()
+ * @see bt_tds_unset_transport_activation_requested_cb()
+ */
+int bt_tds_provider_send_activation_resp(char *address, int result, bt_tds_provider_h provider);
+
+/**
+ * @internal
+ * @brief API to set activation requeste callback.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] callback  The callback function to invoke
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ * @post bt_tds_activation_requested_cb() will be invoked.
+ *
+ * @see bt_initialize()
+ * @see bt_tds_activation_requested_cb()
+ * @see bt_tds_unset_transport_activation_requested_cb()
+ */
+int bt_tds_set_transport_activation_requested_cb(
+               bt_tds_activation_requested_cb callback, void *user_data);
+
+/**
+ * @internal
+ * @brief API to unset activation requeste callback.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] None
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
+ *
+ * @see bt_initialize()
+ * @see bt_tds_set_transport_activation_requested_cb()
+ */
+int bt_tds_unset_transport_activation_requested_cb(void);
+
+/**
+ * @internal
+ * @brief TDS Seeker Profile API to start seeking Remote TDS providers only
+ */
+int bt_tds_start_seeking_providers(bt_tds_provider_scan_result_cb cb, void *user_data);
+
+/**
+ * @internal
+ * @brief TDS Seeker Profile API to stop seeking Remote TDS providers
+ */
+int bt_tds_stop_seeking_providers(void);
+
+/**
+ * @internal
+ * @brief TDS Seeker Profile API to create Seeker Role associated with Remote TDS provider
+ */
+int bt_tds_seeker_create(const char *remote_address, bt_tds_seeker_h *seeker);
+
+/**
+ * @internal
+ * @brief TDS Seeker Profile API to destroy Seeker Role associated with Remote TDS provider
+ */
+int bt_tds_seeker_destroy(bt_tds_seeker_h seeker);
+
+/**
+ * @internal
+ * @brief TDS Seeker Profile API to set connection state changed event associated with Remote TDS provider
+ */
+int bt_tds_seeker_set_connection_state_changed_cb(bt_tds_seeker_h seeker,
+               bt_tds_seeker_connection_state_changed_cb callback, void *user_data);
+
+/**
+ * @internal
+ * @brief TDS Seeker Profile API to unset connection state changed event associated with Remote TDS provider
+ */
+int bt_tds_seeker_unset_connection_state_changed_cb(bt_tds_seeker_h seeker);
+
+/**
+ * @internal
+ * @brief TDS Seeker Profile API to connect to Remote TDS provider
+ */
+int bt_tds_seeker_connect(bt_tds_seeker_h seeker);
+
+/**
+ * @internal
+ * @brief TDS Seeker Profile API to disconnect to Remote TDS provider
+ */
+int bt_tds_seeker_disconnect(bt_tds_seeker_h seeker);
+
+/**
+ * @internal
+ * @brief TDS Seeker Profile API to read complete TDS block data which is stored in Remote TDS provider's GATT database
+ */
+int bt_tds_seeker_get_complete_transport_blocks(bt_tds_seeker_h seeker,
+               bt_tds_seeker_complete_transport_data_cb callback, void *user_data);
+
+/**
+ * @internal
+ * @brief TDS Seeker Profile API to Activate ALternate transport supported by Remote TDS provider
+ */
+int bt_tds_seeker_activate_control_point(bt_tds_seeker_h seeker,
+                               bt_tds_transport_e transport, unsigned char *buffer, int len,
+                               bt_tds_control_point_activation_indication_cb callback, void *user_data);
+
+/**
+ * @ingroup
+ * @brief Starts OTP server on the given directory location.
+ */
+int bt_otp_server_initialize(const char *directory);
+
+/**
+ * @ingroup
+ * @brief Stops OTP server.
+ */
+int bt_otp_server_deinitialize();
+
+/**
+ * @ingroup
+ * @brief Registers a callback function that will be invoked when the server state is changed.
+ */
+int bt_otp_set_server_state_changed_cb(bt_otp_server_state_changed_cb callback, void *user_data);
+
+/**
+ * @ingroup
+ * @brief Registers a callback function that will be invoked when the server state is changed.
+ */
+int bt_otp_unset_server_state_changed_cb(void);
+
+/**
+ * @internal
+ * @brief OTP Client Profile API to create Client Role associated with Remote OTP Server
+ */
+int bt_otp_client_create(const char *remote_address, bt_otp_client_h *otp_client);
+
+/**
+ * @internal
+ * @brief OTP Client Profile API to destroy Client Role associated with Remote OTP Server
+ */
+int bt_otp_client_destroy(bt_otp_client_h otp_client);
+
+/**
+ * @internal
+ * @brief OTP Client Profile API to set connection state changed event associated with Remote OTP Server
+ */
+int bt_otp_client_set_connection_state_changed_cb(bt_otp_client_h otp_client,
+                                               bt_otp_client_state_changed_cb callback, void *user_data);
+
+/**
+ * @internal
+ * @brief OTP Client Profile API to unset connection state changed event associated with Remote OTP Server
+ */
+int bt_otp_client_unset_connection_state_changed_cb(bt_otp_client_h otp_client);
+
+/**
+ * @internal
+ * @brief OTP client API to connect to Remote OTP Server
+ */
+int bt_otp_client_connect(bt_otp_client_h otp_client);
+
+/**
+ * @internal
+ * @brief OTP client API to disconnect to Remote OTP Server
+ */
+int bt_otp_client_disconnect(bt_otp_client_h otp_client);
+
+/**
+ * @internal
+ * @brief OTP client API to discover all objects in Remote OTP Server
+ */
+int bt_otp_client_discover_all_objects(bt_otp_client_h otp_client,
+                                               bt_otp_client_object_discovery_cb callback, void *user_data);
+
+/**
+ * @internal
+ * @brief OTP client API to select object in Remote OTP Server
+ */
+int bt_otp_client_select_object(bt_otp_client_h otp_client, unsigned long long id,
+                                                       bt_otp_client_object_select_cb callback, void *user_data);
+/**
+ * @internal
+ * @brief OTP client API to read remote objects contents
+ */
+int bt_otp_client_read_object_contents(bt_otp_client_h otp_client,
+                                       bt_otp_client_read_object_complete_cb callback, void *user_data);
+/**
+ * @internal
+ * @brief OTP client API to create object on remote server
+ */
+int bt_otp_client_create_object(bt_otp_client_h otp_client,
+                                                       const char *file_path,
+                                                       bt_otp_client_object_create_cb callback,
+                                                       void *user_data);
+/**
+ * @internal
+ * @brief OTP client API to write object contents on remote server
+ */
+int bt_otp_client_write_object(bt_otp_client_h otp_client,
+                                                       const char *file_path,
+                                                       int offset, int length, int mode,
+                                                       bt_otp_client_object_write_cb callback,
+                                                       void *user_data);
+/**
+ * @internal
+ * @brief OTP client API to execute object on remote server
+ */
+int bt_otp_client_execute_object(bt_otp_client_h otp_client,
+                                                       bt_otp_client_object_execute_cb callback,
+                                                       void *user_data);
+/**
+ * @internal
+ * @brief OTP client API to delete object on remote server
+ */
+int bt_otp_client_delete_object(bt_otp_client_h otp_client,
+                                                       bt_otp_client_object_delete_cb callback,
+                                                       void *user_data);
+/**
+ * @}
+ */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __TIZEN_NETWORK_BLUETOOTH_INTERNAL_H__ */
index 538b67cf3de7c642913dbe0e171cfbf779831f73..bba2f2ff490134871002cd82898a5c69d91920f3 100644 (file)
 #include <bluetooth-hid-api.h>
 #include <bluetooth-ipsp-api.h>
 
-#ifndef GATT_DIRECT
-#include <bluetooth-gatt-server-api.h>
-#endif
-
 #include "bluetooth.h"
 #include "bluetooth_internal.h"
 
@@ -47,10 +43,16 @@ extern "C" {
 #define BT_ERR(fmt, args...) SLOGE(fmt, ##args)
 
 #define OPP_UUID "00001105-0000-1000-8000-00805f9b34fb"
+#define MAP_UUID "00001134-0000-1000-8000-00805f9b34fb"
 
 /* Manufacture ID for Apple iBeacons */
 #define COMPANY_ID_APPLE 0x004C
 
+/* Priximity Services UUID */
+#define PXP_IMMEDIATE_ALERT_SVC_UUID   "1802"
+#define PXP_LINK_LOSS_SVC_UUID         "1803"
+#define PXP_TX_POWER_SVC_UUID          "1804"
+
 /**
  * @internal
  * @brief Bluetooth callback.
@@ -79,6 +81,8 @@ typedef enum {
        BT_EVENT_OPP_CLIENT_PUSH_RESPONSED, /**< OPP client connection is responsed */
        BT_EVENT_OPP_CLIENT_PUSH_PROGRESS, /**< OPP client push progress */
        BT_EVENT_OPP_CLIENT_PUSH_FINISHED, /**< OPP client push is finished */
+       BT_EVENT_MAP_CONNECTION_REQUESTED, /**< MAP connection is requested */
+       BT_EVENT_MAP_CLIENT_OP_COMPLETE, /**< MAP client operation is complete */
        BT_EVENT_PAN_CONNECTION_STATE_CHANGED, /**< PAN connection change */
        BT_EVENT_NAP_CONNECTION_STATE_CHANGED, /**< NAP connection change */
        BT_EVENT_HDP_CONNECTED, /**< HDP connection change */
@@ -114,13 +118,11 @@ typedef enum {
        BT_EVENT_GATT_CLIENT_READ_DESCRIPTOR, /**< GATT descriptor value read callback */
        BT_EVENT_GATT_CLIENT_WRITE_DESCRIPTOR, /**< GATT descriptor value write callback */
        BT_EVENT_GATT_SERVER_READ_REQUESTED, /**< GATT Characteristic/Descriptor Read Requested callback*/
-#ifdef TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT
        BT_EVENT_GATT_CLIENT_CHARACTERISTIC_DISCOVERED_LEGACY, /**< GATT characteristic discovered callback */
        BT_EVENT_GATT_CLIENT_CHARACTERISTIC_DESCRIPTOR_DISCOVERED_LEGACY, /**< GATT characteristic descriptor discovered callback */
        BT_EVENT_GATT_CLIENT_VALUE_CHANGED_LEGACY, /**< GATT characteristic value changed callback */
        BT_EVENT_GATT_CLIENT_READ_CHARACTERISTIC_LEGACY, /**< GATT characteristic value read callback */
        BT_EVENT_GATT_CLIENT_WRITE_CHARACTERISTIC_LEGACY, /**< GATT characteristic value write callback */
-#endif
        BT_EVENT_IPSP_INIT_STATE_CHANGED, /**< IPSP Init status changed callback */
        BT_EVENT_IPSP_CONNECTION_STATUS, /**< IPSP connection status callback */
        BT_EVENT_LE_DATA_LENGTH_CHANGED, /** LE data length changed callback */
@@ -133,8 +135,8 @@ typedef enum {
        BT_EVENT_GET_RSSI_EVENT, /**< Get RSSI Strength callback */
        BT_EVENT_LE_READ_MAXIMUM_DATA_LENGTH, /**< Read maximun LE data length callback */
        BT_EVENT_SUPPORTED_TRUSTED_PROFILE_EVENT, /**< Trusted Profile callback */
-       BT_EVENT_PROXIMITY_PROPERTY_CHANGED, /**< Proximity property changed */
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
+       BT_EVENT_PROXIMITY_CONNECTION_STATE_CHANGED, /**< Proximity Monitor/Reporter Connection sgate changed */
+       BT_EVENT_PROXIMITY_REPORTER_PROPERTY_CHANGED, /**< Proximity property changed */
        BT_EVENT_PBAP_CONNECTION_STATUS, /**< PBAP connection status callback */
        BT_EVENT_PBAP_PHONEBOOK_SIZE, /**< PBAP Phonebook Size status callback */
        BT_EVENT_PBAP_PHONEBOOK_PULL, /**< PBAP Phonebook Pull status callback */
@@ -149,7 +151,14 @@ typedef enum {
        BT_EVENT_HF_CALL_STATUS_UPDATED_EVENT, /**< Audio - HF call status updated callback */
        BT_EVENT_HF_REMOTE_CALL_EVENT, /**< Audio - HF : call state event callback */
        BT_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED, /**< Audio - HF : device state changed callback */
-#endif
+       BT_EVENT_MAP_CLIENT_LIST_FOLDERS, /**< MAP client - listFolders event*/
+       BT_EVENT_MAP_CLIENT_LIST_FILTER_FIELDS, /**< MAP - get filter field list callback */
+       BT_EVENT_MAP_CLIENT_LIST_MESSAGES, /**< MAP - listMessages event*/
+       BT_EVENT_MAP_CLIENT_GET_MESSAGE, /**< MAP - getMessage event*/
+       BT_EVENT_MAP_CLIENT_PUSH_MESSAGE, /**< MAP - pushMessage event*/
+       BT_EVENT_TDS_ACTIVATION_REQUESTED, /**< TDS - transport activation requested event */
+       BT_EVENT_TDS_PROVIDER_FOUND_RESULT, /**< TDS - CUSTOM Provider */
+       BT_EVENT_OTP_SERVER_STATE_CHANGED, /**< OTP - Server Status */
        BT_EVENT_MAX
 } bt_event_e;
 
@@ -158,35 +167,6 @@ typedef enum {
        BT_GATT_ROLE_CLIENT = 0x02,
 } bt_gatt_role_e;
 
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
-/**
- * @internal
- */
-typedef enum {
-       BT_ADAPTER_LE_ADVERTISING_CONNECTABLE = 0x00, /**< Connectable undirected advertising (ADV_IND) */
-       BT_ADAPTER_LE_ADVERTISING_CONNECTABLE_DIRECT_HIGH = 0x01, /* @Deprecated since Tizen 2.4 */
-       BT_ADAPTER_LE_ADVERTISING_SCANNABLE = 0x02, /**< Scannable undirected advertising (ADV_SCAN_IND) */
-       BT_ADAPTER_LE_ADVERTISING_NON_CONNECTABLE = 0x03, /**< Non connectable undirected advertising (ADV_NONCOND_IND) */
-       BT_ADAPTER_LE_ADVERTISING_CONNECTABLE_DIRECT_LOW = 0x04, /* @Deprecated since Tizen 2.4 */
-} bt_adapter_le_advertising_type_e;
-
-/**
- * @internal
- */
-typedef enum {
-       BT_ADAPTER_LE_PACKET_DATA_INCOMP_LIST_16_BIT_SERVICE_CLASS_UUIDS = 0x02, /**<Incomplete list of 16 bit UUIDs */
-       BT_ADAPTER_LE_PACKET_DATA_COMP_LIST_16_BIT_SERVICE_CLASS_UUIDS = 0x03, /**< Complete list of 16 bit UUIDs */
-       BT_ADAPTER_LE_PACKET_DATA_INCOMP_LIST_128_BIT_SERVICE_CLASS_UUIDS = 0x06, /**< Incomplete list of 128 bit UUIDs */
-       BT_ADAPTER_LE_PACKET_DATA_COMP_LIST_128_BIT_SERVICE_CLASS_UUIDS = 0x07, /**< Complete list of 128 bit UUID */
-       BT_ADAPTER_LE_PACKET_DATA_LOCAL_NAME = 0x09, /**<local device name */
-       BT_ADAPTER_LE_PACKET_DATA_TX_POWER_LEVEL = 0x0a, /**< TX-Power level*/
-       BT_ADAPTER_LE_PACKET_DATA_16_BIT_SERVICE_SOLICITATION_UUIDS = 0x14, /**< List of 16-bit Service Solicitation UUIDs*/
-       BT_ADAPTER_LE_PACKET_DATA_128_BIT_SERVICE_SOLICITATION_UUIDS = 0x15, /**< List of 128-bit Service Solicitation UUIDs*/
-       BT_ADAPTER_LE_PACKET_DATA_SERVICE_DATA = 0x16, /**< Service data */
-       BT_ADAPTER_LE_PACKET_DATA_APPEARANCE = 0x19, /**< Appearance*/
-       BT_ADAPTER_LE_PACKET_DATA_MANUFACTURER_SPECIFIC_DATA = 0xff, /**< Manufacturer data */
-} bt_adapter_le_packet_data_type_e;
-#endif
 
 /**
  * @internal
@@ -203,6 +183,7 @@ typedef enum {
        BT_ADAPTER_LE_ADVERTISING_DATA_128_BIT_SERVICE_SOLICITATION_UUIDS = 0x15, /**< List of 128-bit Service Solicitation UUIDs*/
        BT_ADAPTER_LE_ADVERTISING_DATA_SERVICE_DATA = 0x16, /**< Service data */
        BT_ADAPTER_LE_ADVERTISING_DATA_APPEARANCE = 0x19, /**< Appearance*/
+       BT_ADAPTER_LE_ADVERTISING_DATA_TRANSPORT_DISCOVERY = 0x26, /**< Transport Discovery*/
        BT_ADAPTER_LE_ADVERTISING_DATA_MANUFACTURER_SPECIFIC_DATA = 0xff, /**< Manufacturer data */
 } bt_adapter_le_advertising_data_type_e;
 
@@ -331,8 +312,10 @@ typedef struct {
        bool services_discovered;
        bool connected;
 
+       bt_gatt_client_att_mtu_changed_cb att_mtu_changed_cb;
        bt_gatt_client_service_changed_cb service_changed_cb;
        void *service_changed_user_data;
+       void *att_mtu_changed_user_data;
 } bt_gatt_client_s;
 
 typedef struct {
@@ -341,9 +324,6 @@ typedef struct {
        void *parent;
        char *path;
        char *uuid;
-#ifndef GATT_DIRECT
-       int handle;
-#endif
 } bt_gatt_common_s;
 
 typedef struct {
@@ -352,10 +332,7 @@ typedef struct {
        void *parent;
        char *path;
        char *uuid;
-#ifndef GATT_DIRECT
-       int handle;
-        int numhandles;
-#endif
+
        bool is_included_service;
 
        bt_gatt_service_type_e service_type;
@@ -373,10 +350,7 @@ typedef struct {
        void *parent;
        char *path;
        char *uuid;
-#ifndef GATT_DIRECT
-       int handle;
-        bluetooth_device_address_t address;
-#endif
+
        int permissions;
        int properties;
        bt_gatt_write_type_e write_type;
@@ -402,6 +376,12 @@ typedef struct {
 
        int value_length;
        char *value;
+
+       bt_gatt_client_request_completed_cb read_cb;
+       void *read_user_data;
+
+       bt_gatt_client_request_completed_cb write_cb;
+       void *write_user_data;
 } bt_gatt_characteristic_s;
 
 typedef struct {
@@ -410,9 +390,7 @@ typedef struct {
        void *parent;
        char *path;
        char *uuid;
-#ifndef GATT_DIRECT
-       int handle;
-#endif
+
        int permissions;
 
        bt_gatt_server_write_value_requested_cb write_value_requested_cb;
@@ -423,6 +401,12 @@ typedef struct {
 
        int value_length;
        char *value;
+
+       bt_gatt_client_request_completed_cb read_cb;
+       void *read_user_data;
+
+       bt_gatt_client_request_completed_cb write_cb;
+       void *write_user_data;
 } bt_gatt_descriptor_s;
 
 typedef struct {
@@ -490,60 +474,6 @@ typedef void (*bt_rssi_strength_cb)(char *bt_address,
 typedef void (*_bt_gatt_client_value_changed_cb)(char *char_path,
                unsigned char *value, int value_length, void *user_data);
 
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Enumaration for the address type field in manufactrer specific data
- * @since_tizen 3.0
- */
-typedef enum {
-       ADDRESS_NONE_TYPE = 0x00,
-       WI_FI_P2P_ADDRESS = 0x01,
-       BLUETOOTH_ADDRESS = 0x02,
-       INDICATION_ADDRESS = 0x04,
-       IPV4_ADDRESS = 0x08,
-       IPV6_ADDRESS = 0x10,
-       UNKNOWN_ADDRESS = 0xff
-} connectivity_address_t;
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Enumaration for the proximity locality type field in manufactrer specific data
- * @since_tizen 3.0
- */
-typedef enum {
-       NONE_TYPE = 0x00,
-       PROXIMITY = 0x01,
-       CO_PRESENCE = 0x02,
-       UNKNOWN_TYPE = 0xff
-} bt_proximity_locality_t;
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Structure of samsung specific manufacturer data
- * @since_tizen 3.0
- */
-typedef struct {
-       unsigned char version;
-       unsigned char service_id;
-       unsigned char discovery_version;
-       unsigned char associated_service_id;
-       bt_proximity_locality_t proximity_locality_type;
-       unsigned char proximity_locality_info;
-       unsigned char device_type;
-       unsigned char device_icon;
-       unsigned char auth_info[5];
-       connectivity_address_t addr_type;
-       unsigned char addr1[6];
-       unsigned char addr2[6];
-       unsigned char channel_info;
-       unsigned char associated_service_data_len;
-       unsigned char *associated_service_data_val;
-       char *name;
-} bt_manufacturer_data;
-
 /**
  * @internal
  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
@@ -563,12 +493,25 @@ typedef void (*bt_adapter_passkey_notification_cb)(const char *remote_address, c
 
 #define BT_CHECK_INPUT_PARAMETER(arg) \
        if (arg == NULL) { \
-               LOGE("[%s] INVALID_PARAMETER(0x%08x)", __FUNCTION__, BT_ERROR_INVALID_PARAMETER); \
+               LOGE("[%s] INVALID_PARAMETER(0%s=NULL)", __FUNCTION__, #arg); \
+               return BT_ERROR_INVALID_PARAMETER; \
+       }
+
+#define BT_CHECK_INPUT_PARAMETER_UINT(arg) \
+       if (arg < -1) { \
+               LOGE("[%s] INVALID_PARAMETER_UINT(%s=%d)", __FUNCTION__, #arg, arg); \
+               return BT_ERROR_INVALID_PARAMETER; \
+       }
+
+#define BT_CHECK_INPUT_PARAMETER_BOOL(arg) \
+       if (arg < -1 || arg > 1) { \
+               LOGE("[%s] INVALID_PARAMETER_BOOL(%s=%d)", __FUNCTION__, #arg, arg); \
                return BT_ERROR_INVALID_PARAMETER; \
        }
 
 #define BT_FEATURE_COMMON "tizen.org/feature/network.bluetooth"
 #define BT_FEATURE_LE "tizen.org/feature/network.bluetooth.le"
+#define BT_FEATURE_IPSP "tizen.org/feature/network.bluetooth.le.ipsp"
 #define BT_FEATURE_AUDIO_CALL "tizen.org/feature/network.bluetooth.audio.call"
 #define BT_FEATURE_AUDIO_MEDIA "tizen.org/feature/network.bluetooth.audio.media"
 #define BT_FEATURE_AUDIO_CONTROLLER "tizen.org/feature/network.bluetooth.audio.controller"
@@ -576,6 +519,7 @@ typedef void (*bt_adapter_passkey_notification_cb)(const char *remote_address, c
 #define BT_FEATURE_HID_HOST "tizen.org/feature/network.bluetooth.hid"
 #define BT_FEATURE_HID_DEVICE "tizen.org/feature/network.bluetooth.hid_device"
 #define BT_FEATURE_OPP "tizen.org/feature/network.bluetooth.opp"
+#define BT_FEATURE_MAP "tizen.org/feature/network.bluetooth.map"
 #define BT_FEATURE_TETHERING "tizen.org/feature/network.tethering.bluetooth"
 #define BT_FEATURE_PBAP_CLIENT "tizen.org/feature/network.bluetooth.phonebook.client"
 
@@ -678,6 +622,13 @@ int _bt_get_error_code(int origin_error);
 int _bt_get_bt_device_info_s(bt_device_info_s **dest_dev, bluetooth_device_info_t *source_dev);
 
 
+/**
+ * @internal
+ * @brief Filter Advertising data based on AD type.
+ */
+int _bt_get_ad_data_by_type(char *in_data, int in_len,
+               char in_type, char **data, int *data_len);
+
 /**
  * @internal
  * @brief Free bt_device_info_s.
@@ -697,6 +648,10 @@ int _bt_convert_address_to_string(char **addr_str, bluetooth_device_address_t *a
  */
 void _bt_convert_address_to_hex(bluetooth_device_address_t *addr_hex, const char *addr_str);
 
+void _handle_gatt_client_read_completed_event(int result, bt_gatt_resp_data_t *resp);
+
+void _handle_gatt_client_write_completed_event(int result, bt_gatt_resp_data_t *resp);
+
 
 /**
  * @internal
@@ -722,7 +677,6 @@ bt_adapter_visibility_mode_e _bt_get_bt_visibility_mode_e(bluetooth_discoverable
  */
 void _bt_audio_event_proxy(int event, bt_audio_event_param_t *param, void *user_data);
 
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
 /**
  * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
  * @brief  Enumerations for the device state event from Audio-Gateway device
@@ -735,27 +689,6 @@ typedef enum {
        BT_HF_REMOTE_DEVICE_STATE_VOICE_RECOGNITON,  /**< Voice Recognition State (0:disabled , 1:enabled) */
 } bt_hf_remote_device_state_e;
 
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Enumerations for the call event from Audio-Gateway device
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_HF_REMOTE_CALL_EVENT_IDLE = 0x00,  /**< Idle. Neither setup call nor active call exist */
-       BT_HF_REMOTE_CALL_EVENT_INCOMING,  /**< (Call-setup event) Received an incoming call on AG */
-       BT_HF_REMOTE_CALL_EVENT_DIALING,  /**< (Call-setup event) Dialing an outgoing call on AG */
-       BT_HF_REMOTE_CALL_EVENT_ALERTING,  /**< (Call-setup event) Remote party being alerted in an outgoing call of AG */
-       BT_HF_REMOTE_CALL_EVENT_CALL_TERMINATED,  /**< (Call-setup event) Setup call is terminated without activating */
-       BT_HF_REMOTE_CALL_EVENT_CALL_STARTED,  /**< (Active call state event) Call is started on AG */
-       BT_HF_REMOTE_CALL_EVENT_CALL_ENDED,  /**< (Active call state event) Active call is terminated on AG */
-       BT_HF_REMOTE_CALL_EVENT_UNHELD,  /**< (Call held event) No calls on hold */
-       BT_HF_REMOTE_CALL_EVENT_SWAPPED,  /**< (Call held event) Call is placed on hold or active/held calls swapped */
-       BT_HF_REMOTE_CALL_EVENT_HELD,  /**< (Call held event) Calls on hold, no active call */
-       BT_HF_REMOTE_CALL_EVENT_RINGING,  /**< Incoming call is ringing event with number. This event is optional event. */
-       BT_HF_REMOTE_CALL_EVENT_WAITING,  /**< Call Waiting notification in 3-way call scenario */
-       BT_HF_REMOTE_CALL_EVENT_FAILED_TO_DIALING,  /**< Failed to dialing a outgoing call on AG */
-} bt_hf_remote_call_event_e;
-
 /**
  * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
  * @brief  Called when a device status changed event happend from Audio-Gateway device
@@ -770,20 +703,6 @@ typedef enum {
  */
 typedef void (*bt_hf_remote_device_state_changed_cb) (bt_hf_remote_device_state_e state, int value, void *user_data);
 
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Called  when a call event happend from Audio-Gateway device
- * @since_tizen 3.0
- *
- * @param[in] event The call state chagned event from remote Audio-Gateway device
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @see bt_hf_set_remote_call_event_cb()
- * @see bt_hf_unset_remote_call_event_cb()
- */
-typedef void (*bt_hf_remote_call_event_cb) (bt_hf_remote_call_event_e event, char *phone_number, void *user_data);
-
 /**
  * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
  * @brief  Called when a vendor command event happened from Hands-Free.
@@ -802,7 +721,6 @@ typedef void (*bt_hf_vendor_dep_cmd_event_cb) (bt_hf_vendor_dep_at_cmd_s cmd, vo
  * @brief Since the HF call back and event proxy call backs have different prototype it is wrapper function.
  */
 void _bt_hf_event_proxy(int event, bt_hf_event_param_t *param, void *user_data);
-#endif
 
 /**
  * @internal
@@ -824,9 +742,7 @@ void _bt_hid_event_proxy(int event, hid_event_param_t *param, void *user_data);
 
 void _bt_adapter_le_invoke_advertising_state_cb(int handle, int result, bt_adapter_le_advertising_state_e adv_state);
 
-#ifdef TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT
 bool _bt_gatt_is_legacy_client_mode(void);
-#endif
 
 bt_gatt_client_h _bt_gatt_get_client(const char *remote_addr);
 
@@ -842,15 +758,6 @@ int _bt_gatt_client_update_characteristics(bt_gatt_h service);
 
 int _bt_gatt_client_update_descriptors(bt_gatt_h characteristic);
 
-#ifndef GATT_DIRECT
-/**
- * @internal
- * @brief Since the GATT Server call back and event proxy call backs have different prototype it is wrapper function.
- */
-void _bt_gatt_server_event_proxy(int event, gatt_server_event_param_t *param, void *user_data);
-#endif
-
-
 /**
  * @ingroup CAPI_NETWORK_BLUETOOTH_LE_MODULE
  * @brief Reads the maximum data length of LE packets supported by the controller.
@@ -920,6 +827,103 @@ typedef void (*_bt_le_set_data_length_changed_cb)
 int bt_device_le_set_data_length_change_cb(
        _bt_le_set_data_length_changed_cb callback, void *user_data);
 
+/**
+ * @internal
+ * @brief Reads if the Proximity profile is registered or not.
+ */
+int _bt_check_proximity_is_initialized(bool *is_initialized);
+
+/**
+ * @internal
+ * @brief Calls the connection state changed callback for proximity profile.
+ */
+int _bt_proximity_connection_set_state_changed(int result, const char *remote_address, bool connected);
+
+/**
+ * @internal
+ * @brief Send GATT connection state changed status with remote TDS provider.
+ */
+void _bt_tds_update_seeker_connection_state_changed(int result, const char *remote_address, bool connected);
+
+/**
+ * @internal
+ * @brief  Parses TDS AD Type data recived in scan, to extract meaningful transport specific data.
+ */
+int _bt_tds_parse_transport_blocks(bt_tds_transport_block_list_s **info, char *data, int data_len);
+
+/**
+ * @internal
+ * @brief  Handles complete TDS specific data to be sent to application.
+ */
+void _bt_tds_send_complete_transport_data(int result, const char *address, char *data, int data_len);
+
+/**
+ * @internal
+ * @brief Send Result of TDS specific CCCD enabled event of Remote TDS provider.
+ */
+void _bt_tds_control_point_enabled_update(int result, const char *remote_address);
+
+/**
+ * @internal
+ * @brief Send Result of TDS control point activate ACK event.
+ */
+void _bt_tds_control_point_activation_result_update(int result, const char *remote_address);
+
+/**
+ * @internal
+ * @brief Send TDS Indication response from remote TDS provider.
+ */
+void _bt_tds_control_point_indication_response_update(const char *address, bluetooth_tds_indication_res_t *info);
+
+/**
+ * @internal
+ * @brief Sends GATT primary service status changed of Remote Provider.
+ */
+void _bt_tds_check_service_changed(char *address, bt_gatt_service_change_t *service_change);
+
+/**
+ * @internal
+ * @brief Send GATT connection state changed status with remote OTP Server.
+ */
+void _bt_otp_client_connection_state_changed(int result, const char *remote_address, bool connected);
+
+/**
+ * @internal
+ * @brief Send GATT Read Response status got from remote OTP Server.
+ */
+void _bt_otp_client_read_value_response(int result, char *char_path,
+                                                                       char *char_value, int val_len);
+
+/**
+ * @internal
+ * @brief Send GATT Write Response status got from remote OTP Server.
+ */
+void _bt_otp_client_write_value_response(int result, char *handle);
+
+/**
+ * @internal
+ * @brief Send GATT Notification Enabled Response status got from remote OTP Server.
+ */
+void _bt_otp_client_notification_enabled(int result, char *handle);
+
+/**
+ * @internal
+ * @brief Send GATT Indicate Response status got from remote OTP Server.
+ */
+void _bt_otp_client_indication(int result, bluetooth_otp_resp_info_t *info);
+
+/**
+ * @internal
+ * @brief Send OTC connection status to application.
+ */
+void _bt_otc_connection_state_changed(int result, bluetooth_otc_info_t *otc_info);
+
+/**
+ * @internal
+ * @brief Sends GATT primary service status changed of Remote Server.
+ */
+void _bt_otp_check_service_changed(char *address, bt_gatt_service_change_t *service_change);
+
 typedef enum {
        _PROFILE_UNKNOWN = 0,
        _PROFILE_MOBILE = 0x1,
@@ -931,6 +935,20 @@ typedef enum {
 extern tizen_profile_t _get_tizen_profile();
 extern tizen_profile_t profile;
 
+#define TIZEN_PROFILE_(x) (((__builtin_expect(profile != _PROFILE_UNKNOWN, 1)) ? \
+                                       (profile) : _get_tizen_profile()) \
+                               & (x))
+
+#define TIZEN_PROFILE_MOBILE   TIZEN_PROFILE_(_PROFILE_MOBILE)
+#define TIZEN_PROFILE_COMMON   TIZEN_PROFILE_(_PROFILE_COMMON)
+#define TIZEN_PROFILE_TV       TIZEN_PROFILE_(_PROFILE_TV)
+#define TIZEN_PROFILE_WEARABLE TIZEN_PROFILE_(_PROFILE_WEARABLE)
+#define TIZEN_PROFILE_IVI      TIZEN_PROFILE_(_PROFILE_IVI)
+
+#define TIZEN_PROFILE_WEARABLE_IVI     TIZEN_PROFILE_(_PROFILE_WEARABLE | _PROFILE_IVI)
+
+#define TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT                TIZEN_PROFILE_MOBILE
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/bluetooth_type.h b/include/bluetooth_type.h
new file mode 100644 (file)
index 0000000..0423a50
--- /dev/null
@@ -0,0 +1,2330 @@
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __TIZEN_NETWORK_BLUETOOTH_TYPE_H__
+#define __TIZEN_NETWORK_BLUETOOTH_TYPE_H__
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdbool.h>
+#include <tizen_error.h>
+
+ #ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+/**
+ * @file bluetooth_type.h
+ * @brief API to control the Bluetooth adapter, devices and communications.
+ * @ingroup     CAPI_NETWORK_BLUETOOTH_TYPE_MODULE
+ */
+
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief  Enumeration of PBAP fields.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ */
+typedef enum {
+       BT_PBAP_FIELD_ALL = (0xFFFFFFFFU), /**< All field */
+       BT_PBAP_FIELD_VERSION = (1U << 0), /**< vCard Version */
+       BT_PBAP_FIELD_FN = (1U << 1), /**< Formatted Name */
+       BT_PBAP_FIELD_N = (1U << 2), /**< Structured Presentation of Name */
+       BT_PBAP_FIELD_PHOTO = (1U << 3), /**< Associated Image or Photo */
+       BT_PBAP_FIELD_BDAY = (1U << 4), /**< Birthday */
+       BT_PBAP_FIELD_ADR = (1U << 5), /**< Delivery Address */
+       BT_PBAP_FIELD_LABEL = (1U << 6), /**< Delivery */
+       BT_PBAP_FIELD_TEL = (1U << 7), /**< Telephone Number */
+       BT_PBAP_FIELD_EMAIL = (1U << 8), /**< Electronic Mail Address */
+       BT_PBAP_FIELD_MAILER = (1U << 9), /**< Electronic Mail */
+       BT_PBAP_FIELD_TZ = (1U << 10), /**< Time Zone */
+       BT_PBAP_FIELD_GEO = (1U << 11), /**< Geographic Position */
+       BT_PBAP_FIELD_TITLE = (1U << 12), /**< Job */
+       BT_PBAP_FIELD_ROLE = (1U << 13), /**< Role within the Organization */
+       BT_PBAP_FIELD_LOGO = (1U << 14), /**< Organization Logo */
+       BT_PBAP_FIELD_AGENT = (1U << 15), /**< vCard of Person Representing */
+       BT_PBAP_FIELD_ORG = (1U << 16), /**< Name of Organization */
+       BT_PBAP_FIELD_NOTE = (1U << 17), /**< Comments */
+       BT_PBAP_FIELD_REV = (1U << 18), /**< Revision */
+       BT_PBAP_FIELD_SOUND = (1U << 19), /**< Pronunciation of Name */
+       BT_PBAP_FIELD_URL = (1U << 20), /**< Uniform Resource Locator */
+       BT_PBAP_FIELD_UID = (1U << 21), /**< Unique ID */
+       BT_PBAP_FIELD_KEY = (1U << 22), /**< Public Encryption Key */
+       BT_PBAP_FIELD_NICKNAME = (1U << 23), /**< Nickname */
+       BT_PBAP_FIELD_CATEGORIES = (1U << 24), /**< Categories */
+       BT_PBAP_FIELD_PROID = (1U << 25), /**< Product ID */
+       BT_PBAP_FIELD_CLASS = (1U << 26), /**< Class information */
+       BT_PBAP_FIELD_SORT_STRING = (1U << 27), /**< String used for sorting operations */
+       BT_PBAP_FIELD_X_IRMC_CALL_DATETIME = (1U << 28), /**< Time stamp */
+} bt_pbap_field_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_MODULE
+ * @brief Enumerations of Bluetooth error codes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful*/
+       BT_ERROR_CANCELLED = TIZEN_ERROR_CANCELED, /**< Operation cancelled */
+       BT_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */
+       BT_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */
+       BT_ERROR_RESOURCE_BUSY = TIZEN_ERROR_RESOURCE_BUSY, /**< Device or resource busy */
+       BT_ERROR_TIMED_OUT = TIZEN_ERROR_TIMED_OUT, /**< Timeout error */
+       BT_ERROR_NOW_IN_PROGRESS = TIZEN_ERROR_NOW_IN_PROGRESS, /**< Operation now in progress */
+       BT_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< BT is Not Supported */
+       BT_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */
+       BT_ERROR_QUOTA_EXCEEDED = TIZEN_ERROR_QUOTA_EXCEEDED, /**< Quota exceeded */
+       BT_ERROR_NO_DATA = TIZEN_ERROR_NO_DATA, /**< No data available */
+       BT_ERROR_DEVICE_POLICY_RESTRICTION = TIZEN_ERROR_DEVICE_POLICY_RESTRICTION, /**< Device policy restriction (Since 3.0) */
+       BT_ERROR_NOT_INITIALIZED = TIZEN_ERROR_BLUETOOTH|0x0101, /**< Local adapter not initialized */
+       BT_ERROR_NOT_ENABLED = TIZEN_ERROR_BLUETOOTH|0x0102, /**< Local adapter not enabled */
+       BT_ERROR_ALREADY_DONE = TIZEN_ERROR_BLUETOOTH|0x0103, /**< Operation already done  */
+       BT_ERROR_OPERATION_FAILED = TIZEN_ERROR_BLUETOOTH|0x0104, /**< Operation failed */
+       BT_ERROR_NOT_IN_PROGRESS = TIZEN_ERROR_BLUETOOTH|0x0105, /**< Operation not in progress */
+       BT_ERROR_REMOTE_DEVICE_NOT_BONDED = TIZEN_ERROR_BLUETOOTH|0x0106, /**< Remote device not bonded */
+       BT_ERROR_AUTH_REJECTED = TIZEN_ERROR_BLUETOOTH|0x0107, /**< Authentication rejected */
+       BT_ERROR_AUTH_FAILED = TIZEN_ERROR_BLUETOOTH|0x0108, /**< Authentication failed */
+       BT_ERROR_REMOTE_DEVICE_NOT_FOUND = TIZEN_ERROR_BLUETOOTH|0x0109, /**< Remote device not found */
+       BT_ERROR_SERVICE_SEARCH_FAILED = TIZEN_ERROR_BLUETOOTH|0x010A, /**< Service search failed */
+       BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED = TIZEN_ERROR_BLUETOOTH|0x010B, /**< Remote device is not connected */
+       BT_ERROR_AGAIN = TIZEN_ERROR_BLUETOOTH|0x010C, /**< Resource temporarily unavailable */
+       BT_ERROR_SERVICE_NOT_FOUND = TIZEN_ERROR_BLUETOOTH|0x010D, /**< Service Not Found */
+} bt_error_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Enumerations of the Bluetooth adapter state.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_ADAPTER_DISABLED = 0x00, /**< Bluetooth adapter is disabled */
+       BT_ADAPTER_ENABLED, /**< Bluetooth adapter is enabled */
+} bt_adapter_state_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Enumerations of the Bluetooth visibility mode.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE = 0x00,  /**< Other devices cannot find your device via discovery */
+       BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE,  /**< Discoverable mode */
+       BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE,  /**< Discoverable mode with time limit. After specific period,
+                                                           it is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE.*/
+} bt_adapter_visibility_mode_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Enumerations of the discovery state of Bluetooth device.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_ADAPTER_DEVICE_DISCOVERY_STARTED, /**< Device discovery is started */
+       BT_ADAPTER_DEVICE_DISCOVERY_FINISHED, /**< Device discovery is finished */
+       BT_ADAPTER_DEVICE_DISCOVERY_FOUND, /**< The remote Bluetooth device is found */
+} bt_adapter_device_discovery_state_e;
+
+/**
+ * @deprecated Deprecated since 2.3.1
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Enumerations of the discovery state of Bluetooth LE device.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ *
+ */
+typedef enum {
+       BT_ADAPTER_LE_DEVICE_DISCOVERY_STARTED, /**< LE device discovery is started */
+       BT_ADAPTER_LE_DEVICE_DISCOVERY_FINISHED, /**< LE device discovery is finished */
+       BT_ADAPTER_LE_DEVICE_DISCOVERY_FOUND, /**< The remote Bluetooth LE device is found */
+} bt_adapter_le_device_discovery_state_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief  Enumerations of the Bluetooth advertising state.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_ADAPTER_LE_ADVERTISING_STOPPED = 0x00, /**< Bluetooth advertising is stopped */
+       BT_ADAPTER_LE_ADVERTISING_STARTED, /**< Bluetooth advertising is started */
+} bt_adapter_le_advertising_state_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief  Enumerations of the Bluetooth advertising mode.
+ * @since_tizen 2.3.1
+ */
+typedef enum {
+       BT_ADAPTER_LE_ADVERTISING_MODE_BALANCED,  /**< Balanced advertising mode */
+       BT_ADAPTER_LE_ADVERTISING_MODE_LOW_LATENCY,  /**< Low latency advertising mode */
+       BT_ADAPTER_LE_ADVERTISING_MODE_LOW_ENERGY  /**< Low energy advertising mode */
+} bt_adapter_le_advertising_mode_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief  Enumerations of the Bluetooth advertising filter policy.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_ADAPTER_LE_ADVERTISING_FILTER_DEFAULT = 0x00, /**< White list is not in use */
+       BT_ADAPTER_LE_ADVERTISING_FILTER_ALLOW_SCAN_WL = 0x01, /**< Allow the scan
+                                       request that in the White list */
+       BT_ADAPTER_LE_ADVERTISING_FILTER_ALLOW_CONN_WL = 0x02, /**< Allow the connection
+                                       request that in the White list */
+       BT_ADAPTER_LE_ADVERTISING_FILTER_ALLOW_SCAN_CONN_WL = 0x03, /**< Allow the
+                                       scan and connection request that in the White list */
+} bt_adapter_le_advertising_filter_policy_e;
+
+/**
+ * @deprecated Deprecated since 2.3.1
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief  Enumerations of the Bluetooth advertising type.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ */
+typedef enum {
+       BT_ADAPTER_LE_ADVERTISING_CONNECTABLE = 0x00, /**< Connectable undirected advertising (ADV_IND) */
+       BT_ADAPTER_LE_ADVERTISING_CONNECTABLE_DIRECT_HIGH = 0x01, /**< Connectable high duty cycle directed advertising (ADV_DIRECT_IND) */
+       BT_ADAPTER_LE_ADVERTISING_SCANNABLE = 0x02, /**< Scannable undirected advertising (ADV_SCAN_IND) */
+       BT_ADAPTER_LE_ADVERTISING_NON_CONNECTABLE = 0x03, /**< Non connectable undirected advertising (ADV_NONCOND_IND) */
+       BT_ADAPTER_LE_ADVERTISING_CONNECTABLE_DIRECT_LOW = 0x04, /**< Connectable low duty cycle directed advertising (ADV_DIRECT_IND) */
+} bt_adapter_le_advertising_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief  Enumerations of the Bluetooth LE packet type.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_ADAPTER_LE_PACKET_ADVERTISING, /**< Advertising packet */
+       BT_ADAPTER_LE_PACKET_SCAN_RESPONSE, /**< Scan response packet */
+} bt_adapter_le_packet_type_e;
+
+/**
+ * @deprecated Deprecated since 2.3.1
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief  Enumerations of the Bluetooth LE data type
+ *         that can be included in LE packets.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ */
+typedef enum {
+       BT_ADAPTER_LE_PACKET_DATA_COMP_LIST_16_BIT_SERVICE_CLASS_UUIDS = 0x03, /**< Complete list of 16 bit UUIDs */
+       BT_ADAPTER_LE_PACKET_DATA_LOCAL_NAME = 0x09, /**<local device name. unit-test uses this. */
+       BT_ADAPTER_LE_PACKET_DATA_MANUFACTURER_SPECIFIC_DATA = 0xff, /**< Manufacturer data */
+} bt_adapter_le_packet_data_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief  Enumerations of the Bluetooth le scan mode.
+ * @since_tizen 3.0
+ */
+typedef enum {
+       BT_ADAPTER_LE_SCAN_MODE_BALANCED, /**< Balanced mode of power consumption and connection latency */
+       BT_ADAPTER_LE_SCAN_MODE_LOW_LATENCY, /**< Low connection latency but high power consumption */
+       BT_ADAPTER_LE_SCAN_MODE_LOW_ENERGY /**< Low power consumption but high connection latency */
+} bt_adapter_le_scan_mode_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Enumerations of device disconnect reason.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_DEVICE_DISCONNECT_REASON_UNKNOWN, /**< Disconnected by unknown reason */
+       BT_DEVICE_DISCONNECT_REASON_TIMEOUT, /**< Disconnected by timeout */
+       BT_DEVICE_DISCONNECT_REASON_LOCAL_HOST, /**< Disconnected by local host */
+       BT_DEVICE_DISCONNECT_REASON_REMOTE, /**< Disconnected by remote */
+} bt_device_disconnect_reason_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Enumerations of connection link type.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_DEVICE_CONNECTION_LINK_BREDR, /**< BR/EDR link */
+       BT_DEVICE_CONNECTION_LINK_LE, /**< LE link */
+       BT_DEVICE_CONNECTION_LINK_DEFAULT = 0xFF, /**< The connection type default */
+} bt_device_connection_link_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Enumerations of device authorization state.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_DEVICE_AUTHORIZED, /**< The remote Bluetooth device is authorized */
+       BT_DEVICE_UNAUTHORIZED, /**< The remote Bluetooth device is unauthorized */
+} bt_device_authorization_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Enumerations of Bluetooth profile.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_PROFILE_RFCOMM = 0x01, /**< RFCOMM Profile */
+       BT_PROFILE_A2DP = 0x02, /**< Advanced Audio Distribution Profile Source role */
+       BT_PROFILE_HSP = 0x04, /**< Headset Profile */
+       BT_PROFILE_HID = 0x08, /**< Human Interface Device Profile */
+       BT_PROFILE_NAP = 0x10, /**< Network Access Point Profile */
+       BT_PROFILE_AG = 0x20, /**< Audio Gateway Profile */
+       BT_PROFILE_GATT = 0x40, /**< Generic Attribute Profile */
+       BT_PROFILE_NAP_SERVER = 0x80, /**< NAP server Profile */
+       BT_PROFILE_A2DP_SINK = 0x100, /**< Advanced Audio Distribution Profile Sink role */
+} bt_profile_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Enumerations of device address type.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_DEVICE_PUBLIC_ADDRESS = 0x00, /**< Public address */
+       BT_DEVICE_RANDOM_ADDRESS, /**< Random address */
+} bt_device_address_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Enumerations of service class.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_SC_NONE = 0, /**< No service class */
+       BT_SC_RES_SERVICE_MASK = 0x00000001, /**< RES service class */
+       BT_SC_SPP_SERVICE_MASK = 0x00000002, /**< SPP service class */
+       BT_SC_DUN_SERVICE_MASK = 0x00000004, /**< DUN service class */
+       BT_SC_FAX_SERVICE_MASK = 0x00000008, /**< FAX service class */
+       BT_SC_LAP_SERVICE_MASK = 0x00000010, /**< LAP service class */
+       BT_SC_HSP_SERVICE_MASK = 0x00000020, /**< HSP service class */
+       BT_SC_HFP_SERVICE_MASK = 0x00000040, /**< HFP service class */
+       BT_SC_OPP_SERVICE_MASK = 0x00000080, /**< OPP service class */
+       BT_SC_FTP_SERVICE_MASK = 0x00000100, /**< FTP service class */
+       BT_SC_CTP_SERVICE_MASK = 0x00000200, /**< CTP service class */
+       BT_SC_ICP_SERVICE_MASK = 0x00000400, /**< ICP service class */
+       BT_SC_SYNC_SERVICE_MASK = 0x00000800, /**< SYNC service class */
+       BT_SC_BPP_SERVICE_MASK = 0x00001000, /**< BPP service class */
+       BT_SC_BIP_SERVICE_MASK = 0x00002000, /**< BIP service class */
+       BT_SC_PANU_SERVICE_MASK = 0x00004000, /**< PANU service class */
+       BT_SC_NAP_SERVICE_MASK = 0x00008000, /**< NAP service class */
+       BT_SC_GN_SERVICE_MASK = 0x00010000, /**< GN service class */
+       BT_SC_SAP_SERVICE_MASK = 0x00020000, /**< SAP service class */
+       BT_SC_A2DP_SERVICE_MASK = 0x00040000, /**< A2DP service class */
+       BT_SC_AVRCP_SERVICE_MASK = 0x00080000, /**< AVRCP service class */
+       BT_SC_PBAP_SERVICE_MASK = 0x00100000, /**< PBAP service class */
+       BT_SC_HID_SERVICE_MASK = 0x00200000, /**< HID service class */
+       BT_SC_A2DP_SOURCE_SERVICE_MASK = 0x00400000, /**< A2DP SOURCE service class */
+       BT_SC_ALL_SERVICE_MASK = 0x00FFFFFF, /**< ALL service class */
+       BT_SC_MAX /**< MAX service class */
+} bt_service_class_t;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Enumerations of major service class.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_MAJOR_SERVICE_CLASS_LIMITED_DISCOVERABLE_MODE  = 0x002000, /**< Limited discoverable mode */
+       BT_MAJOR_SERVICE_CLASS_POSITIONING                = 0x010000, /**< Positioning class */
+       BT_MAJOR_SERVICE_CLASS_NETWORKING                 = 0x020000, /**< Networking class */
+       BT_MAJOR_SERVICE_CLASS_RENDERING                  = 0x040000, /**< Rendering class */
+       BT_MAJOR_SERVICE_CLASS_CAPTURING                  = 0x080000, /**< Capturing class */
+       BT_MAJOR_SERVICE_CLASS_OBJECT_TRANSFER            = 0x100000, /**< Object transferring class */
+       BT_MAJOR_SERVICE_CLASS_AUDIO                      = 0x200000, /**< Audio class*/
+       BT_MAJOR_SERVICE_CLASS_TELEPHONY                  = 0x400000, /**< Telephony class */
+       BT_MAJOR_SERVICE_CLASS_INFORMATION                = 0x800000, /**< Information class */
+} bt_major_service_class_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Enumerations of major device class.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_MAJOR_DEVICE_CLASS_MISC = 0x00, /**< Miscellaneous major device class*/
+       BT_MAJOR_DEVICE_CLASS_COMPUTER = 0x01, /**< Computer major device class */
+       BT_MAJOR_DEVICE_CLASS_PHONE = 0x02, /**< Phone major device class */
+       BT_MAJOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT = 0x03, /**< LAN/Network access point major device class */
+       BT_MAJOR_DEVICE_CLASS_AUDIO_VIDEO = 0x04, /**< Audio/Video major device class */
+       BT_MAJOR_DEVICE_CLASS_PERIPHERAL = 0x05, /**< Peripheral major device class */
+       BT_MAJOR_DEVICE_CLASS_IMAGING = 0x06, /**< Imaging major device class */
+       BT_MAJOR_DEVICE_CLASS_WEARABLE = 0x07, /**< Wearable device class */
+       BT_MAJOR_DEVICE_CLASS_TOY = 0x08, /**< Toy device class */
+       BT_MAJOR_DEVICE_CLASS_HEALTH = 0x09, /**< Health device class */
+       BT_MAJOR_DEVICE_CLASS_UNCATEGORIZED = 0x1F, /**< Uncategorized major device class */
+} bt_major_device_class_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Enumerations of minor device class.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_MINOR_DEVICE_CLASS_COMPUTER_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of computer */
+       BT_MINOR_DEVICE_CLASS_COMPUTER_DESKTOP_WORKSTATION = 0x04, /**< Desktop workstation minor device class of computer */
+       BT_MINOR_DEVICE_CLASS_COMPUTER_SERVER_CLASS = 0x08, /**< Server minor device class of computer */
+       BT_MINOR_DEVICE_CLASS_COMPUTER_LAPTOP = 0x0C, /**< Laptop minor device class of computer */
+       BT_MINOR_DEVICE_CLASS_COMPUTER_HANDHELD_PC_OR_PDA = 0x10, /**< Handheld PC/PDA minor device class of computer */
+       BT_MINOR_DEVICE_CLASS_COMPUTER_PALM_SIZED_PC_OR_PDA = 0x14, /**< Palm sized PC/PDA minor device class of computer */
+       BT_MINOR_DEVICE_CLASS_COMPUTER_WEARABLE_COMPUTER = 0x18, /**< Wearable(watch sized) minor device class of computer */
+
+       BT_MINOR_DEVICE_CLASS_PHONE_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of phone */
+       BT_MINOR_DEVICE_CLASS_PHONE_CELLULAR = 0x04, /**< Cellular minor device class of phone */
+       BT_MINOR_DEVICE_CLASS_PHONE_CORDLESS = 0x08, /**< Cordless minor device class of phone */
+       BT_MINOR_DEVICE_CLASS_PHONE_SMART_PHONE = 0x0C, /**< Smart phone minor device class of phone */
+       BT_MINOR_DEVICE_CLASS_PHONE_WIRED_MODEM_OR_VOICE_GATEWAY = 0x10, /**< Wired modem or voice gateway minor device class of phone */
+       BT_MINOR_DEVICE_CLASS_PHONE_COMMON_ISDN_ACCESS = 0x14, /**< Common ISDN minor device class of phone */
+
+       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_FULLY_AVAILABLE = 0x04, /**< Fully available minor device class of LAN/Network access point */
+       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_1_TO_17_PERCENT_UTILIZED = 0x20, /**< 1-17% utilized minor device class of LAN/Network access point */
+       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_17_TO_33_PERCENT_UTILIZED = 0x40, /**< 17-33% utilized minor device class of LAN/Network access point */
+       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_33_TO_50_PERCENT_UTILIZED = 0x60, /**< 33-50% utilized minor device class of LAN/Network access point */
+       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_50_to_67_PERCENT_UTILIZED = 0x80, /**< 50-67% utilized minor device class of LAN/Network access point */
+       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_67_TO_83_PERCENT_UTILIZED = 0xA0, /**< 67-83% utilized minor device class of LAN/Network access point */
+       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_83_TO_99_PERCENT_UTILIZED = 0xC0, /**< 83-99% utilized minor device class of LAN/Network access point */
+       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_NO_SERVICE_AVAILABLE = 0xE0, /**< No service available minor device class of LAN/Network access point */
+
+       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of audio/video */
+       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_WEARABLE_HEADSET = 0x04, /**< Wearable headset minor device class of audio/video */
+       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HANDS_FREE = 0x08, /**< Hands-free minor device class of audio/video */
+       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_MICROPHONE = 0x10, /**< Microphone minor device class of audio/video */
+       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_LOUDSPEAKER = 0x14, /**< Loudspeaker minor device class of audio/video */
+       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HEADPHONES = 0x18, /**< Headphones minor device class of audio/video */
+       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_PORTABLE_AUDIO = 0x1C, /**< Portable audio minor device class of audio/video */
+       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_CAR_AUDIO = 0x20, /**< Car audio minor device class of audio/video */
+       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_SET_TOP_BOX = 0x24, /**< Set-top box minor device class of audio/video */
+       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HIFI_AUDIO_DEVICE = 0x28, /**< Hifi audio minor device class of audio/video */
+       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VCR = 0x2C, /**< VCR minor device class of audio/video */
+       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_CAMERA = 0x30, /**< Video camera minor device class of audio/video */
+       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_CAMCORDER = 0x34, /**< Camcorder minor device class of audio/video */
+       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_MONITOR = 0x38, /**< Video monitor minor device class of audio/video */
+       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_DISPLAY_LOUDSPEAKER = 0x3C, /**< Video display and loudspeaker minor device class of audio/video */
+       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_CONFERENCING = 0x40, /**< Video conferencing minor device class of audio/video */
+       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_GAMING_TOY = 0x48, /**< Gaming/toy minor device class of audio/video */
+
+       BT_MINOR_DEVICE_CLASS_PERIPHERA_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of peripheral */
+       BT_MINOR_DEVICE_CLASS_PERIPHERAL_KEY_BOARD = 0x40, /**< Key board minor device class of peripheral */
+       BT_MINOR_DEVICE_CLASS_PERIPHERAL_POINTING_DEVICE = 0x80, /**< Pointing device minor device class of peripheral */
+       BT_MINOR_DEVICE_CLASS_PERIPHERAL_COMBO_KEYBOARD_POINTING_DEVICE = 0xC0, /**< Combo keyboard or pointing device minor device class of peripheral */
+       BT_MINOR_DEVICE_CLASS_PERIPHERAL_JOYSTICK = 0x04, /**< Joystick minor device class of peripheral */
+       BT_MINOR_DEVICE_CLASS_PERIPHERAL_GAME_PAD = 0x08, /**< Game pad minor device class of peripheral */
+       BT_MINOR_DEVICE_CLASS_PERIPHERAL_REMOTE_CONTROL = 0x0C, /**< Remote control minor device class of peripheral */
+       BT_MINOR_DEVICE_CLASS_PERIPHERAL_SENSING_DEVICE = 0x10, /**< Sensing device minor device class of peripheral */
+       BT_MINOR_DEVICE_CLASS_PERIPHERAL_DIGITIZER_TABLET = 0x14, /**< Digitizer minor device class of peripheral */
+       BT_MINOR_DEVICE_CLASS_PERIPHERAL_CARD_READER = 0x18, /**< Card reader minor device class of peripheral */
+       BT_MINOR_DEVICE_CLASS_PERIPHERAL_DIGITAL_PEN = 0x1C, /**< Digital pen minor device class of peripheral */
+       BT_MINOR_DEVICE_CLASS_PERIPHERAL_HANDHELD_SCANNER = 0x20, /**< Handheld scanner minor device class of peripheral */
+       BT_MINOR_DEVICE_CLASS_PERIPHERAL_HANDHELD_GESTURAL_INPUT_DEVICE = 0x24, /**< Handheld gestural input device minor device class of peripheral */
+
+       BT_MINOR_DEVICE_CLASS_IMAGING_DISPLAY = 0x10, /**< Display minor device class of imaging */
+       BT_MINOR_DEVICE_CLASS_IMAGING_CAMERA = 0x20, /**< Camera minor device class of imaging */
+       BT_MINOR_DEVICE_CLASS_IMAGING_SCANNER = 0x40, /**< Scanner minor device class of imaging */
+       BT_MINOR_DEVICE_CLASS_IMAGING_PRINTER = 0x80, /**< Printer minor device class of imaging */
+
+       BT_MINOR_DEVICE_CLASS_WEARABLE_WRIST_WATCH = 0x04, /**< Wrist watch minor device class of wearable */
+       BT_MINOR_DEVICE_CLASS_WEARABLE_PAGER = 0x08, /**< Pager minor device class of wearable */
+       BT_MINOR_DEVICE_CLASS_WEARABLE_JACKET = 0x0C, /**< Jacket minor device class of wearable */
+       BT_MINOR_DEVICE_CLASS_WEARABLE_HELMET = 0x10, /**< Helmet minor device class of wearable */
+       BT_MINOR_DEVICE_CLASS_WEARABLE_GLASSES = 0x14, /**< Glasses minor device class of wearable */
+
+       BT_MINOR_DEVICE_CLASS_TOY_ROBOT = 0x04, /**< Robot minor device class of toy */
+       BT_MINOR_DEVICE_CLASS_TOY_VEHICLE = 0x08, /**< Vehicle minor device class of toy */
+       BT_MINOR_DEVICE_CLASS_TOY_DOLL_ACTION = 0x0C, /**< Doll/Action minor device class of toy */
+       BT_MINOR_DEVICE_CLASS_TOY_CONTROLLER = 0x10, /**< Controller minor device class of toy */
+       BT_MINOR_DEVICE_CLASS_TOY_GAME = 0x14, /**< Game minor device class of toy */
+
+       BT_MINOR_DEVICE_CLASS_HEALTH_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of health */
+       BT_MINOR_DEVICE_CLASS_HEALTH_BLOOD_PRESSURE_MONITOR = 0x04, /**< Blood pressure monitor minor device class of health */
+       BT_MINOR_DEVICE_CLASS_HEALTH_THERMOMETER = 0x08, /**< Thermometer minor device class of health */
+       BT_MINOR_DEVICE_CLASS_HEALTH_WEIGHING_SCALE = 0x0C, /**< Weighing scale minor device class of health */
+       BT_MINOR_DEVICE_CLASS_HEALTH_GLUCOSE_METER = 0x10, /**< Glucose minor device class of health */
+       BT_MINOR_DEVICE_CLASS_HEALTH_PULSE_OXIMETER = 0x14, /**< Pulse oximeter minor device class of health */
+       BT_MINOR_DEVICE_CLASS_HEALTH_HEART_PULSE_RATE_MONITOR = 0x18, /**< Heart/Pulse rate monitor minor device class of health */
+       BT_MINOR_DEVICE_CLASS_HEALTH_DATA_DISPLAY = 0x1C, /**< Health data display minor device class of health */
+       BT_MINOR_DEVICE_CLASS_HEALTH_STEP_COUNTER = 0x20, /**< Step counter minor device class of health */
+       BT_MINOR_DEVICE_CLASS_HEALTH_BODY_COMPOSITION_ANALYZER = 0x24, /**< Body composition analyzer minor device class of health */
+       BT_MINOR_DEVICE_CLASS_HEALTH_PEAK_FLOW_MONITOR = 0x28, /**< Peak flow monitor minor device class of health */
+       BT_MINOR_DEVICE_CLASS_HEALTH_MEDICATION_MONITOR = 0x2C, /**< Medication monitor minor device class of health */
+       BT_MINOR_DEVICE_CLASS_HEALTH_KNEE_PROSTHESIS = 0x30, /**< Knee prosthesis minor device class of health */
+       BT_MINOR_DEVICE_CLASS_HEALTH_ANKLE_PROSTHESIS = 0x34, /**< Ankle prosthesis minor device class of health */
+} bt_minor_device_class_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Enumerations of gap appearance type.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_APPEARANCE_TYPE_UNKNOWN = 0x00, /**< Unknown appearance type */
+       BT_APPEARANCE_TYPE_GENERIC_PHONE = 0x40, /**< Generic Phone type - Generic category */
+       BT_APPEARANCE_TYPE_GENERIC_COMPUTER = 0x80, /**< Generic Computer type - Generic category */
+       BT_APPEARANCE_TYPE_GENERIC_WATCH = 0xC0, /**< Generic Watch type - Generic category */
+} bt_appearance_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Enumerations of the Bluetooth device's LE connection mode.
+ * @since_tizen 3.0
+ */
+typedef enum {
+       BT_DEVICE_LE_CONNECTION_MODE_BALANCED, /**< Balanced mode of power consumption and connection latency */
+       BT_DEVICE_LE_CONNECTION_MODE_LOW_LATENCY, /**< Low connection latency but high power consumption */
+       BT_DEVICE_LE_CONNECTION_MODE_LOW_ENERGY, /**< Low power consumption but high connection latency */
+} bt_device_le_connection_mode_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief  Enumerations of connected Bluetooth device event role.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_SOCKET_UNKNOWN = 0x00, /**< Unknown role*/
+       BT_SOCKET_SERVER , /**< Server role*/
+       BT_SOCKET_CLIENT, /**< Client role*/
+} bt_socket_role_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief  Enumerations of Bluetooth socket connection state.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_SOCKET_CONNECTED, /**< RFCOMM is connected */
+       BT_SOCKET_DISCONNECTED, /**< RFCOMM is disconnected */
+} bt_socket_connection_state_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
+ * @brief  Enumerations for the types of profiles related with audio
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_AUDIO_PROFILE_TYPE_ALL = 0,  /**< All supported profiles related with audio */
+       BT_AUDIO_PROFILE_TYPE_HSP_HFP,  /**< HSP(Headset Profile) and HFP(Hands-Free Profile) */
+       BT_AUDIO_PROFILE_TYPE_A2DP,  /**< A2DP(Advanced Audio Distribution Profile) */
+       BT_AUDIO_PROFILE_TYPE_AG,  /**< AG(Audio Gateway) */
+       BT_AUDIO_PROFILE_TYPE_A2DP_SINK,  /**< A2DP(Advanced Audio Distribution Profile) Sink role */
+} bt_audio_profile_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Enumerations for the call handling event
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_AG_CALL_HANDLING_EVENT_ANSWER = 0x00,  /**< Request to answer an incoming call */
+       BT_AG_CALL_HANDLING_EVENT_RELEASE,  /**< Request to release a call */
+       BT_AG_CALL_HANDLING_EVENT_REJECT,  /**< Request to reject an incoming call */
+} bt_ag_call_handling_event_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Enumerations for the multi call handling event
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_AG_MULTI_CALL_HANDLING_EVENT_RELEASE_HELD_CALLS = 0x00,  /**< Request to release held calls */
+       BT_AG_MULTI_CALL_HANDLING_EVENT_RELEASE_ACTIVE_CALLS,  /**< Request to release active calls */
+       BT_AG_MULTI_CALL_HANDLING_EVENT_ACTIVATE_HELD_CALL,  /**< Request to put active calls into hold state and activate another (held or waiting) call */
+       BT_AG_MULTI_CALL_HANDLING_EVENT_MERGE_CALLS,  /**< Request to add a held call to the conversation */
+       BT_AG_MULTI_CALL_HANDLING_EVENT_EXPLICIT_CALL_TRANSFER,  /**< Request to let a user who has two calls to connect these two calls together and release its connections to both other parties */
+} bt_ag_multi_call_handling_event_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Enumerations for the equalizer state
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ */
+typedef enum {
+       BT_AVRCP_EQUALIZER_STATE_OFF = 0x01,  /**< Equalizer Off */
+       BT_AVRCP_EQUALIZER_STATE_ON,  /**< Equalizer On */
+} bt_avrcp_equalizer_state_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Enumerations for the repeat mode
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ */
+typedef enum {
+       BT_AVRCP_REPEAT_MODE_OFF = 0x01,  /**< Repeat Off */
+       BT_AVRCP_REPEAT_MODE_SINGLE_TRACK,  /**< Single track repeat */
+       BT_AVRCP_REPEAT_MODE_ALL_TRACK,  /**< All track repeat */
+       BT_AVRCP_REPEAT_MODE_GROUP,  /**< Group repeat */
+} bt_avrcp_repeat_mode_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Enumerations for the shuffle mode
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ */
+typedef enum {
+       BT_AVRCP_SHUFFLE_MODE_OFF = 0x01,  /**< Shuffle Off */
+       BT_AVRCP_SHUFFLE_MODE_ALL_TRACK,  /**< All tracks shuffle */
+       BT_AVRCP_SHUFFLE_MODE_GROUP,  /**< Group shuffle */
+} bt_avrcp_shuffle_mode_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Enumerations for the scan mode
+ * @since_tizen @if WEARABLE 3.0 @else 2.4 @endif
+ */
+typedef enum {
+       BT_AVRCP_SCAN_MODE_OFF = 0x01,  /**< Scan Off */
+       BT_AVRCP_SCAN_MODE_ALL_TRACK,  /**< All tracks scan */
+       BT_AVRCP_SCAN_MODE_GROUP,  /**< Group scan */
+} bt_avrcp_scan_mode_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Enumerations for the player state
+ * @since_tizen 3.0
+ */
+typedef enum {
+       BT_AVRCP_PLAYER_STATE_STOPPED = 0x00,  /**< Stopped */
+       BT_AVRCP_PLAYER_STATE_PLAYING,  /**< Playing */
+       BT_AVRCP_PLAYER_STATE_PAUSED,  /**< Paused */
+       BT_AVRCP_PLAYER_STATE_FORWARD_SEEK,  /**< Seek Forward */
+       BT_AVRCP_PLAYER_STATE_REWIND_SEEK,  /**< Seek Rewind */
+} bt_avrcp_player_state_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Enumeration for the player control commands
+ * @since_tizen 3.0
+ */
+typedef enum {
+       BT_AVRCP_CONTROL_PLAY = 0x01,   /**< Play */
+       BT_AVRCP_CONTROL_PAUSE,   /**< Pause */
+       BT_AVRCP_CONTROL_STOP,   /**< Stop */
+       BT_AVRCP_CONTROL_NEXT,   /**< Next Track*/
+       BT_AVRCP_CONTROL_PREVIOUS,   /**< Previous track */
+       BT_AVRCP_CONTROL_FAST_FORWARD,   /**< Fast Forward */
+       BT_AVRCP_CONTROL_REWIND   /**< Rewind */
+} bt_avrcp_player_command_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief Structure of Track metadata information.
+ * @since_tizen 3.0
+ *
+ * @see #bt_class_s
+ */
+typedef struct {
+       const char *title;   /**< Title */
+       const char *artist;   /**< Artist */
+       const char *album;   /**< Album name */
+       const char *genre;   /**< Album Genre */
+       unsigned int total_tracks;   /**< The total number of tracks */
+       unsigned int number;   /**< Track number */
+       unsigned int duration;   /**< Duration */
+} bt_avrcp_metadata_attributes_info_s;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Called when the connection state is changed.
+ * @since_tizen 3.0
+ * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
+ * @param[in] remote_address  The remote address
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_avrcp_control_initialize()
+ * @see bt_avrcp_control_deinitialize()
+ */
+typedef void (*bt_avrcp_control_connection_state_changed_cb) (bool connected, const char *remote_address, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Called when the Song position mode is changed by the remote target device.
+ * @since_tizen 3.0
+ * @param[in] position Playback position in milliseconds. When position is 0 it means the track is starting and when it's greater than or equal to track's duration the track has ended.
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_avrcp_set_position_changed_cb()
+ * @see bt_avrcp_unset_position_changed_cb()
+ */
+typedef void (*bt_avrcp_position_changed_cb) (unsigned int position, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Called when the Song metadata information is changed by the remote target device.
+ * @since_tizen 3.0
+ * @param[in] track The song metadata information
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_avrcp_set_track_info_changed_cb()
+ * @see bt_avrcp_unset_track_info_changed_cb()
+ */
+typedef void (*bt_avrcp_track_info_changed_cb) (bt_avrcp_metadata_attributes_info_s *track, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Called when the Song Play status mode is changed by the remote target device.
+ * @since_tizen 3.0
+ * @param[in] play_state The song play status
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_avrcp_set_play_status_changed_cb()
+ * @see bt_avrcp_unset_play_status_changed_cb()
+ */
+typedef void (*bt_avrcp_play_status_changed_cb) (bt_avrcp_player_state_e play_state, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
+ * @brief  Enumerations for the data channel type
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_HDP_CHANNEL_TYPE_RELIABLE  = 0x01,  /**< Reliable Data Channel */
+       BT_HDP_CHANNEL_TYPE_STREAMING,  /**< Streaming Data Channel */
+} bt_hdp_channel_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Enumerations of the integer type for GATT handle's value.
+ * @since_tizen 2.3.1
+ */
+typedef enum {
+       BT_DATA_TYPE_SINT8,  /**< 8 bit signed int type */
+       BT_DATA_TYPE_SINT16,  /**< 16 bit signed int type */
+       BT_DATA_TYPE_SINT32,  /**< 32 bit signed int type */
+       BT_DATA_TYPE_UINT8,  /**< 8 bit unsigned int type */
+       BT_DATA_TYPE_UINT16,  /**< 16 bit unsigned int type */
+       BT_DATA_TYPE_UINT32  /**< 32 bit unsigned int type */
+} bt_data_type_int_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Enumerations of the float type for GATT handle's value.
+ * @since_tizen 2.3.1
+ */
+typedef enum {
+       BT_DATA_TYPE_FLOAT,  /**< 32 bit float type */
+       BT_DATA_TYPE_SFLOAT  /**< 16 bit float type */
+} bt_data_type_float_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Enumerations of the write type.
+ * @since_tizen 2.3.1
+ */
+typedef enum {
+       BT_GATT_WRITE_TYPE_WRITE_NO_RESPONSE,  /**< Write without response type */
+       BT_GATT_WRITE_TYPE_WRITE  /**< Write type */
+} bt_gatt_write_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Enumerations of the GATT handle's type.
+ * @since_tizen 2.3.1
+ */
+typedef enum {
+       BT_GATT_TYPE_SERVICE = 0x01,  /**< GATT service type */
+       BT_GATT_TYPE_CHARACTERISTIC = 0x02,  /** GATT characteristic type */
+       BT_GATT_TYPE_DESCRIPTOR = 0x03,  /** GATT descriptor type */
+} bt_gatt_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Enumerations of the service type.
+ * @since_tizen 2.3.1
+ */
+typedef enum {
+       BT_GATT_SERVICE_TYPE_PRIMARY = 0x01,  /**< GATT primary service type */
+       BT_GATT_SERVICE_TYPE_SECONDARY = 0x02,  /**< GATT secondary service type */
+} bt_gatt_service_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Enumerations of the characteristic's property.
+ * @since_tizen 2.3.1
+ */
+typedef enum {
+       BT_GATT_PROPERTY_BROADCAST = 0x01,  /**< Broadcast property */
+       BT_GATT_PROPERTY_READ = 0x02,  /**< Read property */
+       BT_GATT_PROPERTY_WRITE_WITHOUT_RESPONSE = 0x04,  /**< Write without response property */
+       BT_GATT_PROPERTY_WRITE = 0x08,  /**< Write property */
+       BT_GATT_PROPERTY_NOTIFY = 0x10,  /**< Notify property */
+       BT_GATT_PROPERTY_INDICATE = 0x20,  /**< Indicate property */
+       BT_GATT_PROPERTY_AUTHENTICATED_SIGNED_WRITES = 0x40,  /**< Authenticated signed writes property */
+       BT_GATT_PROPERTY_EXTENDED_PROPERTIES = 0x80,  /**< Extended properties */
+} bt_gatt_property_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Enumerations of gatt server's service changing mode.
+ * @since_tizen 3.0
+ */
+typedef enum {
+       BT_GATT_CLIENT_SERVICE_ADDED,   /**< Service added */
+       BT_GATT_CLIENT_SERVICE_REMOVED, /**< Service removed */
+} bt_gatt_client_service_change_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Enumerations of the attribute's permission.
+ * @since_tizen 3.0
+ */
+typedef enum {
+       BT_GATT_PERMISSION_READ = 0x01,   /**< Readable permission */
+       BT_GATT_PERMISSION_WRITE = 0x02, /**< Writable permission */
+       BT_GATT_PERMISSION_ENCRYPT_READ = 0x04,  /**< Readable permission required encryption */
+       BT_GATT_PERMISSION_ENCRYPT_WRITE = 0x08,  /**< Writable permission required encryption */
+       BT_GATT_PERMISSION_ENCRYPT_AUTHENTICATED_READ = 0x10,    /**< Readable permission required encryption and authentication */
+       BT_GATT_PERMISSION_ENCRYPT_AUTHENTICATED_WRITE = 0x20,  /**< Writable permission required encryption and authentication */
+} bt_gatt_permission_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Enumerations of the remote device request types for attributes
+ * @since_tizen 3.0
+ */
+typedef enum {
+       BT_GATT_REQUEST_TYPE_READ = 0x00, /* Read Requested */
+       BT_GATT_REQUEST_TYPE_WRITE = 0x01, /* Write Requested */
+} bt_gatt_att_request_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
+ * @brief  Enumerations for the types of PAN(Personal Area Networking) service.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_PANU_SERVICE_TYPE_NAP = 0,  /**< Network Access Point */
+} bt_panu_service_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief The handle to control Bluetooth LE advertising.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef void *bt_advertiser_h;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief  Enumeration of address book location for PBAP.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ */
+typedef enum {
+       BT_PBAP_SOURCE_DEVICE = 0x00, /**< Request for Addressbook from remote device */
+       BT_PBAP_SOURCE_SIM , /**< Request for address book from SIM */
+} bt_pbap_address_book_source_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief  Enumeration of folder type.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ */
+typedef enum {
+       BT_PBAP_FOLDER_PHONE_BOOK = 0x00, /**< Request for address book */
+       BT_PBAP_FOLDER_INCOMING , /**< Request for incoming calls */
+       BT_PBAP_FOLDER_OUTGOING , /**< Request for outgoing calls */
+       BT_PBAP_FOLDER_MISSED , /**< Request for missed calls */
+       BT_PBAP_FOLDER_COMBINED , /**< Request for combined calls */
+} bt_pbap_folder_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief  Enumeration of phone book search fields.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ */
+typedef enum {
+       BT_PBAP_SEARCH_NAME = 0x00, /**< Request for search by name (default) */
+       BT_PBAP_SEARCH_NUMBER, /**< Request for search by phone number */
+       BT_PBAP_SEARCH_SOUND, /**< Request for search by sound */
+} bt_pbap_search_field_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief  Enumeration of vCard Formats.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ */
+typedef enum {
+       BT_PBAP_VCARD_FORMAT_VCARD21 = 0x00, /**< vCard format 2.1 (default) */
+       BT_PBAP_VCARD_FORMAT_VCARD30, /**< vCard format 3.0 */
+} bt_pbap_vcard_format_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief  Enumeration of sorting orders.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ */
+typedef enum {
+       BT_PBAP_ORDER_INDEXED = 0x00, /**< Filter order indexed (default) */
+       BT_PBAP_ORDER_ALPHANUMERIC, /**< Filter order alphanumeric */
+       BT_PBAP_ORDER_PHONETIC, /**< Filter order phonetic */
+} bt_pbap_sort_order_e;
+
+/**
+ * @deprecated Deprecated since 2.3.1. Use bt_gatt_h instead.
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  The attribute handle of GATT(Generic Attribute Profile).
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ */
+typedef void *bt_gatt_attribute_h;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief The handle of a service, characteristic or descriptor.
+ * @since_tizen 2.3.1
+ */
+typedef void *bt_gatt_h;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief The handle of a GATT client which is associated with a remote device.
+ * @since_tizen 2.3.1
+ */
+typedef void *bt_gatt_client_h;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief The handle of a GATT server.
+ * @since_tizen 3.0
+ */
+typedef void *bt_gatt_server_h;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  The handle of calls state.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef void *bt_call_list_h;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Class structure of device and service.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @see #bt_device_info_s
+ * @see #bt_adapter_device_discovery_info_s
+ * @see bt_device_bond_created_cb()
+ * @see bt_adapter_device_discovery_state_changed_cb()
+ */
+typedef struct {
+       bt_major_device_class_e major_device_class;     /**< Major device class. */
+       bt_minor_device_class_e minor_device_class;     /**< Minor device class. */
+       int major_service_class_mask;   /**< Major service class mask.
+       This value can be a combination of #bt_major_service_class_e like #BT_MAJOR_SERVICE_CLASS_RENDERING | #BT_MAJOR_SERVICE_CLASS_AUDIO */
+} bt_class_s;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Structure of device discovery information.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @see #bt_class_s
+ * @see bt_adapter_device_discovery_state_changed_cb()
+ */
+typedef struct {
+       char *remote_address;   /**< The address of remote device */
+       char *remote_name;      /**< The name of remote device */
+       bt_class_s bt_class;    /**< The Bluetooth classes */
+       int rssi;       /**< The strength indicator of received signal  */
+       bool is_bonded; /**< The bonding state */
+       char **service_uuid;  /**< The UUID list of service */
+       int service_count;      /**< The number of services */
+       bt_appearance_type_e appearance;        /**< The Bluetooth appearance */
+       int manufacturer_data_len;      /**< manufacturer specific data length */
+       char *manufacturer_data;                /**< manufacturer specific data */
+} bt_adapter_device_discovery_info_s;
+
+/**
+ * @deprecated Deprecated since 2.3.1
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Structure of le device discovery information.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ *
+ * @see #bt_class_s
+ * @see bt_adapter_le_device_discovery_state_changed_cb()
+ */
+typedef struct {
+       char *remote_address;   /**< The address of remote device */
+       int address_type;       /**< The address type of remote device */
+       int rssi;       /**< The strength indicator of received signal  */
+       int adv_data_len;               /**< advertising indication data length */
+       char *adv_data;                 /**< advertising indication data */
+       int scan_data_len;              /**< scan response data length */
+       char *scan_data;                /**< scan response data */
+} bt_adapter_le_device_discovery_info_s;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Structure of le scan result information.
+ * @since_tizen 2.3.1
+ *
+ * @see bt_adapter_le_start_scan()
+ */
+typedef struct {
+       char *remote_address;   /**< The address of remote device */
+       bt_device_address_type_e address_type;  /**< The address type of remote device */
+       int rssi;               /**< The strength indicator of received signal  */
+       int adv_data_len;       /**< advertising indication data length */
+       char *adv_data;         /**< advertising indication data */
+       int scan_data_len;      /**< scan response data length */
+       char *scan_data;        /**< scan response data */
+} bt_adapter_le_device_scan_result_info_s;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief The structure for LE iBeacon scan result information.
+ * @since_tizen 4.0
+ *
+ * @see bt_adapter_le_start_scan()
+ */
+typedef struct {
+       int company_id;         /**< Company ID */
+       int ibeacon_type;       /**< iBeacon type */
+       char *uuid;                     /**< UUID */
+       int major_id;           /**< Major ID */
+       int minor_id;           /**< Minor ID */
+       int measured_power;     /**< Measured power */
+} bt_adapter_le_ibeacon_scan_result_info_s;
+
+/**
+ * @deprecated Deprecated since 2.3.1
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Structure of advertising parameters.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ *
+ * @see bt_adapter_le_advertising_state_changed_cb()
+ * @see bt_adapter_le_start_advertising()
+ */
+typedef struct {
+       float interval_min; /**< Minimum advertising interval for non-directed advertising.
+                             A multiple of 0.625ms is only allowed (Time range : 20ms to 10.24sec). */
+       float interval_max; /**< Maximum advertising interval for non-directed advertising.
+                             A multiple of 0.625ms is only allowed (Time range : 20ms to 10.24sec). */
+       char filter_policy; /* Advertising filter policy */
+       char type; /* Advertising type */
+} bt_adapter_le_advertising_params_s;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief LE service data structure.
+ * @since_tizen 2.3.1
+ *
+ * @see bt_adapter_le_get_scan_result_service_data()
+ */
+typedef struct {
+       char *service_uuid;     /**< 16 bit UUID of the service data */
+       char *service_data;     /**< Service data */
+       int service_data_len;   /**< Service data length */
+} bt_adapter_le_service_data_s;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_IPSP_MODULE
+ * @brief Called when the IPSP initialization state changes.
+ * @since_tizen 4.0
+ * @param[in] result The result of the initialization or deinitialization request
+ * @param[in] ipsp_initialized The initialized state: (@c true = initialized, @c false = deinitialized)
+ * @param[in] user_data The user data passed from the initialization request function
+ * @see bt_ipsp_initialize()
+ * @see bt_ipsp_deinitialize()
+ */
+typedef void (*bt_ipsp_init_state_changed_cb)
+               (int result, bool ipsp_initialized, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_IPSP_MODULE
+ * @brief Called when the IPSP connection state changes.
+ * @since_tizen 4.0
+ * @param[in] result The result of the connection or disconnection request
+ * @param[in] connected The connection status: (@c true = connected, @c false = disconnected)
+ * @param[in] remote_address  Address of remote device
+ * @param[in] iface_name The network interface name for IPv6 network interface
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_ipsp_connect()
+ * @see bt_ipsp_disconnect()
+ */
+typedef void (*bt_ipsp_connection_state_changed_cb)
+               (int result, bool connected, const char *remote_address, const char *iface_name, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Device information structure used for identifying pear device.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @see #bt_class_s
+ * @see bt_device_bond_created_cb()
+ */
+typedef struct {
+       char *remote_address;   /**< The address of remote device */
+       char *remote_name;      /**< The name of remote device */
+       bt_class_s bt_class;    /**< The Bluetooth classes */
+       char **service_uuid;  /**< The UUID list of service */
+       int service_count;      /**< The number of services */
+       bool is_bonded; /**< The bonding state */
+       bool is_connected;      /**< The connection state */
+       bool is_authorized;     /**< The authorization state */
+       int manufacturer_data_len;      /**< manufacturer specific data length */
+       char *manufacturer_data;                /**< manufacturer specific data */
+} bt_device_info_s;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Service Discovery Protocol (SDP) data structure.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @details This protocol is used for discovering available services or pear device,
+ * and finding one to connect with.
+ *
+ * @see bt_device_service_searched_cb()
+ */
+typedef struct {
+       char *remote_address;   /**< The address of remote device */
+       char **service_uuid;  /**< The UUID list of service */
+       int service_count;    /**< The number of services. */
+} bt_device_sdp_info_s;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Device connection information structure.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @see bt_device_connection_state_changed_cb()
+ */
+typedef struct {
+       char *remote_address;   /**< The address of remote device */
+       bt_device_connection_link_type_e link;  /**< Link type */
+       bt_device_disconnect_reason_e disconn_reason;  /**< Disconnection reason */
+} bt_device_connection_info_s;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief Rfcomm connection data used for exchanging data between Bluetooth devices.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @see bt_socket_connection_state_changed_cb()
+ */
+typedef struct {
+       int socket_fd;  /**< The file descriptor of connected socket */
+       int server_fd;  /**< The file descriptor of the server socket or -1 for client connection */
+       bt_socket_role_e local_role;    /**< The local device role in this connection */
+       char *remote_address;   /**< The remote device address */
+       char *service_uuid;     /**< The service UUId */
+} bt_socket_connection_s;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief Structure of RFCOMM received data.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @remarks User can use standard linux functions for reading/writing
+ * data from/to sockets.
+ *
+ * @see bt_socket_data_received_cb()
+ */
+typedef struct {
+       int socket_fd;  /**< The socket fd */
+       int data_size;  /**< The length of the received data */
+       char *data;     /**< The received data */
+} bt_socket_received_data_s;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Called when the Bluetooth adapter state changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in]   result  The result of the adapter state changing
+ * @param[in]   adapter_state  The adapter state to be changed
+ * @param[in]   user_data  The user data passed from the callback registration function
+ * @see bt_adapter_set_state_changed_cb()
+ * @see bt_adapter_unset_state_changed_cb()
+ */
+typedef void (*bt_adapter_state_changed_cb)(int result, bt_adapter_state_e adapter_state, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Called when adapter name changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in]   device_name    The name of the Bluetooth device to be changed
+ * @param[in]   user_data      The user data passed from the callback registration function
+ * @pre This function will be invoked when the name of Bluetooth adapter changes
+ * if you register this callback using bt_adapter_set_name_changed_cb().
+ * @see bt_adapter_set_name()
+ * @see bt_adapter_set_name_changed_cb()
+ * @see bt_adapter_unset_name_changed_cb()
+ */
+typedef void (*bt_adapter_name_changed_cb)(char *device_name, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Called when the visibility mode changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] result The result of the visibility mode changing
+ * @param[in] visibility_mode The visibility mode to be changed
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @pre This function will be invoked when the visibility of Bluetooth adapter changes
+ * if you register this callback using bt_adapter_set_visibility_mode_changed_cb().
+ *
+ * @see bt_adapter_set_visibility_mode_changed_cb()
+ * @see bt_adapter_unset_visibility_mode_changed_cb()
+ */
+typedef void (*bt_adapter_visibility_mode_changed_cb)
+       (int result, bt_adapter_visibility_mode_e visibility_mode, void *user_data);
+
+/**
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Called every second until the visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @remarks  This callback function is called only if visibility mode is #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE.
+ * @param[in]  duration  The duration until the visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE (in seconds)
+ * @param[in]  user_data  The user data passed from the callback registration function
+ * @pre  This function will be invoked if you register this callback using bt_adapter_set_visibility_duration_changed_cb().
+ * @see  bt_adapter_set_visibility_duration_changed_cb()
+ * @see  bt_adapter_unset_visibility_duration_changed_cb()
+ */
+typedef void (*bt_adapter_visibility_duration_changed_cb)(int duration, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Called when the state of device discovery changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @remarks If \a discovery_state is #BT_ADAPTER_DEVICE_DISCOVERY_FOUND,
+ * then you can get some information, such as remote device address, remote device name, rssi, and bonding state.
+ *
+ * @param[in] result The result of the device discovery
+ * @param[in] discovery_state The discovery state to be changed
+ * @param[in] discovery_info The information of the discovered device \n
+ *                                     If \a discovery_state is #BT_ADAPTER_DEVICE_DISCOVERY_STARTED or
+ * #BT_ADAPTER_DEVICE_DISCOVERY_FINISHED, then \a discovery_info is NULL.
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @pre Either bt_adapter_start_device_discovery() or bt_adapter_stop_device_discovery() will invoke this function
+ * if you register this callback using bt_adapter_set_device_discovery_state_changed_cb().
+ *
+ * @see bt_adapter_start_device_discovery()
+ * @see bt_adapter_stop_device_discovery()
+ * @see bt_adapter_set_device_discovery_state_changed_cb()
+ * @see bt_adapter_unset_device_discovery_state_changed_cb()
+ *
+ */
+typedef void (*bt_adapter_device_discovery_state_changed_cb)
+       (int result, bt_adapter_device_discovery_state_e discovery_state, bt_adapter_device_discovery_info_s *discovery_info, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Called when you get bonded devices repeatedly.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] device_info The bonded device information
+ * @param[in] user_data The user data passed from the foreach function
+ * @return @c true to continue with the next iteration of the loop,
+ * \n @c false to break out of the loop.
+ * @pre bt_adapter_foreach_bonded_device() will invoke this function.
+ *
+ * @see bt_adapter_foreach_bonded_device()
+ *
+ */
+typedef bool (*bt_adapter_bonded_device_cb)(bt_device_info_s *device_info, void *user_data);
+
+/**
+ * @deprecated Deprecated since 2.3.1
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief  Called when the state of LE device discovery changes.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ *
+ * @remarks If \a discovery_state is #BT_ADAPTER_LE_DEVICE_DISCOVERY_FOUND,
+ * then you can get some information, such as remote LE device address, remote device name, rssi, and bonding state.
+ *
+ * @param[in] result The result of the LE device discovery
+ * @param[in] discovery_state The discovery state to be changed
+ * @param[in] discovery_info The information of the discovered LE device \n
+ *                                     If \a discovery_state is #BT_ADAPTER_LE_DEVICE_DISCOVERY_STARTED or
+ * #BT_ADAPTER_LE_DEVICE_DISCOVERY_FINISHED, then \a discovery_info is NULL.
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @pre Either bt_adapter_start_device_discovery() or bt_adapter_stop_device_discovery() will invoke this function
+ * if you register this callback using bt_adapter_set_device_discovery_state_changed_cb().
+ *
+ * @see bt_adapter_le_start_device_discovery()
+ * @see bt_adapter_le_stop_device_discovery()
+ * @see bt_adapter_le_set_device_discovery_state_changed_cb()
+ * @see bt_adapter_le_unset_device_discovery_state_changed_cb()
+ *
+ */
+typedef void (*bt_adapter_le_device_discovery_state_changed_cb)
+       (int result, bt_adapter_le_device_discovery_state_e discovery_state, bt_adapter_le_device_discovery_info_s *discovery_info, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief  Called when the LE advertisement has been found.
+ * @since_tizen 2.3.1
+ *
+ * @param[in] result The result of the LE scan
+ * @param[in] info The information of the found LE advertisement.
+ * @param[in] user_data The user data passed from the start function
+ *
+ * @see bt_adapter_le_start_scan()
+ *
+ */
+typedef void (*bt_adapter_le_scan_result_cb)(int result,
+               bt_adapter_le_device_scan_result_info_s *info, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief  Called when the state of advertiser changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[out] result The result of the requested state change of advertiser
+ * @param[out] advertiser The handle of the state changed advertiser
+ * @param[out] adv_state The advertiser state to be changed
+ * @param[out] user_data The user data passed from the start function
+ *
+ * @see bt_adapter_le_start_advertising_new()
+ * @see bt_adapter_le_stop_advertising()
+ */
+typedef void (*bt_adapter_le_advertising_state_changed_cb)(int result,
+               bt_advertiser_h advertiser, bt_adapter_le_advertising_state_e adv_state, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Called when the process of creating bond finishes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @remarks If the remote user does not respond within 60 seconds, a time out will happen with #BT_ERROR_TIMED_OUT result code.\n
+ * If bt_device_cancel_bonding() is called and it returns #BT_ERROR_NONE, then this callback function will be called
+ * with #BT_ERROR_CANCELLED result. \n
+ * If creating a bond succeeds but service search fails, then this callback will be called with #BT_ERROR_SERVICE_SEARCH_FAILED.
+ * In this case, you should try service search again by bt_device_start_service_search() to get the supported service list.
+ *
+ * @param[in] result The result of the bonding device
+ * @param[in] device_info The device information which you creates bond with
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @pre Either bt_device_create_bond() will invoke this function
+ * if you register this callback using bt_device_set_bond_created_cb().
+ *
+ * @see bt_device_create_bond()
+ * @see bt_device_cancel_bonding()
+ * @see bt_device_set_bond_created_cb()
+ * @see bt_device_unset_bond_created_cb()
+ */
+typedef void (*bt_device_bond_created_cb)(int result, bt_device_info_s *device_info, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Called when you get connected profiles repeatedly.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] profile The connected Bluetooth profile
+ * @param[in] user_data The user data passed from the foreach function
+ * @return @c true to continue with the next iteration of the loop,
+ * \n @c false to break out of the loop.
+ * @pre bt_device_foreach_connected_profiles() will invoke this function.
+ * @see bt_device_foreach_connected_profiles()
+ */
+typedef bool (*bt_device_connected_profile)(bt_profile_e profile, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Called when the bond destroys.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] result The result that a bond is destroyed
+ * @param[in] remote_address The address of the remote Bluetooth device to destroy bond with
+ * @param[in] user_data The user data passed from the callback registration function
+ * @pre bt_device_destroy_bond() will invoke this function
+ * if you register this callback using bt_device_set_bond_destroyed_cb().
+ *
+ * @see bt_device_destroy_bond()
+ * @see bt_device_set_bond_destroyed_cb()
+ * @see bt_device_unset_bond_destroyed_cb()
+ */
+typedef void (*bt_device_bond_destroyed_cb)(int result, char *remote_address, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Called when the authorization of device changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] authorization The authorization of device
+ * @param[in] remote_address The address of the remote Bluetooth device which is (un)authorized
+ * @param[in] user_data The user data passed from the callback registration function
+ * @pre bt_device_set_authorization() will invoke this function if you register this callback using bt_device_set_authorization_changed_cb().
+ *
+ * @see bt_device_set_authorization()
+ * @see #bt_device_set_authorization_changed_cb()
+ * @see #bt_device_unset_authorization_changed_cb()
+ */
+typedef void (*bt_device_authorization_changed_cb)
+       (bt_device_authorization_e authorization, char *remote_address, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Called when the process of service search finishes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @remark
+ *
+ * @param[in] result The result of the service searching
+ * @param[in] sdp_info The structure of service lists found on a device
+ * @param[in] user_data The user data passed from the callback registration function
+ * @pre Either bt_device_start_service_search() will invoke this function
+ * if you register this callback using  bt_device_set_service_searched_cb().
+ *
+ * @see bt_device_start_service_search()
+ * @see bt_device_set_service_searched_cb()
+ * @see bt_device_unset_service_searched_cb()
+ *
+ */
+typedef void (*bt_device_service_searched_cb)(int result, bt_device_sdp_info_s *sdp_info, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Called when the connection state is changed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] connected The connection status: (@c true = connected, @c false = disconnected)
+ * @param[in] conn_info The connection information
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_device_set_connection_state_changed_cb()
+ * @see bt_device_unset_connection_state_changed_cb()
+ */
+typedef void (*bt_device_connection_state_changed_cb)(bool connected, bt_device_connection_info_s *conn_info, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief Called when you receive data.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] data The received data from the remote device
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @pre When the connected remote Bluetooth device invokes bt_socket_send_data(),
+ *             this function will be invoked if you register this function using bt_socket_set_data_received_cb().
+ *
+ * @see bt_socket_set_data_received_cb()
+ * @see bt_socket_unset_data_received_cb()
+ * @see bt_socket_send_data()
+ */
+typedef void (*bt_socket_data_received_cb)(bt_socket_received_data_s *data, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief  Called when the socket connection state changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] result The result of connection state changing
+ * @param[in] connection_state The connection state
+ * @param[in] connection The connection information which is established or disconnected
+ * @param[in] user_data The user data passed from the callback registration function
+ * @pre Either bt_socket_connect_rfcomm() will invoke this function.
+ * In addition, bt_socket_connection_state_changed_cb() will be invoked when the socket connection state is changed.
+ * @see bt_socket_listen_and_accept_rfcomm()
+ * @see bt_socket_connect_rfcomm()
+ * @see bt_socket_set_connection_state_changed_cb()
+ * @see bt_socket_unset_connection_state_changed_cb()
+ */
+typedef void (*bt_socket_connection_state_changed_cb)
+       (int result, bt_socket_connection_state_e connection_state, bt_socket_connection_s *connection, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
+ * @brief  Called when a RFCOMM connection is requested.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] socket_fd  The file descriptor of socket on which a connection is requested
+ * @param[in] remote_address  The address of remote device
+ * @param[in] user_data The user data passed from the callback registration function
+ * @pre If you register this callback function by bt_socket_set_connection_requested_cb(),
+ * bt_socket_connection_requested_cb() will be invoked.
+ */
+typedef void (*bt_socket_connection_requested_cb) (int socket_fd, const char *remote_address, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
+ * @brief  Called when an OPP connection is requested.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @details You must call bt_opp_server_accept_connection() if you want to accept.
+ * Otherwise, you must call bt_opp_server_reject_connection().
+ * @param[in] remote_address  The address of remote device
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_opp_server_accept()
+ * @see bt_opp_server_reject()
+ */
+typedef void (*bt_opp_server_connection_requested_cb)(const char *remote_address, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
+ * @brief  Called when a file is being transferred.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] file  The path of file to be pushed
+ * @param[in] size The file size (bytes)
+ * @param[in] percent The progress in percentage (1 ~ 100)
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_opp_server_accept()
+ * @see bt_opp_server_accept_connection()
+ */
+typedef void (*bt_opp_server_transfer_progress_cb) (const char *file, long long size, int percent, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
+ * @brief  Called when a transfer is finished.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] error_code  The result of push
+ * @param[in] file  The path of file to be pushed
+ * @param[in] size The file size (bytes)
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_opp_server_accept()
+ * @see bt_opp_server_accept_connection()
+ */
+typedef void (*bt_opp_server_transfer_finished_cb) (int result, const char *file, long long size, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
+ * @brief  Called when OPP server responds to the push request.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] result  The result of OPP server response
+ * @param[in] remote_address  The remote address
+ * @param[in] user_data  The user data passed from the callback registration function
+ * @pre bt_opp_client_push_files() will invoke this function.
+ * @see bt_opp_client_push_files()
+ */
+typedef void (*bt_opp_client_push_responded_cb)(int result, const char *remote_address, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
+ * @brief  Called when each file is being transferred.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] file  The path of file to be pushed
+ * @param[in] size The file size (bytes)
+ * @param[in] percent The progress in percentage (1 ~ 100). 100 means that a file is transferred completely.
+ * @param[in] user_data The user data passed from the callback registration function
+ * @pre bt_opp_client_push_files() will invoke this function.
+ * @see bt_opp_client_push_files()
+ */
+typedef void (*bt_opp_client_push_progress_cb)(const char *file, long long size, int percent, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
+ * @brief  Called when the push request is finished.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] result  The result of the push request
+ * @param[in] remote_address  The remote address
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_opp_client_push_files()
+ */
+typedef void (*bt_opp_client_push_finished_cb)(int result, const char *remote_address, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
+ * @brief  Called when the connection state is changed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @details  This callback is called when the connection state is changed.
+ * When you call bt_audio_connect() or bt_audio_disconnect(), this callback is also called with error result even though these functions fail.
+ * @param[in] result  The result of changing the connection state
+ * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
+ * @param[in] remote_address  The remote address
+ * @param[in] type  The type of audio profile except #BT_AUDIO_PROFILE_TYPE_ALL
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_audio_set_connection_state_changed_cb()
+ * @see bt_audio_unset_connection_state_changed_cb()
+ */
+typedef void (*bt_audio_connection_state_changed_cb) (int result, bool connected, const char *remote_address, bt_audio_profile_type_e type, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Called when a call handling event happened from Hands-Free.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] event  The call handling event happened from Hands-Free
+ * @param[in] call_id  The call ID
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_ag_set_call_handling_event_cb()
+ * @see bt_ag_unset_call_handling_event_cb()
+ */
+typedef void (*bt_ag_call_handling_event_cb) (bt_ag_call_handling_event_e event, unsigned int call_id, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Called when a multi call handling event happened from Hands-Free.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] event  The call handling event happened from Hands-Free
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_ag_set_multi_call_handling_event_cb()
+ * @see bt_ag_unset_multi_call_handling_event_cb()
+ */
+typedef void (*bt_ag_multi_call_handling_event_cb) (bt_ag_multi_call_handling_event_e event, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Called when a DTMF(Dual Tone Multi Frequency) is transmitted from Hands-Free.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] dtmf  The DTMF transmitted from Hands-Free
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_ag_set_dtmf_transmitted_cb()
+ * @see bt_ag_unset_dtmf_transmitted_cb()
+ */
+typedef void (*bt_ag_dtmf_transmitted_cb) (const char *dtmf, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Called when the speaker gain of the remote device is changed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] gain The gain of speaker (0 ~ 15)
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_ag_set_speaker_gain_changed_cb()
+ * @see bt_ag_unset_speaker_gain_changed_cb()
+ */
+typedef void (*bt_ag_speaker_gain_changed_cb) (int gain, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Called when the microphone gain of the remote device is changed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] gain The gain of microphone (0 ~ 15)
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_ag_set_microphone_gain_changed_cb()
+ * @see bt_ag_unset_microphone_gain_changed_cb()
+ */
+typedef void (*bt_ag_microphone_gain_changed_cb) (int gain, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Called when the connection state is changed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
+ * @param[in] remote_address  The remote address
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_avrcp_target_initialize()
+ * @see bt_avrcp_target_deinitialize()
+ */
+typedef void (*bt_avrcp_target_connection_state_changed_cb) (bool connected, const char *remote_address, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Called when the equalizer state is changed by the remote control device.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] equalizer The equalizer state
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_avrcp_set_equalizer_state_changed_cb()
+ * @see bt_avrcp_unset_equalizer_state_changed_cb()
+ */
+typedef void (*bt_avrcp_equalizer_state_changed_cb) (bt_avrcp_equalizer_state_e equalizer, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Called when the repeat mode is changed by the remote control device.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] repeat The repeat mode
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_avrcp_set_repeat_mode_changed_cb()
+ * @see bt_avrcp_unset_repeat_mode_changed_cb()
+ */
+typedef void (*bt_avrcp_repeat_mode_changed_cb) (bt_avrcp_repeat_mode_e repeat, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Called when the shuffle mode is changed by the remote control device.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] shuffle The shuffle mode
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_avrcp_set_shuffle_mode_changed_cb()
+ * @see bt_avrcp_unset_shuffle_mode_changed_cb()
+ */
+typedef void (*bt_avrcp_shuffle_mode_changed_cb) (bt_avrcp_shuffle_mode_e shuffle, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
+ * @brief  Called when the scan mode is changed by the remote control device.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] shuffle The shuffle mode
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_avrcp_set_scan_mode_changed_cb()
+ * @see bt_avrcp_unset_scan_mode_changed_cb()
+ */
+typedef void (*bt_avrcp_scan_mode_changed_cb) (bt_avrcp_scan_mode_e scan, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
+ * @brief  Called when the connection state is changed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @details  This callback is called when the connection state is changed.
+ * When you call bt_hid_host_connect() or bt_hid_host_disconnect(), this callback is also called with error result even though these functions fail.
+ * @param[in] result  The result of changing the connection state
+ * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
+ * @param[in] remote_address  The remote address
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_hid_host_connect()
+ * @see bt_hid_host_disconnect()
+ */
+typedef void (*bt_hid_host_connection_state_changed_cb) (int result, bool connected, const char *remote_address, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
+ * @brief  Called when the connection is established.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] result  The result of connecting to the remote device
+ * @param[in] remote_address  The address of connected remote device
+ * @param[in] app_id  The ID of application
+ * @param[in] type  The type of HDP(Health Device Profile) channel
+ * @param[in] channel  The connected data channel
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see  bt_hdp_disconnected_cb
+ * @see bt_hdp_set_connection_state_changed_cb()
+ * @see bt_hdp_unset_connection_state_changed_cb()
+ */
+typedef void (*bt_hdp_connected_cb) (int result, const char *remote_address, const char *app_id,
+       bt_hdp_channel_type_e type, unsigned int channel, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
+ * @brief  Called when the connection is disconnected.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] result  The result of disconnecting from the remote device
+ * @param[in] remote_address  The address of disconnected remote device
+ * @param[in] channel  The connected data channel
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see  bt_hdp_connected_cb
+ * @see bt_hdp_set_connection_state_changed_cb()
+ * @see bt_hdp_unset_connection_state_changed_cb()
+ */
+typedef void (*bt_hdp_disconnected_cb) (int result, const char *remote_address, unsigned int channel, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
+ * @brief  Called when the you receive the data.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] channel  The connected data channel
+ * @param[in] data  The received data
+ * @param[in] size  The size of received data (byte)
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_hdp_set_data_received_cb()
+ * @see bt_hdp_unset_data_received_cb()
+ */
+typedef void (*bt_hdp_data_received_cb) (unsigned int channel, const char *data, unsigned int size, void *user_data);
+
+/**
+ * @deprecated Deprecated since 2.3.1. Use bt_gatt_foreach_cb instead.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Called when you get the primary services repeatedly.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ *
+ * @param[in]  service  The attribute handle of service
+ * @param[in]  user_data  The user data passed from the foreach function
+ * @return  @c true to continue with the next iteration of the loop,
+ * \n @c false to break out of the loop.
+ * @pre  bt_gatt_foreach_primary_services() will invoke this function.
+ * @see  bt_gatt_foreach_primary_services()
+ */
+typedef bool (*bt_gatt_primary_service_cb) (bt_gatt_attribute_h service, void *user_data);
+
+/**
+ * @deprecated Deprecated since 2.3.1. This is not required because characteristic discovery is happened automatically.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Called after the characteristics are discovered by bt_gatt_discover_characteristics().
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ *
+ * @remarks  If bt_gatt_discover_characteristics() failed, then this callback function is called only once with 0 total and NULL characteristic_handle.
+ * @param[in]  result  The result of discovering
+ * @param[in]  index  The index of characteristics in a service, starts from 0
+ * @param[in]  total  The total number of characteristics in a service
+ * @param[in]  characteristic  The attribute handle of characteristic
+ * @param[in]  user_data  The user data passed from the request function
+ * @return  @c true to continue with the next iteration of the loop,
+ * \n @c false to break out of the loop.
+ * @pre  bt_gatt_discover_characteristics() will invoke this callback.
+ * @see  bt_gatt_discover_characteristics()
+ */
+typedef bool (*bt_gatt_characteristics_discovered_cb) (int result, int index, int total, bt_gatt_attribute_h characteristic, void *user_data);
+
+/**
+ * @deprecated Deprecated since 2.3.1. Use bt_gatt_foreach_cb instead.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Called when you get the included services repeatedly.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ *
+ * @param[in]  service  The attribute handle of service
+ * @param[in]  user_data  The user data passed from the foreach function
+ * @return  @c true to continue with the next iteration of the loop,
+ * \n @c false to break out of the loop.
+ * @pre  bt_gatt_foreach_included_services() will invoke this function.
+ * @see  bt_gatt_foreach_included_services()
+ */
+typedef bool (*bt_gatt_included_service_cb) (bt_gatt_attribute_h service, void *user_data);
+
+/**
+ * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_characteristic_value_changed_cb instead.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Called when a characteristic in service is changed.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ *
+ * @param[in]  characteristic  The attribute handle of characteristic
+ * @param[in]  value  The value of characteristic (byte array)
+ * @param[in]  value_length  The length of value
+ * @param[in]  user_data  The user data passed from the callback registration function
+ * @see bt_gatt_set_characteristic_changed_cb()
+ * @see bt_gatt_unset_characteristic_changed_cb()
+ */
+typedef void (*bt_gatt_characteristic_changed_cb) (bt_gatt_attribute_h characteristic, unsigned char *value, int value_length, void *user_data);
+
+/**
+ * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_request_completed_cb instead.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Called when a characteristic value is written.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ *
+ * @see bt_gatt_set_characteristic_value()
+ */
+typedef void (*bt_gatt_characteristic_write_cb) (void *user_data);
+
+/**
+ * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_request_completed_cb instead.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Called when a characteristic value is read.
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ *
+ * @param[in]  value  The value of characteristic (byte array)
+ * @param[in]  value_length  The length of value
+ * @param[in]  user_data  The user data passed from the foreach function
+ * @see bt_gatt_read_characteristic_value()
+ */
+typedef void (*bt_gatt_characteristic_read_cb) (unsigned char *value,
+                       int value_length, void *user_data);
+
+/**
+ * @deprecated Deprecated since 2.3.1. This is not required because descriptor discovery is happened automatically.
+ * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Called after the characteristics descriptors are discovered by bt_gatt_discover_characteristic_descriptor().
+ * @since_tizen @if WEARABLE @else 2.3 @endif
+ *
+ * @param[in]  result  The result of discovering
+ * @param[in]  characteristic_format  The format of the information data.
+ *                        characteristic_format = 0x01 indicates UUIDs are 16-bits
+ *                        characteristic_format = 0x02 indicates UUIDs are 128-bits
+ * @param[in]  total  The total number of elements in characteristic_descriptor
+ * @param[in]  characteristic descriptor  The attribute handle and the UUID of characteristic descriptor
+ * @param[in]  user_data  The user data passed from the request function
+ * @see  bt_gatt_discover_characteristic_descriptor()
+ */
+typedef void (*bt_gatt_characteristic_descriptor_discovered_cb) (int result,
+               unsigned char characteristic_format, int total,
+               bt_gatt_attribute_h characteristic_descriptor, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Called when you get GATT handles repeatedly
+ * @since_tizen 2.3.1
+ *
+ * @param[in] total The total number of GATT handles to be called
+ * @param[in] index The index of current GATT handle. It starts from 0.
+ * @param[in] gatt_handle The GATT handle
+ * @param[in] user_data The user data passed from the foreach function
+ *
+ * @see bt_gatt_service_foreach_characteristics()
+ * @see bt_gatt_service_foreach_included_services()
+ * @see bt_gatt_characteristic_foreach_descriptors()
+ * @see bt_gatt_client_foreach_services()
+ */
+typedef bool (*bt_gatt_foreach_cb) (int total, int index, bt_gatt_h gatt_handle,
+                                   void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief Attribute protocol MTU change information structure.
+ * @since_tizen 4.0
+ *
+ * @see bt_gatt_client_att_mtu_changed_cb()
+ */
+typedef struct {
+       char *remote_address;   /**< The address of remote device */
+       unsigned int mtu;               /**< MTU value */
+       unsigned int status;            /**< Request status*/
+} bt_gatt_client_att_mtu_info_s;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief Called when the ATT MTU value is changed.
+ * @since_tizen 4.0
+ *
+ * @remarks The @a mtu_info must not be freed by application.
+ *                @a mtu_info can be used only inside the callback.
+ *                If it's needed outside, make a copy.
+ *
+ * @param[in] client The handle of a GATT client which is associated with a remote device
+ * @param[in] mtu_info The MTU information
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_gatt_client_set_connection_state_changed_cb()
+ * @see bt_gatt_client_unset_connection_state_changed_cb()
+ */
+typedef void (*bt_gatt_client_att_mtu_changed_cb)(bt_gatt_client_h client,
+               const bt_gatt_client_att_mtu_info_s *mtu_info,
+               void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Called when the client request(e.g. read / write) has been completed
+ * @since_tizen 2.3.1
+ *
+ * @param[in] result The result of a request
+ * @param[in] request_handle The requesting GATT handle
+ * @param[in] user_data The user data passed from the requesting function
+ *
+ * @see bt_gatt_client_read_value()
+ * @see bt_gatt_client_write_value()
+ */
+typedef void (*bt_gatt_client_request_completed_cb) (int result,
+               bt_gatt_h request_handle, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Called when a value of a watched characteristic's GATT handle has been changed
+ * @since_tizen 2.3.1
+ *
+ * @remarks After this function is returned, a changed value is automatically
+ * applied to @a characteristic. Before that, @a characteristic has an old value.
+ *
+ * @param[in] characteristic The characteristic's GATT handle of which value change is informed. It has an old value.
+ * @param[in] value The new value
+ * @param[in] len The length of @a value
+ * @param[in] user_data The user data passed from the registering function
+ *
+ * @see bt_gatt_client_set_characteristic_value_changed_cb()
+ */
+typedef void (*bt_gatt_client_characteristic_value_changed_cb) (bt_gatt_h characteristic,
+               char *value, int len, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Called when a service of a remote GATT server has been changed.
+ * @since_tizen 3.0
+ *
+ * @param[in] client The handle of a GATT client which is associated with a remote device.
+ * @param[in] change_type The changed type
+ * @param[in] service_uuid The changed service uuid
+ * @param[in] user_data The user data passed from the registering function
+ *
+ * @see bt_gatt_client_set_characteristic_value_changed_cb()
+ */
+typedef void (*bt_gatt_client_service_changed_cb) (bt_gatt_client_h client,
+               bt_gatt_client_service_change_type_e change_type,
+               const char* service_uuid, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief Called when the connection state is changed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @details This callback is called when the connection state is changed.
+ * When you called bt_gatt_connect() or bt_gatt_disconnect(), this callback is also called with error result even though these functions fail.
+ *
+ * @param[in] result The result of changing the connection state.
+ * @param[in] connected The state to be changed, @a true means connected state, Otherwise, @a false.
+ * @param[in] remote_address The remote_address
+ * @param[in] user_data The user data passed from the callback registration function.
+ *
+ * @see bt_gatt_connect()
+ * @see bt_gatt_disconnect()
+ * @see bt_gatt_set_connection_state_changed_cb()
+ * @see bt_gatt_unset_connection_state_changed_cb()
+ */
+typedef void (*bt_gatt_connection_state_changed_cb)(int result, bool connected, const char *remote_address, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Called when a value of a characteristic or descriptor's GATT handle has been changed.
+ * @since_tizen 3.0
+ *
+ * @details For finishing the request, call the function #bt_gatt_server_send_response in callback.
+ *
+ * @remarks After this function is returned, a changed value is automatically
+ * applied to @a gatt_handle. Before that, @a gatt_handle has an old value.
+ * @remarks The @a remote_address must not be freed by application.
+ * @remarks The @a server must not be freed by application.
+ * @remarks The @a gatt_handle must not be freed by application.
+ * @remarks The @a value must not be freed by application.
+ *
+ * @param[in] remote_address The address of the remote device which requests a change
+ * @param[in] request_id The identification of this request. It will be used to send a response.
+ * @param[in] server The GATT server handle
+ * @param[in] gatt_handle The characteristic or descriptor's GATT handle which has an old value
+ * @param[in] response_needed Indicates whether a response is required by the remote device - @c true if required, @c false if not
+ * @param[in] offset The requested offset from where the @a gatt_handle value will be updated
+ * @param[in] value The new value
+ * @param[in] len The length of @a value
+ * @param[in] user_data The user data passed from the registration function
+ *
+ * @see bt_gatt_server_set_write_value_requested_cb()
+ * @see bt_gatt_server_send_response()
+ */
+typedef void (*bt_gatt_server_write_value_requested_cb) (const char *remote_address,
+                               int request_id, bt_gatt_server_h server,
+                               bt_gatt_h gatt_handle, bool response_needed, int offset,
+                               const char *value, int len, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Called when the remote device requests to read a value on a GATT server.
+ * @since_tizen 3.0
+ *
+ * @details For finishing the request, call the function #bt_gatt_server_send_response in callback.
+ *
+ * @remarks The @a remote_address must not be freed by application.
+ * @remarks The @a server must not be freed by application.
+ * @remarks The @a gatt_handle must not be freed by application.
+ *
+ * @param[in] remote_address The address of the requesting remote device
+ * @param[in] request_id The identification of this request. It will be used to send a response.
+ * @param[in] server The GATT server handle
+ * @param[in] gatt_handle The characteristic or descriptor's GATT handle to be read
+ * @param[in] offset The requested offset from where the GATT handle's value is read
+ * @param[in] user_data The user data passed from the registration function
+ *
+ * @see bt_gatt_server_set_read_value_requested_cb()
+ * @see bt_gatt_server_send_response()
+ */
+typedef void (*bt_gatt_server_read_value_requested_cb) (const char *remote_address,
+               int request_id, bt_gatt_server_h server, bt_gatt_h gatt_handle,
+               int offset, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Called when the remote device enables or disables the Notification/Indication for particular characteristics.
+ * @since_tizen 3.0
+ *
+ * @details By using this callback function, server can know notification state.
+ *
+ * @remarks The @a server must not be freed by application.
+ * @remarks The @a gatt_handle must not be freed by application.
+ *
+ * @param[in] notify Indicates whether the Notification/Indication is enabled or not
+ * @param[in] server The GATT server handle
+ * @param[in] gatt_handle The characteristic's GATT handle to be read
+ * @param[in] user_data The user data passed from the registration function
+ *
+ * @see bt_gatt_server_set_read_value_requested_cb()
+ */
+typedef void (*bt_gatt_server_characteristic_notification_state_changed_cb) (bool notify,
+                       bt_gatt_server_h server, bt_gatt_h gatt_handle, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
+ * @brief  Called when the sending notification / indication is done.
+ * @since_tizen 3.0
+ *
+ * @remarks The @a remote_address must not be freed by application.
+ * @remarks The @a server must not be freed by application.
+ * @remarks The @a characteristic must not be freed by application.
+ *
+ * @remarks In case of an indication, once a confirmation is received from the remote device this callback will be called. \n
+ * This callback will be called several times if there are two or more remote devices which enable a Client Characteristic Configuration Descriptor(CCCD). \n
+ * For the last remote device, @a completed will be set as true.
+ *
+ * @param[in] result The result of a sending operation
+ * @param[in] remote_address The address of the remote device
+ * @param[in] server The GATT server handle
+ * @param[in] characteristic The characteristic's GATT handle
+ * @param[in] completed If this callback is for the last remote device which enables a CCCD, it will be true. Or it will be false.
+ * @param[in] user_data The user data passed from the requesting function
+ *
+ * @see bt_gatt_server_notify_characteristic_changed_value()
+ */
+typedef void (*bt_gatt_server_notification_sent_cb) (int result,
+               const char *remote_address, bt_gatt_server_h server,
+               bt_gatt_h characteristic, bool completed, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
+ * @brief  Called when the connection state is changed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] connected  Indicates whether a client is connected or disconnected
+ * @param[in] remote_address  The remote address
+ * @param[in] interface_name  The interface name. For example, bnep0, bnep1.
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_nap_set_connection_state_changed_cb()
+ * @see bt_nap_unset_connection_state_changed_cb()
+ */
+typedef void (*bt_nap_connection_state_changed_cb) (bool connected, const char *remote_address, const char *interface_name, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
+ * @brief  Called when the connection state is changed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @details  This callback is called when the connection state is changed.
+ * When you call bt_panu_connect() or bt_panu_disconnect(), this callback is also called with error result even though these functions fail.
+ * @param[in] result  The result of changing the connection state
+ * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
+ * @param[in] remote_address  The remote address
+ * @param[in] type  The type of PAN service
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_nap_set_connection_state_changed_cb()
+ * @see bt_nap_unset_connection_state_changed_cb()
+ */
+typedef void (*bt_panu_connection_state_changed_cb) (int result, bool connected, const char *remote_address, bt_panu_service_type_e type, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
+ * @brief Enumerations of the Bluetooth HID mouse's button.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ */
+typedef enum {
+       BT_HID_MOUSE_BUTTON_NONE = 0x00, /**<The mouse's none value*/
+       BT_HID_MOUSE_BUTTON_LEFT = 0x01, /**<The mouse's left button value*/
+       BT_HID_MOUSE_BUTTON_RIGHT = 0x02,  /**<The mouse's right button value*/
+       BT_HID_MOUSE_BUTTON_MIDDLE = 0x04 /**<The mouse's middle button value*/
+} bt_hid_mouse_button_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
+ * @brief The structure type containing the HID mouse event information.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ *
+ * @see bt_hid_device_send_mouse_event()
+ */
+typedef struct {
+       int buttons; /**< The button values, we can combine key's values when we pressed multiple mouse buttons*/
+       int axis_x; /**< The location's x value, -128 ~127 */
+       int axis_y; /**< The location's y value, -128 ~127 */
+       int padding; /**< The padding value, -128 ~127 */
+} bt_hid_mouse_data_s;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
+ * @brief The structure type containing the HID keyboard event information.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ * @details If you want to know more detail values, refer to http://www.usb.org/developers/hidpage/ and see "HID Usage Tables"
+ *
+ * @see bt_hid_device_send_key_event()
+ */
+typedef struct {
+       unsigned char modifier; /**< The modifier keys : such as shift, alt */
+       unsigned char key[8]; /**< The key value - currently pressed keys : Max 8 at once */
+} bt_hid_key_data_s;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
+ * @brief Enumerations of the Bluetooth HID header type.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ */
+typedef enum {
+       BT_HID_HEADER_HANDSHAKE, /**< The Bluetooth HID header type: Handshake */
+       BT_HID_HEADER_HID_CONTROL, /**< The Bluetooth HID header type: HID control */
+       BT_HID_HEADER_GET_REPORT, /**< The Bluetooth HID header type: Get report */
+       BT_HID_HEADER_SET_REPORT, /**< The Bluetooth HID header type: Set report */
+       BT_HID_HEADER_GET_PROTOCOL, /**< The Bluetooth HID header type: Get protocol */
+       BT_HID_HEADER_SET_PROTOCOL, /**< The Bluetooth HID header type: Set protocol */
+       BT_HID_HEADER_DATA, /**< The Bluetooth HID header type: Data */
+       BT_HID_HEADER_UNKNOWN /**< The Bluetooth HID header type: Unknown */
+} bt_hid_header_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
+ * @brief Enumerations of the Bluetooth HID parameter type.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ */
+typedef enum {
+       BT_HID_PARAM_DATA_RTYPE_INPUT, /**< Parameter type: Input */
+       BT_HID_PARAM_DATA_RTYPE_OUTPUT /**< Parameter type: Output */
+} bt_hid_param_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
+ * @brief Enumerations of the Bluetooth HID handshake type.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ */
+typedef enum {
+       BT_HID_HANDSHAKE_SUCCESSFUL = 0x00, /**< Handshake error code none */
+       BT_HID_HANDSHAKE_NOT_READY, /**< Handshake error code Not Ready */
+       BT_HID_HANDSHAKE_ERR_INVALID_REPORT_ID, /**< Handshake error code send invalid report id */
+       BT_HID_HANDSHAKE_ERR_UNSUPPORTED_REQUEST, /**< Handshake error code request unsupported request */
+       BT_HID_HANDSHAKE_ERR_INVALID_PARAMETER, /**< Handshake error code received invalid parameter */
+       BT_HID_HANDSHAKE_ERR_UNKNOWN = 0x0e, /**< unknown error */
+       BT_HID_HANDSHAKE_ERR_FATAL /**< Fatal error */
+} bt_hid_handshake_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
+ * @brief The structure type containing data received from the HID Host.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ */
+typedef struct {
+       const char *address;  /**< The remote device's address  */
+       bt_hid_header_type_e header_type;  /**< The header type */
+       bt_hid_param_type_e param_type;  /**< The parameter type */
+       int data_size;  /**< The length of the received data */
+       const char *data;     /**< The received data */
+} bt_hid_device_received_data_s;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
+ * @brief  Called when the Bluetooth HID Device connection state changes.
+ * @details The following error codes can be delivered: \n
+ *             #BT_ERROR_NONE \n
+ *             #BT_ERROR_OPERATION_FAILED \n
+ * @since_tizen @if WEARABLE 3.0 @endif
+ *
+ * @param[in]   result  The result of changing the connection state.
+ * @param[in]   connected  The requested state. @a true means the connection is enabled, @a false means the connection is disabled.
+ * @param[in]   remote_address  The remote device's address
+ * @param[in]   user_data  The user data passed from the callback registration function
+ * @see bt_hid_device_activate()
+ */
+typedef void (*bt_hid_device_connection_state_changed_cb) (int result,
+       bool connected, const char *remote_address, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
+ * @brief  Called when the HID Device receives data from the HID Host.
+ * @details The following error codes can be delivered: \n
+ *             #BT_ERROR_NONE \n
+ *             #BT_ERROR_OPERATION_FAILED \n
+ * @since_tizen @if WEARABLE 3.0 @endif
+ *
+ * @param[in]   data  The data received from the HID Host.
+ * @param[in]   user_data  The user data passed from the callback registration function
+ * @see bt_hid_device_set_data_received_cb()
+ */
+typedef void (*bt_hid_device_data_received_cb)(const bt_hid_device_received_data_s *data, void *user_data);
+/* HID device related type */
+
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief The structure type containing vCard information.
+ * @since_tizen @if WEARABLE 3.0 @endif
+ *
+ * @see bt_pbap_client_pull_vcard()
+ */
+typedef struct {
+       int index;                                      /**< The vcard index, used as a parameter for bt_pbap_client_pull_vcard() */
+       const char *contact_name;       /**< The contact name of the vCard */
+} bt_pbap_vcard_info_s;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief  Called when PBAP is Connected or Disconnected.
+ * @details The following error codes can be delivered: \n
+ *             #BT_ERROR_NONE \n
+ *             #BT_ERROR_OPERATION_FAILED \n
+ * @since_tizen @if WEARABLE 3.0 @endif
+ *
+ * @param[in] result The result of connecting to or disconnecting from the remote device
+ * @param[in] connected The PBAP connection status (@c true = connected, @c false = disconnected)
+ * @param[in] remote_address The remote device address (@a remote_address is valid only inside this function. To use outside the callback, make a copy. @a remote_address should not be freed.)
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_pbap_client_connect()
+ * @see bt_pbap_client_disconnect()
+ */
+typedef void (*bt_pbap_connection_state_changed_cb)(int result, bool connected,
+               const char *remote_address, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief  Called when PBAP Phonebook size calculation completes.
+ * @details The following error codes can be delivered: \n
+ *             #BT_ERROR_NONE \n
+ *             #BT_ERROR_OPERATION_FAILED \n
+ * @since_tizen @if WEARABLE 3.0 @endif
+ *
+ * @param[in] result The result of getting the phone book size
+ * @param[in] remote_address The remote device address (@a remote_address is valid only inside this function. To use outside the callback, make a copy. @a remote_address should not be freed.)
+ * @param[in] size Size of Phonebook
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_pbap_client_get_phone_book_size()
+ * @see bt_pbap_client_connect()
+ * @see bt_pbap_client_disconnect()
+ */
+typedef void (*bt_pbap_phone_book_size_cb)(int result, const char *remote_address,
+               int size, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief  Called when PBAP Phonebook Pull completes.
+ * @details The received phone book file will be saved in the platform downloads folder. \n
+ *              The following error codes can be delivered: \n
+ *             #BT_ERROR_NONE \n
+ *             #BT_ERROR_OPERATION_FAILED \n
+ * @since_tizen @if WEARABLE 3.0 @endif
+ *
+ * @param[in] result The result of getting the phone book
+ * @param[in] remote_address The remote device address (@a remote_address is valid only inside this function. To use outside the callback, make a copy. @a remote_address should not be freed.)
+ * @param[in] vcf_file The absolute path of the file in which the vCards are saved (@a vcf_file is valid only inside this function. To use outside the callback, make a copy. @a vcf_file should not be freed.)
+ * @param[in] successful true if the operation was successful, false if not
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_pbap_client_get_phone_book()
+ * @see bt_pbap_client_connect()
+ * @see bt_pbap_client_disconnect()
+ */
+typedef void (*bt_pbap_phone_book_received_cb)(int result, const char *remote_address,
+               const char *vcf_file, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
+ * @brief  Called when PBAP List vCards completes.
+ * @details The following error codes can be delivered: \n
+ *             #BT_ERROR_NONE \n
+ *             #BT_ERROR_OPERATION_FAILED \n
+ * @since_tizen @if WEARABLE 3.0 @endif
+ *
+ * @param[in] result The result of getting the vcard list
+ * @param[in] remote_address The remote device address (@a remote_address is valid only inside this function. To use outside the callback, make a copy. @a remote_address should not be freed.)
+ * @param[in] vcard_info List of vcard information (@a vcard_info is valid only inside this function. To use outside the callback, make a copy. @a vcard_info should not be freed.)
+ * @param[in] count Number of contacts in the list
+ * @param[in] successful true if the operation was successful, false if not
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_pbap_client_get_list()
+ * @see bt_pbap_client_connect()
+ * @see bt_pbap_client_disconnect()
+ */
+typedef void (*bt_pbap_list_vcards_cb)(int result, const char *remote_address,
+               const bt_pbap_vcard_info_s *vcard_info, int count, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Enumeration for the scan filter type.
+ * @since_tizen 4.0
+ * @see bt_adapter_le_scan_filter_set_type()
+ */
+typedef enum {
+       BT_ADAPTER_LE_SCAN_FILTER_TYPE_IBEACON, /**< iBeacon filter type */
+       BT_ADAPTER_LE_SCAN_FILTER_TYPE_PROXIMITY_UUID, /**< Proximity UUID filter type */
+} bt_adapter_le_scan_filter_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief The handle of a Bluetooth LE scan filter.
+ * @since_tizen 4.0
+ */
+typedef void *bt_scan_filter_h;
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __TIZEN_NETWORK_BLUETOOTH_TYPE_H__ */
diff --git a/include/bluetooth_type_extension.h b/include/bluetooth_type_extension.h
new file mode 100644 (file)
index 0000000..3bb2434
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __TIZEN_NETWORK_BLUETOOTH_TYPE_EXTENSION_H__
+#define __TIZEN_NETWORK_BLUETOOTH_TYPE_EXTENSION_H__
+
+ #ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+/**
+ * @file bluetooth_type_extension.h
+ */
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Called when the SCO(Synchronous Connection Oriented link) state is changed.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @details  This callback is called when the SCO state is changed.
+ * When you call bt_ag_open_sco() or bt_ag_close_sco(), this callback is also called with error result even though these functions failed.
+ * @param[in] result  The result of changing the connection state
+ * @param[in] opened  The state to be changed: (@c true = opened, @c  false = not opened)
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_ag_set_sco_state_changed_cb()
+ * @see bt_ag_unset_sco_state_changed_cb()
+ * @see bt_ag_open_sco()
+ * @see bt_ag_close_sco()
+ */
+typedef void (*bt_ag_sco_state_changed_cb) (int result, bool opened, void *user_data);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __TIZEN_NETWORK_BLUETOOTH_TYPE_EXTENSION_H__ */
diff --git a/include/bluetooth_type_internal.h b/include/bluetooth_type_internal.h
new file mode 100644 (file)
index 0000000..650ab1d
--- /dev/null
@@ -0,0 +1,1089 @@
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __TIZEN_NETWORK_BLUETOOTH_TYPE_INTERNAL_H__
+#define __TIZEN_NETWORK_BLUETOOTH_TYPE_INTERNAL_H__
+
+ #ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+#include <glib.h>
+
+/* This variable will be added into bt_service_class_t in tizen 4.0 */
+#define BT_SC_MAP_SERVICE_MASK 0x00800000 /**< MAP service class */
+
+/**
+ * @file bluetooth_type_internal.h
+ */
+
+#define BT_PROFILE_SERVICE_UUID_SPP            "1101"
+#define BT_PROFILE_SERVICE_UUID_HSP_HS         "1108"
+#define BT_PROFILE_SERVICE_UUID_HSP_AG         "1112"
+#define BT_PROFILE_SERVICE_UUID_OPP            "1105"
+#define BT_PROFILE_SERVICE_UUID_HFP_HF         "111e"
+#define BT_PROFILE_SERVICE_UUID_HFP_AG         "111f"
+#define BT_PROFILE_SERVICE_UUID_A2DP_SOURCE    "110a"
+#define BT_PROFILE_SERVICE_UUID_A2DP_SINK      "110b"
+#define BT_PROFILE_SERVICE_UUID_AVRCP_TARGET   "110c"
+#define BT_PROFILE_SERVICE_UUID_AVRCP_CONTROL  "110f"
+#define BT_PROFILE_SERVICE_UUID_PAN_PANU       "1115"
+#define BT_PROFILE_SERVICE_UUID_PAN_NAP                "1116"
+#define BT_PROFILE_SERVICE_UUID_PAN_GN         "1117"
+#define BT_PROFILE_SERVICE_UUID_HDP_SOURCE     "1401"
+#define BT_PROFILE_SERVICE_UUID_HDP_SINK       "1402"
+#define BT_PROFILE_SERVICE_UUID_HID            "1124"
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief  Enumerations of the Bluetooth adapter le state.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_ADAPTER_LE_DISABLED = 0x00, /**< Bluetooth le is disabled */
+       BT_ADAPTER_LE_ENABLED, /**< Bluetooth le is enabled */
+} bt_adapter_le_state_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
+ * @brief  Enumerations of the ATT error codes.
+ * @since_tizen 4.0
+ */
+typedef enum {
+       BT_ATT_ERROR_INTERNAL = -1,
+       BT_ATT_ERROR_NONE =     0x00,
+
+       /* Attribute error codes */
+       BT_ATT_ERROR_INVALID_HANDLE = 0x01,
+       BT_ATT_ERROR_READ_NOT_PERMITTED = 0x02,
+       BT_ATT_ERROR_WRITE_NOT_PERMITTED = 0x03,
+       BT_ATT_ERROR_INVALID_PDU = 0x04,
+       BT_ATT_ERROR_AUTHENTICATION = 0x05,
+       BT_ATT_ERROR_REQUEST_NOT_SUPPORTED = 0x06,
+       BT_ATT_ERROR_INVALID_OFFSET = 0x07,
+       BT_ATT_ERROR_AUTHORIZATION = 0x08,
+       BT_ATT_ERROR_PREPARE_QUEUE_FULL = 0x09,
+       BT_ATT_ERROR_ATTRIBUTE_NOT_FOUND = 0x0A,
+       BT_ATT_ERROR_ATTRIBUTE_NOT_LONG = 0x0B,
+       BT_ATT_ERROR_INSUFFICIENT_ENCRYPTION_KEY_SIZE = 0x0C,
+       BT_ATT_ERROR_INVALID_ATTRIBUTE_VALUE_LEN = 0x0D,
+       BT_ATT_ERROR_UNLIKELY = 0x0E,
+       BT_ATT_ERROR_INSUFFICIENT_ENCRYPTION = 0x0F,
+       BT_ATT_ERROR_UNSUPPORTED_GROUP_TYPE = 0x10,
+       BT_ATT_ERROR_INSUFFICIENT_RESOURCES = 0x11,
+
+       /* Common profile error codes */
+       BT_ATT_ERROR_WRITE_REQUEST_REJECTED = 0xFC,
+       BT_ATT_ERROR_CCCD_IMPROPERLY_CONFIGURED = 0xFD,
+       BT_ATT_ERROR_PROCEDURE_ALREADY_IN_PROGRESS = 0xFE,
+       BT_ATT_ERROR_OUT_OF_RANGE = 0xFF,
+
+} bt_att_error_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OTP_MODULE
+ * @brief  Enumerations of the ATT error codes specific to OTP.
+ * @since_tizen 4.0
+ */
+typedef enum {
+       /* Bluetooth OTP error codes */
+       BT_OTP_ERROR_WRITE_REQUEST_REJECTED = 0x80,
+       BT_OTP_ERROR_OBJECT_NOT_SELECTED = 0x81,
+       BT_OTP_ERROR_CONCURRENCY_LIMIT_EXCEEDED = 0x82,
+       BT_OTP_ERROR_OBJECT_NAME_EXISTS = 0x83,
+} bt_otp_error_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief  Called when the Bluetooth adapter le state changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in]   result  The result of the adapter state changing
+ * @param[in]   adapter_le_state  The adapter le state to be changed
+ * @param[in]   user_data  The user data passed from the callback registration function
+ * @pre Either bt_adapter_le_enable() or bt_adapter_le_disable() will invoke this callback if you register this callback using bt_adapter_le_set_state_changed_cb().
+ * @see bt_adapter_le_enable()
+ * @see bt_adapter_le_disable()
+ * @see bt_adapter_le_set_state_changed_cb()
+ * @see bt_adapter_le_unset_state_changed_cb()
+ */
+typedef void (*bt_adapter_le_state_changed_cb)(int result, bt_adapter_le_state_e adapter_le_state, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Enumerations for the call state
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_AG_CALL_EVENT_IDLE = 0x00,  /**< Idle */
+       BT_AG_CALL_EVENT_ANSWERED,  /**< Answered */
+       BT_AG_CALL_EVENT_HELD,  /**< Held */
+       BT_AG_CALL_EVENT_RETRIEVED,  /**< Retrieved */
+       BT_AG_CALL_EVENT_DIALING,  /**< Dialing */
+       BT_AG_CALL_EVENT_ALERTING,  /**< Alerting */
+       BT_AG_CALL_EVENT_INCOMING,  /**< Incoming */
+} bt_ag_call_event_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Enumerations for the call state
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef enum {
+       BT_AG_CALL_STATE_IDLE = 0x00,  /**< Idle state */
+       BT_AG_CALL_STATE_ACTIVE,  /**< Active state */
+       BT_AG_CALL_STATE_HELD,  /**< Held state */
+       BT_AG_CALL_STATE_DIALING,  /**< Dialing state */
+       BT_AG_CALL_STATE_ALERTING,  /**< Alerting state */
+       BT_AG_CALL_STATE_INCOMING,  /**< Incoming state */
+       BT_AG_CALL_STATE_WAITING,  /**< Waiting for connected indication event after answering an incoming call*/
+} bt_ag_call_state_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Enumerations for the call event from Audio-Gateway device
+ * @since_tizen @if WEARABLE 3.0 @endif
+ */
+typedef enum {
+       BT_HF_REMOTE_CALL_EVENT_IDLE = 0x00,  /**< Idle. Neither setup call nor active call exist */
+       BT_HF_REMOTE_CALL_EVENT_INCOMING,  /**< (Call-setup event) Received an incoming call on AG */
+       BT_HF_REMOTE_CALL_EVENT_DIALING,  /**< (Call-setup event) Dialing an outgoing call on AG */
+       BT_HF_REMOTE_CALL_EVENT_ALERTING,  /**< (Call-setup event) Remote party being alerted in an outgoing call of AG */
+       BT_HF_REMOTE_CALL_EVENT_CALL_TERMINATED,  /**< (Call-setup event) Setup call is terminated without activating */
+       BT_HF_REMOTE_CALL_EVENT_CALL_STARTED,  /**< (Active call state event) Call is started on AG */
+       BT_HF_REMOTE_CALL_EVENT_CALL_ENDED,  /**< (Active call state event) Active call is terminated on AG */
+       BT_HF_REMOTE_CALL_EVENT_UNHELD,  /**< (Call held event) No calls on hold */
+       BT_HF_REMOTE_CALL_EVENT_SWAPPED,  /**< (Call held event) Call is placed on hold or active/held calls swapped */
+       BT_HF_REMOTE_CALL_EVENT_HELD,  /**< (Call held event) Calls on hold, no active call */
+       BT_HF_REMOTE_CALL_EVENT_RINGING,  /**< Incoming call is ringing event with number. This event is optional event. */
+       BT_HF_REMOTE_CALL_EVENT_WAITING,  /**< Call Waiting notification in 3-way call scenario */
+       BT_HF_REMOTE_CALL_EVENT_FAILED_TO_DIALING,  /**< Failed to dialing a outgoing call on AG */
+} bt_hf_remote_call_event_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_MODULE
+ * @brief  Enumerations for the transfer type
+ * @since_tizen 3.0
+ */
+typedef enum {
+       BT_TRANSFER_INBOUND,        /**< Inbound Transfer Type */
+       BT_TRANSFER_OUTBOUND,       /**< Outbound Transfer Type */
+} bt_opp_transfer_type_t;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
+ * @brief  Enumerations of the Bluetooth A2DP role.
+ * @since_tizen 4.0
+ */
+typedef enum {
+       BT_A2DP_SOURCE,
+       BT_A2DP_SINK,
+} bt_audio_role_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_MAP_CLIENT_MODULE
+ * @brief
+ * @since_tizen 3.0
+ */
+typedef void* bt_map_client_session_info_h;
+
+typedef void* bt_map_client_message_object_h;
+
+typedef struct {
+       int16_t offset;
+       int16_t max_count;
+} bt_map_client_list_folders_filter_s;
+
+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_s;
+
+typedef struct {
+       bt_map_client_message_object_h 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_s;
+
+typedef struct {
+       int is_transparent;
+       int is_retry;
+       char *charset;
+} bt_map_client_push_message_args_s;
+
+typedef struct {
+       char *file_path;
+// TODO: maybe some additional fields could be supported
+//     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_s;
+
+typedef bt_map_client_list_folders_filter_s *bt_map_client_list_folders_filter_h;
+
+typedef bt_map_client_list_messages_filter_s *bt_map_client_list_messages_filter_h;
+
+typedef bt_map_client_message_item_s *bt_map_client_message_item_h;
+
+typedef bt_map_client_push_message_args_s *bt_map_client_push_message_args_h;
+
+typedef bt_map_client_message_s *bt_map_client_message_h;
+
+typedef void (*bt_map_client_list_folders_cb)(int result, char **folders, int count, void *user_data);
+
+typedef void (*bt_map_client_list_filter_fields_cb)(int result, char **filter_fields, int count, void *user_data);
+
+typedef void (*bt_map_client_list_messages_cb)(int result, bt_map_client_message_item_s *messages, int count, void *user_data);
+
+typedef void (*bt_map_client_push_message_cb)(int result, void *user_data);
+
+typedef void (*bt_map_client_get_message_cb)(int result, bt_map_client_message_h message, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Called when the connectable state changes.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @param[in] result The result of the connectable state changing
+ * @param[in] connectable The connectable to be changed
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @pre This function will be invoked when the connectable state of local Bluetooth adapter changes
+ * if you register this callback using bt_adapter_set_connectable_changed_cb().
+ *
+ * @see bt_adapter_set_connectable()
+ * @see bt_adapter_set_connectable_changed_cb()
+ * @see bt_adapter_unset_connectable_changed_cb()
+ */
+typedef void (*bt_adapter_connectable_changed_cb)
+       (int result, bool connectable, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
+ * @brief  Called when the push is requested.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ *
+ * @details You must call bt_opp_server_accept() if you want to accept.
+ * Otherwise, you must call bt_opp_server_reject().
+ * @param[in] file  The path of file to be pushed
+ * @param[in] size The file size (bytes)
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_opp_server_initialize()
+ */
+typedef void (*bt_opp_server_push_requested_cb)(const char *file, int size, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief  Enumerations of the Bluetooth adapter le scan type.
+ * @since_tizen 2.3
+ */
+typedef enum {
+       BT_ADAPTER_LE_PASSIVE_SCAN = 0x00,
+       BT_ADAPTER_LE_ACTIVE_SCAN
+} bt_adapter_le_scan_type_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Enumerations for the call handling event
+ * @since_tizen @if WEARABLE 2.3 @endif
+ */
+typedef enum {
+       BT_HF_CALL_HANDLING_EVENT_ANSWER = 0x00,  /**< Request to answer an incoming call */
+       BT_HF_CALL_HANDLING_EVENT_RELEASE,  /**< Request to release a call */
+       BT_HF_CALL_HANDLING_EVENT_REJECT,  /**< Request to reject an incoming call */
+       BT_HF_CALL_HANDLING_EVENT_RING,  /**< Request of ringing call */
+       BT_HF_CALL_HANDLING_EVENT_CALL_STARTED,  /**< Request of Call started */
+       BT_HF_CALL_HANDLING_EVENT_CALL_ENDED,  /**< Request of Call Ended */
+       BT_HF_CALL_HANDLING_EVENT_VOICE_RECOGNITION_ENABLED,  /**< Request of voice recognition enabled */
+       BT_HF_CALL_HANDLING_EVENT_VOICE_RECOGNITION_DISABLED,  /**< Request of voice recognition disabled */
+       BT_HF_CALL_HANDLING_EVENT_VENDOR_DEP_CMD,  /**< Request of Vendor command */
+       BT_HF_CALL_HANDLING_EVENT_WAITING,  /**< Request to waiting a call */
+       BT_HF_CALL_HANDLING_EVENT_HELD,  /**< Request to hold a call */
+       BT_HF_CALL_HANDLING_EVENT_UNHELD,  /**< Request to unhold calls */
+       BT_HF_CALL_HANDLING_EVENT_SWAPPED,  /**< Request to swap calls */
+} bt_hf_call_handling_event_e;
+
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Enumerations for the multi call handling event
+ * @since_tizen @if WEARABLE 2.3 @endif
+ */
+typedef enum {
+       BT_HF_MULTI_CALL_HANDLING_EVENT_RELEASE_HELD_CALLS = 0x00,  /**< Request to release held calls */
+       BT_HF_MULTI_CALL_HANDLING_EVENT_RELEASE_ACTIVE_CALLS,  /**< Request to release active calls */
+       BT_HF_MULTI_CALL_HANDLING_EVENT_ACTIVATE_HELD_CALL,  /**< Request to put active calls into hold state and activate another (held or waiting) call */
+       BT_HF_MULTI_CALL_HANDLING_EVENT_MERGE_CALLS,  /**< Request to add a held call to the conversation */
+       BT_HF_MULTI_CALL_HANDLING_EVENT_EXPLICIT_CALL_TRANSFER,  /**< Request to let a user who has two calls to connect these two calls together and release its connections to both other parties */
+} bt_hf_multi_call_handling_event_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Enumerations for the call state
+ * @since_tizen @if WEARABLE 2.3 @endif
+ */
+typedef enum {
+       BT_HF_CALL_EVENT_IDLE = 0x00,  /**< Idle */
+       BT_HF_CALL_EVENT_ANSWER,  /**< Answered */
+       BT_HF_CALL_EVENT_HOLD,  /**< Held */
+       BT_HF_CALL_EVENT_RETRIEVE,  /**< Retrieved */
+       BT_HF_CALL_EVENT_DIAL,  /**< Dialing */
+       BT_HF_CALL_EVENT_ALERT,  /**< Alerting */
+       BT_HF_CALL_EVENT_INCOMING,  /**< Incoming */
+       BT_HF_CALL_EVENT_REDIAL,  /**< Redialling */
+       BT_HF_CALL_EVENT_RELEASE_ALL_NONACTIVE_CALLS,  /**< Release all nonactive calls */
+       BT_HF_CALL_EVENT_ACCEPT_AND_RELEASE,  /**< Accept and Release */
+       BT_HF_CALL_EVENT_ACCEPT_AND_HOLD,  /**< Accept and Hold */
+       BT_HF_CALL_EVENT_ADD_TO_CONVERSATION,  /**< Add to the conversation */
+} bt_hf_call_event_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  HF Call status information.
+ * @since_tizen @if WEARABLE 2.3 @endif
+ */
+typedef struct {
+       char *number;  /**< Phone Number */
+       int direction;  /**< Direction :Incoming(1), Outgoing(0) */
+       int status;  /**< Call Status :Active(0), Held(1), Waiting(5), Dailing(2) */
+       int multi_party;  /**< Multiparty/conf call: Yes(1), No(0) */
+       int index;  /**< Call index/ID */
+} bt_hf_call_status_info_s;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Called when the manufacturer dat changes.
+ * @since_tizen 2.3
+ *
+ * @param[in]   data           The manufacurer data of the Bluetooth device to be changed
+ * @param[in]   len                    The length of @a data
+ * @param[in]   user_data      The user data passed from the callback registration function
+ * @pre This function will be invoked when the manufacturer data of Bluetooth adapter changes
+ * if callback is registered using bt_adapter_set_manufacturer_data_changed_cb().
+ * @see bt_adapter_set_manufacturer_data()
+ * @see bt_adapter_set_manufacturer_data_changed_cb()
+ * @see bt_adapter_unset_manufacturer_data_changed_cb()
+ */
+typedef void (*bt_adapter_manufacturer_data_changed_cb) (char *data,
+               int len, void *user_data);
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief  Called repeatedly when you get the devices connected with specific profile.
+ * @since_tizen 3.0
+ *
+ * @param[in]   remote_address The address of remote device
+ * @param[in]   user_data      The user data passed from the callback registration function
+ * @return @c true to continue with the next iteration of the loop,
+ * \n @c false to break out of the loop.
+ * @pre bt_adapter_foreach_profile_connected_devices() will invoke this function.
+ * @see bt_adapter_foreach_profile_connected_devices()
+ */
+typedef bool (*bt_adapter_profile_connected_devices_cb)(const char *remote_address, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Called when the SCO(Synchronous Connection Oriented link) state is changed.
+ * @since_tizen @if WEARABLE 2.3 @endif
+ *
+ * @details  This callback is called when the SCO state is changed.
+ * When you call bt_ag_open_sco() or bt_ag_close_sco(), this callback is also called with error result even though these functions failed.
+ * @param[in] result  The result of changing the connection state
+ * @param[in] opened  The state to be changed: (@c true = opened, @c  false = not opened)
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_ag_set_sco_state_changed_cb()
+ * @see bt_ag_unset_sco_state_changed_cb()
+ * @see bt_ag_open_sco()
+ * @see bt_ag_close_sco()
+ */
+typedef void (*bt_hf_sco_state_changed_cb) (int result, bool opened, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Called when a call handling event happened from Hands-Free.
+ * @since_tizen @if WEARABLE 2.3 @endif
+ *
+ * @param[in] event  The call handling event happened from Hands-Free
+ * @param[in] call_id  The call ID
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_ag_set_call_handling_event_cb()
+ * @see bt_ag_unset_call_handling_event_cb()
+ */
+typedef void (*bt_hf_call_handling_event_cb) (bt_hf_call_handling_event_e event, char *phone_number, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Called when a multi call handling event happened from Hands-Free.
+ * @since_tizen @if WEARABLE 2.3 @endif
+ *
+ * @param[in] event  The call handling event happened from Hands-Free
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_ag_set_multi_call_handling_event_cb()
+ * @see bt_ag_unset_multi_call_handling_event_cb()
+ */
+typedef void (*bt_hf_multi_call_handling_event_cb) (bt_hf_multi_call_handling_event_e event, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Called when the speaker gain of the remote device is changed.
+ * @since_tizen @if WEARABLE 2.3 @endif
+ *
+ * @param[in] gain The gain of speaker (0 ~ 15)
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_hf_set_speaker_gain_changed_cb()
+ * @see bt_hf_unset_speaker_gain_changed_cb()
+ */
+typedef void (*bt_hf_speaker_gain_changed_cb) (int gain, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Called when a call status updated event happened from Hands-Free.
+ * @since_tizen @if WEARABLE 2.3 @endif
+ * @remarks call_info_list has elements which consist of bt_hf_call_status_info_s
+ * @remarks The @a call_info_list must be released with bt_hf_free_call_status_info_list() by you.
+ *
+ * @param[in] event  The call handling event happened from Hands-Free
+ * @param[in] call_id  The call ID
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_hf_call_status_info_s
+ * @see bt_hf_set_call_status_updated_event_cb()
+ * @see bt_hf_unset_call_status_updated_event_cb()
+ */
+typedef void (*bt_hf_call_status_updated_event_cb) (GSList *call_info_list, void *user_data);
+
+/**
+* @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+* @brief DPM BT allowance state
+* @since_tizen 3.0
+*/
+typedef enum {
+       BT_DPM_ERROR      = -1,   /**< bluetooth allowance error */
+       BT_DPM_BT_ALLOWED,        /**< bluetooth allowance allowed */
+       BT_DPM_HANDSFREE_ONLY, /**< bluetooth allowance handsfree only */
+       BT_DPM_BT_RESTRICTED,  /**< bluetooth allowance restricted */
+} bt_dpm_allow_e;
+
+/**
+* @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+* @brief DPM Policy status
+* @since_tizen 3.0
+*/
+typedef enum {
+       BT_DPM_STATUS_ERROR = -1,
+
+       BT_DPM_ALLOWED   = 0,    /**< DPM Policy status allowed. */
+       BT_DPM_RESTRICTED                = 1,    /**< DPM Policy status restricted. */
+
+       BT_DPM_ENABLE                    = 1,    /**< DPM Policy status enabled. */
+       BT_DPM_DISABLE  = 0,     /**< DPM Policy status disabled. */
+
+       BT_DPM_FALSE     = 0,   /**< DPM Policy status false. */
+       BT_DPM_TRUE             = 1,    /**< DPM Policy status true. */
+} bt_dpm_status_e;
+
+/**
+* @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
+* @brief DPM Profile states
+* @since_tizen 3.0
+*/
+typedef enum {
+       BT_DPM_POLICY_A2DP_PROFILE_STATE,
+       BT_DPM_POLICY_AVRCP_PROFILE_STATE,
+       BT_DPM_POLICY_BPP_PROFILE_STATE,
+       BT_DPM_POLICY_DUN_PROFILE_STATE,
+       BT_DPM_POLICY_FTP_PROFILE_STATE,
+       BT_DPM_POLICY_HFP_PROFILE_STATE,
+       BT_DPM_POLICY_HSP_PROFILE_STATE,
+       BT_DPM_POLICY_PBAP_PROFILE_STATE,
+       BT_DPM_POLICY_SAP_PROFILE_STATE,
+       BT_DPM_POLICY_SPP_PROFILE_STATE,
+       BT_DPM_PROFILE_NONE,
+} bt_dpm_profile_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Device LE connection update structure.
+ * @since_tizen @if WEARABLE 2.3.1 @else 2.3 @endif
+ */
+typedef struct {
+       unsigned int interval_min;   /**< Minimum value for the connection event interval (msec) */
+       unsigned int interval_max;   /**< Maximum value for the connection event interval (msec) */
+       unsigned int latency;   /**< Slave latency (msec) */
+       unsigned int time_out;   /**< Supervision timeout (msec) */
+} bt_le_conn_update_s;
+
+/**
+ * Structure to DPM device list
+ */
+typedef struct {
+       int count;
+       char **devices;
+} bt_dpm_device_list_s;
+
+/**
+ * Structure to DPM uuid list
+ */
+typedef struct {
+       int count;
+       char **uuids;
+} bt_dpm_uuids_list_s;
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Enumaration for the address type field in manufactrer specific data
+ * @since_tizen 3.0
+ */
+typedef enum {
+       ADDRESS_NONE_TYPE = 0x00,
+       WI_FI_P2P_ADDRESS = 0x01,
+       BLUETOOTH_ADDRESS = 0x02,
+       INDICATION_ADDRESS = 0x04,
+       IPV4_ADDRESS = 0x08,
+       IPV6_ADDRESS = 0x10,
+       UNKNOWN_ADDRESS = 0xff
+} connectivity_address_t;
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Enumaration for the proximity locality type field in manufactrer specific data
+ * @since_tizen 3.0
+ */
+typedef enum {
+       NONE_TYPE = 0x00,
+       PROXIMITY = 0x01,
+       CO_PRESENCE = 0x02,
+       UNKNOWN_TYPE = 0xff
+} bt_proximity_locality_t;
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Structure of samsung specific manufacturer data
+ * @since_tizen 3.0
+ */
+typedef struct {
+       unsigned char version;
+       unsigned char service_id;
+       unsigned char discovery_version;
+       unsigned char associated_service_id;
+       bt_proximity_locality_t proximity_locality_type;
+       unsigned char proximity_locality_info;
+       unsigned char device_type;
+       unsigned char device_icon;
+       unsigned char auth_info[5];
+       connectivity_address_t addr_type;
+       unsigned char addr1[6];
+       unsigned char addr2[6];
+       unsigned char channel_info;
+       unsigned char associated_service_data_len;
+       unsigned char *associated_service_data_val;
+       char *name;
+} bt_manufacturer_data;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Trusted Profile enumeration.
+ * @since_tizen 3.0
+ *
+ * @see bt_device_set_profile_trusted()
+ * @see bt_device_get_profile_trusted()
+ */
+typedef enum {
+       BT_TRUSTED_PROFILE_PBAP = 1,
+       BT_TRUSTED_PROFILE_MAP,
+       BT_TRUSTED_PROFILE_SAP,
+       BT_TRUSTED_PROFILE_ALL = 0xFFFFFFFF,
+} bt_trusted_profile_t;
+
+/**
+ * @deprecated Deprecated since 4.0. Use bt_trusted_profile_t instead.
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Restricted Profile enumeration.
+ * @since_tizen 3.0
+ *
+ * @see bt_device_set_profile_restricted()
+ * @see bt_device_get_profile_restricted()
+ */
+typedef enum {
+       BT_RESTRICTED_PROFILE_HFP_HS = 1,
+       BT_RESTRICTED_PROFILE_A2DP,
+} bt_restricted_profile_t;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Enumerations of the authentication event types.
+ * @since_tizen 3.0
+ *
+ */
+typedef enum {
+       BT_AUTH_KEYBOARD_PASSKEY_DISPLAY = 0, /**< PIN display event to user for entering PIN in keyboard */
+       BT_AUTH_PIN_REQUEST,                  /**< Legacy PIN or PASSKEY request event */
+       BT_AUTH_PASSKEY_CONFIRM_REQUEST,      /**< PASSKEY confirmation event to match PASSKEY in remote device */
+} bt_authentication_type_info_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Proximity Profile Role
+ * @since_tizen 3.0
+ */
+typedef enum {
+       BT_PROXIMITY_REPORTER, /**< Proximity Profile Reporter role. */
+       BT_PROXIMITY_MONITOR, /**< Proximity Profile Monitor role. */
+} bt_proximity_role_t;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief Proximity Profile Role
+ * @since_tizen 3.0
+ */
+typedef enum {
+       BT_PROXIMITY_LINKLOSS_ALERT = 0x01, /**< Proximity profile Link Loss alert property */
+       BT_PROXIMITY_IMMEDIATE_ALERT = 0x02, /**< Proximity Profile Immediate alert property */
+       BT_PROXIMITY_TX_POWER = 0x04, /**< Proximity Profile Immediate alert property */
+} bt_proximity_property_t;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Called when Trusted Profiles is changed.
+ * @since_tizen 3.0
+ *
+ * @param[in]   result  The result of supported profile callback
+ * @param[in]   remote_address  Address of remote device
+ * @param[in]   trusted_profiles  Trusted profile FLAG
+ * @param[in]   user_data  The user data passed from the callback registration function
+ * @see bt_device_set_trusted_profile_cb()
+ * @see bt_device_unset_trusted_profile_cb()
+ */
+typedef void (*bt_device_trusted_profiles_cb)
+       (int result, char *remote_address, int trusted_profile, bool supported, bool trusted, void *user_data);
+
+/**
+ * @deprecated Deprecated since 4.0. Use bt_gatt_client_att_mtu_info_s instead.
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief Attribute protocol MTU change information structure.
+ * @since_tizen 3.0
+ *
+ * @see bt_device_att_mtu_changed_cb()
+ */
+typedef struct {
+       char *remote_address;   /**< The address of remote device */
+       unsigned int mtu;               /** < MTU value */
+       unsigned int status;            /** < request status*/
+} bt_device_att_mtu_info_s;
+
+/**
+ * @deprecated Deprecated since 4.0. Use bt_gatt_client_att_mtu_changed_cb instead.
+ * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
+ * @brief  Called when the connection state is changed.
+ * @since_tizen 3.0
+ *
+ * @param[in] connected The connection status: (@c true = connected, @c false = disconnected)
+ * @param[in] conn_info The connection information
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_device_set_connection_state_changed_cb()
+ * @see bt_device_unset_connection_state_changed_cb()
+ */
+typedef void (*bt_device_att_mtu_changed_cb)(int result, bt_device_att_mtu_info_s *mtu_info, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief The handle of a Proximity Monitor client handle which is associated with a remote device.
+ * @since_tizen 4.0
+ */
+typedef void *bt_proximity_monitor_h;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief The handle of a Proximity Reporter server.
+ * @since_tizen 4.0
+ */
+typedef void *bt_proximity_reporter_h;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief  Called when the Proximity profile reporter property is changed.
+ * @since_tizen 4.0
+ *
+ * @param[in] result callback result
+ * @param[in] remote_address remote device address on which property is changed
+ * @param[in] service_type The property type for which the value is changed
+ * @param[in] prop_value The property value changed
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_proximity_reporter_set_property_changed_cb()
+ * @see bt_proximity_reporter_unset_property_changed_cb()
+ */
+typedef void (*bt_proximity_reporter_property_changed_cb)
+               (int result, const char *remote_address, int service_type, int prop_value, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief  Called when the Proximity monitor profile connection state is changed.
+ * @since_tizen 4.0
+ *
+ * @param[in] result callback result
+ * @param[in] remote_address remote device address to which the device is connected
+ * @param[in] monitor proximity profile monitor handle
+ * @param[in] connected The connection status: (@c true = connected, @c false = disconnected)
+ * @param[in] supported_service supported services of proximity profile
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_proximity_monitor_set_connection_state_changed_cb()
+ * @see bt_proximity_monitor_unset_connection_state_changed_cb()
+ */
+typedef void (*bt_proximity_monitor_connection_state_changed_cb)
+               (int result, const char *remote_address, bt_proximity_monitor_h monitor, bool connected, int supported_service, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
+ * @brief  Called when the Proximity reporter profile connection state is changed.
+ * @since_tizen 4.0
+ *
+ * @param[in] result callback result
+ * @param[in] remote_address remote device address to which the device is connected
+ * @param[in] reporter proximity profile reporter handle
+ * @param[in] connected The connection status: (@c true = connected, @c false = disconnected)
+ * @param[in] supported_service supported services of proximity profile
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_proximity_reporter_set_connection_state_changed_cb()
+ * @see bt_proximity_reporter_unset_connection_state_changed_cb()
+ */
+typedef void (*bt_proximity_reporter_connection_state_changed_cb)
+               (int result, const char *remote_address, bt_proximity_reporter_h reporter, bool connected, int supported_service, void *user_data);
+
+
+/**
+ * @internal
+ * @brief Various TDS transport states.
+ * @since_tizen 3.0
+ */
+typedef enum {
+       BT_TDS_TRANSPORT_STATE_OFF,     /**< Transport is currently in OFF state */
+       BT_TDS_TRANSPORT_STATE_ON,      /**< Transport is currently in ON state */
+       BT_TDS_TRANSPORT_STATE_UNAVAILABLE,     /**< Transport is temporarily unavailable */
+} bt_tds_transport_state_e;
+
+/**
+ * @internal
+ * @brief Various TDS transports.
+ * @since_tizen 3.0
+ */
+typedef enum {
+       BT_TDS_TRANSPORT_BT = 0x01, /* Transport BR-EDR */
+       BT_TDS_TRANSPORT_CUSTOM,       /* Transport custom */
+       /* ... */
+       BT_TDS_TRANSPORT_INVALID
+} bt_tds_transport_e;
+
+/**
+ * @internal
+ * @brief The structure type of TDS transport data block
+ * @since_tizen 3.0
+ */
+typedef struct {
+       bt_tds_transport_e transport;
+       bt_tds_transport_state_e state;
+       bool is_data_complete;
+       char *data;
+       int length;
+} tds_transport_data_s;
+
+/**
+ * @internal
+ * @brief The structure type of list of TDS transport data block
+ * @since_tizen 3.0
+ */
+typedef struct {
+       int num_transport_block;            /**< Number of Transport Data Blocks */
+       tds_transport_data_s **data;        /**< Array of Transport Data Block */
+} bt_tds_transport_block_list_s;
+
+/**
+ * @internal
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
+ * @brief Called when remote device requests authentication.
+ * @since_tizen 3.0
+ * @param[in] result
+ * @param[in] auth_type
+ *             typedef enum {
+ *              BT_AUTH_KEYBOARD_PASSKEY_DISPLAY = 0, : PIN display event to user for entering PIN in keyboard
+ *              BT_AUTH_PIN_REQUEST,                  : Legacy PIN or PASSKEY request event
+ *              BT_AUTH_PASSKEY_CONFIRM_REQUEST,      : PASSKEY confirmation event to match PASSKEY in remote device
+ *             } bt_authentication_type_info_e;
+ * @param[in] device_name  Name of the remote device
+ * @param[in] remote_addr  Remote BD address
+ * @param[in] pass_key     PASSKEY string
+ *            PASSKEY string is valid only if authentication types are following
+ *             a/ BT_AUTH_KEYBOARD_PASSKEY_DISPLAY
+ *             b/ BT_AUTH_PASSKEY_CONFIRM_REQUEST
+ *            pass_key string will be invalid if authentication event is of type BT_AUTH_PIN_REQUEST
+ *            as this event indicates that user MUST enter PIN or PASSKEY and perform authentication.
+ *
+ *            Upon receiving BT_AUTH_KEYBOARD_PASSKEY_DISPLAY event, user should enter PASSKEY in keyboard
+ *            Application can also call bt_device_cancel_bonding() Upon receiving BT_AUTH_KEYBOARD_PASSKEY_DISPLAY
+ *            event which will fail the on-going pairing with remote device.
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_adapter_set_authentication_req_cb()
+ */
+typedef void (*bt_adapter_authentication_req_cb)(int result, bt_authentication_type_info_e auth_type,
+                                               char *device_name, char *remote_addr,
+                                               char *pass_key, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Samsung XSAT Vendor dependent command.
+ * @since_tizen 2.3.2
+ */
+typedef struct {
+       int app_id; /**< The application ID */
+       char *message; /**< Command message */
+} bt_hf_vendor_dep_at_cmd_s;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
+ * @brief  Called  when a call event happend from Audio-Gateway device
+ * @since_tizen @if WEARABLE 3.0 @endif
+ *
+ * @param[in] event The call state chagned event from remote Audio-Gateway device
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see bt_hf_set_remote_call_event_cb()
+ * @see bt_hf_unset_remote_call_event_cb()
+ */
+typedef void (*bt_hf_remote_call_event_cb) (bt_hf_remote_call_event_e event, char *phone_number, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Called when a XSAT vendor command is transmitted from Hands-Free.
+ * @since_tizen 2.3
+ *
+ * @param[in] command  The XSAT vendor command transmitted from Hands-Free
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_ag_set_vendor_cmd_cb()
+ * @see bt_ag_unset_vendor_cmd_cb()
+ */
+typedef void (*bt_ag_vendor_cmd_cb) (char *command, void *user_data);
+
+/**
+ * @internal
+ * @brief The handle of a Transport Discover Service Provider.
+ * @since_tizen 3.0
+ */
+typedef void *bt_tds_provider_h;
+
+/**
+ * @internal
+ * @brief Called when remote device requests transport activation
+ * @since_tizen 3.0
+ * @param[in] remote_bd_addr Remote device address
+ * @param[in] transport transport to be activated
+ * @param[in] buf transport activation request data buffer
+ * @param[in] len transport activation request data buffer length
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see bt_tds_set_transport_activation_requested_cb()
+ */
+typedef void (*bt_tds_activation_requested_cb)(char *remote_bd_addr,
+       bt_tds_transport_e transport, unsigned char *buf, int len, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief The handle of a TDS Seeker client which is associated with a remote TDS provider
+ * @since_tizen 3.0
+ */
+typedef void *bt_tds_seeker_h;
+
+/**
+ * @internal
+ * @since_tizen 3.0
+ * @brief TDS Seeker profile Scan result callback containing filtered TDS service information and
+ * complete LE discovery informations
+ */
+typedef void (*bt_tds_provider_scan_result_cb)(int result, const char *remote_address,
+               bt_tds_transport_block_list_s *info, bt_adapter_le_device_scan_result_info_s *scan_info,
+               void *user_data);
+
+/**
+ * @internal
+ * @since_tizen 3.0
+ * @brief TDS Seeker profile Connection State changed callback which is associated with a remote TDS provider
+ */
+typedef void (*bt_tds_seeker_connection_state_changed_cb)
+               (int result, const char *remote_address, bt_tds_seeker_h seeker, bool connected, void *user_data);
+
+/**
+ * @internal
+ * @since_tizen 3.0
+ * @brief TDS Seeker profile complete TDS data block read callback from remote TDS provider
+ */
+typedef void (*bt_tds_seeker_complete_transport_data_cb)
+               (int result, const char *remote_address, bt_tds_transport_block_list_s *info, void *user_data);
+
+/**
+ * @internal
+ * @since_tizen 3.0
+ * @brief TDS Seeker profile TDS Control Point Activation request callback which is associated with remote TDS provider
+ */
+typedef void (*bt_tds_control_point_activation_indication_cb)
+               (int result, const char *remote_address, unsigned char *data, int data_length, void *user_data);
+
+/**
+ * @internal
+ * @since_tizen 4.0
+ * @brief  Called when OTP Server is Enabled or Disabled.
+ */
+typedef void (*bt_otp_server_state_changed_cb)(int result, bool connected);
+
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief The handle of a OTP client which is associated with a remote OTP Server
+ * @since_tizen 4.0
+ */
+typedef void *bt_otp_client_h;
+
+/**
+ * @internal
+ * @brief The structure type of OTP object metadata
+ * @since_tizen 4.0
+ */
+typedef struct {
+       unsigned long long id;
+       char *name;
+} otp_object_metadata_s;
+
+/**
+ * @internal
+ * @brief The structure type of list of OTP discovered objects
+ * @since_tizen 4.0
+ */
+typedef struct {
+       int num_objects;            /**< Number of Objects Discovered */
+       otp_object_metadata_s **data;   /**< Array of Discovered Object MetaData */
+} bt_otp_object_list_s;
+
+/**
+ * @internal
+ * @since_tizen 4.0
+ * @brief OTP Client profile Connection State changed callback which is associated with a remote OTP Server
+ */
+typedef void (*bt_otp_client_state_changed_cb)
+               (int result, const char *remote_address, bt_otp_client_h otp_client, bool connected, void *user_data);
+
+/**
+ * @internal
+ * @since_tizen 4.0
+ * @brief OTP Client profile remote object discovery callback
+ */
+typedef void (*bt_otp_client_object_discovery_cb)
+               (int result, const char *remote_address, bt_otp_object_list_s *obj_list, void *user_data);
+
+/**
+ * @internal
+ * @since_tizen 4.0
+ * @brief OTP Client profile select object callback
+ */
+typedef void (*bt_otp_client_object_select_cb)
+               (int result, const char *remote_address, unsigned long long obj_id, void *user_data);
+
+/**
+ * @internal
+ * @since_tizen 4.0
+ * @brief OTP Client profile remote object read complete callback
+ */
+typedef void (*bt_otp_client_read_object_complete_cb)
+               (int result, const char *remote_address, char *file_path, void *user_data);
+
+/**
+ * @internal
+ * @since_tizen 4.0
+ * @brief OTP Client profile object create callback
+ */
+typedef void (*bt_otp_client_object_create_cb)
+               (int result, const char *remote_address, unsigned long long obj_id, void *user_data);
+
+/**
+ * @internal
+ * @since_tizen 4.0
+ * @brief OTP Client profile object create callback
+ */
+typedef void (*bt_otp_client_object_write_cb)
+               (int result, const char *remote_address, unsigned int length, void *user_data);
+
+/**
+ * @internal
+ * @since_tizen 4.0
+ * @brief OTP Client profile object execute callback
+ */
+typedef void (*bt_otp_client_object_execute_cb)
+               (int result, const char *remote_address, unsigned long long obj_id, void *user_data);
+
+/**
+ * @internal
+ * @since_tizen 4.0
+ * @brief OTP Client profile object delete callback
+ */
+typedef void (*bt_otp_client_object_delete_cb)
+               (int result, const char *remote_address, unsigned long long obj_id, void *user_data);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __TIZEN_NETWORK_BLUETOOTH_TYPE_INTERNAL_H__ */
diff --git a/include/mobile/bluetooth.h b/include/mobile/bluetooth.h
deleted file mode 100644 (file)
index 7ca417c..0000000
+++ /dev/null
@@ -1,5304 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __TIZEN_NETWORK_BLUETOOTH_H__
-#define __TIZEN_NETWORK_BLUETOOTH_H__
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdbool.h>
-#include <tizen_error.h>
-#include <tizen.h>
-
-#include <bluetooth_type.h>
-
-#ifndef TIZEN_DEPRECATED_API
-#define TIZEN_DEPRECATED_API __attribute__((__visibility__("default"), deprecated))
-#endif
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/**
- * @file        bluetooth.h
- * @brief       API to control the Bluetooth adapter and devices and communications.
- * @ingroup     CAPI_NETWORK_BLUETOOTH_MODULE
- */
-
-
-/**
- * @addtogroup CAPI_NETWORK_BLUETOOTH_MODULE
- * @{
- */
-
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_MODULE
- * @brief Initializes the Bluetooth API.
- * @since_tizen 2.3
- *
- * @remarks This function must be called before Bluetooth API starts. \n
- * You must free all resources of the Bluetooth service by calling bt_deinitialize() if Bluetooth service is no longer needed.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see  bt_deinitialize()
- */
-int bt_initialize(void);
-
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_MODULE
- * @brief Releases all resources of the Bluetooth API.
- * @since_tizen 2.3
- *
- * @remarks This function must be called if Bluetooth API is no longer needed.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre Bluetooth API must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- */
-int bt_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_MODULE
- * @brief Gets the specification name for the given UUID.
- * @since_tizen 3.0
- *
- * @remarks The @a name must be released using free().
- *
- * @param[in] uuid The UUID
- * @param[out] name The specification name defined at www.bluetooth.com
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_get_uuid()
- */
-int bt_get_uuid_name(const char *uuid, char **name);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the current state of local Bluetooth adapter.
- * @since_tizen 2.3
- *
- * @param[out] adapter_state The current adapter state
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- */
-int bt_adapter_get_state(bt_adapter_state_e *adapter_state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the address of local Bluetooth adapter.
- * @since_tizen 2.3
- *
- * @remarks The @a local_address must be released with free() by you.
- *
- * @param[out] local_address The device address of local Bluetooth adapter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see bt_adapter_get_name()
- */
-int bt_adapter_get_address(char **local_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the name of local Bluetooth adapter.
- * @since_tizen 2.3
- *
- * @details Use this function to get the friendly name associated with Bluetooth
- * device, retrieved by the remote Bluetooth devices.
- *
- * @remarks The @a local_name must be released with free() by you.
- *
- * @param[out] local_name  The local device name
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_set_name()
- */
-int bt_adapter_get_name(char **local_name);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Sets the name of local Bluetooth adapter.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] local_name The name of the Bluetooth device. \n
- *                             The maximum length is 248 characters.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post bt_adapter_name_changed_cb() will be invoked if this function returns #BT_ERROR_NONE.
- *
- * @see bt_adapter_get_name()
- * @see bt_adapter_name_changed_cb()
- * @see bt_adapter_set_name_changed_cb()
- * @see bt_adapter_unset_name_changed_cb()
- */
-int bt_adapter_set_name(const char *local_name);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Gets the visibility mode of local Bluetooth adapter.
- * @since_tizen 2.3
- * @param[out] mode  The visibility mode of the Bluetooth device
- * @param[out] duration  The duration until the visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE (in seconds).
- * @a duration is valid only if @a mode is #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE. This value can be NULL.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_adapter_get_visibility(bt_adapter_visibility_mode_e *mode, int *duration);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Starts the device discovery, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @details If a device is discovered, bt_adapter_device_discovery_state_changed_cb() will be invoked
- * with #BT_ADAPTER_DEVICE_DISCOVERY_FOUND, and then bt_adapter_device_discovery_state_changed_cb()
- * will be called with #BT_ADAPTER_DEVICE_DISCOVERY_FINISHED in case of the completion or cancellation of the discovery.
- *
- * @remarks To connect to peer Bluetooth device, you need to know its Bluetooth address. \n
- * The device discovery can be stopped by bt_adapter_stop_device_discovery().
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post This function invokes bt_adapter_device_discovery_state_changed_cb().
- *
- * @see bt_adapter_is_discovering()
- * @see bt_adapter_stop_device_discovery()
- * @see bt_adapter_device_discovery_state_changed_cb()
- * @see bt_adapter_set_device_discovery_state_changed_cb()
- * @see bt_adapter_unset_device_discovery_state_changed_cb()
- */
-int bt_adapter_start_device_discovery(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Stops the device discovery, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remarks The device discovery process will take 10 ~ 20 seconds to get all the devices in vicinity.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation is not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The device discovery must be in progress with bt_adapter_start_device_discovery().
- * @post This function invokes bt_adapter_device_discovery_state_changed_cb().
- *
- * @see bt_adapter_is_discovering()
- * @see bt_adapter_start_device_discovery()
- * @see bt_adapter_set_device_discovery_state_changed_cb()
- * @see bt_adapter_unset_device_discovery_state_changed_cb()
- * @see bt_adapter_device_discovery_state_changed_cb()
- */
-int bt_adapter_stop_device_discovery(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Checks for the device discovery is in progress or not.
- * @since_tizen 2.3
- *
- * @remarks If Bluetooth discovery is in progress, other operations are not allowed and
- * you have to either stop the discovery operation, or wait for it to be finished,
- * before performing other operations.
-
- * @param[out] is_discovering The discovering status: (@c true = in progress , @c  false = not in progress )
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_start_device_discovery()
- * @see bt_adapter_stop_device_discovery()
- */
-int bt_adapter_is_discovering(bool *is_discovering);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Get the service mask from the uuid list.
- * @since_tizen 2.3
- *
- * @param[in] uuids The UUID list of the device.
- * @param[in] no_of_service The number of the UUID list count.
- * @param[out] service_mask_list Service mask list converted from the given UUID list.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_service_class_t
- */
-int bt_device_get_service_mask_from_uuid_list(char **uuids,
-                                     int no_of_service,
-                                     bt_service_class_t *service_mask_list);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Retrieves the device information of all bonded devices.
- * @since_tizen 2.3
- *
- * @param [in] callback The callback function to invoke
- * @param [in] user_data The user data passed from the foreach function
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post This function invokes bt_adapter_bonded_device_cb().
- *
- * @see bt_adapter_bonded_device_cb()
- */
-int bt_adapter_foreach_bonded_device(bt_adapter_bonded_device_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the device information of a bonded device.
- * @since_tizen 2.3
- * @remarks The @a device_info must be released with bt_adapter_free_device_info() by you .
- *
- * @param [in] remote_address The address of remote device
- * @param [out] device_info The bonded device information
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post This function invokes bt_adapter_bonded_device_cb().
- *
- * @see bt_adapter_bonded_device_cb()
- */
-int bt_adapter_get_bonded_device_info(const char *remote_address, bt_device_info_s **device_info);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Frees device info.
- * @since_tizen 2.3
- *
- * @param [in] device_info The bonded device information
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_adapter_get_bonded_device_info()
- */
-int bt_adapter_free_device_info(bt_device_info_s *device_info);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Checks whether the UUID of service is used or not
- * @since_tizen 2.3
- * @param[in] service_uuid The UUID of service
- * @param[out] used Indicates whether the service is used or not
- * @return true on success, otherwise false.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_adapter_is_service_used(const char *service_uuid, bool *used);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked when the Bluetooth adapter state changes.
- * @since_tizen 2.3
- *
- * @param[in] callback The callback function to invoke
- * @param[in] user_data        The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_state_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_state_changed_cb()
- * @see bt_adapter_set_state_changed_cb()
- * @see bt_adapter_unset_state_changed_cb()
- */
-int bt_adapter_set_state_changed_cb(bt_adapter_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- *
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- * @see bt_adapter_set_state_changed_cb()
- */
-int bt_adapter_unset_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked when the name of Bluetooth adapter changes.
- * @since_tizen 2.3
- *
- * @param[in] callback The callback function to invoke
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_adapter_name_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_name_changed_cb()
- * @see bt_adapter_unset_name_changed_cb()
- */
-int bt_adapter_set_name_changed_cb(bt_adapter_name_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- *
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- * @see bt_adapter_set_name_changed_cb()
- */
-int bt_adapter_unset_name_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked when the visibility mode changes.
- * @since_tizen 2.3
- *
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_visibility_mode_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_visibility_mode_changed_cb()
- * @see bt_adapter_unset_visibility_mode_changed_cb()
- */
-int bt_adapter_set_visibility_mode_changed_cb(bt_adapter_visibility_mode_changed_cb callback, void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Unregisters the callback function.
- * @since_tizen 2.3
- *
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The Bluetooth service must be initialized with bt_initialize().
- *
- * @see  bt_initialize()
- * @see  bt_adapter_set_visibility_mode_changed_cb()
- */
-int bt_adapter_unset_visibility_mode_changed_cb(void);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked every second
- * @since_tizen 2.3
- * until the visibility mode is changed from #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE
- * to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE.
- * @details  When you set visibility mode as #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE,
- * @a callback will be called every second until visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE.
- * @param[in]  callback  The callback function to register
- * @param[in]  user_data  The user data to be passed to the callback function
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The Bluetooth service must be initialized by bt_initialize().
- * @post  bt_adapter_visibility_duration_changed_cb() will be invoked.
- * @see  bt_initialize()
- * @see  bt_adapter_visibility_duration_changed_cb()
- * @see  bt_adapter_unset_visibility_duration_changed_cb()
- */
-int bt_adapter_set_visibility_duration_changed_cb(bt_adapter_visibility_duration_changed_cb callback, void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief       Unregisters the callback function.
- * @since_tizen 2.3
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The Bluetooth service must be initialized with bt_initialize().
- * @see  bt_initialize()
- * @see  bt_adapter_set_visibility_duration_changed_cb()
- */
-int bt_adapter_unset_visibility_duration_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked when the device discovery state changes.
- * @since_tizen 2.3
- *
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_device_discovery_state_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_device_discovery_state_changed_cb()
- * @see bt_adapter_set_device_discovery_state_changed_cb()
- * @see bt_adapter_unset_device_discovery_state_changed_cb()
- */
-int bt_adapter_set_device_discovery_state_changed_cb(bt_adapter_device_discovery_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- *
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- * @see bt_adapter_set_device_discovery_state_changed_cb()
- */
-int bt_adapter_unset_device_discovery_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Get the Hash and Randmoizer value, synchronously.
- * @since_tizen 2.3
- *
- * @param[out] hash The hash value received from the controller
- * @param[out] randomizer The hash value received from the controller
- * @param[out] hash_len The length of the hash value
- * @param[out] randomizer_len The length of the randomizer value
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- */
-int bt_adapter_get_local_oob_data(unsigned char **hash, unsigned char **randomizer,
-                                       int *hash_len, int *randomizer_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Sets the Hash and Randmoizer value, synchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address Remote device address
- * @param[in] hash The hash value received from the controller
- * @param[in] randomizer The hash value received from the controller
- * @param[in] hash_len The length of the hash value. Allowed value is 16
- * @param[in] randomizer_len The length of the randomizer value. Allowed value is 16
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- */
-int bt_adapter_set_remote_oob_data(const char *remote_address,
-                               unsigned char *hash, unsigned char *randomizer,
-                               int hash_len, int randomizer_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the Hash and Randmoizer value, synchronously.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks The @a hash192, randomizer192, hash256 and randomizer256 must be released using free()
- *
- * @param[out] hash192 The hash value derived from the P-192 public key
- * @param[out] randomizer192 The randomizer value associated with the P-192 public key
- * @param[out] hash192_len The length of @a hash192
- * @param[out] randomizer192_len The length of @a randomizer192
- * @param[out] hash256 The hash value derived from the P-256 public key
- * @param[out] randomizer256 The randomizer value associated with the P-256 public key
- * @param[out] hash256_len The length of @a hash256
- * @param[out] randomizer256_len The length of @a randomizer256
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- */
-int bt_adapter_get_local_oob_ext_data(unsigned char **hash192, unsigned char **randomizer192,
-               int *hash192_len, int *randomizer192_len,
-               unsigned char **hash256, unsigned char **randomizer256,
-               int *hash256_len, int *randomizer256_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Sets the Hash and Randmoizer value, synchronously.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address Remote device address
- * @param[in] hash192 The P-192 hash value received via OOB from remote device
- * @param[in] randomizer192 The P-192 randomizer value received via OOB from remote device
- * @param[in] hash192_len The length of @a hash192
- * @param[in] randomizer192_len The length of @a randomizer192
- * @param[in] hash256 The P-256 hash value received via OOB from remote device
- * @param[in] randomizer256 The P-256 randomizer value received via OOB from remote device
- * @param[in] hash256_len The length of @a hash256
- * @param[in] randomizer256_len The length of @a randomizer256
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- */
-int bt_adapter_set_remote_oob_ext_data(const char *remote_address,
-               const unsigned char *hash192, const unsigned char *randomizer192,
-               int hash192_len, int randomizer192_len,
-               const unsigned char *hash256, const unsigned char *randomizer256,
-               int hash256_len, int randomizer256_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Deletes the Hash and Randomizer value, synchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address Remote device address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- */
-int bt_adapter_remove_remote_oob_data(const char *remote_address);
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Starts the LE device discovery.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @details If a LE device is discovered, bt_adapter_le_device_discovery_state_changed_cb()
-*  will be invoked with #BT_ADAPTER_LE_DEVICE_DISCOVERY_FOUND, and then bt_adapter_le_device_discovery_state_changed_cb()
- * will be called with #BT_ADAPTER_LE_DEVICE_DISCOVERY_FINISHED in case of the completion or cancellation of the discovery.
- *
- * @remarks To connect to peer Bluetooth device, you need to know its Bluetooth address. \n
- * The device discovery can be stopped by bt_adapter_le_stop_device_discovery().
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post This function invokes bt_adapter_le_device_discovery_state_changed_cb().
- *
- * @see bt_adapter_le_is_discovering()
- * @see bt_adapter_le_device_discovery_state_changed_cb()
- * @see bt_adapter_le_set_device_discovery_state_changed_cb()
- * @see bt_adapter_le_unset_device_discovery_state_changed_cb()
- */
-int bt_adapter_le_start_device_discovery(void) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Stops the LE device discovery, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation is not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The device discovery must be in progress with bt_adapter_le_start_device_discovery().
- * @post This function invokes bt_adapter_le_device_discovery_state_changed_cb().
- *
- * @see bt_adapter_le_is_discovering()
- * @see bt_adapter_le_start_device_discovery()
- * @see bt_adapter_le_set_device_discovery_state_changed_cb()
- * @see bt_adapter_le_unset_device_discovery_state_changed_cb()
- * @see bt_adapter_le_device_discovery_state_changed_cb()
- */
-int bt_adapter_le_stop_device_discovery(void) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Checks for the LE device discovery is in progress or not.
- * @since_tizen 2.3
- *
- * @remarks If Bluetooth LE discovery is in progress, other operations are not allowed and
- * you have to either stop the LE discovery operation, or wait for it to be finished,
- * before performing other operations.
-
- * @param[out] is_discovering The discovering status: (@c true = in progress , @c  false = not in progress )
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_le_start_device_discovery()
- * @see bt_adapter_le_stop_device_discovery()
- */
-int bt_adapter_le_is_discovering(bool *is_discovering) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Registers a callback function to be invoked when the LE device discovery state changes.
- * @since_tizen 2.3
- *
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_le_device_discovery_state_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_le_device_discovery_state_changed_cb()
- * @see bt_adapter_le_unset_device_discovery_state_changed_cb()
- */
-int bt_adapter_le_set_device_discovery_state_changed_cb(bt_adapter_le_device_discovery_state_changed_cb callback, void *user_data) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- *
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- * @see bt_adapter_le_set_device_discovery_state_changed_cb()
- */
-int bt_adapter_le_unset_device_discovery_state_changed_cb(void) TIZEN_DEPRECATED_API;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Starts the LE scan to find LE advertisement.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @details If a LE advertisement is found, bt_adapter_le_scan_result_cb() will be invoked.
- *
- * @param[in] cb The callback to report the result of this function
- * @param[in] user_data The user data to be passed when callback is called
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post This function invokes bt_adapter_le_scan_result_cb().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_start_scan(bt_adapter_le_scan_result_cb cb, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Stops the LE scan.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation is not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The LE scan must be in progress with bt_adapter_le_start_scan().
- *
- * @see bt_adapter_le_start_scan()
- */
-int bt_adapter_le_stop_scan(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the service UUID list from the scan result information
- * @since_tizen 2.3.1
- *
- * @remarks The @a uuids must be iterated as count and each pointed data must be released with free().
- * Then uuids must be released with free(). \n
- * 16-bit service UUID or 128-bit service UUID is supported. (e.g. 180F, 0000180F-0000-1000-8000-00805F9B34FB)
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] uuids The list of string of the service uuid
- * @param[out] count The count of the service UUIDs
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_service_uuids(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, char ***uuids, int *count);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the device name from the scan result information
- * @since_tizen 2.3.1
- *
- * @remarks The @a name must be released with free() by you.
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] name The device name
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_device_name(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, char **name);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the transmission power level from the scan result information
- * @since_tizen 2.3.1
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] power_level The transmission power level in dBm
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_tx_power_level(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, int *power_level);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the service solicitation UUID list from the scan result information
- * @since_tizen 2.3.1
- *
- * @remarks The @a uuids must be iterated as count and each pointed data must be released with free().
- * Then uuids must be released with free(). \n
- * 16-bit service solicitation UUID or 128-bit service solicitation UUID is supported.
- * (e.g. 180F, 0000180F-0000-1000-8000-00805F9B34FB)
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] uuids The list of string of the service solicitation uuid
- * @param[out] count The count of the service UUIDs
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_service_solicitation_uuids(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, char ***uuids, int *count);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the service data list from the scan result information
- * @since_tizen 2.3.1
- *
- * @remarks The @a data_list must be released with bt_adapter_le_free_service_data_list() by you .
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] data_list The list of the service data
- * @param[out] count The count of the service data list
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_service_data_list(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, bt_adapter_le_service_data_s **data_list, int *count);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Frees service data list.
- * @since_tizen 2.3.1
- *
- * @param[in] data_list The list of the service data
- * @param[in] count The count of the service data list
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_adapter_le_get_scan_result_service_data_list()
- */
-int bt_adapter_le_free_service_data_list(bt_adapter_le_service_data_s *data_list, int count);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the appearance from the scan result information
- * @since_tizen 2.3.1
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] appearance The appearance
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_appearance(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, int *appearance);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the manufacturer data from the scan result information
- * @since_tizen 2.3.1
- *
- * @remarks The @a manufacturer_data must be released with free() by you.
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] manufacturer_id The manufacturer ID
- * @param[out] manufacturer_data The manufacturer data (byte array)
- * @param[out] manufacturer_data_len The length of manufacturer data
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_manufacturer_data(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, int *manufacturer_id, char **manufacturer_data, int *manufacturer_data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Create advertiser to advertise device's existence or respond to LE scanning request.
- * @since_tizen 2.3
- *
- * @param[out] advertiser The handle of advertiser
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_destroy_advertiser()
- */
-int bt_adapter_le_create_advertiser(bt_advertiser_h *advertiser);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Destroy advertiser.
- * @since_tizen 2.3
- *
- * @param[out] advertiser The handle of advertiser
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_create_advertiser()
- */
-int bt_adapter_le_destroy_advertiser(bt_advertiser_h advertiser);
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Set the data to be advertised or responded to scan request from LE scanning device.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3
- *
- * @remarks In case the data_type is local name or tx power level, you don't need to input data
- * because the data value is written automatically by system.
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] data_type The data type that is included in packet
- * @param[in] data The data to be advertised or be responded to scan request from LE scanning device, no need in case of LOCAL_NAME or TX_POWER_LEVEL
- * @param[in] data_size The size of data to be set.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_add_advertising_data(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, bt_adapter_le_packet_data_type_e data_type,
-               void *data, unsigned int data_size) TIZEN_DEPRECATED_API;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Add a service UUID to advertise or scan response data.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3.1
- *
- * @remarks 16-bit UUID or 128-bit UUID is supported. (e.g. 180F, 0000180F-0000-1000-8000-00805F9B34FB)
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] uuid The string of the service UUID.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_add_advertising_service_uuid(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, const char *uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Add a service solicitation UUID to advertise or scan response data.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3.1
- *
- * @remarks 16-bit service solicitation UUID or 128-bit service solicitation UUID is supported.
- * (e.g. 180F, 0000180F-0000-1000-8000-00805F9B34FB)
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] uuid The string of the service solicitation UUID.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_add_advertising_service_solicitation_uuid(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, const char *uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Add service data to advertise or scan response data.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3.1
- *
- * @remarks 16-bit UUID is supported. (e.g. 180F)
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] uuid 16-bit UUID of the service
- * @param[in] service_data The service data
- * @param[in] service_data_len The data length of service data
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_add_advertising_service_data(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, const char *uuid,
-               const char *service_data, int service_data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Sets the external appearance of this device to advertise or scan response data.
- *        Please refer to the adopted Bluetooth specification for the the appearance.
- * @since_tizen 2.3.1
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] appearance The external appearance of device
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_set_advertising_appearance(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, int appearance);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Add manufacturer specific data to advertise or scan response data.
- *        Please refer to the Bluetooth Assigned Numbers provided by the Bluetooth SIG for a list of existing company identifiers.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3.1
- *
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] manufacturer_id Manufacturer identifier
- * @param[in] manufacturer_data The manufacturer specific data
- * @param[in] manufacturer_data_len The data length of manufacturer data
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_add_advertising_manufacturer_data(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, int manufacturer_id, const char *manufacturer_data, int manufacturer_data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Set whether the device name should be included in advertise or scan response data.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3.1
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] include_name Whether the device name should be included
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_set_advertising_device_name(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, bool include_name);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Set whether the transmission power level should be included in advertise or scan response data.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3.1
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] include_tx_power Whether the transmission power level should be included
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_set_advertising_tx_power_level(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, bool include_tx_power);
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Unset the data to be advertised or responded to scan request from LE scanning device.
- * @since_tizen 2.3
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] data_type The data type to be removed from selected packet
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_add_advertising_data()
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_remove_advertising_data(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, bt_adapter_le_packet_data_type_e data_type) TIZEN_DEPRECATED_API;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Clear all data to be advertised or responded to scan request from LE scanning device.
- * @since_tizen 2.3
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type to be cleared
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_add_advertising_data()
- */
-int bt_adapter_le_clear_advertising_data(bt_advertiser_h advertiser, bt_adapter_le_packet_type_e pkt_type);
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Start advertising with passed advertiser and advertising parameters.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @details Once Bluetooth advertising is started, nearby Bluetooth LE(Low Energy) supported
- * devices can know this device's existence. And one of them can make a connection request,
- * if it is allowed.
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] adv_params The parameters of advertising \n
- * If NULL is passed, default values which are defined in driver / controller are used.
- * @param[in] cb The callback to report the result of this function
- * @param[in] user_data The user data to be passed when callback is called
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post This function invokes bt_adapter_le_advertising_state_changed_cb().
- *
- * @see bt_adapter_le_stop_advertising()
- * @see bt_adapter_le_advertising_state_changed_cb()
- */
-int bt_adapter_le_start_advertising(bt_advertiser_h advertiser, bt_adapter_le_advertising_params_s *adv_params,
-               bt_adapter_le_advertising_state_changed_cb cb, void *user_data) TIZEN_DEPRECATED_API;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Stops the advertising.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] advertiser The handle of advertiser
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation is not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The advertising must be going on with bt_adapter_le_start_advertising_new().
- * @post This function invokes bt_adapter_le_advertising_state_changed_cb().
- *
- * @see bt_adapter_le_start_advertising_new()
- * @see bt_adapter_le_advertising_state_changed_cb()
- */
-int bt_adapter_le_stop_advertising(bt_advertiser_h advertiser);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Start advertising with passed advertiser and advertising parameters.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @details Once Bluetooth advertising is started, nearby Bluetooth LE(Low Energy) supported
- * devices can know this device's existence. And one of them can make a connection request,
- * if it is allowed.
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] cb The callback to report the result of this function
- * @param[in] user_data The user data to be passed when callback is called
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post This function invokes bt_adapter_le_advertising_state_changed_cb().
- *
- * @see bt_adapter_le_stop_advertising()
- * @see bt_adapter_le_advertising_state_changed_cb()
- */
-int bt_adapter_le_start_advertising_new(bt_advertiser_h advertiser, bt_adapter_le_advertising_state_changed_cb cb, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Set advertising mode to control the advertising power and latency.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] mode The mode of advertising
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_start_advertising_new()
- */
-int bt_adapter_le_set_advertising_mode(bt_advertiser_h advertiser, bt_adapter_le_advertising_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Set whether the advertising type should be connectable or non-connectable
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] connectable The type of advertising
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_start_advertising_new()
- */
-int bt_adapter_le_set_advertising_connectable(bt_advertiser_h advertiser, bool connectable);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Sets Bluetooth LE scan mode
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] scan_mode The scan mode
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_ENABLED Adapter is not enabled
- * @retval #BT_ERROR_INVALID_PARAM Parameter is invalid
- * @retval #BT_ERROR_PERMISSION_DENIED Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED Not supported
- * @pre The state of local bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- */
-int bt_adapter_le_set_scan_mode(bt_adapter_le_scan_mode_e scan_mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Creates a bond with a remote Bluetooth device, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks A bond can be destroyed by bt_device_destroy_bond().\n
- * The bonding request can be cancelled by bt_device_cancel_bonding().
- *
- * @param[in] remote_address The address of the remote Bluetooth device with which the bond should be created
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The remote device must be discoverable with bt_adapter_start_device_discovery().
- * @post This function invokes bt_device_bond_created_cb().
- *
- * @see bt_adapter_start_device_discovery()
- * @see bt_device_bond_created_cb()
- * @see bt_device_cancel_bonding()
- * @see bt_device_destroy_bond()
- * @see bt_device_set_bond_created_cb()
- * @see bt_device_unset_bond_created_cb()
- */
-int bt_device_create_bond(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Cancels the bonding process.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks Use this function when the remote Bluetooth device is not responding to the
- * bond request or you wish to cancel the bonding request.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation not in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The creating a bond must be in progress by bt_device_create_bond().
- *
- * @see bt_device_create_bond()
- * @see bt_device_bond_created_cb()
- * @see bt_device_set_bond_created_cb()
- * @see bt_device_unset_bond_created_cb()
- */
-int bt_device_cancel_bonding(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Destroys the bond, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address The address of the remote Bluetooth device to remove bonding
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The bond with the remote device must be created with bt_device_create_bond().
- * @post This function invokes bt_device_bond_destroyed_cb().
- *
- * @see bt_device_create_bond()
- * @see bt_device_bond_destroyed_cb()
- * @see bt_device_set_bond_destroyed_cb()
- * @see bt_device_unset_bond_destroyed_cb()
- */
-int bt_device_destroy_bond(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Sets an alias for the bonded device.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address The address of the remote Bluetooth device
- * @param[in] alias The alias of the remote Bluetooth device
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The bond with the remote device must be created with bt_device_create_bond().
- *
- * @see bt_device_create_bond()
- */
-int bt_device_set_alias(const char *remote_address, const char *alias);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Sets the authorization of a bonded device, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks Once a device is authorized, you don't need to receive a confirmation.
- *
- * @param[in] remote_address The address of the remote Bluetooth device to authorize
- * @param[in] authorization_state The Bluetooth authorization state
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The bond with the remote device must be created with bt_device_create_bond().
- * @post bt_device_authorization_changed_cb() will be invoked.
- *
- * @see bt_device_create_bond()
- * @see bt_device_authorization_changed_cb()
- * @see bt_device_set_authorization_changed_cb()
- * @see bt_device_unset_authorization_changed_cb()
- */
-int bt_device_set_authorization(const char *remote_address, bt_device_authorization_e authorization_state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Starts the search for services supported by the specified device, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks If creating a bond succeeds, which means bt_device_bond_created_cb() is called with result #BT_ERROR_NONE,
- * then you don't need to run this function.\n
- * The service search takes a couple of seconds to complete normally. \n
- *
- * @param[in] remote_address The address of the remote Bluetooth device whose services need to be checked
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_SERVICE_SEARCH_FAILED  Service search failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The remote device must be discoverable with bt_adapter_start_device_discovery().
- * @pre The bond with the remote device must be created with bt_device_create_bond().
- * @post This function invokes bt_device_service_searched_cb().
- *
- * @see bt_adapter_start_device_discovery()
- * @see bt_device_create_bond()
- * @see bt_device_bond_created_cb()
- * @see bt_device_service_searched_cb()
- * @see bt_device_set_service_searched_cb()
- * @see bt_device_unset_service_searched_cb()
- */
-int bt_device_start_service_search(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Gets the connected profiles.
- * @since_tizen 2.3
- * @param[in] remote_address The address of the remote device
- * @param[in] callback The callback function to invoke
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post bt_device_connected_profile() will be invoked.
- * @see bt_device_connected_profile()
- */
-int bt_device_foreach_connected_profiles(const char *remote_address, bt_device_connected_profile callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Gets the profile connected status.
- * @since_tizen 2.3
- * @param[in] remote_address The address of the remote device
- * @param[in] bt_profile wish to know bt_profile
- * @param[out] connected_status the connected status
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_device_is_profile_connected(const char *remote_address, bt_profile_e bt_profile,
-                                       bool *connected_status);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Updates a LE connection mode
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address The address of the remote Bluetooth device
- * @param[in] mode The LE connection mode
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED   Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_device_update_le_connection_mode(const char *remote_address, bt_device_le_connection_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Registers a callback function to be invoked when the bond creates.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_device_bond_created_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_device_bond_created_cb()
- * @see bt_device_unset_bond_created_cb()
- */
-int bt_device_set_bond_created_cb(bt_device_bond_created_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_device_set_bond_created_cb()
- */
-int bt_device_unset_bond_created_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Registers a callback function to be invoked when the bond destroys.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_device_bond_destroyed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_device_bond_destroyed_cb()
- * @see bt_device_unset_bond_destroyed_cb()
- */
-int bt_device_set_bond_destroyed_cb(bt_device_bond_destroyed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_device_set_bond_destroyed_cb()
- */
-int bt_device_unset_bond_destroyed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Registers a callback function to be invoked when the authorization of device changes.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_device_authorization_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_device_authorization_changed_cb()
- * @see bt_device_set_authorization_changed_cb()
- * @see bt_device_unset_authorization_changed_cb()
- */
-int bt_device_set_authorization_changed_cb(bt_device_authorization_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_device_set_authorization_changed_cb()
- */
-int bt_device_unset_authorization_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Registers a callback function to be invoked when the process of service search finishes.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_device_service_searched_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_device_service_searched_cb()
- * @see bt_device_unset_service_searched_cb()
- */
-int bt_device_set_service_searched_cb(bt_device_service_searched_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_device_set_service_searched_cb()
- */
-int bt_device_unset_service_searched_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Registers a callback function to be invoked when the connection state is changed.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_device_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_device_connection_state_changed_cb()
- * @see bt_device_unset_connection_state_changed_cb()
- */
-int bt_device_set_connection_state_changed_cb(bt_device_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief      Unregisters the callback function to be invoked when the connection state is changed.
- * @since_tizen 2.3
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_device_set_connection_state_changed_cb()
- */
-int bt_device_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Registers a rfcomm server socket with a specific UUID.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks A socket can be destroyed by bt_socket_destroy_rfcomm().
- *
- * @param[in] service_uuid The UUID of service to provide
- * @param[out] socket_fd The file descriptor of socket to listen
- * @return 0 on success, otherwise a negative error value.
- *
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_socket_listen_and_accept_rfcomm()
- * @see bt_socket_destroy_rfcomm()
- */
-int bt_socket_create_rfcomm(const char *service_uuid, int *socket_fd);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Removes the rfcomm server socket which was created using bt_socket_create_rfcomm().
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remarks If callback function bt_socket_connection_state_changed_cb() is set and the remote Bluetooth device is connected,
- * then bt_socket_connection_state_changed_cb() will be called when this function is finished successfully.
- *
- * @param[in] socket_fd The file descriptor of socket (which was created using bt_socket_create_rfcomm()) to destroy
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The socket must be created with bt_socket_create_rfcomm().
- * @post If callback function bt_socket_connection_state_changed_cb() is set and the remote Bluetooth device is connected,
- * then bt_socket_connection_state_changed_cb() will be called.
- * @see bt_socket_create_rfcomm()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_destroy_rfcomm(int socket_fd);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Starts listening on passed rfcomm socket and accepts connection requests.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @details Pop-up is shown automatically when a RFCOMM connection is requested.
- * bt_socket_connection_state_changed_cb() will be called with
- * #BT_SOCKET_CONNECTED if you click "yes" and connection is finished successfully.
- * @param[in] socket_fd The file descriptor of socket on which start to listen
- * @param[in] max_pending_connections The maximum number of pending connections
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The socket must be created with bt_socket_create_rfcomm().
- * @post If callback function bt_socket_connection_state_changed_cb() is set,
- * then bt_socket_connection_state_changed_cb() will be called when the remote Bluetooth device is connected.
- * @see bt_socket_create_rfcomm()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_listen_and_accept_rfcomm(int socket_fd, int max_pending_connections);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Connects to a specific RFCOMM based service on a remote Bluetooth device UUID, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks A connection can be disconnected by bt_socket_disconnect_rfcomm().
- *
- * @param[in] remote_address The address of the remote Bluetooth device
- * @param[in] service_uuid The UUID of service provided by the remote Bluetooth device
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The remote device must be discoverable with bt_adapter_start_device_discovery().
- * @pre The bond with the remote device must be created with bt_device_create_bond().
- * @post This function invokes bt_socket_connection_state_changed_cb().
- *
- * @see bt_device_create_bond()
- * @see bt_adapter_start_device_discovery()
- * @see bt_device_start_service_search()
- * @see bt_socket_disconnect_rfcomm()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_connect_rfcomm(const char *remote_address, const char *service_uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Disconnects the RFCOMM connection with the given file descriptor of connected socket.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] socket_fd  The file descriptor of socket to close which was received using bt_socket_connection_state_changed_cb().
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The connection must be established.
- *
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_disconnect_rfcomm(int socket_fd);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Sends data to the connected device.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remark The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
- *
- * @param[in] socket_fd The file descriptor of connected socket which was received using bt_socket_connection_state_changed_cb()
- * @param[in] data The data to be sent
- * @param[in] length The length of data to be sent
- *
- * @return the number of bytes written (zero indicates nothing was written).
- * @retval On error, -1 is returned, and errno is set appropriately. See write 2 man page.
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- * @exception BT_ERROR_PERMISSION_DENIED  Permission denied
- * @exception BT_ERROR_AGAIN  Resource temporarily unavailable
- *
- * @pre The connection must be established.
- *
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_send_data(int socket_fd, const char *data, int length);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Register a callback function that will be invoked when you receive data.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_socket_data_received_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_socket_data_received_cb()
- * @see bt_socket_set_data_received_cb()
- * @see bt_socket_unset_data_received_cb()
- */
-int bt_socket_set_data_received_cb(bt_socket_data_received_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_socket_data_received_cb()
- * @see bt_socket_set_data_received_cb()
- */
-int bt_socket_unset_data_received_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Register a callback function that will be invoked when a RFCOMM connection is requested.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_socket_connection_requested_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_socket_unset_connection_requested_cb()
- */
-int bt_socket_set_connection_requested_cb(bt_socket_connection_requested_cb callback, void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Unregisters the callback function.
- * @since_tizen 2.3
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre  The Bluetooth service must be initialized with bt_initialize().
- * @see  bt_initialize()
- * @see  bt_socket_set_connection_requested_cb()
- * @see  bt_socket_connection_requested_cb()
- */
-int bt_socket_unset_connection_requested_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Register a callback function that will be invoked when the connection state changes.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_socket_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_set_connection_state_changed_cb(bt_socket_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- */
-int bt_socket_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Initializes the Bluetooth OPP server requested by bt_opp_server_connection_requested_cb().
- * @since_tizen 2.3
- * @details No popup appears when an OPP connection is requested from a remote device.
- * Instead, @a connection_requested_cb() will be called.
- * At that time, you can call either bt_opp_server_accept() or bt_opp_server_reject().
- * @remarks This function must be called to start Bluetooth OPP server. \n
- * You must free all resources of the Bluetooth service by calling bt_opp_server_deinitialize() if Bluetooth OPP service is no longer needed.
- * @param[in] destination  The destination path
- * @param[in] connection_requested_cb  The callback called when an OPP connection is requested
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_server_connection_requested_cb()
- * @see  bt_opp_server_deinitialize()
- * @see  bt_opp_server_accept()
- * @see  bt_opp_server_reject()
- */
-int bt_opp_server_initialize_by_connection_request(const char *destination, bt_opp_server_connection_requested_cb connection_requested_cb, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Deinitializes the Bluetooth OPP server.
- * @since_tizen 2.3
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_server_deinitialize()
- */
-int bt_opp_server_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Accepts the push request from the remote device.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remarks If you initialize OPP server by bt_opp_server_initialize_by_connection_request(), then name is ignored.
- * You can cancel the pushes by bt_opp_server_cancel_transfer() with transfer_id.
- * @param[in] progress_cb  The callback called when a file is being transferred
- * @param[in] finished_cb  The callback called when a transfer is finished
- * @param[in] name  The name to store. This can be NULL if you initialize OPP server by bt_opp_server_initialize_by_connection_request().
- * @param[in] user_data The user data to be passed to the callback function
- * @param[out]  transfer_id  The ID of transfer
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_server_reject()
- */
-int bt_opp_server_accept(bt_opp_server_transfer_progress_cb progress_cb,
-       bt_opp_server_transfer_finished_cb finished_cb, const char *name,
-       void *user_data, int *transfer_id);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Rejects the push request from the remote device.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_server_accept()
- */
-int bt_opp_server_reject(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Cancels the transfer.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] transfer_id  The ID of transfer
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_server_accept()
- */
-int bt_opp_server_cancel_transfer(int transfer_id);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Sets the destination path of file to be pushed.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] destination  The destination path of file to be pushed
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- */
-int bt_opp_server_set_destination(const char *destination);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief Initializes the Bluetooth OPP client.
- * @since_tizen 2.3
- * @remarks This function must be called before Bluetooth OPP client starts. \n
- * You must free all resources of the Bluetooth service by calling bt_opp_client_deinitialize()
- * if Bluetooth OPP service is no longer needed.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_client_deinitialize()
- */
-int bt_opp_client_initialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief Deinitializes the Bluetooth OPP client.
- * @since_tizen 2.3
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_client_initialize()
- */
-int bt_opp_client_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief Adds file to be pushed.
- * @since_tizen 2.3
- * @param[in] file  The path of file to be pushed
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_client_clear_files()
- * @see  bt_opp_client_push_files()
- */
-int bt_opp_client_add_file(const char *file);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief Adds file to be pushed.
- * @since_tizen 2.3
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_client_add_file()
- * @see  bt_opp_client_push_files()
- */
-int bt_opp_client_clear_files(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief Pushes the file to the remote device, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @details At first, bt_opp_client_push_responded_cb() will be called when OPP server responds to the push request.
- * After connection is established, bt_opp_client_push_progress_cb() will be called repeatedly until a file is transferred completely.
- * If you send several files, then bt_opp_client_push_progress_cb() with another file will be called repeatedly until the file is transferred completely.
- * bt_opp_client_push_finished_cb() will be called when the push request is finished.
- * @param[in] remote_address The remote address
- * @param[in] responded_cb  The callback called when OPP server responds to the push request
- * @param[in] progress_cb  The callback called when each file is being transferred
- * @param[in] finished_cb  The callback called when the push request is finished
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see bt_opp_client_initialize()
- * @see bt_opp_client_cancel_push
- */
-int bt_opp_client_push_files(const char *remote_address, bt_opp_client_push_responded_cb responded_cb,
-       bt_opp_client_push_progress_cb progress_cb, bt_opp_client_push_finished_cb finished_cb, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief Cancels the push request in progress, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre bt_opp_client_push_files() must be called.
- * @post bt_opp_client_push_finished_cb() will be invoked with result #BT_ERROR_CANCELLED,
- * which is a parameter of bt_opp_client_push_files().
- * @see bt_opp_client_initialize()
- * @see bt_opp_client_push_files()
- */
-int bt_opp_client_cancel_push(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Initializes the Bluetooth HID(Human Interface Device) Host.
- * @since_tizen 2.3
- * @remarks This function must be called before Bluetooth HID Host starts. \n
- * You must free all resources of the Bluetooth service by calling bt_hid_host_deinitialize()
- * if Bluetooth HID Host service is no longer needed.
- * @param[in] connection_cb  The callback called when the connection state is changed
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see  bt_hid_host_deinitialize()
- */
-int bt_hid_host_initialize(bt_hid_host_connection_state_changed_cb connection_cb, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Deinitializes the Bluetooth HID(Human Interface Device) Host.
- * @since_tizen 2.3
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth HID service must be initialized with bt_hid_host_initialize().
- * @see  bt_hid_host_initialize()
- */
-int bt_hid_host_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Connects the remote device with the HID(Human Interface Device) service, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The local device must be bonded with the remote device by bt_device_create_bond().
- * @pre The Bluetooth HID service must be initialized with bt_hid_host_initialize().
- * @post bt_hid_host_connection_state_changed_cb() will be invoked.
- * @see bt_hid_host_disconnect()
- * @see bt_hid_host_connection_state_changed_cb()
- */
-int bt_hid_host_connect(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Disconnects the remote device with the HID(Human Interface Device) service, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The remote device must be connected by bt_hid_host_connect().
- * @post bt_hid_host_connection_state_changed_cb() will be invoked.
- * @see bt_hid_host_connect()
- * @see bt_hid_host_connection_state_changed_cb()
- */
-int bt_hid_host_disconnect(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief Initializes the Bluetooth profiles related with audio.
- * @since_tizen 2.3
- * @remarks This function must be called before Bluetooth profiles related with audio starts. \n
- * You must free all resources of the this service by calling bt_audio_deinitialize()
- * if Bluetooth profiles related with audio service is no longer needed.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_audio_deinitialize()
- */
-int bt_audio_initialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief Deinitializes the Bluetooth profiles related with audio.
- * @since_tizen 2.3
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- */
-int bt_audio_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief Connects the remote device with the given audio profile, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @details If you input type as #BT_AUDIO_PROFILE_TYPE_ALL and connection request succeeds, then bt_audio_connection_state_changed_cb() will be called twice
- * when #BT_AUDIO_PROFILE_TYPE_HSP_HFP is connected and #BT_AUDIO_PROFILE_TYPE_A2DP is connected.
- * @param[in] remote_address  The remote address
- * @param[in] type  The type of audio profile
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
-
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @pre The local device must be bonded with the remote device by bt_device_create_bond().
- * @post bt_audio_connection_state_changed_cb() will be invoked.
- * @see bt_audio_disconnect()
- * @see bt_audio_connection_state_changed_cb()
- */
-int bt_audio_connect(const char *remote_address, bt_audio_profile_type_e type);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief Disconnects the remote device with the given audio profile, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @details If you input type as #BT_AUDIO_PROFILE_TYPE_ALL and disconnection request succeeds, then bt_audio_connection_state_changed_cb() will be called twice
- * when #BT_AUDIO_PROFILE_TYPE_HSP_HFP is disconnected and #BT_AUDIO_PROFILE_TYPE_A2DP is disconnected.
- * @param[in] remote_address  The remote address
- * @param[in] type  The type of audio profile
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected by bt_audio_connect().
- * @post bt_audio_connection_state_changed_cb() will be invoked.
- * @see bt_audio_connect()
- * @see bt_audio_connection_state_changed_cb()
- */
-int bt_audio_disconnect(const char *remote_address, bt_audio_profile_type_e type);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Registers a callback function that will be invoked when the connection state is changed.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_audio_connection_state_changed_cb()
- */
-int bt_audio_set_connection_state_changed_cb(bt_audio_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Unregisters a callback function that will be invoked when the connection state is changed.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_audio_connection_state_changed_cb()
- * @see bt_audio_set_connection_state_changed_cb()
- */
-int bt_audio_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief Initializes the Bluetooth AVRCP (Audio/Video Remote Control Profile) target service.
- * @since_tizen 2.4
- * @remarks This function must be called before any other AVRCP target functions are called. \n
- * You must free all resources of the this service by calling bt_avrcp_target_deinitialize()
- * if Bluetooth AVRCP service is no longer needed.
- * @param[in] callback The callback function called when the connection state is changed
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_avrcp_target_deinitialize()
- */
-int bt_avrcp_target_initialize(bt_avrcp_target_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief Deinitializes the Bluetooth AVRCP (Audio/Video Remote Control Profile) target service.
- * @since_tizen 2.4
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_avrcp_target_initialize().
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the equalizer state to the remote device.
- * @since_tizen 2.4
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] state The state of equalizer
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_equalizer_state(bt_avrcp_equalizer_state_e state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the repeat mode to the remote device.
- * @since_tizen 2.4
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] mode The repeat mode
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_repeat_mode(bt_avrcp_repeat_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the shuffle mode to the remote device.
- * @since_tizen 2.4
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] mode The repeat mode
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_shuffle_mode(bt_avrcp_shuffle_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the scan mode to the remote device.
- * @since_tizen 2.4
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] mode The scan mode
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_scan_mode(bt_avrcp_scan_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the player state to the remote device.
- * @since_tizen 2.4
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] state The player state
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_player_state(bt_avrcp_player_state_e state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the current position of song to the remote device.
- * @since_tizen 2.4
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] position The current position in milliseconds
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_position(unsigned int position);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the track to the remote device.
- * @since_tizen 2.4
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] title The title of track
- * @param[in] artist The artist of track
- * @param[in] album The album of track
- * @param[in] genre The genre of track
- * @param[in] track_num The track number
- * @param[in] total_tracks The number of all tracks
- * @param[in] duration The duration of track in milliseconds
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_track(const char *title, const char *artist, const char *album, const char *genre, unsigned int track_num, unsigned int total_tracks, unsigned int duration);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the equalizer state is changed.
- * @since_tizen 2.4
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_equalizer_state_changed_cb()
- */
-int bt_avrcp_set_equalizer_state_changed_cb(bt_avrcp_equalizer_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the equalizer state is changed.
- * @since_tizen 2.4
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_equalizer_state_changed_cb()
- */
-int bt_avrcp_unset_equalizer_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the repeat mode is changed.
- * @since_tizen 2.4
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_repeat_mode_changed_cb()
- */
-int bt_avrcp_set_repeat_mode_changed_cb(bt_avrcp_repeat_mode_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the repeat mode is changed.
- * @since_tizen 2.4
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_repeat_mode_changed_cb()
- */
-int bt_avrcp_unset_repeat_mode_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the shuffle mode is changed.
- * @since_tizen 2.4
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_shuffle_mode_changed_cb()
- */
-int bt_avrcp_set_shuffle_mode_changed_cb(bt_avrcp_shuffle_mode_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the shuffle mode is changed.
- * @since_tizen 2.4
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_shuffle_mode_changed_cb()
- */
-int bt_avrcp_unset_shuffle_mode_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the scan mode is changed.
- * @since_tizen 2.4
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_scan_mode_changed_cb()
- */
-int bt_avrcp_set_scan_mode_changed_cb(bt_avrcp_scan_mode_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the scan mode is changed.
- * @since_tizen 2.4
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_scan_mode_changed_cb()
- */
-int bt_avrcp_unset_scan_mode_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the song position is changed.
- * @since_tizen 3.0
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_position_changed_cb()
- */
-int bt_avrcp_set_position_changed_cb(bt_avrcp_position_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the song position is changed.
- * @since_tizen 3.0
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_position_changed_cb()
- */
-int bt_avrcp_unset_position_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the Play status is changed.
- * @since_tizen 3.0
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_play_status_changed_cb()
- */
-int bt_avrcp_set_play_status_changed_cb(bt_avrcp_play_status_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the Play status is changed.
- * @since_tizen 3.0
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_play_status_changed_cb()
- */
-int bt_avrcp_unset_play_status_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the track metadata is changed.
- * @since_tizen 3.0
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_track_info_changed_cb()
- */
-int bt_avrcp_set_track_info_changed_cb(bt_avrcp_track_info_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the track metadata is changed.
- * @since_tizen 3.0
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_track_info_changed_cb()
- */
-int bt_avrcp_unset_track_info_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief Initializes the Bluetooth AVRCP (Audio/Video Remote Control Profile) controller service.
- * @since_tizen 3.0
- * @remarks This function must be called before any other AVRCP controller functions are called. \n
- * You must free all resources of the this service by calling bt_avrcp_control_deinitialize()
- * if Bluetooth AVRCP service is no longer needed.
- * @param[in] callback The callback function called when the connection state is changed
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_avrcp_control_deinitialize()
- */
-int bt_avrcp_control_initialize(bt_avrcp_control_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief Deinitializes the Bluetooth AVRCP (Audio/Video Remote Control Profile) controller service.
- * @since_tizen 3.0
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_avrcp_control_initialize().
- * @see bt_avrcp_control_initialize()
- */
-int bt_avrcp_control_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief Connects the AVRCP (Audio/Video Remote Control Profile) target device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_avrcp_control_initialize().
- * @see bt_avrcp_control_initialize()
- */
-int bt_avrcp_control_connect(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief Disconnects from the AVRCP (Audio/Video Remote Control Profile) target device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_avrcp_control_initialize().
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_control_connect()
- */
-int bt_avrcp_control_disconnect(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief Sends a command to the target device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] cmd The commands, one of: Play, Pause, Next, Rewind.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_avrcp_control_initialize().
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_control_connect()
- */
-int bt_avrcp_control_send_player_command(bt_avrcp_player_command_e cmd);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Sends the equalizer state change request to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] state The new equalizer state, one of: ON, OFF
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_set_equalizer_state(bt_avrcp_equalizer_state_e state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the the equalizer state of the remote device.
- * @since_tizen 3.0
- * @param[out] state The equalizer state, one of: ON, OFF
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_equalizer_state(bt_avrcp_equalizer_state_e *state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Sends the repeat change request to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] mode The new repeat mode, one of: OFF, SINGLE, ALL
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_set_repeat_mode(bt_avrcp_repeat_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the repeat state of the remote device.
- * @since_tizen 3.0
- * @param[out] mode The repeat mode, one of: OFF, SINGLE, ALL
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_repeat_mode(bt_avrcp_repeat_mode_e *mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Sends the shuffle mode change request to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] mode The new shuffle mode, one of: OFF, GROUP, ALL
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_set_shuffle_mode(bt_avrcp_shuffle_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the shuffle mode of the remote device.
- * @since_tizen 3.0
- * @param[out] mode The shuffle mode, one of: OFF, GROUP, ALL
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_shuffle_mode(bt_avrcp_shuffle_mode_e *mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Sends the scan mode change request to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] mode The new scan mode, one of: OFF, GROUP, ALL
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_set_scan_mode(bt_avrcp_scan_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the scan mode of the remote device.
- * @since_tizen 3.0
- * @param[out] mode The scan mode, one of: OFF, GROUP, ALL
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_scan_mode(bt_avrcp_scan_mode_e *mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the position of the song played by the remote device.
- * @since_tizen 3.0
- * @param[out] position The position, in milliseconds
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_position(unsigned int *position);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the play status of the remote device.
- * @since_tizen 3.0
- * @param[out] status The play status, one of: PLAYING, STOPPED...
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_play_status(bt_avrcp_player_state_e *status);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the metadata of the track played by the remote device.
- * @since_tizen 3.0
- * @remarks The @a track must be released using bt_avrcp_control_free_track_info()
- * @param[out] track The track metadata.
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_track_info(bt_avrcp_metadata_attributes_info_s **track);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Frees the track metadata.
- * @since_tizen 3.0
- * @param[in] track The track metadata.
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre track should point to valid metadata address.
- * @see bt_avrcp_control_get_track_info()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_free_track_info(bt_avrcp_metadata_attributes_info_s *track);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief Registers an application that acts as the @a Sink role of HDP(Health Device Profile).
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remarks The @a app_id must be released with free() by you.
- * @param[in] data_type  The data type of MDEP. This value is defined in ISO/IEEE 11073-20601 spec.
- * For example, pulse oximeter is 0x1004 and blood pressure monitor is 0x1007.
- * @param[out] app_id  The ID of application
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see bt_hdp_unregister_sink_app()
- */
-int bt_hdp_register_sink_app(unsigned short data_type, char **app_id);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief Unregisters the given application that acts as the @a Sink role of HDP(Health Device Profile).
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] app_id  The ID of application
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_hdp_register_sink_app()
- */
-int bt_hdp_unregister_sink_app(const char *app_id);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief Connects the remote device which acts as @a Source role, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @param[in] app_id  The ID of application
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Sink role of HDP must be registered with bt_hdp_register_sink_app().
- * @pre The local device must be bonded with the remote device by bt_device_create_bond().
- * @post bt_hdp_connected_cb() will be invoked.
- * @see bt_hdp_disconnect()
- * @see bt_hdp_set_connection_state_changed_cb()
- * @see bt_hdp_unset_connection_state_changed_cb()
- */
-int bt_hdp_connect_to_source(const char *remote_address, const char *app_id);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief Disconnects the remote device, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @param[in] channel  The connected data channel
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @post bt_hdp_disconnected_cb() will be invoked.
- * @see bt_hdp_set_connection_state_changed_cb()
- * @see bt_hdp_unset_connection_state_changed_cb()
- */
-int bt_hdp_disconnect(const char *remote_address, unsigned int channel);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief Sends the data to the remote device.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] channel  The connected data channel
- * @param[in] data  The data to send
- * @param[in] size  The size of data to send (byte)
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_hdp_data_received_cb()
- * @see bt_hdp_set_data_received_cb()
- * @see bt_hdp_unset_data_received_cb()
- */
-int bt_hdp_send_data(unsigned int channel, const char *data, unsigned int size);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Registers a callback function that will be invoked when the connection state is changed.
- * @since_tizen 2.3
- * @param[in] connected_cb The callback function called when a connection is established
- * @param[in] disconnected_cb The callback function called when a connection is disconnected
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_hdp_unset_connection_state_changed_cb()
- */
-int bt_hdp_set_connection_state_changed_cb(bt_hdp_connected_cb connected_cb, bt_hdp_disconnected_cb disconnected_cb, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the connection state is changed.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_hdp_set_connection_state_changed_cb()
- */
-int bt_hdp_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Registers a callback function that will be invoked when you receive the data.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_hdp_unset_data_received_cb()
- */
-int bt_hdp_set_data_received_cb(bt_hdp_data_received_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Unregisters a callback function that will be invoked when you receive the data.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_hdp_set_data_received_cb()
- */
-int bt_hdp_unset_data_received_cb(void);
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_foreach_services or bt_gatt_client_get_service instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the primary services of GATT(Generic Attribute Profile).
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in]  remote_address  The address of the remote device
- * @param[in]  callback  The callback function to invoke
- * @param[in]  user_data  The user data to be passed to the callback function
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post  @a callback will be called if there are primary services.
- * @see  bt_gatt_primary_service_cb()
- */
-int bt_gatt_foreach_primary_services(const char *remote_address, bt_gatt_primary_service_cb callback, void *user_data) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. This function call is not required because characteristic discovery is happened automatically.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Discovers the characteristics in service, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in]  service  The attribute handle of service
- * @param[in]  callback  The result callback
- * @param[in]  user_data  The user data to be passed to the callback function
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post  @a callback will be called.
- * @see  bt_gatt_characteristics_discovered_cb()
- */
-int bt_gatt_discover_characteristics(bt_gatt_attribute_h service, bt_gatt_characteristics_discovered_cb callback, void *user_data) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_get_uuid instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the UUID of service.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remarks  @a uuid must be released with free() by you.
- * @param[in]  service  The attribute handle of service
- * @param[out]  uuid  The UUID of service
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval  #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_gatt_get_service_uuid(bt_gatt_attribute_h service, char **uuid) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_service_foreach_included_services or bt_gatt_service_get_included_service instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the included services in service.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in]  service  The attribute handle of service
- * @param[in]  callback  The callback function to invoke
- * @param[in]  user_data  The user data to be passed to the callback function
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post  @a callback will be called if there are included services.
- * @see  bt_gatt_included_service_cb()
- */
-int bt_gatt_foreach_included_services(bt_gatt_attribute_h service, bt_gatt_included_service_cb callback, void *user_data) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_set_characteristic_value_changed_cb instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Registers a callback function that will be invoked when a characteristic value is changed.
- * @since_tizen 2.3
- * @param[in]  callback  The callback function to register
- * @param[in]  user_data  The user data to be passed to the callback function
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The Bluetooth service must be initialized with bt_initialize().
- * @see  bt_gatt_unset_characteristic_changed_cb()
- */
-int bt_gatt_set_characteristic_changed_cb(bt_gatt_characteristic_changed_cb callback, void *user_data) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_unset_characteristic_value_changed_cb instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Unregisters a callback function that will be invoked when a characteristic is changed.
- * @since_tizen 2.3
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_gatt_set_characteristic_changed_cb()
- */
-int bt_gatt_unset_characteristic_changed_cb(void) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_set_characteristic_value_changed_cb instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Watches all the characteristic value changes of the service.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in]  service  The attribute handle of service
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The Bluetooth service must be initialized with bt_initialize().
- * @see  bt_gatt_unset_characteristic_changed_cb()
- */
-int bt_gatt_watch_characteristic_changes(bt_gatt_attribute_h service) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_unset_characteristic_value_changed_cb instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Remove watching of all the characteristic value changes of the service.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in]  service  The attribute handle of service
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_gatt_set_characteristic_changed_cb()
- */
-int bt_gatt_unwatch_characteristic_changes(bt_gatt_attribute_h service) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_get_value or bt_gatt_get_uuid after bt_gatt_client_read_value instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the characteristic declaration.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remarks  @a uuid and @a value must be released with free() by you.
- * @param[in]  characteristic  The attribute handle of characteristic
- * @param[out]  uuid  The UUID of service
- * @param[out]  value  The value of characteristic (byte array)
- * @param[out]  value_length  The length of value
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval  #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see  bt_gatt_set_characteristic_value()
- */
-int bt_gatt_get_characteristic_declaration(bt_gatt_attribute_h characteristic, char **uuid, unsigned char **value, int *value_length) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_set_value and bt_gatt_client_write_value instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Sets the value of characteristic.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in]  characteristic  The attribute handle of characteristic
- * @param[in]  value  The value of characteristic (byte array)
- * @param[in]  value_length  The length of value
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see  bt_gatt_get_characteristic_declaration()
- */
-int bt_gatt_set_characteristic_value(bt_gatt_attribute_h characteristic, const unsigned char *value, int value_length) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_set_value and bt_gatt_client_write_value instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Sets the value of characteristic request.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in]  characteristic  The attribute handle of characteristic
- * @param[in]  value  The value of characteristic (byte array)
- * @param[in]  value_length  The length of value
- * @param[in]  callback  The result callback
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see  bt_gatt_get_characteristic_declaration()
- */
-int bt_gatt_set_characteristic_value_request(bt_gatt_attribute_h characteristic, const unsigned char *value,
-                               int value_length, bt_gatt_characteristic_write_cb callback) TIZEN_DEPRECATED_API;
-
-/**
-* @deprecated Deprecated since 2.3.1. GATT handle clone is not allowed. Instead, all handles for client role must be got from GATT client handle.
-* @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
-* @brief  Clones the attribute handle.
-* @since_tizen 2.3
-* @remarks  @a clone must be released with bt_gatt_destroy_attribute_handle().
-* @param[out]  clone  The cloned attribute handle
-* @param[in]  origin  The origin attribute handle
-* @return  0 on success, otherwise negative error value.
-* @retval  #BT_ERROR_NONE  Successful
-* @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
-* @retval  #BT_ERROR_OUT_OF_MEMORY  Out of memory
-* @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
-*
-* @see  bt_gatt_destroy_attribute_handle()
-*/
-int bt_gatt_clone_attribute_handle(bt_gatt_attribute_h *clone, bt_gatt_attribute_h origin) TIZEN_DEPRECATED_API;
-
-/**
-* @deprecated Deprecated since 2.3.1. GATT handle clone and destroy are not allowed.
-* @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
-* @brief  Destroys the attribute handle.
-* @since_tizen 2.3
-* @param[in]  handle  The attribute handle
-* @return  0 on success, otherwise negative error value.
-* @retval  #BT_ERROR_NONE  Successful
-* @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
-* @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
-*
-* @see  bt_gatt_clone_attribute_handle()
-*/
-int bt_gatt_destroy_attribute_handle(bt_gatt_attribute_h handle) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use gatt_client_read_value instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Reads the value of characteristic from remote device.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in]  char_handle  The attribute handle of characteristic
- * @param[in]  callback  The result callback
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE      Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see  bt_gatt_get_characteristic_declaration()
- */
-int bt_gatt_read_characteristic_value(bt_gatt_attribute_h char_handle,
-               bt_gatt_characteristic_read_cb callback) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. This function call is not required because descriptor discovery is happened automatically.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Discovers the characteristic descriptors of a characteristic within its definition, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in]  characteristic_handle  The attribute handle of characteristic
- * @param[in]  callback  The result callback
- * @param[in]  user_data  The user data to be passed to the callback function
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post  @a callback will be called.
- * @see  bt_gatt_characteristic_descriptor_discovered_cb()
- */
-int bt_gatt_discover_characteristic_descriptor(bt_gatt_attribute_h characteristic_handle,
-               bt_gatt_characteristic_descriptor_discovered_cb callback,
-               void *user_data) TIZEN_DEPRECATED_API;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the value of a characteristic or descriptor's GATT handle.
- * @since_tizen 2.3.1
- *
- * @remarks @a value must be released using free(). \n
- * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_read_value() must be used prior to this function \n
- * in order to get the remote device's current value.
- *
- * @param[in] gatt_handle The handle of a characteristic or descriptor
- * @param[out] value The value of @a gatt_handle. It is a byte stream type.
- * @param[out] value_length The length of @a value
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_get_value(bt_gatt_h gatt_handle, char **value, int *value_length);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the value of a characteristic or descriptor's GATT handle as an integer type.
- * @since_tizen 2.3.1
- *
- * @remarks This function returns a locally saved value in @a gatt_handle. \n
- * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_read_value() must be used prior to this function \n
- * in order to get the remote device's current value.
- *
- * @param[in] gatt_handle The handle of a characteristic or descriptor
- * @param[in] type The type of a saved value in @a gatt_handle
- * @param[in] offset The offset from where a value will be read from @a gatt_handle as an integer type
- * @param[out] value The integer type's value of @a gatt_handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_get_int_value(bt_gatt_h gatt_handle, bt_data_type_int_e type,
-                       int offset, int *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the value of a characteristic or descriptor's GATT handle as a float type.
- * @since_tizen 2.3.1
- *
- * @remarks This function returns a locally saved value in @a gatt_handle. \n
- * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_read_value() must be used prior to this function \n
- * in order to get the remote device's current value.
- *
- * @param[in] gatt_handle  The handle of a characteristic or descriptor
- * @param[in] type The type of a saved value in @a gatt_handle
- * @param[in] offset The offset from where a value will be read from @a gatt_handle as an integer type
- * @param[out] value The float type's value of @a gatt_handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_get_float_value(bt_gatt_h gatt_handle, bt_data_type_float_e type,
-                       int offset, float *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Updates the value of a characteristic or descriptor's GATT handle.
- * @since_tizen 2.3.1
- *
- * @remarks This function updates a value of @a gatt_handle locally. \n
- * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_write_value() can be used after this function \n
- * in order to update the remote device's value. \n
- *
- * @param[in] gatt_handle The handle of a characteristic or descriptor
- * @param[in] value The value to be updated
- * @param[in] value_length The length of @a value
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_set_value(bt_gatt_h gatt_handle, const char *value, int value_length);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Updates the value of a characteristic or descriptor's GATT handle using a integer type's value.
- * @since_tizen 2.3.1
- *
- * @remarks This function updates a value of @a gatt_handle locally. \n
- * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_write_value() can be used after this function \n
- * in order to update the remote device's value. \n
- *
- * @param[in] gatt_handle The handle of a characteristic or descriptor
- * @param[in] type @a value will be saved in @a gatt_handle as this type
- * @param[in] value The integer type's value to be updated
- * @param[in] offset The offset from where @a value will be saved in @a gatt_handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_set_int_value(bt_gatt_h gatt_handle, bt_data_type_int_e type,
-                       int value, int offset);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Updates the value of a characteristic or descriptor's GATT handle using a float type's value.
- * @since_tizen 2.3.1
- *
- * @remarks This function updates a value of @a gatt_handle locally. \n
- * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_write_value() can be used after this function \n
- * in order to update the remote device's value. \n
- *
- * @param[in] gatt_handle The handle of a characteristic or descriptor
- * @param[in] type @a mantissa and @a exponent will be saved in @a gatt_handle as this type
- * @param[in] mantissa The mantissa of float type's value to be updated
- * @param[in] exponent The exponent of float type's value to be updated
- * @param[in] offset The offset from where @a mantissa and @a exponent will be saved in @a gatt_handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_set_float_value(bt_gatt_h gatt_handle, bt_data_type_float_e type,
-                       int mantissa, int exponent, int offset);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the UUID of a service, characteristic or descriptor's GATT handle.
- * @since_tizen 2.3.1
- *
- * @remarks @a uuid must be released using free(). \n
- * 16-bit UUID or 128-bit UUID is supported. (e.g. 2A19, 00002A19-0000-1000-8000-00805F9B34FB)
- *
- * @param[in] gatt_handle The handle of a service, characteristic or descriptor
- * @param[out] uuid The string of the UUID of @a gatt_handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_get_uuid(bt_gatt_h gatt_handle, char **uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the type of GATT handle.
- * @since_tizen 2.3.1
- *
- * @param[in] gatt_handle The GATT handle
- * @param[out] gatt_type The type of @a gatt_handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_get_type(bt_gatt_h gatt_handle, bt_gatt_type_e *gatt_type);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the GATT client handle which the specified service belongs to.
- * @since_tizen 2.3.1
- *
- * @remark This function doesn't allocate new memory for GATT client handle.
- * The returned GATT client handle is the same one which was got from bt_gatt_client_create().
- * So if it is destroyed by bt_gatt_client_destroy(), all related GATT handles are freed also.
- *
- * @param[in] service The service's GATT handle
- * @param[out] client The GATT client handle which @a service belongs to
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_create()
- */
-int bt_gatt_service_get_client(bt_gatt_h service, bt_gatt_client_h *client);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets a characteristic's GATT handle which has specific UUID.
- * @since_tizen 2.3.1
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
- * If there are multiple characteristics which have same UUID, only the first matched one will be returned.
- *
- * @param[in] service The service's GATT handle
- * @param[in] uuid The characteristic's GATT handle which has this UUID will be returned if it exists
- * @param[out] characteristic The characteristic's GATT handle which has @a uuid if it exists
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_service_get_characteristic(bt_gatt_h service, const char *uuid,
-                                       bt_gatt_h *characteristic);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Invokes @a callback function on each characteristic that belongs to the specified service.
- * @since_tizen 2.3.1
- *
- * @param[in] service The service's GATT handle
- * @param[in] callback The function to be invoked on each characteristic
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_foreach_cb()
- */
-int bt_gatt_service_foreach_characteristics(bt_gatt_h service,
-                                       bt_gatt_foreach_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets an included service's GATT handle which has specific UUID.
- * @since_tizen 2.3.1
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
- * If there are multiple included services which have same UUID, only the first matched one will be returned.
- *
- * @param[in] service The service's GATT handle
- * @param[in] uuid The included service's GATT handle which has this UUID will be returned if it exists
- * @param[out] included_service The included service's GATT handle which has @a uuid if it exists
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_service_get_included_service(bt_gatt_h service, const char *uuid,
-                                               bt_gatt_h *included_service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Invokes @a callback function on each included service that belongs to the specified service.
- * @since_tizen 2.3.1
- *
- * @param[in] service The service's GATT handle
- * @param[in] callback The function to be invoked on each included service
- * @param[in] user_data The user data to be passed to the callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_foreach_cb()
- */
-int bt_gatt_service_foreach_included_services(bt_gatt_h service,
-                                       bt_gatt_foreach_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the service's GATT handle which the specified characteristic belongs to.
- * @since_tizen 2.3.1
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[out] service The service's GATT handle which @a characteristic belongs to
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_characteristic_get_service(bt_gatt_h characteristic, bt_gatt_h *service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the properties which a characteristic's GATT handle has.
- * @since_tizen 2.3.1
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[out] properties The properties which a characteristic's GATT handle has
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_property_e
- */
-int bt_gatt_characteristic_get_properties(bt_gatt_h characteristic, int *properties);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Gets the write type of the specified characteristic.
- * @since_tizen 2.3.1
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[out] write_type The write type of the specified characteristic
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_write_type_e
- */
-int bt_gatt_characteristic_get_write_type(bt_gatt_h characteristic,
-                                       bt_gatt_write_type_e *write_type);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Updates the write type of the specified characteristic.
- * @since_tizen 2.3.1
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[in] write_type The write type to be updated
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_write_value()
- * @see bt_gatt_write_type_e
- */
-int bt_gatt_characteristic_set_write_type(bt_gatt_h characteristic,
-                                       bt_gatt_write_type_e write_type);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets a descriptor's GATT handle which has specific UUID.
- * @since_tizen 2.3.1
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
- * If there are multiple descriptors which have same UUID, only the first matched one will be returned.
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[in] uuid The descriptor's GATT handle which has this UUID will be returned if it exists
- * @param[out] descriptor The descriptor's GATT handle which has @a uuid if it exists
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_characteristic_get_descriptor(bt_gatt_h characteristic, const char *uuid,
-                                               bt_gatt_h *descriptor);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Invokes @a callback function on each descriptor that belongs to the specified characteristic.
- * @since_tizen 2.3.1
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[in] callback The function to be invoked on each descriptor
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_foreach_cb()
- */
-int bt_gatt_characteristic_foreach_descriptors(bt_gatt_h characteristic,
-                                       bt_gatt_foreach_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the characteristic's GATT handle which the specified descriptor belongs to.
- * @since_tizen 2.3.1
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
- *
- * @param[in] descriptor The descriptor's GATT handle
- * @param[out] characteristic The characteristic's GATT handle which @a descriptor belongs to
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_descriptor_get_characteristic(bt_gatt_h descriptor, bt_gatt_h *characteristic);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Creates the GATT client handle.
- * @since_tizen 2.3.1
- *
- * @remark The GATT client handle must be freed by bt_gatt_client_destroy() after use
- *
- * @param[in] remote_address The address of the remote device
- * @param[out] client The created GATT client's handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_ALREADY_DONE  Operation is already done
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_destroy()
- */
-int bt_gatt_client_create(const char *remote_address, bt_gatt_client_h *client);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Destroys the GATT client's handle.
- * @since_tizen 2.3.1
- *
- * @remark All related service, characteristic and descriptor's GATT handles are freed also
- *
- * @param[in] client The GATT client's handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_create()
- */
-int bt_gatt_client_destroy(bt_gatt_client_h client);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the address of remote device.
- * @since_tizen 2.3.1
- *
- * @param[in] client The created GATT client's handle
- * @param[out] remote_address The address of the remote device which is associated with @a client
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_create()
- */
-int bt_gatt_client_get_remote_address(bt_gatt_client_h client,
-                                       char **remote_address);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Reads the value of a characteristic or descriptor from the remote device asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] gatt_handle The GATT handle of a characteristic or descriptor
- * @param[in] callback When a read request is completed, this callback function will be called
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE      Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_create()
- * @see bt_gatt_client_request_completed_cb()
- */
-int bt_gatt_client_read_value(bt_gatt_h gatt_handle,
-               bt_gatt_client_request_completed_cb callback, void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Writes the value of a characteristic or descriptor to the remote device asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] gatt_handle The GATT handle of a characteristic or descriptor
- * @param[in] callback When a write request is completed, this callback function will be called
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE      Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_create()
- * @see bt_gatt_characteristic_set_write_type()
- * @see bt_gatt_set_value()
- * @see bt_gatt_set_int_value()
- * @see bt_gatt_set_float_value()
- * @see bt_gatt_client_request_completed_cb()
- */
-int bt_gatt_client_write_value(bt_gatt_h gatt_handle,
-               bt_gatt_client_request_completed_cb callback, void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Registers a callback function to be invoked when the characteristic value is changed on the remote device.
- * @since_tizen 2.3.1
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[in] callback The callback to be invoked when the value is changed and it is informed
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE      Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_characteristic_value_changed_cb()
- * @see bt_gatt_client_unset_characteristic_value_change()
- */
-int bt_gatt_client_set_characteristic_value_changed_cb(bt_gatt_h characteristic,
-               bt_gatt_client_characteristic_value_changed_cb callback,
-               void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Unregisters a callback function to be invoked when the characteristic value is changed on the remote device.
- * @since_tizen 2.3.1
- *
- * @param[in] characteristic The characteristic's GATT handle, whose value change will not be informed
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE      Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_set_characteristic_value_changed_cb()
- */
-int bt_gatt_client_unset_characteristic_value_changed_cb(bt_gatt_h characteristic);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets a service's GATT handle which has specific UUID.
- * @since_tizen 2.3.1
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
- * If there are multiple services which have same UUID, only the first matched one will be returned.
- *
- * @param[in] client The GATT client's handle
- * @param[in] uuid The service's GATT handle which has this UUID will be returned if it exists
- * @param[out] service The service's GATT handle which has @a uuid if it exists
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_client_get_service(bt_gatt_client_h client, const char *uuid,
-                               bt_gatt_h *service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Invokes @a callback function on each service that belongs to the specified GATT client.
- * @since_tizen 2.3.1
- *
- * @param[in] client The GATT client's handle
- * @param[in] callback The function to be invoked on each service
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_foreach_cb()
- */
-int bt_gatt_client_foreach_services(bt_gatt_client_h client,
-                                   bt_gatt_foreach_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Registers a callback function to be invoked when service is changed from a remote device(GATT server).
- * @since_tizen 3.0
- *
- * @param[in] client The GATT client's handle
- * @param[in] callback The callback to be invoked
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_unset_service_changed_cb()
- */
-int bt_gatt_client_set_service_changed_cb(bt_gatt_client_h client,
-               bt_gatt_client_service_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Unregisters a callback function
- * @since_tizen 3.0
- *
- * @param[in] client The GATT client's handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_set_service_changed_cb()
- */
-int bt_gatt_client_unset_service_changed_cb(bt_gatt_client_h client);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Connect to a specific LE based service on a remote bluetooth device address, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks A connection can be disconnected by bt_gatt_disconnect().
- *
- * @param[in] address The address of the remote Bluetooth device.
- * @param[in] auto_connect The flag of the auto connection.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @pre The remote device must support le connection.
- * @post This function invokes bt_gatt_connection_state_changed_cb().
- *
- * @see bt_initialize()
- * @see bt_gatt_disconnect()
- * @see bt_gatt_set_connection_state_changed_cb()
- * @see bt_gatt_unset_connection_state_changed_cb()
- * @see bt_gatt_connection_state_changed_cb()
- */
-int bt_gatt_connect(const char *address, bool auto_connect);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Disconnect to LE connection with the given remote Bluetooth device address, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] address The address of the remote Bluetooth device
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The connection must be established.
- * @post This function invokes bt_gatt_connection_state_changed_cb().
- *
- * @see bt_initialize()
- * @see bt_gatt_connect()
- * @see bt_gatt_set_connection_state_changed_cb()
- * @see bt_gatt_unset_connection_state_changed_cb()
- * @see bt_gatt_connection_state_changed_cb()
- */
-int bt_gatt_disconnect(const char *address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Registers a callback function that will be invoked when the connection state is changed.
- * @since_tizen 2.3
- *
- * @param[in] callback The callback function to register.
- * @param[in] user_data The user data to be passed  to the callback function.
- *
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_connect()
- * @see bt_gatt_disconnect()
- * @see bt_gatt_unset_connection_state_changed_cb()
- */
-int bt_gatt_set_connection_state_changed_cb(bt_gatt_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Unregisters a callback function that will be invoked when the connection state is changed.
- * @since_tizen 2.3
- *
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_connect()
- * @see bt_gatt_disconnect()
- * @see bt_gatt_connection_state_changed_cb()
- */
-int bt_gatt_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief Destroys the GATT handle of service.
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The handle of service
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_service_create()
- */
-int bt_gatt_service_destroy(bt_gatt_h gatt_handle);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief Destroys the GATT handle of characteristic.
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The handle of characteristic
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_characteristic_create()
- */
-int bt_gatt_characteristic_destroy(bt_gatt_h gatt_handle);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief Destroys the GATT handle of descriptor.
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The handle of descriptor
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_descriptor_create()
- */
-int bt_gatt_descriptor_destroy(bt_gatt_h gatt_handle);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Gets the permissions which a characteristic's GATT handle has.
- * @since_tizen 3.0
- *
- * @remarks The @a permissions can be one or more values of #bt_gatt_permission_e, combined with bitwise 'or'.
- *
- * @param[in] gatt_handle The handle of a characteristic
- * @param[out] permissions The permissions which a characteristic's GATT handle has
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_characteristic_create()
- * @see bt_gatt_permission_e
- */
-int bt_gatt_characteristic_get_permissions(bt_gatt_h gatt_handle, int *permissions);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Gets the permissions which a descriptor's GATT handle has.
- * @since_tizen 3.0
- *
- * @remarks The @a permissions can be one or more values of #bt_gatt_permission_e, combined with bitwise 'or'.
- *
- * @param[in] gatt_handle The handle of a descriptor
- * @param[out] permissions The permissions which a descriptor's GATT handle has
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_descriptor_create()
- * @see bt_gatt_permission_e
- */
-int bt_gatt_descriptor_get_permissions(bt_gatt_h gatt_handle, int *permissions);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Creates the GATT service.
- * @since_tizen 3.0
- *
- * @remarks The @a service should be destroyed by using bt_gatt_service_destroy()
- *
- * @param[in] uuid The UUID of the service
- * @param[in] type The type of the service
- * @param[out] service The GATT handle of the created service
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_service_destroy()
- */
-int bt_gatt_service_create(const char *uuid, bt_gatt_service_type_e type,
-                          bt_gatt_h *service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Adds a characteristic to a specified service.
- * @since_tizen 3.0
- *
- * @param[in] service The service's GATT handle
- * @param[in] characteristic The characteristic's GATT handle to be added
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_service_create()
- * @see bt_gatt_characteristic_create()
- */
-int bt_gatt_service_add_characteristic(bt_gatt_h service,
-                                       bt_gatt_h characteristic);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Adds a service to a specified service as included service.
- * @since_tizen 3.0
- *
- * @param[in] service The service's GATT handle
- * @param[in] included_service The service's GATT handle to be added as included service
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_service_create()
- */
-int bt_gatt_service_add_included_service(bt_gatt_h service,
-                                       bt_gatt_h included_service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Gets the GATT server handle to which the specified service belongs.
- * @since_tizen 3.0
- *
- * @remarks The returned Server handle must not be freed by application.
- *
- * @param[in] service The service's GATT handle
- * @param[out] server The GATT server handle to which @a service belongs
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_create()
- * @see bt_gatt_service_create()
- * @see bt_gatt_server_register_service()
- */
-int bt_gatt_service_get_server(bt_gatt_h service, bt_gatt_server_h *server);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Creates the GATT characteristic.
- * @since_tizen 3.0
- *
- * @remarks The @a permissions can be one or more values of #bt_gatt_permission_e, combined with bitwise 'or'.
- * @remarks The @a properties can be one or more values of #bt_gatt_property_e, combined with bitwise 'or'.
- * @remarks The @a characteristic should be destroyed by using bt_gatt_characteristic_destroy().
- *
- * @param[in] uuid The UUID of the characteristic
- * @param[in] permissions the permissions of the characteristic
- * @param[in] properties The properties of the characteristic
- * @param[in] value The value(byte stream) of the characteristic
- * @param[in] value_length The length of @a value
- * @param[out] characteristic The GATT handle of the created characteristic
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_characteristic_destroy()
- */
-int bt_gatt_characteristic_create(const char *uuid, int permissions,
-                               int properties, const char *value, int value_length,
-                               bt_gatt_h *characteristic);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Adds a descriptor to a specified characteristic.
- * @since_tizen 3.0
- *
- * @param[in] characteristic The GATT handle of the characteristic
- * @param[in] descriptor The descriptor's GATT handle to be added
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_characteristic_create()
- * @see bt_gatt_descriptor_create()
- */
-int bt_gatt_characteristic_add_descriptor(bt_gatt_h characteristic,
-                                       bt_gatt_h descriptor);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Creates the GATT characteristic descriptor.
- * @since_tizen 3.0
- *
- * @remarks The @a permissions can be one or more values of #bt_gatt_permission_e, combined with bitwise 'or'.
- * @remarks The @a descriptor should be destroyed by using bt_gatt_descriptor_destroy().
- *
- * @param[in] uuid The UUID of the descriptor
- * @param[in] permissions The permissions of the descriptor
- * @param[in] value The value(byte stream) associated with the descriptor
- * @param[in] value_length The length of @a value
- * @param[out] descriptor The GATT handle of the created characteristic descriptor
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_descriptor_destroy()
- */
-int bt_gatt_descriptor_create(const char *uuid, int permissions,
-                               const char *value, int value_length,
-                               bt_gatt_h *descriptor);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief Initializes the GATT Server.
- * @since_tizen 3.0
- *
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre        The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see        bt_gatt_server_deinitialize()
- */
-int bt_gatt_server_initialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief DeInitializes the GATT server.
- * @since_tizen 3.0
- *
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE      Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre        The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see        bt_gatt_server_initialize()
- */
-int bt_gatt_server_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Creates the GATT server's handle.
- * @since_tizen 3.0
- *
- * @remarks The @a server handle should be destroyed by using bt_gatt_server_destroy()
- *
- * @param[out] server The GATT server's handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_destroy()
- */
-int bt_gatt_server_create(bt_gatt_server_h *server);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Destroys the GATT server's handle.
- * @since_tizen 3.0
- *
- * @remarks All registered services to GATT server are unregistered
- *
- * @param[in] server The GATT server's handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_create()
- */
-int bt_gatt_server_destroy(bt_gatt_server_h server);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Registers a callback function to be invoked when a read request for a specified characteristic or descriptor is issued from a remote device(GATT client).
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The GATT handle of a characteristic or descriptor
- * @param[in] callback The callback to be invoked
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_read_value_requested_cb()
- * @see bt_gatt_server_send_response()
- */
-int bt_gatt_server_set_read_value_requested_cb(bt_gatt_h gatt_handle,
-                               bt_gatt_server_read_value_requested_cb callback,
-                               void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Registers a callback function to be invoked when the remote device enables or disables the Notification/Indication for particular characteristics.
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The GATT handle of a characteristic
- * @param[in] callback The callback to be invoked
- * @param[in] user_data The user data to be passed to @a callback function
- * @return     0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
- *
- * @see bt_gatt_server_characteristic_notification_state_changed_cb()
- */
-int bt_gatt_server_set_characteristic_notification_state_change_cb(bt_gatt_h gatt_handle,
-                               bt_gatt_server_characteristic_notification_state_changed_cb callback,
-                               void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Registers a callback function to be invoked when a value of a characteristic or descriptor has been changed by a remote device(GATT client)'s request.
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The GATT handle of a characteristic or descriptor
- * @param[in] callback The callback to be invoked
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_write_value_requested_cb()
- */
-int bt_gatt_server_set_write_value_requested_cb(bt_gatt_h gatt_handle,
-                               bt_gatt_server_write_value_requested_cb callback,
-                               void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Registers a specified service to the specified GATT server that the local device is hosting.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] server The GATT server that local device is hosting
- * @param[in] service The service, which needs to be registered in @a server
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_ALREADY_DONE Operation is already done
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_create()
- * @see bt_gatt_service_create()
- * @see bt_gatt_server_start()
- * @see bt_gatt_server_unregister_service()
- */
-int bt_gatt_server_register_service(bt_gatt_server_h server, bt_gatt_h service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Unregisters a specified service from the specified GATT server that the local device is hosting.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] server The GATT server that local device is hosting
- * @param[in] service The service, which needs to be unregistered from @a server
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_SERVICE_NOT_FOUND  Service not found
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_register_service()
- */
-int bt_gatt_server_unregister_service(bt_gatt_server_h server, bt_gatt_h service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Unregisters all services from the specified GATT server that the local device is hosting.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] server The GATT server that local device is hosting
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_register_service()
- */
-int bt_gatt_server_unregister_all_services(bt_gatt_server_h server);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Registers the application along with the GATT services of the application it is hosting.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_ALREADY_DONE Operation is already done
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_initialize()
- * @see bt_gatt_server_create()
- * @see bt_gatt_service_create()
- * @see bt_gatt_server_unregister_service()
- */
-int bt_gatt_server_start(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Sends a response to the remote device as a result of a read/write request.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks Until this function is called, a read/write request is not finished.
- *
- * @param[in] request_id The identification of a read/write request
- * @param[in] request_type The request type for read/write
- * @param[in] offset The offset from where a value is read
- * @param[in] resp_status The application error if any occurred or BT_ERROR_NONE for successful.
- * @param[in] value The value to be sent. It will be sent from @a offset. If it is NULL, a requested GATT handle's value will be sent from @a offset.
- * @param[in] value_length Value Length
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_read_value_requested_cb()
- */
-int bt_gatt_server_send_response(int request_id, bt_gatt_att_request_type_e request_type,
-                       int offset, int resp_status, char *value, int value_length);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Notifies value change of the characteristic to the remote devices which enable a Client Characteristic Configuration Descriptor.
- * @since_tizen 3.0
- *
- * @param[in] characteristic The characteristic which has a changed value
- * @param[in] callback The function to be invoked on each remote device when a sending operation is done
- * @param[in] device_address Remote device address to send notify or indicate and if set to NULL then notify/indicate all is enabled.
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_notification_sent_cb()
- */
-int bt_gatt_server_notify_characteristic_changed_value(bt_gatt_h characteristic,
-                               bt_gatt_server_notification_sent_cb callback,
-                               const char *device_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Gets a service's GATT handle which has specific UUID.
- * @since_tizen 3.0
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated server is destroyed by bt_gatt_server_destroy().
- * If there are multiple services which have same UUID, only the first matched one will be returned.
- *
- * @param[in] server The GATT server's handle
- * @param[in] uuid The service's GATT handle which has this UUID will be returned if it exists
- * @param[out] service The service's GATT handle which has @a uuid if it exists
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_server_get_service(bt_gatt_server_h server, const char *uuid,
-                               bt_gatt_h *service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Invokes @a callback function on each service that belongs to the specified GATT server.
- * @since_tizen 3.0
- *
- * @param[in] server The GATT server's handle
- * @param[in] callback The function to be invoked on each service
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_foreach_cb()
- */
-int bt_gatt_server_foreach_services(bt_gatt_server_h server,
-               bt_gatt_foreach_cb callback, void *user_data);
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_NETWORK_BLUETOOTH_H__ */
diff --git a/include/mobile/bluetooth_extension.h b/include/mobile/bluetooth_extension.h
deleted file mode 100644 (file)
index 64c76c8..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __TIZEN_NETWORK_BLUETOOTH_EXTENSION_H__
-#define __TIZEN_NETWORK_BLUETOOTH_EXTENSION_H__
-
-#include "bluetooth_type.h"
-#include "bluetooth_type_extension.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/**
- * @file        bluetooth_extension.h
- */
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Opens a SCO(Synchronous Connection Oriented link) to connected remote device, asynchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_ALREADY_DONE  Operation is already done
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @post bt_ag_sco_state_changed_cb() will be invoked.
- * @see bt_ag_close_sco()
- * @see bt_ag_sco_state_changed_cb()
- * @see bt_audio_connect()
- */
-int bt_ag_open_sco(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Closes an opened SCO(Synchronous Connection Oriented link), asynchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The SCO must be opened with bt_ag_open_sco().
- * @post bt_ag_sco_state_changed_cb() will be invoked.
- * @see bt_ag_open_sco()
- * @see bt_ag_sco_state_changed_cb()
- */
-int bt_ag_close_sco(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Checks whether an opened SCO(Synchronous Connection Oriented link) exists or not.
- * @since_tizen 2.3
- * @param[out] opened The SCO status: (@c true = opened, @c  false = not opened)
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_ag_open_sco()
- * @see bt_ag_close_sco()
- */
-int bt_ag_is_sco_opened(bool *opened);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Registers a callback function that will be invoked when the SCO(Synchronous Connection Oriented link) state is changed.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_sco_state_changed_cb()
- * @see bt_ag_unset_sco_state_changed_cb()
- */
-int bt_ag_set_sco_state_changed_cb(bt_ag_sco_state_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Unregisters a callback function that will be invoked when the SCO(Synchronous Connection Oriented link) state is changed.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_sco_state_changed_cb()
- * @see bt_ag_set_sco_state_changed_cb()
- */
-int bt_ag_unset_sco_state_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Notifies the state of voice recognition.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @param[in] state  The state of voice recognition: (@c true = enabled, @c  false = disabled)
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @see bt_audio_connect()
- */
-int bt_ag_notify_voice_recognition_state(bool state);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Notifies the speaker gain to the remote device.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @details This function sends a signal to the remote device. This signal has the gain value.
- * @a gain is represented on a scale from 0 to 15. This value is absolute value relating to a particular volume level.
- * When the speaker gain of remote device is changed to the requested gain, bt_audio_speaker_gain_changed_cb() will be called.
- * @param[in] gain The gain of speaker (0 ~ 15)
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device is connected by bt_audio_connect() with #BT_AUDIO_PROFILE_TYPE_HSP_HFP service.
- * @see bt_ag_get_speaker_gain()
- * @see bt_ag_set_speaker_gain_changed_cb()
- * @see bt_ag_unset_speaker_gain_changed_cb()
- */
-int bt_ag_notify_speaker_gain(int gain);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Gets the current speaker gain of the remote device.
- * @since_tizen 2.3
- * @details This function gets the value of speaker gain of the remote device.
- * @a gain is represented on a scale from 0 to 15. This value is absolute value relating to a particular volume level.
- * @param[out] gain The gain of speaker (0 ~ 15)
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device is connected by bt_audio_connect() with #BT_AUDIO_PROFILE_TYPE_HSP_HFP service.
- * @see bt_ag_notify_speaker_gain()
- * @see bt_ag_set_speaker_gain_changed_cb()
- * @see bt_ag_unset_speaker_gain_changed_cb()
- */
-int bt_ag_get_speaker_gain(int *gain);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Registers a callback function that will be invoked when the speaker gain of the remote device is changed.
- * @since_tizen 2.3
- * @details This function let you know the change of the speaker gain of the remote device.
- * @a gain is represented on a scale from 0 to 15. This value is absolute value relating to a particular volume level.
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_unset_speaker_gain_changed_cb()
- */
-int bt_ag_set_speaker_gain_changed_cb(bt_ag_speaker_gain_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Unregisters a callback function that will be invoked when the speaker gain of the remote device is changed.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_set_speaker_gain_changed_cb()
- */
-int bt_ag_unset_speaker_gain_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Registers a callback function that will be invoked when the microphone gain of the remote device is changed.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_unset_microphone_gain_changed_cb()
- */
-int bt_ag_set_microphone_gain_changed_cb(bt_ag_microphone_gain_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Unregisters a callback function that will be invoked when the microphone gain of the remote device is changed.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_set_microphone_gain_changed_cb()
- */
-int bt_ag_unset_microphone_gain_changed_cb(void);
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_NETWORK_BLUETOOTH_EXTENSION_H__ */
-
diff --git a/include/mobile/bluetooth_internal.h b/include/mobile/bluetooth_internal.h
deleted file mode 100644 (file)
index bcea6f9..0000000
+++ /dev/null
@@ -1,3239 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __TIZEN_NETWORK_BLUETOOTH_INTERNAL_H__
-#define __TIZEN_NETWORK_BLUETOOTH_INTERNAL_H__
-
-#include <glib.h>
-#include "bluetooth_type.h"
-#include "bluetooth_type_internal.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/**
- * @file        bluetooth_internal.h
- */
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Enables the local Bluetooth adapter, asynchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @details This function enables Bluetooth protocol stack and hardware.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_ALREADY_DONE  Already enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre Bluetooth service must be initialized with bt_initialize().
- * @pre The state of local Bluetooth must be #BT_ADAPTER_DISABLED
- * @post This function invokes bt_adapter_state_changed_cb().
- *
- * @see bt_initialize()
- * @see bt_adapter_get_state()
- * @see bt_adapter_set_state_changed_cb()
- * @see bt_adapter_unset_state_changed_cb()
- * @see bt_adapter_state_changed_cb()
- *
- */
-int bt_adapter_enable(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Disables the local Bluetooth adapter, asynchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @details This function disables Bluetooth protocol stack and hardware.
- *
- * @remarks You should disable Bluetooth adapter, which is helpful for saving power.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED
- * @post This function invokes bt_adapter_state_changed_cb().
- *
- * @see bt_adapter_get_state()
- * @see bt_adapter_state_changed_cb()
- * @see bt_adapter_set_state_changed_cb()
- * @see bt_adapter_unset_state_changed_cb ()
- *
- */
-int bt_adapter_disable(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Recover the local Bluetooth adapter, asynchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @details This function does recovery logic, disables Bluetooth protocol stack and hardware, then enables after a few seconds.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED
- * @post This function invokes bt_adapter_state_changed_cb().
- *
- * @see bt_adapter_get_state()
- * @see bt_adapter_state_changed_cb()
- * @see bt_adapter_set_state_changed_cb()
- * @see bt_adapter_unset_state_changed_cb ()
- *
- */
-int bt_adapter_recover(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  A2DP source/sink role is switched using this API
- * @since_tizen 4.0
- * @param[in] Role for A2DP
- * @return @c 0 on success,
- *         otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED Not supported
- * @retval #BT_ERROR_OPERATION_FAILED Internal Error
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_initialize()
- * @see bt_audio_initialize()
- */
-int bt_audio_select_role(bt_audio_role_e role);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Reset the local Bluetooth adapter, synchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @details This function resets Bluetooth protocol and values.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_state_changed_cb() will be invoked if The state of local Bluetooth was #BT_ADAPTER_ENABLED.
- *
- * @see bt_initialize()
- * @see bt_adapter_get_state()
- * @see bt_adapter_set_state_changed_cb()
- * @see bt_adapter_unset_state_changed_cb()
- * @see bt_adapter_state_changed_cb()
- *
- */
-int bt_adapter_reset(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the version of local Bluetooth adapter.
- * @since_tizen 2.3
- * @remarks The @a local_version must be released with free() by you.
- *
- * @param[out] local_version The version of local Bluetooth adapter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_adapter_get_version(char **local_version);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the information regarding local Bluetooth adapter.
- * @since_tizen 2.3
- * @remarks The @a all parameters must be released with free() by you.
- *
- * @param[out] chipset Chipset name of local Bluetooth adapter
- * @param[out] firmware Firmware info. of local Bluetooth adapter
- * @param[out] stack_version Bluetooth stack version
- * @param[out] profiles The profile list of local Bluetooth adapter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_adapter_get_local_info(char **chipset, char **firmware, char **stack_version, char **profiles);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Sets the visibility mode.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE will change to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE
- * after the given @a duration goes.
- *
- * @param[in] discoverable_mode The Bluetooth visibility mode to set
- * @param[in] duration The duration until the visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE (in seconds).
- * @a duration is used only for #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE mode.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post bt_adapter_visibility_mode_changed_cb() will be invoked if this function returns #BT_ERROR_NONE.
- *
- * @see bt_adapter_get_visibility()
- * @see bt_adapter_visibility_mode_changed_cb()
- * @see bt_adapter_set_visibility_mode_changed_cb()
- * @see bt_adapter_unset_visibility_mode_changed_cb()
- */
-int bt_adapter_set_visibility(bt_adapter_visibility_mode_e discoverable_mode, int duration);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Registers a callback function that will be invoked when remote device requests authentication.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
- * @pre The Bluetooth service must be initialized by bt_initialize().
- * @param[in] callback  callback function to be set when a request is received.
- * @param[in] user_data data from application which will be provided in callback.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @see bt_initialize()
- * @see bt_adapter_set_authentication_req_cb()
- */
-int bt_adapter_set_authentication_req_cb(bt_adapter_authentication_req_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Unregisters a callback function that will be invoked when remote device requests authentication.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
- * @pre The Bluetooth service must be initialized by bt_initialize().
- * @see bt_initialize()
- * @see bt_adapter_set_authentication_req_cb()
- */
-int bt_adapter_unset_authentication_req_cb(void);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  API to reply with PIN or PASSKEY with authentication type - TRUE or FALSE.
- * @remarks  This function can be called by application when remote device requests PIN or PASSKEY from
- *           local adapter.
- * @param[in]  passkey  The passkey to be provided by application when remote devices requests for it.
- * @param[in]  authentication_reply This indicates whether application wants to accept or cancel the on-going pairing
- * @pre  This function can only be called when application receieves authentication event (BT_AUTH_PIN_REQUEST)
- *       from remote device.
- * @see  bt_adapter_set_authentication_req_cb()
- */
-int bt_adapter_passkey_reply(char *passkey, bool authentication_reply);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  API to reply to the PASSKEY confirmation for on-going pairing with remote device.
- * @remarks  This function can be called by application, when local adapter wants PASSKEY confirmation from user.
- * @param[in]  confirmation_reply This indicates whether application wants to accepts or cancels the on-going pairing
- *             confirmation_reply : TRUE will indicate that Application has confirmed the PASSKEY
- *             confirmation_reply : FALSE will indicate that Application has failed to confirm the PASSKEY. In this situation
- *             the pairing will be failed.
- * @pre  This function can only be called when application receives authentication event (BT_AUTH_PASSKEY_CONFIRM_REQUEST)
- *       from remote device.
- * @see  bt_adapter_set_authentication_req_cb()
- */
-int bt_adapter_passkey_confirmation_reply(bool confirmation_reply);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked when the connectable state changes.
- * @since_tizen 2.3
- *
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_connectable_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_connectable_changed_cb()
- * @see bt_adapter_unset_connectable_changed_cb()
- */
-int bt_adapter_set_connectable_changed_cb(bt_adapter_connectable_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Unregisters the callback function.
- * @since_tizen 2.3
- *
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The Bluetooth service must be initialized with bt_initialize().
- *
- * @see  bt_initialize()
- * @see  bt_adapter_set_connectable_changed_cb()
- */
-int bt_adapter_unset_connectable_changed_cb(void);
-
-/**
- * @internal
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Gets the connectable state of local Bluetooth adapter.
- * @since_tizen 2.3
- *
- * @remarks When connectable state is false, no device can connect to this device and visibility mode cannot be changed.
- *
- * @param[out] connectable The connectable state of local Bluetooth adapter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_set_connectable()
- */
-int bt_adapter_get_connectable(bool *connectable);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Sets the connectable state of local Bluetooth adapter.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks When connectable state is false, no device can connect to this device and visibility mode cannot be changed.
- *
- * @param[in] connectable The connectable state to set
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post bt_adapter_connectable_changed_cb() will be invoked if this function returns #BT_ERROR_NONE.
- *
- * @see bt_adapter_get_connectable()
- * @see bt_adapter_connectable_changed_cb()
- * @see bt_adapter_set_connectable_changed_cb()
- * @see bt_adapter_unset_connectable_changed_cb()
- */
-int bt_adapter_set_connectable(bool connectable);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Sets the manufacturer data of local Bluetooth adapter.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]   data   The manufacturer specific data of the Bluetooth device.
- * @param[in]   len    The length of @a data.Maximaum length is 240 bytes.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post bt_adapter_manufacturer_data_changed_cb() will be invoked
- * if this function returns #BT_ERROR_NONE.
- *
- * @see bt_adapter_manufacturer_data_changed_cb
- * @see bt_adapter_set_manufacturer_data_changed_cb()
- * @see bt_adapter_unset_manufacturer_data_changed_cb()
- */
-int bt_adapter_set_manufacturer_data(char *data, int len);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked
- * when the manufacturer data of Bluetooth adapter changes.
- * @since_tizen 2.3
- *
- * @param[in]   callback       The callback function to invoke
- * @param[in]   user_data      The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_adapter_manufacturer_data_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_unset_manufacturer_data_changed_cb()
- */
-int bt_adapter_set_manufacturer_data_changed_cb(
-               bt_adapter_manufacturer_data_changed_cb callback,
-               void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- *
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- * @see bt_adapter_set_manufacturer_data_changed_cb()
- */
-int bt_adapter_unset_manufacturer_data_changed_cb(void);
-
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Enables the local Bluetooth le adapter, asynchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @details This function enables Bluetooth protocol stack and hardware.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_ALREADY_DONE  Already enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre Bluetooth service must be initialized with bt_initialize().
- * @post This function invokes bt_adapter_le_state_changed_cb().
- *
- * @see bt_initialize()
- * @see bt_adapter_le_get_state()
- * @see bt_adapter_le_set_state_changed_cb()
- * @see bt_adapter_le_unset_state_changed_cb()
- * @see bt_adapter_le_state_changed_cb()
- *
- */
-int bt_adapter_le_enable(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Disables the local Bluetooth le adapter, asynchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @details This function disables Bluetooth le protocol stack and hardware.
- *
- * @remarks
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_LE_ENABLED
- * @post This function invokes bt_adapter_le_state_changed_cb().
- *
- * @see bt_adapter_le_get_state()
- * @see bt_adapter_le_state_changed_cb()
- * @see bt_adapter_le_set_state_changed_cb()
- * @see bt_adapter_le_unset_state_changed_cb ()
- *
- */
-int bt_adapter_le_disable(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the current state of local Bluetooth adapter.
- * @since_tizen 2.3
- *
- * @param[out] adapter_le_state The current adapter le state
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- */
-int bt_adapter_le_get_state(bt_adapter_le_state_e *adapter_le_state);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Registers a callback function to be invoked when the Bluetooth adapter le state changes.
- * @since_tizen 2.3
- *
- * @param[in] callback The callback function to invoke
- * @param[in] user_data        The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_le_state_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_le_state_changed_cb()
- * @see bt_adapter_le_unset_state_changed_cb()
- */
-int bt_adapter_le_set_state_changed_cb(bt_adapter_le_state_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- *
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- * @see bt_adapter_le_set_state_changed_cb()
- */
-int bt_adapter_le_unset_state_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief add address to whitelist for accepting scanning request.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks If the adress is in the whitelist then other LE devices are able to
- * search this device. Before calling this API, make sure that the adapter is
- * enabled. There is no callback event for this API.
-
- * @param[in] address The other device's address
- * @param[in] address_type The other device's address type
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_le_start_advertising_new()
- * @see bt_adapter_le_stop_advertising()
- */
-int bt_adapter_le_add_white_list(const char *address, bt_device_address_type_e address_type);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief remove address from the whitelist for not accepting scanning request.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks If the adress is in the whitelist then other LE devices are able to
- * search this device. Before calling this API, make sure that the adapter is
- * enabled. There is no callback event for this API.
- *
- * @param[in] address The other device's address
- * @param[in] address_type The other device's address type
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_le_start_advertising_new()
- * @see bt_adapter_le_stop_advertising()
- */
-int bt_adapter_le_remove_white_list(const char *address, bt_device_address_type_e address_type);
-
-/**
- * @internal
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief clear address from the whitelist for not accepting scanning request.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks If the adress is in the whitelist then other LE devices are able to
- * search this device. Before calling this API, make sure that the adapter is
- * enabled. There is no callback event for this API.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_le_start_advertising_new()
- * @see bt_adapter_le_stop_advertising()
- */
-int bt_adapter_le_clear_white_list(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Sets the Privacy feature state of local Bluetooth adapter.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] enable_privacy The privacy feature to set/unset.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The state of local Bluetooth must be #BT_ADAPTER_LE_ENABLED.
- *
- */
-int bt_adapter_le_enable_privacy(bool enable_privacy);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Creates scan filter to find only LE advertisement which has specific data.
- * @since_tizen 2.4
- *
- * @param[out] scan_filter The handle of scan filter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_destroy_scan_filter()
- */
-int bt_adapter_le_create_scan_filter(bt_scan_filter_h *scan_filter);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Destroys scan filter.
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_create_scan_filter()
- */
-int bt_adapter_le_destroy_scan_filter(bt_scan_filter_h scan_filter);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the device address to filter advertisements
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] address The device address to filter advertisements
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_device_address(bt_scan_filter_h scan_filter, const char *address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the device name to filter advertisements
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] name The device name to filter advertisements
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_device_name(bt_scan_filter_h scan_filter, const char *name);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the service UUID to filter advertisements
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] uuid The service UUID to filter advertisements
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_service_uuid(bt_scan_filter_h scan_filter, const char *uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the service uuid and the mask to filter advertisements by partial data
- * @since_tizen 2.4
- *
- * @remarks the length of mask msut be the same with the length of service uuid.
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] uuid The service UUID to filter advertisements
- * @param[in] mask The mask to filter advertisements
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_service_uuid_with_mask(bt_scan_filter_h scan_filter,
-                       const char *uuid, const char *mask);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the service solicitation UUID to filter advertisements
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] uuid The service solicitation UUID to filter advertisements
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_service_solicitation_uuid(bt_scan_filter_h scan_filter, const char *uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the service solicitation uuid and the mask to filter advertisements by partial data
- * @since_tizen 2.4
- *
- * @remarks the length of mask msut be the same with the length of service solicitation uuid.
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] uuid The service solicitation UUID to filter advertisements
- * @param[in] mask The mask to filter advertisements
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_service_solicitation_uuid_with_mask(bt_scan_filter_h scan_filter,
-                       const char *uuid, const char *mask);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the service data to filter advertisements
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] uuid The service UUID to filter advertisements
- * @param[in] data The service data to filter advertisements
- * @param[in] data_len The length of the service data
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_service_data(bt_scan_filter_h scan_filter,
-                       const char *uuid, const char *data, unsigned int data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the service data and the mask to filter advertisements by partial data
- * @since_tizen 2.4
- *
- * @remarks the length of mask msut be the same with the length of service data.
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] uuid The service UUID to filter advertisements
- * @param[in] data The service data to filter advertisements
- * @param[in] data_len The length of the service data
- * @param[in] mask The mask to filter advertisements
- * @param[in] mask_len The length of the mask to be set.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_service_data_with_mask(bt_scan_filter_h scan_filter,
-                       const char *uuid, const char *data, unsigned int data_len, const char *mask, unsigned int mask_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the manufacturer data to filter advertisements
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] manufacturer_id The manufacturer ID (0x0000 ~ 0xFFFF)
- * @param[in] data The manufacturer data (byte array)
- * @param[in] data_len The length of manufacturer data
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_manufacturer_data(bt_scan_filter_h scan_filter,
-                       int manufacturer_id, const char *data, unsigned int data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the manufacturer data and the mask to filter advertisements by partial data
- * @since_tizen 2.4
- *
- * @remarks the length of mask msut be the same with the length of service uuid.
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] manufacturer_id The manufacturer ID (0x0000 ~ 0xFFFF)
- * @param[in] data The manufacturer data (byte array)
- * @param[in] data_len The length of manufacturer data
- * @param[in] mask The mask to filter advertisements
- * @param[in] mask_len The length of the mask to be set.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_manufacturer_data_with_mask(bt_scan_filter_h scan_filter,
-                       int manufacturer_id, const char *data, unsigned int data_len, const char *mask, unsigned int mask_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Registers the scan filter to use for scanning
- * @since_tizen 2.4
- *
- * @remarks Several scan filters can be registered. And the specific advertisements, satisfy the one of scan filters, will be found.
- *
- * @param[in] scan_filter The handle of scan filter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Scan is in progress
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_register_scan_filter(bt_scan_filter_h scan_filter);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Unregisters the scan filter to be registered
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Scan is in progress
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_unregister_scan_filter(bt_scan_filter_h scan_filter);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Unregisters all scan filters to be registered
- * @since_tizen 2.4
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Scan is in progress
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_unregister_all_scan_filters(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Set advertising filter policy to use white list
- * @since_tizen 2.4
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] filter_policy The filter policy of advertising
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_start_advertising_new()
- */
-int bt_adapter_le_set_advertising_filter_policy(bt_advertiser_h advertiser, bt_adapter_le_advertising_filter_policy_e filter_policy);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Gets a connection state
- * @since_tizen 2.4
- *
- * @param[in] remote_address The address of the remote Bluetooth device
- * @param[in] link_type The link type to get a connection state
- * @param[out] connected The connection state
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED   Operation failed
- */
-int bt_device_get_connection_state(const char *remote_address, bt_device_connection_link_type_e link_type, bool *connected);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Creates a bond with a remote Bluetooth device, asynchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks A bond can be destroyed by bt_device_destroy_bond().\n
- * The bonding request can be cancelled by bt_device_cancel_bonding().
- *
- * @param[in] remote_address The address of the remote Bluetooth device with which the bond should be created
- * @param[in] conn_type The connection type(LE or BREDR) to create bond with remote device
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_RESOURCE_BUSY     Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The remote device must be discoverable with bt_adapter_start_device_discovery().
- * @post This function invokes bt_device_bond_created_cb().
- *
- * @see bt_adapter_start_device_discovery()
- * @see bt_device_create_bond()
- * @see bt_device_bond_created_cb()
- * @see bt_device_cancel_bonding()
- * @see bt_device_destroy_bond()
- * @see bt_device_set_bond_created_cb()
- * @see bt_device_unset_bond_created_cb()
- */
-int bt_device_create_bond_by_type(const char *remote_address,
-                                 bt_device_connection_link_type_e conn_type);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Cancels service search process.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The service search must be in progress by bt_device_start_service_search().
- *
- * @see bt_device_start_service_search()
- * @see bt_device_service_searched_cb()
- * @see bt_device_set_service_searched_cb()
- * @see bt_device_unset_service_searched_cb()
- */
-int bt_device_cancel_service_search(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Sets a profile restricted connection for a device
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_device_set_profile_restricted(const char *device_address, bt_restricted_profile_t profile, bool restricted);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Gets a profile restricted connection for a device
- * @since_tizen 3.0
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_device_get_profile_restricted(const char *device_address, bt_restricted_profile_t profile, int *restricted);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Request to change ATT MTU value
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] remote_address The address of the remote Bluetooth device
- * @param[in] mtu New MTU value to be changed
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED   Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_device_request_att_mtu(const char *remote_address, unsigned int mtu);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Gets the ATT MTU value set for a connection
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] remote_address The address of the remote Bluetooth device
- * @param[ot] mtu MTU value set for a connection
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
- */
-int bt_device_get_att_mtu(const char *remote_address, unsigned int *mtu);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Registers a callback function to be invoked when the ATT MTU is changed.
- * @since_tizen 3.0
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_device_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_device_unset_att_mtu_changed_cb()
- */
-int bt_device_set_att_mtu_changed_cb(bt_device_att_mtu_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief      Unregisters the callback function to be invoked when the ATT MTU is changed.
- * @since_tizen 3.0
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_device_set_att_mtu_changed_cb()
- */
-int bt_device_unset_att_mtu_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Registers a rfcomm server socket with a specific UUID. Activation by dbus is possible when the profile is connected.
- * @since_tizen 2.4
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks A socket can be destroyed by bt_socket_destroy_rfcomm_ex().
- * Application should call this API to receive a connection event when launched again by dbus.
- *
- * @param[in] uuid The UUID of service to provide
- * @param[in] bus_name bus_name of the application which is provided in service file.
- * @param[in] object_path dbus of the application
- * @return 0 on success, otherwise a negative error value.
- *
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Already registered
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_socket_listen_and_accept_rfcomm_ex()
- * @see bt_socket_destroy_rfcomm_ex()
- */
-int bt_socket_create_rfcomm_ex(const char *uuid, const char *bus_name, const char *object_path);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Removes the rfcomm server socket which was created using bt_socket_create_rfcomm_ex().
- * @since_tizen 2.4
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @remarks If callback function bt_socket_connection_state_changed_cb() is set and the remote Bluetooth device is connected,
- * then bt_socket_connection_state_changed_cb() will be called when this function is finished successfully.
- *
- * @param[in] uuid The UUID (which was created using bt_socket_create_rfcomm()) to destroy
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The socket must be created with bt_socket_create_rfcomm_ex().
- * @post If callback function bt_socket_connection_state_changed_cb() is set and the remote Bluetooth device is connected,
- * then bt_socket_connection_state_changed_cb() will be called.
- * @see bt_socket_create_rfcomm_ex()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_destroy_rfcomm_ex(const char *uuid);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Starts listening on passed rfcomm socket and accepts connection requests. Activation by dbus is possible when the profile is connected.
- * @since_tizen 2.4
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @details Pop-up is shown automatically when a RFCOMM connection is requested.
- * bt_socket_connection_state_changed_cb() will be called with
- * #BT_SOCKET_CONNECTED if you click "yes" and connection is finished successfully.
- * @param[in] uuid The UUID of service to provide
- * @param[in] max_pending_connections The maximum number of pending connections
- * @param[in] bus_name bus_name of the application which is provided in service file.
- * @param[in] object_path dbus of the application
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The socket must be created with bt_socket_create_rfcomm_ex().
- * @post If callback function bt_socket_connection_state_changed_cb() is set,
- * then bt_socket_connection_state_changed_cb() will be called when the remote Bluetooth device is connected.
- * @see bt_socket_create_rfcomm_ex()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_listen_and_accept_rfcomm_ex(const char *uuid, int max_pending_connections, const char* bus_name, const char *object_path);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Starts listening on passed rfcomm socket.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @details bt_socket_connection_requested_cb() will be called when a RFCOMM connection is requested.
- *
- * @param[in] socket_fd  The file descriptor socket on which start to listen
- * @param[in] max_pending_connections  The number of pending connections
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The socket must be created with bt_socket_create_rfcomm().
- * @post This function invokes bt_socket_connection_state_changed_cb().
- *
- * @see bt_socket_create_rfcomm()
- * @see bt_socket_set_connection_requested_cb()
- * @see bt_socket_unset_connection_requested_cb()
- * @see bt_socket_connection_requested_cb()
- */
-int bt_socket_listen(int socket_fd, int max_pending_connections);
-
-/**
- * @internal
- * @ingroup  CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Accepts a connection request.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @param[in] requested_socket_fd  The file descriptor of socket on which a connection is requested
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The connection is requested by bt_socket_connection_requested_cb().
- * @see bt_socket_create_rfcomm()
- * @see bt_socket_connection_requested_cb()
- * @see bt_socket_listen()
- * @see bt_socket_reject()
-*/
-int bt_socket_accept(int requested_socket_fd);
-
-/**
- * @internal
- * @ingroup  CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Rejects a connection request.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @param[in] socket_fd  The file descriptor of socket on which a connection is requested
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The connection is requested by bt_socket_connection_requested_cb().
- * @see bt_socket_create_rfcomm()
- * @see bt_socket_connection_requested_cb()
- * @see bt_socket_listen()
- * @see bt_socket_accept()
- */
-int bt_socket_reject(int socket_fd);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Initializes the Bluetooth OPP server requested by bt_opp_server_push_requested_cb().
- * @since_tizen 2.3
- * @details The popup appears when an OPP connection is requested from a remote device.
- * If you accept the request, then connection will be established and bt_opp_server_push_requested_cb() will be called.
- * At that time, you can call either bt_opp_server_accept() or bt_opp_server_reject().
- * @remarks This function must be called to start Bluetooth OPP server. You must free all resources of the Bluetooth service
- * by calling bt_opp_server_deinitialize() if Bluetooth OPP service is no longer needed.
- * @param[in] destination  The destination path
- * @param[in] push_requested_cb  The callback called when a push is requested
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_server_push_requested_cb()
- * @see  bt_opp_server_deinitialize()
- * @see  bt_opp_server_accept()
- * @see  bt_opp_server_reject()
- */
-int bt_opp_server_initialize(const char *destination, bt_opp_server_push_requested_cb push_requested_cb, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_MODULE
- * @brief Gets the percentage progress for ongoing transfers.
- * @since_tizen 3.0
- * @exception   None
- * @param[in] transfer_type    Transfer Type: (@c BLUETOOTH_TRANSFER_INBOUND = receiving , @c  BLUETOOTH_TRANSFER_OUTBOUND = sending)
- * @param[in] transfer_id      Transfer ID
- * @param[out] progress                Percentage Progress
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- */
-int bt_opp_get_transfer_progress(bt_opp_transfer_type_t transfer_type,
-               int transfer_id, unsigned char *progress);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Notifies the call event to the remote bluetooth device.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @remarks Before notifying #BT_AG_CALL_EVENT_ANSWERED or #BT_AG_CALL_EVENT_DIALING, you should open SCO(Synchronous Connection Oriented link)
- * if Bluetooth Hands-Free need SCO connection.
- * @param[in] event  The call event
- * @param[in] call_id  The call ID
- * @param[in] phone_number  The phone number. You must set this value in case of #BT_AG_CALL_EVENT_DIALING and #BT_AG_CALL_EVENT_INCOMING.
- * In other cases, this value can be NULL.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @see bt_audio_connect()
- */
-int bt_ag_notify_call_event(bt_ag_call_event_e event, unsigned int call_id, const char *phone_number);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Notifies the call list to the remote bluetooth device.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @param[in] list  The call list
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @see bt_audio_connect()
- */
-int bt_ag_notify_call_list(bt_call_list_h list);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Notifies the state of voice recognition.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @param[in] state  The state of voice recognition: (@c true = enabled, @c  false = disabled)
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @see bt_audio_connect()
- */
-int bt_ag_notify_voice_recognition_state(bool state);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Registers a callback function that will be invoked when a call handling event happened from Hands-Free.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_call_handling_event_cb()
- * @see bt_ag_unset_call_handling_event_cb()
- */
-int bt_ag_set_call_handling_event_cb(bt_ag_call_handling_event_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Unregisters a callback function that will be invoked when a call handling event happened from Hands-Free.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_call_handling_event_cb()
- * @see bt_ag_set_call_handling_event_cb()
- */
-int bt_ag_unset_call_handling_event_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Registers a callback function that will be invoked when a multi call handling event happened from Hands-Free.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_multi_call_handling_event_cb()
- * @see bt_ag_unset_multi_call_handling_event_cb()
- */
-int bt_ag_set_multi_call_handling_event_cb(bt_ag_multi_call_handling_event_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Unregisters a callback function that will be invoked when a multi call handling event happened from Hands-Free.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_multi_call_handling_event_cb()
- * @see bt_ag_set_multi_call_handling_event_cb()
- */
-int bt_ag_unset_multi_call_handling_event_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Registers a callback function that will be invoked when a DTMF(Dual Tone Multi Frequency) is transmitted from Hands-Free.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_dtmf_transmitted_cb()
- * @see bt_ag_unset_dtmf_transmitted_cb()
- */
-int bt_ag_set_dtmf_transmitted_cb(bt_ag_dtmf_transmitted_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Unregisters a callback function that will be invoked when a DTMF(Dual Tone Multi Frequency) is transmitted from Hands-Free.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_dtmf_transmitted_cb()
- * @see bt_ag_set_dtmf_transmitted_cb()
- */
-int bt_ag_unset_dtmf_transmitted_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Checks whether the remoted device enables NREC(Noise Reduction and Echo Canceling) or not.
- * @since_tizen 2.3
- * @param[out] enabled The NREC status: (@c true = enabled, @c  false = not enabled)
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device is connected by bt_audio_connect() with #BT_AUDIO_PROFILE_TYPE_HSP_HFP service.
- * @see bt_audio_connect()
- */
-int bt_ag_is_nrec_enabled(bool *enabled);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_CALL_MODULE
- * @brief Creates a handle of call list.
- * @since_tizen 2.3
- * @param[out] list  The handle of call list
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_call_list_destroy()
- */
-int bt_call_list_create(bt_call_list_h *list);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_CALL_MODULE
- * @brief Destroys the handle of call list.
- * @since_tizen 2.3
- * @param[in] list  The handle of call list
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_call_list_create()
- */
-int bt_call_list_destroy(bt_call_list_h list);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_CALL_MODULE
- * @brief Resets the handle of call list.
- * @since_tizen 2.3
- * @param[in] list  The handle of call list
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_call_list_create()
- */
-int bt_call_list_reset(bt_call_list_h list);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_CALL_MODULE
- * @brief Adds a call to the handle of call list.
- * @since_tizen 2.3
- * @param[in] list  The handle of call list
- * @param[in] call_id  The call ID
- * @param[in] state  The state of audio gate call
- * @param[in] phone_number The phone number. You must set this value in case of #BT_AG_CALL_EVENT_DIALING and      #BT_AG_CALL_EVENT_INCOMING.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_call_list_create()
- */
-int bt_call_list_add(bt_call_list_h list, unsigned int call_id, bt_ag_call_state_e state, const char *phone_number);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Checks whether the remoted device is wbs (Wide Band Speech) mode or not.
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
- * @param[out] wbs_mode The wbs status: (@c true = wide band speech, @c  false = narrow band speech)
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The remote device is connected by bt_audio_connect() with #BT_AUDIO_PROFILE_TYPE_HSP_HFP service.
- * @see bt_audio_connect()
- */
-int bt_ag_is_wbs_mode(bool *wbs_mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Gets the HF(Hands-Free) profile connected status for AG role.
- * @since_tizen 2.4
- * @param[out] connected the connected status: (@c true = connected , @c  false = not connected )
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_ag_is_connected(bool *connected);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_AUDIO_A2DP_MODULE
- * @brief  Sets copy protection. streaming application that needs to have the copy protection for the streaming data, shall invoke this API.
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @param[in] status - TRUE/FALSE
- * @return  0 on success, otherwise negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_OPERATION_FAILED  on failure
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_a2dp_set_content_protection(bool status);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Gets the specification name from the UUID
- * @since_tizen 2.4
- *
- * @remarks @a name must be released with free() by you.
- *
- * @param[in] uuid The UUID
- * @param[out] name The specification name which defined from www.bluetooth.org
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_get_uuid()
- */
-int bt_gatt_get_uuid_specification_name(const char *uuid, char **name);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Updates the permissions which a characteristic or descriptor's GATT handle has.
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The handle of a characteristic or descriptor
- * @param[in] permissions The permissions to be updated
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_characteristic_create()
- * @see bt_gatt_descriptor_create()
- * @see bt_gatt_permission_e
- */
-int bt_gatt_set_permissions(bt_gatt_h gatt_handle, int permissions);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Updates the properties which a characteristic's GATT handle has.
- * @since_tizen 3.0
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[in] properties The properties to be updated
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_property_e
- */
-int bt_gatt_characteristic_set_properties(bt_gatt_h characteristic, int properties);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Destroys the GATT handle
- * @since_tizen 2.4
- *
- * @param[in] gatt_handle The handle of service, characteristic or descriptor
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_service_create()
- * @see bt_gatt_characteristic_create()
- * @see bt_gatt_descriptor_create()
- */
-int bt_gatt_destroy(bt_gatt_h gatt_handle);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Registers a callback function that will be invoked when the A2DP Source connection state is changed.
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_audio_connection_state_changed_cb()
- */
-int bt_a2dp_source_audio_set_connection_state_changed_cb(bt_audio_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Unregisters a callback function that will be invoked when the A2DP Source connection state is changed.
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_audio_connection_state_changed_cb()
- * @see bt_audio_set_connection_state_changed_cb()
- */
-int bt_a2dp_source_audio_unset_connection_state_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief Activates the NAP(Network Access Point).
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_ALREADY_DONE  Operation is already done
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED
- * @see bt_nap_deactivate()
- */
-int bt_nap_activate(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief Deactivates the NAP(Network Access Point).
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_ALREADY_DONE  Operation is already done
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth NAP service must be activated with bt_nap_activate().
- * @see bt_nap_activate()
- */
-int bt_nap_deactivate(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief Disconnects the all PANUs(Personal Area Networking User) which are connected to you.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth NAP service must be activated with bt_nap_activate().
- * @see bt_nap_activate()
- */
-int bt_nap_disconnect_all(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief Disconnects the specified PANU(Personal Area Networking User) which is connected to you.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth NAP service must be activated with bt_nap_activate().
- * @see bt_nap_activate()
- */
-int bt_nap_disconnect(const char *remote_address);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief  Registers a callback function that will be invoked when the connection state changes.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_nap_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_nap_connection_state_changed_cb()
- * @see bt_nap_unset_connection_state_changed_cb()
- */
-int bt_nap_set_connection_state_changed_cb(bt_nap_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the connection state changes.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_nap_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_nap_connection_state_changed_cb()
- * @see bt_nap_set_connection_state_changed_cb()
- */
-int bt_nap_unset_connection_state_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
- * @brief  Registers a callback function that will be invoked when the connection state changes.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_nap_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_panu_connection_state_changed_cb()
- * @see bt_panu_unset_connection_state_changed_cb()
- */
-int bt_panu_set_connection_state_changed_cb(bt_panu_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
- * @brief  Unregisters a callback function that will be invoked when the connection state changes.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_nap_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_panu_connection_state_changed_cb()
- * @see bt_panu_set_connection_state_changed_cb()
- */
-int bt_panu_unset_connection_state_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
- * @brief Connects the remote device with the PAN(Personal Area Networking) service, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @param[in] type  The type of PAN service
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The local device must be bonded with the remote device by bt_device_create_bond().
- * @post bt_panu_connection_state_changed_cb() will be invoked.
- * @see bt_panu_disconnect()
- * @see bt_panu_connection_state_changed_cb()
- */
-int bt_panu_connect(const char *remote_address, bt_panu_service_type_e type);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
- * @brief Disconnects the remote device with the PAN(Personal Area Networking) service, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected by bt_panu_connect().
- * @post bt_panu_connection_state_changed_cb() will be invoked.
- * @see bt_panu_connect()
- * @see bt_panu_connection_state_changed_cb()
- */
-int bt_panu_disconnect(const char *remote_address);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief   update LE connection.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized by bt_initialize().
- * @pre The remote device must be connected with bt_gatt_connect().
- */
-int bt_device_le_conn_update(const char *device_address,
-                            const bt_le_conn_update_s *parameters);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Gets the is_alias_set property of a bonded device.
- * @since_tizen 3.0
- *
- * @param [in] remote_address The address of remote device
- * @param [out] is_alias_set The is_alias_set property of device
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
-  * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_adapter_get_bonded_device_is_alias_set(const char *remote_address, gboolean *is_alias_set);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Registers the method for HID Device role
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks This function must be called to register HID UUID
- * then only remote device could be able identify this one as HID device
- *
- * @param[in] callback  The callback called when the connection state is changed
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Already activated
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_hid_device_deactivate()
- */
-int bt_hid_device_activate(bt_hid_device_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Unregisters the method for HID Device role
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks This function must be called to deregister HID UUID
- *
- * @param[in] socket_fd on which uuid need to be deregistered.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Not activated
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_hid_device_activate()
- */
-int bt_hid_device_deactivate(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Initiates HID device Connection with device role, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks This function must be called to Initiate Hid device role connection
- *
- * @param[in] remote_address device address of remote device.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Not activated
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_ALREADY_DONE   Already connected
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @pre The local device must be bonded with the remote device by bt_device_create_bond().
- * @see bt_initialize()
- * @see bt_hid_device_activate()
- */
-int bt_hid_device_connect(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Disconnects the connection with HID Host device, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] remote_address device address of remote device.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_disconnect(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Sends the mouse event data.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] remote_address device address of remote device.
- * @param[in] mouse_data mouse data that need to be passed to remote device
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- *
- * @pre The HID connection must be established.
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_send_mouse_event(const char *remote_address,
-                       const bt_hid_mouse_data_s *mouse_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Sends the keyboard event data.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] remote_address device address of remote device.
- * @param[in] key_data  key data the need to be passed to remote device
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- *
- * @pre The HID connection must be established.
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_send_key_event(const char *remote_address,
-                       const bt_hid_key_data_s *key_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Sets the callback when device gets some data from HID Host.
- * @since_tizen 2.3.1
- *
- * @param[in] callback  callback function to be set when data is received.
- * @param[in] user_data data from application which will be provided in callback.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- *
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_set_data_received_cb(bt_hid_device_data_received_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Unsets the callback when device gets some data from HID Host.
- * @since_tizen 2.3.1
- *
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- *
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_unset_data_received_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Responds to the reports from HID Host.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] remote_address device address of remote device.
- * @param[in] header_type Header type to be there in response
- * @param[in] param_type Parameter type to be there in response.
- * @param[in] data Data to be present in data payload of response.
- * @param[in] data_len The length of the response data
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- *
- * @pre The HID connection must be established.
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_reply_to_report(const char *remote_address,
-               bt_hid_header_type_e header_type, bt_hid_param_type_e param_type,
-               const char *data, unsigned int data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Sends the custom event data.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] remote_address device address of remote device.
- * @param[in] report_id  reoport id need to be passed to remote device
- * @param[in] data  The data need to be passed to remote device
- * @param[in] data_len  The length of the data
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- *
- * @pre The HID connection must be established.
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_send_custom_event(const char *remote_address,
-               unsigned char report_id, const char *data, unsigned int data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets Restriction for BT mode(BT allowed or not).
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - BT Allow value.
- *             BT_DPM_ERROR     = -1,   < bluetooth allowance error
- *             BT_DPM_BT_ALLOWED,               < bluetooth allowance allowed
- *             BT_DPM_HANDSFREE_ONLY,  < bluetooth allowance handsfree only
- *             BT_DPM_BT_RESTRICTED,  < bluetooth allowance restricted
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre none.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_allow_bluetooth_mode(bt_dpm_allow_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads Restriction for BT mode(BT allowed or not).
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] none
- * @param[out] value - BT Allow value.
- *             BT_DPM_ERROR     = -1,   < bluetooth allowance error
- *             BT_DPM_BT_ALLOWED,               < bluetooth allowance allowed
- *             BT_DPM_HANDSFREE_ONLY,  < bluetooth allowance handsfree only
- *             BT_DPM_BT_RESTRICTED,  < bluetooth allowance restricted
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre none.
- * @see bt_dpm_set_allow_bluetooth_mode()
- */
-int bt_dpm_get_allow_bluetooth_mode(bt_dpm_allow_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for device.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_activate_device_restriction(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for device.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_is_device_restriction_active(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for uuid.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_activate_uuid_restriction(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for uuid.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_is_uuid_restriction_active(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Adds the device to blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  device_address - Device address
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_add_devices_to_blacklist(const char *device_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Adds the device to whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  device_address - Device address
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_add_devices_to_whitelist(const char *device_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Adds the uuids to blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  service_uuids - profile or custom service uuids
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_add_uuids_to_blacklist(const char *service_uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Adds the uuid to whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  service_uuids - profile or custom service uuids
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_add_uuids_to_whitelist(const char *service_uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Clears the device from blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  none
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_clear_devices_from_blacklist(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Clears the device from whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  none
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_clear_devices_from_whitelist(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Clears the uuids from blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  none
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_clear_uuids_from_blacklist(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Clears the uuids from whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  none
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_clear_uuids_from_whitelist(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the devices from blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] device_list - list of devices
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_devices_from_blacklist(bt_dpm_device_list_s **device_list);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the devices from whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] device_list - list of devices
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_devices_from_whitelist(bt_dpm_device_list_s **device_list);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the uuids from blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] uuid_list - list of uuids
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_uuids_from_blacklist(bt_dpm_uuids_list_s **uuid_list);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the uuids from whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] uuid_list - list of uuids
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_uuids_from_whitelist(bt_dpm_uuids_list_s **uuid_list);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Removes the devices from whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  device_address - Device address
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_remove_device_from_whitelist(const char *device_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Removes the devices from blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  device_address - Device address
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_remove_device_from_blacklist(const char *device_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Removes the uuids from whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  service_uuids - profile or custom service uuids
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_remove_uuid_from_whitelist(const char *service_uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Removes the uuids from blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  service_uuids - profile or custom service uuids
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_remove_uuid_from_blacklist(const char *service_uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for  outgoing call.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_allow_outgoing_call(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for  outgoing call.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_allow_outgoing_call(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for pairing.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_pairing_state(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for pairing.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_pairing_state(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for profiles.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]profile - Profile.
- *             BT_DPM_POLICY_A2DP_PROFILE_STATE,
- *             BT_DPM_POLICY_AVRCP_PROFILE_STATE,
- *             BT_DPM_POLICY_BPP_PROFILE_STATE,
- *             BT_DPM_POLICY_DUN_PROFILE_STATE,
- *             BT_DPM_POLICY_FTP_PROFILE_STATE,
- *             BT_DPM_POLICY_HFP_PROFILE_STATE,
- *             BT_DPM_POLICY_HSP_PROFILE_STATE,
- *             BT_DPM_POLICY_PBAP_PROFILE_STATE,
- *             BT_DPM_POLICY_SAP_PROFILE_STATE,
- *             BT_DPM_POLICY_SPP_PROFILE_STATE,
- *             BT_DPM_PROFILE_NONE
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_profile_state(bt_dpm_profile_e profile, bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for profiles.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]profile - Profile.
- *             BT_DPM_POLICY_A2DP_PROFILE_STATE,
- *             BT_DPM_POLICY_AVRCP_PROFILE_STATE,
- *             BT_DPM_POLICY_BPP_PROFILE_STATE,
- *             BT_DPM_POLICY_DUN_PROFILE_STATE,
- *             BT_DPM_POLICY_FTP_PROFILE_STATE,
- *             BT_DPM_POLICY_HFP_PROFILE_STATE,
- *             BT_DPM_POLICY_HSP_PROFILE_STATE,
- *             BT_DPM_POLICY_PBAP_PROFILE_STATE,
- *             BT_DPM_POLICY_SAP_PROFILE_STATE,
- *             BT_DPM_POLICY_SPP_PROFILE_STATE,
- *             BT_DPM_PROFILE_NONE
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_profile_state(bt_dpm_profile_e profile, bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for desktop connectivity.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_desktop_connectivity_state(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for desktop connectivity.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_desktop_connectivity_state(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for discoverable mode.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_discoverable_state(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for discoverable mode.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_discoverable_state(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for limited discoverable mode.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-
-int bt_dpm_set_limited_discoverable_state(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for limited discoverable mode.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_limited_discoverable_state(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for Data transfer.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_data_transfer_state(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for Data transfer.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_data_transfer_state(bt_dpm_status_e *value);
-
-/**
- * @internal
- * @brief Initialize Bluetooth IPSP service and set the callback
- */
-int bt_ipsp_initialize(bt_ipsp_init_state_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @brief De-Initialize Bluetooth IPSP service and unset the callback
- */
-int bt_ipsp_deinitialize(void);
-
-/**
- * @internal
- * @brief Connect to a IPSP service over LE to remote device.
- */
-int bt_ipsp_connect(const char *address);
-
-/**
- * @internal
- * @brief Disconnect to a IPSP service over LE to remote device.
- */
-int bt_ipsp_disconnect(const char *address);
-
-/**
- * @internal
- * @brief Set IPSP connection state event change callback.
- */
-int bt_ipsp_set_connection_state_changed_cb(bt_ipsp_connection_state_changed_cb callback,
-                                               void *user_data);
-
-/**
- * @internal
- * @brief Unset IPSP connection state event change callback.
- */
-int bt_ipsp_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief Gets the pbap connected status.
- * @since_tizen 3.0
- * @param[in] remote_address The address of the remote device
- * @param[out] connected_status the connected status
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_pbap_client_is_connected(const char *address, bool *connected_status);
-
-/**
- * @internal
- * @brief Register the Proximity Profile.
- */
-int bt_proximity_register(bt_proximity_role_t role, bt_proximity_property_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @brief Unregister the Proximity Profile.
- */
-int bt_proximity_unregister(bt_proximity_role_t role);
-
-/**
- * @internal
- * @brief Set the Proximity Profile property value.
- */
-int bt_proximity_set_property(const char *remote_address, bt_proximity_property_t property, int value);
-
-/**
- * @internal
- * @brief Read the Proximity Profile property value.
- */
-int bt_proximity_get_property(const char *remote_address, bt_proximity_property_t property, int *value);
-
-/**
- * @internal
- * @brief Lists the Proximity Profile property/service supported.
- */
-int bt_proximity_get_supported_services(const char *remote_address, int *supported_services);
-
-/**
- * @internal
- * @brief API to set scan filter for iBeacons reports
- */
-int bt_adapter_le_set_ibeacon_scan_filter(bt_scan_filter_h scan_filter,
-                       const char *data, unsigned int data_len);
-
-/**
- * @internal
- * @brief API to read iBeacon report from LE scan result information
- */
-int bt_adapter_le_get_scan_result_ibeacon_report(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, bt_adapter_ibeacon_scan_result_info_s **ibeacon_info);
-
-/**
- * @internal
- * @brief API to clear the iBeacon report
- */
-int bt_adapter_le_free_ibeacon_report(bt_adapter_ibeacon_scan_result_info_s *ibeacon_info);
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_NETWORK_BLUETOOTH_INTERNAL_H__ */
diff --git a/include/mobile/bluetooth_type.h b/include/mobile/bluetooth_type.h
deleted file mode 100644 (file)
index aa81ff5..0000000
+++ /dev/null
@@ -1,1941 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __TIZEN_NETWORK_BLUETOOTH_TYPE_H__
-#define __TIZEN_NETWORK_BLUETOOTH_TYPE_H__
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdbool.h>
-#include <tizen_error.h>
-
- #ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/**
- * @file bluetooth_type.h
- * @brief API to control the Bluetooth adapter, devices and communications.
- * @ingroup     CAPI_NETWORK_BLUETOOTH_TYPE_MODULE
- */
-
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_MODULE
- * @brief Enumerations of Bluetooth error codes.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful*/
-       BT_ERROR_CANCELLED = TIZEN_ERROR_CANCELED, /**< Operation cancelled */
-       BT_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */
-       BT_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */
-       BT_ERROR_RESOURCE_BUSY = TIZEN_ERROR_RESOURCE_BUSY, /**< Device or resource busy */
-       BT_ERROR_TIMED_OUT = TIZEN_ERROR_TIMED_OUT, /**< Timeout error */
-       BT_ERROR_NOW_IN_PROGRESS = TIZEN_ERROR_NOW_IN_PROGRESS, /**< Operation now in progress */
-       BT_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< BT is Not Supported */
-       BT_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */
-       BT_ERROR_QUOTA_EXCEEDED = TIZEN_ERROR_QUOTA_EXCEEDED, /**< Quota exceeded */
-       BT_ERROR_NO_DATA = TIZEN_ERROR_NO_DATA, /**< No data available */
-       BT_ERROR_DEVICE_POLICY_RESTRICTION = TIZEN_ERROR_DEVICE_POLICY_RESTRICTION, /**< Device policy restriction (Since 3.0) */
-       BT_ERROR_NOT_INITIALIZED = TIZEN_ERROR_BLUETOOTH|0x0101, /**< Local adapter not initialized */
-       BT_ERROR_NOT_ENABLED = TIZEN_ERROR_BLUETOOTH|0x0102, /**< Local adapter not enabled */
-       BT_ERROR_ALREADY_DONE = TIZEN_ERROR_BLUETOOTH|0x0103, /**< Operation already done  */
-       BT_ERROR_OPERATION_FAILED = TIZEN_ERROR_BLUETOOTH|0x0104, /**< Operation failed */
-       BT_ERROR_NOT_IN_PROGRESS = TIZEN_ERROR_BLUETOOTH|0x0105, /**< Operation not in progress */
-       BT_ERROR_REMOTE_DEVICE_NOT_BONDED = TIZEN_ERROR_BLUETOOTH|0x0106, /**< Remote device not bonded */
-       BT_ERROR_AUTH_REJECTED = TIZEN_ERROR_BLUETOOTH|0x0107, /**< Authentication rejected */
-       BT_ERROR_AUTH_FAILED = TIZEN_ERROR_BLUETOOTH|0x0108, /**< Authentication failed */
-       BT_ERROR_REMOTE_DEVICE_NOT_FOUND = TIZEN_ERROR_BLUETOOTH|0x0109, /**< Remote device not found */
-       BT_ERROR_SERVICE_SEARCH_FAILED = TIZEN_ERROR_BLUETOOTH|0x010A, /**< Service search failed */
-       BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED = TIZEN_ERROR_BLUETOOTH|0x010B, /**< Remote device is not connected */
-       BT_ERROR_AGAIN = TIZEN_ERROR_BLUETOOTH|0x010C, /**< Resource temporarily unavailable */
-       BT_ERROR_SERVICE_NOT_FOUND = TIZEN_ERROR_BLUETOOTH|0x010D, /**< Service Not Found */
-} bt_error_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Enumerations of the Bluetooth adapter state.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_DISABLED = 0x00, /**< Bluetooth adapter is disabled */
-       BT_ADAPTER_ENABLED, /**< Bluetooth adapter is enabled */
-} bt_adapter_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Enumerations of the Bluetooth visibility mode.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE = 0x00,  /**< Other devices cannot find your device via discovery */
-       BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE,  /**< Discoverable mode */
-       BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE,  /**< Discoverable mode with time limit. After specific period,
-                                                           it is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE.*/
-} bt_adapter_visibility_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Enumerations of the discovery state of Bluetooth device.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_DEVICE_DISCOVERY_STARTED, /**< Device discovery is started */
-       BT_ADAPTER_DEVICE_DISCOVERY_FINISHED, /**< Device discovery is finished */
-       BT_ADAPTER_DEVICE_DISCOVERY_FOUND, /**< The remote Bluetooth device is found */
-} bt_adapter_device_discovery_state_e;
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Enumerations of the discovery state of Bluetooth LE device.
- * @since_tizen 2.3
- *
- */
-typedef enum {
-       BT_ADAPTER_LE_DEVICE_DISCOVERY_STARTED, /**< LE device discovery is started */
-       BT_ADAPTER_LE_DEVICE_DISCOVERY_FINISHED, /**< LE device discovery is finished */
-       BT_ADAPTER_LE_DEVICE_DISCOVERY_FOUND, /**< The remote Bluetooth LE device is found */
-} bt_adapter_le_device_discovery_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth advertising state.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_LE_ADVERTISING_STOPPED = 0x00, /**< Bluetooth advertising is stopped */
-       BT_ADAPTER_LE_ADVERTISING_STARTED, /**< Bluetooth advertising is started */
-} bt_adapter_le_advertising_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth advertising mode.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_ADAPTER_LE_ADVERTISING_MODE_BALANCED,  /**< Balanced advertising mode */
-       BT_ADAPTER_LE_ADVERTISING_MODE_LOW_LATENCY,  /**< Low latency advertising mode */
-       BT_ADAPTER_LE_ADVERTISING_MODE_LOW_ENERGY  /**< Low energy advertising mode */
-} bt_adapter_le_advertising_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth advertising filter policy.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_LE_ADVERTISING_FILTER_DEFAULT = 0x00, /**< White list is not in use */
-       BT_ADAPTER_LE_ADVERTISING_FILTER_ALLOW_SCAN_WL = 0x01, /**< Allow the scan
-                                       request that in the White list */
-       BT_ADAPTER_LE_ADVERTISING_FILTER_ALLOW_CONN_WL = 0x02, /**< Allow the connection
-                                       request that in the White list */
-       BT_ADAPTER_LE_ADVERTISING_FILTER_ALLOW_SCAN_CONN_WL = 0x03, /**< Allow the
-                                       scan and connection request that in the White list */
-} bt_adapter_le_advertising_filter_policy_e;
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth advertising type.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_LE_ADVERTISING_CONNECTABLE = 0x00, /**< Connectable undirected advertising (ADV_IND) */
-       BT_ADAPTER_LE_ADVERTISING_CONNECTABLE_DIRECT_HIGH = 0x01, /**< Connectable high duty cycle directed advertising (ADV_DIRECT_IND) */
-       BT_ADAPTER_LE_ADVERTISING_SCANNABLE = 0x02, /**< Scannable undirected advertising (ADV_SCAN_IND) */
-       BT_ADAPTER_LE_ADVERTISING_NON_CONNECTABLE = 0x03, /**< Non connectable undirected advertising (ADV_NONCOND_IND) */
-       BT_ADAPTER_LE_ADVERTISING_CONNECTABLE_DIRECT_LOW = 0x04, /**< Connectable low duty cycle directed advertising (ADV_DIRECT_IND) */
-} bt_adapter_le_advertising_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth LE packet type.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_LE_PACKET_ADVERTISING, /**< Advertising packet */
-       BT_ADAPTER_LE_PACKET_SCAN_RESPONSE, /**< Scan response packet */
-} bt_adapter_le_packet_type_e;
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth LE data type
- *         that can be included in LE packets.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_LE_PACKET_DATA_COMP_LIST_16_BIT_SERVICE_CLASS_UUIDS = 0x03, /**< Complete list of 16 bit UUIDs */
-       BT_ADAPTER_LE_PACKET_DATA_MANUFACTURER_SPECIFIC_DATA = 0xff, /**< Manufacturer data */
-} bt_adapter_le_packet_data_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth le scan mode.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_ADAPTER_LE_SCAN_MODE_BALANCED, /**< Balanced mode of power consumption and connection latency */
-       BT_ADAPTER_LE_SCAN_MODE_LOW_LATENCY, /**< Low connection latency but high power consumption */
-       BT_ADAPTER_LE_SCAN_MODE_LOW_ENERGY /**< Low power consumption but high connection latency */
-} bt_adapter_le_scan_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Enumerations of device disconnect reason.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_DEVICE_DISCONNECT_REASON_UNKNOWN, /**< Disconnected by unknown reason */
-       BT_DEVICE_DISCONNECT_REASON_TIMEOUT, /**< Disconnected by timeout */
-       BT_DEVICE_DISCONNECT_REASON_LOCAL_HOST, /**< Disconnected by local host */
-       BT_DEVICE_DISCONNECT_REASON_REMOTE, /**< Disconnected by remote */
-} bt_device_disconnect_reason_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Enumerations of connection link type.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_DEVICE_CONNECTION_LINK_BREDR, /**< BR/EDR link */
-       BT_DEVICE_CONNECTION_LINK_LE, /**< LE link */
-       BT_DEVICE_CONNECTION_LINK_DEFAULT = 0xFF, /**< The connection type default */
-} bt_device_connection_link_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Enumerations of device authorization state.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_DEVICE_AUTHORIZED, /**< The remote Bluetooth device is authorized */
-       BT_DEVICE_UNAUTHORIZED, /**< The remote Bluetooth device is unauthorized */
-} bt_device_authorization_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Enumerations of Bluetooth profile.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_PROFILE_RFCOMM = 0x01, /**< RFCOMM Profile */
-       BT_PROFILE_A2DP = 0x02, /**< Advanced Audio Distribution Profile Source role */
-       BT_PROFILE_HSP = 0x04, /**< Headset Profile */
-       BT_PROFILE_HID = 0x08, /**< Human Interface Device Profile */
-       BT_PROFILE_NAP = 0x10, /**< Network Access Point Profile */
-       BT_PROFILE_AG = 0x20, /**< Audio Gateway Profile */
-       BT_PROFILE_GATT = 0x40, /**< Generic Attribute Profile */
-       BT_PROFILE_NAP_SERVER = 0x80, /**< NAP server Profile */
-       BT_PROFILE_A2DP_SINK = 0x100, /**< Advanced Audio Distribution Profile Sink role */
-} bt_profile_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Enumerations of device address type.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_DEVICE_PUBLIC_ADDRESS = 0x00, /**< Public address */
-       BT_DEVICE_RANDOM_ADDRESS, /**< Random address */
-} bt_device_address_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Enumerations of service class.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_SC_NONE = 0, /**< No service class */
-       BT_SC_RES_SERVICE_MASK = 0x00000001, /**< RES service class */
-       BT_SC_SPP_SERVICE_MASK = 0x00000002, /**< SPP service class */
-       BT_SC_DUN_SERVICE_MASK = 0x00000004, /**< DUN service class */
-       BT_SC_FAX_SERVICE_MASK = 0x00000008, /**< FAX service class */
-       BT_SC_LAP_SERVICE_MASK = 0x00000010, /**< LAP service class */
-       BT_SC_HSP_SERVICE_MASK = 0x00000020, /**< HSP service class */
-       BT_SC_HFP_SERVICE_MASK = 0x00000040, /**< HFP service class */
-       BT_SC_OPP_SERVICE_MASK = 0x00000080, /**< OPP service class */
-       BT_SC_FTP_SERVICE_MASK = 0x00000100, /**< FTP service class */
-       BT_SC_CTP_SERVICE_MASK = 0x00000200, /**< CTP service class */
-       BT_SC_ICP_SERVICE_MASK = 0x00000400, /**< ICP service class */
-       BT_SC_SYNC_SERVICE_MASK = 0x00000800, /**< SYNC service class */
-       BT_SC_BPP_SERVICE_MASK = 0x00001000, /**< BPP service class */
-       BT_SC_BIP_SERVICE_MASK = 0x00002000, /**< BIP service class */
-       BT_SC_PANU_SERVICE_MASK = 0x00004000, /**< PANU service class */
-       BT_SC_NAP_SERVICE_MASK = 0x00008000, /**< NAP service class */
-       BT_SC_GN_SERVICE_MASK = 0x00010000, /**< GN service class */
-       BT_SC_SAP_SERVICE_MASK = 0x00020000, /**< SAP service class */
-       BT_SC_A2DP_SERVICE_MASK = 0x00040000, /**< A2DP service class */
-       BT_SC_AVRCP_SERVICE_MASK = 0x00080000, /**< AVRCP service class */
-       BT_SC_PBAP_SERVICE_MASK = 0x00100000, /**< PBAP service class */
-       BT_SC_HID_SERVICE_MASK = 0x00200000, /**< HID service class */
-       BT_SC_A2DP_SOURCE_SERVICE_MASK = 0x00400000, /**< A2DP SOURCE service class */
-       BT_SC_ALL_SERVICE_MASK = 0x00FFFFFF, /**< ALL service class */
-       BT_SC_MAX /**< MAX service class */
-} bt_service_class_t;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Enumerations of major service class.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_MAJOR_SERVICE_CLASS_LIMITED_DISCOVERABLE_MODE  = 0x002000, /**< Limited discoverable mode */
-       BT_MAJOR_SERVICE_CLASS_POSITIONING                = 0x010000, /**< Positioning class */
-       BT_MAJOR_SERVICE_CLASS_NETWORKING                 = 0x020000, /**< Networking class */
-       BT_MAJOR_SERVICE_CLASS_RENDERING                  = 0x040000, /**< Rendering class */
-       BT_MAJOR_SERVICE_CLASS_CAPTURING                  = 0x080000, /**< Capturing class */
-       BT_MAJOR_SERVICE_CLASS_OBJECT_TRANSFER            = 0x100000, /**< Object transferring class */
-       BT_MAJOR_SERVICE_CLASS_AUDIO                      = 0x200000, /**< Audio class*/
-       BT_MAJOR_SERVICE_CLASS_TELEPHONY                  = 0x400000, /**< Telephony class */
-       BT_MAJOR_SERVICE_CLASS_INFORMATION                = 0x800000, /**< Information class */
-} bt_major_service_class_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Enumerations of major device class.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_MAJOR_DEVICE_CLASS_MISC = 0x00, /**< Miscellaneous major device class*/
-       BT_MAJOR_DEVICE_CLASS_COMPUTER = 0x01, /**< Computer major device class */
-       BT_MAJOR_DEVICE_CLASS_PHONE = 0x02, /**< Phone major device class */
-       BT_MAJOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT = 0x03, /**< LAN/Network access point major device class */
-       BT_MAJOR_DEVICE_CLASS_AUDIO_VIDEO = 0x04, /**< Audio/Video major device class */
-       BT_MAJOR_DEVICE_CLASS_PERIPHERAL = 0x05, /**< Peripheral major device class */
-       BT_MAJOR_DEVICE_CLASS_IMAGING = 0x06, /**< Imaging major device class */
-       BT_MAJOR_DEVICE_CLASS_WEARABLE = 0x07, /**< Wearable device class */
-       BT_MAJOR_DEVICE_CLASS_TOY = 0x08, /**< Toy device class */
-       BT_MAJOR_DEVICE_CLASS_HEALTH = 0x09, /**< Health device class */
-       BT_MAJOR_DEVICE_CLASS_UNCATEGORIZED = 0x1F, /**< Uncategorized major device class */
-} bt_major_device_class_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Enumerations of minor device class.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_MINOR_DEVICE_CLASS_COMPUTER_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of computer */
-       BT_MINOR_DEVICE_CLASS_COMPUTER_DESKTOP_WORKSTATION = 0x04, /**< Desktop workstation minor device class of computer */
-       BT_MINOR_DEVICE_CLASS_COMPUTER_SERVER_CLASS = 0x08, /**< Server minor device class of computer */
-       BT_MINOR_DEVICE_CLASS_COMPUTER_LAPTOP = 0x0C, /**< Laptop minor device class of computer */
-       BT_MINOR_DEVICE_CLASS_COMPUTER_HANDHELD_PC_OR_PDA = 0x10, /**< Handheld PC/PDA minor device class of computer */
-       BT_MINOR_DEVICE_CLASS_COMPUTER_PALM_SIZED_PC_OR_PDA = 0x14, /**< Palm sized PC/PDA minor device class of computer */
-       BT_MINOR_DEVICE_CLASS_COMPUTER_WEARABLE_COMPUTER = 0x18, /**< Wearable(watch sized) minor device class of computer */
-
-       BT_MINOR_DEVICE_CLASS_PHONE_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of phone */
-       BT_MINOR_DEVICE_CLASS_PHONE_CELLULAR = 0x04, /**< Cellular minor device class of phone */
-       BT_MINOR_DEVICE_CLASS_PHONE_CORDLESS = 0x08, /**< Cordless minor device class of phone */
-       BT_MINOR_DEVICE_CLASS_PHONE_SMART_PHONE = 0x0C, /**< Smart phone minor device class of phone */
-       BT_MINOR_DEVICE_CLASS_PHONE_WIRED_MODEM_OR_VOICE_GATEWAY = 0x10, /**< Wired modem or voice gateway minor device class of phone */
-       BT_MINOR_DEVICE_CLASS_PHONE_COMMON_ISDN_ACCESS = 0x14, /**< Common ISDN minor device class of phone */
-
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_FULLY_AVAILABLE = 0x04, /**< Fully available minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_1_TO_17_PERCENT_UTILIZED = 0x20, /**< 1-17% utilized minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_17_TO_33_PERCENT_UTILIZED = 0x40, /**< 17-33% utilized minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_33_TO_50_PERCENT_UTILIZED = 0x60, /**< 33-50% utilized minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_50_to_67_PERCENT_UTILIZED = 0x80, /**< 50-67% utilized minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_67_TO_83_PERCENT_UTILIZED = 0xA0, /**< 67-83% utilized minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_83_TO_99_PERCENT_UTILIZED = 0xC0, /**< 83-99% utilized minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_NO_SERVICE_AVAILABLE = 0xE0, /**< No service available minor device class of LAN/Network access point */
-
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_WEARABLE_HEADSET = 0x04, /**< Wearable headset minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HANDS_FREE = 0x08, /**< Hands-free minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_MICROPHONE = 0x10, /**< Microphone minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_LOUDSPEAKER = 0x14, /**< Loudspeaker minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HEADPHONES = 0x18, /**< Headphones minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_PORTABLE_AUDIO = 0x1C, /**< Portable audio minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_CAR_AUDIO = 0x20, /**< Car audio minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_SET_TOP_BOX = 0x24, /**< Set-top box minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HIFI_AUDIO_DEVICE = 0x28, /**< Hifi audio minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VCR = 0x2C, /**< VCR minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_CAMERA = 0x30, /**< Video camera minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_CAMCORDER = 0x34, /**< Camcorder minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_MONITOR = 0x38, /**< Video monitor minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_DISPLAY_LOUDSPEAKER = 0x3C, /**< Video display and loudspeaker minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_CONFERENCING = 0x40, /**< Video conferencing minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_GAMING_TOY = 0x48, /**< Gaming/toy minor device class of audio/video */
-
-       BT_MINOR_DEVICE_CLASS_PERIPHERA_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_KEY_BOARD = 0x40, /**< Key board minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_POINTING_DEVICE = 0x80, /**< Pointing device minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_COMBO_KEYBOARD_POINTING_DEVICE = 0xC0, /**< Combo keyboard or pointing device minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_JOYSTICK = 0x04, /**< Joystick minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_GAME_PAD = 0x08, /**< Game pad minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_REMOTE_CONTROL = 0x0C, /**< Remote control minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_SENSING_DEVICE = 0x10, /**< Sensing device minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_DIGITIZER_TABLET = 0x14, /**< Digitizer minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_CARD_READER = 0x18, /**< Card reader minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_DIGITAL_PEN = 0x1C, /**< Digital pen minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_HANDHELD_SCANNER = 0x20, /**< Handheld scanner minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_HANDHELD_GESTURAL_INPUT_DEVICE = 0x24, /**< Handheld gestural input device minor device class of peripheral */
-
-       BT_MINOR_DEVICE_CLASS_IMAGING_DISPLAY = 0x10, /**< Display minor device class of imaging */
-       BT_MINOR_DEVICE_CLASS_IMAGING_CAMERA = 0x20, /**< Camera minor device class of imaging */
-       BT_MINOR_DEVICE_CLASS_IMAGING_SCANNER = 0x40, /**< Scanner minor device class of imaging */
-       BT_MINOR_DEVICE_CLASS_IMAGING_PRINTER = 0x80, /**< Printer minor device class of imaging */
-
-       BT_MINOR_DEVICE_CLASS_WEARABLE_WRIST_WATCH = 0x04, /**< Wrist watch minor device class of wearable */
-       BT_MINOR_DEVICE_CLASS_WEARABLE_PAGER = 0x08, /**< Pager minor device class of wearable */
-       BT_MINOR_DEVICE_CLASS_WEARABLE_JACKET = 0x0C, /**< Jacket minor device class of wearable */
-       BT_MINOR_DEVICE_CLASS_WEARABLE_HELMET = 0x10, /**< Helmet minor device class of wearable */
-       BT_MINOR_DEVICE_CLASS_WEARABLE_GLASSES = 0x14, /**< Glasses minor device class of wearable */
-
-       BT_MINOR_DEVICE_CLASS_TOY_ROBOT = 0x04, /**< Robot minor device class of toy */
-       BT_MINOR_DEVICE_CLASS_TOY_VEHICLE = 0x08, /**< Vehicle minor device class of toy */
-       BT_MINOR_DEVICE_CLASS_TOY_DOLL_ACTION = 0x0C, /**< Doll/Action minor device class of toy */
-       BT_MINOR_DEVICE_CLASS_TOY_CONTROLLER = 0x10, /**< Controller minor device class of toy */
-       BT_MINOR_DEVICE_CLASS_TOY_GAME = 0x14, /**< Game minor device class of toy */
-
-       BT_MINOR_DEVICE_CLASS_HEALTH_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_BLOOD_PRESSURE_MONITOR = 0x04, /**< Blood pressure monitor minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_THERMOMETER = 0x08, /**< Thermometer minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_WEIGHING_SCALE = 0x0C, /**< Weighing scale minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_GLUCOSE_METER = 0x10, /**< Glucose minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_PULSE_OXIMETER = 0x14, /**< Pulse oximeter minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_HEART_PULSE_RATE_MONITOR = 0x18, /**< Heart/Pulse rate monitor minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_DATA_DISPLAY = 0x1C, /**< Health data display minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_STEP_COUNTER = 0x20, /**< Step counter minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_BODY_COMPOSITION_ANALYZER = 0x24, /**< Body composition analyzer minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_PEAK_FLOW_MONITOR = 0x28, /**< Peak flow monitor minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_MEDICATION_MONITOR = 0x2C, /**< Medication monitor minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_KNEE_PROSTHESIS = 0x30, /**< Knee prosthesis minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_ANKLE_PROSTHESIS = 0x34, /**< Ankle prosthesis minor device class of health */
-} bt_minor_device_class_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Enumerations of gap appearance type.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_APPEARANCE_TYPE_UNKNOWN = 0x00, /**< Unknown appearance type */
-       BT_APPEARANCE_TYPE_GENERIC_PHONE = 0x40, /**< Generic Phone type - Generic category */
-       BT_APPEARANCE_TYPE_GENERIC_COMPUTER = 0x80, /**< Generic Computer type - Generic category */
-       BT_APPEARANCE_TYPE_GENERIC_WATCH = 0xC0, /**< Generic Watch type - Generic category */
-} bt_appearance_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Enumerations of the Bluetooth device's LE connection mode.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_DEVICE_LE_CONNECTION_MODE_BALANCED, /**< Balanced mode of power consumption and connection latency */
-       BT_DEVICE_LE_CONNECTION_MODE_LOW_LATENCY, /**< Low connection latency but high power consumption */
-       BT_DEVICE_LE_CONNECTION_MODE_LOW_ENERGY, /**< Low power consumption but high connection latency */
-} bt_device_le_connection_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Enumerations of connected Bluetooth device event role.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_SOCKET_UNKNOWN = 0x00, /**< Unknown role*/
-       BT_SOCKET_SERVER , /**< Server role*/
-       BT_SOCKET_CLIENT, /**< Client role*/
-} bt_socket_role_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Enumerations of Bluetooth socket connection state.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_SOCKET_CONNECTED, /**< RFCOMM is connected */
-       BT_SOCKET_DISCONNECTED, /**< RFCOMM is disconnected */
-} bt_socket_connection_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Enumerations for the types of profiles related with audio
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_AUDIO_PROFILE_TYPE_ALL = 0,  /**< All supported profiles related with audio */
-       BT_AUDIO_PROFILE_TYPE_HSP_HFP,  /**< HSP(Headset Profile) and HFP(Hands-Free Profile) */
-       BT_AUDIO_PROFILE_TYPE_A2DP,  /**< A2DP(Advanced Audio Distribution Profile) */
-       BT_AUDIO_PROFILE_TYPE_AG,  /**< AG(Audio Gateway) */
-       BT_AUDIO_PROFILE_TYPE_A2DP_SINK,  /**< A2DP(Advanced Audio Distribution Profile) Sink role */
-} bt_audio_profile_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Enumerations for the call handling event
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_AG_CALL_HANDLING_EVENT_ANSWER = 0x00,  /**< Request to answer an incoming call */
-       BT_AG_CALL_HANDLING_EVENT_RELEASE,  /**< Request to release a call */
-       BT_AG_CALL_HANDLING_EVENT_REJECT,  /**< Request to reject an incoming call */
-} bt_ag_call_handling_event_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Enumerations for the multi call handling event
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_AG_MULTI_CALL_HANDLING_EVENT_RELEASE_HELD_CALLS = 0x00,  /**< Request to release held calls */
-       BT_AG_MULTI_CALL_HANDLING_EVENT_RELEASE_ACTIVE_CALLS,  /**< Request to release active calls */
-       BT_AG_MULTI_CALL_HANDLING_EVENT_ACTIVATE_HELD_CALL,  /**< Request to put active calls into hold state and activate another (held or waiting) call */
-       BT_AG_MULTI_CALL_HANDLING_EVENT_MERGE_CALLS,  /**< Request to add a held call to the conversation */
-       BT_AG_MULTI_CALL_HANDLING_EVENT_EXPLICIT_CALL_TRANSFER,  /**< Request to let a user who has two calls to connect these two calls together and release its connections to both other parties */
-} bt_ag_multi_call_handling_event_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Enumerations for the equalizer state
- * @since_tizen 2.4
- */
-typedef enum {
-       BT_AVRCP_EQUALIZER_STATE_OFF = 0x01,  /**< Equalizer Off */
-       BT_AVRCP_EQUALIZER_STATE_ON,  /**< Equalizer On */
-} bt_avrcp_equalizer_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Enumerations for the repeat mode
- * @since_tizen 2.4
- */
-typedef enum {
-       BT_AVRCP_REPEAT_MODE_OFF = 0x01,  /**< Repeat Off */
-       BT_AVRCP_REPEAT_MODE_SINGLE_TRACK,  /**< Single track repeat */
-       BT_AVRCP_REPEAT_MODE_ALL_TRACK,  /**< All track repeat */
-       BT_AVRCP_REPEAT_MODE_GROUP,  /**< Group repeat */
-} bt_avrcp_repeat_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Enumerations for the shuffle mode
- * @since_tizen 2.4
- */
-typedef enum {
-       BT_AVRCP_SHUFFLE_MODE_OFF = 0x01,  /**< Shuffle Off */
-       BT_AVRCP_SHUFFLE_MODE_ALL_TRACK,  /**< All tracks shuffle */
-       BT_AVRCP_SHUFFLE_MODE_GROUP,  /**< Group shuffle */
-} bt_avrcp_shuffle_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Enumerations for the scan mode
- * @since_tizen 2.4
- */
-typedef enum {
-       BT_AVRCP_SCAN_MODE_OFF = 0x01,  /**< Scan Off */
-       BT_AVRCP_SCAN_MODE_ALL_TRACK,  /**< All tracks scan */
-       BT_AVRCP_SCAN_MODE_GROUP,  /**< Group scan */
-} bt_avrcp_scan_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Enumerations for the player state
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_AVRCP_PLAYER_STATE_STOPPED = 0x00,  /**< Stopped */
-       BT_AVRCP_PLAYER_STATE_PLAYING,  /**< Playing */
-       BT_AVRCP_PLAYER_STATE_PAUSED,  /**< Paused */
-       BT_AVRCP_PLAYER_STATE_FORWARD_SEEK,  /**< Seek Forward */
-       BT_AVRCP_PLAYER_STATE_REWIND_SEEK,  /**< Seek Rewind */
-} bt_avrcp_player_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Enumeration for the player control commands
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_AVRCP_CONTROL_PLAY = 0x01,   /**< Play */
-       BT_AVRCP_CONTROL_PAUSE,   /**< Pause */
-       BT_AVRCP_CONTROL_STOP,   /**< Stop */
-       BT_AVRCP_CONTROL_NEXT,   /**< Next Track*/
-       BT_AVRCP_CONTROL_PREVIOUS,   /**< Previous track */
-       BT_AVRCP_CONTROL_FAST_FORWARD,   /**< Fast Forward */
-       BT_AVRCP_CONTROL_REWIND   /**< Rewind */
-} bt_avrcp_player_command_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief Structure of Track metadata information.
- * @since_tizen 3.0
- *
- * @see #bt_class_s
- */
-typedef struct {
-       const char *title;   /**< Title */
-       const char *artist;   /**< Artist */
-       const char *album;   /**< Album name */
-       const char *genre;   /**< Album Genre */
-       unsigned int total_tracks;   /**< The total number of tracks */
-       unsigned int number;   /**< Track number */
-       unsigned int duration;   /**< Duration */
-} bt_avrcp_metadata_attributes_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 3.0
- * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
- * @param[in] remote_address  The remote address
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_control_deinitialize()
- */
-typedef void (*bt_avrcp_control_connection_state_changed_cb) (bool connected, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the Song position mode is changed by the remote target device.
- * @since_tizen 3.0
- * @param[in] position Playback position in milliseconds. When position is 0 it means the track is starting and when it's greater than or equal to track's duration the track has ended.
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_position_changed_cb()
- * @see bt_avrcp_unset_position_changed_cb()
- */
-typedef void (*bt_avrcp_position_changed_cb) (unsigned int position, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the Song metadata information is changed by the remote target device.
- * @since_tizen 3.0
- * @param[in] track The song metadata information
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_track_info_changed_cb()
- * @see bt_avrcp_unset_track_info_changed_cb()
- */
-typedef void (*bt_avrcp_track_info_changed_cb) (bt_avrcp_metadata_attributes_info_s *track, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the Song Play status mode is changed by the remote target device.
- * @since_tizen 3.0
- * @param[in] play_state The song play status
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_play_status_changed_cb()
- * @see bt_avrcp_unset_play_status_changed_cb()
- */
-typedef void (*bt_avrcp_play_status_changed_cb) (bt_avrcp_player_state_e play_state, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Enumerations for the data channel type
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_HDP_CHANNEL_TYPE_RELIABLE  = 0x01,  /**< Reliable Data Channel */
-       BT_HDP_CHANNEL_TYPE_STREAMING,  /**< Streaming Data Channel */
-} bt_hdp_channel_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of the integer type for GATT handle's value.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_DATA_TYPE_SINT8,  /**< 8 bit signed int type */
-       BT_DATA_TYPE_SINT16,  /**< 16 bit signed int type */
-       BT_DATA_TYPE_SINT32,  /**< 32 bit signed int type */
-       BT_DATA_TYPE_UINT8,  /**< 8 bit unsigned int type */
-       BT_DATA_TYPE_UINT16,  /**< 16 bit unsigned int type */
-       BT_DATA_TYPE_UINT32  /**< 32 bit unsigned int type */
-} bt_data_type_int_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of the float type for GATT handle's value.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_DATA_TYPE_FLOAT,  /**< 32 bit float type */
-       BT_DATA_TYPE_SFLOAT  /**< 16 bit float type */
-} bt_data_type_float_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of the write type.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_GATT_WRITE_TYPE_WRITE_NO_RESPONSE,  /**< Write without response type */
-       BT_GATT_WRITE_TYPE_WRITE  /**< Write type */
-} bt_gatt_write_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of the GATT handle's type.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_GATT_TYPE_SERVICE = 0x01,  /**< GATT service type */
-       BT_GATT_TYPE_CHARACTERISTIC = 0x02,  /** GATT characteristic type */
-       BT_GATT_TYPE_DESCRIPTOR = 0x03,  /** GATT descriptor type */
-} bt_gatt_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of the service type.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_GATT_SERVICE_TYPE_PRIMARY = 0x01,  /**< GATT primary service type */
-       BT_GATT_SERVICE_TYPE_SECONDARY = 0x02,  /**< GATT secondary service type */
-} bt_gatt_service_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of the characteristic's property.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_GATT_PROPERTY_BROADCAST = 0x01,  /**< Broadcast property */
-       BT_GATT_PROPERTY_READ = 0x02,  /**< Read property */
-       BT_GATT_PROPERTY_WRITE_WITHOUT_RESPONSE = 0x04,  /**< Write without response property */
-       BT_GATT_PROPERTY_WRITE = 0x08,  /**< Write property */
-       BT_GATT_PROPERTY_NOTIFY = 0x10,  /**< Notify property */
-       BT_GATT_PROPERTY_INDICATE = 0x20,  /**< Indicate property */
-       BT_GATT_PROPERTY_AUTHENTICATED_SIGNED_WRITES = 0x40,  /**< Authenticated signed writes property */
-       BT_GATT_PROPERTY_EXTENDED_PROPERTIES = 0x80,  /**< Extended properties */
-} bt_gatt_property_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of gatt server's service changing mode.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_GATT_CLIENT_SERVICE_ADDED,   /**< Service added */
-       BT_GATT_CLIENT_SERVICE_REMOVED, /**< Service removed */
-} bt_gatt_client_service_change_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Enumerations of the attribute's permission.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_GATT_PERMISSION_READ = 0x01,  /**< Read permission */
-       BT_GATT_PERMISSION_WRITE = 0x02,  /**< Write permission */
-       BT_GATT_PERMISSION_ENCRYPT_READ = 0x04,  /**< Readable permission required encryption */
-       BT_GATT_PERMISSION_ENCRYPT_WRITE = 0x08,  /**< Writable permission required encryption */
-       BT_GATT_PERMISSION_ENCRYPT_AUTHENTICATED_READ = 0x10,    /**< Readable permission required encryption and authentication */
-       BT_GATT_PERMISSION_ENCRYPT_AUTHENTICATED_WRITE = 0x20,  /**< Writable permission required encryption and authentication */
-} bt_gatt_permission_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Enumerations of the remote device request types for attributes
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_GATT_REQUEST_TYPE_READ = 0x00, /* Read Requested */
-       BT_GATT_REQUEST_TYPE_WRITE = 0x01, /* Write Requested */
-} bt_gatt_att_request_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
- * @brief  Enumerations for the types of PAN(Personal Area Networking) service.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_PANU_SERVICE_TYPE_NAP = 0,  /**< Network Access Point */
-} bt_panu_service_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief The handle to control Bluetooth LE advertising.
- * @since_tizen 2.3
- */
-typedef void *bt_advertiser_h;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_h instead.
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  The attribute handle of GATT(Generic Attribute Profile).
- * @since_tizen 2.3
- */
-typedef void *bt_gatt_attribute_h;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief The handle of a service, characteristic or descriptor.
- * @since_tizen 2.3.1
- */
-typedef void *bt_gatt_h;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief The handle of a GATT client which is associated with a remote device.
- * @since_tizen 2.3.1
- */
-typedef void *bt_gatt_client_h;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief The handle of a GATT server.
- * @since_tizen 3.0
- */
-typedef void *bt_gatt_server_h;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  The handle of calls state.
- * @since_tizen 2.3
- */
-typedef void *bt_call_list_h;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Class structure of device and service.
- * @since_tizen 2.3
- *
- * @see #bt_device_info_s
- * @see #bt_adapter_device_discovery_info_s
- * @see bt_device_bond_created_cb()
- * @see bt_adapter_device_discovery_state_changed_cb()
- */
-typedef struct {
-       bt_major_device_class_e major_device_class;     /**< Major device class. */
-       bt_minor_device_class_e minor_device_class;     /**< Minor device class. */
-       int major_service_class_mask;   /**< Major service class mask.
-       This value can be a combination of #bt_major_service_class_e like #BT_MAJOR_SERVICE_CLASS_RENDERING | #BT_MAJOR_SERVICE_CLASS_AUDIO */
-} bt_class_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Structure of device discovery information.
- * @since_tizen 2.3
- *
- * @see #bt_class_s
- * @see bt_adapter_device_discovery_state_changed_cb()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       char *remote_name;      /**< The name of remote device */
-       bt_class_s bt_class;    /**< The Bluetooth classes */
-       int rssi;       /**< The strength indicator of received signal  */
-       bool is_bonded; /**< The bonding state */
-       char **service_uuid;  /**< The UUID list of service */
-       int service_count;      /**< The number of services */
-       bt_appearance_type_e appearance;        /**< The Bluetooth appearance */
-       int manufacturer_data_len;      /**< manufacturer specific data length */
-       char *manufacturer_data;                /**< manufacturer specific data */
-} bt_adapter_device_discovery_info_s;
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Structure of le device discovery information.
- * @since_tizen 2.3
- *
- * @see #bt_class_s
- * @see bt_adapter_le_device_discovery_state_changed_cb()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       int address_type;       /**< The address type of remote device */
-       int rssi;       /**< The strength indicator of received signal  */
-       int adv_data_len;               /**< advertising indication data length */
-       char *adv_data;                 /**< advertising indication data */
-       int scan_data_len;              /**< scan response data length */
-       char *scan_data;                /**< scan response data */
-} bt_adapter_le_device_discovery_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Structure of le scan result information.
- * @since_tizen 2.3.1
- *
- * @see bt_adapter_le_start_scan()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       bt_device_address_type_e address_type;  /**< The address type of remote device */
-       int rssi;               /**< The strength indicator of received signal  */
-       int adv_data_len;       /**< advertising indication data length */
-       char *adv_data;         /**< advertising indication data */
-       int scan_data_len;      /**< scan response data length */
-       char *scan_data;        /**< scan response data */
-} bt_adapter_le_device_scan_result_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Structure of le iBeacon scan result information.
- * @since_tizen 3.0
- *
- * @see bt_adapter_le_start_scan()
- */
-typedef struct {
-       int company_id;         /**< company ID */
-       int ibeacon_type;       /**< Ibeacon type */
-       char *uuid;                     /**< UUID */
-       int major_id;           /**< Major ID */
-       int minor_id;           /**< Minor ID */
-       int measured_power;     /**< measured Power */
-} bt_adapter_ibeacon_scan_result_info_s;
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Structure of advertising parameters.
- * @since_tizen 2.3
- *
- * @see bt_adapter_le_advertising_state_changed_cb()
- * @see bt_adapter_le_start_advertising()
- */
-typedef struct {
-       float interval_min; /**< Minimum advertising interval for non-directed advertising.
-                             A multiple of 0.625ms is only allowed (Time range : 20ms to 10.24sec). */
-       float interval_max; /**< Maximum advertising interval for non-directed advertising.
-                             A multiple of 0.625ms is only allowed (Time range : 20ms to 10.24sec). */
-       char filter_policy; /* Advertising filter policy */
-       char type; /* Advertising type */
-} bt_adapter_le_advertising_params_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief LE service data structure.
- * @since_tizen 2.3.1
- *
- * @see bt_adapter_le_get_scan_result_service_data()
- */
-typedef struct {
-       char *service_uuid;     /**< 16 bit UUID of the service data */
-       char *service_data;     /**< Service data */
-       int service_data_len;   /**< Service data length */
-} bt_adapter_le_service_data_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Device information structure used for identifying pear device.
- * @since_tizen 2.3
- *
- * @see #bt_class_s
- * @see bt_device_bond_created_cb()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       char *remote_name;      /**< The name of remote device */
-       bt_class_s bt_class;    /**< The Bluetooth classes */
-       char **service_uuid;  /**< The UUID list of service */
-       int service_count;      /**< The number of services */
-       bool is_bonded; /**< The bonding state */
-       bool is_connected;      /**< The connection state */
-       bool is_authorized;     /**< The authorization state */
-       int manufacturer_data_len;      /**< manufacturer specific data length */
-       char *manufacturer_data;                /**< manufacturer specific data */
-} bt_device_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Service Discovery Protocol (SDP) data structure.
- * @since_tizen 2.3
- *
- * @details This protocol is used for discovering available services or pear device,
- * and finding one to connect with.
- *
- * @see bt_device_service_searched_cb()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       char **service_uuid;  /**< The UUID list of service */
-       int service_count;    /**< The number of services. */
-} bt_device_sdp_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Device connection information structure.
- * @since_tizen 2.3
- *
- * @see bt_device_connection_state_changed_cb()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       bt_device_connection_link_type_e link;  /**< Link type */
-       bt_device_disconnect_reason_e disconn_reason;  /**< Disconnection reason */
-} bt_device_connection_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Rfcomm connection data used for exchanging data between Bluetooth devices.
- * @since_tizen 2.3
- *
- * @see bt_socket_connection_state_changed_cb()
- */
-typedef struct {
-       int socket_fd;  /**< The file descriptor of connected socket */
-       int server_fd;  /**< The file descriptor of the server socket or -1 for client connection */
-       bt_socket_role_e local_role;    /**< The local device role in this connection */
-       char *remote_address;   /**< The remote device address */
-       char *service_uuid;     /**< The service UUId */
-} bt_socket_connection_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Structure of RFCOMM received data.
- * @since_tizen 2.3
- *
- * @remarks User can use standard linux functions for reading/writing
- * data from/to sockets.
- *
- * @see bt_socket_data_received_cb()
- */
-typedef struct {
-       int socket_fd;  /**< The socket fd */
-       int data_size;  /**< The length of the received data */
-       char *data;     /**< The received data */
-} bt_socket_received_data_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when the Bluetooth adapter state changes.
- * @since_tizen 2.3
- *
- * @param[in]   result  The result of the adapter state changing
- * @param[in]   adapter_state  The adapter state to be changed
- * @param[in]   user_data  The user data passed from the callback registration function
- * @see bt_adapter_set_state_changed_cb()
- * @see bt_adapter_unset_state_changed_cb()
- */
-typedef void (*bt_adapter_state_changed_cb)(int result, bt_adapter_state_e adapter_state, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when adapter name changes.
- * @since_tizen 2.3
- *
- * @param[in]   device_name    The name of the Bluetooth device to be changed
- * @param[in]   user_data      The user data passed from the callback registration function
- * @pre This function will be invoked when the name of Bluetooth adapter changes
- * if you register this callback using bt_adapter_set_name_changed_cb().
- * @see bt_adapter_set_name()
- * @see bt_adapter_set_name_changed_cb()
- * @see bt_adapter_unset_name_changed_cb()
- */
-typedef void (*bt_adapter_name_changed_cb)(char *device_name, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when the visibility mode changes.
- * @since_tizen 2.3
- *
- * @param[in] result The result of the visibility mode changing
- * @param[in] visibility_mode The visibility mode to be changed
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @pre This function will be invoked when the visibility of Bluetooth adapter changes
- * if you register this callback using bt_adapter_set_visibility_mode_changed_cb().
- *
- * @see bt_adapter_set_visibility_mode_changed_cb()
- * @see bt_adapter_unset_visibility_mode_changed_cb()
- */
-typedef void (*bt_adapter_visibility_mode_changed_cb)
-       (int result, bt_adapter_visibility_mode_e visibility_mode, void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called every second until the visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE.
- * @since_tizen 2.3
- *
- * @remarks  This callback function is called only if visibility mode is #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE.
- * @param[in]  duration  The duration until the visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE (in seconds)
- * @param[in]  user_data  The user data passed from the callback registration function
- * @pre  This function will be invoked if you register this callback using bt_adapter_set_visibility_duration_changed_cb().
- * @see  bt_adapter_set_visibility_duration_changed_cb()
- * @see  bt_adapter_unset_visibility_duration_changed_cb()
- */
-typedef void (*bt_adapter_visibility_duration_changed_cb)(int duration, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when the state of device discovery changes.
- * @since_tizen 2.3
- *
- * @remarks If \a discovery_state is #BT_ADAPTER_DEVICE_DISCOVERY_FOUND,
- * then you can get some information, such as remote device address, remote device name, rssi, and bonding state.
- *
- * @param[in] result The result of the device discovery
- * @param[in] discovery_state The discovery state to be changed
- * @param[in] discovery_info The information of the discovered device \n
- *                                     If \a discovery_state is #BT_ADAPTER_DEVICE_DISCOVERY_STARTED or
- * #BT_ADAPTER_DEVICE_DISCOVERY_FINISHED, then \a discovery_info is NULL.
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @pre Either bt_adapter_start_device_discovery() or bt_adapter_stop_device_discovery() will invoke this function
- * if you register this callback using bt_adapter_set_device_discovery_state_changed_cb().
- *
- * @see bt_adapter_start_device_discovery()
- * @see bt_adapter_stop_device_discovery()
- * @see bt_adapter_set_device_discovery_state_changed_cb()
- * @see bt_adapter_unset_device_discovery_state_changed_cb()
- *
- */
-typedef void (*bt_adapter_device_discovery_state_changed_cb)
-       (int result, bt_adapter_device_discovery_state_e discovery_state, bt_adapter_device_discovery_info_s *discovery_info, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when you get bonded devices repeatedly.
- * @since_tizen 2.3
- *
- * @param[in] device_info The bonded device information
- * @param[in] user_data The user data passed from the foreach function
- * @return @c true to continue with the next iteration of the loop,
- * \n @c false to break out of the loop.
- * @pre bt_adapter_foreach_bonded_device() will invoke this function.
- *
- * @see bt_adapter_foreach_bonded_device()
- *
- */
-typedef bool (*bt_adapter_bonded_device_cb)(bt_device_info_s *device_info, void *user_data);
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Called when the state of LE device discovery changes.
- * @since_tizen 2.3
- *
- * @remarks If \a discovery_state is #BT_ADAPTER_LE_DEVICE_DISCOVERY_FOUND,
- * then you can get some information, such as remote LE device address, remote device name, rssi, and bonding state.
- *
- * @param[in] result The result of the LE device discovery
- * @param[in] discovery_state The discovery state to be changed
- * @param[in] discovery_info The information of the discovered LE device \n
- *                                     If \a discovery_state is #BT_ADAPTER_LE_DEVICE_DISCOVERY_STARTED or
- * #BT_ADAPTER_LE_DEVICE_DISCOVERY_FINISHED, then \a discovery_info is NULL.
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @pre Either bt_adapter_start_device_discovery() or bt_adapter_stop_device_discovery() will invoke this function
- * if you register this callback using bt_adapter_set_device_discovery_state_changed_cb().
- *
- * @see bt_adapter_le_start_device_discovery()
- * @see bt_adapter_le_stop_device_discovery()
- * @see bt_adapter_le_set_device_discovery_state_changed_cb()
- * @see bt_adapter_le_unset_device_discovery_state_changed_cb()
- *
- */
-typedef void (*bt_adapter_le_device_discovery_state_changed_cb)
-       (int result, bt_adapter_le_device_discovery_state_e discovery_state, bt_adapter_le_device_discovery_info_s *discovery_info, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Called when the LE advertisement has been found.
- * @since_tizen 2.3.1
- *
- * @param[in] result The result of the LE scan
- * @param[in] info The information of the found LE advertisement.
- * @param[in] user_data The user data passed from the start function
- *
- * @see bt_adapter_le_start_scan()
- *
- */
-typedef void (*bt_adapter_le_scan_result_cb)(int result,
-               bt_adapter_le_device_scan_result_info_s *info, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Called when the state of advertiser changes.
- * @since_tizen 2.3
- *
- * @param[out] result The result of the requested state change of advertiser
- * @param[out] advertiser The handle of the state changed advertiser
- * @param[out] adv_state The advertiser state to be changed
- * @param[out] user_data The user data passed from the start function
- *
- * @see bt_adapter_le_start_advertising_new()
- * @see bt_adapter_le_stop_advertising()
- */
-typedef void (*bt_adapter_le_advertising_state_changed_cb)(int result,
-               bt_advertiser_h advertiser, bt_adapter_le_advertising_state_e adv_state, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Called when the process of creating bond finishes.
- * @since_tizen 2.3
- *
- * @remarks If the remote user does not respond within 60 seconds, a time out will happen with #BT_ERROR_TIMED_OUT result code.\n
- * If bt_device_cancel_bonding() is called and it returns #BT_ERROR_NONE, then this callback function will be called
- * with #BT_ERROR_CANCELLED result. \n
- * If creating a bond succeeds but service search fails, then this callback will be called with #BT_ERROR_SERVICE_SEARCH_FAILED.
- * In this case, you should try service search again by bt_device_start_service_search() to get the supported service list.
- *
- * @param[in] result The result of the bonding device
- * @param[in] device_info The device information which you creates bond with
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @pre Either bt_device_create_bond() will invoke this function
- * if you register this callback using bt_device_set_bond_created_cb().
- *
- * @see bt_device_create_bond()
- * @see bt_device_cancel_bonding()
- * @see bt_device_set_bond_created_cb()
- * @see bt_device_unset_bond_created_cb()
- */
-typedef void (*bt_device_bond_created_cb)(int result, bt_device_info_s *device_info, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when you get connected profiles repeatedly.
- * @since_tizen 2.3
- *
- * @param[in] profile The connected Bluetooth profile
- * @param[in] user_data The user data passed from the foreach function
- * @return @c true to continue with the next iteration of the loop,
- * \n @c false to break out of the loop.
- * @pre bt_device_foreach_connected_profiles() will invoke this function.
- * @see bt_device_foreach_connected_profiles()
- */
-typedef bool (*bt_device_connected_profile)(bt_profile_e profile, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when the bond destroys.
- * @since_tizen 2.3
- *
- * @param[in] result The result that a bond is destroyed
- * @param[in] remote_address The address of the remote Bluetooth device to destroy bond with
- * @param[in] user_data The user data passed from the callback registration function
- * @pre bt_device_destroy_bond() will invoke this function
- * if you register this callback using bt_device_set_bond_destroyed_cb().
- *
- * @see bt_device_destroy_bond()
- * @see bt_device_set_bond_destroyed_cb()
- * @see bt_device_unset_bond_destroyed_cb()
- */
-typedef void (*bt_device_bond_destroyed_cb)(int result, char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when the authorization of device changes.
- * @since_tizen 2.3
- *
- * @param[in] authorization The authorization of device
- * @param[in] remote_address The address of the remote Bluetooth device which is (un)authorized
- * @param[in] user_data The user data passed from the callback registration function
- * @pre bt_device_set_authorization() will invoke this function if you register this callback using bt_device_set_authorization_changed_cb().
- *
- * @see bt_device_set_authorization()
- * @see #bt_device_set_authorization_changed_cb()
- * @see #bt_device_unset_authorization_changed_cb()
- */
-typedef void (*bt_device_authorization_changed_cb)
-       (bt_device_authorization_e authorization, char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when the process of service search finishes.
- * @since_tizen 2.3
- *
- * @remark
- *
- * @param[in] result The result of the service searching
- * @param[in] sdp_info The structure of service lists found on a device
- * @param[in] user_data The user data passed from the callback registration function
- * @pre Either bt_device_start_service_search() will invoke this function
- * if you register this callback using  bt_device_set_service_searched_cb().
- *
- * @see bt_device_start_service_search()
- * @see bt_device_set_service_searched_cb()
- * @see bt_device_unset_service_searched_cb()
- *
- */
-typedef void (*bt_device_service_searched_cb)(int result, bt_device_sdp_info_s *sdp_info, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 2.3
- *
- * @param[in] connected The connection status: (@c true = connected, @c false = disconnected)
- * @param[in] conn_info The connection information
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_device_set_connection_state_changed_cb()
- * @see bt_device_unset_connection_state_changed_cb()
- */
-typedef void (*bt_device_connection_state_changed_cb)(bool connected, bt_device_connection_info_s *conn_info, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Called when you receive data.
- * @since_tizen 2.3
- *
- * @param[in] data The received data from the remote device
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @pre When the connected remote Bluetooth device invokes bt_socket_send_data(),
- *             this function will be invoked if you register this function using bt_socket_set_data_received_cb().
- *
- * @see bt_socket_set_data_received_cb()
- * @see bt_socket_unset_data_received_cb()
- * @see bt_socket_send_data()
- */
-typedef void (*bt_socket_data_received_cb)(bt_socket_received_data_s *data, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Called when the socket connection state changes.
- * @since_tizen 2.3
- *
- * @param[in] result The result of connection state changing
- * @param[in] connection_state The connection state
- * @param[in] connection The connection information which is established or disconnected
- * @param[in] user_data The user data passed from the callback registration function
- * @pre Either bt_socket_connect_rfcomm() will invoke this function.
- * In addition, bt_socket_connection_state_changed_cb() will be invoked when the socket connection state is changed.
- * @see bt_socket_listen_and_accept_rfcomm()
- * @see bt_socket_connect_rfcomm()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-typedef void (*bt_socket_connection_state_changed_cb)
-       (int result, bt_socket_connection_state_e connection_state, bt_socket_connection_s *connection, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Called when a RFCOMM connection is requested.
- * @since_tizen 2.3
- *
- * @param[in] socket_fd  The file descriptor of socket on which a connection is requested
- * @param[in] remote_address  The address of remote device
- * @param[in] user_data The user data passed from the callback registration function
- * @pre If you register this callback function by bt_socket_set_connection_requested_cb(),
- * bt_socket_connection_requested_cb() will be invoked.
- */
-typedef void (*bt_socket_connection_requested_cb) (int socket_fd, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief  Called when an OPP connection is requested.
- * @since_tizen 2.3
- *
- * @details You must call bt_opp_server_accept_connection() if you want to accept.
- * Otherwise, you must call bt_opp_server_reject_connection().
- * @param[in] remote_address  The address of remote device
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_opp_server_accept()
- * @see bt_opp_server_reject()
- */
-typedef void (*bt_opp_server_connection_requested_cb)(const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief  Called when a file is being transferred.
- * @since_tizen 2.3
- *
- * @param[in] file  The path of file to be pushed
- * @param[in] size The file size (bytes)
- * @param[in] percent The progress in percentage (1 ~ 100)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_opp_server_accept()
- * @see bt_opp_server_accept_connection()
- */
-typedef void (*bt_opp_server_transfer_progress_cb) (const char *file, long long size, int percent, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief  Called when a transfer is finished.
- * @since_tizen 2.3
- *
- * @param[in] error_code  The result of push
- * @param[in] file  The path of file to be pushed
- * @param[in] size The file size (bytes)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_opp_server_accept()
- * @see bt_opp_server_accept_connection()
- */
-typedef void (*bt_opp_server_transfer_finished_cb) (int result, const char *file, long long size, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief  Called when OPP server responds to the push request.
- * @since_tizen 2.3
- *
- * @param[in] result  The result of OPP server response
- * @param[in] remote_address  The remote address
- * @param[in] user_data  The user data passed from the callback registration function
- * @pre bt_opp_client_push_files() will invoke this function.
- * @see bt_opp_client_push_files()
- */
-typedef void (*bt_opp_client_push_responded_cb)(int result, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief  Called when each file is being transferred.
- * @since_tizen 2.3
- *
- * @param[in] file  The path of file to be pushed
- * @param[in] size The file size (bytes)
- * @param[in] percent The progress in percentage (1 ~ 100). 100 means that a file is transferred completely.
- * @param[in] user_data The user data passed from the callback registration function
- * @pre bt_opp_client_push_files() will invoke this function.
- * @see bt_opp_client_push_files()
- */
-typedef void (*bt_opp_client_push_progress_cb)(const char *file, long long size, int percent, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief  Called when the push request is finished.
- * @since_tizen 2.3
- *
- * @param[in] result  The result of the push request
- * @param[in] remote_address  The remote address
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_opp_client_push_files()
- */
-typedef void (*bt_opp_client_push_finished_cb)(int result, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 2.3
- *
- * @details  This callback is called when the connection state is changed.
- * When you call bt_audio_connect() or bt_audio_disconnect(), this callback is also called with error result even though these functions fail.
- * @param[in] result  The result of changing the connection state
- * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
- * @param[in] remote_address  The remote address
- * @param[in] type  The type of audio profile except #BT_AUDIO_PROFILE_TYPE_ALL
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_audio_set_connection_state_changed_cb()
- * @see bt_audio_unset_connection_state_changed_cb()
- */
-typedef void (*bt_audio_connection_state_changed_cb) (int result, bool connected, const char *remote_address, bt_audio_profile_type_e type, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when a call handling event happened from Hands-Free.
- * @since_tizen 2.3
- *
- * @param[in] event  The call handling event happened from Hands-Free
- * @param[in] call_id  The call ID
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_call_handling_event_cb()
- * @see bt_ag_unset_call_handling_event_cb()
- */
-typedef void (*bt_ag_call_handling_event_cb) (bt_ag_call_handling_event_e event, unsigned int call_id, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when a multi call handling event happened from Hands-Free.
- * @since_tizen 2.3
- *
- * @param[in] event  The call handling event happened from Hands-Free
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_multi_call_handling_event_cb()
- * @see bt_ag_unset_multi_call_handling_event_cb()
- */
-typedef void (*bt_ag_multi_call_handling_event_cb) (bt_ag_multi_call_handling_event_e event, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when a DTMF(Dual Tone Multi Frequency) is transmitted from Hands-Free.
- * @since_tizen 2.3
- *
- * @param[in] dtmf  The DTMF transmitted from Hands-Free
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_dtmf_transmitted_cb()
- * @see bt_ag_unset_dtmf_transmitted_cb()
- */
-typedef void (*bt_ag_dtmf_transmitted_cb) (const char *dtmf, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when the speaker gain of the remote device is changed.
- * @since_tizen 2.3
- *
- * @param[in] gain The gain of speaker (0 ~ 15)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_speaker_gain_changed_cb()
- * @see bt_ag_unset_speaker_gain_changed_cb()
- */
-typedef void (*bt_ag_speaker_gain_changed_cb) (int gain, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when the microphone gain of the remote device is changed.
- * @since_tizen 2.3
- *
- * @param[in] gain The gain of microphone (0 ~ 15)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_microphone_gain_changed_cb()
- * @see bt_ag_unset_microphone_gain_changed_cb()
- */
-typedef void (*bt_ag_microphone_gain_changed_cb) (int gain, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 2.3
- *
- * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
- * @param[in] remote_address  The remote address
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_target_deinitialize()
- */
-typedef void (*bt_avrcp_target_connection_state_changed_cb) (bool connected, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the equalizer state is changed by the remote control device.
- * @since_tizen 2.3
- *
- * @param[in] equalizer The equalizer state
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_equalizer_state_changed_cb()
- * @see bt_avrcp_unset_equalizer_state_changed_cb()
- */
-typedef void (*bt_avrcp_equalizer_state_changed_cb) (bt_avrcp_equalizer_state_e equalizer, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the repeat mode is changed by the remote control device.
- * @since_tizen 2.3
- *
- * @param[in] repeat The repeat mode
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_repeat_mode_changed_cb()
- * @see bt_avrcp_unset_repeat_mode_changed_cb()
- */
-typedef void (*bt_avrcp_repeat_mode_changed_cb) (bt_avrcp_repeat_mode_e repeat, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the shuffle mode is changed by the remote control device.
- * @since_tizen 2.3
- *
- * @param[in] shuffle The shuffle mode
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_shuffle_mode_changed_cb()
- * @see bt_avrcp_unset_shuffle_mode_changed_cb()
- */
-typedef void (*bt_avrcp_shuffle_mode_changed_cb) (bt_avrcp_shuffle_mode_e shuffle, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the scan mode is changed by the remote control device.
- * @since_tizen 2.3
- *
- * @param[in] shuffle The shuffle mode
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_scan_mode_changed_cb()
- * @see bt_avrcp_unset_scan_mode_changed_cb()
- */
-typedef void (*bt_avrcp_scan_mode_changed_cb) (bt_avrcp_scan_mode_e scan, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 2.3
- *
- * @details  This callback is called when the connection state is changed.
- * When you call bt_hid_host_connect() or bt_hid_host_disconnect(), this callback is also called with error result even though these functions fail.
- * @param[in] result  The result of changing the connection state
- * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
- * @param[in] remote_address  The remote address
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_hid_host_connect()
- * @see bt_hid_host_disconnect()
- */
-typedef void (*bt_hid_host_connection_state_changed_cb) (int result, bool connected, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Called when the connection is established.
- * @since_tizen 2.3
- *
- * @param[in] result  The result of connecting to the remote device
- * @param[in] remote_address  The address of connected remote device
- * @param[in] app_id  The ID of application
- * @param[in] type  The type of HDP(Health Device Profile) channel
- * @param[in] channel  The connected data channel
- * @param[in] user_data The user data passed from the callback registration function
- * @see  bt_hdp_disconnected_cb
- * @see bt_hdp_set_connection_state_changed_cb()
- * @see bt_hdp_unset_connection_state_changed_cb()
- */
-typedef void (*bt_hdp_connected_cb) (int result, const char *remote_address, const char *app_id,
-       bt_hdp_channel_type_e type, unsigned int channel, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Called when the connection is disconnected.
- * @since_tizen 2.3
- *
- * @param[in] result  The result of disconnecting from the remote device
- * @param[in] remote_address  The address of disconnected remote device
- * @param[in] channel  The connected data channel
- * @param[in] user_data The user data passed from the callback registration function
- * @see  bt_hdp_connected_cb
- * @see bt_hdp_set_connection_state_changed_cb()
- * @see bt_hdp_unset_connection_state_changed_cb()
- */
-typedef void (*bt_hdp_disconnected_cb) (int result, const char *remote_address, unsigned int channel, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Called when the you receive the data.
- * @since_tizen 2.3
- *
- * @param[in] channel  The connected data channel
- * @param[in] data  The received data
- * @param[in] size  The size of received data (byte)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_hdp_set_data_received_cb()
- * @see bt_hdp_unset_data_received_cb()
- */
-typedef void (*bt_hdp_data_received_cb) (unsigned int channel, const char *data, unsigned int size, void *user_data);
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_foreach_cb instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when you get the primary services repeatedly.
- * @since_tizen 2.3
- *
- * @param[in]  service  The attribute handle of service
- * @param[in]  user_data  The user data passed from the foreach function
- * @return  @c true to continue with the next iteration of the loop,
- * \n @c false to break out of the loop.
- * @pre  bt_gatt_foreach_primary_services() will invoke this function.
- * @see  bt_gatt_foreach_primary_services()
- */
-typedef bool (*bt_gatt_primary_service_cb) (bt_gatt_attribute_h service, void *user_data);
-
-/**
- * @deprecated Deprecated since 2.3.1. This is not required because characteristic discovery is happened automatically.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called after the characteristics are discovered by bt_gatt_discover_characteristics().
- * @since_tizen 2.3
- *
- * @remarks  If bt_gatt_discover_characteristics() failed, then this callback function is called only once with 0 total and NULL characteristic_handle.
- * @param[in]  result  The result of discovering
- * @param[in]  index  The index of characteristics in a service, starts from 0
- * @param[in]  total  The total number of characteristics in a service
- * @param[in]  characteristic  The attribute handle of characteristic
- * @param[in]  user_data  The user data passed from the request function
- * @return  @c true to continue with the next iteration of the loop,
- * \n @c false to break out of the loop.
- * @pre  bt_gatt_discover_characteristics() will invoke this callback.
- * @see  bt_gatt_discover_characteristics()
- */
-typedef bool (*bt_gatt_characteristics_discovered_cb) (int result, int index, int total, bt_gatt_attribute_h characteristic, void *user_data);
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_foreach_cb instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when you get the included services repeatedly.
- * @since_tizen 2.3
- *
- * @param[in]  service  The attribute handle of service
- * @param[in]  user_data  The user data passed from the foreach function
- * @return  @c true to continue with the next iteration of the loop,
- * \n @c false to break out of the loop.
- * @pre  bt_gatt_foreach_included_services() will invoke this function.
- * @see  bt_gatt_foreach_included_services()
- */
-typedef bool (*bt_gatt_included_service_cb) (bt_gatt_attribute_h service, void *user_data);
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_characteristic_value_changed_cb instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when a characteristic in service is changed.
- * @since_tizen 2.3
- *
- * @param[in]  characteristic  The attribute handle of characteristic
- * @param[in]  value  The value of characteristic (byte array)
- * @param[in]  value_length  The length of value
- * @param[in]  user_data  The user data passed from the callback registration function
- * @see bt_gatt_set_characteristic_changed_cb()
- * @see bt_gatt_unset_characteristic_changed_cb()
- */
-typedef void (*bt_gatt_characteristic_changed_cb) (bt_gatt_attribute_h characteristic, unsigned char *value, int value_length, void *user_data);
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_request_completed_cb instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when a characteristic value is written.
- * @since_tizen 2.3
- *
- * @see bt_gatt_set_characteristic_value()
- */
-typedef void (*bt_gatt_characteristic_write_cb) (void *user_data);
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_request_completed_cb instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when a characteristic value is read.
- * @since_tizen 2.3
- *
- * @param[in]  value  The value of characteristic (byte array)
- * @param[in]  value_length  The length of value
- * @param[in]  user_data  The user data passed from the foreach function
- * @see bt_gatt_read_characteristic_value()
- */
-typedef void (*bt_gatt_characteristic_read_cb) (unsigned char *value,
-                       int value_length, void *user_data);
-
-/**
- * @deprecated Deprecated since 2.3.1. This is not required because descriptor discovery is happened automatically.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called after the characteristics descriptors are discovered by bt_gatt_discover_characteristic_descriptor().
- * @since_tizen 2.3
- *
- * @param[in]  result  The result of discovering
- * @param[in]  characteristic_format  The format of the information data.
- *                        characteristic_format = 0x01 indicates UUIDs are 16-bits
- *                        characteristic_format = 0x02 indicates UUIDs are 128-bits
- * @param[in]  total  The total number of elements in characteristic_descriptor
- * @param[in]  characteristic descriptor  The attribute handle and the UUID of characteristic descriptor
- * @param[in]  user_data  The user data passed from the request function
- * @see  bt_gatt_discover_characteristic_descriptor()
- */
-typedef void (*bt_gatt_characteristic_descriptor_discovered_cb) (int result,
-               unsigned char characteristic_format, int total,
-               bt_gatt_attribute_h characteristic_descriptor, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when you get GATT handles repeatedly
- * @since_tizen 2.3.1
- *
- * @param[in] total The total number of GATT handles to be called
- * @param[in] index The index of current GATT handle. It starts from 0.
- * @param[in] gatt_handle The GATT handle
- * @param[in] user_data The user data passed from the foreach function
- *
- * @see bt_gatt_service_foreach_characteristics()
- * @see bt_gatt_service_foreach_included_services()
- * @see bt_gatt_characteristic_foreach_descriptors()
- * @see bt_gatt_client_foreach_services()
- */
-typedef bool (*bt_gatt_foreach_cb) (int total, int index, bt_gatt_h gatt_handle,
-                                   void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when the client request(e.g. read / write) has been completed
- * @since_tizen 2.3.1
- *
- * @param[in] result The result of a request
- * @param[in] request_handle The requesting GATT handle
- * @param[in] user_data The user data passed from the requesting function
- *
- * @see bt_gatt_client_read_value()
- * @see bt_gatt_client_write_value()
- */
-typedef void (*bt_gatt_client_request_completed_cb) (int result,
-               bt_gatt_h request_handle, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when a value of a watched characteristic's GATT handle has been changed
- * @since_tizen 2.3.1
- *
- * @remarks After this function is returned, a changed value is automatically
- * applied to @a characteristic. Before that, @a characteristic has an old value.
- *
- * @param[in] characteristic The characteristic's GATT handle of which value change is informed. It has an old value.
- * @param[in] value The new value
- * @param[in] len The length of @a value
- * @param[in] user_data The user data passed from the registering function
- *
- * @see bt_gatt_client_set_characteristic_value_changed_cb()
- */
-typedef void (*bt_gatt_client_characteristic_value_changed_cb) (bt_gatt_h characteristic,
-               char *value, int len, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when a service of a remote GATT server has been changed.
- * @since_tizen 3.0
- *
- * @param[in] client The handle of a GATT client which is associated with a remote device.
- * @param[in] change_type The changed type
- * @param[in] service_uuid The changed service uuid
- * @param[in] user_data The user data passed from the registering function
- *
- * @see bt_gatt_client_set_characteristic_value_changed_cb()
- */
-typedef void (*bt_gatt_client_service_changed_cb) (bt_gatt_client_h client,
-               bt_gatt_client_service_change_type_e change_type,
-               const char* service_uuid, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Called when the connection state is changed.
- * @since_tizen 2.3
- *
- * @details This callback is called when the connection state is changed.
- * When you called bt_gatt_connect() or bt_gatt_disconnect(), this callback is also called with error result even though these functions fail.
- *
- * @param[in] result The result of changing the connection state.
- * @param[in] connected The state to be changed, @a true means connected state, Otherwise, @a false.
- * @param[in] remote_address The remote_address
- * @param[in] user_data The user data passed from the callback registration function.
- *
- * @see bt_gatt_connect()
- * @see bt_gatt_disconnect()
- * @see bt_gatt_set_connection_state_changed_cb()
- * @see bt_gatt_unset_connection_state_changed_cb()
- */
-typedef void (*bt_gatt_connection_state_changed_cb)(int result, bool connected, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Called when a value of a characteristic or descriptor's GATT handle has been changed.
- * @since_tizen 3.0
- *
- * @details For finishing the request, call the function #bt_gatt_server_send_response in callback.
- *
- * @remarks After this function is returned, a changed value is automatically
- * applied to @a gatt_handle. Before that, @a gatt_handle has an old value.
- * @remarks The @a remote_address must not be freed by application.
- * @remarks The @a server must not be freed by application.
- * @remarks The @a gatt_handle must not be freed by application.
- * @remarks The @a value must not be freed by application.
- *
- * @param[in] remote_address The address of the remote device which requests a change
- * @param[in] request_id The identification of this request. It will be used to send a response.
- * @param[in] server The GATT server handle
- * @param[in] gatt_handle The characteristic or descriptor's GATT handle which has an old value
- * @param[in] response_needed Indicates whether a response is required by the remote device - @c true if required, @c false if not
- * @param[in] offset The requested offset from where the @a gatt_handle value will be updated
- * @param[in] value The new value
- * @param[in] len The length of @a value
- * @param[in] user_data The user data passed from the registration function
- *
- * @see bt_gatt_server_set_write_value_requested_cb()
- * @see bt_gatt_server_send_response()
- */
-typedef void (*bt_gatt_server_write_value_requested_cb) (const char *remote_address,
-                               int request_id, bt_gatt_server_h server,
-                               bt_gatt_h gatt_handle, bool response_needed, int offset,
-                               const char *value, int len, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Called when the remote device requests to read a value on a GATT server.
- * @since_tizen 3.0
- *
- * @details For finishing the request, call the function #bt_gatt_server_send_response in callback.
- *
- * @remarks The @a remote_address must not be freed by application.
- * @remarks The @a server must not be freed by application.
- * @remarks The @a gatt_handle must not be freed by application.
- *
- * @param[in] remote_address The address of the requesting remote device
- * @param[in] request_id The identification of this request. It will be used to send a response.
- * @param[in] server The GATT server handle
- * @param[in] gatt_handle The characteristic or descriptor's GATT handle to be read
- * @param[in] offset The requested offset from where the GATT handle's value is read
- * @param[in] user_data The user data passed from the registration function
- *
- * @see bt_gatt_server_set_read_value_requested_cb()
- * @see bt_gatt_server_send_response()
- */
-typedef void (*bt_gatt_server_read_value_requested_cb) (const char *remote_address,
-               int request_id, bt_gatt_server_h server, bt_gatt_h gatt_handle,
-               int offset, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Called when the remote device enables or disables the Notification/Indication for particular characteristics.
- * @since_tizen 3.0
- *
- * @details By using this callback function, server can know notification state.
- *
- * @remarks The @a server must not be freed by application.
- * @remarks The @a gatt_handle must not be freed by application.
- *
- * @param[in] notify Indicates whether the Notification/Indication is enabled or not
- * @param[in] server The GATT server handle
- * @param[in] gatt_handle The characteristic's GATT handle to be read
- * @param[in] user_data The user data passed from the registration function
- *
- * @see bt_gatt_server_set_read_value_requested_cb()
- */
-typedef void (*bt_gatt_server_characteristic_notification_state_changed_cb) (bool notify,
-                       bt_gatt_server_h server, bt_gatt_h gatt_handle, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Called when the sending notification / indication is done.
- * @since_tizen 3.0
- *
- * @remarks The @a remote_address must not be freed by application.
- * @remarks The @a server must not be freed by application.
- * @remarks The @a characteristic must not be freed by application.
- *
- * @remarks In case of an indication, once a confirmation is received from the remote device this callback will be called. \n
- * This callback will be called several times if there are two or more remote devices which enable a Client Characteristic Configuration Descriptor(CCCD). \n
- * For the last remote device, @a completed will be set as true.
- *
- * @param[in] result The result of a sending operation
- * @param[in] remote_address The address of the remote device
- * @param[in] server The GATT server handle
- * @param[in] characteristic The characteristic's GATT handle
- * @param[in] completed If this callback is for the last remote device which enables a CCCD, it will be true. Or it will be false.
- * @param[in] user_data The user data passed from the requesting function
- *
- * @see bt_gatt_server_notify_characteristic_changed_value()
- */
-typedef void (*bt_gatt_server_notification_sent_cb) (int result,
-               const char *remote_address, bt_gatt_server_h server,
-               bt_gatt_h characteristic, bool completed, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 2.3
- *
- * @param[in] connected  Indicates whether a client is connected or disconnected
- * @param[in] remote_address  The remote address
- * @param[in] interface_name  The interface name. For example, bnep0, bnep1.
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_nap_set_connection_state_changed_cb()
- * @see bt_nap_unset_connection_state_changed_cb()
- */
-typedef void (*bt_nap_connection_state_changed_cb) (bool connected, const char *remote_address, const char *interface_name, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 2.3
- *
- * @details  This callback is called when the connection state is changed.
- * When you call bt_panu_connect() or bt_panu_disconnect(), this callback is also called with error result even though these functions fail.
- * @param[in] result  The result of changing the connection state
- * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
- * @param[in] remote_address  The remote address
- * @param[in] type  The type of PAN service
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_nap_set_connection_state_changed_cb()
- * @see bt_nap_unset_connection_state_changed_cb()
- */
-typedef void (*bt_panu_connection_state_changed_cb) (int result, bool connected, const char *remote_address, bt_panu_service_type_e type, void *user_data);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_NETWORK_BLUETOOTH_TYPE_H__ */
diff --git a/include/mobile/bluetooth_type_extension.h b/include/mobile/bluetooth_type_extension.h
deleted file mode 100644 (file)
index 7e59c80..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __TIZEN_NETWORK_BLUETOOTH_TYPE_EXTENSION_H__
-#define __TIZEN_NETWORK_BLUETOOTH_TYPE_EXTENSION_H__
-
- #ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/**
- * @file bluetooth_type_extension.h
- */
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when the SCO(Synchronous Connection Oriented link) state is changed.
- * @since_tizen 2.3
- *
- * @details  This callback is called when the SCO state is changed.
- * When you call bt_ag_open_sco() or bt_ag_close_sco(), this callback is also called with error result even though these functions failed.
- * @param[in] result  The result of changing the connection state
- * @param[in] opened  The state to be changed: (@c true = opened, @c  false = not opened)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_sco_state_changed_cb()
- * @see bt_ag_unset_sco_state_changed_cb()
- * @see bt_ag_open_sco()
- * @see bt_ag_close_sco()
- */
-typedef void (*bt_ag_sco_state_changed_cb) (int result, bool opened, void *user_data);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_NETWORK_BLUETOOTH_TYPE_EXTENSION_H__ */
diff --git a/include/mobile/bluetooth_type_internal.h b/include/mobile/bluetooth_type_internal.h
deleted file mode 100644 (file)
index 1c312ba..0000000
+++ /dev/null
@@ -1,578 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __TIZEN_NETWORK_BLUETOOTH_TYPE_INTERNAL_H__
-#define __TIZEN_NETWORK_BLUETOOTH_TYPE_INTERNAL_H__
-
- #ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/**
- * @file bluetooth_type_internal.h
- */
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth adapter le state.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_LE_DISABLED = 0x00, /**< Bluetooth le is disabled */
-       BT_ADAPTER_LE_ENABLED, /**< Bluetooth le is enabled */
-} bt_adapter_le_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Called when the Bluetooth adapter le state changes.
- * @since_tizen 2.3
- *
- * @param[in]   result  The result of the adapter state changing
- * @param[in]   adapter_le_state  The adapter le state to be changed
- * @param[in]   user_data  The user data passed from the callback registration function
- * @pre Either bt_adapter_le_enable() or bt_adapter_le_disable() will invoke this callback if you register this callback using bt_adapter_le_set_state_changed_cb().
- * @see bt_adapter_le_enable()
- * @see bt_adapter_le_disable()
- * @see bt_adapter_le_set_state_changed_cb()
- * @see bt_adapter_le_unset_state_changed_cb()
- */
-typedef void (*bt_adapter_le_state_changed_cb)(int result, bt_adapter_le_state_e adapter_le_state, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Enumerations for the call state
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_AG_CALL_EVENT_IDLE = 0x00,  /**< Idle */
-       BT_AG_CALL_EVENT_ANSWERED,  /**< Answered */
-       BT_AG_CALL_EVENT_HELD,  /**< Held */
-       BT_AG_CALL_EVENT_RETRIEVED,  /**< Retrieved */
-       BT_AG_CALL_EVENT_DIALING,  /**< Dialing */
-       BT_AG_CALL_EVENT_ALERTING,  /**< Alerting */
-       BT_AG_CALL_EVENT_INCOMING,  /**< Incoming */
-} bt_ag_call_event_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Enumerations for the call state
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_AG_CALL_STATE_IDLE = 0x00,  /**< Idle state */
-       BT_AG_CALL_STATE_ACTIVE,  /**< Active state */
-       BT_AG_CALL_STATE_HELD,  /**< Held state */
-       BT_AG_CALL_STATE_DIALING,  /**< Dialing state */
-       BT_AG_CALL_STATE_ALERTING,  /**< Alerting state */
-       BT_AG_CALL_STATE_INCOMING,  /**< Incoming state */
-       BT_AG_CALL_STATE_WAITING,  /**< Waiting for connected indication event after answering an incoming call*/
-} bt_ag_call_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_MODULE
- * @brief  Enumerations for the transfer type
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_TRANSFER_INBOUND,        /**< Inbound Transfer Type */
-       BT_TRANSFER_OUTBOUND,       /**< Outbound Transfer Type */
-} bt_opp_transfer_type_t;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Enumerations of the Bluetooth A2DP role.
- * @since_tizen 4.0
- */
-typedef enum {
-       BT_A2DP_SOURCE,
-       BT_A2DP_SINK,
-} bt_audio_role_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when the connectable state changes.
- * @since_tizen 2.3
- *
- * @param[in] result The result of the connectable state changing
- * @param[in] connectable The connectable to be changed
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @pre This function will be invoked when the connectable state of local Bluetooth adapter changes
- * if you register this callback using bt_adapter_set_connectable_changed_cb().
- *
- * @see bt_adapter_set_connectable()
- * @see bt_adapter_set_connectable_changed_cb()
- * @see bt_adapter_unset_connectable_changed_cb()
- */
-typedef void (*bt_adapter_connectable_changed_cb)
-       (int result, bool connectable, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief  Called when the push is requested.
- * @since_tizen 2.3
- *
- * @details You must call bt_opp_server_accept() if you want to accept.
- * Otherwise, you must call bt_opp_server_reject().
- * @param[in] file  The path of file to be pushed
- * @param[in] size The file size (bytes)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_opp_server_initialize()
- */
-typedef void (*bt_opp_server_push_requested_cb)(const char *file, int size, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth adapter le scan type.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_LE_PASSIVE_SCAN = 0x00,
-       BT_ADAPTER_LE_ACTIVE_SCAN
-} bt_adapter_le_scan_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when the manufacturer dat changes.
- * @since_tizen 2.3
- *
- * @param[in]   data           The manufacurer data of the Bluetooth device to be changed
- * @param[in]   len                    The length of @a data
- * @param[in]   user_data      The user data passed from the callback registration function
- * @pre This function will be invoked when the manufacturer data of Bluetooth adapter changes
- * if callback is registered using bt_adapter_set_manufacturer_data_changed_cb().
- * @see bt_adapter_set_manufacturer_data()
- * @see bt_adapter_set_manufacturer_data_changed_cb()
- * @see bt_adapter_unset_manufacturer_data_changed_cb()
- */
-typedef void (*bt_adapter_manufacturer_data_changed_cb) (char *data,
-               int len, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called repeatedly when you get the devices connected with specific profile.
- * @since_tizen 3.0
- *
- * @param[in]   remote_address The address of remote device
- * @param[in]   user_data      The user data passed from the callback registration function
- * @return @c true to continue with the next iteration of the loop,
- * \n @c false to break out of the loop.
- * @pre bt_adapter_foreach_profile_connected_devices() will invoke this function.
- * @see bt_adapter_foreach_profile_connected_devices()
- */
-typedef bool (*bt_adapter_profile_connected_devices_cb)(const char *remote_address, void *user_data);
-
-/**
-* @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
-* @brief DPM BT allowance state
-* @since_tizen 3.0
-*/
-typedef enum {
-       BT_DPM_ERROR      = -1,   /**< bluetooth allowance error */
-       BT_DPM_BT_ALLOWED,        /**< bluetooth allowance allowed */
-       BT_DPM_HANDSFREE_ONLY, /**< bluetooth allowance handsfree only */
-       BT_DPM_BT_RESTRICTED,  /**< bluetooth allowance restricted */
-} bt_dpm_allow_e;
-
-/**
-* @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
-* @brief DPM Policy status
-* @since_tizen 3.0
-*/
-typedef enum {
-       BT_DPM_STATUS_ERROR = -1,
-
-       BT_DPM_ALLOWED   = 0,    /**< DPM Policy status allowed. */
-       BT_DPM_RESTRICTED                = 1,    /**< DPM Policy status restricted. */
-
-       BT_DPM_ENABLE                    = 1,    /**< DPM Policy status enabled. */
-       BT_DPM_DISABLE  = 0,     /**< DPM Policy status disabled. */
-
-       BT_DPM_FALSE     = 0,   /**< DPM Policy status false. */
-       BT_DPM_TRUE             = 1,    /**< DPM Policy status true. */
-} bt_dpm_status_e;
-
-/**
-* @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
-* @brief DPM Profile states
-* @since_tizen 3.0
-*/
-typedef enum {
-       BT_DPM_POLICY_A2DP_PROFILE_STATE,
-       BT_DPM_POLICY_AVRCP_PROFILE_STATE,
-       BT_DPM_POLICY_BPP_PROFILE_STATE,
-       BT_DPM_POLICY_DUN_PROFILE_STATE,
-       BT_DPM_POLICY_FTP_PROFILE_STATE,
-       BT_DPM_POLICY_HFP_PROFILE_STATE,
-       BT_DPM_POLICY_HSP_PROFILE_STATE,
-       BT_DPM_POLICY_PBAP_PROFILE_STATE,
-       BT_DPM_POLICY_SAP_PROFILE_STATE,
-       BT_DPM_POLICY_SPP_PROFILE_STATE,
-       BT_DPM_PROFILE_NONE,
-} bt_dpm_profile_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief The handle to control Bluetooth LE scan filter
- * @since_tizen 2.4
- */
-typedef void *bt_scan_filter_h;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Device LE connection update structure.
- * @since_tizen 2.3
- */
-typedef struct {
-       unsigned int interval_min;   /**< Minimum value for the connection event interval (msec) */
-       unsigned int interval_max;   /**< Maximum value for the connection event interval (msec) */
-       unsigned int latency;   /**< Slave latency (msec) */
-       unsigned int time_out;   /**< Supervision timeout (msec) */
-} bt_le_conn_update_s;
-
-/**
- * Structure to DPM device list
- */
-typedef struct {
-       int count;
-       char **devices;
-} bt_dpm_device_list_s;
-
-/**
- * Structure to DPM uuid list
- */
-typedef struct {
-       int count;
-       char **uuids;
-} bt_dpm_uuids_list_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Enumerations of the Bluetooth HID mouse's button.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_HID_MOUSE_BUTTON_NONE = 0x00, /**<The mouse's none value*/
-       BT_HID_MOUSE_BUTTON_LEFT = 0x01, /**<The mouse's left button value*/
-       BT_HID_MOUSE_BUTTON_RIGHT = 0x02,  /**<The mouse's right button value*/
-       BT_HID_MOUSE_BUTTON_MIDDLE = 0x04 /**<The mouse's middle button value*/
-} bt_hid_mouse_button_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief The structure type containing the HID mouse event information.
- * @since_tizen 3.0
- *
- * @see bt_hid_device_send_mouse_event()
- */
-typedef struct {
-       int buttons; /**< The button values, we can combine key's values when we pressed multiple mouse buttons*/
-       int axis_x; /**< The location's x value, -128 ~127 */
-       int axis_y; /**< The location's y value, -128 ~127 */
-       int padding; /**< The padding value, -128 ~127 */
-} bt_hid_mouse_data_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief The structure type containing the HID keyboard event information.
- * @since_tizen 3.0
- * @details If you want to know more detail values, refer to http://www.usb.org/developers/hidpage/ and see "HID Usage Tables"
- *
- * @see bt_hid_device_send_key_event()
- */
-typedef struct {
-       unsigned char modifier; /**< The modifier keys : such as shift, alt */
-       unsigned char key[8]; /**< The key value - currently pressed keys : Max 8 at once */
-} bt_hid_key_data_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Enumerations of the Bluetooth HID header type.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_HID_HEADER_HANDSHAKE, /**< The Bluetooth HID header type: Handshake */
-       BT_HID_HEADER_HID_CONTROL, /**< The Bluetooth HID header type: HID control */
-       BT_HID_HEADER_GET_REPORT, /**< The Bluetooth HID header type: Get report */
-       BT_HID_HEADER_SET_REPORT, /**< The Bluetooth HID header type: Set report */
-       BT_HID_HEADER_GET_PROTOCOL, /**< The Bluetooth HID header type: Get protocol */
-       BT_HID_HEADER_SET_PROTOCOL, /**< The Bluetooth HID header type: Set protocol */
-       BT_HID_HEADER_DATA, /**< The Bluetooth HID header type: Data */
-       BT_HID_HEADER_UNKNOWN /**< The Bluetooth HID header type: Unknown */
-} bt_hid_header_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Enumerations of the Bluetooth HID parameter type.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_HID_PARAM_DATA_RTYPE_INPUT, /**< Parameter type: Input */
-       BT_HID_PARAM_DATA_RTYPE_OUTPUT /**< Parameter type: Output */
-} bt_hid_param_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Enumerations of the Bluetooth HID handshake type.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_HID_HANDSHAKE_SUCCESSFUL = 0x00, /**< Handshake error code none */
-       BT_HID_HANDSHAKE_NOT_READY, /**< Handshake error code Not Ready */
-       BT_HID_HANDSHAKE_ERR_INVALID_REPORT_ID, /**< Handshake error code send invalid report id */
-       BT_HID_HANDSHAKE_ERR_UNSUPPORTED_REQUEST, /**< Handshake error code request unsupported request */
-       BT_HID_HANDSHAKE_ERR_INVALID_PARAMETER, /**< Handshake error code received invalid parameter */
-       BT_HID_HANDSHAKE_ERR_UNKNOWN = 0x0e, /**< unknown error */
-       BT_HID_HANDSHAKE_ERR_FATAL /**< Fatal error */
-} bt_hid_handshake_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief The structure type containing data received from the HID Host.
- * @since_tizen 3.0
- */
-typedef struct {
-       const char *address;  /**< The remote device's address  */
-       bt_hid_header_type_e header_type;  /**< The header type */
-       bt_hid_param_type_e param_type;  /**< The parameter type */
-       int data_size;  /**< The length of the received data */
-       const char *data;     /**< The received data */
-} bt_hid_device_received_data_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief  Called when the Bluetooth HID Device connection state changes.
- * @details The following error codes can be delivered: \n
- *             #BT_ERROR_NONE \n
- *             #BT_ERROR_OPERATION_FAILED \n
- * @since_tizen 3.0
- *
- * @param[in]   result  The result of changing the connection state.
- * @param[in]   connected  The requested state. @a true means the connection is enabled, @false means the connection is disabled.
- * @param[in]   remote_address  The remote device's address
- * @param[in]   user_data  The user data passed from the callback registration function
- * @see bt_hid_device_activate()
- */
-typedef void (*bt_hid_device_connection_state_changed_cb) (int result,
-       bool connected, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief  Called when the HID Device receives data from the HID Host.
- * @details The following error codes can be delivered: \n
- *             #BT_ERROR_NONE \n
- *             #BT_ERROR_OPERATION_FAILED \n
- * @since_tizen 3.0
- *
- * @param[in]   data  The data received from the HID Host.
- * @param[in]   user_data  The user data passed from the callback registration function
- * @see bt_hid_device_set_data_received_cb()
- */
-typedef void (*bt_hid_device_data_received_cb)(const bt_hid_device_received_data_s *data, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Trusted Profile enumeration.
- * @since_tizen 3.0
- *
- * @see bt_device_set_profile_trusted()
- * @see bt_device_get_profile_trusted()
- */
-typedef enum {
-       BT_TRUSTED_PROFILE_PBAP = 1,
-       BT_TRUSTED_PROFILE_MAP,
-       BT_TRUSTED_PROFILE_SAP,
-       BT_TRUSTED_PROFILE_ALL = 0xFFFFFFFF,
-} bt_trusted_profile_t;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Restricted Profile enumeration.
- * @since_tizen 3.0
- *
- * @see bt_device_set_profile_restricted()
- * @see bt_device_get_profile_restricted()
- */
-typedef enum {
-       BT_RESTRICTED_PROFILE_HFP_HS = 1,
-       BT_RESTRICTED_PROFILE_A2DP,
-} bt_restricted_profile_t;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Enumerations of the authentication event types.
- * @since_tizen 3.0
- *
- */
-typedef enum {
-       BT_AUTH_KEYBOARD_PASSKEY_DISPLAY = 0, /**< PIN display event to user for entering PIN in keyboard */
-       BT_AUTH_PIN_REQUEST,                  /**< Legacy PIN or PASSKEY request event */
-       BT_AUTH_PASSKEY_CONFIRM_REQUEST,      /**< PASSKEY confirmation event to match PASSKEY in remote device */
-} bt_authentication_type_info_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
- * @brief Proximity Profile Role
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_PROXIMITY_REPORTER, /**< Proximity Profile Reporter role. */
-       BT_PROXIMITY_MONITOR, /**< Proximity Profile Monitor role. */
-} bt_proximity_role_t;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
- * @brief Proximity Profile Role
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_PROXIMITY_LINKLOSS_ALERT = 0x01, /**< Proximity profile Link Loss alert property */
-       BT_PROXIMITY_IMMEDIATE_ALERT = 0x02, /**< Proximity Profile Immediate alert property */
-       BT_PROXIMITY_TX_POWER = 0x04, /**< Proximity Profile Immediate alert property */
-} bt_proximity_property_t;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when Trusted Profiles is changed.
- * @since_tizen 3.0
- *
- * @param[in]   result  The result of supported profile callback
- * @param[in]   remote_address  Address of remote device
- * @param[in]   trusted_profiles  Trusted profile FLAG
- * @param[in]   user_data  The user data passed from the callback registration function
- * @see bt_device_set_trusted_profile_cb()
- * @see bt_device_unset_trusted_profile_cb()
- */
-typedef void (*bt_device_trusted_profiles_cb)
-       (int result, char *remote_address, int trusted_profile, bool supported, bool trusted, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Attribute protocol MTU change information structure.
- * @since_tizen 3.0
- *
- * @see bt_device_att_mtu_changed_cb()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       unsigned int mtu;               /** < MTU value */
-       unsigned int status;            /** < request status*/
-} bt_device_att_mtu_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 3.0
- *
- * @param[in] connected The connection status: (@c true = connected, @c false = disconnected)
- * @param[in] conn_info The connection information
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_device_set_connection_state_changed_cb()
- * @see bt_device_unset_connection_state_changed_cb()
- */
-typedef void (*bt_device_att_mtu_changed_cb)(int result, bt_device_att_mtu_info_s *mtu_info, void *user_data);
-
-/**
- * @internal
- * @ingroup
- * @brief IPSP Init state changed callback
- * @since_tizen 3.0
- */
-typedef void (*bt_ipsp_init_state_changed_cb)
-               (int result, bool ipsp_initialized, void *user_data);
-
-/**
- * @internal
- * @ingroup
- * @since_tizen 3.0
-
- * @brief IPSP Connection state changed callback
- */
-typedef void (*bt_ipsp_connection_state_changed_cb)
-               (int result, bool connected, const char *remote_address, const char *iface_name, void *user_data);
-
-/**
- * @internal
- * @brief Proximity profile property changed callback
- */
-typedef void (*bt_proximity_property_changed_cb)
-               (int result, const char *remote_address, int role, int service_type, int prop_value, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Called when remote device requests authentication.
- * @since_tizen 3.0
- * @param[in] result
- * @param[in] auth_type
- *             typedef enum {
- *              BT_AUTH_KEYBOARD_PASSKEY_DISPLAY = 0, : PIN display event to user for entering PIN in keyboard
- *              BT_AUTH_PIN_REQUEST,                  : Legacy PIN or PASSKEY request event
- *              BT_AUTH_PASSKEY_CONFIRM_REQUEST,      : PASSKEY confirmation event to match PASSKEY in remote device
- *             } bt_authentication_type_info_e;
- * @param[in] device_name  Name of the remote device
- * @param[in] remote_addr  Remote BD address
- * @param[in] pass_key     PASSKEY string
- *            PASSKEY string is valid only if authentication types are following
- *             a/ BT_AUTH_KEYBOARD_PASSKEY_DISPLAY
- *             b/ BT_AUTH_PASSKEY_CONFIRM_REQUEST
- *            pass_key string will be invalid if authentication event is of type BT_AUTH_PIN_REQUEST
- *            as this event indicates that user MUST enter PIN or PASSKEY and perform authentication.
- *
- *            Upon receiving BT_AUTH_KEYBOARD_PASSKEY_DISPLAY event, user should enter PASSKEY in keyboard
- *            Application can also call bt_device_cancel_bonding() Upon receiving BT_AUTH_KEYBOARD_PASSKEY_DISPLAY
- *            event which will fail the on-going pairing with remote device.
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_adapter_set_authentication_req_cb()
- */
-typedef void (*bt_adapter_authentication_req_cb)(int result, bt_authentication_type_info_e auth_type,
-                                               char *device_name, char *remote_addr,
-                                               char *pass_key, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Samsung XSAT Vendor dependent command.
- * @since_tizen 2.3.2
- */
-typedef struct {
-        int app_id;  /**< The application ID */
-        char *message;  /**< Command message */
-} bt_hf_vendor_dep_at_cmd_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when a XSAT vendor command is transmitted from Hands-Free.
- * @since_tizen 2.3
- *
- * @param[in] command  The XSAT vendor command transmitted from Hands-Free
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_vendor_cmd_cb()
- * @see bt_ag_unset_vendor_cmd_cb()
- */
-typedef void (*bt_ag_vendor_cmd_cb) (char *command, void *user_data);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_NETWORK_BLUETOOTH_TYPE_INTERNAL_H__ */
diff --git a/include/tv/bluetooth.h b/include/tv/bluetooth.h
deleted file mode 100644 (file)
index c37a6ce..0000000
+++ /dev/null
@@ -1,5305 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __TIZEN_NETWORK_BLUETOOTH_H__
-#define __TIZEN_NETWORK_BLUETOOTH_H__
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdbool.h>
-#include <tizen_error.h>
-#include <tizen.h>
-
-#include <bluetooth_type.h>
-
-#ifndef TIZEN_DEPRECATED_API
-#define TIZEN_DEPRECATED_API __attribute__((__visibility__("default"), deprecated))
-#endif
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/**
- * @file        bluetooth.h
- * @brief       API to control the Bluetooth adapter and devices and communications.
- * @ingroup     CAPI_NETWORK_BLUETOOTH_MODULE
- */
-
-
-/**
- * @addtogroup CAPI_NETWORK_BLUETOOTH_MODULE
- * @{
- */
-
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_MODULE
- * @brief Initializes the Bluetooth API.
- * @since_tizen 2.3
- *
- * @remarks This function must be called before Bluetooth API starts. \n
- * You must free all resources of the Bluetooth service by calling bt_deinitialize() if Bluetooth service is no longer needed.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see  bt_deinitialize()
- */
-int bt_initialize(void);
-
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_MODULE
- * @brief Releases all resources of the Bluetooth API.
- * @since_tizen 2.3
- *
- * @remarks This function must be called if Bluetooth API is no longer needed.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre Bluetooth API must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- */
-int bt_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_MODULE
- * @brief Gets the specification name for the given UUID.
- * @since_tizen 3.0
- *
- * @remarks The @a name must be released using free().
- *
- * @param[in] uuid The UUID
- * @param[out] name The specification name defined at www.bluetooth.com
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_get_uuid()
- */
-int bt_get_uuid_name(const char *uuid, char **name);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the current state of local Bluetooth adapter.
- * @since_tizen 2.3
- *
- * @param[out] adapter_state The current adapter state
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- */
-int bt_adapter_get_state(bt_adapter_state_e *adapter_state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the address of local Bluetooth adapter.
- * @since_tizen 2.3
- *
- * @remarks The @a local_address must be released with free() by you.
- *
- * @param[out] local_address The device address of local Bluetooth adapter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see bt_adapter_get_name()
- */
-int bt_adapter_get_address(char **local_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the name of local Bluetooth adapter.
- * @since_tizen 2.3
- *
- * @details Use this function to get the friendly name associated with Bluetooth
- * device, retrieved by the remote Bluetooth devices.
- *
- * @remarks The @a local_name must be released with free() by you.
- *
- * @param[out] local_name  The local device name
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_set_name()
- */
-int bt_adapter_get_name(char **local_name);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Sets the name of local Bluetooth adapter.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] local_name The name of the Bluetooth device. \n
- *                             The maximum length is 248 characters.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post bt_adapter_name_changed_cb() will be invoked if this function returns #BT_ERROR_NONE.
- *
- * @see bt_adapter_get_name()
- * @see bt_adapter_name_changed_cb()
- * @see bt_adapter_set_name_changed_cb()
- * @see bt_adapter_unset_name_changed_cb()
- */
-int bt_adapter_set_name(const char *local_name);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Gets the visibility mode of local Bluetooth adapter.
- * @since_tizen 2.3
- * @param[out] mode  The visibility mode of the Bluetooth device
- * @param[out] duration  The duration until the visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE (in seconds).
- * @a duration is valid only if @a mode is #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE. This value can be NULL.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_adapter_get_visibility(bt_adapter_visibility_mode_e *mode, int *duration);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Starts the device discovery, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @details If a device is discovered, bt_adapter_device_discovery_state_changed_cb() will be invoked
- * with #BT_ADAPTER_DEVICE_DISCOVERY_FOUND, and then bt_adapter_device_discovery_state_changed_cb()
- * will be called with #BT_ADAPTER_DEVICE_DISCOVERY_FINISHED in case of the completion or cancellation of the discovery.
- *
- * @remarks To connect to peer Bluetooth device, you need to know its Bluetooth address. \n
- * The device discovery can be stopped by bt_adapter_stop_device_discovery().
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post This function invokes bt_adapter_device_discovery_state_changed_cb().
- *
- * @see bt_adapter_is_discovering()
- * @see bt_adapter_stop_device_discovery()
- * @see bt_adapter_device_discovery_state_changed_cb()
- * @see bt_adapter_set_device_discovery_state_changed_cb()
- * @see bt_adapter_unset_device_discovery_state_changed_cb()
- */
-int bt_adapter_start_device_discovery(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Stops the device discovery, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remarks The device discovery process will take 10 ~ 20 seconds to get all the devices in vicinity.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation is not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The device discovery must be in progress with bt_adapter_start_device_discovery().
- * @post This function invokes bt_adapter_device_discovery_state_changed_cb().
- *
- * @see bt_adapter_is_discovering()
- * @see bt_adapter_start_device_discovery()
- * @see bt_adapter_set_device_discovery_state_changed_cb()
- * @see bt_adapter_unset_device_discovery_state_changed_cb()
- * @see bt_adapter_device_discovery_state_changed_cb()
- */
-int bt_adapter_stop_device_discovery(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Checks for the device discovery is in progress or not.
- * @since_tizen 2.3
- *
- * @remarks If Bluetooth discovery is in progress, other operations are not allowed and
- * you have to either stop the discovery operation, or wait for it to be finished,
- * before performing other operations.
-
- * @param[out] is_discovering The discovering status: (@c true = in progress , @c  false = not in progress )
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_start_device_discovery()
- * @see bt_adapter_stop_device_discovery()
- */
-int bt_adapter_is_discovering(bool *is_discovering);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Get the service mask from the uuid list.
- * @since_tizen 2.3
- *
- * @param[in] uuids The UUID list of the device.
- * @param[in] no_of_service The number of the UUID list count.
- * @param[out] service_mask_list Service mask list converted from the given UUID list.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_service_class_t
- */
-int bt_device_get_service_mask_from_uuid_list(char **uuids,
-                                     int no_of_service,
-                                     bt_service_class_t *service_mask_list);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Retrieves the device information of all bonded devices.
- * @since_tizen 2.3
- *
- * @param [in] callback The callback function to invoke
- * @param [in] user_data The user data passed from the foreach function
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post This function invokes bt_adapter_bonded_device_cb().
- *
- * @see bt_adapter_bonded_device_cb()
- */
-int bt_adapter_foreach_bonded_device(bt_adapter_bonded_device_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the device information of a bonded device.
- * @since_tizen 2.3
- * @remarks The @a device_info must be released with bt_adapter_free_device_info() by you .
- *
- * @param [in] remote_address The address of remote device
- * @param [out] device_info The bonded device information
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post This function invokes bt_adapter_bonded_device_cb().
- *
- * @see bt_adapter_bonded_device_cb()
- */
-int bt_adapter_get_bonded_device_info(const char *remote_address, bt_device_info_s **device_info);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Frees device info.
- * @since_tizen 2.3
- *
- * @param [in] device_info The bonded device information
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_adapter_get_bonded_device_info()
- */
-int bt_adapter_free_device_info(bt_device_info_s *device_info);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Checks whether the UUID of service is used or not
- * @since_tizen 2.3
- * @param[in] service_uuid The UUID of service
- * @param[out] used Indicates whether the service is used or not
- * @return true on success, otherwise false.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_adapter_is_service_used(const char *service_uuid, bool *used);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked when the Bluetooth adapter state changes.
- * @since_tizen 2.3
- *
- * @param[in] callback The callback function to invoke
- * @param[in] user_data        The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_state_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_state_changed_cb()
- * @see bt_adapter_set_state_changed_cb()
- * @see bt_adapter_unset_state_changed_cb()
- */
-int bt_adapter_set_state_changed_cb(bt_adapter_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- *
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- * @see bt_adapter_set_state_changed_cb()
- */
-int bt_adapter_unset_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked when the name of Bluetooth adapter changes.
- * @since_tizen 2.3
- *
- * @param[in] callback The callback function to invoke
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_adapter_name_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_name_changed_cb()
- * @see bt_adapter_unset_name_changed_cb()
- */
-int bt_adapter_set_name_changed_cb(bt_adapter_name_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- *
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- * @see bt_adapter_set_name_changed_cb()
- */
-int bt_adapter_unset_name_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked when the visibility mode changes.
- * @since_tizen 2.3
- *
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_visibility_mode_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_visibility_mode_changed_cb()
- * @see bt_adapter_unset_visibility_mode_changed_cb()
- */
-int bt_adapter_set_visibility_mode_changed_cb(bt_adapter_visibility_mode_changed_cb callback, void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Unregisters the callback function.
- * @since_tizen 2.3
- *
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The Bluetooth service must be initialized with bt_initialize().
- *
- * @see  bt_initialize()
- * @see  bt_adapter_set_visibility_mode_changed_cb()
- */
-int bt_adapter_unset_visibility_mode_changed_cb(void);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked every second
- * @since_tizen 2.3
- * until the visibility mode is changed from #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE
- * to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE.
- * @details  When you set visibility mode as #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE,
- * @a callback will be called every second until visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE.
- * @param[in]  callback  The callback function to register
- * @param[in]  user_data  The user data to be passed to the callback function
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The Bluetooth service must be initialized by bt_initialize().
- * @post  bt_adapter_visibility_duration_changed_cb() will be invoked.
- * @see  bt_initialize()
- * @see  bt_adapter_visibility_duration_changed_cb()
- * @see  bt_adapter_unset_visibility_duration_changed_cb()
- */
-int bt_adapter_set_visibility_duration_changed_cb(bt_adapter_visibility_duration_changed_cb callback, void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief       Unregisters the callback function.
- * @since_tizen 2.3
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The Bluetooth service must be initialized with bt_initialize().
- * @see  bt_initialize()
- * @see  bt_adapter_set_visibility_duration_changed_cb()
- */
-int bt_adapter_unset_visibility_duration_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked when the device discovery state changes.
- * @since_tizen 2.3
- *
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_device_discovery_state_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_device_discovery_state_changed_cb()
- * @see bt_adapter_set_device_discovery_state_changed_cb()
- * @see bt_adapter_unset_device_discovery_state_changed_cb()
- */
-int bt_adapter_set_device_discovery_state_changed_cb(bt_adapter_device_discovery_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- *
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- * @see bt_adapter_set_device_discovery_state_changed_cb()
- */
-int bt_adapter_unset_device_discovery_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Get the Hash and Randmoizer value, synchronously.
- * @since_tizen 2.3
- *
- * @param[out] hash The hash value received from the controller
- * @param[out] randomizer The hash value received from the controller
- * @param[out] hash_len The length of the hash value
- * @param[out] randomizer_len The length of the randomizer value
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- */
-int bt_adapter_get_local_oob_data(unsigned char **hash, unsigned char **randomizer,
-                                       int *hash_len, int *randomizer_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Sets the Hash and Randmoizer value, synchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address Remote device address
- * @param[in] hash The hash value received from the controller
- * @param[in] randomizer The hash value received from the controller
- * @param[in] hash_len The length of the hash value. Allowed value is 16
- * @param[in] randomizer_len The length of the randomizer value. Allowed value is 16
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- */
-int bt_adapter_set_remote_oob_data(const char *remote_address,
-                               unsigned char *hash, unsigned char *randomizer,
-                               int hash_len, int randomizer_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the Hash and Randmoizer value, synchronously.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks The @a hash192, randomizer192, hash256 and randomizer256 must be released using free()
- *
- * @param[out] hash192 The hash value derived from the P-192 public key
- * @param[out] randomizer192 The randomizer value associated with the P-192 public key
- * @param[out] hash192_len The length of @a hash192
- * @param[out] randomizer192_len The length of @a randomizer192
- * @param[out] hash256 The hash value derived from the P-256 public key
- * @param[out] randomizer256 The randomizer value associated with the P-256 public key
- * @param[out] hash256_len The length of @a hash256
- * @param[out] randomizer256_len The length of @a randomizer256
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- */
-int bt_adapter_get_local_oob_ext_data(unsigned char **hash192, unsigned char **randomizer192,
-               int *hash192_len, int *randomizer192_len,
-               unsigned char **hash256, unsigned char **randomizer256,
-               int *hash256_len, int *randomizer256_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Sets the Hash and Randmoizer value, synchronously.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address Remote device address
- * @param[in] hash192 The P-192 hash value received via OOB from remote device
- * @param[in] randomizer192 The P-192 randomizer value received via OOB from remote device
- * @param[in] hash192_len The length of @a hash192
- * @param[in] randomizer192_len The length of @a randomizer192
- * @param[in] hash256 The P-256 hash value received via OOB from remote device
- * @param[in] randomizer256 The P-256 randomizer value received via OOB from remote device
- * @param[in] hash256_len The length of @a hash256
- * @param[in] randomizer256_len The length of @a randomizer256
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- */
-int bt_adapter_set_remote_oob_ext_data(const char *remote_address,
-               const unsigned char *hash192, const unsigned char *randomizer192,
-               int hash192_len, int randomizer192_len,
-               const unsigned char *hash256, const unsigned char *randomizer256,
-               int hash256_len, int randomizer256_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Deletes the Hash and Randomizer value, synchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address Remote device address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- */
-int bt_adapter_remove_remote_oob_data(const char *remote_address);
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Starts the LE device discovery.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @details If a LE device is discovered, bt_adapter_le_device_discovery_state_changed_cb()
-*  will be invoked with #BT_ADAPTER_LE_DEVICE_DISCOVERY_FOUND, and then bt_adapter_le_device_discovery_state_changed_cb()
- * will be called with #BT_ADAPTER_LE_DEVICE_DISCOVERY_FINISHED in case of the completion or cancellation of the discovery.
- *
- * @remarks To connect to peer Bluetooth device, you need to know its Bluetooth address. \n
- * The device discovery can be stopped by bt_adapter_le_stop_device_discovery().
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post This function invokes bt_adapter_le_device_discovery_state_changed_cb().
- *
- * @see bt_adapter_le_is_discovering()
- * @see bt_adapter_le_device_discovery_state_changed_cb()
- * @see bt_adapter_le_set_device_discovery_state_changed_cb()
- * @see bt_adapter_le_unset_device_discovery_state_changed_cb()
- */
-int bt_adapter_le_start_device_discovery(void) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Stops the LE device discovery, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation is not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The device discovery must be in progress with bt_adapter_le_start_device_discovery().
- * @post This function invokes bt_adapter_le_device_discovery_state_changed_cb().
- *
- * @see bt_adapter_le_is_discovering()
- * @see bt_adapter_le_start_device_discovery()
- * @see bt_adapter_le_set_device_discovery_state_changed_cb()
- * @see bt_adapter_le_unset_device_discovery_state_changed_cb()
- * @see bt_adapter_le_device_discovery_state_changed_cb()
- */
-int bt_adapter_le_stop_device_discovery(void) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Checks for the LE device discovery is in progress or not.
- * @since_tizen 2.3
- *
- * @remarks If Bluetooth LE discovery is in progress, other operations are not allowed and
- * you have to either stop the LE discovery operation, or wait for it to be finished,
- * before performing other operations.
-
- * @param[out] is_discovering The discovering status: (@c true = in progress , @c  false = not in progress )
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_le_start_device_discovery()
- * @see bt_adapter_le_stop_device_discovery()
- */
-int bt_adapter_le_is_discovering(bool *is_discovering) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Registers a callback function to be invoked when the LE device discovery state changes.
- * @since_tizen 2.3
- *
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_le_device_discovery_state_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_le_device_discovery_state_changed_cb()
- * @see bt_adapter_le_unset_device_discovery_state_changed_cb()
- */
-int bt_adapter_le_set_device_discovery_state_changed_cb(bt_adapter_le_device_discovery_state_changed_cb callback, void *user_data) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- *
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- * @see bt_adapter_le_set_device_discovery_state_changed_cb()
- */
-int bt_adapter_le_unset_device_discovery_state_changed_cb(void) TIZEN_DEPRECATED_API;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Starts the LE scan to find LE advertisement.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @details If a LE advertisement is found, bt_adapter_le_scan_result_cb() will be invoked.
- *
- * @param[in] cb The callback to report the result of this function
- * @param[in] user_data The user data to be passed when callback is called
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post This function invokes bt_adapter_le_scan_result_cb().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_start_scan(bt_adapter_le_scan_result_cb cb, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Stops the LE scan.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation is not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The LE scan must be in progress with bt_adapter_le_start_scan().
- *
- * @see bt_adapter_le_start_scan()
- */
-int bt_adapter_le_stop_scan(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the service UUID list from the scan result information
- * @since_tizen 2.3.1
- *
- * @remarks The @a uuids must be iterated as count and each pointed data must be released with free().
- * Then uuids must be released with free(). \n
- * 16-bit service UUID or 128-bit service UUID is supported. (e.g. 180F, 0000180F-0000-1000-8000-00805F9B34FB)
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] uuids The list of string of the service uuid
- * @param[out] count The count of the service UUIDs
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_service_uuids(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, char ***uuids, int *count);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the device name from the scan result information
- * @since_tizen 2.3.1
- *
- * @remarks The @a name must be released with free() by you.
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] name The device name
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_device_name(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, char **name);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the transmission power level from the scan result information
- * @since_tizen 2.3.1
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] power_level The transmission power level in dBm
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_tx_power_level(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, int *power_level);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the service solicitation UUID list from the scan result information
- * @since_tizen 2.3.1
- *
- * @remarks The @a uuids must be iterated as count and each pointed data must be released with free().
- * Then uuids must be released with free(). \n
- * 16-bit service solicitation UUID or 128-bit service solicitation UUID is supported.
- * (e.g. 180F, 0000180F-0000-1000-8000-00805F9B34FB)
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] uuids The list of string of the service solicitation uuid
- * @param[out] count The count of the service UUIDs
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_service_solicitation_uuids(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, char ***uuids, int *count);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the service data list from the scan result information
- * @since_tizen 2.3.1
- *
- * @remarks The @a data_list must be released with bt_adapter_le_free_service_data_list() by you .
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] data_list The list of the service data
- * @param[out] count The count of the service data list
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_service_data_list(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, bt_adapter_le_service_data_s **data_list, int *count);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Frees service data list.
- * @since_tizen 2.3.1
- *
- * @param[in] data_list The list of the service data
- * @param[in] count The count of the service data list
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_adapter_le_get_scan_result_service_data_list()
- */
-int bt_adapter_le_free_service_data_list(bt_adapter_le_service_data_s *data_list, int count);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the appearance from the scan result information
- * @since_tizen 2.3.1
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] appearance The appearance
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_appearance(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, int *appearance);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the manufacturer data from the scan result information
- * @since_tizen 2.3.1
- *
- * @remarks The @a manufacturer_data must be released with free() by you.
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] manufacturer_id The manufacturer ID
- * @param[out] manufacturer_data The manufacturer data (byte array)
- * @param[out] manufacturer_data_len The length of manufacturer data
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_manufacturer_data(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, int *manufacturer_id, char **manufacturer_data, int *manufacturer_data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Create advertiser to advertise device's existence or respond to LE scanning request.
- * @since_tizen 2.3
- *
- * @param[out] advertiser The handle of advertiser
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_destroy_advertiser()
- */
-int bt_adapter_le_create_advertiser(bt_advertiser_h *advertiser);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Destroy advertiser.
- * @since_tizen 2.3
- *
- * @param[out] advertiser The handle of advertiser
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_create_advertiser()
- */
-int bt_adapter_le_destroy_advertiser(bt_advertiser_h advertiser);
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Set the data to be advertised or responded to scan request from LE scanning device.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3
- *
- * @remarks In case the data_type is local name or tx power level, you don't need to input data
- * because the data value is written automatically by system.
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] data_type The data type that is included in packet
- * @param[in] data The data to be advertised or be responded to scan request from LE scanning device, no need in case of LOCAL_NAME or TX_POWER_LEVEL
- * @param[in] data_size The size of data to be set.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_add_advertising_data(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, bt_adapter_le_packet_data_type_e data_type,
-               void *data, unsigned int data_size) TIZEN_DEPRECATED_API;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Add a service UUID to advertise or scan response data.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3.1
- *
- * @remarks 16-bit UUID or 128-bit UUID is supported. (e.g. 180F, 0000180F-0000-1000-8000-00805F9B34FB)
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] uuid The string of the service UUID.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_add_advertising_service_uuid(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, const char *uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Add a service solicitation UUID to advertise or scan response data.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3.1
- *
- * @remarks 16-bit service solicitation UUID or 128-bit service solicitation UUID is supported.
- * (e.g. 180F, 0000180F-0000-1000-8000-00805F9B34FB)
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] uuid The string of the service solicitation UUID.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_add_advertising_service_solicitation_uuid(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, const char *uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Add service data to advertise or scan response data.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3.1
- *
- * @remarks 16-bit UUID is supported. (e.g. 180F)
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] uuid 16-bit UUID of the service
- * @param[in] service_data The service data
- * @param[in] service_data_len The data length of service data
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_add_advertising_service_data(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, const char *uuid,
-               const char *service_data, int service_data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Sets the external appearance of this device to advertise or scan response data.
- *        Please refer to the adopted Bluetooth specification for the the appearance.
- * @since_tizen 2.3.1
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] appearance The external appearance of device
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_set_advertising_appearance(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, int appearance);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Add manufacturer specific data to advertise or scan response data.
- *        Please refer to the Bluetooth Assigned Numbers provided by the Bluetooth SIG for a list of existing company identifiers.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3.1
- *
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] manufacturer_id Manufacturer identifier
- * @param[in] manufacturer_data The manufacturer specific data
- * @param[in] manufacturer_data_len The data length of manufacturer data
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_add_advertising_manufacturer_data(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, int manufacturer_id, const char *manufacturer_data, int manufacturer_data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Set whether the device name should be included in advertise or scan response data.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3.1
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] include_name Whether the device name should be included
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_set_advertising_device_name(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, bool include_name);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Set whether the transmission power level should be included in advertise or scan response data.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3.1
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] include_tx_power Whether the transmission power level should be included
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_set_advertising_tx_power_level(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, bool include_tx_power);
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Unset the data to be advertised or responded to scan request from LE scanning device.
- * @since_tizen 2.3
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] data_type The data type to be removed from selected packet
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_add_advertising_data()
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_remove_advertising_data(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, bt_adapter_le_packet_data_type_e data_type) TIZEN_DEPRECATED_API;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Clear all data to be advertised or responded to scan request from LE scanning device.
- * @since_tizen 2.3
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type to be cleared
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_add_advertising_data()
- */
-int bt_adapter_le_clear_advertising_data(bt_advertiser_h advertiser, bt_adapter_le_packet_type_e pkt_type);
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Start advertising with passed advertiser and advertising parameters.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @details Once Bluetooth advertising is started, nearby Bluetooth LE(Low Energy) supported
- * devices can know this device's existence. And one of them can make a connection request,
- * if it is allowed.
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] adv_params The parameters of advertising \n
- * If NULL is passed, default values which are defined in driver / controller are used.
- * @param[in] cb The callback to report the result of this function
- * @param[in] user_data The user data to be passed when callback is called
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post This function invokes bt_adapter_le_advertising_state_changed_cb().
- *
- * @see bt_adapter_le_stop_advertising()
- * @see bt_adapter_le_advertising_state_changed_cb()
- */
-int bt_adapter_le_start_advertising(bt_advertiser_h advertiser, bt_adapter_le_advertising_params_s *adv_params,
-               bt_adapter_le_advertising_state_changed_cb cb, void *user_data) TIZEN_DEPRECATED_API;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Stops the advertising.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] advertiser The handle of advertiser
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation is not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The advertising must be going on with bt_adapter_le_start_advertising_new().
- * @post This function invokes bt_adapter_le_advertising_state_changed_cb().
- *
- * @see bt_adapter_le_start_advertising_new()
- * @see bt_adapter_le_advertising_state_changed_cb()
- */
-int bt_adapter_le_stop_advertising(bt_advertiser_h advertiser);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Start advertising with passed advertiser and advertising parameters.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @details Once Bluetooth advertising is started, nearby Bluetooth LE(Low Energy) supported
- * devices can know this device's existence. And one of them can make a connection request,
- * if it is allowed.
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] cb The callback to report the result of this function
- * @param[in] user_data The user data to be passed when callback is called
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post This function invokes bt_adapter_le_advertising_state_changed_cb().
- *
- * @see bt_adapter_le_stop_advertising()
- * @see bt_adapter_le_advertising_state_changed_cb()
- */
-int bt_adapter_le_start_advertising_new(bt_advertiser_h advertiser, bt_adapter_le_advertising_state_changed_cb cb, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Set advertising mode to control the advertising power and latency.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] mode The mode of advertising
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_start_advertising_new()
- */
-int bt_adapter_le_set_advertising_mode(bt_advertiser_h advertiser, bt_adapter_le_advertising_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Set whether the advertising type should be connectable or non-connectable
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] connectable The type of advertising
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_start_advertising_new()
- */
-int bt_adapter_le_set_advertising_connectable(bt_advertiser_h advertiser, bool connectable);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Sets Bluetooth LE scan mode
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] scan_mode The scan mode
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_ENABLED Adapter is not enabled
- * @retval #BT_ERROR_INVALID_PARAM Parameter is invalid
- * @retval #BT_ERROR_PERMISSION_DENIED Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED Not supported
- * @pre The state of local bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- */
-int bt_adapter_le_set_scan_mode(bt_adapter_le_scan_mode_e scan_mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Creates a bond with a remote Bluetooth device, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks A bond can be destroyed by bt_device_destroy_bond().\n
- * The bonding request can be cancelled by bt_device_cancel_bonding().
- *
- * @param[in] remote_address The address of the remote Bluetooth device with which the bond should be created
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The remote device must be discoverable with bt_adapter_start_device_discovery().
- * @post This function invokes bt_device_bond_created_cb().
- *
- * @see bt_adapter_start_device_discovery()
- * @see bt_device_bond_created_cb()
- * @see bt_device_cancel_bonding()
- * @see bt_device_destroy_bond()
- * @see bt_device_set_bond_created_cb()
- * @see bt_device_unset_bond_created_cb()
- */
-int bt_device_create_bond(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Cancels the bonding process.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks Use this function when the remote Bluetooth device is not responding to the
- * bond request or you wish to cancel the bonding request.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation not in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The creating a bond must be in progress by bt_device_create_bond().
- *
- * @see bt_device_create_bond()
- * @see bt_device_bond_created_cb()
- * @see bt_device_set_bond_created_cb()
- * @see bt_device_unset_bond_created_cb()
- */
-int bt_device_cancel_bonding(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Destroys the bond, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address The address of the remote Bluetooth device to remove bonding
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The bond with the remote device must be created with bt_device_create_bond().
- * @post This function invokes bt_device_bond_destroyed_cb().
- *
- * @see bt_device_create_bond()
- * @see bt_device_bond_destroyed_cb()
- * @see bt_device_set_bond_destroyed_cb()
- * @see bt_device_unset_bond_destroyed_cb()
- */
-int bt_device_destroy_bond(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Sets an alias for the bonded device.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address The address of the remote Bluetooth device
- * @param[in] alias The alias of the remote Bluetooth device
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The bond with the remote device must be created with bt_device_create_bond().
- *
- * @see bt_device_create_bond()
- */
-int bt_device_set_alias(const char *remote_address, const char *alias);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Sets the authorization of a bonded device, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks Once a device is authorized, you don't need to receive a confirmation.
- *
- * @param[in] remote_address The address of the remote Bluetooth device to authorize
- * @param[in] authorization_state The Bluetooth authorization state
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The bond with the remote device must be created with bt_device_create_bond().
- * @post bt_device_authorization_changed_cb() will be invoked.
- *
- * @see bt_device_create_bond()
- * @see bt_device_authorization_changed_cb()
- * @see bt_device_set_authorization_changed_cb()
- * @see bt_device_unset_authorization_changed_cb()
- */
-int bt_device_set_authorization(const char *remote_address, bt_device_authorization_e authorization_state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Starts the search for services supported by the specified device, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks If creating a bond succeeds, which means bt_device_bond_created_cb() is called with result #BT_ERROR_NONE,
- * then you don't need to run this function.\n
- * The service search takes a couple of seconds to complete normally. \n
- *
- * @param[in] remote_address The address of the remote Bluetooth device whose services need to be checked
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_SERVICE_SEARCH_FAILED  Service search failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The remote device must be discoverable with bt_adapter_start_device_discovery().
- * @pre The bond with the remote device must be created with bt_device_create_bond().
- * @post This function invokes bt_device_service_searched_cb().
- *
- * @see bt_adapter_start_device_discovery()
- * @see bt_device_create_bond()
- * @see bt_device_bond_created_cb()
- * @see bt_device_service_searched_cb()
- * @see bt_device_set_service_searched_cb()
- * @see bt_device_unset_service_searched_cb()
- */
-int bt_device_start_service_search(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Gets the connected profiles.
- * @since_tizen 2.3
- * @param[in] remote_address The address of the remote device
- * @param[in] callback The callback function to invoke
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post bt_device_connected_profile() will be invoked.
- * @see bt_device_connected_profile()
- */
-int bt_device_foreach_connected_profiles(const char *remote_address, bt_device_connected_profile callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Gets the profile connected status.
- * @since_tizen 2.3
- * @param[in] remote_address The address of the remote device
- * @param[in] bt_profile wish to know bt_profile
- * @param[out] connected_status the connected status
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_device_is_profile_connected(const char *remote_address, bt_profile_e bt_profile,
-                                       bool *connected_status);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Updates a LE connection mode
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address The address of the remote Bluetooth device
- * @param[in] mode The LE connection mode
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED   Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_device_update_le_connection_mode(const char *remote_address, bt_device_le_connection_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Registers a callback function to be invoked when the bond creates.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_device_bond_created_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_device_bond_created_cb()
- * @see bt_device_unset_bond_created_cb()
- */
-int bt_device_set_bond_created_cb(bt_device_bond_created_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_device_set_bond_created_cb()
- */
-int bt_device_unset_bond_created_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Registers a callback function to be invoked when the bond destroys.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_device_bond_destroyed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_device_bond_destroyed_cb()
- * @see bt_device_unset_bond_destroyed_cb()
- */
-int bt_device_set_bond_destroyed_cb(bt_device_bond_destroyed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_device_set_bond_destroyed_cb()
- */
-int bt_device_unset_bond_destroyed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Registers a callback function to be invoked when the authorization of device changes.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_device_authorization_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_device_authorization_changed_cb()
- * @see bt_device_set_authorization_changed_cb()
- * @see bt_device_unset_authorization_changed_cb()
- */
-int bt_device_set_authorization_changed_cb(bt_device_authorization_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_device_set_authorization_changed_cb()
- */
-int bt_device_unset_authorization_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Registers a callback function to be invoked when the process of service search finishes.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_device_service_searched_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_device_service_searched_cb()
- * @see bt_device_unset_service_searched_cb()
- */
-int bt_device_set_service_searched_cb(bt_device_service_searched_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_device_set_service_searched_cb()
- */
-int bt_device_unset_service_searched_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Registers a callback function to be invoked when the connection state is changed.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_device_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_device_connection_state_changed_cb()
- * @see bt_device_unset_connection_state_changed_cb()
- */
-int bt_device_set_connection_state_changed_cb(bt_device_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief      Unregisters the callback function to be invoked when the connection state is changed.
- * @since_tizen 2.3
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_device_set_connection_state_changed_cb()
- */
-int bt_device_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Registers a rfcomm server socket with a specific UUID.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks A socket can be destroyed by bt_socket_destroy_rfcomm().
- *
- * @param[in] service_uuid The UUID of service to provide
- * @param[out] socket_fd The file descriptor of socket to listen
- * @return 0 on success, otherwise a negative error value.
- *
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_socket_listen_and_accept_rfcomm()
- * @see bt_socket_destroy_rfcomm()
- */
-int bt_socket_create_rfcomm(const char *service_uuid, int *socket_fd);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Removes the rfcomm server socket which was created using bt_socket_create_rfcomm().
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remarks If callback function bt_socket_connection_state_changed_cb() is set and the remote Bluetooth device is connected,
- * then bt_socket_connection_state_changed_cb() will be called when this function is finished successfully.
- *
- * @param[in] socket_fd The file descriptor of socket (which was created using bt_socket_create_rfcomm()) to destroy
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The socket must be created with bt_socket_create_rfcomm().
- * @post If callback function bt_socket_connection_state_changed_cb() is set and the remote Bluetooth device is connected,
- * then bt_socket_connection_state_changed_cb() will be called.
- * @see bt_socket_create_rfcomm()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_destroy_rfcomm(int socket_fd);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Starts listening on passed rfcomm socket and accepts connection requests.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @details Pop-up is shown automatically when a RFCOMM connection is requested.
- * bt_socket_connection_state_changed_cb() will be called with
- * #BT_SOCKET_CONNECTED if you click "yes" and connection is finished successfully.
- * @param[in] socket_fd The file descriptor of socket on which start to listen
- * @param[in] max_pending_connections The maximum number of pending connections
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The socket must be created with bt_socket_create_rfcomm().
- * @post If callback function bt_socket_connection_state_changed_cb() is set,
- * then bt_socket_connection_state_changed_cb() will be called when the remote Bluetooth device is connected.
- * @see bt_socket_create_rfcomm()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_listen_and_accept_rfcomm(int socket_fd, int max_pending_connections);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Connects to a specific RFCOMM based service on a remote Bluetooth device UUID, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks A connection can be disconnected by bt_socket_disconnect_rfcomm().
- *
- * @param[in] remote_address The address of the remote Bluetooth device
- * @param[in] service_uuid The UUID of service provided by the remote Bluetooth device
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The remote device must be discoverable with bt_adapter_start_device_discovery().
- * @pre The bond with the remote device must be created with bt_device_create_bond().
- * @post This function invokes bt_socket_connection_state_changed_cb().
- *
- * @see bt_device_create_bond()
- * @see bt_adapter_start_device_discovery()
- * @see bt_device_start_service_search()
- * @see bt_socket_disconnect_rfcomm()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_connect_rfcomm(const char *remote_address, const char *service_uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Disconnects the RFCOMM connection with the given file descriptor of connected socket.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] socket_fd  The file descriptor of socket to close which was received using bt_socket_connection_state_changed_cb().
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The connection must be established.
- *
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_disconnect_rfcomm(int socket_fd);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Sends data to the connected device.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remark The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
- *
- * @param[in] socket_fd The file descriptor of connected socket which was received using bt_socket_connection_state_changed_cb()
- * @param[in] data The data to be sent
- * @param[in] length The length of data to be sent
- *
- * @return the number of bytes written (zero indicates nothing was written).
- * @retval On error, -1 is returned, and errno is set appropriately. See write 2 man page.
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- * @exception BT_ERROR_PERMISSION_DENIED  Permission denied
- * @exception BT_ERROR_AGAIN  Resource temporarily unavailable
- *
- * @pre The connection must be established.
- *
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_send_data(int socket_fd, const char *data, int length);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Register a callback function that will be invoked when you receive data.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_socket_data_received_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_socket_data_received_cb()
- * @see bt_socket_set_data_received_cb()
- * @see bt_socket_unset_data_received_cb()
- */
-int bt_socket_set_data_received_cb(bt_socket_data_received_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_socket_data_received_cb()
- * @see bt_socket_set_data_received_cb()
- */
-int bt_socket_unset_data_received_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Register a callback function that will be invoked when a RFCOMM connection is requested.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_socket_connection_requested_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_socket_unset_connection_requested_cb()
- */
-int bt_socket_set_connection_requested_cb(bt_socket_connection_requested_cb callback, void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Unregisters the callback function.
- * @since_tizen 2.3
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre  The Bluetooth service must be initialized with bt_initialize().
- * @see  bt_initialize()
- * @see  bt_socket_set_connection_requested_cb()
- * @see  bt_socket_connection_requested_cb()
- */
-int bt_socket_unset_connection_requested_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Register a callback function that will be invoked when the connection state changes.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_socket_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_set_connection_state_changed_cb(bt_socket_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- */
-int bt_socket_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Initializes the Bluetooth OPP server requested by bt_opp_server_connection_requested_cb().
- * @since_tizen 2.3
- * @details No popup appears when an OPP connection is requested from a remote device.
- * Instead, @a connection_requested_cb() will be called.
- * At that time, you can call either bt_opp_server_accept() or bt_opp_server_reject().
- * @remarks This function must be called to start Bluetooth OPP server. \n
- * You must free all resources of the Bluetooth service by calling bt_opp_server_deinitialize() if Bluetooth OPP service is no longer needed.
- * @param[in] destination  The destination path
- * @param[in] connection_requested_cb  The callback called when an OPP connection is requested
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_server_connection_requested_cb()
- * @see  bt_opp_server_deinitialize()
- * @see  bt_opp_server_accept()
- * @see  bt_opp_server_reject()
- */
-int bt_opp_server_initialize_by_connection_request(const char *destination, bt_opp_server_connection_requested_cb connection_requested_cb, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Deinitializes the Bluetooth OPP server.
- * @since_tizen 2.3
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_server_deinitialize()
- */
-int bt_opp_server_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Accepts the push request from the remote device.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remarks If you initialize OPP server by bt_opp_server_initialize_by_connection_request(), then name is ignored.
- * You can cancel the pushes by bt_opp_server_cancel_transfer() with transfer_id.
- * @param[in] progress_cb  The callback called when a file is being transferred
- * @param[in] finished_cb  The callback called when a transfer is finished
- * @param[in] name  The name to store. This can be NULL if you initialize OPP server by bt_opp_server_initialize_by_connection_request().
- * @param[in] user_data The user data to be passed to the callback function
- * @param[out]  transfer_id  The ID of transfer
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_server_reject()
- */
-int bt_opp_server_accept(bt_opp_server_transfer_progress_cb progress_cb,
-       bt_opp_server_transfer_finished_cb finished_cb, const char *name,
-       void *user_data, int *transfer_id);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Rejects the push request from the remote device.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_server_accept()
- */
-int bt_opp_server_reject(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Cancels the transfer.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] transfer_id  The ID of transfer
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_server_accept()
- */
-int bt_opp_server_cancel_transfer(int transfer_id);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Sets the destination path of file to be pushed.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] destination  The destination path of file to be pushed
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- */
-int bt_opp_server_set_destination(const char *destination);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief Initializes the Bluetooth OPP client.
- * @since_tizen 2.3
- * @remarks This function must be called before Bluetooth OPP client starts. \n
- * You must free all resources of the Bluetooth service by calling bt_opp_client_deinitialize()
- * if Bluetooth OPP service is no longer needed.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_client_deinitialize()
- */
-int bt_opp_client_initialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief Deinitializes the Bluetooth OPP client.
- * @since_tizen 2.3
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_client_initialize()
- */
-int bt_opp_client_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief Adds file to be pushed.
- * @since_tizen 2.3
- * @param[in] file  The path of file to be pushed
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_client_clear_files()
- * @see  bt_opp_client_push_files()
- */
-int bt_opp_client_add_file(const char *file);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief Adds file to be pushed.
- * @since_tizen 2.3
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_client_add_file()
- * @see  bt_opp_client_push_files()
- */
-int bt_opp_client_clear_files(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief Pushes the file to the remote device, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @details At first, bt_opp_client_push_responded_cb() will be called when OPP server responds to the push request.
- * After connection is established, bt_opp_client_push_progress_cb() will be called repeatedly until a file is transferred completely.
- * If you send several files, then bt_opp_client_push_progress_cb() with another file will be called repeatedly until the file is transferred completely.
- * bt_opp_client_push_finished_cb() will be called when the push request is finished.
- * @param[in] remote_address The remote address
- * @param[in] responded_cb  The callback called when OPP server responds to the push request
- * @param[in] progress_cb  The callback called when each file is being transferred
- * @param[in] finished_cb  The callback called when the push request is finished
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see bt_opp_client_initialize()
- * @see bt_opp_client_cancel_push
- */
-int bt_opp_client_push_files(const char *remote_address,
-       bt_opp_client_push_responded_cb responded_cb,
-       bt_opp_client_push_progress_cb progress_cb,
-       bt_opp_client_push_finished_cb finished_cb,
-       void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief Cancels the push request in progress, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre bt_opp_client_push_files() must be called.
- * @post bt_opp_client_push_finished_cb() will be invoked with result #BT_ERROR_CANCELLED,
- * which is a parameter of bt_opp_client_push_files().
- * @see bt_opp_client_initialize()
- * @see bt_opp_client_push_files()
- */
-int bt_opp_client_cancel_push(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Initializes the Bluetooth HID(Human Interface Device) Host.
- * @since_tizen 2.3
- * @remarks This function must be called before Bluetooth HID Host starts. \n
- * You must free all resources of the Bluetooth service by calling bt_hid_host_deinitialize()
- * if Bluetooth HID Host service is no longer needed.
- * @param[in] connection_cb  The callback called when the connection state is changed
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see  bt_hid_host_deinitialize()
- */
-int bt_hid_host_initialize(bt_hid_host_connection_state_changed_cb connection_cb, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Deinitializes the Bluetooth HID(Human Interface Device) Host.
- * @since_tizen 2.3
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth HID service must be initialized with bt_hid_host_initialize().
- * @see  bt_hid_host_initialize()
- */
-int bt_hid_host_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Connects the remote device with the HID(Human Interface Device) service, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The local device must be bonded with the remote device by bt_device_create_bond().
- * @pre The Bluetooth HID service must be initialized with bt_hid_host_initialize().
- * @post bt_hid_host_connection_state_changed_cb() will be invoked.
- * @see bt_hid_host_disconnect()
- * @see bt_hid_host_connection_state_changed_cb()
- */
-int bt_hid_host_connect(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Disconnects the remote device with the HID(Human Interface Device) service, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The remote device must be connected by bt_hid_host_connect().
- * @post bt_hid_host_connection_state_changed_cb() will be invoked.
- * @see bt_hid_host_connect()
- * @see bt_hid_host_connection_state_changed_cb()
- */
-int bt_hid_host_disconnect(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief Initializes the Bluetooth profiles related with audio.
- * @since_tizen 2.3
- * @remarks This function must be called before Bluetooth profiles related with audio starts. \n
- * You must free all resources of the this service by calling bt_audio_deinitialize()
- * if Bluetooth profiles related with audio service is no longer needed.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_audio_deinitialize()
- */
-int bt_audio_initialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief Deinitializes the Bluetooth profiles related with audio.
- * @since_tizen 2.3
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- */
-int bt_audio_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief Connects the remote device with the given audio profile, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @details If you input type as #BT_AUDIO_PROFILE_TYPE_ALL and connection request succeeds, then bt_audio_connection_state_changed_cb() will be called twice
- * when #BT_AUDIO_PROFILE_TYPE_HSP_HFP is connected and #BT_AUDIO_PROFILE_TYPE_A2DP is connected.
- * @param[in] remote_address  The remote address
- * @param[in] type  The type of audio profile
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
-
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @pre The local device must be bonded with the remote device by bt_device_create_bond().
- * @post bt_audio_connection_state_changed_cb() will be invoked.
- * @see bt_audio_disconnect()
- * @see bt_audio_connection_state_changed_cb()
- */
-int bt_audio_connect(const char *remote_address, bt_audio_profile_type_e type);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief Disconnects the remote device with the given audio profile, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @details If you input type as #BT_AUDIO_PROFILE_TYPE_ALL and disconnection request succeeds, then bt_audio_connection_state_changed_cb() will be called twice
- * when #BT_AUDIO_PROFILE_TYPE_HSP_HFP is disconnected and #BT_AUDIO_PROFILE_TYPE_A2DP is disconnected.
- * @param[in] remote_address  The remote address
- * @param[in] type  The type of audio profile
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected by bt_audio_connect().
- * @post bt_audio_connection_state_changed_cb() will be invoked.
- * @see bt_audio_connect()
- * @see bt_audio_connection_state_changed_cb()
- */
-int bt_audio_disconnect(const char *remote_address, bt_audio_profile_type_e type);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Registers a callback function that will be invoked when the connection state is changed.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_audio_connection_state_changed_cb()
- */
-int bt_audio_set_connection_state_changed_cb(bt_audio_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Unregisters a callback function that will be invoked when the connection state is changed.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_audio_connection_state_changed_cb()
- * @see bt_audio_set_connection_state_changed_cb()
- */
-int bt_audio_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief Initializes the Bluetooth AVRCP (Audio/Video Remote Control Profile) target service.
- * @since_tizen 2.4
- * @remarks This function must be called before any other AVRCP target functions are called. \n
- * You must free all resources of the this service by calling bt_avrcp_target_deinitialize()
- * if Bluetooth AVRCP service is no longer needed.
- * @param[in] callback The callback function called when the connection state is changed
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_avrcp_target_deinitialize()
- */
-int bt_avrcp_target_initialize(bt_avrcp_target_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief Deinitializes the Bluetooth AVRCP (Audio/Video Remote Control Profile) target service.
- * @since_tizen 2.4
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_avrcp_target_initialize().
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the equalizer state to the remote device.
- * @since_tizen 2.4
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] state The state of equalizer
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_equalizer_state(bt_avrcp_equalizer_state_e state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the repeat mode to the remote device.
- * @since_tizen 2.4
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] mode The repeat mode
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_repeat_mode(bt_avrcp_repeat_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the shuffle mode to the remote device.
- * @since_tizen 2.4
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] mode The repeat mode
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_shuffle_mode(bt_avrcp_shuffle_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the scan mode to the remote device.
- * @since_tizen 2.4
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] mode The scan mode
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_scan_mode(bt_avrcp_scan_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the player state to the remote device.
- * @since_tizen 2.4
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] state The player state
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_player_state(bt_avrcp_player_state_e state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the current position of song to the remote device.
- * @since_tizen 2.4
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] position The current position in milliseconds
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_position(unsigned int position);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the track to the remote device.
- * @since_tizen 2.4
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] title The title of track
- * @param[in] artist The artist of track
- * @param[in] album The album of track
- * @param[in] genre The genre of track
- * @param[in] track_num The track number
- * @param[in] total_tracks The number of all tracks
- * @param[in] duration The duration of track in milliseconds
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_track(const char *title, const char *artist, const char *album, const char *genre, unsigned int track_num, unsigned int total_tracks, unsigned int duration);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the equalizer state is changed by the remote control device.
- * @since_tizen 2.4
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_equalizer_state_changed_cb()
- */
-int bt_avrcp_set_equalizer_state_changed_cb(bt_avrcp_equalizer_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the equalizer state is changed by the remote control device.
- * @since_tizen 2.4
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_equalizer_state_changed_cb()
- */
-int bt_avrcp_unset_equalizer_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the repeat mode is changed by the remote control device.
- * @since_tizen 2.4
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_repeat_mode_changed_cb()
- */
-int bt_avrcp_set_repeat_mode_changed_cb(bt_avrcp_repeat_mode_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the repeat mode is changed by the remote control device.
- * @since_tizen 2.4
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_repeat_mode_changed_cb()
- */
-int bt_avrcp_unset_repeat_mode_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the shuffle mode is changed by the remote control device.
- * @since_tizen 2.4
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_shuffle_mode_changed_cb()
- */
-int bt_avrcp_set_shuffle_mode_changed_cb(bt_avrcp_shuffle_mode_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the shuffle mode is changed by the remote control device.
- * @since_tizen 2.4
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_shuffle_mode_changed_cb()
- */
-int bt_avrcp_unset_shuffle_mode_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the scan mode is changed by the remote control device.
- * @since_tizen 2.4
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_scan_mode_changed_cb()
- */
-int bt_avrcp_set_scan_mode_changed_cb(bt_avrcp_scan_mode_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the scan mode is changed by the remote control device.
- * @since_tizen 2.4
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_scan_mode_changed_cb()
- */
-int bt_avrcp_unset_scan_mode_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the song position is changed by the remote target device.
- * @since_tizen 3.0
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_position_changed_cb()
- */
-int bt_avrcp_set_position_changed_cb(bt_avrcp_position_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the song position is changed by the remote target device.
- * @since_tizen 3.0
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_position_changed_cb()
- */
-int bt_avrcp_unset_position_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the Play status is changed by the remote target device.
- * @since_tizen 3.0
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_play_status_changed_cb()
- */
-int bt_avrcp_set_play_status_changed_cb(bt_avrcp_play_status_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the Play status is changed by the remote target device.
- * @since_tizen 3.0
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized by bt_initialize().
- * @see bt_initialize()
- * @see bt_avrcp_unset_play_status_changed_cb()
- */
-int bt_avrcp_unset_play_status_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the track metadata is changed by the remote target device.
- * @since_tizen 3.0
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_track_info_changed_cb()
- */
-int bt_avrcp_set_track_info_changed_cb(bt_avrcp_track_info_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the track metadata is changed by the remote target device.
- * @since_tizen 3.0
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_track_info_changed_cb()
- */
-int bt_avrcp_unset_track_info_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief Initializes the Bluetooth AVRCP (Audio/Video Remote Control Profile) controller service.
- * @since_tizen 3.0
- * @remarks This function must be called before any other AVRCP controller functions are called. \n
- * You must free all resources of the this service by calling bt_avrcp_control_deinitialize()
- * if Bluetooth AVRCP service is no longer needed.
- * @param[in] callback The callback function called when the connection state is changed
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_avrcp_control_deinitialize()
- */
-int bt_avrcp_control_initialize(bt_avrcp_control_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief Deinitializes the Bluetooth AVRCP (Audio/Video Remote Control Profile) controller service.
- * @since_tizen 3.0
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_avrcp_control_initialize().
- * @see bt_avrcp_control_initialize()
- */
-int bt_avrcp_control_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief Connects the AVRCP (Audio/Video Remote Control Profile) target device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_avrcp_control_initialize().
- * @see bt_avrcp_control_initialize()
- */
-int bt_avrcp_control_connect(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief Disconnects from the AVRCP (Audio/Video Remote Control Profile) target device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_avrcp_control_initialize().
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_control_connect()
- */
-int bt_avrcp_control_disconnect(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief Sends a command to the target device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] cmd The commands, one of: Play, Pause, Next, Rewind.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_avrcp_control_initialize().
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_control_connect()
- */
-int bt_avrcp_control_send_player_command(bt_avrcp_player_command_e cmd);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Sends the equalizer state change request to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] state The new equalizer state, one of: ON, OFF
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_set_equalizer_state(bt_avrcp_equalizer_state_e state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the the equalizer state of the remote device.
- * @since_tizen 3.0
- * @param[out] state The equalizer state, one of: ON, OFF
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_equalizer_state(bt_avrcp_equalizer_state_e *state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Sends the repeat change request to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] mode The new repeat mode, one of: OFF, SINGLE, ALL
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_set_repeat_mode(bt_avrcp_repeat_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the repeat state of the remote device.
- * @since_tizen 3.0
- * @param[out] mode The repeat mode, one of: OFF, SINGLE, ALL
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_repeat_mode(bt_avrcp_repeat_mode_e *mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Sends the shuffle mode change request to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] mode The new shuffle mode, one of: OFF, GROUP, ALL
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_set_shuffle_mode(bt_avrcp_shuffle_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the shuffle modee of the remote device.
- * @since_tizen 3.0
- * @param[out] mode The shuffle mode, one of: OFF, GROUP, ALL
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_shuffle_mode(bt_avrcp_shuffle_mode_e *mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Sends the scan mode change request to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] mode The new scan mode, one of: OFF, GROUP, ALL
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_set_scan_mode(bt_avrcp_scan_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the scan mode of the remote device.
- * @since_tizen 3.0
- * @param[out] mode The scan mode, one of: OFF, GROUP, ALL
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_scan_mode(bt_avrcp_scan_mode_e *mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the position of the song played by the remote device.
- * @since_tizen 3.0
- * @param[out] mode The position, in milliseconds
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_position(unsigned int *position);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the play status of the remote device.
- * @since_tizen 3.0
- * @param[out] status The play status, one of: PLAYING, STOPPED...
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_play_status(bt_avrcp_player_state_e *status);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the metadata of the track played by the remote device.
- * @since_tizen 3.0
- * @remarks The @a track must be released using bt_avrcp_control_free_track_info()
- * @param[out] track The track metadata.
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_track_info(bt_avrcp_metadata_attributes_info_s **track);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Frees the track metadata.
- * @since_tizen 3.0
- * @param[in] track The track metadata.
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre track should point to valid metadata address.
- * @see bt_avrcp_control_get_track_info()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_free_track_info(bt_avrcp_metadata_attributes_info_s *track);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief Registers an application that acts as the @a Sink role of HDP(Health Device Profile).
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remarks The @a app_id must be released with free() by you.
- * @param[in] data_type  The data type of MDEP. This value is defined in ISO/IEEE 11073-20601 spec.
- * For example, pulse oximeter is 0x1004 and blood pressure monitor is 0x1007.
- * @param[out] app_id  The ID of application
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see bt_hdp_unregister_sink_app()
- */
-int bt_hdp_register_sink_app(unsigned short data_type, char **app_id);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief Unregisters the given application that acts as the @a Sink role of HDP(Health Device Profile).
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] app_id  The ID of application
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_hdp_register_sink_app()
- */
-int bt_hdp_unregister_sink_app(const char *app_id);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief Connects the remote device which acts as @a Source role, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @param[in] app_id  The ID of application
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Sink role of HDP must be registered with bt_hdp_register_sink_app().
- * @pre The local device must be bonded with the remote device by bt_device_create_bond().
- * @post bt_hdp_connected_cb() will be invoked.
- * @see bt_hdp_disconnect()
- * @see bt_hdp_set_connection_state_changed_cb()
- * @see bt_hdp_unset_connection_state_changed_cb()
- */
-int bt_hdp_connect_to_source(const char *remote_address, const char *app_id);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief Disconnects the remote device, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @param[in] channel  The connected data channel
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @post bt_hdp_disconnected_cb() will be invoked.
- * @see bt_hdp_set_connection_state_changed_cb()
- * @see bt_hdp_unset_connection_state_changed_cb()
- */
-int bt_hdp_disconnect(const char *remote_address, unsigned int channel);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief Sends the data to the remote device.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] channel  The connected data channel
- * @param[in] data  The data to send
- * @param[in] size  The size of data to send (byte)
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_hdp_data_received_cb()
- * @see bt_hdp_set_data_received_cb()
- * @see bt_hdp_unset_data_received_cb()
- */
-int bt_hdp_send_data(unsigned int channel, const char *data, unsigned int size);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Registers a callback function that will be invoked when the connection state is changed.
- * @since_tizen 2.3
- * @param[in] connected_cb The callback function called when a connection is established
- * @param[in] disconnected_cb The callback function called when a connection is disconnected
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_hdp_unset_connection_state_changed_cb()
- */
-int bt_hdp_set_connection_state_changed_cb(bt_hdp_connected_cb connected_cb, bt_hdp_disconnected_cb disconnected_cb, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the connection state is changed.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_hdp_set_connection_state_changed_cb()
- */
-int bt_hdp_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Registers a callback function that will be invoked when you receive the data.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_hdp_unset_data_received_cb()
- */
-int bt_hdp_set_data_received_cb(bt_hdp_data_received_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Unregisters a callback function that will be invoked when you receive the data.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_hdp_set_data_received_cb()
- */
-int bt_hdp_unset_data_received_cb(void);
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_foreach_services or bt_gatt_client_get_service instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the primary services of GATT(Generic Attribute Profile).
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in]  remote_address  The address of the remote device
- * @param[in]  callback  The callback function to invoke
- * @param[in]  user_data  The user data to be passed to the callback function
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post  @a callback will be called if there are primary services.
- * @see  bt_gatt_primary_service_cb()
- */
-int bt_gatt_foreach_primary_services(const char *remote_address, bt_gatt_primary_service_cb callback, void *user_data) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. This function call is not required because characteristic discovery is happened automatically.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Discovers the characteristics in service, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in]  service  The attribute handle of service
- * @param[in]  callback  The result callback
- * @param[in]  user_data  The user data to be passed to the callback function
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post  @a callback will be called.
- * @see  bt_gatt_characteristics_discovered_cb()
- */
-int bt_gatt_discover_characteristics(bt_gatt_attribute_h service, bt_gatt_characteristics_discovered_cb callback, void *user_data) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_get_uuid instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the UUID of service.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remarks  @a uuid must be released with free() by you.
- * @param[in]  service  The attribute handle of service
- * @param[out]  uuid  The UUID of service
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval  #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_gatt_get_service_uuid(bt_gatt_attribute_h service, char **uuid) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_service_foreach_included_services or bt_gatt_service_get_included_service instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the included services in service.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in]  service  The attribute handle of service
- * @param[in]  callback  The callback function to invoke
- * @param[in]  user_data  The user data to be passed to the callback function
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post  @a callback will be called if there are included services.
- * @see  bt_gatt_included_service_cb()
- */
-int bt_gatt_foreach_included_services(bt_gatt_attribute_h service, bt_gatt_included_service_cb callback, void *user_data) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_set_characteristic_value_changed_cb instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Registers a callback function that will be invoked when a characteristic value is changed.
- * @since_tizen 2.3
- * @param[in]  callback  The callback function to register
- * @param[in]  user_data  The user data to be passed to the callback function
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The Bluetooth service must be initialized with bt_initialize().
- * @see  bt_gatt_unset_characteristic_changed_cb()
- */
-int bt_gatt_set_characteristic_changed_cb(bt_gatt_characteristic_changed_cb callback, void *user_data) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_unset_characteristic_value_changed_cb instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Unregisters a callback function that will be invoked when a characteristic is changed.
- * @since_tizen 2.3
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_gatt_set_characteristic_changed_cb()
- */
-int bt_gatt_unset_characteristic_changed_cb(void) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_set_characteristic_value_changed_cb instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Watches all the characteristic value changes of the service.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in]  service  The attribute handle of service
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The Bluetooth service must be initialized with bt_initialize().
- * @see  bt_gatt_unset_characteristic_changed_cb()
- */
-int bt_gatt_watch_characteristic_changes(bt_gatt_attribute_h service) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_unset_characteristic_value_changed_cb instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Remove watching of all the characteristic value changes of the service.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in]  service  The attribute handle of service
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_gatt_set_characteristic_changed_cb()
- */
-int bt_gatt_unwatch_characteristic_changes(bt_gatt_attribute_h service) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_get_value or bt_gatt_get_uuid after bt_gatt_client_read_value instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the characteristic declaration.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remarks  @a uuid and @a value must be released with free() by you.
- * @param[in]  characteristic  The attribute handle of characteristic
- * @param[out]  uuid  The UUID of service
- * @param[out]  value  The value of characteristic (byte array)
- * @param[out]  value_length  The length of value
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval  #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see  bt_gatt_set_characteristic_value()
- */
-int bt_gatt_get_characteristic_declaration(bt_gatt_attribute_h characteristic, char **uuid, unsigned char **value, int *value_length) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_set_value and bt_gatt_client_write_value instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Sets the value of characteristic.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in]  characteristic  The attribute handle of characteristic
- * @param[in]  value  The value of characteristic (byte array)
- * @param[in]  value_length  The length of value
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see  bt_gatt_get_characteristic_declaration()
- */
-int bt_gatt_set_characteristic_value(bt_gatt_attribute_h characteristic, const unsigned char *value, int value_length) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_set_value and bt_gatt_client_write_value instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Sets the value of characteristic request.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in]  characteristic  The attribute handle of characteristic
- * @param[in]  value  The value of characteristic (byte array)
- * @param[in]  value_length  The length of value
- * @param[in]  callback  The result callback
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see  bt_gatt_get_characteristic_declaration()
- */
-int bt_gatt_set_characteristic_value_request(bt_gatt_attribute_h characteristic, const unsigned char *value,
-                               int value_length, bt_gatt_characteristic_write_cb callback) TIZEN_DEPRECATED_API;
-
-/**
-* @deprecated Deprecated since 2.3.1. GATT handle clone is not allowed. Instead, all handles for client role must be got from GATT client handle.
-* @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
-* @brief  Clones the attribute handle.
-* @since_tizen 2.3
-* @remarks  @a clone must be released with bt_gatt_destroy_attribute_handle().
-* @param[out]  clone  The cloned attribute handle
-* @param[in]  origin  The origin attribute handle
-* @return  0 on success, otherwise negative error value.
-* @retval  #BT_ERROR_NONE  Successful
-* @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
-* @retval  #BT_ERROR_OUT_OF_MEMORY  Out of memory
-* @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
-*
-* @see  bt_gatt_destroy_attribute_handle()
-*/
-int bt_gatt_clone_attribute_handle(bt_gatt_attribute_h *clone,
-       bt_gatt_attribute_h origin) TIZEN_DEPRECATED_API;
-
-/**
-* @deprecated Deprecated since 2.3.1. GATT handle clone and destroy are not allowed.
-* @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
-* @brief  Destroys the attribute handle.
-* @since_tizen 2.3
-* @param[in]  handle  The attribute handle
-* @return  0 on success, otherwise negative error value.
-* @retval  #BT_ERROR_NONE  Successful
-* @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
-* @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
-*
-* @see  bt_gatt_clone_attribute_handle()
-*/
-int bt_gatt_destroy_attribute_handle(bt_gatt_attribute_h handle) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use gatt_client_read_value instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Reads the value of characteristic from remote device.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in]  char_handle  The attribute handle of characteristic
- * @param[in]  callback  The result callback
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE      Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see  bt_gatt_get_characteristic_declaration()
- */
-int bt_gatt_read_characteristic_value(bt_gatt_attribute_h char_handle,
-               bt_gatt_characteristic_read_cb callback) TIZEN_DEPRECATED_API;
-
-/**
- * @deprecated Deprecated since 2.3.1. This function call is not required because descriptor discovery is happened automatically.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Discovers the characteristic descriptors of a characteristic within its definition, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in]  characteristic_handle  The attribute handle of characteristic
- * @param[in]  callback  The result callback
- * @param[in]  user_data  The user data to be passed to the callback function
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval  #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post  @a callback will be called.
- * @see  bt_gatt_characteristic_descriptor_discovered_cb()
- */
-int bt_gatt_discover_characteristic_descriptor(bt_gatt_attribute_h characteristic_handle,
-               bt_gatt_characteristic_descriptor_discovered_cb callback,
-               void *user_data) TIZEN_DEPRECATED_API;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the value of a characteristic or descriptor's GATT handle.
- * @since_tizen 2.3.1
- *
- * @remarks @a value must be released using free(). \n
- * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_read_value() must be used prior to this function \n
- * in order to get the remote device's current value.
- *
- * @param[in] gatt_handle The handle of a characteristic or descriptor
- * @param[out] value The value of @a gatt_handle. It is a byte stream type.
- * @param[out] value_length The length of @a value
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_get_value(bt_gatt_h gatt_handle, char **value, int *value_length);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the value of a characteristic or descriptor's GATT handle as an integer type.
- * @since_tizen 2.3.1
- *
- * @remarks This function returns a locally saved value in @a gatt_handle. \n
- * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_read_value() must be used prior to this function \n
- * in order to get the remote device's current value.
- *
- * @param[in] gatt_handle The handle of a characteristic or descriptor
- * @param[in] type The type of a saved value in @a gatt_handle
- * @param[in] offset The offset from where a value will be read from @a gatt_handle as an integer type
- * @param[out] value The integer type's value of @a gatt_handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_get_int_value(bt_gatt_h gatt_handle, bt_data_type_int_e type,
-                       int offset, int *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the value of a characteristic or descriptor's GATT handle as a float type.
- * @since_tizen 2.3.1
- *
- * @remarks This function returns a locally saved value in @a gatt_handle. \n
- * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_read_value() must be used prior to this function \n
- * in order to get the remote device's current value.
- *
- * @param[in] gatt_handle  The handle of a characteristic or descriptor
- * @param[in] type The type of a saved value in @a gatt_handle
- * @param[in] offset The offset from where a value will be read from @a gatt_handle as an integer type
- * @param[out] value The float type's value of @a gatt_handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_get_float_value(bt_gatt_h gatt_handle, bt_data_type_float_e type,
-                       int offset, float *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Updates the value of a characteristic or descriptor's GATT handle.
- * @since_tizen 2.3.1
- *
- * @remarks This function updates a value of @a gatt_handle locally. \n
- * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_write_value() can be used after this function \n
- * in order to update the remote device's value. \n
- *
- * @param[in] gatt_handle The handle of a characteristic or descriptor
- * @param[in] value The value to be updated
- * @param[in] value_length The length of @a value
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_set_value(bt_gatt_h gatt_handle, const char *value, int value_length);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Updates the value of a characteristic or descriptor's GATT handle using a integer type's value.
- * @since_tizen 2.3.1
- *
- * @remarks This function updates a value of @a gatt_handle locally. \n
- * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_write_value() can be used after this function \n
- * in order to update the remote device's value. \n
- *
- * @param[in] gatt_handle The handle of a characteristic or descriptor
- * @param[in] type @a value will be saved in @a gatt_handle as this type
- * @param[in] value The integer type's value to be updated
- * @param[in] offset The offset from where @a value will be saved in @a gatt_handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_set_int_value(bt_gatt_h gatt_handle, bt_data_type_int_e type,
-                       int value, int offset);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Updates the value of a characteristic or descriptor's GATT handle using a float type's value.
- * @since_tizen 2.3.1
- *
- * @remarks This function updates a value of @a gatt_handle locally. \n
- * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_write_value() can be used after this function \n
- * in order to update the remote device's value. \n
- *
- * @param[in] gatt_handle The handle of a characteristic or descriptor
- * @param[in] type @a mantissa and @a exponent will be saved in @a gatt_handle as this type
- * @param[in] mantissa The mantissa of float type's value to be updated
- * @param[in] exponent The exponent of float type's value to be updated
- * @param[in] offset The offset from where @a mantissa and @a exponent will be saved in @a gatt_handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_set_float_value(bt_gatt_h gatt_handle, bt_data_type_float_e type,
-                       int mantissa, int exponent, int offset);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the UUID of a service, characteristic or descriptor's GATT handle.
- * @since_tizen 2.3.1
- *
- * @remarks @a uuid must be released using free(). \n
- * 16-bit UUID or 128-bit UUID is supported. (e.g. 2A19, 00002A19-0000-1000-8000-00805F9B34FB)
- *
- * @param[in] gatt_handle The handle of a service, characteristic or descriptor
- * @param[out] uuid The string of the UUID of @a gatt_handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_get_uuid(bt_gatt_h gatt_handle, char **uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the type of GATT handle.
- * @since_tizen 2.3.1
- *
- * @param[in] gatt_handle The GATT handle
- * @param[out] gatt_type The type of @a gatt_handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_get_type(bt_gatt_h gatt_handle, bt_gatt_type_e *gatt_type);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the GATT client handle which the specified service belongs to.
- * @since_tizen 2.3.1
- *
- * @remark This function doesn't allocate new memory for GATT client handle.
- * The returned GATT client handle is the same one which was got from bt_gatt_client_create().
- * So if it is destroyed by bt_gatt_client_destroy(), all related GATT handles are freed also.
- *
- * @param[in] service The service's GATT handle
- * @param[out] client The GATT client handle which @a service belongs to
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_create()
- */
-int bt_gatt_service_get_client(bt_gatt_h service, bt_gatt_client_h *client);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets a characteristic's GATT handle which has specific UUID.
- * @since_tizen 2.3.1
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
- * If there are multiple characteristics which have same UUID, only the first matched one will be returned.
- *
- * @param[in] service The service's GATT handle
- * @param[in] uuid The characteristic's GATT handle which has this UUID will be returned if it exists
- * @param[out] characteristic The characteristic's GATT handle which has @a uuid if it exists
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_service_get_characteristic(bt_gatt_h service, const char *uuid,
-                                       bt_gatt_h *characteristic);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Invokes @a callback function on each characteristic that belongs to the specified service.
- * @since_tizen 2.3.1
- *
- * @param[in] service The service's GATT handle
- * @param[in] callback The function to be invoked on each characteristic
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_foreach_cb()
- */
-int bt_gatt_service_foreach_characteristics(bt_gatt_h service,
-                                       bt_gatt_foreach_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets an included service's GATT handle which has specific UUID.
- * @since_tizen 2.3.1
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
- * If there are multiple included services which have same UUID, only the first matched one will be returned.
- *
- * @param[in] service The service's GATT handle
- * @param[in] uuid The included service's GATT handle which has this UUID will be returned if it exists
- * @param[out] included_service The included service's GATT handle which has @a uuid if it exists
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_service_get_included_service(bt_gatt_h service, const char *uuid,
-                                               bt_gatt_h *included_service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Invokes @a callback function on each included service that belongs to the specified service.
- * @since_tizen 2.3.1
- *
- * @param[in] service The service's GATT handle
- * @param[in] callback The function to be invoked on each included service
- * @param[in] user_data The user data to be passed to the callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_foreach_cb()
- */
-int bt_gatt_service_foreach_included_services(bt_gatt_h service,
-                                       bt_gatt_foreach_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the service's GATT handle which the specified characteristic belongs to.
- * @since_tizen 2.3.1
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[out] service The service's GATT handle which @a characteristic belongs to
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_characteristic_get_service(bt_gatt_h characteristic, bt_gatt_h *service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the properties which a characteristic's GATT handle has.
- * @since_tizen 2.3.1
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[out] properties The properties which a characteristic's GATT handle has
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_property_e
- */
-int bt_gatt_characteristic_get_properties(bt_gatt_h characteristic, int *properties);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Gets the write type of the specified characteristic.
- * @since_tizen 2.3.1
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[out] write_type The write type of the specified characteristic
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_write_type_e
- */
-int bt_gatt_characteristic_get_write_type(bt_gatt_h characteristic,
-                                       bt_gatt_write_type_e *write_type);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Updates the write type of the specified characteristic.
- * @since_tizen 2.3.1
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[in] write_type The write type to be updated
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_write_value()
- * @see bt_gatt_write_type_e
- */
-int bt_gatt_characteristic_set_write_type(bt_gatt_h characteristic,
-                                       bt_gatt_write_type_e write_type);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets a descriptor's GATT handle which has specific UUID.
- * @since_tizen 2.3.1
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
- * If there are multiple descriptors which have same UUID, only the first matched one will be returned.
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[in] uuid The descriptor's GATT handle which has this UUID will be returned if it exists
- * @param[out] descriptor The descriptor's GATT handle which has @a uuid if it exists
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_characteristic_get_descriptor(bt_gatt_h characteristic, const char *uuid,
-                                               bt_gatt_h *descriptor);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Invokes @a callback function on each descriptor that belongs to the specified characteristic.
- * @since_tizen 2.3.1
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[in] callback The function to be invoked on each descriptor
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_foreach_cb()
- */
-int bt_gatt_characteristic_foreach_descriptors(bt_gatt_h characteristic,
-                                       bt_gatt_foreach_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the characteristic's GATT handle which the specified descriptor belongs to.
- * @since_tizen 2.3.1
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
- *
- * @param[in] descriptor The descriptor's GATT handle
- * @param[out] characteristic The characteristic's GATT handle which @a descriptor belongs to
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_descriptor_get_characteristic(bt_gatt_h descriptor, bt_gatt_h *characteristic);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Creates the GATT client handle.
- * @since_tizen 2.3.1
- *
- * @remark The GATT client handle must be freed by bt_gatt_client_destroy() after use
- *
- * @param[in] remote_address The address of the remote device
- * @param[out] client The created GATT client's handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_ALREADY_DONE  Operation is already done
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_destroy()
- */
-int bt_gatt_client_create(const char *remote_address, bt_gatt_client_h *client);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Destroys the GATT client's handle.
- * @since_tizen 2.3.1
- *
- * @remark All related service, characteristic and descriptor's GATT handles are freed also
- *
- * @param[in] client The GATT client's handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_create()
- */
-int bt_gatt_client_destroy(bt_gatt_client_h client);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the address of remote device.
- * @since_tizen 2.3.1
- *
- * @param[in] client The created GATT client's handle
- * @param[out] remote_address The address of the remote device which is associated with @a client
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_create()
- */
-int bt_gatt_client_get_remote_address(bt_gatt_client_h client,
-                                       char **remote_address);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Reads the value of a characteristic or descriptor from the remote device asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] gatt_handle The GATT handle of a characteristic or descriptor
- * @param[in] callback When a read request is completed, this callback function will be called
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE      Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_create()
- * @see bt_gatt_client_request_completed_cb()
- */
-int bt_gatt_client_read_value(bt_gatt_h gatt_handle,
-               bt_gatt_client_request_completed_cb callback, void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Writes the value of a characteristic or descriptor to the remote device asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] gatt_handle The GATT handle of a characteristic or descriptor
- * @param[in] callback When a write request is completed, this callback function will be called
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE      Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_create()
- * @see bt_gatt_characteristic_set_write_type()
- * @see bt_gatt_set_value()
- * @see bt_gatt_set_int_value()
- * @see bt_gatt_set_float_value()
- * @see bt_gatt_client_request_completed_cb()
- */
-int bt_gatt_client_write_value(bt_gatt_h gatt_handle,
-               bt_gatt_client_request_completed_cb callback, void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Registers a callback function to be invoked when the characteristic value is changed on the remote device.
- * @since_tizen 2.3.1
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[in] callback The callback to be invoked when the value is changed and it is informed
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE      Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_characteristic_value_changed_cb()
- * @see bt_gatt_client_unset_characteristic_value_change()
- */
-int bt_gatt_client_set_characteristic_value_changed_cb(bt_gatt_h characteristic,
-               bt_gatt_client_characteristic_value_changed_cb callback,
-               void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Unregisters a callback function to be invoked when the characteristic value is changed on the remote device.
- * @since_tizen 2.3.1
- *
- * @param[in] characteristic The characteristic's GATT handle, whose value change will not be informed
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE      Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_set_characteristic_value_changed_cb()
- */
-int bt_gatt_client_unset_characteristic_value_changed_cb(bt_gatt_h characteristic);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets a service's GATT handle which has specific UUID.
- * @since_tizen 2.3.1
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
- * If there are multiple services which have same UUID, only the first matched one will be returned.
- *
- * @param[in] client The GATT client's handle
- * @param[in] uuid The service's GATT handle which has this UUID will be returned if it exists
- * @param[out] service The service's GATT handle which has @a uuid if it exists
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_client_get_service(bt_gatt_client_h client, const char *uuid,
-                               bt_gatt_h *service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Invokes @a callback function on each service that belongs to the specified GATT client.
- * @since_tizen 2.3.1
- *
- * @param[in] client The GATT client's handle
- * @param[in] callback The function to be invoked on each service
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_foreach_cb()
- */
-int bt_gatt_client_foreach_services(bt_gatt_client_h client,
-                                   bt_gatt_foreach_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Registers a callback function to be invoked when service is changed from a remote device(GATT server).
- * @since_tizen 3.0
- *
- * @param[in] client The GATT client's handle
- * @param[in] callback The callback to be invoked
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_unset_service_changed_cb()
- */
-int bt_gatt_client_set_service_changed_cb(bt_gatt_client_h client,
-               bt_gatt_client_service_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Unregisters a callback function
- * @since_tizen 3.0
- *
- * @param[in] client The GATT client's handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_set_service_changed_cb()
- */
-int bt_gatt_client_unset_service_changed_cb(bt_gatt_client_h client);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Connect to a specific LE based service on a remote bluetooth device address, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks A connection can be disconnected by bt_gatt_disconnect().
- *
- * @param[in] address The address of the remote Bluetooth device.
- * @param[in] auto_connect The flag of the auto connection.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @pre The remote device must support le connection.
- * @post This function invokes bt_gatt_connection_state_changed_cb().
- *
- * @see bt_initialize()
- * @see bt_gatt_disconnect()
- * @see bt_gatt_set_connection_state_changed_cb()
- * @see bt_gatt_unset_connection_state_changed_cb()
- * @see bt_gatt_connection_state_changed_cb()
- */
-int bt_gatt_connect(const char *address, bool auto_connect);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Disconnect to LE connection with the given remote Bluetooth device address, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] address The address of the remote Bluetooth device
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The connection must be established.
- * @post This function invokes bt_gatt_connection_state_changed_cb().
- *
- * @see bt_initialize()
- * @see bt_gatt_connect()
- * @see bt_gatt_set_connection_state_changed_cb()
- * @see bt_gatt_unset_connection_state_changed_cb()
- * @see bt_gatt_connection_state_changed_cb()
- */
-int bt_gatt_disconnect(const char *address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Registers a callback function that will be invoked when the connection state is changed.
- * @since_tizen 2.3
- *
- * @param[in] callback The callback function to register.
- * @param[in] user_data The user data to be passed  to the callback function.
- *
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_connect()
- * @see bt_gatt_disconnect()
- * @see bt_gatt_unset_connection_state_changed_cb()
- */
-int bt_gatt_set_connection_state_changed_cb(bt_gatt_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Unregisters a callback function that will be invoked when the connection state is changed.
- * @since_tizen 2.3
- *
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_connect()
- * @see bt_gatt_disconnect()
- * @see bt_gatt_connection_state_changed_cb()
- */
-int bt_gatt_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief Destroys the GATT handle of service.
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The handle of service
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_service_create()
- */
-int bt_gatt_service_destroy(bt_gatt_h gatt_handle);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief Destroys the GATT handle of characteristic.
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The handle of characteristic
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_characteristic_create()
- */
-int bt_gatt_characteristic_destroy(bt_gatt_h gatt_handle);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief Destroys the GATT handle of descriptor.
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The handle of descriptor
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_descriptor_create()
- */
-int bt_gatt_descriptor_destroy(bt_gatt_h gatt_handle);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Gets the permissions which a characteristic's GATT handle has.
- * @since_tizen 3.0
- *
- * @remarks The @a permissions can be one or more values of #bt_gatt_permission_e, combined with bitwise 'or'.
- *
- * @param[in] gatt_handle The handle of a characteristic
- * @param[out] permissions The permissions which a characteristic's GATT handle has
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_characteristic_create()
- * @see bt_gatt_permission_e
- */
-int bt_gatt_characteristic_get_permissions(bt_gatt_h gatt_handle, int *permissions);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Gets the permissions which a descriptor's GATT handle has.
- * @since_tizen 3.0
- *
- * @remarks The @a permissions can be one or more values of #bt_gatt_permission_e, combined with bitwise 'or'.
- *
- * @param[in] gatt_handle The handle of a descriptor
- * @param[out] permissions The permissions which a descriptor's GATT handle has
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_descriptor_create()
- * @see bt_gatt_permission_e
- */
-int bt_gatt_descriptor_get_permissions(bt_gatt_h gatt_handle, int *permissions);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Creates the GATT service.
- * @since_tizen 3.0
- *
- * @remarks The @a service should be destroyed by using bt_gatt_service_destroy()
- *
- * @param[in] uuid The UUID of the service
- * @param[in] type The type of the service
- * @param[out] service The GATT handle of the created service
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_service_destroy()
- */
-int bt_gatt_service_create(const char *uuid, bt_gatt_service_type_e type,
-                          bt_gatt_h *service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Adds a characteristic to a specified service.
- * @since_tizen 3.0
- *
- * @param[in] service The service's GATT handle
- * @param[in] characteristic The characteristic's GATT handle to be added
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_service_create()
- * @see bt_gatt_characteristic_create()
- */
-int bt_gatt_service_add_characteristic(bt_gatt_h service,
-                                       bt_gatt_h characteristic);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Adds a service to a specified service as included service.
- * @since_tizen 3.0
- *
- * @param[in] service The service's GATT handle
- * @param[in] included_service The service's GATT handle to be added as included service
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_service_create()
- */
-int bt_gatt_service_add_included_service(bt_gatt_h service,
-                                       bt_gatt_h included_service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Gets the GATT server handle to which the specified service belongs.
- * @since_tizen 3.0
- *
- * @remarks The returned Server handle must not be freed by application.
- *
- * @param[in] service The service's GATT handle
- * @param[out] server The GATT server handle to which @a service belongs
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_create()
- * @see bt_gatt_service_create()
- * @see bt_gatt_server_register_service()
- */
-int bt_gatt_service_get_server(bt_gatt_h service, bt_gatt_server_h *server);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Creates the GATT characteristic.
- * @since_tizen 3.0
- *
- * @remarks The @a permissions can be one or more values of #bt_gatt_permission_e, combined with bitwise 'or'.
- * @remarks The @a properties can be one or more values of #bt_gatt_property_e, combined with bitwise 'or'.
- * @remarks The @a characteristic should be destroyed by using bt_gatt_characteristic_destroy().
- *
- * @param[in] uuid The UUID of the characteristic
- * @param[in] permissions the permissions of the characteristic
- * @param[in] properties The properties of the characteristic
- * @param[in] value The value(byte stream) of the characteristic
- * @param[in] value_length The length of @a value
- * @param[out] characteristic The GATT handle of the created characteristic
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_characteristic_destroy()
- */
-int bt_gatt_characteristic_create(const char *uuid, int permissions,
-                               int properties, const char *value, int value_length,
-                               bt_gatt_h *characteristic);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Adds a descriptor to a specified characteristic.
- * @since_tizen 3.0
- *
- * @param[in] characteristic The GATT handle of the characteristic
- * @param[in] descriptor The descriptor's GATT handle to be added
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_characteristic_create()
- * @see bt_gatt_descriptor_create()
- */
-int bt_gatt_characteristic_add_descriptor(bt_gatt_h characteristic,
-                                       bt_gatt_h descriptor);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Creates the GATT characteristic descriptor.
- * @since_tizen 3.0
- *
- * @remarks The @a permissions can be one or more values of #bt_gatt_permission_e, combined with bitwise 'or'.
- * @remarks The @a descriptor should be destroyed by using bt_gatt_descriptor_destroy()
- *
- * @param[in] uuid The UUID of the descriptor
- * @param[in] permissions The permissions of the descriptor
- * @param[in] value The value(byte stream) associated with the descriptor
- * @param[in] value_length The length of @a value
- * @param[out] descriptor The GATT handle of the created characteristic descriptor
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_descriptor_destroy()
- */
-int bt_gatt_descriptor_create(const char *uuid, int permissions,
-                               const char *value, int value_length,
-                               bt_gatt_h *descriptor);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief Initializes the GATT Server.
- * @since_tizen 3.0
- *
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre        The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see        bt_gatt_server_deinitialize()
- */
-int bt_gatt_server_initialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief DeInitializes the GATT server.
- * @since_tizen 3.0
- *
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE      Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre        The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see        bt_gatt_server_initialize()
- */
-int bt_gatt_server_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Creates the GATT server's handle.
- * @since_tizen 3.0
- *
- * @param[out] server The GATT server's handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_destroy()
- */
-int bt_gatt_server_create(bt_gatt_server_h *server);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Destroys the GATT server's handle.
- * @since_tizen 3.0
- *
- * @remarks All registered services to GATT server are unregistered
- *
- * @param[in] server The GATT server's handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_create()
- */
-int bt_gatt_server_destroy(bt_gatt_server_h server);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Registers a callback function to be invoked when a read request for a specified characteristic or descriptor is issued from a remote device(GATT client).
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The GATT handle of a characteristic or descriptor
- * @param[in] callback The callback to be invoked
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_read_value_requested_cb()
- * @see bt_gatt_server_send_response()
- */
-int bt_gatt_server_set_read_value_requested_cb(bt_gatt_h gatt_handle,
-                               bt_gatt_server_read_value_requested_cb callback,
-                               void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Registers a callback function to be invoked when the remote device enables or disables the Notification/Indication for particular characteristics.
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The GATT handle of a characteristic
- * @param[in] callback The callback to be invoked
- * @param[in] user_data The user data to be passed to @a callback function
- * @return     0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
- *
- * @see bt_gatt_server_characteristic_notification_state_changed_cb()
- */
-int bt_gatt_server_set_characteristic_notification_state_change_cb(bt_gatt_h gatt_handle,
-                               bt_gatt_server_characteristic_notification_state_changed_cb callback,
-                               void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Registers a callback function to be invoked when a value of a characteristic or descriptor has been changed by a remote device(GATT client)'s request.
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The GATT handle of a characteristic or descriptor
- * @param[in] callback The callback to be invoked
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_write_value_requested_cb()
- */
-int bt_gatt_server_set_write_value_requested_cb(bt_gatt_h gatt_handle,
-                               bt_gatt_server_write_value_requested_cb callback,
-                               void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Registers a specified service to the specified GATT server that the local device is hosting.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] server The GATT server that local device is hosting
- * @param[in] service The service, which needs to be registered in @a server
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_ALREADY_DONE Operation is already done
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_create()
- * @see bt_gatt_service_create()
- * @see bt_gatt_server_start()
- * @see bt_gatt_server_unregister_service()
- */
-int bt_gatt_server_register_service(bt_gatt_server_h server, bt_gatt_h service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Unregisters a specified service from the specified GATT server that the local device is hosting.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] server The GATT server that local device is hosting
- * @param[in] service The service, which needs to be unregistered from @a server
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_SERVICE_NOT_FOUND  Service not found
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_register_service()
- */
-int bt_gatt_server_unregister_service(bt_gatt_server_h server, bt_gatt_h service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Unregisters all services from the specified GATT server that the local device is hosting.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] server The GATT server that local device is hosting
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_register_service()
- */
-int bt_gatt_server_unregister_all_services(bt_gatt_server_h server);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Registers the application along with the GATT services of the application it is hosting.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_ALREADY_DONE Operation is already done
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_initialize()
- * @see bt_gatt_server_create()
- * @see bt_gatt_service_create()
- * @see bt_gatt_server_unregister_service()
- */
-int bt_gatt_server_start(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Sends a response to the remote device as a result of a read/write request.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks Until this function is called, a read/write request is not finished.
- *
- * @param[in] request_id The identification of a read/write request
- * @param[in] request_type The request type for read/write
- * @param[in] offset The offset from where a value is read
- * @param[in] resp_status The application error if any occurred or BT_ERROR_NONE for successful.
- * @param[in] value The value to be sent. It will be sent from @a offset. If it is NULL, a requested GATT handle's value will be sent from @a offset.
- * @param[in] value_length Value Length
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_read_value_requested_cb()
- */
-int bt_gatt_server_send_response(int request_id, bt_gatt_att_request_type_e request_type,
-                       int offset, int resp_status, char *value, int value_length);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Notifies value change of the characteristic to the remote devices which enable a Client Characteristic Configuration Descriptor.
- * @since_tizen 3.0
- *
- * @param[in] characteristic The characteristic which has a changed value
- * @param[in] callback The function to be invoked on each remote device when a sending operation is done
- * @param[in] device_address Remote device address to send notify or indicate and if set to NULL then notify/indicate all is enabled.
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_notification_sent_cb()
- */
-int bt_gatt_server_notify_characteristic_changed_value(bt_gatt_h characteristic,
-                               bt_gatt_server_notification_sent_cb callback,
-                               const char *device_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Gets a service's GATT handle which has specific UUID.
- * @since_tizen 3.0
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated server is destroyed by bt_gatt_server_destroy().
- * If there are multiple services which have same UUID, only the first matched one will be returned.
- *
- * @param[in] server The GATT server's handle
- * @param[in] uuid The service's GATT handle which has this UUID will be returned if it exists
- * @param[out] service The service's GATT handle which has @a uuid if it exists
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_server_get_service(bt_gatt_server_h server, const char *uuid,
-                               bt_gatt_h *service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Invokes @a callback function on each service that belongs to the specified GATT server.
- * @since_tizen 3.0
- *
- * @param[in] server The GATT server's handle
- * @param[in] callback The function to be invoked on each service
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_foreach_cb()
- */
-int bt_gatt_server_foreach_services(bt_gatt_server_h server,
-               bt_gatt_foreach_cb callback, void *user_data);
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_NETWORK_BLUETOOTH_H__ */
diff --git a/include/tv/bluetooth_extension.h b/include/tv/bluetooth_extension.h
deleted file mode 100644 (file)
index 64c76c8..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __TIZEN_NETWORK_BLUETOOTH_EXTENSION_H__
-#define __TIZEN_NETWORK_BLUETOOTH_EXTENSION_H__
-
-#include "bluetooth_type.h"
-#include "bluetooth_type_extension.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/**
- * @file        bluetooth_extension.h
- */
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Opens a SCO(Synchronous Connection Oriented link) to connected remote device, asynchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_ALREADY_DONE  Operation is already done
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @post bt_ag_sco_state_changed_cb() will be invoked.
- * @see bt_ag_close_sco()
- * @see bt_ag_sco_state_changed_cb()
- * @see bt_audio_connect()
- */
-int bt_ag_open_sco(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Closes an opened SCO(Synchronous Connection Oriented link), asynchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The SCO must be opened with bt_ag_open_sco().
- * @post bt_ag_sco_state_changed_cb() will be invoked.
- * @see bt_ag_open_sco()
- * @see bt_ag_sco_state_changed_cb()
- */
-int bt_ag_close_sco(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Checks whether an opened SCO(Synchronous Connection Oriented link) exists or not.
- * @since_tizen 2.3
- * @param[out] opened The SCO status: (@c true = opened, @c  false = not opened)
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_ag_open_sco()
- * @see bt_ag_close_sco()
- */
-int bt_ag_is_sco_opened(bool *opened);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Registers a callback function that will be invoked when the SCO(Synchronous Connection Oriented link) state is changed.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_sco_state_changed_cb()
- * @see bt_ag_unset_sco_state_changed_cb()
- */
-int bt_ag_set_sco_state_changed_cb(bt_ag_sco_state_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Unregisters a callback function that will be invoked when the SCO(Synchronous Connection Oriented link) state is changed.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_sco_state_changed_cb()
- * @see bt_ag_set_sco_state_changed_cb()
- */
-int bt_ag_unset_sco_state_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Notifies the state of voice recognition.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @param[in] state  The state of voice recognition: (@c true = enabled, @c  false = disabled)
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @see bt_audio_connect()
- */
-int bt_ag_notify_voice_recognition_state(bool state);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Notifies the speaker gain to the remote device.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @details This function sends a signal to the remote device. This signal has the gain value.
- * @a gain is represented on a scale from 0 to 15. This value is absolute value relating to a particular volume level.
- * When the speaker gain of remote device is changed to the requested gain, bt_audio_speaker_gain_changed_cb() will be called.
- * @param[in] gain The gain of speaker (0 ~ 15)
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device is connected by bt_audio_connect() with #BT_AUDIO_PROFILE_TYPE_HSP_HFP service.
- * @see bt_ag_get_speaker_gain()
- * @see bt_ag_set_speaker_gain_changed_cb()
- * @see bt_ag_unset_speaker_gain_changed_cb()
- */
-int bt_ag_notify_speaker_gain(int gain);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Gets the current speaker gain of the remote device.
- * @since_tizen 2.3
- * @details This function gets the value of speaker gain of the remote device.
- * @a gain is represented on a scale from 0 to 15. This value is absolute value relating to a particular volume level.
- * @param[out] gain The gain of speaker (0 ~ 15)
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device is connected by bt_audio_connect() with #BT_AUDIO_PROFILE_TYPE_HSP_HFP service.
- * @see bt_ag_notify_speaker_gain()
- * @see bt_ag_set_speaker_gain_changed_cb()
- * @see bt_ag_unset_speaker_gain_changed_cb()
- */
-int bt_ag_get_speaker_gain(int *gain);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Registers a callback function that will be invoked when the speaker gain of the remote device is changed.
- * @since_tizen 2.3
- * @details This function let you know the change of the speaker gain of the remote device.
- * @a gain is represented on a scale from 0 to 15. This value is absolute value relating to a particular volume level.
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_unset_speaker_gain_changed_cb()
- */
-int bt_ag_set_speaker_gain_changed_cb(bt_ag_speaker_gain_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Unregisters a callback function that will be invoked when the speaker gain of the remote device is changed.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_set_speaker_gain_changed_cb()
- */
-int bt_ag_unset_speaker_gain_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Registers a callback function that will be invoked when the microphone gain of the remote device is changed.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_unset_microphone_gain_changed_cb()
- */
-int bt_ag_set_microphone_gain_changed_cb(bt_ag_microphone_gain_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Unregisters a callback function that will be invoked when the microphone gain of the remote device is changed.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_set_microphone_gain_changed_cb()
- */
-int bt_ag_unset_microphone_gain_changed_cb(void);
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_NETWORK_BLUETOOTH_EXTENSION_H__ */
-
diff --git a/include/tv/bluetooth_internal.h b/include/tv/bluetooth_internal.h
deleted file mode 100644 (file)
index bcea6f9..0000000
+++ /dev/null
@@ -1,3239 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __TIZEN_NETWORK_BLUETOOTH_INTERNAL_H__
-#define __TIZEN_NETWORK_BLUETOOTH_INTERNAL_H__
-
-#include <glib.h>
-#include "bluetooth_type.h"
-#include "bluetooth_type_internal.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/**
- * @file        bluetooth_internal.h
- */
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Enables the local Bluetooth adapter, asynchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @details This function enables Bluetooth protocol stack and hardware.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_ALREADY_DONE  Already enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre Bluetooth service must be initialized with bt_initialize().
- * @pre The state of local Bluetooth must be #BT_ADAPTER_DISABLED
- * @post This function invokes bt_adapter_state_changed_cb().
- *
- * @see bt_initialize()
- * @see bt_adapter_get_state()
- * @see bt_adapter_set_state_changed_cb()
- * @see bt_adapter_unset_state_changed_cb()
- * @see bt_adapter_state_changed_cb()
- *
- */
-int bt_adapter_enable(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Disables the local Bluetooth adapter, asynchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @details This function disables Bluetooth protocol stack and hardware.
- *
- * @remarks You should disable Bluetooth adapter, which is helpful for saving power.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED
- * @post This function invokes bt_adapter_state_changed_cb().
- *
- * @see bt_adapter_get_state()
- * @see bt_adapter_state_changed_cb()
- * @see bt_adapter_set_state_changed_cb()
- * @see bt_adapter_unset_state_changed_cb ()
- *
- */
-int bt_adapter_disable(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Recover the local Bluetooth adapter, asynchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @details This function does recovery logic, disables Bluetooth protocol stack and hardware, then enables after a few seconds.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED
- * @post This function invokes bt_adapter_state_changed_cb().
- *
- * @see bt_adapter_get_state()
- * @see bt_adapter_state_changed_cb()
- * @see bt_adapter_set_state_changed_cb()
- * @see bt_adapter_unset_state_changed_cb ()
- *
- */
-int bt_adapter_recover(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  A2DP source/sink role is switched using this API
- * @since_tizen 4.0
- * @param[in] Role for A2DP
- * @return @c 0 on success,
- *         otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED Not supported
- * @retval #BT_ERROR_OPERATION_FAILED Internal Error
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_initialize()
- * @see bt_audio_initialize()
- */
-int bt_audio_select_role(bt_audio_role_e role);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Reset the local Bluetooth adapter, synchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @details This function resets Bluetooth protocol and values.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_state_changed_cb() will be invoked if The state of local Bluetooth was #BT_ADAPTER_ENABLED.
- *
- * @see bt_initialize()
- * @see bt_adapter_get_state()
- * @see bt_adapter_set_state_changed_cb()
- * @see bt_adapter_unset_state_changed_cb()
- * @see bt_adapter_state_changed_cb()
- *
- */
-int bt_adapter_reset(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the version of local Bluetooth adapter.
- * @since_tizen 2.3
- * @remarks The @a local_version must be released with free() by you.
- *
- * @param[out] local_version The version of local Bluetooth adapter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_adapter_get_version(char **local_version);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the information regarding local Bluetooth adapter.
- * @since_tizen 2.3
- * @remarks The @a all parameters must be released with free() by you.
- *
- * @param[out] chipset Chipset name of local Bluetooth adapter
- * @param[out] firmware Firmware info. of local Bluetooth adapter
- * @param[out] stack_version Bluetooth stack version
- * @param[out] profiles The profile list of local Bluetooth adapter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_adapter_get_local_info(char **chipset, char **firmware, char **stack_version, char **profiles);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Sets the visibility mode.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE will change to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE
- * after the given @a duration goes.
- *
- * @param[in] discoverable_mode The Bluetooth visibility mode to set
- * @param[in] duration The duration until the visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE (in seconds).
- * @a duration is used only for #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE mode.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post bt_adapter_visibility_mode_changed_cb() will be invoked if this function returns #BT_ERROR_NONE.
- *
- * @see bt_adapter_get_visibility()
- * @see bt_adapter_visibility_mode_changed_cb()
- * @see bt_adapter_set_visibility_mode_changed_cb()
- * @see bt_adapter_unset_visibility_mode_changed_cb()
- */
-int bt_adapter_set_visibility(bt_adapter_visibility_mode_e discoverable_mode, int duration);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Registers a callback function that will be invoked when remote device requests authentication.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
- * @pre The Bluetooth service must be initialized by bt_initialize().
- * @param[in] callback  callback function to be set when a request is received.
- * @param[in] user_data data from application which will be provided in callback.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @see bt_initialize()
- * @see bt_adapter_set_authentication_req_cb()
- */
-int bt_adapter_set_authentication_req_cb(bt_adapter_authentication_req_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Unregisters a callback function that will be invoked when remote device requests authentication.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
- * @pre The Bluetooth service must be initialized by bt_initialize().
- * @see bt_initialize()
- * @see bt_adapter_set_authentication_req_cb()
- */
-int bt_adapter_unset_authentication_req_cb(void);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  API to reply with PIN or PASSKEY with authentication type - TRUE or FALSE.
- * @remarks  This function can be called by application when remote device requests PIN or PASSKEY from
- *           local adapter.
- * @param[in]  passkey  The passkey to be provided by application when remote devices requests for it.
- * @param[in]  authentication_reply This indicates whether application wants to accept or cancel the on-going pairing
- * @pre  This function can only be called when application receieves authentication event (BT_AUTH_PIN_REQUEST)
- *       from remote device.
- * @see  bt_adapter_set_authentication_req_cb()
- */
-int bt_adapter_passkey_reply(char *passkey, bool authentication_reply);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  API to reply to the PASSKEY confirmation for on-going pairing with remote device.
- * @remarks  This function can be called by application, when local adapter wants PASSKEY confirmation from user.
- * @param[in]  confirmation_reply This indicates whether application wants to accepts or cancels the on-going pairing
- *             confirmation_reply : TRUE will indicate that Application has confirmed the PASSKEY
- *             confirmation_reply : FALSE will indicate that Application has failed to confirm the PASSKEY. In this situation
- *             the pairing will be failed.
- * @pre  This function can only be called when application receives authentication event (BT_AUTH_PASSKEY_CONFIRM_REQUEST)
- *       from remote device.
- * @see  bt_adapter_set_authentication_req_cb()
- */
-int bt_adapter_passkey_confirmation_reply(bool confirmation_reply);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked when the connectable state changes.
- * @since_tizen 2.3
- *
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_connectable_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_connectable_changed_cb()
- * @see bt_adapter_unset_connectable_changed_cb()
- */
-int bt_adapter_set_connectable_changed_cb(bt_adapter_connectable_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Unregisters the callback function.
- * @since_tizen 2.3
- *
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The Bluetooth service must be initialized with bt_initialize().
- *
- * @see  bt_initialize()
- * @see  bt_adapter_set_connectable_changed_cb()
- */
-int bt_adapter_unset_connectable_changed_cb(void);
-
-/**
- * @internal
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Gets the connectable state of local Bluetooth adapter.
- * @since_tizen 2.3
- *
- * @remarks When connectable state is false, no device can connect to this device and visibility mode cannot be changed.
- *
- * @param[out] connectable The connectable state of local Bluetooth adapter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_set_connectable()
- */
-int bt_adapter_get_connectable(bool *connectable);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Sets the connectable state of local Bluetooth adapter.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks When connectable state is false, no device can connect to this device and visibility mode cannot be changed.
- *
- * @param[in] connectable The connectable state to set
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post bt_adapter_connectable_changed_cb() will be invoked if this function returns #BT_ERROR_NONE.
- *
- * @see bt_adapter_get_connectable()
- * @see bt_adapter_connectable_changed_cb()
- * @see bt_adapter_set_connectable_changed_cb()
- * @see bt_adapter_unset_connectable_changed_cb()
- */
-int bt_adapter_set_connectable(bool connectable);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Sets the manufacturer data of local Bluetooth adapter.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]   data   The manufacturer specific data of the Bluetooth device.
- * @param[in]   len    The length of @a data.Maximaum length is 240 bytes.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post bt_adapter_manufacturer_data_changed_cb() will be invoked
- * if this function returns #BT_ERROR_NONE.
- *
- * @see bt_adapter_manufacturer_data_changed_cb
- * @see bt_adapter_set_manufacturer_data_changed_cb()
- * @see bt_adapter_unset_manufacturer_data_changed_cb()
- */
-int bt_adapter_set_manufacturer_data(char *data, int len);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked
- * when the manufacturer data of Bluetooth adapter changes.
- * @since_tizen 2.3
- *
- * @param[in]   callback       The callback function to invoke
- * @param[in]   user_data      The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_adapter_manufacturer_data_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_unset_manufacturer_data_changed_cb()
- */
-int bt_adapter_set_manufacturer_data_changed_cb(
-               bt_adapter_manufacturer_data_changed_cb callback,
-               void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- *
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- * @see bt_adapter_set_manufacturer_data_changed_cb()
- */
-int bt_adapter_unset_manufacturer_data_changed_cb(void);
-
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Enables the local Bluetooth le adapter, asynchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @details This function enables Bluetooth protocol stack and hardware.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_ALREADY_DONE  Already enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre Bluetooth service must be initialized with bt_initialize().
- * @post This function invokes bt_adapter_le_state_changed_cb().
- *
- * @see bt_initialize()
- * @see bt_adapter_le_get_state()
- * @see bt_adapter_le_set_state_changed_cb()
- * @see bt_adapter_le_unset_state_changed_cb()
- * @see bt_adapter_le_state_changed_cb()
- *
- */
-int bt_adapter_le_enable(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Disables the local Bluetooth le adapter, asynchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @details This function disables Bluetooth le protocol stack and hardware.
- *
- * @remarks
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_LE_ENABLED
- * @post This function invokes bt_adapter_le_state_changed_cb().
- *
- * @see bt_adapter_le_get_state()
- * @see bt_adapter_le_state_changed_cb()
- * @see bt_adapter_le_set_state_changed_cb()
- * @see bt_adapter_le_unset_state_changed_cb ()
- *
- */
-int bt_adapter_le_disable(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the current state of local Bluetooth adapter.
- * @since_tizen 2.3
- *
- * @param[out] adapter_le_state The current adapter le state
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- */
-int bt_adapter_le_get_state(bt_adapter_le_state_e *adapter_le_state);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Registers a callback function to be invoked when the Bluetooth adapter le state changes.
- * @since_tizen 2.3
- *
- * @param[in] callback The callback function to invoke
- * @param[in] user_data        The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_le_state_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_le_state_changed_cb()
- * @see bt_adapter_le_unset_state_changed_cb()
- */
-int bt_adapter_le_set_state_changed_cb(bt_adapter_le_state_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- *
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- * @see bt_adapter_le_set_state_changed_cb()
- */
-int bt_adapter_le_unset_state_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief add address to whitelist for accepting scanning request.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks If the adress is in the whitelist then other LE devices are able to
- * search this device. Before calling this API, make sure that the adapter is
- * enabled. There is no callback event for this API.
-
- * @param[in] address The other device's address
- * @param[in] address_type The other device's address type
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_le_start_advertising_new()
- * @see bt_adapter_le_stop_advertising()
- */
-int bt_adapter_le_add_white_list(const char *address, bt_device_address_type_e address_type);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief remove address from the whitelist for not accepting scanning request.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks If the adress is in the whitelist then other LE devices are able to
- * search this device. Before calling this API, make sure that the adapter is
- * enabled. There is no callback event for this API.
- *
- * @param[in] address The other device's address
- * @param[in] address_type The other device's address type
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_le_start_advertising_new()
- * @see bt_adapter_le_stop_advertising()
- */
-int bt_adapter_le_remove_white_list(const char *address, bt_device_address_type_e address_type);
-
-/**
- * @internal
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief clear address from the whitelist for not accepting scanning request.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks If the adress is in the whitelist then other LE devices are able to
- * search this device. Before calling this API, make sure that the adapter is
- * enabled. There is no callback event for this API.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_le_start_advertising_new()
- * @see bt_adapter_le_stop_advertising()
- */
-int bt_adapter_le_clear_white_list(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Sets the Privacy feature state of local Bluetooth adapter.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] enable_privacy The privacy feature to set/unset.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The state of local Bluetooth must be #BT_ADAPTER_LE_ENABLED.
- *
- */
-int bt_adapter_le_enable_privacy(bool enable_privacy);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Creates scan filter to find only LE advertisement which has specific data.
- * @since_tizen 2.4
- *
- * @param[out] scan_filter The handle of scan filter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_destroy_scan_filter()
- */
-int bt_adapter_le_create_scan_filter(bt_scan_filter_h *scan_filter);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Destroys scan filter.
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_create_scan_filter()
- */
-int bt_adapter_le_destroy_scan_filter(bt_scan_filter_h scan_filter);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the device address to filter advertisements
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] address The device address to filter advertisements
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_device_address(bt_scan_filter_h scan_filter, const char *address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the device name to filter advertisements
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] name The device name to filter advertisements
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_device_name(bt_scan_filter_h scan_filter, const char *name);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the service UUID to filter advertisements
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] uuid The service UUID to filter advertisements
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_service_uuid(bt_scan_filter_h scan_filter, const char *uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the service uuid and the mask to filter advertisements by partial data
- * @since_tizen 2.4
- *
- * @remarks the length of mask msut be the same with the length of service uuid.
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] uuid The service UUID to filter advertisements
- * @param[in] mask The mask to filter advertisements
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_service_uuid_with_mask(bt_scan_filter_h scan_filter,
-                       const char *uuid, const char *mask);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the service solicitation UUID to filter advertisements
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] uuid The service solicitation UUID to filter advertisements
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_service_solicitation_uuid(bt_scan_filter_h scan_filter, const char *uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the service solicitation uuid and the mask to filter advertisements by partial data
- * @since_tizen 2.4
- *
- * @remarks the length of mask msut be the same with the length of service solicitation uuid.
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] uuid The service solicitation UUID to filter advertisements
- * @param[in] mask The mask to filter advertisements
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_service_solicitation_uuid_with_mask(bt_scan_filter_h scan_filter,
-                       const char *uuid, const char *mask);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the service data to filter advertisements
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] uuid The service UUID to filter advertisements
- * @param[in] data The service data to filter advertisements
- * @param[in] data_len The length of the service data
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_service_data(bt_scan_filter_h scan_filter,
-                       const char *uuid, const char *data, unsigned int data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the service data and the mask to filter advertisements by partial data
- * @since_tizen 2.4
- *
- * @remarks the length of mask msut be the same with the length of service data.
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] uuid The service UUID to filter advertisements
- * @param[in] data The service data to filter advertisements
- * @param[in] data_len The length of the service data
- * @param[in] mask The mask to filter advertisements
- * @param[in] mask_len The length of the mask to be set.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_service_data_with_mask(bt_scan_filter_h scan_filter,
-                       const char *uuid, const char *data, unsigned int data_len, const char *mask, unsigned int mask_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the manufacturer data to filter advertisements
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] manufacturer_id The manufacturer ID (0x0000 ~ 0xFFFF)
- * @param[in] data The manufacturer data (byte array)
- * @param[in] data_len The length of manufacturer data
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_manufacturer_data(bt_scan_filter_h scan_filter,
-                       int manufacturer_id, const char *data, unsigned int data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the manufacturer data and the mask to filter advertisements by partial data
- * @since_tizen 2.4
- *
- * @remarks the length of mask msut be the same with the length of service uuid.
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] manufacturer_id The manufacturer ID (0x0000 ~ 0xFFFF)
- * @param[in] data The manufacturer data (byte array)
- * @param[in] data_len The length of manufacturer data
- * @param[in] mask The mask to filter advertisements
- * @param[in] mask_len The length of the mask to be set.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_manufacturer_data_with_mask(bt_scan_filter_h scan_filter,
-                       int manufacturer_id, const char *data, unsigned int data_len, const char *mask, unsigned int mask_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Registers the scan filter to use for scanning
- * @since_tizen 2.4
- *
- * @remarks Several scan filters can be registered. And the specific advertisements, satisfy the one of scan filters, will be found.
- *
- * @param[in] scan_filter The handle of scan filter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Scan is in progress
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_register_scan_filter(bt_scan_filter_h scan_filter);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Unregisters the scan filter to be registered
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Scan is in progress
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_unregister_scan_filter(bt_scan_filter_h scan_filter);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Unregisters all scan filters to be registered
- * @since_tizen 2.4
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Scan is in progress
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_unregister_all_scan_filters(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Set advertising filter policy to use white list
- * @since_tizen 2.4
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] filter_policy The filter policy of advertising
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_start_advertising_new()
- */
-int bt_adapter_le_set_advertising_filter_policy(bt_advertiser_h advertiser, bt_adapter_le_advertising_filter_policy_e filter_policy);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Gets a connection state
- * @since_tizen 2.4
- *
- * @param[in] remote_address The address of the remote Bluetooth device
- * @param[in] link_type The link type to get a connection state
- * @param[out] connected The connection state
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED   Operation failed
- */
-int bt_device_get_connection_state(const char *remote_address, bt_device_connection_link_type_e link_type, bool *connected);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Creates a bond with a remote Bluetooth device, asynchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks A bond can be destroyed by bt_device_destroy_bond().\n
- * The bonding request can be cancelled by bt_device_cancel_bonding().
- *
- * @param[in] remote_address The address of the remote Bluetooth device with which the bond should be created
- * @param[in] conn_type The connection type(LE or BREDR) to create bond with remote device
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_RESOURCE_BUSY     Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The remote device must be discoverable with bt_adapter_start_device_discovery().
- * @post This function invokes bt_device_bond_created_cb().
- *
- * @see bt_adapter_start_device_discovery()
- * @see bt_device_create_bond()
- * @see bt_device_bond_created_cb()
- * @see bt_device_cancel_bonding()
- * @see bt_device_destroy_bond()
- * @see bt_device_set_bond_created_cb()
- * @see bt_device_unset_bond_created_cb()
- */
-int bt_device_create_bond_by_type(const char *remote_address,
-                                 bt_device_connection_link_type_e conn_type);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Cancels service search process.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The service search must be in progress by bt_device_start_service_search().
- *
- * @see bt_device_start_service_search()
- * @see bt_device_service_searched_cb()
- * @see bt_device_set_service_searched_cb()
- * @see bt_device_unset_service_searched_cb()
- */
-int bt_device_cancel_service_search(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Sets a profile restricted connection for a device
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_device_set_profile_restricted(const char *device_address, bt_restricted_profile_t profile, bool restricted);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Gets a profile restricted connection for a device
- * @since_tizen 3.0
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_device_get_profile_restricted(const char *device_address, bt_restricted_profile_t profile, int *restricted);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Request to change ATT MTU value
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] remote_address The address of the remote Bluetooth device
- * @param[in] mtu New MTU value to be changed
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED   Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_device_request_att_mtu(const char *remote_address, unsigned int mtu);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Gets the ATT MTU value set for a connection
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] remote_address The address of the remote Bluetooth device
- * @param[ot] mtu MTU value set for a connection
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
- */
-int bt_device_get_att_mtu(const char *remote_address, unsigned int *mtu);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Registers a callback function to be invoked when the ATT MTU is changed.
- * @since_tizen 3.0
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_device_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_device_unset_att_mtu_changed_cb()
- */
-int bt_device_set_att_mtu_changed_cb(bt_device_att_mtu_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief      Unregisters the callback function to be invoked when the ATT MTU is changed.
- * @since_tizen 3.0
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_device_set_att_mtu_changed_cb()
- */
-int bt_device_unset_att_mtu_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Registers a rfcomm server socket with a specific UUID. Activation by dbus is possible when the profile is connected.
- * @since_tizen 2.4
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks A socket can be destroyed by bt_socket_destroy_rfcomm_ex().
- * Application should call this API to receive a connection event when launched again by dbus.
- *
- * @param[in] uuid The UUID of service to provide
- * @param[in] bus_name bus_name of the application which is provided in service file.
- * @param[in] object_path dbus of the application
- * @return 0 on success, otherwise a negative error value.
- *
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Already registered
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_socket_listen_and_accept_rfcomm_ex()
- * @see bt_socket_destroy_rfcomm_ex()
- */
-int bt_socket_create_rfcomm_ex(const char *uuid, const char *bus_name, const char *object_path);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Removes the rfcomm server socket which was created using bt_socket_create_rfcomm_ex().
- * @since_tizen 2.4
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @remarks If callback function bt_socket_connection_state_changed_cb() is set and the remote Bluetooth device is connected,
- * then bt_socket_connection_state_changed_cb() will be called when this function is finished successfully.
- *
- * @param[in] uuid The UUID (which was created using bt_socket_create_rfcomm()) to destroy
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The socket must be created with bt_socket_create_rfcomm_ex().
- * @post If callback function bt_socket_connection_state_changed_cb() is set and the remote Bluetooth device is connected,
- * then bt_socket_connection_state_changed_cb() will be called.
- * @see bt_socket_create_rfcomm_ex()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_destroy_rfcomm_ex(const char *uuid);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Starts listening on passed rfcomm socket and accepts connection requests. Activation by dbus is possible when the profile is connected.
- * @since_tizen 2.4
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @details Pop-up is shown automatically when a RFCOMM connection is requested.
- * bt_socket_connection_state_changed_cb() will be called with
- * #BT_SOCKET_CONNECTED if you click "yes" and connection is finished successfully.
- * @param[in] uuid The UUID of service to provide
- * @param[in] max_pending_connections The maximum number of pending connections
- * @param[in] bus_name bus_name of the application which is provided in service file.
- * @param[in] object_path dbus of the application
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The socket must be created with bt_socket_create_rfcomm_ex().
- * @post If callback function bt_socket_connection_state_changed_cb() is set,
- * then bt_socket_connection_state_changed_cb() will be called when the remote Bluetooth device is connected.
- * @see bt_socket_create_rfcomm_ex()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_listen_and_accept_rfcomm_ex(const char *uuid, int max_pending_connections, const char* bus_name, const char *object_path);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Starts listening on passed rfcomm socket.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @details bt_socket_connection_requested_cb() will be called when a RFCOMM connection is requested.
- *
- * @param[in] socket_fd  The file descriptor socket on which start to listen
- * @param[in] max_pending_connections  The number of pending connections
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The socket must be created with bt_socket_create_rfcomm().
- * @post This function invokes bt_socket_connection_state_changed_cb().
- *
- * @see bt_socket_create_rfcomm()
- * @see bt_socket_set_connection_requested_cb()
- * @see bt_socket_unset_connection_requested_cb()
- * @see bt_socket_connection_requested_cb()
- */
-int bt_socket_listen(int socket_fd, int max_pending_connections);
-
-/**
- * @internal
- * @ingroup  CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Accepts a connection request.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @param[in] requested_socket_fd  The file descriptor of socket on which a connection is requested
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The connection is requested by bt_socket_connection_requested_cb().
- * @see bt_socket_create_rfcomm()
- * @see bt_socket_connection_requested_cb()
- * @see bt_socket_listen()
- * @see bt_socket_reject()
-*/
-int bt_socket_accept(int requested_socket_fd);
-
-/**
- * @internal
- * @ingroup  CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Rejects a connection request.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @param[in] socket_fd  The file descriptor of socket on which a connection is requested
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The connection is requested by bt_socket_connection_requested_cb().
- * @see bt_socket_create_rfcomm()
- * @see bt_socket_connection_requested_cb()
- * @see bt_socket_listen()
- * @see bt_socket_accept()
- */
-int bt_socket_reject(int socket_fd);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Initializes the Bluetooth OPP server requested by bt_opp_server_push_requested_cb().
- * @since_tizen 2.3
- * @details The popup appears when an OPP connection is requested from a remote device.
- * If you accept the request, then connection will be established and bt_opp_server_push_requested_cb() will be called.
- * At that time, you can call either bt_opp_server_accept() or bt_opp_server_reject().
- * @remarks This function must be called to start Bluetooth OPP server. You must free all resources of the Bluetooth service
- * by calling bt_opp_server_deinitialize() if Bluetooth OPP service is no longer needed.
- * @param[in] destination  The destination path
- * @param[in] push_requested_cb  The callback called when a push is requested
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_server_push_requested_cb()
- * @see  bt_opp_server_deinitialize()
- * @see  bt_opp_server_accept()
- * @see  bt_opp_server_reject()
- */
-int bt_opp_server_initialize(const char *destination, bt_opp_server_push_requested_cb push_requested_cb, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_MODULE
- * @brief Gets the percentage progress for ongoing transfers.
- * @since_tizen 3.0
- * @exception   None
- * @param[in] transfer_type    Transfer Type: (@c BLUETOOTH_TRANSFER_INBOUND = receiving , @c  BLUETOOTH_TRANSFER_OUTBOUND = sending)
- * @param[in] transfer_id      Transfer ID
- * @param[out] progress                Percentage Progress
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- */
-int bt_opp_get_transfer_progress(bt_opp_transfer_type_t transfer_type,
-               int transfer_id, unsigned char *progress);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Notifies the call event to the remote bluetooth device.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @remarks Before notifying #BT_AG_CALL_EVENT_ANSWERED or #BT_AG_CALL_EVENT_DIALING, you should open SCO(Synchronous Connection Oriented link)
- * if Bluetooth Hands-Free need SCO connection.
- * @param[in] event  The call event
- * @param[in] call_id  The call ID
- * @param[in] phone_number  The phone number. You must set this value in case of #BT_AG_CALL_EVENT_DIALING and #BT_AG_CALL_EVENT_INCOMING.
- * In other cases, this value can be NULL.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @see bt_audio_connect()
- */
-int bt_ag_notify_call_event(bt_ag_call_event_e event, unsigned int call_id, const char *phone_number);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Notifies the call list to the remote bluetooth device.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @param[in] list  The call list
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @see bt_audio_connect()
- */
-int bt_ag_notify_call_list(bt_call_list_h list);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Notifies the state of voice recognition.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @param[in] state  The state of voice recognition: (@c true = enabled, @c  false = disabled)
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @see bt_audio_connect()
- */
-int bt_ag_notify_voice_recognition_state(bool state);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Registers a callback function that will be invoked when a call handling event happened from Hands-Free.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_call_handling_event_cb()
- * @see bt_ag_unset_call_handling_event_cb()
- */
-int bt_ag_set_call_handling_event_cb(bt_ag_call_handling_event_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Unregisters a callback function that will be invoked when a call handling event happened from Hands-Free.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_call_handling_event_cb()
- * @see bt_ag_set_call_handling_event_cb()
- */
-int bt_ag_unset_call_handling_event_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Registers a callback function that will be invoked when a multi call handling event happened from Hands-Free.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_multi_call_handling_event_cb()
- * @see bt_ag_unset_multi_call_handling_event_cb()
- */
-int bt_ag_set_multi_call_handling_event_cb(bt_ag_multi_call_handling_event_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Unregisters a callback function that will be invoked when a multi call handling event happened from Hands-Free.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_multi_call_handling_event_cb()
- * @see bt_ag_set_multi_call_handling_event_cb()
- */
-int bt_ag_unset_multi_call_handling_event_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Registers a callback function that will be invoked when a DTMF(Dual Tone Multi Frequency) is transmitted from Hands-Free.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_dtmf_transmitted_cb()
- * @see bt_ag_unset_dtmf_transmitted_cb()
- */
-int bt_ag_set_dtmf_transmitted_cb(bt_ag_dtmf_transmitted_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Unregisters a callback function that will be invoked when a DTMF(Dual Tone Multi Frequency) is transmitted from Hands-Free.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_dtmf_transmitted_cb()
- * @see bt_ag_set_dtmf_transmitted_cb()
- */
-int bt_ag_unset_dtmf_transmitted_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Checks whether the remoted device enables NREC(Noise Reduction and Echo Canceling) or not.
- * @since_tizen 2.3
- * @param[out] enabled The NREC status: (@c true = enabled, @c  false = not enabled)
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device is connected by bt_audio_connect() with #BT_AUDIO_PROFILE_TYPE_HSP_HFP service.
- * @see bt_audio_connect()
- */
-int bt_ag_is_nrec_enabled(bool *enabled);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_CALL_MODULE
- * @brief Creates a handle of call list.
- * @since_tizen 2.3
- * @param[out] list  The handle of call list
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_call_list_destroy()
- */
-int bt_call_list_create(bt_call_list_h *list);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_CALL_MODULE
- * @brief Destroys the handle of call list.
- * @since_tizen 2.3
- * @param[in] list  The handle of call list
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_call_list_create()
- */
-int bt_call_list_destroy(bt_call_list_h list);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_CALL_MODULE
- * @brief Resets the handle of call list.
- * @since_tizen 2.3
- * @param[in] list  The handle of call list
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_call_list_create()
- */
-int bt_call_list_reset(bt_call_list_h list);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_CALL_MODULE
- * @brief Adds a call to the handle of call list.
- * @since_tizen 2.3
- * @param[in] list  The handle of call list
- * @param[in] call_id  The call ID
- * @param[in] state  The state of audio gate call
- * @param[in] phone_number The phone number. You must set this value in case of #BT_AG_CALL_EVENT_DIALING and      #BT_AG_CALL_EVENT_INCOMING.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_call_list_create()
- */
-int bt_call_list_add(bt_call_list_h list, unsigned int call_id, bt_ag_call_state_e state, const char *phone_number);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Checks whether the remoted device is wbs (Wide Band Speech) mode or not.
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
- * @param[out] wbs_mode The wbs status: (@c true = wide band speech, @c  false = narrow band speech)
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The remote device is connected by bt_audio_connect() with #BT_AUDIO_PROFILE_TYPE_HSP_HFP service.
- * @see bt_audio_connect()
- */
-int bt_ag_is_wbs_mode(bool *wbs_mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Gets the HF(Hands-Free) profile connected status for AG role.
- * @since_tizen 2.4
- * @param[out] connected the connected status: (@c true = connected , @c  false = not connected )
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_ag_is_connected(bool *connected);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_AUDIO_A2DP_MODULE
- * @brief  Sets copy protection. streaming application that needs to have the copy protection for the streaming data, shall invoke this API.
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @param[in] status - TRUE/FALSE
- * @return  0 on success, otherwise negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_OPERATION_FAILED  on failure
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_a2dp_set_content_protection(bool status);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Gets the specification name from the UUID
- * @since_tizen 2.4
- *
- * @remarks @a name must be released with free() by you.
- *
- * @param[in] uuid The UUID
- * @param[out] name The specification name which defined from www.bluetooth.org
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_get_uuid()
- */
-int bt_gatt_get_uuid_specification_name(const char *uuid, char **name);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Updates the permissions which a characteristic or descriptor's GATT handle has.
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The handle of a characteristic or descriptor
- * @param[in] permissions The permissions to be updated
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_characteristic_create()
- * @see bt_gatt_descriptor_create()
- * @see bt_gatt_permission_e
- */
-int bt_gatt_set_permissions(bt_gatt_h gatt_handle, int permissions);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Updates the properties which a characteristic's GATT handle has.
- * @since_tizen 3.0
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[in] properties The properties to be updated
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_property_e
- */
-int bt_gatt_characteristic_set_properties(bt_gatt_h characteristic, int properties);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Destroys the GATT handle
- * @since_tizen 2.4
- *
- * @param[in] gatt_handle The handle of service, characteristic or descriptor
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_service_create()
- * @see bt_gatt_characteristic_create()
- * @see bt_gatt_descriptor_create()
- */
-int bt_gatt_destroy(bt_gatt_h gatt_handle);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Registers a callback function that will be invoked when the A2DP Source connection state is changed.
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_audio_connection_state_changed_cb()
- */
-int bt_a2dp_source_audio_set_connection_state_changed_cb(bt_audio_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Unregisters a callback function that will be invoked when the A2DP Source connection state is changed.
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_audio_connection_state_changed_cb()
- * @see bt_audio_set_connection_state_changed_cb()
- */
-int bt_a2dp_source_audio_unset_connection_state_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief Activates the NAP(Network Access Point).
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_ALREADY_DONE  Operation is already done
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED
- * @see bt_nap_deactivate()
- */
-int bt_nap_activate(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief Deactivates the NAP(Network Access Point).
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_ALREADY_DONE  Operation is already done
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth NAP service must be activated with bt_nap_activate().
- * @see bt_nap_activate()
- */
-int bt_nap_deactivate(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief Disconnects the all PANUs(Personal Area Networking User) which are connected to you.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth NAP service must be activated with bt_nap_activate().
- * @see bt_nap_activate()
- */
-int bt_nap_disconnect_all(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief Disconnects the specified PANU(Personal Area Networking User) which is connected to you.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth NAP service must be activated with bt_nap_activate().
- * @see bt_nap_activate()
- */
-int bt_nap_disconnect(const char *remote_address);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief  Registers a callback function that will be invoked when the connection state changes.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_nap_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_nap_connection_state_changed_cb()
- * @see bt_nap_unset_connection_state_changed_cb()
- */
-int bt_nap_set_connection_state_changed_cb(bt_nap_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the connection state changes.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_nap_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_nap_connection_state_changed_cb()
- * @see bt_nap_set_connection_state_changed_cb()
- */
-int bt_nap_unset_connection_state_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
- * @brief  Registers a callback function that will be invoked when the connection state changes.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_nap_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_panu_connection_state_changed_cb()
- * @see bt_panu_unset_connection_state_changed_cb()
- */
-int bt_panu_set_connection_state_changed_cb(bt_panu_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
- * @brief  Unregisters a callback function that will be invoked when the connection state changes.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_nap_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_panu_connection_state_changed_cb()
- * @see bt_panu_set_connection_state_changed_cb()
- */
-int bt_panu_unset_connection_state_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
- * @brief Connects the remote device with the PAN(Personal Area Networking) service, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @param[in] type  The type of PAN service
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The local device must be bonded with the remote device by bt_device_create_bond().
- * @post bt_panu_connection_state_changed_cb() will be invoked.
- * @see bt_panu_disconnect()
- * @see bt_panu_connection_state_changed_cb()
- */
-int bt_panu_connect(const char *remote_address, bt_panu_service_type_e type);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
- * @brief Disconnects the remote device with the PAN(Personal Area Networking) service, asynchronously.
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected by bt_panu_connect().
- * @post bt_panu_connection_state_changed_cb() will be invoked.
- * @see bt_panu_connect()
- * @see bt_panu_connection_state_changed_cb()
- */
-int bt_panu_disconnect(const char *remote_address);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief   update LE connection.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized by bt_initialize().
- * @pre The remote device must be connected with bt_gatt_connect().
- */
-int bt_device_le_conn_update(const char *device_address,
-                            const bt_le_conn_update_s *parameters);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Gets the is_alias_set property of a bonded device.
- * @since_tizen 3.0
- *
- * @param [in] remote_address The address of remote device
- * @param [out] is_alias_set The is_alias_set property of device
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
-  * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_adapter_get_bonded_device_is_alias_set(const char *remote_address, gboolean *is_alias_set);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Registers the method for HID Device role
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks This function must be called to register HID UUID
- * then only remote device could be able identify this one as HID device
- *
- * @param[in] callback  The callback called when the connection state is changed
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Already activated
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_hid_device_deactivate()
- */
-int bt_hid_device_activate(bt_hid_device_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Unregisters the method for HID Device role
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks This function must be called to deregister HID UUID
- *
- * @param[in] socket_fd on which uuid need to be deregistered.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Not activated
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_hid_device_activate()
- */
-int bt_hid_device_deactivate(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Initiates HID device Connection with device role, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks This function must be called to Initiate Hid device role connection
- *
- * @param[in] remote_address device address of remote device.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Not activated
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_ALREADY_DONE   Already connected
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @pre The local device must be bonded with the remote device by bt_device_create_bond().
- * @see bt_initialize()
- * @see bt_hid_device_activate()
- */
-int bt_hid_device_connect(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Disconnects the connection with HID Host device, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] remote_address device address of remote device.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_disconnect(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Sends the mouse event data.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] remote_address device address of remote device.
- * @param[in] mouse_data mouse data that need to be passed to remote device
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- *
- * @pre The HID connection must be established.
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_send_mouse_event(const char *remote_address,
-                       const bt_hid_mouse_data_s *mouse_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Sends the keyboard event data.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] remote_address device address of remote device.
- * @param[in] key_data  key data the need to be passed to remote device
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- *
- * @pre The HID connection must be established.
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_send_key_event(const char *remote_address,
-                       const bt_hid_key_data_s *key_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Sets the callback when device gets some data from HID Host.
- * @since_tizen 2.3.1
- *
- * @param[in] callback  callback function to be set when data is received.
- * @param[in] user_data data from application which will be provided in callback.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- *
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_set_data_received_cb(bt_hid_device_data_received_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Unsets the callback when device gets some data from HID Host.
- * @since_tizen 2.3.1
- *
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- *
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_unset_data_received_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Responds to the reports from HID Host.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] remote_address device address of remote device.
- * @param[in] header_type Header type to be there in response
- * @param[in] param_type Parameter type to be there in response.
- * @param[in] data Data to be present in data payload of response.
- * @param[in] data_len The length of the response data
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- *
- * @pre The HID connection must be established.
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_reply_to_report(const char *remote_address,
-               bt_hid_header_type_e header_type, bt_hid_param_type_e param_type,
-               const char *data, unsigned int data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Sends the custom event data.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] remote_address device address of remote device.
- * @param[in] report_id  reoport id need to be passed to remote device
- * @param[in] data  The data need to be passed to remote device
- * @param[in] data_len  The length of the data
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- *
- * @pre The HID connection must be established.
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_send_custom_event(const char *remote_address,
-               unsigned char report_id, const char *data, unsigned int data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets Restriction for BT mode(BT allowed or not).
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - BT Allow value.
- *             BT_DPM_ERROR     = -1,   < bluetooth allowance error
- *             BT_DPM_BT_ALLOWED,               < bluetooth allowance allowed
- *             BT_DPM_HANDSFREE_ONLY,  < bluetooth allowance handsfree only
- *             BT_DPM_BT_RESTRICTED,  < bluetooth allowance restricted
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre none.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_allow_bluetooth_mode(bt_dpm_allow_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads Restriction for BT mode(BT allowed or not).
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] none
- * @param[out] value - BT Allow value.
- *             BT_DPM_ERROR     = -1,   < bluetooth allowance error
- *             BT_DPM_BT_ALLOWED,               < bluetooth allowance allowed
- *             BT_DPM_HANDSFREE_ONLY,  < bluetooth allowance handsfree only
- *             BT_DPM_BT_RESTRICTED,  < bluetooth allowance restricted
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre none.
- * @see bt_dpm_set_allow_bluetooth_mode()
- */
-int bt_dpm_get_allow_bluetooth_mode(bt_dpm_allow_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for device.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_activate_device_restriction(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for device.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_is_device_restriction_active(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for uuid.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_activate_uuid_restriction(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for uuid.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_is_uuid_restriction_active(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Adds the device to blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  device_address - Device address
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_add_devices_to_blacklist(const char *device_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Adds the device to whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  device_address - Device address
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_add_devices_to_whitelist(const char *device_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Adds the uuids to blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  service_uuids - profile or custom service uuids
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_add_uuids_to_blacklist(const char *service_uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Adds the uuid to whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  service_uuids - profile or custom service uuids
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_add_uuids_to_whitelist(const char *service_uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Clears the device from blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  none
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_clear_devices_from_blacklist(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Clears the device from whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  none
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_clear_devices_from_whitelist(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Clears the uuids from blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  none
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_clear_uuids_from_blacklist(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Clears the uuids from whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  none
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_clear_uuids_from_whitelist(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the devices from blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] device_list - list of devices
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_devices_from_blacklist(bt_dpm_device_list_s **device_list);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the devices from whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] device_list - list of devices
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_devices_from_whitelist(bt_dpm_device_list_s **device_list);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the uuids from blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] uuid_list - list of uuids
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_uuids_from_blacklist(bt_dpm_uuids_list_s **uuid_list);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the uuids from whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] uuid_list - list of uuids
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_uuids_from_whitelist(bt_dpm_uuids_list_s **uuid_list);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Removes the devices from whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  device_address - Device address
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_remove_device_from_whitelist(const char *device_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Removes the devices from blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  device_address - Device address
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_remove_device_from_blacklist(const char *device_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Removes the uuids from whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  service_uuids - profile or custom service uuids
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_remove_uuid_from_whitelist(const char *service_uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Removes the uuids from blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  service_uuids - profile or custom service uuids
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_remove_uuid_from_blacklist(const char *service_uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for  outgoing call.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_allow_outgoing_call(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for  outgoing call.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_allow_outgoing_call(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for pairing.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_pairing_state(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for pairing.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_pairing_state(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for profiles.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]profile - Profile.
- *             BT_DPM_POLICY_A2DP_PROFILE_STATE,
- *             BT_DPM_POLICY_AVRCP_PROFILE_STATE,
- *             BT_DPM_POLICY_BPP_PROFILE_STATE,
- *             BT_DPM_POLICY_DUN_PROFILE_STATE,
- *             BT_DPM_POLICY_FTP_PROFILE_STATE,
- *             BT_DPM_POLICY_HFP_PROFILE_STATE,
- *             BT_DPM_POLICY_HSP_PROFILE_STATE,
- *             BT_DPM_POLICY_PBAP_PROFILE_STATE,
- *             BT_DPM_POLICY_SAP_PROFILE_STATE,
- *             BT_DPM_POLICY_SPP_PROFILE_STATE,
- *             BT_DPM_PROFILE_NONE
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_profile_state(bt_dpm_profile_e profile, bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for profiles.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]profile - Profile.
- *             BT_DPM_POLICY_A2DP_PROFILE_STATE,
- *             BT_DPM_POLICY_AVRCP_PROFILE_STATE,
- *             BT_DPM_POLICY_BPP_PROFILE_STATE,
- *             BT_DPM_POLICY_DUN_PROFILE_STATE,
- *             BT_DPM_POLICY_FTP_PROFILE_STATE,
- *             BT_DPM_POLICY_HFP_PROFILE_STATE,
- *             BT_DPM_POLICY_HSP_PROFILE_STATE,
- *             BT_DPM_POLICY_PBAP_PROFILE_STATE,
- *             BT_DPM_POLICY_SAP_PROFILE_STATE,
- *             BT_DPM_POLICY_SPP_PROFILE_STATE,
- *             BT_DPM_PROFILE_NONE
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_profile_state(bt_dpm_profile_e profile, bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for desktop connectivity.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_desktop_connectivity_state(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for desktop connectivity.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_desktop_connectivity_state(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for discoverable mode.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_discoverable_state(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for discoverable mode.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_discoverable_state(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for limited discoverable mode.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-
-int bt_dpm_set_limited_discoverable_state(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for limited discoverable mode.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_limited_discoverable_state(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for Data transfer.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_data_transfer_state(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for Data transfer.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_data_transfer_state(bt_dpm_status_e *value);
-
-/**
- * @internal
- * @brief Initialize Bluetooth IPSP service and set the callback
- */
-int bt_ipsp_initialize(bt_ipsp_init_state_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @brief De-Initialize Bluetooth IPSP service and unset the callback
- */
-int bt_ipsp_deinitialize(void);
-
-/**
- * @internal
- * @brief Connect to a IPSP service over LE to remote device.
- */
-int bt_ipsp_connect(const char *address);
-
-/**
- * @internal
- * @brief Disconnect to a IPSP service over LE to remote device.
- */
-int bt_ipsp_disconnect(const char *address);
-
-/**
- * @internal
- * @brief Set IPSP connection state event change callback.
- */
-int bt_ipsp_set_connection_state_changed_cb(bt_ipsp_connection_state_changed_cb callback,
-                                               void *user_data);
-
-/**
- * @internal
- * @brief Unset IPSP connection state event change callback.
- */
-int bt_ipsp_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief Gets the pbap connected status.
- * @since_tizen 3.0
- * @param[in] remote_address The address of the remote device
- * @param[out] connected_status the connected status
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_pbap_client_is_connected(const char *address, bool *connected_status);
-
-/**
- * @internal
- * @brief Register the Proximity Profile.
- */
-int bt_proximity_register(bt_proximity_role_t role, bt_proximity_property_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @brief Unregister the Proximity Profile.
- */
-int bt_proximity_unregister(bt_proximity_role_t role);
-
-/**
- * @internal
- * @brief Set the Proximity Profile property value.
- */
-int bt_proximity_set_property(const char *remote_address, bt_proximity_property_t property, int value);
-
-/**
- * @internal
- * @brief Read the Proximity Profile property value.
- */
-int bt_proximity_get_property(const char *remote_address, bt_proximity_property_t property, int *value);
-
-/**
- * @internal
- * @brief Lists the Proximity Profile property/service supported.
- */
-int bt_proximity_get_supported_services(const char *remote_address, int *supported_services);
-
-/**
- * @internal
- * @brief API to set scan filter for iBeacons reports
- */
-int bt_adapter_le_set_ibeacon_scan_filter(bt_scan_filter_h scan_filter,
-                       const char *data, unsigned int data_len);
-
-/**
- * @internal
- * @brief API to read iBeacon report from LE scan result information
- */
-int bt_adapter_le_get_scan_result_ibeacon_report(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, bt_adapter_ibeacon_scan_result_info_s **ibeacon_info);
-
-/**
- * @internal
- * @brief API to clear the iBeacon report
- */
-int bt_adapter_le_free_ibeacon_report(bt_adapter_ibeacon_scan_result_info_s *ibeacon_info);
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_NETWORK_BLUETOOTH_INTERNAL_H__ */
diff --git a/include/tv/bluetooth_type.h b/include/tv/bluetooth_type.h
deleted file mode 100644 (file)
index 53600a6..0000000
+++ /dev/null
@@ -1,1942 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __TIZEN_NETWORK_BLUETOOTH_TYPE_H__
-#define __TIZEN_NETWORK_BLUETOOTH_TYPE_H__
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdbool.h>
-#include <tizen_error.h>
-
- #ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/**
- * @file bluetooth_type.h
- * @brief API to control the Bluetooth adapter, devices and communications.
- * @ingroup     CAPI_NETWORK_BLUETOOTH_TYPE_MODULE
- */
-
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_MODULE
- * @brief Enumerations of Bluetooth error codes.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful*/
-       BT_ERROR_CANCELLED = TIZEN_ERROR_CANCELED, /**< Operation cancelled */
-       BT_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */
-       BT_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */
-       BT_ERROR_RESOURCE_BUSY = TIZEN_ERROR_RESOURCE_BUSY, /**< Device or resource busy */
-       BT_ERROR_TIMED_OUT = TIZEN_ERROR_TIMED_OUT, /**< Timeout error */
-       BT_ERROR_NOW_IN_PROGRESS = TIZEN_ERROR_NOW_IN_PROGRESS, /**< Operation now in progress */
-       BT_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< BT is Not Supported */
-       BT_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */
-       BT_ERROR_QUOTA_EXCEEDED = TIZEN_ERROR_QUOTA_EXCEEDED, /**< Quota exceeded */
-       BT_ERROR_NO_DATA = TIZEN_ERROR_NO_DATA, /**< No data available */
-       BT_ERROR_DEVICE_POLICY_RESTRICTION = TIZEN_ERROR_DEVICE_POLICY_RESTRICTION, /**< Device policy restriction (Since 3.0) */
-       BT_ERROR_NOT_INITIALIZED = TIZEN_ERROR_BLUETOOTH|0x0101, /**< Local adapter not initialized */
-       BT_ERROR_NOT_ENABLED = TIZEN_ERROR_BLUETOOTH|0x0102, /**< Local adapter not enabled */
-       BT_ERROR_ALREADY_DONE = TIZEN_ERROR_BLUETOOTH|0x0103, /**< Operation already done  */
-       BT_ERROR_OPERATION_FAILED = TIZEN_ERROR_BLUETOOTH|0x0104, /**< Operation failed */
-       BT_ERROR_NOT_IN_PROGRESS = TIZEN_ERROR_BLUETOOTH|0x0105, /**< Operation not in progress */
-       BT_ERROR_REMOTE_DEVICE_NOT_BONDED = TIZEN_ERROR_BLUETOOTH|0x0106, /**< Remote device not bonded */
-       BT_ERROR_AUTH_REJECTED = TIZEN_ERROR_BLUETOOTH|0x0107, /**< Authentication rejected */
-       BT_ERROR_AUTH_FAILED = TIZEN_ERROR_BLUETOOTH|0x0108, /**< Authentication failed */
-       BT_ERROR_REMOTE_DEVICE_NOT_FOUND = TIZEN_ERROR_BLUETOOTH|0x0109, /**< Remote device not found */
-       BT_ERROR_SERVICE_SEARCH_FAILED = TIZEN_ERROR_BLUETOOTH|0x010A, /**< Service search failed */
-       BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED = TIZEN_ERROR_BLUETOOTH|0x010B, /**< Remote device is not connected */
-       BT_ERROR_AGAIN = TIZEN_ERROR_BLUETOOTH|0x010C, /**< Resource temporarily unavailable */
-       BT_ERROR_SERVICE_NOT_FOUND = TIZEN_ERROR_BLUETOOTH|0x010D, /**< Service Not Found */
-} bt_error_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Enumerations of the Bluetooth adapter state.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_DISABLED = 0x00, /**< Bluetooth adapter is disabled */
-       BT_ADAPTER_ENABLED, /**< Bluetooth adapter is enabled */
-} bt_adapter_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Enumerations of the Bluetooth visibility mode.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE = 0x00,  /**< Other devices cannot find your device via discovery */
-       BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE,  /**< Discoverable mode */
-       BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE,  /**< Discoverable mode with time limit. After specific period,
-                                                           it is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE.*/
-} bt_adapter_visibility_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Enumerations of the discovery state of Bluetooth device.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_DEVICE_DISCOVERY_STARTED, /**< Device discovery is started */
-       BT_ADAPTER_DEVICE_DISCOVERY_FINISHED, /**< Device discovery is finished */
-       BT_ADAPTER_DEVICE_DISCOVERY_FOUND, /**< The remote Bluetooth device is found */
-} bt_adapter_device_discovery_state_e;
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Enumerations of the discovery state of Bluetooth LE device.
- * @since_tizen 2.3
- *
- */
-typedef enum {
-       BT_ADAPTER_LE_DEVICE_DISCOVERY_STARTED, /**< LE device discovery is started */
-       BT_ADAPTER_LE_DEVICE_DISCOVERY_FINISHED, /**< LE device discovery is finished */
-       BT_ADAPTER_LE_DEVICE_DISCOVERY_FOUND, /**< The remote Bluetooth LE device is found */
-} bt_adapter_le_device_discovery_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth advertising state.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_LE_ADVERTISING_STOPPED = 0x00, /**< Bluetooth advertising is stopped */
-       BT_ADAPTER_LE_ADVERTISING_STARTED, /**< Bluetooth advertising is started */
-} bt_adapter_le_advertising_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth advertising mode.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_ADAPTER_LE_ADVERTISING_MODE_BALANCED,  /**< Balanced advertising mode */
-       BT_ADAPTER_LE_ADVERTISING_MODE_LOW_LATENCY,  /**< Low latency advertising mode */
-       BT_ADAPTER_LE_ADVERTISING_MODE_LOW_ENERGY  /**< Low energy advertising mode */
-} bt_adapter_le_advertising_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth advertising filter policy.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_LE_ADVERTISING_FILTER_DEFAULT = 0x00, /**< White list is not in use */
-       BT_ADAPTER_LE_ADVERTISING_FILTER_ALLOW_SCAN_WL = 0x01, /**< Allow the scan
-                                       request that in the White list */
-       BT_ADAPTER_LE_ADVERTISING_FILTER_ALLOW_CONN_WL = 0x02, /**< Allow the connection
-                                       request that in the White list */
-       BT_ADAPTER_LE_ADVERTISING_FILTER_ALLOW_SCAN_CONN_WL = 0x03, /**< Allow the
-                                       scan and connection request that in the White list */
-} bt_adapter_le_advertising_filter_policy_e;
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth advertising type.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_LE_ADVERTISING_CONNECTABLE = 0x00, /**< Connectable undirected advertising (ADV_IND) */
-       BT_ADAPTER_LE_ADVERTISING_CONNECTABLE_DIRECT_HIGH = 0x01, /**< Connectable high duty cycle directed advertising (ADV_DIRECT_IND) */
-       BT_ADAPTER_LE_ADVERTISING_SCANNABLE = 0x02, /**< Scannable undirected advertising (ADV_SCAN_IND) */
-       BT_ADAPTER_LE_ADVERTISING_NON_CONNECTABLE = 0x03, /**< Non connectable undirected advertising (ADV_NONCOND_IND) */
-       BT_ADAPTER_LE_ADVERTISING_CONNECTABLE_DIRECT_LOW = 0x04, /**< Connectable low duty cycle directed advertising (ADV_DIRECT_IND) */
-} bt_adapter_le_advertising_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth LE packet type.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_LE_PACKET_ADVERTISING, /**< Advertising packet */
-       BT_ADAPTER_LE_PACKET_SCAN_RESPONSE, /**< Scan response packet */
-} bt_adapter_le_packet_type_e;
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth LE data type
- *         that can be included in LE packets.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_LE_PACKET_DATA_COMP_LIST_16_BIT_SERVICE_CLASS_UUIDS = 0x03, /**< Complete list of 16 bit UUIDs */
-       BT_ADAPTER_LE_PACKET_DATA_MANUFACTURER_SPECIFIC_DATA = 0xff, /**< Manufacturer data */
-} bt_adapter_le_packet_data_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth le scan mode.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_ADAPTER_LE_SCAN_MODE_BALANCED, /**< Balanced mode of power consumption and connection latency */
-       BT_ADAPTER_LE_SCAN_MODE_LOW_LATENCY, /**< Low connection latency but high power consumption */
-       BT_ADAPTER_LE_SCAN_MODE_LOW_ENERGY /**< Low power consumption but high connection latency */
-} bt_adapter_le_scan_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Enumerations of device disconnect reason.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_DEVICE_DISCONNECT_REASON_UNKNOWN, /**< Disconnected by unknown reason */
-       BT_DEVICE_DISCONNECT_REASON_TIMEOUT, /**< Disconnected by timeout */
-       BT_DEVICE_DISCONNECT_REASON_LOCAL_HOST, /**< Disconnected by local host */
-       BT_DEVICE_DISCONNECT_REASON_REMOTE, /**< Disconnected by remote */
-} bt_device_disconnect_reason_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Enumerations of connection link type.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_DEVICE_CONNECTION_LINK_BREDR, /**< BR/EDR link */
-       BT_DEVICE_CONNECTION_LINK_LE, /**< LE link */
-       BT_DEVICE_CONNECTION_LINK_DEFAULT = 0xFF, /**< The connection type default */
-} bt_device_connection_link_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Enumerations of device authorization state.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_DEVICE_AUTHORIZED, /**< The remote Bluetooth device is authorized */
-       BT_DEVICE_UNAUTHORIZED, /**< The remote Bluetooth device is unauthorized */
-} bt_device_authorization_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Enumerations of Bluetooth profile.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_PROFILE_RFCOMM = 0x01, /**< RFCOMM Profile */
-       BT_PROFILE_A2DP = 0x02, /**< Advanced Audio Distribution Profile Source role */
-       BT_PROFILE_HSP = 0x04, /**< Headset Profile */
-       BT_PROFILE_HID = 0x08, /**< Human Interface Device Profile */
-       BT_PROFILE_NAP = 0x10, /**< Network Access Point Profile */
-       BT_PROFILE_AG = 0x20, /**< Audio Gateway Profile */
-       BT_PROFILE_GATT = 0x40, /**< Generic Attribute Profile */
-       BT_PROFILE_NAP_SERVER = 0x80, /**< NAP server Profile */
-       BT_PROFILE_A2DP_SINK = 0x100, /**< Advanced Audio Distribution Profile Sink role */
-} bt_profile_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Enumerations of device address type.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_DEVICE_PUBLIC_ADDRESS = 0x00, /**< Public address */
-       BT_DEVICE_RANDOM_ADDRESS, /**< Random address */
-} bt_device_address_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Enumerations of service class.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_SC_NONE = 0, /**< No service class */
-       BT_SC_RES_SERVICE_MASK = 0x00000001, /**< RES service class */
-       BT_SC_SPP_SERVICE_MASK = 0x00000002, /**< SPP service class */
-       BT_SC_DUN_SERVICE_MASK = 0x00000004, /**< DUN service class */
-       BT_SC_FAX_SERVICE_MASK = 0x00000008, /**< FAX service class */
-       BT_SC_LAP_SERVICE_MASK = 0x00000010, /**< LAP service class */
-       BT_SC_HSP_SERVICE_MASK = 0x00000020, /**< HSP service class */
-       BT_SC_HFP_SERVICE_MASK = 0x00000040, /**< HFP service class */
-       BT_SC_OPP_SERVICE_MASK = 0x00000080, /**< OPP service class */
-       BT_SC_FTP_SERVICE_MASK = 0x00000100, /**< FTP service class */
-       BT_SC_CTP_SERVICE_MASK = 0x00000200, /**< CTP service class */
-       BT_SC_ICP_SERVICE_MASK = 0x00000400, /**< ICP service class */
-       BT_SC_SYNC_SERVICE_MASK = 0x00000800, /**< SYNC service class */
-       BT_SC_BPP_SERVICE_MASK = 0x00001000, /**< BPP service class */
-       BT_SC_BIP_SERVICE_MASK = 0x00002000, /**< BIP service class */
-       BT_SC_PANU_SERVICE_MASK = 0x00004000, /**< PANU service class */
-       BT_SC_NAP_SERVICE_MASK = 0x00008000, /**< NAP service class */
-       BT_SC_GN_SERVICE_MASK = 0x00010000, /**< GN service class */
-       BT_SC_SAP_SERVICE_MASK = 0x00020000, /**< SAP service class */
-       BT_SC_A2DP_SERVICE_MASK = 0x00040000, /**< A2DP service class */
-       BT_SC_AVRCP_SERVICE_MASK = 0x00080000, /**< AVRCP service class */
-       BT_SC_PBAP_SERVICE_MASK = 0x00100000, /**< PBAP service class */
-       BT_SC_HID_SERVICE_MASK = 0x00200000, /**< HID service class */
-       BT_SC_A2DP_SOURCE_SERVICE_MASK = 0x00400000, /**< A2DP SOURCE service class */
-       BT_SC_ALL_SERVICE_MASK = 0x00FFFFFF, /**< ALL service class */
-       BT_SC_MAX /**< MAX service class */
-} bt_service_class_t;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Enumerations of major service class.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_MAJOR_SERVICE_CLASS_LIMITED_DISCOVERABLE_MODE  = 0x002000, /**< Limited discoverable mode */
-       BT_MAJOR_SERVICE_CLASS_POSITIONING                = 0x010000, /**< Positioning class */
-       BT_MAJOR_SERVICE_CLASS_NETWORKING                 = 0x020000, /**< Networking class */
-       BT_MAJOR_SERVICE_CLASS_RENDERING                  = 0x040000, /**< Rendering class */
-       BT_MAJOR_SERVICE_CLASS_CAPTURING                  = 0x080000, /**< Capturing class */
-       BT_MAJOR_SERVICE_CLASS_OBJECT_TRANSFER            = 0x100000, /**< Object transferring class */
-       BT_MAJOR_SERVICE_CLASS_AUDIO                      = 0x200000, /**< Audio class*/
-       BT_MAJOR_SERVICE_CLASS_TELEPHONY                  = 0x400000, /**< Telephony class */
-       BT_MAJOR_SERVICE_CLASS_INFORMATION                = 0x800000, /**< Information class */
-} bt_major_service_class_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Enumerations of major device class.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_MAJOR_DEVICE_CLASS_MISC = 0x00, /**< Miscellaneous major device class*/
-       BT_MAJOR_DEVICE_CLASS_COMPUTER = 0x01, /**< Computer major device class */
-       BT_MAJOR_DEVICE_CLASS_PHONE = 0x02, /**< Phone major device class */
-       BT_MAJOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT = 0x03, /**< LAN/Network access point major device class */
-       BT_MAJOR_DEVICE_CLASS_AUDIO_VIDEO = 0x04, /**< Audio/Video major device class */
-       BT_MAJOR_DEVICE_CLASS_PERIPHERAL = 0x05, /**< Peripheral major device class */
-       BT_MAJOR_DEVICE_CLASS_IMAGING = 0x06, /**< Imaging major device class */
-       BT_MAJOR_DEVICE_CLASS_WEARABLE = 0x07, /**< Wearable device class */
-       BT_MAJOR_DEVICE_CLASS_TOY = 0x08, /**< Toy device class */
-       BT_MAJOR_DEVICE_CLASS_HEALTH = 0x09, /**< Health device class */
-       BT_MAJOR_DEVICE_CLASS_UNCATEGORIZED = 0x1F, /**< Uncategorized major device class */
-} bt_major_device_class_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Enumerations of minor device class.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_MINOR_DEVICE_CLASS_COMPUTER_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of computer */
-       BT_MINOR_DEVICE_CLASS_COMPUTER_DESKTOP_WORKSTATION = 0x04, /**< Desktop workstation minor device class of computer */
-       BT_MINOR_DEVICE_CLASS_COMPUTER_SERVER_CLASS = 0x08, /**< Server minor device class of computer */
-       BT_MINOR_DEVICE_CLASS_COMPUTER_LAPTOP = 0x0C, /**< Laptop minor device class of computer */
-       BT_MINOR_DEVICE_CLASS_COMPUTER_HANDHELD_PC_OR_PDA = 0x10, /**< Handheld PC/PDA minor device class of computer */
-       BT_MINOR_DEVICE_CLASS_COMPUTER_PALM_SIZED_PC_OR_PDA = 0x14, /**< Palm sized PC/PDA minor device class of computer */
-       BT_MINOR_DEVICE_CLASS_COMPUTER_WEARABLE_COMPUTER = 0x18, /**< Wearable(watch sized) minor device class of computer */
-
-       BT_MINOR_DEVICE_CLASS_PHONE_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of phone */
-       BT_MINOR_DEVICE_CLASS_PHONE_CELLULAR = 0x04, /**< Cellular minor device class of phone */
-       BT_MINOR_DEVICE_CLASS_PHONE_CORDLESS = 0x08, /**< Cordless minor device class of phone */
-       BT_MINOR_DEVICE_CLASS_PHONE_SMART_PHONE = 0x0C, /**< Smart phone minor device class of phone */
-       BT_MINOR_DEVICE_CLASS_PHONE_WIRED_MODEM_OR_VOICE_GATEWAY = 0x10, /**< Wired modem or voice gateway minor device class of phone */
-       BT_MINOR_DEVICE_CLASS_PHONE_COMMON_ISDN_ACCESS = 0x14, /**< Common ISDN minor device class of phone */
-
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_FULLY_AVAILABLE = 0x04, /**< Fully available minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_1_TO_17_PERCENT_UTILIZED = 0x20, /**< 1-17% utilized minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_17_TO_33_PERCENT_UTILIZED = 0x40, /**< 17-33% utilized minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_33_TO_50_PERCENT_UTILIZED = 0x60, /**< 33-50% utilized minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_50_to_67_PERCENT_UTILIZED = 0x80, /**< 50-67% utilized minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_67_TO_83_PERCENT_UTILIZED = 0xA0, /**< 67-83% utilized minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_83_TO_99_PERCENT_UTILIZED = 0xC0, /**< 83-99% utilized minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_NO_SERVICE_AVAILABLE = 0xE0, /**< No service available minor device class of LAN/Network access point */
-
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_WEARABLE_HEADSET = 0x04, /**< Wearable headset minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HANDS_FREE = 0x08, /**< Hands-free minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_MICROPHONE = 0x10, /**< Microphone minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_LOUDSPEAKER = 0x14, /**< Loudspeaker minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HEADPHONES = 0x18, /**< Headphones minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_PORTABLE_AUDIO = 0x1C, /**< Portable audio minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_CAR_AUDIO = 0x20, /**< Car audio minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_SET_TOP_BOX = 0x24, /**< Set-top box minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HIFI_AUDIO_DEVICE = 0x28, /**< Hifi audio minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VCR = 0x2C, /**< VCR minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_CAMERA = 0x30, /**< Video camera minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_CAMCORDER = 0x34, /**< Camcorder minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_MONITOR = 0x38, /**< Video monitor minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_DISPLAY_LOUDSPEAKER = 0x3C, /**< Video display and loudspeaker minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_CONFERENCING = 0x40, /**< Video conferencing minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_GAMING_TOY = 0x48, /**< Gaming/toy minor device class of audio/video */
-
-       BT_MINOR_DEVICE_CLASS_PERIPHERA_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_KEY_BOARD = 0x40, /**< Key board minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_POINTING_DEVICE = 0x80, /**< Pointing device minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_COMBO_KEYBOARD_POINTING_DEVICE = 0xC0, /**< Combo keyboard or pointing device minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_JOYSTICK = 0x04, /**< Joystick minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_GAME_PAD = 0x08, /**< Game pad minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_REMOTE_CONTROL = 0x0C, /**< Remote control minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_SENSING_DEVICE = 0x10, /**< Sensing device minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_DIGITIZER_TABLET = 0x14, /**< Digitizer minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_CARD_READER = 0x18, /**< Card reader minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_DIGITAL_PEN = 0x1C, /**< Digital pen minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_HANDHELD_SCANNER = 0x20, /**< Handheld scanner minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_HANDHELD_GESTURAL_INPUT_DEVICE = 0x24, /**< Handheld gestural input device minor device class of peripheral */
-
-       BT_MINOR_DEVICE_CLASS_IMAGING_DISPLAY = 0x10, /**< Display minor device class of imaging */
-       BT_MINOR_DEVICE_CLASS_IMAGING_CAMERA = 0x20, /**< Camera minor device class of imaging */
-       BT_MINOR_DEVICE_CLASS_IMAGING_SCANNER = 0x40, /**< Scanner minor device class of imaging */
-       BT_MINOR_DEVICE_CLASS_IMAGING_PRINTER = 0x80, /**< Printer minor device class of imaging */
-
-       BT_MINOR_DEVICE_CLASS_WEARABLE_WRIST_WATCH = 0x04, /**< Wrist watch minor device class of wearable */
-       BT_MINOR_DEVICE_CLASS_WEARABLE_PAGER = 0x08, /**< Pager minor device class of wearable */
-       BT_MINOR_DEVICE_CLASS_WEARABLE_JACKET = 0x0C, /**< Jacket minor device class of wearable */
-       BT_MINOR_DEVICE_CLASS_WEARABLE_HELMET = 0x10, /**< Helmet minor device class of wearable */
-       BT_MINOR_DEVICE_CLASS_WEARABLE_GLASSES = 0x14, /**< Glasses minor device class of wearable */
-
-       BT_MINOR_DEVICE_CLASS_TOY_ROBOT = 0x04, /**< Robot minor device class of toy */
-       BT_MINOR_DEVICE_CLASS_TOY_VEHICLE = 0x08, /**< Vehicle minor device class of toy */
-       BT_MINOR_DEVICE_CLASS_TOY_DOLL_ACTION = 0x0C, /**< Doll/Action minor device class of toy */
-       BT_MINOR_DEVICE_CLASS_TOY_CONTROLLER = 0x10, /**< Controller minor device class of toy */
-       BT_MINOR_DEVICE_CLASS_TOY_GAME = 0x14, /**< Game minor device class of toy */
-
-       BT_MINOR_DEVICE_CLASS_HEALTH_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_BLOOD_PRESSURE_MONITOR = 0x04, /**< Blood pressure monitor minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_THERMOMETER = 0x08, /**< Thermometer minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_WEIGHING_SCALE = 0x0C, /**< Weighing scale minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_GLUCOSE_METER = 0x10, /**< Glucose minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_PULSE_OXIMETER = 0x14, /**< Pulse oximeter minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_HEART_PULSE_RATE_MONITOR = 0x18, /**< Heart/Pulse rate monitor minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_DATA_DISPLAY = 0x1C, /**< Health data display minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_STEP_COUNTER = 0x20, /**< Step counter minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_BODY_COMPOSITION_ANALYZER = 0x24, /**< Body composition analyzer minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_PEAK_FLOW_MONITOR = 0x28, /**< Peak flow monitor minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_MEDICATION_MONITOR = 0x2C, /**< Medication monitor minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_KNEE_PROSTHESIS = 0x30, /**< Knee prosthesis minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_ANKLE_PROSTHESIS = 0x34, /**< Ankle prosthesis minor device class of health */
-} bt_minor_device_class_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Enumerations of gap appearance type.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_APPEARANCE_TYPE_UNKNOWN = 0x00, /**< Unknown appearance type */
-       BT_APPEARANCE_TYPE_GENERIC_PHONE = 0x40, /**< Generic Phone type - Generic category */
-       BT_APPEARANCE_TYPE_GENERIC_COMPUTER = 0x80, /**< Generic Computer type - Generic category */
-       BT_APPEARANCE_TYPE_GENERIC_WATCH = 0xC0, /**< Generic Watch type - Generic category */
-} bt_appearance_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Enumerations of the Bluetooth device's LE connection mode.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_DEVICE_LE_CONNECTION_MODE_BALANCED, /**< Balanced mode of power consumption and connection latency */
-       BT_DEVICE_LE_CONNECTION_MODE_LOW_LATENCY, /**< Low connection latency but high power consumption */
-       BT_DEVICE_LE_CONNECTION_MODE_LOW_ENERGY, /**< Low power consumption but high connection latency */
-} bt_device_le_connection_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Enumerations of connected Bluetooth device event role.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_SOCKET_UNKNOWN = 0x00, /**< Unknown role*/
-       BT_SOCKET_SERVER , /**< Server role*/
-       BT_SOCKET_CLIENT, /**< Client role*/
-} bt_socket_role_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Enumerations of Bluetooth socket connection state.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_SOCKET_CONNECTED, /**< RFCOMM is connected */
-       BT_SOCKET_DISCONNECTED, /**< RFCOMM is disconnected */
-} bt_socket_connection_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Enumerations for the types of profiles related with audio
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_AUDIO_PROFILE_TYPE_ALL = 0,  /**< All supported profiles related with audio */
-       BT_AUDIO_PROFILE_TYPE_HSP_HFP,  /**< HSP(Headset Profile) and HFP(Hands-Free Profile) */
-       BT_AUDIO_PROFILE_TYPE_A2DP,  /**< A2DP(Advanced Audio Distribution Profile) */
-       BT_AUDIO_PROFILE_TYPE_AG,  /**< AG(Audio Gateway) */
-       BT_AUDIO_PROFILE_TYPE_A2DP_SINK,  /**< A2DP(Advanced Audio Distribution Profile) Sink role */
-} bt_audio_profile_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Enumerations for the call handling event
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_AG_CALL_HANDLING_EVENT_ANSWER = 0x00,  /**< Request to answer an incoming call */
-       BT_AG_CALL_HANDLING_EVENT_RELEASE,  /**< Request to release a call */
-       BT_AG_CALL_HANDLING_EVENT_REJECT,  /**< Request to reject an incoming call */
-} bt_ag_call_handling_event_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Enumerations for the multi call handling event
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_AG_MULTI_CALL_HANDLING_EVENT_RELEASE_HELD_CALLS = 0x00,  /**< Request to release held calls */
-       BT_AG_MULTI_CALL_HANDLING_EVENT_RELEASE_ACTIVE_CALLS,  /**< Request to release active calls */
-       BT_AG_MULTI_CALL_HANDLING_EVENT_ACTIVATE_HELD_CALL,  /**< Request to put active calls into hold state and activate another (held or waiting) call */
-       BT_AG_MULTI_CALL_HANDLING_EVENT_MERGE_CALLS,  /**< Request to add a held call to the conversation */
-       BT_AG_MULTI_CALL_HANDLING_EVENT_EXPLICIT_CALL_TRANSFER,  /**< Request to let a user who has two calls to connect these two calls together and release its connections to both other parties */
-} bt_ag_multi_call_handling_event_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Enumerations for the equalizer state
- * @since_tizen 2.4
- */
-typedef enum {
-       BT_AVRCP_EQUALIZER_STATE_OFF = 0x01,  /**< Equalizer Off */
-       BT_AVRCP_EQUALIZER_STATE_ON,  /**< Equalizer On */
-} bt_avrcp_equalizer_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Enumerations for the repeat mode
- * @since_tizen 2.4
- */
-typedef enum {
-       BT_AVRCP_REPEAT_MODE_OFF = 0x01,  /**< Repeat Off */
-       BT_AVRCP_REPEAT_MODE_SINGLE_TRACK,  /**< Single track repeat */
-       BT_AVRCP_REPEAT_MODE_ALL_TRACK,  /**< All track repeat */
-       BT_AVRCP_REPEAT_MODE_GROUP,  /**< Group repeat */
-} bt_avrcp_repeat_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Enumerations for the shuffle mode
- * @since_tizen 2.4
- */
-typedef enum {
-       BT_AVRCP_SHUFFLE_MODE_OFF = 0x01,  /**< Shuffle Off */
-       BT_AVRCP_SHUFFLE_MODE_ALL_TRACK,  /**< All tracks shuffle */
-       BT_AVRCP_SHUFFLE_MODE_GROUP,  /**< Group shuffle */
-} bt_avrcp_shuffle_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Enumerations for the scan mode
- * @since_tizen 2.4
- */
-typedef enum {
-       BT_AVRCP_SCAN_MODE_OFF = 0x01,  /**< Scan Off */
-       BT_AVRCP_SCAN_MODE_ALL_TRACK,  /**< All tracks scan */
-       BT_AVRCP_SCAN_MODE_GROUP,  /**< Group scan */
-} bt_avrcp_scan_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Enumerations for the player state
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_AVRCP_PLAYER_STATE_STOPPED = 0x00,  /**< Stopped */
-       BT_AVRCP_PLAYER_STATE_PLAYING,  /**< Playing */
-       BT_AVRCP_PLAYER_STATE_PAUSED,  /**< Paused */
-       BT_AVRCP_PLAYER_STATE_FORWARD_SEEK,  /**< Seek Forward */
-       BT_AVRCP_PLAYER_STATE_REWIND_SEEK,  /**< Seek Rewind */
-} bt_avrcp_player_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Enumeration for the player control commands
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_AVRCP_CONTROL_PLAY = 0x01,   /**< Play */
-       BT_AVRCP_CONTROL_PAUSE,   /**< Pause */
-       BT_AVRCP_CONTROL_STOP,   /**< Stop */
-       BT_AVRCP_CONTROL_NEXT,   /**< Next Track*/
-       BT_AVRCP_CONTROL_PREVIOUS,   /**< Previous track */
-       BT_AVRCP_CONTROL_FAST_FORWARD,   /**< Fast Forward */
-       BT_AVRCP_CONTROL_REWIND   /**< Rewind */
-} bt_avrcp_player_command_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief Structure of Track metadata information.
- * @since_tizen 3.0
- *
- * @see #bt_class_s
- */
-typedef struct {
-       const char *title;   /**< Title */
-       const char *artist;   /**< Artist */
-       const char *album;   /**< Album name */
-       const char *genre;   /**< Album Genre */
-       unsigned int total_tracks;   /**< The total number of tracks */
-       unsigned int number;   /**< Track number */
-       unsigned int duration;   /**< Duration */
-} bt_avrcp_metadata_attributes_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 3.0
- * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
- * @param[in] remote_address  The remote address
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_control_deinitialize()
- */
-typedef void (*bt_avrcp_control_connection_state_changed_cb) (bool connected, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the Song position mode is changed by the remote target device.
- * @since_tizen 3.0
- * @param[in] position Playback position in milliseconds. When position is 0 it means the track is starting and when it's greater than or equal to track's duration the track has ended.
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_position_changed_cb()
- * @see bt_avrcp_unset_position_changed_cb()
- */
-typedef void (*bt_avrcp_position_changed_cb) (unsigned int position, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the Song metadata information is changed by the remote target device.
- * @since_tizen 3.0
- * @param[in] track The song metadata information
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_track_info_changed_cb()
- * @see bt_avrcp_unset_track_info_changed_cb()
- */
-typedef void (*bt_avrcp_track_info_changed_cb) (bt_avrcp_metadata_attributes_info_s *track, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the Song Play status mode is changed by the remote target device.
- * @since_tizen 3.0
- * @param[in] play_state The song play status
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_play_status_changed_cb()
- * @see bt_avrcp_unset_play_status_changed_cb()
- */
-typedef void (*bt_avrcp_play_status_changed_cb) (bt_avrcp_player_state_e play_state, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Enumerations for the data channel type
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_HDP_CHANNEL_TYPE_RELIABLE  = 0x01,  /**< Reliable Data Channel */
-       BT_HDP_CHANNEL_TYPE_STREAMING,  /**< Streaming Data Channel */
-} bt_hdp_channel_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of the integer type for GATT handle's value.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_DATA_TYPE_SINT8,  /**< 8 bit signed int type */
-       BT_DATA_TYPE_SINT16,  /**< 16 bit signed int type */
-       BT_DATA_TYPE_SINT32,  /**< 32 bit signed int type */
-       BT_DATA_TYPE_UINT8,  /**< 8 bit unsigned int type */
-       BT_DATA_TYPE_UINT16,  /**< 16 bit unsigned int type */
-       BT_DATA_TYPE_UINT32  /**< 32 bit unsigned int type */
-} bt_data_type_int_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of the float type for GATT handle's value.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_DATA_TYPE_FLOAT,  /**< 32 bit float type */
-       BT_DATA_TYPE_SFLOAT  /**< 16 bit float type */
-} bt_data_type_float_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of the write type.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_GATT_WRITE_TYPE_WRITE_NO_RESPONSE,  /**< Write without response type */
-       BT_GATT_WRITE_TYPE_WRITE  /**< Write type */
-} bt_gatt_write_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of the GATT handle's type.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_GATT_TYPE_SERVICE = 0x01,  /**< GATT service type */
-       BT_GATT_TYPE_CHARACTERISTIC = 0x02,  /** GATT characteristic type */
-       BT_GATT_TYPE_DESCRIPTOR = 0x03,  /** GATT descriptor type */
-} bt_gatt_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of the service type.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_GATT_SERVICE_TYPE_PRIMARY = 0x01,  /**< GATT primary service type */
-       BT_GATT_SERVICE_TYPE_SECONDARY = 0x02,  /**< GATT secondary service type */
-} bt_gatt_service_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of the characteristic's property.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_GATT_PROPERTY_BROADCAST = 0x01,  /**< Broadcast property */
-       BT_GATT_PROPERTY_READ = 0x02,  /**< Read property */
-       BT_GATT_PROPERTY_WRITE_WITHOUT_RESPONSE = 0x04,  /**< Write without response property */
-       BT_GATT_PROPERTY_WRITE = 0x08,  /**< Write property */
-       BT_GATT_PROPERTY_NOTIFY = 0x10,  /**< Notify property */
-       BT_GATT_PROPERTY_INDICATE = 0x20,  /**< Indicate property */
-       BT_GATT_PROPERTY_AUTHENTICATED_SIGNED_WRITES = 0x40,  /**< Authenticated signed writes property */
-       BT_GATT_PROPERTY_EXTENDED_PROPERTIES = 0x80,  /**< Extended properties */
-} bt_gatt_property_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of gatt server's service changing mode.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_GATT_CLIENT_SERVICE_ADDED,   /**< Service added */
-       BT_GATT_CLIENT_SERVICE_REMOVED, /**< Service removed */
-} bt_gatt_client_service_change_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Enumerations of the attribute's permission.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_GATT_PERMISSION_READ = 0x01,   /**< Readable permission */
-       BT_GATT_PERMISSION_WRITE = 0x02, /**< Writable permission */
-       BT_GATT_PERMISSION_ENCRYPT_READ = 0x04,  /**< Readable permission required encryption */
-       BT_GATT_PERMISSION_ENCRYPT_WRITE = 0x08,  /**< Writable permission required encryption */
-       BT_GATT_PERMISSION_ENCRYPT_AUTHENTICATED_READ = 0x10,    /**< Readable permission required encryption and authentication */
-       BT_GATT_PERMISSION_ENCRYPT_AUTHENTICATED_WRITE = 0x20,  /**< Writable permission required encryption and authentication */
-} bt_gatt_permission_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Enumerations of the remote device request types for attributes
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_GATT_REQUEST_TYPE_READ = 0x00, /* Read Requested */
-       BT_GATT_REQUEST_TYPE_WRITE = 0x01, /* Write Requested */
-} bt_gatt_att_request_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
- * @brief  Enumerations for the types of PAN(Personal Area Networking) service.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_PANU_SERVICE_TYPE_NAP = 0,  /**< Network Access Point */
-} bt_panu_service_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief The handle to control Bluetooth LE advertising.
- * @since_tizen 2.3
- */
-typedef void *bt_advertiser_h;
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_h instead.
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  The attribute handle of GATT(Generic Attribute Profile).
- * @since_tizen 2.3
- */
-typedef void *bt_gatt_attribute_h;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief The handle of a service, characteristic or descriptor.
- * @since_tizen 2.3.1
- */
-typedef void *bt_gatt_h;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief The handle of a GATT client which is associated with a remote device.
- * @since_tizen 2.3.1
- */
-typedef void *bt_gatt_client_h;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief The handle of a GATT server.
- * @since_tizen 3.0
- */
-typedef void *bt_gatt_server_h;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  The handle of calls state.
- * @since_tizen 2.3
- */
-typedef void *bt_call_list_h;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Class structure of device and service.
- * @since_tizen 2.3
- *
- * @see #bt_device_info_s
- * @see #bt_adapter_device_discovery_info_s
- * @see bt_device_bond_created_cb()
- * @see bt_adapter_device_discovery_state_changed_cb()
- */
-typedef struct {
-       bt_major_device_class_e major_device_class;     /**< Major device class. */
-       bt_minor_device_class_e minor_device_class;     /**< Minor device class. */
-       int major_service_class_mask;   /**< Major service class mask.
-       This value can be a combination of #bt_major_service_class_e like #BT_MAJOR_SERVICE_CLASS_RENDERING | #BT_MAJOR_SERVICE_CLASS_AUDIO */
-} bt_class_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Structure of device discovery information.
- * @since_tizen 2.3
- *
- * @see #bt_class_s
- * @see bt_adapter_device_discovery_state_changed_cb()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       char *remote_name;      /**< The name of remote device */
-       bt_class_s bt_class;    /**< The Bluetooth classes */
-       int rssi;       /**< The strength indicator of received signal  */
-       bool is_bonded; /**< The bonding state */
-       char **service_uuid;  /**< The UUID list of service */
-       int service_count;      /**< The number of services */
-       bt_appearance_type_e appearance;        /**< The Bluetooth appearance */
-       int manufacturer_data_len;      /**< manufacturer specific data length */
-       char *manufacturer_data;                /**< manufacturer specific data */
-} bt_adapter_device_discovery_info_s;
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Structure of le device discovery information.
- * @since_tizen 2.3
- *
- * @see #bt_class_s
- * @see bt_adapter_le_device_discovery_state_changed_cb()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       int address_type;       /**< The address type of remote device */
-       int rssi;       /**< The strength indicator of received signal  */
-       int adv_data_len;               /**< advertising indication data length */
-       char *adv_data;                 /**< advertising indication data */
-       int scan_data_len;              /**< scan response data length */
-       char *scan_data;                /**< scan response data */
-} bt_adapter_le_device_discovery_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Structure of le scan result information.
- * @since_tizen 2.3.1
- *
- * @see bt_adapter_le_start_scan()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       bt_device_address_type_e address_type;  /**< The address type of remote device */
-       int rssi;               /**< The strength indicator of received signal  */
-       int adv_data_len;       /**< advertising indication data length */
-       char *adv_data;         /**< advertising indication data */
-       int scan_data_len;      /**< scan response data length */
-       char *scan_data;        /**< scan response data */
-} bt_adapter_le_device_scan_result_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Structure of le iBeacon scan result information.
- * @since_tizen 3.0
- *
- * @see bt_adapter_le_start_scan()
- */
-typedef struct {
-       int company_id;         /**< company ID */
-       int ibeacon_type;       /**< Ibeacon type */
-       char *uuid;                     /**< UUID */
-       int major_id;           /**< Major ID */
-       int minor_id;           /**< Minor ID */
-       int measured_power;     /**< measured Power */
-} bt_adapter_ibeacon_scan_result_info_s;
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Structure of advertising parameters.
- * @since_tizen 2.3
- *
- * @see bt_adapter_le_advertising_state_changed_cb()
- * @see bt_adapter_le_start_advertising()
- */
-typedef struct {
-       float interval_min; /**< Minimum advertising interval for non-directed advertising.
-                             A multiple of 0.625ms is only allowed (Time range : 20ms to 10.24sec). */
-       float interval_max; /**< Maximum advertising interval for non-directed advertising.
-                             A multiple of 0.625ms is only allowed (Time range : 20ms to 10.24sec). */
-       char filter_policy; /* Advertising filter policy */
-       char type; /* Advertising type */
-} bt_adapter_le_advertising_params_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief LE service data structure.
- * @since_tizen 2.3.1
- *
- * @see bt_adapter_le_get_scan_result_service_data()
- */
-typedef struct {
-       char *service_uuid;     /**< 16 bit UUID of the service data */
-       char *service_data;     /**< Service data */
-       int service_data_len;   /**< Service data length */
-} bt_adapter_le_service_data_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Device information structure used for identifying pear device.
- * @since_tizen 2.3
- *
- * @see #bt_class_s
- * @see bt_device_bond_created_cb()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       char *remote_name;      /**< The name of remote device */
-       bt_class_s bt_class;    /**< The Bluetooth classes */
-       char **service_uuid;  /**< The UUID list of service */
-       int service_count;      /**< The number of services */
-       bool is_bonded; /**< The bonding state */
-       bool is_connected;      /**< The connection state */
-       bool is_authorized;     /**< The authorization state */
-       int manufacturer_data_len;      /**< manufacturer specific data length */
-       char *manufacturer_data;                /**< manufacturer specific data */
-} bt_device_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Service Discovery Protocol (SDP) data structure.
- * @since_tizen 2.3
- *
- * @details This protocol is used for discovering available services or pear device,
- * and finding one to connect with.
- *
- * @see bt_device_service_searched_cb()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       char **service_uuid;  /**< The UUID list of service */
-       int service_count;    /**< The number of services. */
-} bt_device_sdp_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Device connection information structure.
- * @since_tizen 2.3
- *
- * @see bt_device_connection_state_changed_cb()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       bt_device_connection_link_type_e link;  /**< Link type */
-       bt_device_disconnect_reason_e disconn_reason;  /**< Disconnection reason */
-} bt_device_connection_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Rfcomm connection data used for exchanging data between Bluetooth devices.
- * @since_tizen 2.3
- *
- * @see bt_socket_connection_state_changed_cb()
- */
-typedef struct {
-       int socket_fd;  /**< The file descriptor of connected socket */
-       int server_fd;  /**< The file descriptor of the server socket or -1 for client connection */
-       bt_socket_role_e local_role;    /**< The local device role in this connection */
-       char *remote_address;   /**< The remote device address */
-       char *service_uuid;     /**< The service UUId */
-} bt_socket_connection_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Structure of RFCOMM received data.
- * @since_tizen 2.3
- *
- * @remarks User can use standard linux functions for reading/writing
- * data from/to sockets.
- *
- * @see bt_socket_data_received_cb()
- */
-typedef struct {
-       int socket_fd;  /**< The socket fd */
-       int data_size;  /**< The length of the received data */
-       char *data;     /**< The received data */
-} bt_socket_received_data_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when the Bluetooth adapter state changes.
- * @since_tizen 2.3
- *
- * @param[in]   result  The result of the adapter state changing
- * @param[in]   adapter_state  The adapter state to be changed
- * @param[in]   user_data  The user data passed from the callback registration function
- * @see bt_adapter_set_state_changed_cb()
- * @see bt_adapter_unset_state_changed_cb()
- */
-typedef void (*bt_adapter_state_changed_cb)(int result, bt_adapter_state_e adapter_state, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when adapter name changes.
- * @since_tizen 2.3
- *
- * @param[in]   device_name    The name of the Bluetooth device to be changed
- * @param[in]   user_data      The user data passed from the callback registration function
- * @pre This function will be invoked when the name of Bluetooth adapter changes
- * if you register this callback using bt_adapter_set_name_changed_cb().
- * @see bt_adapter_set_name()
- * @see bt_adapter_set_name_changed_cb()
- * @see bt_adapter_unset_name_changed_cb()
- */
-typedef void (*bt_adapter_name_changed_cb)(char *device_name, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when the visibility mode changes.
- * @since_tizen 2.3
- *
- * @param[in] result The result of the visibility mode changing
- * @param[in] visibility_mode The visibility mode to be changed
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @pre This function will be invoked when the visibility of Bluetooth adapter changes
- * if you register this callback using bt_adapter_set_visibility_mode_changed_cb().
- *
- * @see bt_adapter_set_visibility_mode_changed_cb()
- * @see bt_adapter_unset_visibility_mode_changed_cb()
- */
-typedef void (*bt_adapter_visibility_mode_changed_cb)
-       (int result, bt_adapter_visibility_mode_e visibility_mode, void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called every second until the visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE.
- * @since_tizen 2.3
- *
- * @remarks  This callback function is called only if visibility mode is #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE.
- * @param[in]  duration  The duration until the visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE (in seconds)
- * @param[in]  user_data  The user data passed from the callback registration function
- * @pre  This function will be invoked if you register this callback using bt_adapter_set_visibility_duration_changed_cb().
- * @see  bt_adapter_set_visibility_duration_changed_cb()
- * @see  bt_adapter_unset_visibility_duration_changed_cb()
- */
-typedef void (*bt_adapter_visibility_duration_changed_cb)(int duration, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when the state of device discovery changes.
- * @since_tizen 2.3
- *
- * @remarks If \a discovery_state is #BT_ADAPTER_DEVICE_DISCOVERY_FOUND,
- * then you can get some information, such as remote device address, remote device name, rssi, and bonding state.
- *
- * @param[in] result The result of the device discovery
- * @param[in] discovery_state The discovery state to be changed
- * @param[in] discovery_info The information of the discovered device \n
- *                                     If \a discovery_state is #BT_ADAPTER_DEVICE_DISCOVERY_STARTED or
- * #BT_ADAPTER_DEVICE_DISCOVERY_FINISHED, then \a discovery_info is NULL.
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @pre Either bt_adapter_start_device_discovery() or bt_adapter_stop_device_discovery() will invoke this function
- * if you register this callback using bt_adapter_set_device_discovery_state_changed_cb().
- *
- * @see bt_adapter_start_device_discovery()
- * @see bt_adapter_stop_device_discovery()
- * @see bt_adapter_set_device_discovery_state_changed_cb()
- * @see bt_adapter_unset_device_discovery_state_changed_cb()
- *
- */
-typedef void (*bt_adapter_device_discovery_state_changed_cb)
-       (int result, bt_adapter_device_discovery_state_e discovery_state, bt_adapter_device_discovery_info_s *discovery_info, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when you get bonded devices repeatedly.
- * @since_tizen 2.3
- *
- * @param[in] device_info The bonded device information
- * @param[in] user_data The user data passed from the foreach function
- * @return @c true to continue with the next iteration of the loop,
- * \n @c false to break out of the loop.
- * @pre bt_adapter_foreach_bonded_device() will invoke this function.
- *
- * @see bt_adapter_foreach_bonded_device()
- *
- */
-typedef bool (*bt_adapter_bonded_device_cb)(bt_device_info_s *device_info, void *user_data);
-
-/**
- * @deprecated Deprecated since 2.3.1
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Called when the state of LE device discovery changes.
- * @since_tizen 2.3
- *
- * @remarks If \a discovery_state is #BT_ADAPTER_LE_DEVICE_DISCOVERY_FOUND,
- * then you can get some information, such as remote LE device address, remote device name, rssi, and bonding state.
- *
- * @param[in] result The result of the LE device discovery
- * @param[in] discovery_state The discovery state to be changed
- * @param[in] discovery_info The information of the discovered LE device \n
- *                                     If \a discovery_state is #BT_ADAPTER_LE_DEVICE_DISCOVERY_STARTED or
- * #BT_ADAPTER_LE_DEVICE_DISCOVERY_FINISHED, then \a discovery_info is NULL.
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @pre Either bt_adapter_start_device_discovery() or bt_adapter_stop_device_discovery() will invoke this function
- * if you register this callback using bt_adapter_set_device_discovery_state_changed_cb().
- *
- * @see bt_adapter_le_start_device_discovery()
- * @see bt_adapter_le_stop_device_discovery()
- * @see bt_adapter_le_set_device_discovery_state_changed_cb()
- * @see bt_adapter_le_unset_device_discovery_state_changed_cb()
- *
- */
-typedef void (*bt_adapter_le_device_discovery_state_changed_cb)
-       (int result, bt_adapter_le_device_discovery_state_e discovery_state, bt_adapter_le_device_discovery_info_s *discovery_info, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Called when the LE advertisement has been found.
- * @since_tizen 2.3.1
- *
- * @param[in] result The result of the LE scan
- * @param[in] info The information of the found LE advertisement.
- * @param[in] user_data The user data passed from the start function
- *
- * @see bt_adapter_le_start_scan()
- *
- */
-typedef void (*bt_adapter_le_scan_result_cb)(int result,
-               bt_adapter_le_device_scan_result_info_s *info, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Called when the state of advertiser changes.
- * @since_tizen 2.3
- *
- * @param[out] result The result of the requested state change of advertiser
- * @param[out] advertiser The handle of the state changed advertiser
- * @param[out] adv_state The advertiser state to be changed
- * @param[out] user_data The user data passed from the start function
- *
- * @see bt_adapter_le_start_advertising_new()
- * @see bt_adapter_le_stop_advertising()
- */
-typedef void (*bt_adapter_le_advertising_state_changed_cb)(int result,
-               bt_advertiser_h advertiser, bt_adapter_le_advertising_state_e adv_state, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Called when the process of creating bond finishes.
- * @since_tizen 2.3
- *
- * @remarks If the remote user does not respond within 60 seconds, a time out will happen with #BT_ERROR_TIMED_OUT result code.\n
- * If bt_device_cancel_bonding() is called and it returns #BT_ERROR_NONE, then this callback function will be called
- * with #BT_ERROR_CANCELLED result. \n
- * If creating a bond succeeds but service search fails, then this callback will be called with #BT_ERROR_SERVICE_SEARCH_FAILED.
- * In this case, you should try service search again by bt_device_start_service_search() to get the supported service list.
- *
- * @param[in] result The result of the bonding device
- * @param[in] device_info The device information which you creates bond with
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @pre Either bt_device_create_bond() will invoke this function
- * if you register this callback using bt_device_set_bond_created_cb().
- *
- * @see bt_device_create_bond()
- * @see bt_device_cancel_bonding()
- * @see bt_device_set_bond_created_cb()
- * @see bt_device_unset_bond_created_cb()
- */
-typedef void (*bt_device_bond_created_cb)(int result, bt_device_info_s *device_info, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when you get connected profiles repeatedly.
- * @since_tizen 2.3
- *
- * @param[in] profile The connected Bluetooth profile
- * @param[in] user_data The user data passed from the foreach function
- * @return @c true to continue with the next iteration of the loop,
- * \n @c false to break out of the loop.
- * @pre bt_device_foreach_connected_profiles() will invoke this function.
- * @see bt_device_foreach_connected_profiles()
- */
-typedef bool (*bt_device_connected_profile)(bt_profile_e profile, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when the bond destroys.
- * @since_tizen 2.3
- *
- * @param[in] result The result that a bond is destroyed
- * @param[in] remote_address The address of the remote Bluetooth device to destroy bond with
- * @param[in] user_data The user data passed from the callback registration function
- * @pre bt_device_destroy_bond() will invoke this function
- * if you register this callback using bt_device_set_bond_destroyed_cb().
- *
- * @see bt_device_destroy_bond()
- * @see bt_device_set_bond_destroyed_cb()
- * @see bt_device_unset_bond_destroyed_cb()
- */
-typedef void (*bt_device_bond_destroyed_cb)(int result, char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when the authorization of device changes.
- * @since_tizen 2.3
- *
- * @param[in] authorization The authorization of device
- * @param[in] remote_address The address of the remote Bluetooth device which is (un)authorized
- * @param[in] user_data The user data passed from the callback registration function
- * @pre bt_device_set_authorization() will invoke this function if you register this callback using bt_device_set_authorization_changed_cb().
- *
- * @see bt_device_set_authorization()
- * @see #bt_device_set_authorization_changed_cb()
- * @see #bt_device_unset_authorization_changed_cb()
- */
-typedef void (*bt_device_authorization_changed_cb)
-       (bt_device_authorization_e authorization, char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when the process of service search finishes.
- * @since_tizen 2.3
- *
- * @remark
- *
- * @param[in] result The result of the service searching
- * @param[in] sdp_info The structure of service lists found on a device
- * @param[in] user_data The user data passed from the callback registration function
- * @pre Either bt_device_start_service_search() will invoke this function
- * if you register this callback using  bt_device_set_service_searched_cb().
- *
- * @see bt_device_start_service_search()
- * @see bt_device_set_service_searched_cb()
- * @see bt_device_unset_service_searched_cb()
- *
- */
-typedef void (*bt_device_service_searched_cb)(int result, bt_device_sdp_info_s *sdp_info, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 2.3
- *
- * @param[in] connected The connection status: (@c true = connected, @c false = disconnected)
- * @param[in] conn_info The connection information
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_device_set_connection_state_changed_cb()
- * @see bt_device_unset_connection_state_changed_cb()
- */
-typedef void (*bt_device_connection_state_changed_cb)(bool connected, bt_device_connection_info_s *conn_info, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Called when you receive data.
- * @since_tizen 2.3
- *
- * @param[in] data The received data from the remote device
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @pre When the connected remote Bluetooth device invokes bt_socket_send_data(),
- *             this function will be invoked if you register this function using bt_socket_set_data_received_cb().
- *
- * @see bt_socket_set_data_received_cb()
- * @see bt_socket_unset_data_received_cb()
- * @see bt_socket_send_data()
- */
-typedef void (*bt_socket_data_received_cb)(bt_socket_received_data_s *data, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Called when the socket connection state changes.
- * @since_tizen 2.3
- *
- * @param[in] result The result of connection state changing
- * @param[in] connection_state The connection state
- * @param[in] connection The connection information which is established or disconnected
- * @param[in] user_data The user data passed from the callback registration function
- * @pre Either bt_socket_connect_rfcomm() will invoke this function.
- * In addition, bt_socket_connection_state_changed_cb() will be invoked when the socket connection state is changed.
- * @see bt_socket_listen_and_accept_rfcomm()
- * @see bt_socket_connect_rfcomm()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-typedef void (*bt_socket_connection_state_changed_cb)
-       (int result, bt_socket_connection_state_e connection_state, bt_socket_connection_s *connection, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Called when a RFCOMM connection is requested.
- * @since_tizen 2.3
- *
- * @param[in] socket_fd  The file descriptor of socket on which a connection is requested
- * @param[in] remote_address  The address of remote device
- * @param[in] user_data The user data passed from the callback registration function
- * @pre If you register this callback function by bt_socket_set_connection_requested_cb(),
- * bt_socket_connection_requested_cb() will be invoked.
- */
-typedef void (*bt_socket_connection_requested_cb) (int socket_fd, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief  Called when an OPP connection is requested.
- * @since_tizen 2.3
- *
- * @details You must call bt_opp_server_accept_connection() if you want to accept.
- * Otherwise, you must call bt_opp_server_reject_connection().
- * @param[in] remote_address  The address of remote device
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_opp_server_accept()
- * @see bt_opp_server_reject()
- */
-typedef void (*bt_opp_server_connection_requested_cb)(const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief  Called when a file is being transferred.
- * @since_tizen 2.3
- *
- * @param[in] file  The path of file to be pushed
- * @param[in] size The file size (bytes)
- * @param[in] percent The progress in percentage (1 ~ 100)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_opp_server_accept()
- * @see bt_opp_server_accept_connection()
- */
-typedef void (*bt_opp_server_transfer_progress_cb) (const char *file, long long size, int percent, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief  Called when a transfer is finished.
- * @since_tizen 2.3
- *
- * @param[in] error_code  The result of push
- * @param[in] file  The path of file to be pushed
- * @param[in] size The file size (bytes)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_opp_server_accept()
- * @see bt_opp_server_accept_connection()
- */
-typedef void (*bt_opp_server_transfer_finished_cb) (int result, const char *file, long long size, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief  Called when OPP server responds to the push request.
- * @since_tizen 2.3
- *
- * @param[in] result  The result of OPP server response
- * @param[in] remote_address  The remote address
- * @param[in] user_data  The user data passed from the callback registration function
- * @pre bt_opp_client_push_files() will invoke this function.
- * @see bt_opp_client_push_files()
- */
-typedef void (*bt_opp_client_push_responded_cb)(int result, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief  Called when each file is being transferred.
- * @since_tizen 2.3
- *
- * @param[in] file  The path of file to be pushed
- * @param[in] size The file size (bytes)
- * @param[in] percent The progress in percentage (1 ~ 100). 100 means that a file is transferred completely.
- * @param[in] user_data The user data passed from the callback registration function
- * @pre bt_opp_client_push_files() will invoke this function.
- * @see bt_opp_client_push_files()
- */
-typedef void (*bt_opp_client_push_progress_cb)(const char *file, long long size, int percent, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief  Called when the push request is finished.
- * @since_tizen 2.3
- *
- * @param[in] result  The result of the push request
- * @param[in] remote_address  The remote address
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_opp_client_push_files()
- */
-typedef void (*bt_opp_client_push_finished_cb)(int result, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 2.3
- *
- * @details  This callback is called when the connection state is changed.
- * When you call bt_audio_connect() or bt_audio_disconnect(), this callback is also called with error result even though these functions fail.
- * @param[in] result  The result of changing the connection state
- * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
- * @param[in] remote_address  The remote address
- * @param[in] type  The type of audio profile except #BT_AUDIO_PROFILE_TYPE_ALL
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_audio_set_connection_state_changed_cb()
- * @see bt_audio_unset_connection_state_changed_cb()
- */
-typedef void (*bt_audio_connection_state_changed_cb) (int result, bool connected, const char *remote_address, bt_audio_profile_type_e type, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when a call handling event happened from Hands-Free.
- * @since_tizen 2.3
- *
- * @param[in] event  The call handling event happened from Hands-Free
- * @param[in] call_id  The call ID
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_call_handling_event_cb()
- * @see bt_ag_unset_call_handling_event_cb()
- */
-typedef void (*bt_ag_call_handling_event_cb) (bt_ag_call_handling_event_e event, unsigned int call_id, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when a multi call handling event happened from Hands-Free.
- * @since_tizen 2.3
- *
- * @param[in] event  The call handling event happened from Hands-Free
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_multi_call_handling_event_cb()
- * @see bt_ag_unset_multi_call_handling_event_cb()
- */
-typedef void (*bt_ag_multi_call_handling_event_cb) (bt_ag_multi_call_handling_event_e event, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when a DTMF(Dual Tone Multi Frequency) is transmitted from Hands-Free.
- * @since_tizen 2.3
- *
- * @param[in] dtmf  The DTMF transmitted from Hands-Free
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_dtmf_transmitted_cb()
- * @see bt_ag_unset_dtmf_transmitted_cb()
- */
-typedef void (*bt_ag_dtmf_transmitted_cb) (const char *dtmf, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when the speaker gain of the remote device is changed.
- * @since_tizen 2.3
- *
- * @param[in] gain The gain of speaker (0 ~ 15)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_speaker_gain_changed_cb()
- * @see bt_ag_unset_speaker_gain_changed_cb()
- */
-typedef void (*bt_ag_speaker_gain_changed_cb) (int gain, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when the microphone gain of the remote device is changed.
- * @since_tizen 2.3
- *
- * @param[in] gain The gain of microphone (0 ~ 15)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_microphone_gain_changed_cb()
- * @see bt_ag_unset_microphone_gain_changed_cb()
- */
-typedef void (*bt_ag_microphone_gain_changed_cb) (int gain, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 2.3
- *
- * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
- * @param[in] remote_address  The remote address
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_target_deinitialize()
- */
-typedef void (*bt_avrcp_target_connection_state_changed_cb) (bool connected, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the equalizer state is changed by the remote control device.
- * @since_tizen 2.3
- *
- * @param[in] equalizer The equalizer state
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_equalizer_state_changed_cb()
- * @see bt_avrcp_unset_equalizer_state_changed_cb()
- */
-typedef void (*bt_avrcp_equalizer_state_changed_cb) (bt_avrcp_equalizer_state_e equalizer, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the repeat mode is changed by the remote control device.
- * @since_tizen 2.3
- *
- * @param[in] repeat The repeat mode
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_repeat_mode_changed_cb()
- * @see bt_avrcp_unset_repeat_mode_changed_cb()
- */
-typedef void (*bt_avrcp_repeat_mode_changed_cb) (bt_avrcp_repeat_mode_e repeat, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the shuffle mode is changed by the remote control device.
- * @since_tizen 2.3
- *
- * @param[in] shuffle The shuffle mode
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_shuffle_mode_changed_cb()
- * @see bt_avrcp_unset_shuffle_mode_changed_cb()
- */
-typedef void (*bt_avrcp_shuffle_mode_changed_cb) (bt_avrcp_shuffle_mode_e shuffle, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the scan mode is changed by the remote control device.
- * @since_tizen 2.3
- *
- * @param[in] shuffle The shuffle mode
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_scan_mode_changed_cb()
- * @see bt_avrcp_unset_scan_mode_changed_cb()
- */
-typedef void (*bt_avrcp_scan_mode_changed_cb) (bt_avrcp_scan_mode_e scan, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 2.3
- *
- * @details  This callback is called when the connection state is changed.
- * When you call bt_hid_host_connect() or bt_hid_host_disconnect(), this callback is also called with error result even though these functions fail.
- * @param[in] result  The result of changing the connection state
- * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
- * @param[in] remote_address  The remote address
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_hid_host_connect()
- * @see bt_hid_host_disconnect()
- */
-typedef void (*bt_hid_host_connection_state_changed_cb) (int result, bool connected, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Called when the connection is established.
- * @since_tizen 2.3
- *
- * @param[in] result  The result of connecting to the remote device
- * @param[in] remote_address  The address of connected remote device
- * @param[in] app_id  The ID of application
- * @param[in] type  The type of HDP(Health Device Profile) channel
- * @param[in] channel  The connected data channel
- * @param[in] user_data The user data passed from the callback registration function
- * @see  bt_hdp_disconnected_cb
- * @see bt_hdp_set_connection_state_changed_cb()
- * @see bt_hdp_unset_connection_state_changed_cb()
- */
-typedef void (*bt_hdp_connected_cb) (int result, const char *remote_address, const char *app_id,
-       bt_hdp_channel_type_e type, unsigned int channel, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Called when the connection is disconnected.
- * @since_tizen 2.3
- *
- * @param[in] result  The result of disconnecting from the remote device
- * @param[in] remote_address  The address of disconnected remote device
- * @param[in] channel  The connected data channel
- * @param[in] user_data The user data passed from the callback registration function
- * @see  bt_hdp_connected_cb
- * @see bt_hdp_set_connection_state_changed_cb()
- * @see bt_hdp_unset_connection_state_changed_cb()
- */
-typedef void (*bt_hdp_disconnected_cb) (int result, const char *remote_address, unsigned int channel, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Called when the you receive the data.
- * @since_tizen 2.3
- *
- * @param[in] channel  The connected data channel
- * @param[in] data  The received data
- * @param[in] size  The size of received data (byte)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_hdp_set_data_received_cb()
- * @see bt_hdp_unset_data_received_cb()
- */
-typedef void (*bt_hdp_data_received_cb) (unsigned int channel, const char *data, unsigned int size, void *user_data);
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_foreach_cb instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when you get the primary services repeatedly.
- * @since_tizen 2.3
- *
- * @param[in]  service  The attribute handle of service
- * @param[in]  user_data  The user data passed from the foreach function
- * @return  @c true to continue with the next iteration of the loop,
- * \n @c false to break out of the loop.
- * @pre  bt_gatt_foreach_primary_services() will invoke this function.
- * @see  bt_gatt_foreach_primary_services()
- */
-typedef bool (*bt_gatt_primary_service_cb) (bt_gatt_attribute_h service, void *user_data);
-
-/**
- * @deprecated Deprecated since 2.3.1. This is not required because characteristic discovery is happened automatically.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called after the characteristics are discovered by bt_gatt_discover_characteristics().
- * @since_tizen 2.3
- *
- * @remarks  If bt_gatt_discover_characteristics() failed, then this callback function is called only once with 0 total and NULL characteristic_handle.
- * @param[in]  result  The result of discovering
- * @param[in]  index  The index of characteristics in a service, starts from 0
- * @param[in]  total  The total number of characteristics in a service
- * @param[in]  characteristic  The attribute handle of characteristic
- * @param[in]  user_data  The user data passed from the request function
- * @return  @c true to continue with the next iteration of the loop,
- * \n @c false to break out of the loop.
- * @pre  bt_gatt_discover_characteristics() will invoke this callback.
- * @see  bt_gatt_discover_characteristics()
- */
-typedef bool (*bt_gatt_characteristics_discovered_cb) (int result, int index, int total, bt_gatt_attribute_h characteristic, void *user_data);
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_foreach_cb instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when you get the included services repeatedly.
- * @since_tizen 2.3
- *
- * @param[in]  service  The attribute handle of service
- * @param[in]  user_data  The user data passed from the foreach function
- * @return  @c true to continue with the next iteration of the loop,
- * \n @c false to break out of the loop.
- * @pre  bt_gatt_foreach_included_services() will invoke this function.
- * @see  bt_gatt_foreach_included_services()
- */
-typedef bool (*bt_gatt_included_service_cb) (bt_gatt_attribute_h service, void *user_data);
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_characteristic_value_changed_cb instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when a characteristic in service is changed.
- * @since_tizen 2.3
- *
- * @param[in]  characteristic  The attribute handle of characteristic
- * @param[in]  value  The value of characteristic (byte array)
- * @param[in]  value_length  The length of value
- * @param[in]  user_data  The user data passed from the callback registration function
- * @see bt_gatt_set_characteristic_changed_cb()
- * @see bt_gatt_unset_characteristic_changed_cb()
- */
-typedef void (*bt_gatt_characteristic_changed_cb) (bt_gatt_attribute_h characteristic, unsigned char *value, int value_length, void *user_data);
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_request_completed_cb instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when a characteristic value is written.
- * @since_tizen 2.3
- *
- * @see bt_gatt_set_characteristic_value()
- */
-typedef void (*bt_gatt_characteristic_write_cb) (void *user_data);
-
-/**
- * @deprecated Deprecated since 2.3.1. Use bt_gatt_client_request_completed_cb instead.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when a characteristic value is read.
- * @since_tizen 2.3
- *
- * @param[in]  value  The value of characteristic (byte array)
- * @param[in]  value_length  The length of value
- * @param[in]  user_data  The user data passed from the foreach function
- * @see bt_gatt_read_characteristic_value()
- */
-typedef void (*bt_gatt_characteristic_read_cb) (unsigned char *value,
-                       int value_length, void *user_data);
-
-/**
- * @deprecated Deprecated since 2.3.1. This is not required because descriptor discovery is happened automatically.
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called after the characteristics descriptors are discovered by bt_gatt_discover_characteristic_descriptor().
- * @since_tizen 2.3
- *
- * @param[in]  result  The result of discovering
- * @param[in]  characteristic_format  The format of the information data.
- *                        characteristic_format = 0x01 indicates UUIDs are 16-bits
- *                        characteristic_format = 0x02 indicates UUIDs are 128-bits
- * @param[in]  total  The total number of elements in characteristic_descriptor
- * @param[in]  characteristic descriptor  The attribute handle and the UUID of characteristic descriptor
- * @param[in]  user_data  The user data passed from the request function
- * @see  bt_gatt_discover_characteristic_descriptor()
- */
-typedef void (*bt_gatt_characteristic_descriptor_discovered_cb) (int result,
-               unsigned char characteristic_format, int total,
-               bt_gatt_attribute_h characteristic_descriptor, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when you get GATT handles repeatedly
- * @since_tizen 2.3.1
- *
- * @param[in] total The total number of GATT handles to be called
- * @param[in] index The index of current GATT handle. It starts from 0.
- * @param[in] gatt_handle The GATT handle
- * @param[in] user_data The user data passed from the foreach function
- *
- * @see bt_gatt_service_foreach_characteristics()
- * @see bt_gatt_service_foreach_included_services()
- * @see bt_gatt_characteristic_foreach_descriptors()
- * @see bt_gatt_client_foreach_services()
- */
-typedef bool (*bt_gatt_foreach_cb) (int total, int index, bt_gatt_h gatt_handle,
-                                   void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when the client request(e.g. read / write) has been completed
- * @since_tizen 2.3.1
- *
- * @param[in] result The result of a request
- * @param[in] request_handle The requesting GATT handle
- * @param[in] user_data The user data passed from the requesting function
- *
- * @see bt_gatt_client_read_value()
- * @see bt_gatt_client_write_value()
- */
-typedef void (*bt_gatt_client_request_completed_cb) (int result,
-               bt_gatt_h request_handle, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when a value of a watched characteristic's GATT handle has been changed
- * @since_tizen 2.3.1
- *
- * @remarks After this function is returned, a changed value is automatically
- * applied to @a characteristic. Before that, @a characteristic has an old value.
- *
- * @param[in] characteristic The characteristic's GATT handle of which value change is informed. It has an old value.
- * @param[in] value The new value
- * @param[in] len The length of @a value
- * @param[in] user_data The user data passed from the registering function
- *
- * @see bt_gatt_client_set_characteristic_value_changed_cb()
- */
-typedef void (*bt_gatt_client_characteristic_value_changed_cb) (bt_gatt_h characteristic,
-               char *value, int len, void *user_data);
-
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when a service of a remote GATT server has been changed.
- * @since_tizen 3.0
- *
- * @param[in] client The handle of a GATT client which is associated with a remote device.
- * @param[in] change_type The changed type
- * @param[in] service_uuid The changed service uuid
- * @param[in] user_data The user data passed from the registering function
- *
- * @see bt_gatt_client_set_characteristic_value_changed_cb()
- */
-typedef void (*bt_gatt_client_service_changed_cb) (bt_gatt_client_h client,
-               bt_gatt_client_service_change_type_e change_type,
-               const char* service_uuid, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Called when the connection state is changed.
- * @since_tizen 2.3
- *
- * @details This callback is called when the connection state is changed.
- * When you called bt_gatt_connect() or bt_gatt_disconnect(), this callback is also called with error result even though these functions fail.
- *
- * @param[in] result The result of changing the connection state.
- * @param[in] connected The state to be changed, @a true means connected state, Otherwise, @a false.
- * @param[in] remote_address The remote_address
- * @param[in] user_data The user data passed from the callback registration function.
- *
- * @see bt_gatt_connect()
- * @see bt_gatt_disconnect()
- * @see bt_gatt_set_connection_state_changed_cb()
- * @see bt_gatt_unset_connection_state_changed_cb()
- */
-typedef void (*bt_gatt_connection_state_changed_cb)(int result, bool connected, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Called when a value of a characteristic or descriptor's GATT handle has been changed.
- * @since_tizen 3.0
- *
- * @details For finishing the request, call the function #bt_gatt_server_send_response in callback.
- *
- * @remarks After this function is returned, a changed value is automatically
- * applied to @a gatt_handle. Before that, @a gatt_handle has an old value.
- * @remarks The @a remote_address must not be freed by application.
- * @remarks The @a server must not be freed by application.
- * @remarks The @a gatt_handle must not be freed by application.
- * @remarks The @a value must not be freed by application.
- *
- * @param[in] remote_address The address of the remote device which requests a change
- * @param[in] request_id The identification of this request. It will be used to send a response.
- * @param[in] server The GATT server handle
- * @param[in] gatt_handle The characteristic or descriptor's GATT handle which has an old value
- * @param[in] response_needed Indicates whether a response is required by the remote device - @c true if required, @c false if not
- * @param[in] offset The requested offset from where the @a gatt_handle value will be updated
- * @param[in] value The new value
- * @param[in] len The length of @a value
- * @param[in] user_data The user data passed from the registration function
- *
- * @see bt_gatt_server_set_write_value_requested_cb()
- * @see bt_gatt_server_send_response()
- */
-typedef void (*bt_gatt_server_write_value_requested_cb) (const char *remote_address,
-                                int request_id, bt_gatt_server_h server,
-                                bt_gatt_h gatt_handle, bool response_needed, int offset,
-                                const char *value, int len, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Called when the remote device requests to read a value on a GATT server.
- * @since_tizen 3.0
- *
- * @details For finishing the request, call the function #bt_gatt_server_send_response in callback.
- *
- * @remarks The @a remote_address must not be freed by application.
- * @remarks The @a server must not be freed by application.
- * @remarks The @a gatt_handle must not be freed by application.
- *
- * @param[in] remote_address The address of the requesting remote device
- * @param[in] request_id The identification of this request. It will be used to send a response.
- * @param[in] server The GATT server handle
- * @param[in] gatt_handle The characteristic or descriptor's GATT handle to be read
- * @param[in] offset The requested offset from where the GATT handle's value is read
- * @param[in] user_data The user data passed from the registration function
- *
- * @see bt_gatt_server_set_read_value_requested_cb()
- * @see bt_gatt_server_send_response()
- */
-typedef void (*bt_gatt_server_read_value_requested_cb) (const char *remote_address,
-               int request_id, bt_gatt_server_h server, bt_gatt_h gatt_handle,
-               int offset, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Called when the remote device enables or disables the Notification/Indication for particular characteristics.
- * @since_tizen 3.0
- *
- * @details By using this callback function, server can know notification state.
- *
- * @remarks The @a server must not be freed by application.
- * @remarks The @a gatt_handle must not be freed by application.
- *
- * @param[in] notify Indicates whether the Notification/Indication is enabled or not
- * @param[in] server The GATT server handle
- * @param[in] gatt_handle The characteristic's GATT handle to be read
- * @param[in] user_data The user data passed from the registration function
- *
- * @see bt_gatt_server_set_read_value_requested_cb()
- */
-typedef void (*bt_gatt_server_characteristic_notification_state_changed_cb) (bool notify,
-                       bt_gatt_server_h server, bt_gatt_h gatt_handle, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Called when the sending notification / indication is done.
- * @since_tizen 3.0
- *
- * @remarks The @a remote_address must not be freed by application.
- * @remarks The @a server must not be freed by application.
- * @remarks The @a characteristic must not be freed by application.
- *
- * @remarks In case of an indication, once a confirmation is received from the remote device this callback will be called. \n
- * This callback will be called several times if there are two or more remote devices which enable a Client Characteristic Configuration Descriptor(CCCD). \n
- * For the last remote device, @a completed will be set as true.
- *
- * @param[in] result The result of a sending operation
- * @param[in] remote_address The address of the remote device
- * @param[in] server The GATT server handle
- * @param[in] characteristic The characteristic's GATT handle
- * @param[in] completed If this callback is for the last remote device which enables a CCCD, it will be true. Or it will be false.
- * @param[in] user_data The user data passed from the requesting function
- *
- * @see bt_gatt_server_notify_characteristic_changed_value()
- */
-typedef void (*bt_gatt_server_notification_sent_cb) (int result,
-               const char *remote_address, bt_gatt_server_h server,
-               bt_gatt_h characteristic, bool completed, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 2.3
- *
- * @param[in] connected  Indicates whether a client is connected or disconnected
- * @param[in] remote_address  The remote address
- * @param[in] interface_name  The interface name. For example, bnep0, bnep1.
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_nap_set_connection_state_changed_cb()
- * @see bt_nap_unset_connection_state_changed_cb()
- */
-typedef void (*bt_nap_connection_state_changed_cb) (bool connected, const char *remote_address, const char *interface_name, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 2.3
- *
- * @details  This callback is called when the connection state is changed.
- * When you call bt_panu_connect() or bt_panu_disconnect(), this callback is also called with error result even though these functions fail.
- * @param[in] result  The result of changing the connection state
- * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
- * @param[in] remote_address  The remote address
- * @param[in] type  The type of PAN service
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_nap_set_connection_state_changed_cb()
- * @see bt_nap_unset_connection_state_changed_cb()
- */
-typedef void (*bt_panu_connection_state_changed_cb) (int result, bool connected, const char *remote_address, bt_panu_service_type_e type, void *user_data);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_NETWORK_BLUETOOTH_TYPE_H__ */
diff --git a/include/tv/bluetooth_type_extension.h b/include/tv/bluetooth_type_extension.h
deleted file mode 100644 (file)
index 7e59c80..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __TIZEN_NETWORK_BLUETOOTH_TYPE_EXTENSION_H__
-#define __TIZEN_NETWORK_BLUETOOTH_TYPE_EXTENSION_H__
-
- #ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/**
- * @file bluetooth_type_extension.h
- */
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when the SCO(Synchronous Connection Oriented link) state is changed.
- * @since_tizen 2.3
- *
- * @details  This callback is called when the SCO state is changed.
- * When you call bt_ag_open_sco() or bt_ag_close_sco(), this callback is also called with error result even though these functions failed.
- * @param[in] result  The result of changing the connection state
- * @param[in] opened  The state to be changed: (@c true = opened, @c  false = not opened)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_sco_state_changed_cb()
- * @see bt_ag_unset_sco_state_changed_cb()
- * @see bt_ag_open_sco()
- * @see bt_ag_close_sco()
- */
-typedef void (*bt_ag_sco_state_changed_cb) (int result, bool opened, void *user_data);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_NETWORK_BLUETOOTH_TYPE_EXTENSION_H__ */
diff --git a/include/tv/bluetooth_type_internal.h b/include/tv/bluetooth_type_internal.h
deleted file mode 100644 (file)
index dcb2145..0000000
+++ /dev/null
@@ -1,577 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __TIZEN_NETWORK_BLUETOOTH_TYPE_INTERNAL_H__
-#define __TIZEN_NETWORK_BLUETOOTH_TYPE_INTERNAL_H__
-
- #ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/**
- * @file bluetooth_type_internal.h
- */
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth adapter le state.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_LE_DISABLED = 0x00, /**< Bluetooth le is disabled */
-       BT_ADAPTER_LE_ENABLED, /**< Bluetooth le is enabled */
-} bt_adapter_le_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Called when the Bluetooth adapter le state changes.
- * @since_tizen 2.3
- *
- * @param[in]   result  The result of the adapter state changing
- * @param[in]   adapter_le_state  The adapter le state to be changed
- * @param[in]   user_data  The user data passed from the callback registration function
- * @pre Either bt_adapter_le_enable() or bt_adapter_le_disable() will invoke this callback if you register this callback using bt_adapter_le_set_state_changed_cb().
- * @see bt_adapter_le_enable()
- * @see bt_adapter_le_disable()
- * @see bt_adapter_le_set_state_changed_cb()
- * @see bt_adapter_le_unset_state_changed_cb()
- */
-typedef void (*bt_adapter_le_state_changed_cb)(int result, bt_adapter_le_state_e adapter_le_state, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Enumerations for the call state
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_AG_CALL_EVENT_IDLE = 0x00,  /**< Idle */
-       BT_AG_CALL_EVENT_ANSWERED,  /**< Answered */
-       BT_AG_CALL_EVENT_HELD,  /**< Held */
-       BT_AG_CALL_EVENT_RETRIEVED,  /**< Retrieved */
-       BT_AG_CALL_EVENT_DIALING,  /**< Dialing */
-       BT_AG_CALL_EVENT_ALERTING,  /**< Alerting */
-       BT_AG_CALL_EVENT_INCOMING,  /**< Incoming */
-} bt_ag_call_event_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Enumerations for the call state
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_AG_CALL_STATE_IDLE = 0x00,  /**< Idle state */
-       BT_AG_CALL_STATE_ACTIVE,  /**< Active state */
-       BT_AG_CALL_STATE_HELD,  /**< Held state */
-       BT_AG_CALL_STATE_DIALING,  /**< Dialing state */
-       BT_AG_CALL_STATE_ALERTING,  /**< Alerting state */
-       BT_AG_CALL_STATE_INCOMING,  /**< Incoming state */
-       BT_AG_CALL_STATE_WAITING,  /**< Waiting for connected indication event after answering an incoming call*/
-} bt_ag_call_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_MODULE
- * @brief  Enumerations for the transfer type
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_TRANSFER_INBOUND,        /**< Inbound Transfer Type */
-       BT_TRANSFER_OUTBOUND,       /**< Outbound Transfer Type */
-} bt_opp_transfer_type_t;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Enumerations of the Bluetooth A2DP role.
- * @since_tizen 4.0
- */
-typedef enum {
-       BT_A2DP_SOURCE,
-       BT_A2DP_SINK,
-} bt_audio_role_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when the connectable state changes.
- * @since_tizen 2.3
- *
- * @param[in] result The result of the connectable state changing
- * @param[in] connectable The connectable to be changed
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @pre This function will be invoked when the connectable state of local Bluetooth adapter changes
- * if you register this callback using bt_adapter_set_connectable_changed_cb().
- *
- * @see bt_adapter_set_connectable()
- * @see bt_adapter_set_connectable_changed_cb()
- * @see bt_adapter_unset_connectable_changed_cb()
- */
-typedef void (*bt_adapter_connectable_changed_cb)
-       (int result, bool connectable, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief  Called when the push is requested.
- * @since_tizen 2.3
- *
- * @details You must call bt_opp_server_accept() if you want to accept.
- * Otherwise, you must call bt_opp_server_reject().
- * @param[in] file  The path of file to be pushed
- * @param[in] size The file size (bytes)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_opp_server_initialize()
- */
-typedef void (*bt_opp_server_push_requested_cb)(const char *file, int size, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth adapter le scan type.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_LE_PASSIVE_SCAN = 0x00,
-       BT_ADAPTER_LE_ACTIVE_SCAN
-} bt_adapter_le_scan_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when the manufacturer dat changes.
- * @since_tizen 2.3
- *
- * @param[in]   data           The manufacurer data of the Bluetooth device to be changed
- * @param[in]   len                    The length of @a data
- * @param[in]   user_data      The user data passed from the callback registration function
- * @pre This function will be invoked when the manufacturer data of Bluetooth adapter changes
- * if callback is registered using bt_adapter_set_manufacturer_data_changed_cb().
- * @see bt_adapter_set_manufacturer_data()
- * @see bt_adapter_set_manufacturer_data_changed_cb()
- * @see bt_adapter_unset_manufacturer_data_changed_cb()
- */
-typedef void (*bt_adapter_manufacturer_data_changed_cb) (char *data,
-               int len, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called repeatedly when you get the devices connected with specific profile.
- * @since_tizen 3.0
- *
- * @param[in]   remote_address The address of remote device
- * @param[in]   user_data      The user data passed from the callback registration function
- * @return @c true to continue with the next iteration of the loop,
- * \n @c false to break out of the loop.
- * @pre bt_adapter_foreach_profile_connected_devices() will invoke this function.
- * @see bt_adapter_foreach_profile_connected_devices()
- */
-typedef bool (*bt_adapter_profile_connected_devices_cb)(const char *remote_address, void *user_data);
-
-/**
-* @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
-* @brief DPM BT allowance state
-* @since_tizen 3.0
-*/
-typedef enum {
-       BT_DPM_ERROR      = -1,   /**< bluetooth allowance error */
-       BT_DPM_BT_ALLOWED,        /**< bluetooth allowance allowed */
-       BT_DPM_HANDSFREE_ONLY, /**< bluetooth allowance handsfree only */
-       BT_DPM_BT_RESTRICTED,  /**< bluetooth allowance restricted */
-} bt_dpm_allow_e;
-
-/**
-* @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
-* @brief DPM Policy status
-* @since_tizen 3.0
-*/
-typedef enum {
-       BT_DPM_STATUS_ERROR = -1,
-
-       BT_DPM_ALLOWED   = 0,    /**< DPM Policy status allowed. */
-       BT_DPM_RESTRICTED                = 1,    /**< DPM Policy status restricted. */
-
-       BT_DPM_ENABLE                    = 1,    /**< DPM Policy status enabled. */
-       BT_DPM_DISABLE  = 0,     /**< DPM Policy status disabled. */
-
-       BT_DPM_FALSE     = 0,   /**< DPM Policy status false. */
-       BT_DPM_TRUE             = 1,    /**< DPM Policy status true. */
-} bt_dpm_status_e;
-
-/**
-* @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
-* @brief DPM Profile states
-* @since_tizen 3.0
-*/
-typedef enum {
-       BT_DPM_POLICY_A2DP_PROFILE_STATE,
-       BT_DPM_POLICY_AVRCP_PROFILE_STATE,
-       BT_DPM_POLICY_BPP_PROFILE_STATE,
-       BT_DPM_POLICY_DUN_PROFILE_STATE,
-       BT_DPM_POLICY_FTP_PROFILE_STATE,
-       BT_DPM_POLICY_HFP_PROFILE_STATE,
-       BT_DPM_POLICY_HSP_PROFILE_STATE,
-       BT_DPM_POLICY_PBAP_PROFILE_STATE,
-       BT_DPM_POLICY_SAP_PROFILE_STATE,
-       BT_DPM_POLICY_SPP_PROFILE_STATE,
-       BT_DPM_PROFILE_NONE,
-} bt_dpm_profile_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief The handle to control Bluetooth LE scan filter
- * @since_tizen 2.4
- */
-typedef void *bt_scan_filter_h;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Device LE connection update structure.
- * @since_tizen 2.3
- */
-typedef struct {
-       unsigned int interval_min;   /**< Minimum value for the connection event interval (msec) */
-       unsigned int interval_max;   /**< Maximum value for the connection event interval (msec) */
-       unsigned int latency;   /**< Slave latency (msec) */
-       unsigned int time_out;   /**< Supervision timeout (msec) */
-} bt_le_conn_update_s;
-
-/**
- * Structure to DPM device list
- */
-typedef struct {
-       int count;
-       char **devices;
-} bt_dpm_device_list_s;
-
-/**
- * Structure to DPM uuid list
- */
-typedef struct {
-       int count;
-       char **uuids;
-} bt_dpm_uuids_list_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Enumerations of the Bluetooth HID mouse's button.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_HID_MOUSE_BUTTON_NONE = 0x00, /**<The mouse's none value*/
-       BT_HID_MOUSE_BUTTON_LEFT = 0x01, /**<The mouse's left button value*/
-       BT_HID_MOUSE_BUTTON_RIGHT = 0x02,  /**<The mouse's right button value*/
-       BT_HID_MOUSE_BUTTON_MIDDLE = 0x04 /**<The mouse's middle button value*/
-} bt_hid_mouse_button_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief The structure type containing the HID mouse event information.
- * @since_tizen 3.0
- *
- * @see bt_hid_device_send_mouse_event()
- */
-typedef struct {
-       int buttons; /**< The button values, we can combine key's values when we pressed multiple mouse buttons*/
-       int axis_x; /**< The location's x value, -128 ~127 */
-       int axis_y; /**< The location's y value, -128 ~127 */
-       int padding; /**< The padding value, -128 ~127 */
-} bt_hid_mouse_data_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief The structure type containing the HID keyboard event information.
- * @since_tizen 3.0
- * @details If you want to know more detail values, refer to http://www.usb.org/developers/hidpage/ and see "HID Usage Tables"
- *
- * @see bt_hid_device_send_key_event()
- */
-typedef struct {
-       unsigned char modifier; /**< The modifier keys : such as shift, alt */
-       unsigned char key[8]; /**< The key value - currently pressed keys : Max 8 at once */
-} bt_hid_key_data_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Enumerations of the Bluetooth HID header type.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_HID_HEADER_HANDSHAKE, /**< The Bluetooth HID header type: Handshake */
-       BT_HID_HEADER_HID_CONTROL, /**< The Bluetooth HID header type: HID control */
-       BT_HID_HEADER_GET_REPORT, /**< The Bluetooth HID header type: Get report */
-       BT_HID_HEADER_SET_REPORT, /**< The Bluetooth HID header type: Set report */
-       BT_HID_HEADER_GET_PROTOCOL, /**< The Bluetooth HID header type: Get protocol */
-       BT_HID_HEADER_SET_PROTOCOL, /**< The Bluetooth HID header type: Set protocol */
-       BT_HID_HEADER_DATA, /**< The Bluetooth HID header type: Data */
-       BT_HID_HEADER_UNKNOWN /**< The Bluetooth HID header type: Unknown */
-} bt_hid_header_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Enumerations of the Bluetooth HID parameter type.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_HID_PARAM_DATA_RTYPE_INPUT, /**< Parameter type: Input */
-       BT_HID_PARAM_DATA_RTYPE_OUTPUT /**< Parameter type: Output */
-} bt_hid_param_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Enumerations of the Bluetooth HID handshake type.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_HID_HANDSHAKE_SUCCESSFUL = 0x00, /**< Handshake error code none */
-       BT_HID_HANDSHAKE_NOT_READY, /**< Handshake error code Not Ready */
-       BT_HID_HANDSHAKE_ERR_INVALID_REPORT_ID, /**< Handshake error code send invalid report id */
-       BT_HID_HANDSHAKE_ERR_UNSUPPORTED_REQUEST, /**< Handshake error code request unsupported request */
-       BT_HID_HANDSHAKE_ERR_INVALID_PARAMETER, /**< Handshake error code received invalid parameter */
-       BT_HID_HANDSHAKE_ERR_UNKNOWN = 0x0e, /**< unknown error */
-       BT_HID_HANDSHAKE_ERR_FATAL /**< Fatal error */
-} bt_hid_handshake_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief The structure type containing data received from the HID Host.
- * @since_tizen 3.0
- */
-typedef struct {
-       const char *address;  /**< The remote device's address  */
-       bt_hid_header_type_e header_type;  /**< The header type */
-       bt_hid_param_type_e param_type;  /**< The parameter type */
-       int data_size;  /**< The length of the received data */
-       const char *data;     /**< The received data */
-} bt_hid_device_received_data_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief  Called when the Bluetooth HID Device connection state changes.
- * @details The following error codes can be delivered: \n
- *             #BT_ERROR_NONE \n
- *             #BT_ERROR_OPERATION_FAILED \n
- * @since_tizen 3.0
- *
- * @param[in]   result  The result of changing the connection state.
- * @param[in]   connected  The requested state. @a true means the connection is enabled, @false means the connection is disabled.
- * @param[in]   remote_address  The remote device's address
- * @param[in]   user_data  The user data passed from the callback registration function
- * @see bt_hid_device_activate()
- */
-typedef void (*bt_hid_device_connection_state_changed_cb) (int result,
-       bool connected, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief  Called when the HID Device receives data from the HID Host.
- * @details The following error codes can be delivered: \n
- *             #BT_ERROR_NONE \n
- *             #BT_ERROR_OPERATION_FAILED \n
- * @since_tizen 3.0
- *
- * @param[in]   data  The data received from the HID Host.
- * @param[in]   user_data  The user data passed from the callback registration function
- * @see bt_hid_device_set_data_received_cb()
- */
-typedef void (*bt_hid_device_data_received_cb)(const bt_hid_device_received_data_s *data, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Trusted Profile enumeration.
- * @since_tizen 3.0
- *
- * @see bt_device_set_profile_trusted()
- * @see bt_device_get_profile_trusted()
- */
-typedef enum {
-       BT_TRUSTED_PROFILE_PBAP = 1,
-       BT_TRUSTED_PROFILE_MAP,
-       BT_TRUSTED_PROFILE_SAP,
-       BT_TRUSTED_PROFILE_ALL = 0xFFFFFFFF,
-} bt_trusted_profile_t;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Restricted Profile enumeration.
- * @since_tizen 3.0
- *
- * @see bt_device_set_profile_restricted()
- * @see bt_device_get_profile_restricted()
- */
-typedef enum {
-       BT_RESTRICTED_PROFILE_HFP_HS = 1,
-       BT_RESTRICTED_PROFILE_A2DP,
-} bt_restricted_profile_t;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Enumerations of the authentication event types.
- * @since_tizen 3.0
- *
- */
-typedef enum {
-       BT_AUTH_KEYBOARD_PASSKEY_DISPLAY = 0, /**< PIN display event to user for entering PIN in keyboard */
-       BT_AUTH_PIN_REQUEST,                  /**< Legacy PIN or PASSKEY request event */
-       BT_AUTH_PASSKEY_CONFIRM_REQUEST,      /**< PASSKEY confirmation event to match PASSKEY in remote device */
-} bt_authentication_type_info_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
- * @brief Proximity Profile Role
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_PROXIMITY_REPORTER, /**< Proximity Profile Reporter role. */
-       BT_PROXIMITY_MONITOR, /**< Proximity Profile Monitor role. */
-} bt_proximity_role_t;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
- * @brief Proximity Profile Role
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_PROXIMITY_LINKLOSS_ALERT = 0x01, /**< Proximity profile Link Loss alert property */
-       BT_PROXIMITY_IMMEDIATE_ALERT = 0x02, /**< Proximity Profile Immediate alert property */
-       BT_PROXIMITY_TX_POWER = 0x04, /**< Proximity Profile Immediate alert property */
-} bt_proximity_property_t;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when Trusted Profiles is changed.
- * @since_tizen 3.0
- *
- * @param[in]   result  The result of supported profile callback
- * @param[in]   remote_address  Address of remote device
- * @param[in]   trusted_profiles  Trusted profile FLAG
- * @param[in]   user_data  The user data passed from the callback registration function
- * @see bt_device_set_trusted_profile_cb()
- * @see bt_device_unset_trusted_profile_cb()
- */
-typedef void (*bt_device_trusted_profiles_cb)
-       (int result, char *remote_address, int trusted_profile, bool supported, bool trusted, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Attribute protocol MTU change information structure.
- * @since_tizen 3.0
- *
- * @see bt_device_att_mtu_changed_cb()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       unsigned int mtu;               /** < MTU value */
-       unsigned int status;            /** < request status*/
-} bt_device_att_mtu_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 3.0
- *
- * @param[in] connected The connection status: (@c true = connected, @c false = disconnected)
- * @param[in] conn_info The connection information
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_device_set_connection_state_changed_cb()
- * @see bt_device_unset_connection_state_changed_cb()
- */
-typedef void (*bt_device_att_mtu_changed_cb)(int result, bt_device_att_mtu_info_s *mtu_info, void *user_data);
-
-/**
- * @internal
- * @ingroup
- * @brief IPSP Init state changed callback
- * @since_tizen 3.0
- */
-typedef void (*bt_ipsp_init_state_changed_cb)
-               (int result, bool ipsp_initialized, void *user_data);
-
-/**
- * @internal
- * @ingroup
- * @since_tizen 3.0
-
- * @brief IPSP Connection state changed callback
- */
-typedef void (*bt_ipsp_connection_state_changed_cb)
-               (int result, bool connected, const char *remote_address, const char *iface_name, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Called when remote device requests authentication.
- * @since_tizen 3.0
- * @param[in] result
- * @param[in] auth_type
- *             typedef enum {
- *              BT_AUTH_KEYBOARD_PASSKEY_DISPLAY = 0, : PIN display event to user for entering PIN in keyboard
- *              BT_AUTH_PIN_REQUEST,                  : Legacy PIN or PASSKEY request event
- *              BT_AUTH_PASSKEY_CONFIRM_REQUEST,      : PASSKEY confirmation event to match PASSKEY in remote device
- *             } bt_authentication_type_info_e;
- * @param[in] device_name  Name of the remote device
- * @param[in] remote_addr  Remote BD address
- * @param[in] pass_key     PASSKEY string
- *            PASSKEY string is valid only if authentication types are following
- *             a/ BT_AUTH_KEYBOARD_PASSKEY_DISPLAY
- *             b/ BT_AUTH_PASSKEY_CONFIRM_REQUEST
- *            pass_key string will be invalid if authentication event is of type BT_AUTH_PIN_REQUEST
- *            as this event indicates that user MUST enter PIN or PASSKEY and perform authentication.
- *
- *            Upon receiving BT_AUTH_KEYBOARD_PASSKEY_DISPLAY event, user should enter PASSKEY in keyboard
- *            Application can also call bt_device_cancel_bonding() Upon receiving BT_AUTH_KEYBOARD_PASSKEY_DISPLAY
- *            event which will fail the on-going pairing with remote device.
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_adapter_set_authentication_req_cb()
- */
-typedef void (*bt_adapter_authentication_req_cb)(int result, bt_authentication_type_info_e auth_type,
-                                               char *device_name, char *remote_addr,
-                                               char *pass_key, void *user_data);
-
-/**
- * @brief Proximity profile property changed callback
- */
-typedef void (*bt_proximity_property_changed_cb)
-               (int result, const char *remote_address, int role, int service_type, int prop_value, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Samsung XSAT Vendor dependent command.
- * @since_tizen 2.3.2
- */
-typedef struct {
-        int app_id;  /**< The application ID */
-        char *message;  /**< Command message */
-} bt_hf_vendor_dep_at_cmd_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when a XSAT vendor command is transmitted from Hands-Free.
- * @since_tizen 2.3
- *
- * @param[in] command  The XSAT vendor command transmitted from Hands-Free
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_vendor_cmd_cb()
- * @see bt_ag_unset_vendor_cmd_cb()
- */
-typedef void (*bt_ag_vendor_cmd_cb) (char *command, void *user_data);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_NETWORK_BLUETOOTH_TYPE_INTERNAL_H__ */
diff --git a/include/wearable/bluetooth.h b/include/wearable/bluetooth.h
deleted file mode 100644 (file)
index a68580e..0000000
+++ /dev/null
@@ -1,5306 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __TIZEN_NETWORK_BLUETOOTH_H__
-#define __TIZEN_NETWORK_BLUETOOTH_H__
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdbool.h>
-#include <tizen_error.h>
-#include <tizen.h>
-
-#include <bluetooth_type.h>
-
-#ifndef TIZEN_DEPRECATED_API
-#define TIZEN_DEPRECATED_API __attribute__((__visibility__("default"), deprecated))
-#endif
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/**
- * @file        bluetooth.h
- * @brief       API to control the Bluetooth adapter and devices and communications.
- * @ingroup     CAPI_NETWORK_BLUETOOTH_MODULE
- */
-
-
-/**
- * @addtogroup CAPI_NETWORK_BLUETOOTH_MODULE
- * @{
- */
-
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_MODULE
- * @brief Initializes the Bluetooth API.
- * @since_tizen 2.3.1
- *
- * @remarks This function must be called before Bluetooth API starts. \n
- * You must free all resources of the Bluetooth service by calling bt_deinitialize() if Bluetooth service is no longer needed.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see  bt_deinitialize()
- */
-int bt_initialize(void);
-
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_MODULE
- * @brief Releases all resources of the Bluetooth API.
- * @since_tizen 2.3.1
- *
- * @remarks This function must be called if Bluetooth API is no longer needed.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre Bluetooth API must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- */
-int bt_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_MODULE
- * @brief Gets the specification name for the given UUID.
- * @since_tizen 3.0
- *
- * @remarks The @a name must be released using free().
- *
- * @param[in] uuid The UUID
- * @param[out] name The specification name defined at www.bluetooth.com
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_get_uuid()
- */
-int bt_get_uuid_name(const char *uuid, char **name);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the current state of local Bluetooth adapter.
- * @since_tizen 2.3.1
- *
- * @param[out] adapter_state The current adapter state
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- */
-int bt_adapter_get_state(bt_adapter_state_e *adapter_state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the address of local Bluetooth adapter.
- * @since_tizen 2.3.1
- *
- * @remarks The @a local_address must be released with free() by you.
- *
- * @param[out] local_address The device address of local Bluetooth adapter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see bt_adapter_get_name()
- */
-int bt_adapter_get_address(char **local_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the name of local Bluetooth adapter.
- * @since_tizen 2.3.1
- *
- * @details Use this function to get the friendly name associated with Bluetooth
- * device, retrieved by the remote Bluetooth devices.
- *
- * @remarks The @a local_name must be released with free() by you.
- *
- * @param[out] local_name  The local device name
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_set_name()
- */
-int bt_adapter_get_name(char **local_name);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Sets the name of local Bluetooth adapter.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] local_name The name of the Bluetooth device. \n
- *                             The maximum length is 248 characters.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post bt_adapter_name_changed_cb() will be invoked if this function returns #BT_ERROR_NONE.
- *
- * @see bt_adapter_get_name()
- * @see bt_adapter_name_changed_cb()
- * @see bt_adapter_set_name_changed_cb()
- * @see bt_adapter_unset_name_changed_cb()
- */
-int bt_adapter_set_name(const char *local_name);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Gets the visibility mode of local Bluetooth adapter.
- * @since_tizen 2.3.1
- * @param[out] mode  The visibility mode of the Bluetooth device
- * @param[out] duration  The duration until the visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE (in seconds).
- * @a duration is valid only if @a mode is #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE. This value can be NULL.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_adapter_get_visibility(bt_adapter_visibility_mode_e *mode, int *duration);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Starts the device discovery, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @details If a device is discovered, bt_adapter_device_discovery_state_changed_cb() will be invoked
- * with #BT_ADAPTER_DEVICE_DISCOVERY_FOUND, and then bt_adapter_device_discovery_state_changed_cb()
- * will be called with #BT_ADAPTER_DEVICE_DISCOVERY_FINISHED in case of the completion or cancellation of the discovery.
- *
- * @remarks To connect to peer Bluetooth device, you need to know its Bluetooth address. \n
- * The device discovery can be stopped by bt_adapter_stop_device_discovery().
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post This function invokes bt_adapter_device_discovery_state_changed_cb().
- *
- * @see bt_adapter_is_discovering()
- * @see bt_adapter_stop_device_discovery()
- * @see bt_adapter_device_discovery_state_changed_cb()
- * @see bt_adapter_set_device_discovery_state_changed_cb()
- * @see bt_adapter_unset_device_discovery_state_changed_cb()
- */
-int bt_adapter_start_device_discovery(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Stops the device discovery, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remarks The device discovery process will take 10 ~ 20 seconds to get all the devices in vicinity.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation is not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The device discovery must be in progress with bt_adapter_start_device_discovery().
- * @post This function invokes bt_adapter_device_discovery_state_changed_cb().
- *
- * @see bt_adapter_is_discovering()
- * @see bt_adapter_start_device_discovery()
- * @see bt_adapter_set_device_discovery_state_changed_cb()
- * @see bt_adapter_unset_device_discovery_state_changed_cb()
- * @see bt_adapter_device_discovery_state_changed_cb()
- */
-int bt_adapter_stop_device_discovery(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Checks for the device discovery is in progress or not.
- * @since_tizen 2.3.1
- *
- * @remarks If Bluetooth discovery is in progress, other operations are not allowed and
- * you have to either stop the discovery operation, or wait for it to be finished,
- * before performing other operations.
-
- * @param[out] is_discovering The discovering status: (@c true = in progress , @c  false = not in progress )
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_start_device_discovery()
- * @see bt_adapter_stop_device_discovery()
- */
-int bt_adapter_is_discovering(bool *is_discovering);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Get the service mask from the uuid list.
- * @since_tizen 2.3.1
- *
- * @param[in] uuids The UUID list of the device.
- * @param[in] no_of_service The number of the UUID list count.
- * @param[out] service_mask_list Service mask list converted from the given UUID list.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_service_class_t
- */
-int bt_device_get_service_mask_from_uuid_list(char **uuids,
-                                     int no_of_service,
-                                     bt_service_class_t *service_mask_list);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Retrieves the device information of all bonded devices.
- * @since_tizen 2.3.1
- *
- * @param [in] callback The callback function to invoke
- * @param [in] user_data The user data passed from the foreach function
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post This function invokes bt_adapter_bonded_device_cb().
- *
- * @see bt_adapter_bonded_device_cb()
- */
-int bt_adapter_foreach_bonded_device(bt_adapter_bonded_device_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the device information of a bonded device.
- * @since_tizen 2.3.1
- * @remarks The @a device_info must be released with bt_adapter_free_device_info() by you .
- *
- * @param [in] remote_address The address of remote device
- * @param [out] device_info The bonded device information
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post This function invokes bt_adapter_bonded_device_cb().
- *
- * @see bt_adapter_bonded_device_cb()
- */
-int bt_adapter_get_bonded_device_info(const char *remote_address, bt_device_info_s **device_info);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Frees device info.
- * @since_tizen 2.3.1
- *
- * @param [in] device_info The bonded device information
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_adapter_get_bonded_device_info()
- */
-int bt_adapter_free_device_info(bt_device_info_s *device_info);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Checks whether the UUID of service is used or not
- * @since_tizen 2.3.1
- * @param[in] service_uuid The UUID of service
- * @param[out] used Indicates whether the service is used or not
- * @return true on success, otherwise false.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_adapter_is_service_used(const char *service_uuid, bool *used);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked when the Bluetooth adapter state changes.
- * @since_tizen 2.3.1
- *
- * @param[in] callback The callback function to invoke
- * @param[in] user_data        The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_state_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_state_changed_cb()
- * @see bt_adapter_set_state_changed_cb()
- * @see bt_adapter_unset_state_changed_cb()
- */
-int bt_adapter_set_state_changed_cb(bt_adapter_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3.1
- *
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- * @see bt_adapter_set_state_changed_cb()
- */
-int bt_adapter_unset_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked when the name of Bluetooth adapter changes.
- * @since_tizen 2.3.1
- *
- * @param[in] callback The callback function to invoke
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_adapter_name_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_name_changed_cb()
- * @see bt_adapter_unset_name_changed_cb()
- */
-int bt_adapter_set_name_changed_cb(bt_adapter_name_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3.1
- *
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- * @see bt_adapter_set_name_changed_cb()
- */
-int bt_adapter_unset_name_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked when the visibility mode changes.
- * @since_tizen 2.3.1
- *
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_visibility_mode_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_visibility_mode_changed_cb()
- * @see bt_adapter_unset_visibility_mode_changed_cb()
- */
-int bt_adapter_set_visibility_mode_changed_cb(bt_adapter_visibility_mode_changed_cb callback, void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Unregisters the callback function.
- * @since_tizen 2.3.1
- *
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The Bluetooth service must be initialized with bt_initialize().
- *
- * @see  bt_initialize()
- * @see  bt_adapter_set_visibility_mode_changed_cb()
- */
-int bt_adapter_unset_visibility_mode_changed_cb(void);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked every second
- * @since_tizen 2.3.1
- * until the visibility mode is changed from #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE
- * to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE.
- * @details  When you set visibility mode as #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE,
- * @a callback will be called every second until visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE.
- * @param[in]  callback  The callback function to register
- * @param[in]  user_data  The user data to be passed to the callback function
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The Bluetooth service must be initialized by bt_initialize().
- * @post  bt_adapter_visibility_duration_changed_cb() will be invoked.
- * @see  bt_initialize()
- * @see  bt_adapter_visibility_duration_changed_cb()
- * @see  bt_adapter_unset_visibility_duration_changed_cb()
- */
-int bt_adapter_set_visibility_duration_changed_cb(bt_adapter_visibility_duration_changed_cb callback, void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief       Unregisters the callback function.
- * @since_tizen 2.3.1
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The Bluetooth service must be initialized with bt_initialize().
- * @see  bt_initialize()
- * @see  bt_adapter_set_visibility_duration_changed_cb()
- */
-int bt_adapter_unset_visibility_duration_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked when the device discovery state changes.
- * @since_tizen 2.3.1
- *
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_device_discovery_state_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_device_discovery_state_changed_cb()
- * @see bt_adapter_set_device_discovery_state_changed_cb()
- * @see bt_adapter_unset_device_discovery_state_changed_cb()
- */
-int bt_adapter_set_device_discovery_state_changed_cb(bt_adapter_device_discovery_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3.1
- *
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- * @see bt_adapter_set_device_discovery_state_changed_cb()
- */
-int bt_adapter_unset_device_discovery_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Get the Hash and Randmoizer value, synchronously.
- * @since_tizen 2.3.1
- *
- * @param[out] hash The hash value received from the controller
- * @param[out] randomizer The hash value received from the controller
- * @param[out] hash_len The length of the hash value
- * @param[out] randomizer_len The length of the randomizer value
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- */
-int bt_adapter_get_local_oob_data(unsigned char **hash, unsigned char **randomizer,
-                                       int *hash_len, int *randomizer_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Sets the Hash and Randmoizer value, synchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address Remote device address
- * @param[in] hash The hash value received from the controller
- * @param[in] randomizer The hash value received from the controller
- * @param[in] hash_len The length of the hash value. Allowed value is 16
- * @param[in] randomizer_len The length of the randomizer value. Allowed value is 16
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- */
-int bt_adapter_set_remote_oob_data(const char *remote_address,
-                               unsigned char *hash, unsigned char *randomizer,
-                               int hash_len, int randomizer_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the Hash and Randmoizer value, synchronously.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks The @a hash192, randomizer192, hash256 and randomizer256 must be released using free()
- *
- * @param[out] hash192 The hash value derived from the P-192 public key
- * @param[out] randomizer192 The randomizer value associated with the P-192 public key
- * @param[out] hash192_len The length of @a hash192
- * @param[out] randomizer192_len The length of @a randomizer192
- * @param[out] hash256 The hash value derived from the P-256 public key
- * @param[out] randomizer256 The randomizer value associated with the P-256 public key
- * @param[out] hash256_len The length of @a hash256
- * @param[out] randomizer256_len The length of @a randomizer256
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- */
-int bt_adapter_get_local_oob_ext_data(unsigned char **hash192, unsigned char **randomizer192,
-               int *hash192_len, int *randomizer192_len,
-               unsigned char **hash256, unsigned char **randomizer256,
-               int *hash256_len, int *randomizer256_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Sets the Hash and Randmoizer value, synchronously.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address Remote device address
- * @param[in] hash192 The P-192 hash value received via OOB from remote device
- * @param[in] randomizer192 The P-192 randomizer value received via OOB from remote device
- * @param[in] hash192_len The length of @a hash192
- * @param[in] randomizer192_len The length of @a randomizer192
- * @param[in] hash256 The P-256 hash value received via OOB from remote device
- * @param[in] randomizer256 The P-256 randomizer value received via OOB from remote device
- * @param[in] hash256_len The length of @a hash256
- * @param[in] randomizer256_len The length of @a randomizer256
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- */
-int bt_adapter_set_remote_oob_ext_data(const char *remote_address,
-               const unsigned char *hash192, const unsigned char *randomizer192,
-               int hash192_len, int randomizer192_len,
-               const unsigned char *hash256, const unsigned char *randomizer256,
-               int hash256_len, int randomizer256_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Deletes the Hash and Randomizer value, synchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address Remote device address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- */
-int bt_adapter_remove_remote_oob_data(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Starts the LE scan to find LE advertisement.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @details If a LE advertisement is found, bt_adapter_le_scan_result_cb() will be invoked.
- *
- * @param[in] cb The callback to report the result of this function
- * @param[in] user_data The user data to be passed when callback is called
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post This function invokes bt_adapter_le_scan_result_cb().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_start_scan(bt_adapter_le_scan_result_cb cb, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Stops the LE scan.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation is not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The LE scan must be in progress with bt_adapter_le_start_scan().
- *
- * @see bt_adapter_le_start_scan()
- */
-int bt_adapter_le_stop_scan(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the service UUID list from the scan result information
- * @since_tizen 2.3.1
- *
- * @remarks The @a uuids must be iterated as count and each pointed data must be released with free().
- * Then uuids must be released with free(). \n
- * 16-bit service UUID or 128-bit service UUID is supported. (e.g. 180F, 0000180F-0000-1000-8000-00805F9B34FB)
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] uuids The list of string of the service uuid
- * @param[out] count The count of the service UUIDs
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_service_uuids(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, char ***uuids, int *count);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the device name from the scan result information
- * @since_tizen 2.3.1
- *
- * @remarks The @a name must be released with free() by you.
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] name The device name
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_device_name(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, char **name);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the transmission power level from the scan result information
- * @since_tizen 2.3.1
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] power_level The transmission power level in dBm
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_tx_power_level(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, int *power_level);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the service solicitation UUID list from the scan result information
- * @since_tizen 2.3.1
- *
- * @remarks The @a uuids must be iterated as count and each pointed data must be released with free().
- * Then uuids must be released with free(). \n
- * 16-bit service solicitation UUID or 128-bit service solicitation UUID is supported.
- * (e.g. 180F, 0000180F-0000-1000-8000-00805F9B34FB)
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] uuids The list of string of the service solicitation uuid
- * @param[out] count The count of the service UUIDs
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_service_solicitation_uuids(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, char ***uuids, int *count);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the service data list from the scan result information
- * @since_tizen 2.3.1
- *
- * @remarks The @a data_list must be released with bt_adapter_le_free_service_data_list() by you .
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] data_list The list of the service data
- * @param[out] count The count of the service data list
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_service_data_list(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, bt_adapter_le_service_data_s **data_list, int *count);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Frees service data list.
- * @since_tizen 2.3.1
- *
- * @param[in] data_list The list of the service data
- * @param[in] count The count of the service data list
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_adapter_le_get_scan_result_service_data_list()
- */
-int bt_adapter_le_free_service_data_list(bt_adapter_le_service_data_s *data_list, int count);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the appearance from the scan result information
- * @since_tizen 2.3.1
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] appearance The appearance
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_appearance(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, int *appearance);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the manufacturer data from the scan result information
- * @since_tizen 2.3.1
- *
- * @remarks The @a manufacturer_data must be released with free() by you.
- *
- * @param[in] info The scan result information
- * @param[in] pkt_type The packet type
- * @param[out] manufacturer_id The manufacturer ID
- * @param[out] manufacturer_data The manufacturer data (byte array)
- * @param[out] manufacturer_data_len The length of manufacturer data
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_scan_result_cb()
- */
-int bt_adapter_le_get_scan_result_manufacturer_data(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, int *manufacturer_id, char **manufacturer_data, int *manufacturer_data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Create advertiser to advertise device's existence or respond to LE scanning request.
- * @since_tizen 2.3.1
- *
- * @param[out] advertiser The handle of advertiser
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_destroy_advertiser()
- */
-int bt_adapter_le_create_advertiser(bt_advertiser_h *advertiser);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Destroy advertiser.
- * @since_tizen 2.3.1
- *
- * @param[out] advertiser The handle of advertiser
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_create_advertiser()
- */
-int bt_adapter_le_destroy_advertiser(bt_advertiser_h advertiser);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Add a service UUID to advertise or scan response data.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3.1
- *
- * @remarks 16-bit UUID or 128-bit UUID is supported. (e.g. 180F, 0000180F-0000-1000-8000-00805F9B34FB)
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] uuid The string of the service UUID.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_add_advertising_service_uuid(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, const char *uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Add a service solicitation UUID to advertise or scan response data.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3.1
- *
- * @remarks 16-bit service solicitation UUID or 128-bit service solicitation UUID is supported.
- * (e.g. 180F, 0000180F-0000-1000-8000-00805F9B34FB)
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] uuid The string of the service solicitation UUID.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_add_advertising_service_solicitation_uuid(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, const char *uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Add service data to advertise or scan response data.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3.1
- *
- * @remarks 16-bit UUID is supported. (e.g. 180F)
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] uuid 16-bit UUID of the service
- * @param[in] service_data The service data
- * @param[in] service_data_len The data length of service data
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_add_advertising_service_data(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, const char *uuid,
-               const char *service_data, int service_data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Sets the external appearance of this device to advertise or scan response data.
- *        Please refer to the adopted Bluetooth specification for the the appearance.
- * @since_tizen 2.3.1
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] appearance The external appearance of device
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_set_advertising_appearance(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, int appearance);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Add manufacturer specific data to advertise or scan response data.
- *        Please refer to the Bluetooth Assigned Numbers provided by the Bluetooth SIG for a list of existing company identifiers.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3.1
- *
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] manufacturer_id Manufacturer identifier
- * @param[in] manufacturer_data The manufacturer specific data
- * @param[in] manufacturer_data_len The data length of manufacturer data
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_add_advertising_manufacturer_data(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, int manufacturer_id, const char *manufacturer_data, int manufacturer_data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Set whether the device name should be included in advertise or scan response data.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3.1
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] include_name Whether the device name should be included
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_set_advertising_device_name(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, bool include_name);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Set whether the transmission power level should be included in advertise or scan response data.
- *        The maximum advertised or responded data size is 31 bytes
- *        including data type and system wide data.
- * @since_tizen 2.3.1
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type
- * @param[in] include_tx_power Whether the transmission power level should be included
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_QUOTA_EXCEEDED  Quota exceeded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_clear_advertising_data()
- */
-int bt_adapter_le_set_advertising_tx_power_level(bt_advertiser_h advertiser,
-               bt_adapter_le_packet_type_e pkt_type, bool include_tx_power);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Clear all data to be advertised or responded to scan request from LE scanning device.
- * @since_tizen 2.3.1
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] pkt_type The packet type to be cleared
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- */
-int bt_adapter_le_clear_advertising_data(bt_advertiser_h advertiser, bt_adapter_le_packet_type_e pkt_type);
-
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Stops the advertising.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] advertiser The handle of advertiser
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation is not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The advertising must be going on with bt_adapter_le_start_advertising_new().
- * @post This function invokes bt_adapter_le_advertising_state_changed_cb().
- *
- * @see bt_adapter_le_start_advertising_new()
- * @see bt_adapter_le_advertising_state_changed_cb()
- */
-int bt_adapter_le_stop_advertising(bt_advertiser_h advertiser);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Start advertising with passed advertiser and advertising parameters.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @details Once Bluetooth advertising is started, nearby Bluetooth LE(Low Energy) supported
- * devices can know this device's existence. And one of them can make a connection request,
- * if it is allowed.
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] cb The callback to report the result of this function
- * @param[in] user_data The user data to be passed when callback is called
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post This function invokes bt_adapter_le_advertising_state_changed_cb().
- *
- * @see bt_adapter_le_stop_advertising()
- * @see bt_adapter_le_advertising_state_changed_cb()
- */
-int bt_adapter_le_start_advertising_new(bt_advertiser_h advertiser, bt_adapter_le_advertising_state_changed_cb cb, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Set advertising mode to control the advertising power and latency.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] mode The mode of advertising
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_start_advertising_new()
- */
-int bt_adapter_le_set_advertising_mode(bt_advertiser_h advertiser, bt_adapter_le_advertising_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Set whether the advertising type should be connectable or non-connectable
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] connectable The type of advertising
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_start_advertising_new()
- */
-int bt_adapter_le_set_advertising_connectable(bt_advertiser_h advertiser, bool connectable);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Sets Bluetooth LE scan mode
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] scan_mode The scan mode
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_ENABLED Adapter is not enabled
- * @retval #BT_ERROR_INVALID_PARAM Parameter is invalid
- * @retval #BT_ERROR_PERMISSION_DENIED Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED Not supported
- * @pre The state of local bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- */
-int bt_adapter_le_set_scan_mode(bt_adapter_le_scan_mode_e scan_mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Creates a bond with a remote Bluetooth device, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks A bond can be destroyed by bt_device_destroy_bond().\n
- * The bonding request can be cancelled by bt_device_cancel_bonding().
- *
- * @param[in] remote_address The address of the remote Bluetooth device with which the bond should be created
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The remote device must be discoverable with bt_adapter_start_device_discovery().
- * @post This function invokes bt_device_bond_created_cb().
- *
- * @see bt_adapter_start_device_discovery()
- * @see bt_device_bond_created_cb()
- * @see bt_device_cancel_bonding()
- * @see bt_device_destroy_bond()
- * @see bt_device_set_bond_created_cb()
- * @see bt_device_unset_bond_created_cb()
- */
-int bt_device_create_bond(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Cancels the bonding process.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks Use this function when the remote Bluetooth device is not responding to the
- * bond request or you wish to cancel the bonding request.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation not in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The creating a bond must be in progress by bt_device_create_bond().
- *
- * @see bt_device_create_bond()
- * @see bt_device_bond_created_cb()
- * @see bt_device_set_bond_created_cb()
- * @see bt_device_unset_bond_created_cb()
- */
-int bt_device_cancel_bonding(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Destroys the bond, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address The address of the remote Bluetooth device to remove bonding
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The bond with the remote device must be created with bt_device_create_bond().
- * @post This function invokes bt_device_bond_destroyed_cb().
- *
- * @see bt_device_create_bond()
- * @see bt_device_bond_destroyed_cb()
- * @see bt_device_set_bond_destroyed_cb()
- * @see bt_device_unset_bond_destroyed_cb()
- */
-int bt_device_destroy_bond(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Sets an alias for the bonded device.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address The address of the remote Bluetooth device
- * @param[in] alias The alias of the remote Bluetooth device
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The bond with the remote device must be created with bt_device_create_bond().
- *
- * @see bt_device_create_bond()
- */
-int bt_device_set_alias(const char *remote_address, const char *alias);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Sets the authorization of a bonded device, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks Once a device is authorized, you don't need to receive a confirmation.
- *
- * @param[in] remote_address The address of the remote Bluetooth device to authorize
- * @param[in] authorization_state The Bluetooth authorization state
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The bond with the remote device must be created with bt_device_create_bond().
- * @post bt_device_authorization_changed_cb() will be invoked.
- *
- * @see bt_device_create_bond()
- * @see bt_device_authorization_changed_cb()
- * @see bt_device_set_authorization_changed_cb()
- * @see bt_device_unset_authorization_changed_cb()
- */
-int bt_device_set_authorization(const char *remote_address, bt_device_authorization_e authorization_state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Starts the search for services supported by the specified device, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks If creating a bond succeeds, which means bt_device_bond_created_cb() is called with result #BT_ERROR_NONE,
- * then you don't need to run this function.\n
- * The service search takes a couple of seconds to complete normally. \n
- *
- * @param[in] remote_address The address of the remote Bluetooth device whose services need to be checked
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_SERVICE_SEARCH_FAILED  Service search failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The remote device must be discoverable with bt_adapter_start_device_discovery().
- * @pre The bond with the remote device must be created with bt_device_create_bond().
- * @post This function invokes bt_device_service_searched_cb().
- *
- * @see bt_adapter_start_device_discovery()
- * @see bt_device_create_bond()
- * @see bt_device_bond_created_cb()
- * @see bt_device_service_searched_cb()
- * @see bt_device_set_service_searched_cb()
- * @see bt_device_unset_service_searched_cb()
- */
-int bt_device_start_service_search(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Gets the connected profiles.
- * @since_tizen 2.3.1
- * @param[in] remote_address The address of the remote device
- * @param[in] callback The callback function to invoke
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post bt_device_connected_profile() will be invoked.
- * @see bt_device_connected_profile()
- */
-int bt_device_foreach_connected_profiles(const char *remote_address, bt_device_connected_profile callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Gets the profile connected status.
- * @since_tizen 2.3.1
- * @param[in] remote_address The address of the remote device
- * @param[in] bt_profile wish to know bt_profile
- * @param[out] connected_status the connected status
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_device_is_profile_connected(const char *remote_address, bt_profile_e bt_profile,
-                                       bool *connected_status);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Updates a LE connection mode
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address The address of the remote Bluetooth device
- * @param[in] mode The LE connection mode
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED   Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_device_update_le_connection_mode(const char *remote_address, bt_device_le_connection_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Registers a callback function to be invoked when the bond creates.
- * @since_tizen 2.3.1
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_device_bond_created_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_device_bond_created_cb()
- * @see bt_device_unset_bond_created_cb()
- */
-int bt_device_set_bond_created_cb(bt_device_bond_created_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3.1
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_device_set_bond_created_cb()
- */
-int bt_device_unset_bond_created_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Registers a callback function to be invoked when the bond destroys.
- * @since_tizen 2.3.1
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_device_bond_destroyed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_device_bond_destroyed_cb()
- * @see bt_device_unset_bond_destroyed_cb()
- */
-int bt_device_set_bond_destroyed_cb(bt_device_bond_destroyed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3.1
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_device_set_bond_destroyed_cb()
- */
-int bt_device_unset_bond_destroyed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Registers a callback function to be invoked when the authorization of device changes.
- * @since_tizen 2.3.1
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_device_authorization_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_device_authorization_changed_cb()
- * @see bt_device_set_authorization_changed_cb()
- * @see bt_device_unset_authorization_changed_cb()
- */
-int bt_device_set_authorization_changed_cb(bt_device_authorization_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3.1
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_device_set_authorization_changed_cb()
- */
-int bt_device_unset_authorization_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Registers a callback function to be invoked when the process of service search finishes.
- * @since_tizen 2.3.1
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_device_service_searched_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_device_service_searched_cb()
- * @see bt_device_unset_service_searched_cb()
- */
-int bt_device_set_service_searched_cb(bt_device_service_searched_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3.1
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_device_set_service_searched_cb()
- */
-int bt_device_unset_service_searched_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Registers a callback function to be invoked when the connection state is changed.
- * @since_tizen 2.3.1
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_device_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_device_connection_state_changed_cb()
- * @see bt_device_unset_connection_state_changed_cb()
- */
-int bt_device_set_connection_state_changed_cb(bt_device_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief      Unregisters the callback function to be invoked when the connection state is changed.
- * @since_tizen 2.3.1
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_device_set_connection_state_changed_cb()
- */
-int bt_device_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Registers a rfcomm server socket with a specific UUID.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks A socket can be destroyed by bt_socket_destroy_rfcomm().
- *
- * @param[in] service_uuid The UUID of service to provide
- * @param[out] socket_fd The file descriptor of socket to listen
- * @return 0 on success, otherwise a negative error value.
- *
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_socket_listen_and_accept_rfcomm()
- * @see bt_socket_destroy_rfcomm()
- */
-int bt_socket_create_rfcomm(const char *service_uuid, int *socket_fd);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Removes the rfcomm server socket which was created using bt_socket_create_rfcomm().
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remarks If callback function bt_socket_connection_state_changed_cb() is set and the remote Bluetooth device is connected,
- * then bt_socket_connection_state_changed_cb() will be called when this function is finished successfully.
- *
- * @param[in] socket_fd The file descriptor of socket (which was created using bt_socket_create_rfcomm()) to destroy
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The socket must be created with bt_socket_create_rfcomm().
- * @post If callback function bt_socket_connection_state_changed_cb() is set and the remote Bluetooth device is connected,
- * then bt_socket_connection_state_changed_cb() will be called.
- * @see bt_socket_create_rfcomm()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_destroy_rfcomm(int socket_fd);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Starts listening on passed rfcomm socket and accepts connection requests.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @details Pop-up is shown automatically when a RFCOMM connection is requested.
- * bt_socket_connection_state_changed_cb() will be called with
- * #BT_SOCKET_CONNECTED if you click "yes" and connection is finished successfully.
- * @param[in] socket_fd The file descriptor of socket on which start to listen
- * @param[in] max_pending_connections The maximum number of pending connections
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The socket must be created with bt_socket_create_rfcomm().
- * @post If callback function bt_socket_connection_state_changed_cb() is set,
- * then bt_socket_connection_state_changed_cb() will be called when the remote Bluetooth device is connected.
- * @see bt_socket_create_rfcomm()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_listen_and_accept_rfcomm(int socket_fd, int max_pending_connections);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Connects to a specific RFCOMM based service on a remote Bluetooth device UUID, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks A connection can be disconnected by bt_socket_disconnect_rfcomm().
- *
- * @param[in] remote_address The address of the remote Bluetooth device
- * @param[in] service_uuid The UUID of service provided by the remote Bluetooth device
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The remote device must be discoverable with bt_adapter_start_device_discovery().
- * @pre The bond with the remote device must be created with bt_device_create_bond().
- * @post This function invokes bt_socket_connection_state_changed_cb().
- *
- * @see bt_device_create_bond()
- * @see bt_adapter_start_device_discovery()
- * @see bt_device_start_service_search()
- * @see bt_socket_disconnect_rfcomm()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_connect_rfcomm(const char *remote_address, const char *service_uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Disconnects the RFCOMM connection with the given file descriptor of connected socket.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] socket_fd  The file descriptor of socket to close which was received using bt_socket_connection_state_changed_cb().
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The connection must be established.
- *
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_disconnect_rfcomm(int socket_fd);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Sends data to the connected device.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remark The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
- *
- * @param[in] socket_fd The file descriptor of connected socket which was received using bt_socket_connection_state_changed_cb()
- * @param[in] data The data to be sent
- * @param[in] length The length of data to be sent
- *
- * @return the number of bytes written (zero indicates nothing was written).
- * @retval On error, -1 is returned, and errno is set appropriately. See write 2 man page.
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- * @exception BT_ERROR_PERMISSION_DENIED  Permission denied
- * @exception BT_ERROR_AGAIN  Resource temporarily unavailable
- *
- * @pre The connection must be established.
- *
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_send_data(int socket_fd, const char *data, int length);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Register a callback function that will be invoked when you receive data.
- * @since_tizen 2.3.1
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_socket_data_received_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_socket_data_received_cb()
- * @see bt_socket_set_data_received_cb()
- * @see bt_socket_unset_data_received_cb()
- */
-int bt_socket_set_data_received_cb(bt_socket_data_received_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3.1
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_socket_data_received_cb()
- * @see bt_socket_set_data_received_cb()
- */
-int bt_socket_unset_data_received_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Register a callback function that will be invoked when a RFCOMM connection is requested.
- * @since_tizen 2.3.1
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_socket_connection_requested_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_socket_unset_connection_requested_cb()
- */
-int bt_socket_set_connection_requested_cb(bt_socket_connection_requested_cb callback, void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Unregisters the callback function.
- * @since_tizen 2.3.1
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre  The Bluetooth service must be initialized with bt_initialize().
- * @see  bt_initialize()
- * @see  bt_socket_set_connection_requested_cb()
- * @see  bt_socket_connection_requested_cb()
- */
-int bt_socket_unset_connection_requested_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Register a callback function that will be invoked when the connection state changes.
- * @since_tizen 2.3.1
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_socket_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_set_connection_state_changed_cb(bt_socket_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3.1
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- */
-int bt_socket_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Initializes the Bluetooth OPP server requested by bt_opp_server_connection_requested_cb().
- * @since_tizen 2.3.1
- * @details No popup appears when an OPP connection is requested from a remote device.
- * Instead, @a connection_requested_cb() will be called.
- * At that time, you can call either bt_opp_server_accept() or bt_opp_server_reject().
- * @remarks This function must be called to start Bluetooth OPP server. \n
- * You must free all resources of the Bluetooth service by calling bt_opp_server_deinitialize() if Bluetooth OPP service is no longer needed.
- * @param[in] destination  The destination path
- * @param[in] connection_requested_cb  The callback called when an OPP connection is requested
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_server_connection_requested_cb()
- * @see  bt_opp_server_deinitialize()
- * @see  bt_opp_server_accept()
- * @see  bt_opp_server_reject()
- */
-int bt_opp_server_initialize_by_connection_request(const char *destination, bt_opp_server_connection_requested_cb connection_requested_cb, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Deinitializes the Bluetooth OPP server.
- * @since_tizen 2.3.1
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_server_deinitialize()
- */
-int bt_opp_server_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Accepts the push request from the remote device.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remarks If you initialize OPP server by bt_opp_server_initialize_by_connection_request(), then name is ignored.
- * You can cancel the pushes by bt_opp_server_cancel_transfer() with transfer_id.
- * @param[in] progress_cb  The callback called when a file is being transferred
- * @param[in] finished_cb  The callback called when a transfer is finished
- * @param[in] name  The name to store. This can be NULL if you initialize OPP server by bt_opp_server_initialize_by_connection_request().
- * @param[in] user_data The user data to be passed to the callback function
- * @param[out]  transfer_id  The ID of transfer
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_server_reject()
- */
-int bt_opp_server_accept(bt_opp_server_transfer_progress_cb progress_cb, bt_opp_server_transfer_finished_cb finished_cb, const char *name,
-       void *user_data, int *transfer_id);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Rejects the push request from the remote device.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_server_accept()
- */
-int bt_opp_server_reject(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Cancels the transfer.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] transfer_id  The ID of transfer
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_server_accept()
- */
-int bt_opp_server_cancel_transfer(int transfer_id);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Sets the destination path of file to be pushed.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] destination  The destination path of file to be pushed
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- */
-int bt_opp_server_set_destination(const char *destination);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief Initializes the Bluetooth OPP client.
- * @since_tizen 2.3.1
- * @remarks This function must be called before Bluetooth OPP client starts. \n
- * You must free all resources of the Bluetooth service by calling bt_opp_client_deinitialize()
- * if Bluetooth OPP service is no longer needed.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_client_deinitialize()
- */
-int bt_opp_client_initialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief Deinitializes the Bluetooth OPP client.
- * @since_tizen 2.3.1
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_client_initialize()
- */
-int bt_opp_client_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief Adds file to be pushed.
- * @since_tizen 2.3.1
- * @param[in] file  The path of file to be pushed
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_client_clear_files()
- * @see  bt_opp_client_push_files()
- */
-int bt_opp_client_add_file(const char *file);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief Adds file to be pushed.
- * @since_tizen 2.3.1
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_client_add_file()
- * @see  bt_opp_client_push_files()
- */
-int bt_opp_client_clear_files(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief Pushes the file to the remote device, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @details At first, bt_opp_client_push_responded_cb() will be called when OPP server responds to the push request.
- * After connection is established, bt_opp_client_push_progress_cb() will be called repeatedly until a file is transferred completely.
- * If you send several files, then bt_opp_client_push_progress_cb() with another file will be called repeatedly until the file is transferred completely.
- * bt_opp_client_push_finished_cb() will be called when the push request is finished.
- * @param[in] remote_address The remote address
- * @param[in] responded_cb  The callback called when OPP server responds to the push request
- * @param[in] progress_cb  The callback called when each file is being transferred
- * @param[in] finished_cb  The callback called when the push request is finished
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see bt_opp_client_initialize()
- * @see bt_opp_client_cancel_push
- */
-int bt_opp_client_push_files(const char *remote_address, bt_opp_client_push_responded_cb responded_cb,
-       bt_opp_client_push_progress_cb progress_cb, bt_opp_client_push_finished_cb finished_cb, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief Cancels the push request in progress, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre bt_opp_client_push_files() must be called.
- * @post bt_opp_client_push_finished_cb() will be invoked with result #BT_ERROR_CANCELLED,
- * which is a parameter of bt_opp_client_push_files().
- * @see bt_opp_client_initialize()
- * @see bt_opp_client_push_files()
- */
-int bt_opp_client_cancel_push(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_HOST_MODULE
- * @brief Initializes the Bluetooth HID(Human Interface Device) Host.
- * @since_tizen 2.3.1
- * @remarks This function must be called before Bluetooth HID Host starts. \n
- * You must free all resources of the Bluetooth service by calling bt_hid_host_deinitialize()
- * if Bluetooth HID Host service is no longer needed.
- * @param[in] connection_cb  The callback called when the connection state is changed
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see  bt_hid_host_deinitialize()
- */
-int bt_hid_host_initialize(bt_hid_host_connection_state_changed_cb connection_cb, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_HOST_MODULE
- * @brief Deinitializes the Bluetooth HID(Human Interface Device) Host.
- * @since_tizen 2.3.1
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth HID service must be initialized with bt_hid_host_initialize().
- * @see  bt_hid_host_initialize()
- */
-int bt_hid_host_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_HOST_MODULE
- * @brief Connects the remote device with the HID(Human Interface Device) service, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The local device must be bonded with the remote device by bt_device_create_bond().
- * @pre The Bluetooth HID service must be initialized with bt_hid_host_initialize().
- * @post bt_hid_host_connection_state_changed_cb() will be invoked.
- * @see bt_hid_host_disconnect()
- * @see bt_hid_host_connection_state_changed_cb()
- */
-int bt_hid_host_connect(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_HOST_MODULE
- * @brief Disconnects the remote device with the HID(Human Interface Device) service, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The remote device must be connected by bt_hid_host_connect().
- * @post bt_hid_host_connection_state_changed_cb() will be invoked.
- * @see bt_hid_host_connect()
- * @see bt_hid_host_connection_state_changed_cb()
- */
-int bt_hid_host_disconnect(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Activates the Bluetooth HID Device role.
- * @since_tizen 3.0
- * @privlevel pubilc
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks This function must be called to register HID UUID.
- * Only then a remote device is able to identify this one as a HID device.
- *
- * @param[in] callback  The callback called when the connection state is changed
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Already activated
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_hid_device_deactivate()
- */
-int bt_hid_device_activate(bt_hid_device_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Deactivates the Bluetooth HID Device role.
- * @since_tizen 3.0
- * @privlevel pubilc
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks This function must be called to deregister the HID UUID.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Not activated
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_hid_device_activate()
- */
-int bt_hid_device_deactivate(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Initiates the HID device connection with the Device role, asynchronously.
- * @since_tizen 3.0
- * @privlevel pubilc
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks This function must be called to Initiate the HID device role connection.
- *
- * @param[in] remote_address The remote device's address.
-
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Not activated
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_ALREADY_DONE   Already connected
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @pre The local device must be bonded with the remote device by bt_device_create_bond().
- * @see bt_initialize()
- * @see bt_hid_device_activate()
- */
-int bt_hid_device_connect(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Disconnects from the HID Host device, asynchronously.
- * @since_tizen 3.0
- * @privlevel pubilc
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address The remote device's address.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_disconnect(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Sends the mouse event data to the remote device.
- * @since_tizen 3.0
- * @privlevel pubilc
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address The remote device's address.
- * @param[in] mouse_data The mouse data to be passed to the remote device.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The HID connection must be established.
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_send_mouse_event(const char *remote_address,
-                                       const bt_hid_mouse_data_s *mouse_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Sends the keyboard event data to the remote device.
- * @since_tizen 3.0
- * @privlevel pubilc
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address The remote device's address.
- * @param[in] key_data The key data to be passed to the remote device
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The HID connection must be established.
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_send_key_event(const char *remote_address,
-                                       const bt_hid_key_data_s *key_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Sets the callback called when the device receives data from the HID Host.
- * @since_tizen 3.0
- *
- * @param[in] callback The callback function to be set when data is received.
- * @param[in] user_data The user data to be passed to the callback.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_set_data_received_cb(bt_hid_device_data_received_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Unsets the data received callback.
- * @since_tizen 3.0
- *
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_unset_data_received_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Responds to reports from the HID Host.
- * @since_tizen 3.0
- * @privlevel pubilc
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] remote_address The remote device's address.
- * @param[in] header_type The response header type
- * @param[in] param_type The response parameter type
- * @param[in] data The response data
- * @param[in] data_len The length of the response data
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The HID connection must be established.
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_reply_to_report(const char *remote_address,
-                               bt_hid_header_type_e header_type,
-                               bt_hid_param_type_e param_type,
-                               const char *data, unsigned int data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief Initializes the Bluetooth profiles related with audio.
- * @since_tizen 2.3.1
- * @remarks This function must be called before Bluetooth profiles related with audio starts. \n
- * You must free all resources of the this service by calling bt_audio_deinitialize()
- * if Bluetooth profiles related with audio service is no longer needed.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_audio_deinitialize()
- */
-int bt_audio_initialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief Deinitializes the Bluetooth profiles related with audio.
- * @since_tizen 2.3.1
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- */
-int bt_audio_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief Connects the remote device with the given audio profile, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @details If you input type as #BT_AUDIO_PROFILE_TYPE_ALL and connection request succeeds, then bt_audio_connection_state_changed_cb() will be called twice
- * when #BT_AUDIO_PROFILE_TYPE_HSP_HFP is connected and #BT_AUDIO_PROFILE_TYPE_A2DP is connected.
- * @param[in] remote_address  The remote address
- * @param[in] type  The type of audio profile
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
-
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @pre The local device must be bonded with the remote device by bt_device_create_bond().
- * @post bt_audio_connection_state_changed_cb() will be invoked.
- * @see bt_audio_disconnect()
- * @see bt_audio_connection_state_changed_cb()
- */
-int bt_audio_connect(const char *remote_address, bt_audio_profile_type_e type);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief Disconnects the remote device with the given audio profile, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @details If you input type as #BT_AUDIO_PROFILE_TYPE_ALL and disconnection request succeeds, then bt_audio_connection_state_changed_cb() will be called twice
- * when #BT_AUDIO_PROFILE_TYPE_HSP_HFP is disconnected and #BT_AUDIO_PROFILE_TYPE_A2DP is disconnected.
- * @param[in] remote_address  The remote address
- * @param[in] type  The type of audio profile
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected by bt_audio_connect().
- * @post bt_audio_connection_state_changed_cb() will be invoked.
- * @see bt_audio_connect()
- * @see bt_audio_connection_state_changed_cb()
- */
-int bt_audio_disconnect(const char *remote_address, bt_audio_profile_type_e type);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Registers a callback function that will be invoked when the connection state is changed.
- * @since_tizen 2.3.1
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_audio_connection_state_changed_cb()
- */
-int bt_audio_set_connection_state_changed_cb(bt_audio_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Unregisters a callback function that will be invoked when the connection state is changed.
- * @since_tizen 2.3.1
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_audio_connection_state_changed_cb()
- * @see bt_audio_set_connection_state_changed_cb()
- */
-int bt_audio_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief Initializes the Bluetooth AVRCP (Audio/Video Remote Control Profile) target service.
- * @since_tizen 3.0
- * @remarks This function must be called before any other AVRCP target functions are called. \n
- * You must free all resources of the this service by calling bt_avrcp_target_deinitialize()
- * if Bluetooth AVRCP service is no longer needed.
- * @param[in] callback The callback function called when the connection state is changed
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_avrcp_target_deinitialize()
- */
-int bt_avrcp_target_initialize(bt_avrcp_target_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief Deinitializes the Bluetooth AVRCP (Audio/Video Remote Control Profile) target service.
- * @since_tizen 3.0
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_avrcp_target_initialize().
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the equalizer state to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] state The state of equalizer
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_equalizer_state(bt_avrcp_equalizer_state_e state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the repeat mode to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] mode The repeat mode
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_repeat_mode(bt_avrcp_repeat_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the shuffle mode to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] mode The repeat mode
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_shuffle_mode(bt_avrcp_shuffle_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the scan mode to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] mode The scan mode
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_scan_mode(bt_avrcp_scan_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the player state to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] state The player state
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_player_state(bt_avrcp_player_state_e state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the current position of song to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] position The current position in milliseconds
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_position(unsigned int position);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_TARGET_MODULE
- * @brief  Notifies the track to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] title The title of track
- * @param[in] artist The artist of track
- * @param[in] album The album of track
- * @param[in] genre The genre of track
- * @param[in] track_num The track number
- * @param[in] total_tracks The number of all tracks
- * @param[in] duration The duration of track in milliseconds
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_target_notify_track(const char *title, const char *artist, const char *album, const char *genre, unsigned int track_num, unsigned int total_tracks, unsigned int duration);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the equalizer state is changed by the remote control device.
- * @since_tizen 3.0
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_equalizer_state_changed_cb()
- */
-int bt_avrcp_set_equalizer_state_changed_cb(bt_avrcp_equalizer_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the equalizer state is changed by the remote control device.
- * @since_tizen 3.0
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_equalizer_state_changed_cb()
- */
-int bt_avrcp_unset_equalizer_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the repeat mode is changed by the remote control device.
- * @since_tizen 3.0
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_repeat_mode_changed_cb()
- */
-int bt_avrcp_set_repeat_mode_changed_cb(bt_avrcp_repeat_mode_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the repeat mode is changed by the remote control device.
- * @since_tizen 3.0
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_repeat_mode_changed_cb()
- */
-int bt_avrcp_unset_repeat_mode_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the shuffle mode is changed by the remote control device.
- * @since_tizen 3.0
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_shuffle_mode_changed_cb()
- */
-int bt_avrcp_set_shuffle_mode_changed_cb(bt_avrcp_shuffle_mode_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the shuffle mode is changed by the remote control device.
- * @since_tizen 3.0
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_shuffle_mode_changed_cb()
- */
-int bt_avrcp_unset_shuffle_mode_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the scan mode is changed by the remote control device.
- * @since_tizen 3.0
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_scan_mode_changed_cb()
- */
-int bt_avrcp_set_scan_mode_changed_cb(bt_avrcp_scan_mode_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the scan mode is changed by the remote control device.
- * @since_tizen 3.0
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_scan_mode_changed_cb()
- */
-int bt_avrcp_unset_scan_mode_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the song position is changed by the remote target device.
- * @since_tizen 3.0
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_position_changed_cb()
- */
-int bt_avrcp_set_position_changed_cb(bt_avrcp_position_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the song position is changed by the remote target device.
- * @since_tizen 3.0
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_position_changed_cb()
- */
-int bt_avrcp_unset_position_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the Play status is changed by the remote target device.
- * @since_tizen 3.0
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_play_status_changed_cb()
- */
-int bt_avrcp_set_play_status_changed_cb(bt_avrcp_play_status_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the Play status is changed by the remote target device.
- * @since_tizen 3.0
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_play_status_changed_cb()
- */
-int bt_avrcp_unset_play_status_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Registers a callback function that will be invoked when the track metadata is changed by the remote target device.
- * @since_tizen 3.0
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_unset_track_info_changed_cb()
- */
-int bt_avrcp_set_track_info_changed_cb(bt_avrcp_track_info_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the track metadata is changed by the remote target device.
- * @since_tizen 3.0
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The AVRCP service must be initialized with bt_avrcp_target_initialize() or bt_avrcp_control_initialize().
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_set_track_info_changed_cb()
- */
-int bt_avrcp_unset_track_info_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief Initializes the Bluetooth AVRCP (Audio/Video Remote Control Profile) controller service.
- * @since_tizen 3.0
- * @remarks This function must be called before any other AVRCP controller functions are called. \n
- * You must free all resources of the this service by calling bt_avrcp_control_deinitialize()
- * if Bluetooth AVRCP service is no longer needed.
- * @param[in] callback The callback function called when the connection state is changed
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_avrcp_control_deinitialize()
- */
-int bt_avrcp_control_initialize(bt_avrcp_control_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief Deinitializes the Bluetooth AVRCP (Audio/Video Remote Control Profile) controller service.
- * @since_tizen 3.0
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_avrcp_control_initialize().
- * @see bt_avrcp_control_initialize()
- */
-int bt_avrcp_control_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief Connects the AVRCP (Audio/Video Remote Control Profile) target device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_avrcp_control_initialize().
- * @see bt_avrcp_control_initialize()
- */
-int bt_avrcp_control_connect(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief Disconnects from the AVRCP (Audio/Video Remote Control Profile) target device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_avrcp_control_initialize().
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_control_connect()
- */
-int bt_avrcp_control_disconnect(const char *remote_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief Sends a command to the target device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] cmd The commands, one of: Play, Pause, Next, Rewind.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_avrcp_control_initialize().
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_control_connect()
- */
-int bt_avrcp_control_send_player_command(bt_avrcp_player_command_e cmd);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Sends the equalizer state change request to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] state The new equalizer state, one of: ON, OFF
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_set_equalizer_state(bt_avrcp_equalizer_state_e state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the the equalizer state of the remote device.
- * @since_tizen 3.0
- * @param[out] state The equalizer state, one of: ON, OFF
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_equalizer_state(bt_avrcp_equalizer_state_e *state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Sends the repeat change request to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] Mode The new repeat mode, one of: OFF, SINGLE, ALL
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_set_repeat_mode(bt_avrcp_repeat_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the repeat state of the remote device.
- * @since_tizen 3.0
- * @param[out] mode The repeat mode, one of: OFF, SINGLE, ALL
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_repeat_mode(bt_avrcp_repeat_mode_e *mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Sends the shuffle mode change request to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] mode The new shuffle mode, one of: OFF, GROUP, ALL
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_set_shuffle_mode(bt_avrcp_shuffle_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the shuffle mode of the remote device.
- * @since_tizen 3.0
- * @param[out] mode The shuffle mode, one of: OFF, GROUP, ALL
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_shuffle_mode(bt_avrcp_shuffle_mode_e *mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Sends the scan mode change request to the remote device.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] mode The new scan mode, one of: OFF, GROUP, ALL
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_set_scan_mode(bt_avrcp_scan_mode_e mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the scan mode of the remote device.
- * @since_tizen 3.0
- * @param[out] mode The scan mode, one of: OFF, GROUP, ALL
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_scan_mode(bt_avrcp_scan_mode_e *mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the position of the song played by the remote device.
- * @since_tizen 3.0
- * @param[out] position The position, in milliseconds
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_position(unsigned int *position);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the play status of the remote device.
- * @since_tizen 3.0
- * @param[out] status The play status, one of: PLAYING, STOPPED...
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_play_status(bt_avrcp_player_state_e *status);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Gets the metadata of the track played by the remote device.
- * @since_tizen 3.0
- * @remarks The @a track must be released using bt_avrcp_control_free_track_info()
- * @param[out] track The track metadata.
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_avrcp_target_connection_state_changed_cb()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_get_track_info(bt_avrcp_metadata_attributes_info_s **track);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_CONTROL_MODULE
- * @brief  Frees the track metadata.
- * @since_tizen 3.0
- * @param[in] track The track metadata.
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre track should point to valid metadata address.
- * @see bt_avrcp_control_get_track_info()
- * @see bt_avrcp_target_initialize()
- */
-int bt_avrcp_control_free_track_info(bt_avrcp_metadata_attributes_info_s *track);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief Registers an application that acts as the @a Sink role of HDP(Health Device Profile).
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @remarks The @a app_id must be released with free() by you.
- * @param[in] data_type  The data type of MDEP. This value is defined in ISO/IEEE 11073-20601 spec.
- * For example, pulse oximeter is 0x1004 and blood pressure monitor is 0x1007.
- * @param[out] app_id  The ID of application
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see bt_hdp_unregister_sink_app()
- */
-int bt_hdp_register_sink_app(unsigned short data_type, char **app_id);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief Unregisters the given application that acts as the @a Sink role of HDP(Health Device Profile).
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] app_id  The ID of application
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_hdp_register_sink_app()
- */
-int bt_hdp_unregister_sink_app(const char *app_id);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief Connects the remote device which acts as @a Source role, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @param[in] app_id  The ID of application
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Sink role of HDP must be registered with bt_hdp_register_sink_app().
- * @pre The local device must be bonded with the remote device by bt_device_create_bond().
- * @post bt_hdp_connected_cb() will be invoked.
- * @see bt_hdp_disconnect()
- * @see bt_hdp_set_connection_state_changed_cb()
- * @see bt_hdp_unset_connection_state_changed_cb()
- */
-int bt_hdp_connect_to_source(const char *remote_address, const char *app_id);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief Disconnects the remote device, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @param[in] channel  The connected data channel
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @post bt_hdp_disconnected_cb() will be invoked.
- * @see bt_hdp_set_connection_state_changed_cb()
- * @see bt_hdp_unset_connection_state_changed_cb()
- */
-int bt_hdp_disconnect(const char *remote_address, unsigned int channel);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief Sends the data to the remote device.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] channel  The connected data channel
- * @param[in] data  The data to send
- * @param[in] size  The size of data to send (byte)
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected.
- * @see bt_hdp_data_received_cb()
- * @see bt_hdp_set_data_received_cb()
- * @see bt_hdp_unset_data_received_cb()
- */
-int bt_hdp_send_data(unsigned int channel, const char *data, unsigned int size);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Registers a callback function that will be invoked when the connection state is changed.
- * @since_tizen 2.3.1
- * @param[in] connected_cb The callback function called when a connection is established
- * @param[in] disconnected_cb The callback function called when a connection is disconnected
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_hdp_unset_connection_state_changed_cb()
- */
-int bt_hdp_set_connection_state_changed_cb(bt_hdp_connected_cb connected_cb, bt_hdp_disconnected_cb disconnected_cb, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the connection state is changed.
- * @since_tizen 2.3.1
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_hdp_set_connection_state_changed_cb()
- */
-int bt_hdp_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Registers a callback function that will be invoked when you receive the data.
- * @since_tizen 2.3.1
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_hdp_unset_data_received_cb()
- */
-int bt_hdp_set_data_received_cb(bt_hdp_data_received_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Unregisters a callback function that will be invoked when you receive the data.
- * @since_tizen 2.3.1
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_hdp_set_data_received_cb()
- */
-int bt_hdp_unset_data_received_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the value of a characteristic or descriptor's GATT handle.
- * @since_tizen 2.3.1
- *
- * @remarks @a value must be released using free(). \n
- * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_read_value() must be used prior to this function \n
- * in order to get the remote device's current value.
- *
- * @param[in] gatt_handle The handle of a characteristic or descriptor
- * @param[out] value The value of @a gatt_handle. It is a byte stream type.
- * @param[out] value_length The length of @a value
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_get_value(bt_gatt_h gatt_handle, char **value, int *value_length);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the value of a characteristic or descriptor's GATT handle as an integer type.
- * @since_tizen 2.3.1
- *
- * @remarks This function returns a locally saved value in @a gatt_handle. \n
- * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_read_value() must be used prior to this function \n
- * in order to get the remote device's current value.
- *
- * @param[in] gatt_handle The handle of a characteristic or descriptor
- * @param[in] type The type of a saved value in @a gatt_handle
- * @param[in] offset The offset from where a value will be read from @a gatt_handle as an integer type
- * @param[out] value The integer type's value of @a gatt_handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_get_int_value(bt_gatt_h gatt_handle, bt_data_type_int_e type,
-                       int offset, int *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the value of a characteristic or descriptor's GATT handle as a float type.
- * @since_tizen 2.3.1
- *
- * @remarks This function returns a locally saved value in @a gatt_handle. \n
- * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_read_value() must be used prior to this function \n
- * in order to get the remote device's current value.
- *
- * @param[in] gatt_handle  The handle of a characteristic or descriptor
- * @param[in] type The type of a saved value in @a gatt_handle
- * @param[in] offset The offset from where a value will be read from @a gatt_handle as an integer type
- * @param[out] value The float type's value of @a gatt_handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_get_float_value(bt_gatt_h gatt_handle, bt_data_type_float_e type,
-                       int offset, float *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Updates the value of a characteristic or descriptor's GATT handle.
- * @since_tizen 2.3.1
- *
- * @remarks This function updates a value of @a gatt_handle locally. \n
- * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_write_value() can be used after this function \n
- * in order to update the remote device's value. \n
- *
- * @param[in] gatt_handle The handle of a characteristic or descriptor
- * @param[in] value The value to be updated
- * @param[in] value_length The length of @a value
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_set_value(bt_gatt_h gatt_handle, const char *value, int value_length);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Updates the value of a characteristic or descriptor's GATT handle using a integer type's value.
- * @since_tizen 2.3.1
- *
- * @remarks This function updates a value of @a gatt_handle locally. \n
- * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_write_value() can be used after this function \n
- * in order to update the remote device's value. \n
- *
- * @param[in] gatt_handle The handle of a characteristic or descriptor
- * @param[in] type @a value will be saved in @a gatt_handle as this type
- * @param[in] value The integer type's value to be updated
- * @param[in] offset The offset from where @a value will be saved in @a gatt_handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_set_int_value(bt_gatt_h gatt_handle, bt_data_type_int_e type,
-                       int value, int offset);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Updates the value of a characteristic or descriptor's GATT handle using a float type's value.
- * @since_tizen 2.3.1
- *
- * @remarks This function updates a value of @a gatt_handle locally. \n
- * When @a gatt_handle is associated with bt_gatt_client_h, bt_gatt_client_write_value() can be used after this function \n
- * in order to update the remote device's value. \n
- *
- * @param[in] gatt_handle The handle of a characteristic or descriptor
- * @param[in] type @a mantissa and @a exponent will be saved in @a gatt_handle as this type
- * @param[in] mantissa The mantissa of float type's value to be updated
- * @param[in] exponent The exponent of float type's value to be updated
- * @param[in] offset The offset from where @a mantissa and @a exponent will be saved in @a gatt_handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_set_float_value(bt_gatt_h gatt_handle, bt_data_type_float_e type,
-                       int mantissa, int exponent, int offset);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the UUID of a service, characteristic or descriptor's GATT handle.
- * @since_tizen 2.3.1
- *
- * @remarks @a uuid must be released using free(). \n
- * 16-bit UUID or 128-bit UUID is supported. (e.g. 2A19, 00002A19-0000-1000-8000-00805F9B34FB)
- *
- * @param[in] gatt_handle The handle of a service, characteristic or descriptor
- * @param[out] uuid The string of the UUID of @a gatt_handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_get_uuid(bt_gatt_h gatt_handle, char **uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the type of GATT handle.
- * @since_tizen 2.3.1
- *
- * @param[in] gatt_handle The GATT handle
- * @param[out] gatt_type The type of @a gatt_handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_get_type(bt_gatt_h gatt_handle, bt_gatt_type_e *gatt_type);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the GATT client handle which the specified service belongs to.
- * @since_tizen 2.3.1
- *
- * @remark This function doesn't allocate new memory for GATT client handle.
- * The returned GATT client handle is the same one which was got from bt_gatt_client_create().
- * So if it is destroyed by bt_gatt_client_destroy(), all related GATT handles are freed also.
- *
- * @param[in] service The service's GATT handle
- * @param[out] client The GATT client handle which @a service belongs to
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_create()
- */
-int bt_gatt_service_get_client(bt_gatt_h service, bt_gatt_client_h *client);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets a characteristic's GATT handle which has specific UUID.
- * @since_tizen 2.3.1
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
- * If there are multiple characteristics which have same UUID, only the first matched one will be returned.
- *
- * @param[in] service The service's GATT handle
- * @param[in] uuid The characteristic's GATT handle which has this UUID will be returned if it exists
- * @param[out] characteristic The characteristic's GATT handle which has @a uuid if it exists
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_service_get_characteristic(bt_gatt_h service, const char *uuid,
-                                       bt_gatt_h *characteristic);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Invokes @a callback function on each characteristic that belongs to the specified service.
- * @since_tizen 2.3.1
- *
- * @param[in] service The service's GATT handle
- * @param[in] callback The function to be invoked on each characteristic
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_foreach_cb()
- */
-int bt_gatt_service_foreach_characteristics(bt_gatt_h service,
-                                       bt_gatt_foreach_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets an included service's GATT handle which has specific UUID.
- * @since_tizen 2.3.1
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
- * If there are multiple included services which have same UUID, only the first matched one will be returned.
- *
- * @param[in] service The service's GATT handle
- * @param[in] uuid The included service's GATT handle which has this UUID will be returned if it exists
- * @param[out] included_service The included service's GATT handle which has @a uuid if it exists
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_service_get_included_service(bt_gatt_h service, const char *uuid,
-                                               bt_gatt_h *included_service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Invokes @a callback function on each included service that belongs to the specified service.
- * @since_tizen 2.3.1
- *
- * @param[in] service The service's GATT handle
- * @param[in] callback The function to be invoked on each included service
- * @param[in] user_data The user data to be passed to the callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_foreach_cb()
- */
-int bt_gatt_service_foreach_included_services(bt_gatt_h service,
-                                       bt_gatt_foreach_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the service's GATT handle which the specified characteristic belongs to.
- * @since_tizen 2.3.1
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[out] service The service's GATT handle which @a characteristic belongs to
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_characteristic_get_service(bt_gatt_h characteristic, bt_gatt_h *service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the properties which a characteristic's GATT handle has.
- * @since_tizen 2.3.1
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[out] properties The properties which a characteristic's GATT handle has
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_property_e
- */
-int bt_gatt_characteristic_get_properties(bt_gatt_h characteristic, int *properties);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Gets the write type of the specified characteristic.
- * @since_tizen 2.3.1
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[out] write_type The write type of the specified characteristic
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_write_type_e
- */
-int bt_gatt_characteristic_get_write_type(bt_gatt_h characteristic,
-                                       bt_gatt_write_type_e *write_type);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Updates the write type of the specified characteristic.
- * @since_tizen 2.3.1
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[in] write_type The write type to be updated
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_write_value()
- * @see bt_gatt_write_type_e
- */
-int bt_gatt_characteristic_set_write_type(bt_gatt_h characteristic,
-                                       bt_gatt_write_type_e write_type);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets a descriptor's GATT handle which has specific UUID.
- * @since_tizen 2.3.1
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
- * If there are multiple descriptors which have same UUID, only the first matched one will be returned.
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[in] uuid The descriptor's GATT handle which has this UUID will be returned if it exists
- * @param[out] descriptor The descriptor's GATT handle which has @a uuid if it exists
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_characteristic_get_descriptor(bt_gatt_h characteristic, const char *uuid,
-                                               bt_gatt_h *descriptor);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Invokes @a callback function on each descriptor that belongs to the specified characteristic.
- * @since_tizen 2.3.1
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[in] callback The function to be invoked on each descriptor
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_foreach_cb()
- */
-int bt_gatt_characteristic_foreach_descriptors(bt_gatt_h characteristic,
-                                       bt_gatt_foreach_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the characteristic's GATT handle which the specified descriptor belongs to.
- * @since_tizen 2.3.1
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
- *
- * @param[in] descriptor The descriptor's GATT handle
- * @param[out] characteristic The characteristic's GATT handle which @a descriptor belongs to
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_descriptor_get_characteristic(bt_gatt_h descriptor, bt_gatt_h *characteristic);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Creates the GATT client handle.
- * @since_tizen 2.3.1
- *
- * @remark The GATT client handle must be freed by bt_gatt_client_destroy() after use
- *
- * @param[in] remote_address The address of the remote device
- * @param[out] client The created GATT client's handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_ALREADY_DONE  Operation is already done
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_destroy()
- */
-int bt_gatt_client_create(const char *remote_address, bt_gatt_client_h *client);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Destroys the GATT client's handle.
- * @since_tizen 2.3.1
- *
- * @remark All related service, characteristic and descriptor's GATT handles are freed also
- *
- * @param[in] client The GATT client's handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_create()
- */
-int bt_gatt_client_destroy(bt_gatt_client_h client);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets the address of remote device.
- * @since_tizen 2.3.1
- *
- * @param[in] client The created GATT client's handle
- * @param[out] remote_address The address of the remote device which is associated with @a client
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_create()
- */
-int bt_gatt_client_get_remote_address(bt_gatt_client_h client,
-                                       char **remote_address);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Reads the value of a characteristic or descriptor from the remote device asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] gatt_handle The GATT handle of a characteristic or descriptor
- * @param[in] callback When a read request is completed, this callback function will be called
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE      Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_create()
- * @see bt_gatt_client_request_completed_cb()
- */
-int bt_gatt_client_read_value(bt_gatt_h gatt_handle,
-               bt_gatt_client_request_completed_cb callback, void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Writes the value of a characteristic or descriptor to the remote device asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] gatt_handle The GATT handle of a characteristic or descriptor
- * @param[in] callback When a write request is completed, this callback function will be called
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE      Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_create()
- * @see bt_gatt_characteristic_set_write_type()
- * @see bt_gatt_set_value()
- * @see bt_gatt_set_int_value()
- * @see bt_gatt_set_float_value()
- * @see bt_gatt_client_request_completed_cb()
- */
-int bt_gatt_client_write_value(bt_gatt_h gatt_handle,
-               bt_gatt_client_request_completed_cb callback, void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Registers a callback function to be invoked when the characteristic value is changed on the remote device.
- * @since_tizen 2.3.1
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[in] callback The callback to be invoked when the value is changed and it is informed
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE      Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_characteristic_value_changed_cb()
- * @see bt_gatt_client_unset_characteristic_value_change()
- */
-int bt_gatt_client_set_characteristic_value_changed_cb(bt_gatt_h characteristic,
-               bt_gatt_client_characteristic_value_changed_cb callback,
-               void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Unregisters a callback function to be invoked when the characteristic value is changed on the remote device.
- * @since_tizen 2.3.1
- *
- * @param[in] characteristic The characteristic's GATT handle, whose value change will not be informed
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE      Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_set_characteristic_value_changed_cb()
- */
-int bt_gatt_client_unset_characteristic_value_changed_cb(bt_gatt_h characteristic);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Gets a service's GATT handle which has specific UUID.
- * @since_tizen 2.3.1
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated client is destroyed by bt_gatt_client_destroy().
- * If there are multiple services which have same UUID, only the first matched one will be returned.
- *
- * @param[in] client The GATT client's handle
- * @param[in] uuid The service's GATT handle which has this UUID will be returned if it exists
- * @param[out] service The service's GATT handle which has @a uuid if it exists
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_client_get_service(bt_gatt_client_h client, const char *uuid,
-                               bt_gatt_h *service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Invokes @a callback function on each service that belongs to the specified GATT client.
- * @since_tizen 2.3.1
- *
- * @param[in] client The GATT client's handle
- * @param[in] callback The function to be invoked on each service
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_foreach_cb()
- */
-int bt_gatt_client_foreach_services(bt_gatt_client_h client,
-                                   bt_gatt_foreach_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Registers a callback function to be invoked when service is changed from a remote device(GATT server).
- * @since_tizen 3.0
- *
- * @param[in] client The GATT client's handle
- * @param[in] callback The callback to be invoked
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_unset_service_changed_cb()
- */
-int bt_gatt_client_set_service_changed_cb(bt_gatt_client_h client,
-               bt_gatt_client_service_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Unregisters a callback function
- * @since_tizen 3.0
- *
- * @param[in] client The GATT client's handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_client_set_service_changed_cb()
- */
-int bt_gatt_client_unset_service_changed_cb(bt_gatt_client_h client);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Connect to a specific LE based service on a remote bluetooth device address, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks A connection can be disconnected by bt_gatt_disconnect().
- *
- * @param[in] address The address of the remote Bluetooth device.
- * @param[in] auto_connect The flag of the auto connection.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @pre The remote device must support le connection.
- * @post This function invokes bt_gatt_connection_state_changed_cb().
- *
- * @see bt_initialize()
- * @see bt_gatt_disconnect()
- * @see bt_gatt_set_connection_state_changed_cb()
- * @see bt_gatt_unset_connection_state_changed_cb()
- * @see bt_gatt_connection_state_changed_cb()
- */
-int bt_gatt_connect(const char *address, bool auto_connect);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Disconnect to LE connection with the given remote Bluetooth device address, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] address The address of the remote Bluetooth device
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The connection must be established.
- * @post This function invokes bt_gatt_connection_state_changed_cb().
- *
- * @see bt_initialize()
- * @see bt_gatt_connect()
- * @see bt_gatt_set_connection_state_changed_cb()
- * @see bt_gatt_unset_connection_state_changed_cb()
- * @see bt_gatt_connection_state_changed_cb()
- */
-int bt_gatt_disconnect(const char *address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Registers a callback function that will be invoked when the connection state is changed.
- * @since_tizen 2.3.1
- *
- * @param[in] callback The callback function to register.
- * @param[in] user_data The user data to be passed  to the callback function.
- *
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_connect()
- * @see bt_gatt_disconnect()
- * @see bt_gatt_unset_connection_state_changed_cb()
- */
-int bt_gatt_set_connection_state_changed_cb(bt_gatt_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Unregisters a callback function that will be invoked when the connection state is changed.
- * @since_tizen 2.3.1
- *
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_connect()
- * @see bt_gatt_disconnect()
- * @see bt_gatt_connection_state_changed_cb()
- */
-int bt_gatt_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief Destroys the GATT handle of service.
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The handle of service
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_service_create()
- */
-int bt_gatt_service_destroy(bt_gatt_h gatt_handle);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief Destroys the GATT handle of characteristic.
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The handle of characteristic
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_characteristic_create()
- */
-int bt_gatt_characteristic_destroy(bt_gatt_h gatt_handle);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief Destroys the GATT handle of descriptor.
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The handle of descriptor
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_descriptor_create()
- */
-int bt_gatt_descriptor_destroy(bt_gatt_h gatt_handle);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Gets the permissions which a characteristic's GATT handle has.
- * @since_tizen 3.0
- *
- * @remarks The @a permissions can be one or more values of #bt_gatt_permission_e, combined with bitwise 'or'.
- *
- * @param[in] gatt_handle The handle of a characteristic
- * @param[out] permissions The permissions which a characteristic's GATT handle has
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_characteristic_create()
- * @see bt_gatt_permission_e
- */
-int bt_gatt_characteristic_get_permissions(bt_gatt_h gatt_handle, int *permissions);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Gets the permissions which a descriptor's GATT handle has.
- * @since_tizen 3.0
- *
- * @remarks The @a permissions can be one or more values of #bt_gatt_permission_e, combined with bitwise 'or'.
- *
- * @param[in] gatt_handle The handle of a descriptor
- * @param[out] permissions The permissions which a descriptor's GATT handle has
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_descriptor_create()
- * @see bt_gatt_permission_e
- */
-int bt_gatt_descriptor_get_permissions(bt_gatt_h gatt_handle, int *permissions);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Creates the GATT service.
- * @since_tizen 3.0
- *
- * @remarks The @a service should be destroyed by using bt_gatt_service_destroy()
- *
- * @param[in] uuid The UUID of the service
- * @param[in] type The type of the service
- * @param[out] service The GATT handle of the created service
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_service_destroy()
- */
-int bt_gatt_service_create(const char *uuid, bt_gatt_service_type_e type,
-                          bt_gatt_h *service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Adds a characteristic to a specified service.
- * @since_tizen 3.0
- *
- * @param[in] service The service's GATT handle
- * @param[in] characteristic The characteristic's GATT handle to be added
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_service_create()
- * @see bt_gatt_characteristic_create()
- */
-int bt_gatt_service_add_characteristic(bt_gatt_h service,
-                                       bt_gatt_h characteristic);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Adds a service to a specified service as included service.
- * @since_tizen 3.0
- *
- * @param[in] service The service's GATT handle
- * @param[in] included_service The service's GATT handle to be added as included service
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_service_create()
- */
-int bt_gatt_service_add_included_service(bt_gatt_h service,
-                                       bt_gatt_h included_service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Gets the GATT server handle to which the specified service belongs.
- * @since_tizen 3.0
- *
- * @remarks The returned Server handle must not be freed by application.
- *
- * @param[in] service The service's GATT handle
- * @param[out] server The GATT server handle to which @a service belongs
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_create()
- * @see bt_gatt_service_create()
- * @see bt_gatt_server_register_service()
- */
-int bt_gatt_service_get_server(bt_gatt_h service, bt_gatt_server_h *server);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Creates the GATT characteristic.
- * @since_tizen 3.0
- *
- * @remarks The @a permissions can be one or more values of #bt_gatt_permission_e, combined with bitwise 'or'.
- * @remarks The @a properties can be one or more values of #bt_gatt_property_e, combined with bitwise 'or'.
- * @remarks The @a characteristic should be destroyed by using bt_gatt_characteristic_destroy().
- *
- * @param[in] uuid The UUID of the characteristic
- * @param[in] permissions the permissions of the characteristic
- * @param[in] properties The properties of the characteristic
- * @param[in] value The value(byte stream) of the characteristic
- * @param[in] value_length The length of @a value
- * @param[out] characteristic The GATT handle of the created characteristic
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_characteristic_destroy()
- */
-int bt_gatt_characteristic_create(const char *uuid, int permissions,
-                               int properties, const char *value, int value_length,
-                               bt_gatt_h *characteristic);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Adds a descriptor to a specified characteristic.
- * @since_tizen 3.0
- *
- * @param[in] characteristic The GATT handle of the characteristic
- * @param[in] descriptor The descriptor's GATT handle to be added
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_characteristic_create()
- * @see bt_gatt_descriptor_create()
- */
-int bt_gatt_characteristic_add_descriptor(bt_gatt_h characteristic,
-                                       bt_gatt_h descriptor);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Creates the GATT characteristic descriptor.
- * @since_tizen 3.0
- *
- * @remarks The @a permissions can be one or more values of #bt_gatt_permission_e, combined with bitwise 'or'.
- * @remarks The @a descriptor should be destroyed by using bt_gatt_descriptor_destroy().
- *
- * @param[in] uuid The UUID of the descriptor
- * @param[in] permissions The permissions of the descriptor
- * @param[in] value The value(byte stream) associated with the descriptor
- * @param[in] value_length The length of @a value
- * @param[out] descriptor The GATT handle of the created characteristic descriptor
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_descriptor_destroy()
- */
-int bt_gatt_descriptor_create(const char *uuid, int permissions,
-                               const char *value, int value_length,
-                               bt_gatt_h *descriptor);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief Initializes the GATT Server.
- * @since_tizen 3.0
- *
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre        The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see        bt_gatt_server_deinitialize()
- */
-int bt_gatt_server_initialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief DeInitializes the GATT server.
- * @since_tizen 3.0
- *
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE      Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre        The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @see        bt_gatt_server_initialize()
- */
-int bt_gatt_server_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Creates the GATT server's handle.
- * @since_tizen 3.0
- *
- * @param[out] server The GATT server's handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_destroy()
- */
-int bt_gatt_server_create(bt_gatt_server_h *server);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Destroys the GATT server's handle.
- * @since_tizen 3.0
- *
- * @remarks All registered services to GATT server are unregistered
- *
- * @param[in] server The GATT server's handle
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_create()
- */
-int bt_gatt_server_destroy(bt_gatt_server_h server);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Registers a callback function to be invoked when a read request for a specified characteristic or descriptor is issued from a remote device(GATT client).
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The GATT handle of a characteristic or descriptor
- * @param[in] callback The callback to be invoked
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_read_value_requested_cb()
- * @see bt_gatt_server_send_response()
- */
-int bt_gatt_server_set_read_value_requested_cb(bt_gatt_h gatt_handle,
-                               bt_gatt_server_read_value_requested_cb callback,
-                               void *user_data);
-
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Registers a callback function to be invoked when the remote device enables or disables the Notification/Indication for particular characteristics.
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The GATT handle of a characteristic
- * @param[in] callback The callback to be invoked
- * @param[in] user_data The user data to be passed to @a callback function
- * @return     0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
- *
- * @see bt_gatt_server_characteristic_notification_state_changed_cb()
- */
-int bt_gatt_server_set_characteristic_notification_state_change_cb(bt_gatt_h gatt_handle,
-                               bt_gatt_server_characteristic_notification_state_changed_cb callback,
-                               void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Registers a callback function to be invoked when a value of a characteristic or descriptor has been changed by a remote device(GATT client)'s request.
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The GATT handle of a characteristic or descriptor
- * @param[in] callback The callback to be invoked
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_write_value_requested_cb()
- */
-int bt_gatt_server_set_write_value_requested_cb(bt_gatt_h gatt_handle,
-                               bt_gatt_server_write_value_requested_cb callback,
-                               void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Registers a specified service to the specified GATT server that the local device is hosting.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] server The GATT server that local device is hosting
- * @param[in] service The service, which needs to be registered in @a server
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_ALREADY_DONE Operation is already done
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_create()
- * @see bt_gatt_service_create()
- * @see bt_gatt_server_start()
- * @see bt_gatt_server_unregister_service()
- */
-int bt_gatt_server_register_service(bt_gatt_server_h server, bt_gatt_h service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Unregisters a specified service from the specified GATT server that the local device is hosting.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] server The GATT server that local device is hosting
- * @param[in] service The service, which needs to be unregistered from @a server
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_SERVICE_NOT_FOUND  Service not found
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_register_service()
- */
-int bt_gatt_server_unregister_service(bt_gatt_server_h server, bt_gatt_h service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Unregisters all services from the specified GATT server that the local device is hosting.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] server The GATT server that local device is hosting
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_register_service()
- */
-int bt_gatt_server_unregister_all_services(bt_gatt_server_h server);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Registers the application along with the GATT services of the application it is hosting.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_ALREADY_DONE Operation is already done
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_initialize()
- * @see bt_gatt_server_create()
- * @see bt_gatt_service_create()
- * @see bt_gatt_server_unregister_service()
- */
-int bt_gatt_server_start(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Sends a response to the remote device as a result of a read/write request.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @remarks Until this function is called, a read/write request is not finished.
- *
- * @param[in] request_id The identification of a read/write request
- * @param[in] request_type The request type for read/write
- * @param[in] offset The offset from where a value is read
- * @param[in] resp_status The application error if any occurred or BT_ERROR_NONE for successful.
- * @param[in] value The value to be sent. It will be sent from @a offset. If it is NULL, a requested GATT handle's value will be sent from @a offset.
- * @param[in] value_length Value Length
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_read_value_requested_cb()
- */
-int bt_gatt_server_send_response(int request_id, bt_gatt_att_request_type_e request_type,
-                       int offset, int resp_status, char *value, int value_length);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Notifies value change of the characteristic to the remote devices which enable a Client Characteristic Configuration Descriptor.
- * @since_tizen 3.0
- *
- * @param[in] characteristic The characteristic which has a changed value
- * @param[in] callback The function to be invoked on each remote device when a sending operation is done
- * @param[in] device_address Remote device address to send notify or indicate and if set to NULL then notify/indicate all is enabled.
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_server_notification_sent_cb()
- */
-int bt_gatt_server_notify_characteristic_changed_value(bt_gatt_h characteristic,
-                               bt_gatt_server_notification_sent_cb callback,
-                               const char *device_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Gets a service's GATT handle which has specific UUID.
- * @since_tizen 3.0
- *
- * @remark The returned GATT handle must not be freed by application.
- * It will be freed when an associated server is destroyed by bt_gatt_server_destroy().
- * If there are multiple services which have same UUID, only the first matched one will be returned.
- *
- * @param[in] server The GATT server's handle
- * @param[in] uuid The service's GATT handle which has this UUID will be returned if it exists
- * @param[out] service The service's GATT handle which has @a uuid if it exists
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NO_DATA  No data available
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_gatt_server_get_service(bt_gatt_server_h server, const char *uuid,
-                               bt_gatt_h *service);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Invokes @a callback function on each service that belongs to the specified GATT server.
- * @since_tizen 3.0
- *
- * @param[in] server The GATT server's handle
- * @param[in] callback The function to be invoked on each service
- * @param[in] user_data The user data to be passed to @a callback function
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_foreach_cb()
- */
-int bt_gatt_server_foreach_services(bt_gatt_server_h server,
-               bt_gatt_foreach_cb callback, void *user_data);
-
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief Initializes the Bluetooth PBAP Client.
- * @details This initialization is necessary to call other PBAP client APIs.
- * @since_tizen 3.0
- *
- * @remarks This function must be called to initialize Bluetooth PBAP client. You must free all resources of the Bluetooth service
- * by calling bt_pbap_client_deinitialize() if Bluetooth PBAP Client is no longer needed.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of the local Bluetooth adapter must be #BT_ADAPTER_ENABLED.
- *
- * @see  bt_pbap_client_deinitialize()
- * @see  bt_pbap_client_connect()
- * @see  bt_pbap_client_disconnect()
- * @see  bt_pbap_client_get_phone_book_size()
- * @see  bt_pbap_client_get_phone_book()
- * @see  bt_pbap_client_get_list()
- * @see  bt_pbap_client_pull_vcard()
- * @see  bt_pbap_client_search_phone_book()
- */
-int bt_pbap_client_initialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief Deinitializes the Bluetooth PBAP Client.
- * @details This deinitialization must be done to free resources when the PBAP client is not longer needed.
- * @since_tizen 3.0
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of the local Bluetooth adapter must be #BT_ADAPTER_ENABLED.
- *     The PBAP client must be initialized with bt_pbap_client_initialize().
- * @see  bt_pbap_client_deinitialize()
- * @see  bt_pbap_client_connect()
- * @see  bt_pbap_client_disconnect()
- * @see  bt_pbap_client_get_phone_book_size()
- * @see  bt_pbap_client_get_phone_book()
- * @see  bt_pbap_client_get_list()
- * @see  bt_pbap_client_pull_vcard()
- * @see  bt_pbap_client_search_phone_book()
- */
-int bt_pbap_client_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief  Registers a callback function that will be invoked when the connection state is changed.
- * @since_tizen 3.0
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The PBAP client must be initialized with bt_pbap_client_initialize().
- * @see bt_pbap_client_initialize()
- */
-int bt_pbap_client_set_connection_state_changed_cb(bt_pbap_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the connection state is changed.
- * @since_tizen 3.0
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The PBAP client must be initialized with bt_pbap_client_initialize().
- * @see bt_pbap_client_initialize()
- */
-int bt_pbap_client_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief Connects to PBAP server, asynchronously.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege http://tizen.org/privilege/bluetooth
- *
- * @param[in] address The other device's address
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of the local Bluetooth adapter must be #BT_ADAPTER_ENABLED.
- * @pre The PBAP client must be initialized with bt_pbap_client_initialize().
- * @pre The local device must be bonded with the remote device by bt_device_create_bond().
- * @post bt_pbap_connection_state_changed_cb() will be invoked.
- * @see bt_pbap_client_disconnect()
- * @see bt_pbap_client_set_connection_state_changed_cb()
- */
-int bt_pbap_client_connect(const char *address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief Disconnects from PBAP server, asynchronously.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege http://tizen.org/privilege/bluetooth
- *
- * @param[in] address The other device's address
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of the local Bluetooth adapter must be #BT_ADAPTER_ENABLED.
- * @pre The PBAP client must be initialized with bt_pbap_client_initialize().
- * @pre PBAP connection must be created with bt_pbap_client_connect().
- * @post bt_pbap_connection_state_changed_cb() will be invoked.
- * @see bt_pbap_client_connect()
- * @see bt_pbap_client_set_connection_state_changed_cb()
- */
-int bt_pbap_client_disconnect(const char *address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief Gets size of phone book from PBAP server, asynchronously.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege http://tizen.org/privilege/bluetooth
- *
- * @param[in] address The other device's address
- * @param[in] source Source of the phone book (Phone/SIM)
- * @param[in] folder_type Type of folder
- * @param[in] callback The callback function called when PBAP phone book size is returned.
- * @param[in] user_data Data to be passed to the PBAP phone book size callback.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of the local Bluetooth adapter must be #BT_ADAPTER_ENABLED.
- * @pre The PBAP client must be initialized with bt_pbap_client_initialize().
- * @pre PBAP connection must be created with bt_pbap_client_connect().
- *
- * @see bt_pbap_client_connect()
- */
-int bt_pbap_client_get_phone_book_size(const char *address,
-                                               bt_pbap_address_book_source_e source,
-                                               bt_pbap_folder_type_e folder_type,
-                                               bt_pbap_phone_book_size_cb callback,
-                                               void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief Gets all contacts and call logs as vCard from PBAP server, asynchronously.
- * @details The received phone book file will be saved in the platform downloads folder.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege http://tizen.org/privilege/bluetooth
- *                 http://tizen.org/privilege/mediastorage
- *
- * @param[in] address The other device's address
- * @param[in] source Source of phone book (Phone/SIM)
- * @param[in] folder_type Type of folder
- * @param[in] format The vCard format
- * @param[in] order Specifies which field shall be used to sort vCards.
- * @param[in] offset The number of vCards to be excluded, counting from the beginning
- * @param[in] max_list_count The maximum number of vCards to be fetched
- * @param[in] fields vCard fields to be fetched; one or more #bt_pbap_field_e values combined with bitwise 'or'
- * @param[in] callback The callback function called when PBAP phone book is Pulled.
- * @param[in] user_data Data to be passed to the PBAP phone book pulling callback.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of the local Bluetooth adapter must be #BT_ADAPTER_ENABLED.
- * @pre The PBAP client must be initialized with bt_pbap_client_initialize().
- * @pre PBAP connection must be created with bt_pbap_client_connect().
- *
- * @see bt_pbap_client_connect()
- */
-int bt_pbap_client_get_phone_book(const char *address,
-                                               bt_pbap_address_book_source_e source,
-                                               bt_pbap_folder_type_e folder_type,
-                                               bt_pbap_vcard_format_e format,
-                                               bt_pbap_sort_order_e order,
-                                               unsigned short offset,
-                                               unsigned short max_list_count,
-                                               unsigned int fields,
-                                               bt_pbap_phone_book_received_cb callback,
-                                               void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief Gets contact and call log information from the PBAP server, asynchronously.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege http://tizen.org/privilege/bluetooth
- *
- * @param[in] address The other device's address
- * @param[in] source Source of phone book (Phone/SIM)
- * @param[in] folder_type Type of folder
- * @param[in] order Specifies which field shall be used to sort vCards.
- * @param[in] offset vCards to be excluded from beginning.
- * @param[in] max_list_count Maximum number of vCards to be fetched
- * @param[in] callback The callback function called when PBAP List is returned.
- * @param[in] user_data Data to be passed to the PBAP phone book pulling callback.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of the local Bluetooth adapter must be #BT_ADAPTER_ENABLED.
- * @pre The PBAP client must be initialized with bt_pbap_client_initialize().
- * @pre PBAP connection must be created with bt_pbap_client_connect().
- *
- * @see bt_pbap_client_connect()
- */
-int bt_pbap_client_get_list(const char *address,
-                                       bt_pbap_address_book_source_e source,
-                                       bt_pbap_folder_type_e folder_type,
-                                       bt_pbap_sort_order_e order,
-                                       unsigned short offset,
-                                       unsigned short max_list_count,
-                                       bt_pbap_list_vcards_cb callback,
-                                       void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief Gets the selected contact using the index parameter as vCard from PBAP server, asynchronously.
- * @details The received phone book file will be saved in the platform downloads folder.
- *              The @a index value should be equal to the value of the @a index field in the #bt_pbap_vcard_info_s structure,
- *              which can be obtained with bt_pbap_client_get_list() or bt_pbap_client_search_phone_book().
- * @since_tizen 3.0
- * @privlevel public
- * @privilege http://tizen.org/privilege/bluetooth
- *                 http://tizen.org/privilege/mediastorage
- *
- * @param[in] address The other device's address
- * @param[in] source Source of phone book (Phone/SIM)
- * @param[in] folder_type Type of folder
- * @param[in] index The handle index of vCard to be fetched
- * @param[in] format Format of vCard
- * @param[in] fields vCard fields to be fetched; one or more #bt_pbap_field_e values combined with bitwise 'or'
- * @param[in] callback The callback function called when PBAP phone book is Pulled.
- * @param[in] user_data Data to be passed to the PBAP phone book Pulling callback.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of the local Bluetooth adapter must be #BT_ADAPTER_ENABLED.
- * @pre The PBAP client must be initialized with bt_pbap_client_initialize().
- * @pre PBAP connection must be created with bt_pbap_client_connect().
- * @pre The vCard information (#bt_pbap_vcard_info_s) must be obtained with bt_pbap_client_get_list() or bt_pbap_client_search_phone_book().
- * @see bt_pbap_client_connect()
- * @see bt_pbap_client_get_list()
- * @see bt_pbap_client_search_phone_book()
- */
-int bt_pbap_client_pull_vcard(const char *address,
-                                       bt_pbap_address_book_source_e source,
-                                       bt_pbap_folder_type_e folder_type,
-                                       int index,
-                                       bt_pbap_vcard_format_e format,
-                                       unsigned int fields,
-                                       bt_pbap_phone_book_received_cb callback,
-                                       void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief Finds and fetches the contact and call log information from the PBAP server, asynchronously.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege http://tizen.org/privilege/bluetooth
- *
- * @param[in] address The other device's address
- * @param[in] source Source of phone book (Phone/SIM)
- * @param[in] folder_type Type of folder
- * @param[in] search_attribute field to be search
- * @param[in] search_value pattern to be searched for
- * @param[in] order Specifies which field shall be used to sort vCards.
- * @param[in] offset vCards to be excluded from beginning.
- * @param[in] max_list_count Maximum number of vCards to be fetched
- * @param[in] callback The callback function called when PBAP List is returned.
- * @param[in] user_data Data to be passed to the PBAP phone book pulling callback.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of the local Bluetooth adapter must be #BT_ADAPTER_ENABLED.
- * @pre The PBAP client must be initialized with bt_pbap_client_initialize().
- * @pre PBAP connection must be created with bt_pbap_client_connect().
- *
- * @see bt_pbap_client_connect()
- */
-int bt_pbap_client_search_phone_book(const char *address,
-                                       bt_pbap_address_book_source_e source,
-                                       bt_pbap_folder_type_e folder_type,
-                                       bt_pbap_search_field_e search_attribute,
-                                       const char *search_value,
-                                       bt_pbap_sort_order_e order,
-                                       unsigned short offset,
-                                       unsigned short max_list_count,
-                                       bt_pbap_list_vcards_cb callback,
-                                       void *user_data);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_NETWORK_BLUETOOTH_H__ */
diff --git a/include/wearable/bluetooth_extension.h b/include/wearable/bluetooth_extension.h
deleted file mode 100644 (file)
index 64c76c8..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __TIZEN_NETWORK_BLUETOOTH_EXTENSION_H__
-#define __TIZEN_NETWORK_BLUETOOTH_EXTENSION_H__
-
-#include "bluetooth_type.h"
-#include "bluetooth_type_extension.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/**
- * @file        bluetooth_extension.h
- */
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Opens a SCO(Synchronous Connection Oriented link) to connected remote device, asynchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_ALREADY_DONE  Operation is already done
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @post bt_ag_sco_state_changed_cb() will be invoked.
- * @see bt_ag_close_sco()
- * @see bt_ag_sco_state_changed_cb()
- * @see bt_audio_connect()
- */
-int bt_ag_open_sco(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Closes an opened SCO(Synchronous Connection Oriented link), asynchronously.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The SCO must be opened with bt_ag_open_sco().
- * @post bt_ag_sco_state_changed_cb() will be invoked.
- * @see bt_ag_open_sco()
- * @see bt_ag_sco_state_changed_cb()
- */
-int bt_ag_close_sco(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Checks whether an opened SCO(Synchronous Connection Oriented link) exists or not.
- * @since_tizen 2.3
- * @param[out] opened The SCO status: (@c true = opened, @c  false = not opened)
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_ag_open_sco()
- * @see bt_ag_close_sco()
- */
-int bt_ag_is_sco_opened(bool *opened);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Registers a callback function that will be invoked when the SCO(Synchronous Connection Oriented link) state is changed.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_sco_state_changed_cb()
- * @see bt_ag_unset_sco_state_changed_cb()
- */
-int bt_ag_set_sco_state_changed_cb(bt_ag_sco_state_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Unregisters a callback function that will be invoked when the SCO(Synchronous Connection Oriented link) state is changed.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_sco_state_changed_cb()
- * @see bt_ag_set_sco_state_changed_cb()
- */
-int bt_ag_unset_sco_state_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Notifies the state of voice recognition.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @param[in] state  The state of voice recognition: (@c true = enabled, @c  false = disabled)
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @see bt_audio_connect()
- */
-int bt_ag_notify_voice_recognition_state(bool state);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Notifies the speaker gain to the remote device.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @details This function sends a signal to the remote device. This signal has the gain value.
- * @a gain is represented on a scale from 0 to 15. This value is absolute value relating to a particular volume level.
- * When the speaker gain of remote device is changed to the requested gain, bt_audio_speaker_gain_changed_cb() will be called.
- * @param[in] gain The gain of speaker (0 ~ 15)
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device is connected by bt_audio_connect() with #BT_AUDIO_PROFILE_TYPE_HSP_HFP service.
- * @see bt_ag_get_speaker_gain()
- * @see bt_ag_set_speaker_gain_changed_cb()
- * @see bt_ag_unset_speaker_gain_changed_cb()
- */
-int bt_ag_notify_speaker_gain(int gain);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Gets the current speaker gain of the remote device.
- * @since_tizen 2.3
- * @details This function gets the value of speaker gain of the remote device.
- * @a gain is represented on a scale from 0 to 15. This value is absolute value relating to a particular volume level.
- * @param[out] gain The gain of speaker (0 ~ 15)
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device is connected by bt_audio_connect() with #BT_AUDIO_PROFILE_TYPE_HSP_HFP service.
- * @see bt_ag_notify_speaker_gain()
- * @see bt_ag_set_speaker_gain_changed_cb()
- * @see bt_ag_unset_speaker_gain_changed_cb()
- */
-int bt_ag_get_speaker_gain(int *gain);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Registers a callback function that will be invoked when the speaker gain of the remote device is changed.
- * @since_tizen 2.3
- * @details This function let you know the change of the speaker gain of the remote device.
- * @a gain is represented on a scale from 0 to 15. This value is absolute value relating to a particular volume level.
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_unset_speaker_gain_changed_cb()
- */
-int bt_ag_set_speaker_gain_changed_cb(bt_ag_speaker_gain_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Unregisters a callback function that will be invoked when the speaker gain of the remote device is changed.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_set_speaker_gain_changed_cb()
- */
-int bt_ag_unset_speaker_gain_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Registers a callback function that will be invoked when the microphone gain of the remote device is changed.
- * @since_tizen 2.3
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_unset_microphone_gain_changed_cb()
- */
-int bt_ag_set_microphone_gain_changed_cb(bt_ag_microphone_gain_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Unregisters a callback function that will be invoked when the microphone gain of the remote device is changed.
- * @since_tizen 2.3
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_set_microphone_gain_changed_cb()
- */
-int bt_ag_unset_microphone_gain_changed_cb(void);
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_NETWORK_BLUETOOTH_EXTENSION_H__ */
-
diff --git a/include/wearable/bluetooth_internal.h b/include/wearable/bluetooth_internal.h
deleted file mode 100644 (file)
index 5958a5e..0000000
+++ /dev/null
@@ -1,3387 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __TIZEN_NETWORK_BLUETOOTH_INTERNAL_H__
-#define __TIZEN_NETWORK_BLUETOOTH_INTERNAL_H__
-
-#include <glib.h>
-#include "bluetooth_type.h"
-#include "bluetooth_type_internal.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/**
- * @file        bluetooth_internal.h
- */
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Enables the local Bluetooth adapter, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @details This function enables Bluetooth protocol stack and hardware.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_ALREADY_DONE  Already enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre Bluetooth service must be initialized with bt_initialize().
- * @pre The state of local Bluetooth must be #BT_ADAPTER_DISABLED
- * @post This function invokes bt_adapter_state_changed_cb().
- *
- * @see bt_initialize()
- * @see bt_adapter_get_state()
- * @see bt_adapter_set_state_changed_cb()
- * @see bt_adapter_unset_state_changed_cb()
- * @see bt_adapter_state_changed_cb()
- *
- */
-int bt_adapter_enable(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Disables the local Bluetooth adapter, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @details This function disables Bluetooth protocol stack and hardware.
- *
- * @remarks You should disable Bluetooth adapter, which is helpful for saving power.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED
- * @post This function invokes bt_adapter_state_changed_cb().
- *
- * @see bt_adapter_get_state()
- * @see bt_adapter_state_changed_cb()
- * @see bt_adapter_set_state_changed_cb()
- * @see bt_adapter_unset_state_changed_cb ()
- *
- */
-int bt_adapter_disable(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Recover the local Bluetooth adapter, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @details This function does recovery logic, disables Bluetooth protocol stack and hardware, then enables after a few seconds.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED
- * @post This function invokes bt_adapter_state_changed_cb().
- *
- * @see bt_adapter_get_state()
- * @see bt_adapter_state_changed_cb()
- * @see bt_adapter_set_state_changed_cb()
- * @see bt_adapter_unset_state_changed_cb ()
- *
- */
-int bt_adapter_recover(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  A2DP source/sink role is switched using this API
- * @since_tizen 4.0
- * @param[in] Role for A2DP
- * @return @c 0 on success,
- *         otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED Not supported
- * @retval #BT_ERROR_OPERATION_FAILED Internal Error
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_initialize()
- * @see bt_audio_initialize()
- */
-int bt_audio_select_role(bt_audio_role_e role);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Reset the local Bluetooth adapter, synchronously.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @details This function resets Bluetooth protocol and values.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_state_changed_cb() will be invoked if The state of local Bluetooth was #BT_ADAPTER_ENABLED.
- *
- * @see bt_initialize()
- * @see bt_adapter_get_state()
- * @see bt_adapter_set_state_changed_cb()
- * @see bt_adapter_unset_state_changed_cb()
- * @see bt_adapter_state_changed_cb()
- *
- */
-int bt_adapter_reset(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the version of local Bluetooth adapter.
- * @since_tizen 2.3.1
- * @remarks The @a local_version must be released with free() by you.
- *
- * @param[out] local_version The version of local Bluetooth adapter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_adapter_get_version(char **local_version);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Gets the information regarding local Bluetooth adapter.
- * @since_tizen 2.3.1
- * @remarks The @a all parameters must be released with free() by you.
- *
- * @param[out] chipset Chipset name of local Bluetooth adapter
- * @param[out] firmware Firmware info. of local Bluetooth adapter
- * @param[out] stack_version Bluetooth stack version
- * @param[out] profiles The profile list of local Bluetooth adapter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_adapter_get_local_info(char **chipset, char **firmware, char **stack_version, char **profiles);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Sets the visibility mode.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE will change to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE
- * after the given @a duration goes.
- *
- * @param[in] discoverable_mode The Bluetooth visibility mode to set
- * @param[in] duration The duration until the visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE (in seconds).
- * @a duration is used only for #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE mode.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post bt_adapter_visibility_mode_changed_cb() will be invoked if this function returns #BT_ERROR_NONE.
- *
- * @see bt_adapter_get_visibility()
- * @see bt_adapter_visibility_mode_changed_cb()
- * @see bt_adapter_set_visibility_mode_changed_cb()
- * @see bt_adapter_unset_visibility_mode_changed_cb()
- */
-int bt_adapter_set_visibility(bt_adapter_visibility_mode_e discoverable_mode, int duration);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Registers a callback function that will be invoked when remote device requests authentication.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
- * @pre The Bluetooth service must be initialized by bt_initialize().
- * @param[in] callback  callback function to be set when a request is received.
- * @param[in] user_data data from application which will be provided in callback.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @see bt_initialize()
- * @see bt_adapter_set_authentication_req_cb()
- */
-int bt_adapter_set_authentication_req_cb(bt_adapter_authentication_req_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Unregisters a callback function that will be invoked when remote device requests authentication.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
- * @pre The Bluetooth service must be initialized by bt_initialize().
- * @see bt_initialize()
- * @see bt_adapter_set_authentication_req_cb()
- */
-int bt_adapter_unset_authentication_req_cb(void);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  API to reply with PIN or PASSKEY with authentication type - TRUE or FALSE.
- * @remarks  This function can be called by application when remote device requests PIN or PASSKEY from
- *           local adapter.
- * @param[in]  passkey  The passkey to be provided by application when remote devices requests for it.
- * @param[in]  authentication_reply This indicates whether application wants to accept or cancel the on-going pairing
- * @pre  This function can only be called when application receieves authentication event (BT_AUTH_PIN_REQUEST)
- *       from remote device.
- * @see  bt_adapter_set_authentication_req_cb()
- */
-int bt_adapter_passkey_reply(char *passkey, bool authentication_reply);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  API to reply to the PASSKEY confirmation for on-going pairing with remote device.
- * @remarks  This function can be called by application, when local adapter wants PASSKEY confirmation from user.
- * @param[in]  confirmation_reply This indicates whether application wants to accepts or cancels the on-going pairing
- *             confirmation_reply : TRUE will indicate that Application has confirmed the PASSKEY
- *             confirmation_reply : FALSE will indicate that Application has failed to confirm the PASSKEY. In this situation
- *             the pairing will be failed.
- * @pre  This function can only be called when application receives authentication event (BT_AUTH_PASSKEY_CONFIRM_REQUEST)
- *       from remote device.
- * @see  bt_adapter_set_authentication_req_cb()
- */
-int bt_adapter_passkey_confirmation_reply(bool confirmation_reply);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked when the connectable state changes.
- * @since_tizen 2.3.1
- *
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_connectable_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_connectable_changed_cb()
- * @see bt_adapter_unset_connectable_changed_cb()
- */
-int bt_adapter_set_connectable_changed_cb(bt_adapter_connectable_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Unregisters the callback function.
- * @since_tizen 2.3.1
- *
- * @return  0 on success, otherwise a negative error value.
- * @retval  #BT_ERROR_NONE  Successful
- * @retval  #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval  #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre  The Bluetooth service must be initialized with bt_initialize().
- *
- * @see  bt_initialize()
- * @see  bt_adapter_set_connectable_changed_cb()
- */
-int bt_adapter_unset_connectable_changed_cb(void);
-
-/**
- * @internal
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Gets the connectable state of local Bluetooth adapter.
- * @since_tizen 2.3.1
- *
- * @remarks When connectable state is false, no device can connect to this device and visibility mode cannot be changed.
- *
- * @param[out] connectable The connectable state of local Bluetooth adapter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_set_connectable()
- */
-int bt_adapter_get_connectable(bool *connectable);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Sets the connectable state of local Bluetooth adapter.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks When connectable state is false, no device can connect to this device and visibility mode cannot be changed.
- *
- * @param[in] connectable The connectable state to set
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post bt_adapter_connectable_changed_cb() will be invoked if this function returns #BT_ERROR_NONE.
- *
- * @see bt_adapter_get_connectable()
- * @see bt_adapter_connectable_changed_cb()
- * @see bt_adapter_set_connectable_changed_cb()
- * @see bt_adapter_unset_connectable_changed_cb()
- */
-int bt_adapter_set_connectable(bool connectable);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Sets the manufacturer data of local Bluetooth adapter.
- * @since_tizen 2.3
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]   data   The manufacturer specific data of the Bluetooth device.
- * @param[in]   len    The length of @a data.Maximaum length is 240 bytes.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @post bt_adapter_manufacturer_data_changed_cb() will be invoked
- * if this function returns #BT_ERROR_NONE.
- *
- * @see bt_adapter_manufacturer_data_changed_cb
- * @see bt_adapter_set_manufacturer_data_changed_cb()
- * @see bt_adapter_unset_manufacturer_data_changed_cb()
- */
-int bt_adapter_set_manufacturer_data(char *data, int len);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Registers a callback function to be invoked
- * when the manufacturer data of Bluetooth adapter changes.
- * @since_tizen 2.3
- *
- * @param[in]   callback       The callback function to invoke
- * @param[in]   user_data      The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post  bt_adapter_manufacturer_data_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_unset_manufacturer_data_changed_cb()
- */
-int bt_adapter_set_manufacturer_data_changed_cb(
-               bt_adapter_manufacturer_data_changed_cb callback,
-               void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3
- *
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- * @see bt_adapter_set_manufacturer_data_changed_cb()
- */
-int bt_adapter_unset_manufacturer_data_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Enables the local Bluetooth le adapter, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @details This function enables Bluetooth protocol stack and hardware.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_ALREADY_DONE  Already enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre Bluetooth service must be initialized with bt_initialize().
- * @post This function invokes bt_adapter_le_state_changed_cb().
- *
- * @see bt_initialize()
- * @see bt_adapter_le_get_state()
- * @see bt_adapter_le_set_state_changed_cb()
- * @see bt_adapter_le_unset_state_changed_cb()
- * @see bt_adapter_le_state_changed_cb()
- *
- */
-int bt_adapter_le_enable(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Disables the local Bluetooth le adapter, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @details This function disables Bluetooth le protocol stack and hardware.
- *
- * @remarks
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_LE_ENABLED
- * @post This function invokes bt_adapter_le_state_changed_cb().
- *
- * @see bt_adapter_le_get_state()
- * @see bt_adapter_le_state_changed_cb()
- * @see bt_adapter_le_set_state_changed_cb()
- * @see bt_adapter_le_unset_state_changed_cb ()
- *
- */
-int bt_adapter_le_disable(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Gets the current state of local Bluetooth adapter.
- * @since_tizen 2.3.1
- *
- * @param[out] adapter_le_state The current adapter le state
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- */
-int bt_adapter_le_get_state(bt_adapter_le_state_e *adapter_le_state);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Registers a callback function to be invoked when the Bluetooth adapter le state changes.
- * @since_tizen 2.3.1
- *
- * @param[in] callback The callback function to invoke
- * @param[in] user_data        The user data to be passed to the callback function
- *
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_adapter_le_state_changed_cb() will be invoked.
- *
- * @see bt_initialize()
- * @see bt_adapter_le_state_changed_cb()
- * @see bt_adapter_le_unset_state_changed_cb()
- */
-int bt_adapter_le_set_state_changed_cb(bt_adapter_le_state_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief      Unregisters the callback function.
- * @since_tizen 2.3.1
- *
- * @return     0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_initialize()
- * @see bt_adapter_le_set_state_changed_cb()
- */
-int bt_adapter_le_unset_state_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief add address to whitelist for accepting scanning request.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks If the adress is in the whitelist then other LE devices are able to
- * search this device. Before calling this API, make sure that the adapter is
- * enabled. There is no callback event for this API.
-
- * @param[in] address The other device's address
- * @param[in] address_type The other device's address type
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_le_start_advertising_new()
- * @see bt_adapter_le_stop_advertising()
- */
-int bt_adapter_le_add_white_list(const char *address, bt_device_address_type_e address_type);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief remove address from the whitelist for not accepting scanning request.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks If the adress is in the whitelist then other LE devices are able to
- * search this device. Before calling this API, make sure that the adapter is
- * enabled. There is no callback event for this API.
- *
- * @param[in] address The other device's address
- * @param[in] address_type The other device's address type
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Adapter is not enabled
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_adapter_le_start_advertising_new()
- * @see bt_adapter_le_stop_advertising()
- */
-int bt_adapter_le_remove_white_list(const char *address, bt_device_address_type_e address_type);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Sets the Privacy feature state of local Bluetooth adapter.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] enable_privacy The privacy feature to set/unset.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The state of local Bluetooth must be #BT_ADAPTER_LE_ENABLED.
- *
- */
-int bt_adapter_le_enable_privacy(bool enable_privacy);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Creates scan filter to find only LE advertisement which has specific data.
- * @since_tizen 2.4
- *
- * @param[out] scan_filter The handle of scan filter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_destroy_scan_filter()
- */
-int bt_adapter_le_create_scan_filter(bt_scan_filter_h *scan_filter);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Destroys scan filter.
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_create_scan_filter()
- */
-int bt_adapter_le_destroy_scan_filter(bt_scan_filter_h scan_filter);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the device address to filter advertisements
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] address The device address to filter advertisements
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_device_address(bt_scan_filter_h scan_filter, const char *address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the device name to filter advertisements
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] name The device name to filter advertisements
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_device_name(bt_scan_filter_h scan_filter, const char *name);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the service UUID to filter advertisements
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] uuid The service UUID to filter advertisements
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_service_uuid(bt_scan_filter_h scan_filter, const char *uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the service uuid and the mask to filter advertisements by partial data
- * @since_tizen 2.4
- *
- * @remarks the length of mask msut be the same with the length of service uuid.
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] uuid The service UUID to filter advertisements
- * @param[in] mask The mask to filter advertisements
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_service_uuid_with_mask(bt_scan_filter_h scan_filter,
-                       const char *uuid, const char *mask);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the service solicitation UUID to filter advertisements
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] uuid The service solicitation UUID to filter advertisements
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_service_solicitation_uuid(bt_scan_filter_h scan_filter, const char *uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the service solicitation uuid and the mask to filter advertisements by partial data
- * @since_tizen 2.4
- *
- * @remarks the length of mask msut be the same with the length of service solicitation uuid.
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] uuid The service solicitation UUID to filter advertisements
- * @param[in] mask The mask to filter advertisements
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_service_solicitation_uuid_with_mask(bt_scan_filter_h scan_filter,
-                       const char *uuid, const char *mask);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the service data to filter advertisements
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] uuid The service UUID to filter advertisements
- * @param[in] data The service data to filter advertisements
- * @param[in] data_len The length of the service data
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_service_data(bt_scan_filter_h scan_filter,
-                       const char *uuid, const char *data, unsigned int data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the service data and the mask to filter advertisements by partial data
- * @since_tizen 2.4
- *
- * @remarks the length of mask msut be the same with the length of service data.
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] uuid The service UUID to filter advertisements
- * @param[in] data The service data to filter advertisements
- * @param[in] data_len The length of the service data
- * @param[in] mask The mask to filter advertisements
- * @param[in] mask_len The length of the mask to be set.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_service_data_with_mask(bt_scan_filter_h scan_filter,
-                       const char *uuid, const char *data, unsigned int data_len, const char *mask, unsigned int mask_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the manufacturer data to filter advertisements
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] manufacturer_id The manufacturer ID (0x0000 ~ 0xFFFF)
- * @param[in] data The manufacturer data (byte array)
- * @param[in] data_len The length of manufacturer data
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_manufacturer_data(bt_scan_filter_h scan_filter,
-                       int manufacturer_id, const char *data, unsigned int data_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Adds the manufacturer data and the mask to filter advertisements by partial data
- * @since_tizen 2.4
- *
- * @remarks the length of mask msut be the same with the length of service uuid.
- *
- * @param[in] scan_filter The handle of scan filter
- * @param[in] manufacturer_id The manufacturer ID (0x0000 ~ 0xFFFF)
- * @param[in] data The manufacturer data (byte array)
- * @param[in] data_len The length of manufacturer data
- * @param[in] mask The mask to filter advertisements
- * @param[in] mask_len The length of the mask to be set.
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_scan_filter_set_manufacturer_data_with_mask(bt_scan_filter_h scan_filter,
-                       int manufacturer_id, const char *data, unsigned int data_len, const char *mask, unsigned int mask_len);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Registers the scan filter to use for scanning
- * @since_tizen 2.4
- *
- * @remarks Several scan filters can be registered. And the specific advertisements, satisfy the one of scan filters, will be found.
- *
- * @param[in] scan_filter The handle of scan filter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Scan is in progress
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_register_scan_filter(bt_scan_filter_h scan_filter);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Unregisters the scan filter to be registered
- * @since_tizen 2.4
- *
- * @param[in] scan_filter The handle of scan filter
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Scan is in progress
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_unregister_scan_filter(bt_scan_filter_h scan_filter);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Unregisters all scan filters to be registered
- * @since_tizen 2.4
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Scan is in progress
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- */
-int bt_adapter_le_unregister_all_scan_filters(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Set advertising filter policy to use white list
- * @since_tizen 2.4
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- *
- * @param[in] advertiser The handle of advertiser
- * @param[in] filter_policy The filter policy of advertising
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Operation is now in progress
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- *
- * @see bt_adapter_le_start_advertising_new()
- */
-int bt_adapter_le_set_advertising_filter_policy(bt_advertiser_h advertiser, bt_adapter_le_advertising_filter_policy_e filter_policy);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Creates a bond with a remote Bluetooth device, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks A bond can be destroyed by bt_device_destroy_bond().\n
- * The bonding request can be cancelled by bt_device_cancel_bonding().
- *
- * @param[in] remote_address The address of the remote Bluetooth device with which the bond should be created
- * @param[in] conn_type The connection type(LE or BREDR) to create bond with remote device
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_RESOURCE_BUSY     Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- * @pre The remote device must be discoverable with bt_adapter_start_device_discovery().
- * @post This function invokes bt_device_bond_created_cb().
- *
- * @see bt_adapter_start_device_discovery()
- * @see bt_device_create_bond()
- * @see bt_device_bond_created_cb()
- * @see bt_device_cancel_bonding()
- * @see bt_device_destroy_bond()
- * @see bt_device_set_bond_created_cb()
- * @see bt_device_unset_bond_created_cb()
- */
-int bt_device_create_bond_by_type(const char *remote_address,
-                                 bt_device_connection_link_type_e conn_type);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Cancels service search process.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The service search must be in progress by bt_device_start_service_search().
- *
- * @see bt_device_start_service_search()
- * @see bt_device_service_searched_cb()
- * @see bt_device_set_service_searched_cb()
- * @see bt_device_unset_service_searched_cb()
- */
-int bt_device_cancel_service_search(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Gets a connection state
- * @since_tizen 2.4
- *
- * @param[in] remote_address The address of the remote Bluetooth device
- * @param[in] link_type The link type to get a connection state
- * @param[out] connected The connection state
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED   Operation failed
- */
-int bt_device_get_connection_state(const char *remote_address, bt_device_connection_link_type_e link_type, bool *connected);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Sets a profile restricted connection for a device
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_device_set_profile_restricted(const char *device_address, bt_restricted_profile_t profile, bool restricted);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Gets a profile restricted connection for a device
- * @since_tizen 3.0
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_NOT_IN_PROGRESS  Operation not in progress
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_device_get_profile_restricted(const char *device_address, bt_restricted_profile_t profile, int *restricted);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Request to change ATT MTU value
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] remote_address The address of the remote Bluetooth device
- * @param[in] mtu New MTU value to be changed
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED   Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_device_request_att_mtu(const char *remote_address, unsigned int mtu);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Gets the ATT MTU value set for a connection
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] remote_address The address of the remote Bluetooth device
- * @param[ot] mtu MTU value set for a connection
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED     Not supported
- */
-int bt_device_get_att_mtu(const char *remote_address, unsigned int *mtu);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Registers a callback function to be invoked when the ATT MTU is changed.
- * @since_tizen 3.0
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_device_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_device_unset_att_mtu_changed_cb()
- */
-int bt_device_set_att_mtu_changed_cb(bt_device_att_mtu_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief      Unregisters the callback function to be invoked when the ATT MTU is changed.
- * @since_tizen 3.0
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_initialize()
- * @see bt_device_set_att_mtu_changed_cb()
- */
-int bt_device_unset_att_mtu_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Registers a rfcomm server socket with a specific UUID. Activation by dbus is possible when the profile is connected.
- * @since_tizen 2.4
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @remarks A socket can be destroyed by bt_socket_destroy_rfcomm_ex().
- * Application should call this API to receive a connection event when launched again by dbus.
- *
- * @param[in] uuid The UUID of service to provide
- * @param[in] bus_name bus_name of the application which is provided in service file.
- * @param[in] object_path dbus of the application
- * @return 0 on success, otherwise a negative error value.
- *
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_NOW_IN_PROGRESS  Already registered
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- *
- * @see bt_socket_listen_and_accept_rfcomm_ex()
- * @see bt_socket_destroy_rfcomm_ex()
- */
-int bt_socket_create_rfcomm_ex(const char *uuid, const char *bus_name, const char *object_path);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Removes the rfcomm server socket which was created using bt_socket_create_rfcomm_ex().
- * @since_tizen 2.4
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @remarks If callback function bt_socket_connection_state_changed_cb() is set and the remote Bluetooth device is connected,
- * then bt_socket_connection_state_changed_cb() will be called when this function is finished successfully.
- *
- * @param[in] uuid The UUID (which was created using bt_socket_create_rfcomm()) to destroy
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The socket must be created with bt_socket_create_rfcomm_ex().
- * @post If callback function bt_socket_connection_state_changed_cb() is set and the remote Bluetooth device is connected,
- * then bt_socket_connection_state_changed_cb() will be called.
- * @see bt_socket_create_rfcomm_ex()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_destroy_rfcomm_ex(const char *uuid);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Starts listening on passed rfcomm socket and accepts connection requests. Activation by dbus is possible when the profile is connected.
- * @since_tizen 2.4
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @details Pop-up is shown automatically when a RFCOMM connection is requested.
- * bt_socket_connection_state_changed_cb() will be called with
- * #BT_SOCKET_CONNECTED if you click "yes" and connection is finished successfully.
- * @param[in] uuid The UUID of service to provide
- * @param[in] max_pending_connections The maximum number of pending connections
- * @param[in] bus_name bus_name of the application which is provided in service file.
- * @param[in] object_path dbus of the application
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The socket must be created with bt_socket_create_rfcomm_ex().
- * @post If callback function bt_socket_connection_state_changed_cb() is set,
- * then bt_socket_connection_state_changed_cb() will be called when the remote Bluetooth device is connected.
- * @see bt_socket_create_rfcomm_ex()
- * @see bt_socket_connection_state_changed_cb()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-int bt_socket_listen_and_accept_rfcomm_ex(const char *uuid, int max_pending_connections, const char* bus_name, const char *object_path);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Starts listening on passed rfcomm socket.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @details bt_socket_connection_requested_cb() will be called when a RFCOMM connection is requested.
- *
- * @param[in] socket_fd  The file descriptor socket on which start to listen
- * @param[in] max_pending_connections  The number of pending connections
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The socket must be created with bt_socket_create_rfcomm().
- * @post This function invokes bt_socket_connection_state_changed_cb().
- *
- * @see bt_socket_create_rfcomm()
- * @see bt_socket_set_connection_requested_cb()
- * @see bt_socket_unset_connection_requested_cb()
- * @see bt_socket_connection_requested_cb()
- */
-int bt_socket_listen(int socket_fd, int max_pending_connections);
-
-/**
- * @internal
- * @ingroup  CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Accepts a connection request.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @param[in] requested_socket_fd  The file descriptor of socket on which a connection is requested
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The connection is requested by bt_socket_connection_requested_cb().
- * @see bt_socket_create_rfcomm()
- * @see bt_socket_connection_requested_cb()
- * @see bt_socket_listen()
- * @see bt_socket_reject()
-*/
-int bt_socket_accept(int requested_socket_fd);
-
-/**
- * @internal
- * @ingroup  CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Rejects a connection request.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @param[in] socket_fd  The file descriptor of socket on which a connection is requested
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The connection is requested by bt_socket_connection_requested_cb().
- * @see bt_socket_create_rfcomm()
- * @see bt_socket_connection_requested_cb()
- * @see bt_socket_listen()
- * @see bt_socket_accept()
- */
-int bt_socket_reject(int socket_fd);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief Initializes the Bluetooth OPP server requested by bt_opp_server_push_requested_cb().
- * @since_tizen 2.3.1
- * @details The popup appears when an OPP connection is requested from a remote device.
- * If you accept the request, then connection will be established and bt_opp_server_push_requested_cb() will be called.
- * At that time, you can call either bt_opp_server_accept() or bt_opp_server_reject().
- * @remarks This function must be called to start Bluetooth OPP server. You must free all resources of the Bluetooth service
- * by calling bt_opp_server_deinitialize() if Bluetooth OPP service is no longer needed.
- * @param[in] destination  The destination path
- * @param[in] push_requested_cb  The callback called when a push is requested
- * @param[in] user_data The user data to be passed to the callback function
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_RESOURCE_BUSY  Device or resource busy
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED   Not supported
- *
- * @see  bt_opp_server_push_requested_cb()
- * @see  bt_opp_server_deinitialize()
- * @see  bt_opp_server_accept()
- * @see  bt_opp_server_reject()
- */
-int bt_opp_server_initialize(const char *destination, bt_opp_server_push_requested_cb push_requested_cb, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_MODULE
- * @brief Gets the percentage progress for ongoing transfers.
- * @since_tizen 3.0
- * @exception   None
- * @param[in] transfer_type    Transfer Type: (@c BLUETOOTH_TRANSFER_INBOUND = receiving , @c  BLUETOOTH_TRANSFER_OUTBOUND = sending)
- * @param[in] transfer_id      Transfer ID
- * @param[out] progress                Percentage Progress
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- */
-int bt_opp_get_transfer_progress(bt_opp_transfer_type_t transfer_type,
-               int transfer_id, unsigned char *progress);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Notifies the call event to the remote bluetooth device.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @remarks Before notifying #BT_AG_CALL_EVENT_ANSWERED or #BT_AG_CALL_EVENT_DIALING, you should open SCO(Synchronous Connection Oriented link)
- * if Bluetooth Hands-Free need SCO connection.
- * @param[in] event  The call event
- * @param[in] call_id  The call ID
- * @param[in] phone_number  The phone number. You must set this value in case of #BT_AG_CALL_EVENT_DIALING and #BT_AG_CALL_EVENT_INCOMING.
- * In other cases, this value can be NULL.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @see bt_audio_connect()
- */
-int bt_ag_notify_call_event(bt_ag_call_event_e event, unsigned int call_id, const char *phone_number);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Notifies the call list to the remote bluetooth device.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @param[in] list  The call list
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @see bt_audio_connect()
- */
-int bt_ag_notify_call_list(bt_call_list_h list);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Notifies the state of voice recognition.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @param[in] state  The state of voice recognition: (@c true = enabled, @c  false = disabled)
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @see bt_audio_connect()
- */
-int bt_ag_notify_voice_recognition_state(bool state);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Registers a callback function that will be invoked when a call handling event happened from Hands-Free.
- * @since_tizen 2.3.1
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_call_handling_event_cb()
- * @see bt_ag_unset_call_handling_event_cb()
- */
-int bt_ag_set_call_handling_event_cb(bt_ag_call_handling_event_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Unregisters a callback function that will be invoked when a call handling event happened from Hands-Free.
- * @since_tizen 2.3.1
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_call_handling_event_cb()
- * @see bt_ag_set_call_handling_event_cb()
- */
-int bt_ag_unset_call_handling_event_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Registers a callback function that will be invoked when a multi call handling event happened from Hands-Free.
- * @since_tizen 2.3.1
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_multi_call_handling_event_cb()
- * @see bt_ag_unset_multi_call_handling_event_cb()
- */
-int bt_ag_set_multi_call_handling_event_cb(bt_ag_multi_call_handling_event_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Unregisters a callback function that will be invoked when a multi call handling event happened from Hands-Free.
- * @since_tizen 2.3.1
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_multi_call_handling_event_cb()
- * @see bt_ag_set_multi_call_handling_event_cb()
- */
-int bt_ag_unset_multi_call_handling_event_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Registers a callback function that will be invoked when a DTMF(Dual Tone Multi Frequency) is transmitted from Hands-Free.
- * @since_tizen 2.3.1
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_dtmf_transmitted_cb()
- * @see bt_ag_unset_dtmf_transmitted_cb()
- */
-int bt_ag_set_dtmf_transmitted_cb(bt_ag_dtmf_transmitted_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Unregisters a callback function that will be invoked when a DTMF(Dual Tone Multi Frequency) is transmitted from Hands-Free.
- * @since_tizen 2.3.1
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_dtmf_transmitted_cb()
- * @see bt_ag_set_dtmf_transmitted_cb()
- */
-int bt_ag_unset_dtmf_transmitted_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Checks whether the remoted device enables NREC(Noise Reduction and Echo Canceling) or not.
- * @since_tizen 2.3.1
- * @param[out] enabled The NREC status: (@c true = enabled, @c  false = not enabled)
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device is connected by bt_audio_connect() with #BT_AUDIO_PROFILE_TYPE_HSP_HFP service.
- * @see bt_audio_connect()
- */
-int bt_ag_is_nrec_enabled(bool *enabled);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_CALL_MODULE
- * @brief Creates a handle of call list.
- * @since_tizen 2.3.1
- * @param[out] list  The handle of call list
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_call_list_destroy()
- */
-int bt_call_list_create(bt_call_list_h *list);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_CALL_MODULE
- * @brief Destroys the handle of call list.
- * @since_tizen 2.3.1
- * @param[in] list  The handle of call list
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_call_list_create()
- */
-int bt_call_list_destroy(bt_call_list_h list);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_CALL_MODULE
- * @brief Resets the handle of call list.
- * @since_tizen 2.3.1
- * @param[in] list  The handle of call list
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_call_list_create()
- */
-int bt_call_list_reset(bt_call_list_h list);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_CALL_MODULE
- * @brief Adds a call to the handle of call list.
- * @since_tizen 2.3.1
- * @param[in] list  The handle of call list
- * @param[in] call_id  The call ID
- * @param[in] state  The state of audio gate call
- * @param[in] phone_number The phone number. You must set this value in case of #BT_AG_CALL_EVENT_DIALING and      #BT_AG_CALL_EVENT_INCOMING.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_call_list_create()
- */
-int bt_call_list_add(bt_call_list_h list, unsigned int call_id, bt_ag_call_state_e state, const char *phone_number);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Checks whether the remoted device is wbs (Wide Band Speech) mode or not.
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
- * @param[out] wbs_mode The wbs status: (@c true = wide band speech, @c  false = narrow band speech)
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The remote device is connected by bt_audio_connect() with #BT_AUDIO_PROFILE_TYPE_HSP_HFP service.
- * @see bt_audio_connect()
- */
-int bt_ag_is_wbs_mode(bool *wbs_mode);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief Gets the HF(Hands-Free) profile connected status for AG role.
- * @since_tizen 2.4
- * @param[out] connected the connected status: (@c true = connected , @c  false = not connected )
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_ag_is_connected(bool *connected);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Registers a callback function that will be invoked when the SCO(Synchronous Connection Oriented link) state is changed.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_sco_state_changed_cb()
- * @see bt_ag_unset_sco_state_changed_cb()
- */
-int bt_hf_set_sco_state_changed_cb(bt_hf_sco_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Unregisters a callback function that will be invoked when the SCO(Synchronous Connection Oriented link) state is changed.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_sco_state_changed_cb()
- * @see bt_ag_set_sco_state_changed_cb()
- */
-int bt_hf_unset_sco_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Registers a callback function that will be invoked when a call handling event happened from Hands-Free.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_call_handling_event_cb()
- * @see bt_ag_unset_call_handling_event_cb()
- */
-int bt_hf_set_call_handling_event_cb(bt_hf_call_handling_event_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Unregisters a callback function that will be invoked when a call handling event happened from Hands-Free.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_call_handling_event_cb()
- * @see bt_ag_set_call_handling_event_cb()
- */
-int bt_hf_unset_call_handling_event_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Registers a callback function that will be invoked when a multi call handling event happened from Hands-Free.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_multi_call_handling_event_cb()
- * @see bt_ag_unset_multi_call_handling_event_cb()
- */
-int bt_hf_set_multi_call_handling_event_cb(bt_hf_multi_call_handling_event_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Unregisters a callback function that will be invoked when a multi call handling event happened from Hands-Free.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_ag_multi_call_handling_event_cb()
- * @see bt_ag_set_multi_call_handling_event_cb()
- */
-int bt_hf_unset_multi_call_handling_event_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief Initializes the Bluetooth HF profile related with audio.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @remarks This function must be called before Bluetooth profiles related with audio starts.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @see bt_hf_deinitialize()
- */
-int bt_hf_initialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief Deinitializes the Bluetooth HF profile related with audio.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- */
-int bt_hf_deinitialize(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief Notifies the call event to the remote bluetooth device.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @privlevel platform
- * @privilege http://tizen.org/privilege/bluetooth.admin
- * @remarks Before notifying #BT_HF_CALL_EVENT_ANSWERED or #BT_HF_CALL_EVENT_DIALING, you should open SCO(Synchronous Connection Oriented link)
- * if Bluetooth Hands-Free need SCO connection.
- * @param[in] event  The call event
- * @param[in] call_id  The call ID
- * @param[in] phone_number  The phone number. You must set this value in case of #BT_HF_CALL_EVENT_DIALING and #BT_HF_CALL_EVENT_INCOMING.
- * In other cases, this value can be NULL.
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @see bt_audio_connect()
- */
-int bt_hf_notify_call_event(bt_hf_call_event_e event, char *phone_number);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Notifies the speaker gain to the remote device.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @privlevel platform
- * @privilege http://tizen.org/privilege/bluetooth.admin
- * @details This function sends a signal to the remote device. This signal has the gain value.
- * @a gain is represented on a scale from 0 to 15. This value is absolute value relating to a particular volume level.
- * When the speaker gain of remote device is changed to the requested gain, bt_audio_speaker_gain_changed_cb() will be called.
- * @param[in] gain The gain of speaker (0 ~ 15)
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The remote device is connected by bt_audio_connect() with #BT_AUDIO_PROFILE_TYPE_HSP_HFP service.
- * @see bt_hf_get_speaker_gain()
- * @see bt_hf_set_speaker_gain_changed_cb()
- * @see bt_hf_unset_speaker_gain_changed_cb()
- */
-int bt_hf_notify_speaker_gain(int gain);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Registers a callback function that will be invoked when the speaker gain of the remote device is changed.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @details This function let you know the change of the speaker gain of the remote device.
- * @a gain is represented on a scale from 0 to 15. This value is absolute value relating to a particular volume level.
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_hf_unset_speaker_gain_changed_cb()
- */
-int bt_hf_set_speaker_gain_changed_cb(bt_hf_speaker_gain_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Unregisters a callback function that will be invoked when the speaker gain of the remote device is changed.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_hf_set_speaker_gain_changed_cb()
- */
-int bt_hf_unset_speaker_gain_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief Notifies the state of voice recognition.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @privlevel platform
- * @privilege http://tizen.org/privilege/bluetooth.admin
- * @param[in] state  The state of voice recognition: (@c true = enabled, @c  false = disabled)
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @see bt_audio_connect()
- */
-int bt_hf_notify_voice_recognition_state(bool state);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Registers a callback function that will be invoked when a call status event happened from Hands-Free.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_hf_unset_call_status_updated_event_cb()
- */
-int bt_hf_set_call_status_updated_event_cb(bt_hf_call_status_updated_event_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Unregisters a callback function that will be invoked when a call status event happened from Hands-Free.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_hf_set_call_status_updated_event_cb()
- */
-int bt_hf_unset_call_status_updated_event_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief Closes an opened SCO(Synchronous Connection Oriented link), synchronously.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @privlevel platform
- * @privilege http://tizen.org/privilege/bluetooth.admin
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- */
-int bt_hf_close_sco(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief Sends the DTMF(Dual Tone Multi Frequency).
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @privlevel platform
- * @privilege http://tizen.org/privilege/bluetooth.admin
- * @param[in] dtmf  The DTMF to send
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @see bt_audio_connect()
- */
-int bt_hf_send_dtmf(char *dtmf);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief Gets the HF(Hands-Free) profile connected status for HF role.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @param[out] connected the connected status: (@c true = connected , @c  false = not connected )
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_hf_is_connected(bool *connected);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief Checks whether an opened SCO(Synchronous Connection Oriented link) exists or not.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- *
- * @param[out] opened The SCO status: (@c true = opened, @c  false = not opened)
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @see bt_audio_connect()
- */
-int bt_hf_is_sco_opened(bool *opened);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief Gets the codec ID.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @remarks The @a codec_id must be released with free() by you.
- *
- * @param[out] codec_id The codec ID
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @see bt_audio_connect()
- */
-int bt_hf_get_codec_id(unsigned int *codec_id);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief Gets the call status information list.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- * @remarks The @a call_list must be released with bt_hf_free_call_status_info_list() by you.
- * @remarks call_info_list has elements which consist of bt_hf_call_status_info_s
- *
- * @param[out] call_list The call status information list
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio device must be connected with bt_audio_connect().
- * @see bt_hf_call_status_info_s
- * @see bt_audio_connect()
- */
-int bt_hf_get_call_status_info_list(GSList **call_list);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief Frees the call status information list.
- * @since_tizen @if MOBILE @elseif WEARABLE 2.3.1 @endif
- *
- * @param[in] call_list The call status information list
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_hf_get_call_status_info_list()
- */
-int bt_hf_free_call_status_info_list(GSList *call_list);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Gets the specification name from the UUID
- * @since_tizen 2.4
- *
- * @remarks @a name must be released with free() by you.
- *
- * @param[in] uuid The UUID
- * @param[out] name The specification name which defined from www.bluetooth.org
- * @return  0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_get_uuid()
- */
-int bt_gatt_get_uuid_specification_name(const char *uuid, char **name);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Updates the permissions which a characteristic or descriptor's GATT handle has.
- * @since_tizen 3.0
- *
- * @param[in] gatt_handle The handle of a characteristic or descriptor
- * @param[in] permissions The permissions to be updated
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_characteristic_create()
- * @see bt_gatt_descriptor_create()
- * @see bt_gatt_permission_e
- */
-int bt_gatt_set_permissions(bt_gatt_h gatt_handle, int permissions);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Updates the properties which a characteristic's GATT handle has.
- * @since_tizen 3.0
- *
- * @param[in] characteristic The characteristic's GATT handle
- * @param[in] properties The properties to be updated
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_property_e
- */
-int bt_gatt_characteristic_set_properties(bt_gatt_h characteristic, int properties);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Destroys the GATT handle
- * @since_tizen 2.4
- *
- * @param[in] gatt_handle The handle of service, characteristic or descriptor
- * @return  0 on success, otherwise a negative error value
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @see bt_gatt_service_create()
- * @see bt_gatt_characteristic_create()
- * @see bt_gatt_descriptor_create()
- */
-int bt_gatt_destroy(bt_gatt_h gatt_handle);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Registers a callback function that will be invoked when the A2DP Source connection state is changed.
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_audio_connection_state_changed_cb()
- */
-int bt_a2dp_source_audio_set_connection_state_changed_cb(bt_audio_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Unregisters a callback function that will be invoked when the A2DP Source connection state is changed.
- * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth audio service must be initialized with bt_audio_initialize().
- * @see bt_audio_initialize()
- * @see bt_audio_connection_state_changed_cb()
- * @see bt_audio_set_connection_state_changed_cb()
- */
-int bt_a2dp_source_audio_unset_connection_state_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief Activates the NAP(Network Access Point).
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_ALREADY_DONE  Operation is already done
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED
- * @see bt_nap_deactivate()
- */
-int bt_nap_activate(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief Deactivates the NAP(Network Access Point).
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_ALREADY_DONE  Operation is already done
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth NAP service must be activated with bt_nap_activate().
- * @see bt_nap_activate()
- */
-int bt_nap_deactivate(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief Disconnects the all PANUs(Personal Area Networking User) which are connected to you.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth NAP service must be activated with bt_nap_activate().
- * @see bt_nap_activate()
- */
-int bt_nap_disconnect_all(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief Disconnects the specified PANU(Personal Area Networking User) which is connected to you.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth NAP service must be activated with bt_nap_activate().
- * @see bt_nap_activate()
- */
-int bt_nap_disconnect(const char *remote_address);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief  Registers a callback function that will be invoked when the connection state changes.
- * @since_tizen 2.3.1
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_nap_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_nap_connection_state_changed_cb()
- * @see bt_nap_unset_connection_state_changed_cb()
- */
-int bt_nap_set_connection_state_changed_cb(bt_nap_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief  Unregisters a callback function that will be invoked when the connection state changes.
- * @since_tizen 2.3.1
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_nap_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_nap_connection_state_changed_cb()
- * @see bt_nap_set_connection_state_changed_cb()
- */
-int bt_nap_unset_connection_state_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
- * @brief  Registers a callback function that will be invoked when the connection state changes.
- * @since_tizen 2.3.1
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_nap_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_panu_connection_state_changed_cb()
- * @see bt_panu_unset_connection_state_changed_cb()
- */
-int bt_panu_set_connection_state_changed_cb(bt_panu_connection_state_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
- * @brief  Unregisters a callback function that will be invoked when the connection state changes.
- * @since_tizen 2.3.1
- * @return   0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized with bt_initialize().
- * @post bt_nap_connection_state_changed_cb() will be invoked.
- * @see bt_initialize()
- * @see bt_panu_connection_state_changed_cb()
- * @see bt_panu_set_connection_state_changed_cb()
- */
-int bt_panu_unset_connection_state_changed_cb(void);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
- * @brief Connects the remote device with the PAN(Personal Area Networking) service, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @param[in] type  The type of PAN service
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The local device must be bonded with the remote device by bt_device_create_bond().
- * @post bt_panu_connection_state_changed_cb() will be invoked.
- * @see bt_panu_disconnect()
- * @see bt_panu_connection_state_changed_cb()
- */
-int bt_panu_connect(const char *remote_address, bt_panu_service_type_e type);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
- * @brief Disconnects the remote device with the PAN(Personal Area Networking) service, asynchronously.
- * @since_tizen 2.3.1
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] remote_address  The remote address
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED  Remote device is not connected
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The remote device must be connected by bt_panu_connect().
- * @post bt_panu_connection_state_changed_cb() will be invoked.
- * @see bt_panu_connect()
- * @see bt_panu_connection_state_changed_cb()
- */
-int bt_panu_disconnect(const char *remote_address);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief   update LE connection.
- * @since_tizen 2.3.1
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The Bluetooth service must be initialized by bt_initialize().
- * @pre The remote device must be connected with bt_gatt_connect().
- */
-int bt_device_le_conn_update(const char *device_address,
-                            const bt_le_conn_update_s *parameters);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Gets the is_alias_set property of a bonded device.
- * @since_tizen 3.0
- *
- * @param [in] remote_address The address of remote device
- * @param [out] is_alias_set The is_alias_set property of device
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OUT_OF_MEMORY  Out of memory
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
-  * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_adapter_get_bonded_device_is_alias_set(const char *remote_address, gboolean *is_alias_set);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets Restriction for BT mode(BT allowed or not).
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - BT Allow value.
- *             BT_DPM_ERROR     = -1,   < bluetooth allowance error
- *             BT_DPM_BT_ALLOWED,               < bluetooth allowance allowed
- *             BT_DPM_HANDSFREE_ONLY,  < bluetooth allowance handsfree only
- *             BT_DPM_BT_RESTRICTED,  < bluetooth allowance restricted
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED  Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre none.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_allow_bluetooth_mode(bt_dpm_allow_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads Restriction for BT mode(BT allowed or not).
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] none
- * @param[out] value - BT Allow value.
- *             BT_DPM_ERROR     = -1,   < bluetooth allowance error
- *             BT_DPM_BT_ALLOWED,               < bluetooth allowance allowed
- *             BT_DPM_HANDSFREE_ONLY,  < bluetooth allowance handsfree only
- *             BT_DPM_BT_RESTRICTED,  < bluetooth allowance restricted
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre none.
- * @see bt_dpm_set_allow_bluetooth_mode()
- */
-int bt_dpm_get_allow_bluetooth_mode(bt_dpm_allow_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for device.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_activate_device_restriction(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for device.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_is_device_restriction_active(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for uuid.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_activate_uuid_restriction(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for uuid.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_is_uuid_restriction_active(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Adds the device to blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  device_address - Device address
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_add_devices_to_blacklist(const char *device_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Adds the device to whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  device_address - Device address
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_add_devices_to_whitelist(const char *device_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Adds the uuids to blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  service_uuids - profile or custom service uuids
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_add_uuids_to_blacklist(const char *service_uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Adds the uuid to whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  service_uuids - profile or custom service uuids
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_add_uuids_to_whitelist(const char *service_uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Clears the device from blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  none
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_clear_devices_from_blacklist(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Clears the device from whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  none
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_clear_devices_from_whitelist(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Clears the uuids from blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  none
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_clear_uuids_from_blacklist(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Clears the uuids from whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  none
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_clear_uuids_from_whitelist(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the devices from blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] device_list - list of devices
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_devices_from_blacklist(bt_dpm_device_list_s **device_list);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the devices from whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] device_list - list of devices
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_devices_from_whitelist(bt_dpm_device_list_s **device_list);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the uuids from blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] uuid_list - list of uuids
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_uuids_from_blacklist(bt_dpm_uuids_list_s **uuid_list);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the uuids from whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] uuid_list - list of uuids
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_uuids_from_whitelist(bt_dpm_uuids_list_s **uuid_list);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Removes the devices from whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  device_address - Device address
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_remove_device_from_whitelist(const char *device_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Removes the devices from blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  device_address - Device address
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_remove_device_from_blacklist(const char *device_address);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Removes the uuids from whitelist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  service_uuids - profile or custom service uuids
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_remove_uuid_from_whitelist(const char *service_uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Removes the uuids from blacklist.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  service_uuids - profile or custom service uuids
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_remove_uuid_from_blacklist(const char *service_uuid);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for  outgoing call.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_allow_outgoing_call(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for  outgoing call.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_allow_outgoing_call(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for pairing.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_pairing_state(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for pairing.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_pairing_state(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for profiles.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]profile - Profile.
- *             BT_DPM_POLICY_A2DP_PROFILE_STATE,
- *             BT_DPM_POLICY_AVRCP_PROFILE_STATE,
- *             BT_DPM_POLICY_BPP_PROFILE_STATE,
- *             BT_DPM_POLICY_DUN_PROFILE_STATE,
- *             BT_DPM_POLICY_FTP_PROFILE_STATE,
- *             BT_DPM_POLICY_HFP_PROFILE_STATE,
- *             BT_DPM_POLICY_HSP_PROFILE_STATE,
- *             BT_DPM_POLICY_PBAP_PROFILE_STATE,
- *             BT_DPM_POLICY_SAP_PROFILE_STATE,
- *             BT_DPM_POLICY_SPP_PROFILE_STATE,
- *             BT_DPM_PROFILE_NONE
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_profile_state(bt_dpm_profile_e profile, bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for profiles.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]profile - Profile.
- *             BT_DPM_POLICY_A2DP_PROFILE_STATE,
- *             BT_DPM_POLICY_AVRCP_PROFILE_STATE,
- *             BT_DPM_POLICY_BPP_PROFILE_STATE,
- *             BT_DPM_POLICY_DUN_PROFILE_STATE,
- *             BT_DPM_POLICY_FTP_PROFILE_STATE,
- *             BT_DPM_POLICY_HFP_PROFILE_STATE,
- *             BT_DPM_POLICY_HSP_PROFILE_STATE,
- *             BT_DPM_POLICY_PBAP_PROFILE_STATE,
- *             BT_DPM_POLICY_SAP_PROFILE_STATE,
- *             BT_DPM_POLICY_SPP_PROFILE_STATE,
- *             BT_DPM_PROFILE_NONE
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_profile_state(bt_dpm_profile_e profile, bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for desktop connectivity.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_desktop_connectivity_state(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for desktop connectivity.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_desktop_connectivity_state(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for discoverable mode.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_discoverable_state(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for discoverable mode.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_discoverable_state(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for limited discoverable mode.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-
-int bt_dpm_set_limited_discoverable_state(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for limited discoverable mode.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_limited_discoverable_state(bt_dpm_status_e *value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Sets the Restriction for Data transfer.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in]  value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_set_data_transfer_state(bt_dpm_status_e value);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
- * @brief Reads the Restriction for Data transfer.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[out] value - State value.
- *             BT_DPM_ALLOWED          = 0,    < DPM Policy status allowed.
- *             BT_DPM_RESTRICTED               = 1,    < DPM Policy status restricted.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER invalid paramter
- * @retval #BT_ERROR_NOT_SUPPORTED     Not suported
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_OPERATION_FAILED operation failed
- *
- * @pre bt_dpm_set_allow_bluetooth_mode must be allowed.
- * @see bt_dpm_get_allow_bluetooth_mode()
- */
-int bt_dpm_get_data_transfer_state(bt_dpm_status_e *value);
-
-/**
- * @internal
- * @brief Initialize Bluetooth IPSP service and set the callback
- */
-int bt_ipsp_initialize(bt_ipsp_init_state_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @brief De-Initialize Bluetooth IPSP service and unset the callback
- */
-int bt_ipsp_deinitialize(void);
-
-/**
- * @internal
- * @brief Connect to a IPSP service over LE to remote device.
- */
-int bt_ipsp_connect(const char *address);
-
-/**
- * @internal
- * @brief Disconnect to a IPSP service over LE to remote device.
- */
-int bt_ipsp_disconnect(const char *address);
-
-/**
- * @internal
- * @brief Set IPSP connection state event change callback.
- */
-int bt_ipsp_set_connection_state_changed_cb(bt_ipsp_connection_state_changed_cb callback,
-                                               void *user_data);
-
-/**
- * @internal
- * @brief Unset IPSP connection state event change callback.
- */
-int bt_ipsp_unset_connection_state_changed_cb(void);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief Gets the pbap connected status.
- * @since_tizen 3.0
- * @param[in] remote_address The address of the remote device
- * @param[out] connected_status the connected status
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_NOT_ENABLED  Not enabled
- * @retval #BT_ERROR_REMOTE_DEVICE_NOT_BONDED  Remote device not bonded
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_NOT_SUPPORTED  Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_pbap_client_is_connected(const char *address, bool *connected_status);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
- * @brief Sends the custom event data.
- * @since_tizen 3.0
- * @privlevel platform
- * @privilege %http://tizen.org/privilege/bluetooth.admin
- *
- * @param[in] remote_address device address of remote device.
- * @param[in] report_id  reoport id need to be passed to remote device
- * @param[in] data  The data need to be passed to remote device
- * @param[in] data_len  The length of the data
- * @return 0 on success, otherwise a negative error value.
- * @retval #BT_ERROR_NONE  Successful
- * @retval #BT_ERROR_NOT_INITIALIZED  Not initialized
- * @retval #BT_ERROR_INVALID_PARAMETER  Invalid parameter
- * @retval #BT_ERROR_OPERATION_FAILED  Operation failed
- * @retval #BT_ERROR_PERMISSION_DENIED  Permission denied
- *
- * @pre The HID connection must be established.
- * @see bt_hid_device_connection_state_changed_cb()
- */
-int bt_hid_device_send_custom_event(const char *remote_address,
-               unsigned char report_id, const char *data, unsigned int data_len);
-
-/**
- * @internal
- * @brief Register the Proximity Profile.
- */
-int bt_proximity_register(bt_proximity_role_t role, bt_proximity_property_changed_cb callback, void *user_data);
-
-/**
- * @internal
- * @brief Unregister the Proximity Profile.
- */
-int bt_proximity_unregister(bt_proximity_role_t role);
-
-/**
- * @internal
- * @brief Set the Proximity Profile property value.
- */
-int bt_proximity_set_property(const char *remote_address, bt_proximity_property_t property, int value);
-
-/**
- * @internal
- * @brief Read the Proximity Profile property value.
- */
-int bt_proximity_get_property(const char *remote_address, bt_proximity_property_t property, int *value);
-
-/**
- * @internal
- * @brief Lists the Proximity Profile property/service supported.
- */
-int bt_proximity_get_supported_services(const char *remote_address, int *supported_services);
-
-/**
- * @internal
- * @brief API to set scan filter for iBeacons reports
- */
-int bt_adapter_le_set_ibeacon_scan_filter(bt_scan_filter_h scan_filter,
-                       const char *data, unsigned int data_len);
-
-/**
- * @internal
- * @brief API to read iBeacon report from LE scan result information
- */
-int bt_adapter_le_get_scan_result_ibeacon_report(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, bt_adapter_ibeacon_scan_result_info_s **ibeacon_info);
-
-/**
- * @internal
- * @brief API to clear the iBeacon report
- */
-int bt_adapter_le_free_ibeacon_report(bt_adapter_ibeacon_scan_result_info_s *ibeacon_info);
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_NETWORK_BLUETOOTH_INTERNAL_H__ */
diff --git a/include/wearable/bluetooth_type.h b/include/wearable/bluetooth_type.h
deleted file mode 100644 (file)
index 8560cd4..0000000
+++ /dev/null
@@ -1,2034 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __TIZEN_NETWORK_BLUETOOTH_TYPE_H__
-#define __TIZEN_NETWORK_BLUETOOTH_TYPE_H__
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdbool.h>
-#include <tizen_error.h>
-
- #ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/**
- * @file bluetooth_type.h
- * @brief API to control the Bluetooth adapter, devices and communications.
- * @ingroup     CAPI_NETWORK_BLUETOOTH_TYPE_MODULE
- */
-
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief  Enumeration of PBAP fields.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_PBAP_FIELD_ALL = (0xFFFFFFFFU), /**< All field */
-       BT_PBAP_FIELD_VERSION = (1U << 0), /**< vCard Version */
-       BT_PBAP_FIELD_FN = (1U << 1), /**< Formatted Name */
-       BT_PBAP_FIELD_N = (1U << 2), /**< Structured Presentation of Name */
-       BT_PBAP_FIELD_PHOTO = (1U << 3), /**< Associated Image or Photo */
-       BT_PBAP_FIELD_BDAY = (1U << 4), /**< Birthday */
-       BT_PBAP_FIELD_ADR = (1U << 5), /**< Delivery Address */
-       BT_PBAP_FIELD_LABEL = (1U << 6), /**< Delivery */
-       BT_PBAP_FIELD_TEL = (1U << 7), /**< Telephone Number */
-       BT_PBAP_FIELD_EMAIL = (1U << 8), /**< Electronic Mail Address */
-       BT_PBAP_FIELD_MAILER = (1U << 9), /**< Electronic Mail */
-       BT_PBAP_FIELD_TZ = (1U << 10), /**< Time Zone */
-       BT_PBAP_FIELD_GEO = (1U << 11), /**< Geographic Position */
-       BT_PBAP_FIELD_TITLE = (1U << 12), /**< Job */
-       BT_PBAP_FIELD_ROLE = (1U << 13), /**< Role within the Organization */
-       BT_PBAP_FIELD_LOGO = (1U << 14), /**< Organization Logo */
-       BT_PBAP_FIELD_AGENT = (1U << 15), /**< vCard of Person Representing */
-       BT_PBAP_FIELD_ORG = (1U << 16), /**< Name of Organization */
-       BT_PBAP_FIELD_NOTE = (1U << 17), /**< Comments */
-       BT_PBAP_FIELD_REV = (1U << 18), /**< Revision */
-       BT_PBAP_FIELD_SOUND = (1U << 19), /**< Pronunciation of Name */
-       BT_PBAP_FIELD_URL = (1U << 20), /**< Uniform Resource Locator */
-       BT_PBAP_FIELD_UID = (1U << 21), /**< Unique ID */
-       BT_PBAP_FIELD_KEY = (1U << 22), /**< Public Encryption Key */
-       BT_PBAP_FIELD_NICKNAME = (1U << 23), /**< Nickname */
-       BT_PBAP_FIELD_CATEGORIES = (1U << 24), /**< Categories */
-       BT_PBAP_FIELD_PROID = (1U << 25), /**< Product ID */
-       BT_PBAP_FIELD_CLASS = (1U << 26), /**< Class information */
-       BT_PBAP_FIELD_SORT_STRING = (1U << 27), /**< String used for sorting operations */
-       BT_PBAP_FIELD_X_IRMC_CALL_DATETIME = (1U << 28), /**< Time stamp */
-} bt_pbap_field_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_MODULE
- * @brief Enumerations of Bluetooth error codes.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful*/
-       BT_ERROR_CANCELLED = TIZEN_ERROR_CANCELED, /**< Operation cancelled */
-       BT_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */
-       BT_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */
-       BT_ERROR_RESOURCE_BUSY = TIZEN_ERROR_RESOURCE_BUSY, /**< Device or resource busy */
-       BT_ERROR_TIMED_OUT = TIZEN_ERROR_TIMED_OUT, /**< Timeout error */
-       BT_ERROR_NOW_IN_PROGRESS = TIZEN_ERROR_NOW_IN_PROGRESS, /**< Operation now in progress */
-       BT_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< BT is Not Supported */
-       BT_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */
-       BT_ERROR_QUOTA_EXCEEDED = TIZEN_ERROR_QUOTA_EXCEEDED, /**< Quota exceeded */
-       BT_ERROR_NO_DATA = TIZEN_ERROR_NO_DATA, /**< No data available */
-       BT_ERROR_DEVICE_POLICY_RESTRICTION = TIZEN_ERROR_DEVICE_POLICY_RESTRICTION, /**< Device policy restriction (Since 3.0) */
-       BT_ERROR_NOT_INITIALIZED = TIZEN_ERROR_BLUETOOTH|0x0101, /**< Local adapter not initialized */
-       BT_ERROR_NOT_ENABLED = TIZEN_ERROR_BLUETOOTH|0x0102, /**< Local adapter not enabled */
-       BT_ERROR_ALREADY_DONE = TIZEN_ERROR_BLUETOOTH|0x0103, /**< Operation already done  */
-       BT_ERROR_OPERATION_FAILED = TIZEN_ERROR_BLUETOOTH|0x0104, /**< Operation failed */
-       BT_ERROR_NOT_IN_PROGRESS = TIZEN_ERROR_BLUETOOTH|0x0105, /**< Operation not in progress */
-       BT_ERROR_REMOTE_DEVICE_NOT_BONDED = TIZEN_ERROR_BLUETOOTH|0x0106, /**< Remote device not bonded */
-       BT_ERROR_AUTH_REJECTED = TIZEN_ERROR_BLUETOOTH|0x0107, /**< Authentication rejected */
-       BT_ERROR_AUTH_FAILED = TIZEN_ERROR_BLUETOOTH|0x0108, /**< Authentication failed */
-       BT_ERROR_REMOTE_DEVICE_NOT_FOUND = TIZEN_ERROR_BLUETOOTH|0x0109, /**< Remote device not found */
-       BT_ERROR_SERVICE_SEARCH_FAILED = TIZEN_ERROR_BLUETOOTH|0x010A, /**< Service search failed */
-       BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED = TIZEN_ERROR_BLUETOOTH|0x010B, /**< Remote device is not connected */
-       BT_ERROR_AGAIN = TIZEN_ERROR_BLUETOOTH|0x010C, /**< Resource temporarily unavailable */
-       BT_ERROR_SERVICE_NOT_FOUND = TIZEN_ERROR_BLUETOOTH|0x010D, /**< Service Not Found */
-} bt_error_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Enumerations of the Bluetooth adapter state.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_ADAPTER_DISABLED = 0x00, /**< Bluetooth adapter is disabled */
-       BT_ADAPTER_ENABLED, /**< Bluetooth adapter is enabled */
-} bt_adapter_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Enumerations of the Bluetooth visibility mode.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE = 0x00,  /**< Other devices cannot find your device via discovery */
-       BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE,  /**< Discoverable mode */
-       BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE,  /**< Discoverable mode with time limit. After specific period,
-                                                           it is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE.*/
-} bt_adapter_visibility_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Enumerations of the discovery state of Bluetooth device.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_ADAPTER_DEVICE_DISCOVERY_STARTED, /**< Device discovery is started */
-       BT_ADAPTER_DEVICE_DISCOVERY_FINISHED, /**< Device discovery is finished */
-       BT_ADAPTER_DEVICE_DISCOVERY_FOUND, /**< The remote Bluetooth device is found */
-} bt_adapter_device_discovery_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth advertising state.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_ADAPTER_LE_ADVERTISING_STOPPED = 0x00, /**< Bluetooth advertising is stopped */
-       BT_ADAPTER_LE_ADVERTISING_STARTED, /**< Bluetooth advertising is started */
-} bt_adapter_le_advertising_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth advertising mode.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_ADAPTER_LE_ADVERTISING_MODE_BALANCED,  /**< Balanced advertising mode */
-       BT_ADAPTER_LE_ADVERTISING_MODE_LOW_LATENCY,  /**< Low latency advertising mode */
-       BT_ADAPTER_LE_ADVERTISING_MODE_LOW_ENERGY  /**< Low energy advertising mode */
-} bt_adapter_le_advertising_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth advertising filter policy.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_ADAPTER_LE_ADVERTISING_FILTER_DEFAULT = 0x00, /**< White list is not in use */
-       BT_ADAPTER_LE_ADVERTISING_FILTER_ALLOW_SCAN_WL = 0x01, /**< Allow the scan
-                                       request that in the White list */
-       BT_ADAPTER_LE_ADVERTISING_FILTER_ALLOW_CONN_WL = 0x02, /**< Allow the connection
-                                       request that in the White list */
-       BT_ADAPTER_LE_ADVERTISING_FILTER_ALLOW_SCAN_CONN_WL = 0x03, /**< Allow the
-                                       scan and connection request that in the White list */
-} bt_adapter_le_advertising_filter_policy_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth LE packet type.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_ADAPTER_LE_PACKET_ADVERTISING, /**< Advertising packet */
-       BT_ADAPTER_LE_PACKET_SCAN_RESPONSE, /**< Scan response packet */
-} bt_adapter_le_packet_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth le scan mode.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_ADAPTER_LE_SCAN_MODE_BALANCED, /**< Balanced mode of power consumption and connection latency */
-       BT_ADAPTER_LE_SCAN_MODE_LOW_LATENCY, /**< Low connection latency but high power consumption */
-       BT_ADAPTER_LE_SCAN_MODE_LOW_ENERGY /**< Low power consumption but high connection latency */
-} bt_adapter_le_scan_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Enumerations of device disconnect reason.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_DEVICE_DISCONNECT_REASON_UNKNOWN, /**< Disconnected by unknown reason */
-       BT_DEVICE_DISCONNECT_REASON_TIMEOUT, /**< Disconnected by timeout */
-       BT_DEVICE_DISCONNECT_REASON_LOCAL_HOST, /**< Disconnected by local host */
-       BT_DEVICE_DISCONNECT_REASON_REMOTE, /**< Disconnected by remote */
-} bt_device_disconnect_reason_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Enumerations of connection link type.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_DEVICE_CONNECTION_LINK_BREDR, /**< BR/EDR link */
-       BT_DEVICE_CONNECTION_LINK_LE, /**< LE link */
-       BT_DEVICE_CONNECTION_LINK_DEFAULT = 0xFF, /**< The connection type default */
-} bt_device_connection_link_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Enumerations of device authorization state.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_DEVICE_AUTHORIZED, /**< The remote Bluetooth device is authorized */
-       BT_DEVICE_UNAUTHORIZED, /**< The remote Bluetooth device is unauthorized */
-} bt_device_authorization_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Enumerations of Bluetooth profile.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_PROFILE_RFCOMM = 0x01, /**< RFCOMM Profile */
-       BT_PROFILE_A2DP = 0x02, /**< Advanced Audio Distribution Profile */
-       BT_PROFILE_HSP = 0x04, /**< Headset Profile */
-       BT_PROFILE_HID = 0x08, /**< Human Interface Device Profile */
-       BT_PROFILE_NAP = 0x10, /**< Network Access Point Profile */
-       BT_PROFILE_AG = 0x20, /**< Audio Gateway Profile */
-       BT_PROFILE_GATT = 0x40, /**< Generic Attribute Profile */
-       BT_PROFILE_NAP_SERVER = 0x80, /**< NAP server Profile */
-       BT_PROFILE_A2DP_SINK = 0x100, /**< Advanced Audio Distribution Profile Sink role */
-} bt_profile_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Enumerations of device address type.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_DEVICE_PUBLIC_ADDRESS = 0x00, /**< Public address */
-       BT_DEVICE_RANDOM_ADDRESS, /**< Random address */
-} bt_device_address_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Enumerations of service class.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_SC_NONE = 0, /**< No service class */
-       BT_SC_RES_SERVICE_MASK = 0x00000001, /**< RES service class */
-       BT_SC_SPP_SERVICE_MASK = 0x00000002, /**< SPP service class */
-       BT_SC_DUN_SERVICE_MASK = 0x00000004, /**< DUN service class */
-       BT_SC_FAX_SERVICE_MASK = 0x00000008, /**< FAX service class */
-       BT_SC_LAP_SERVICE_MASK = 0x00000010, /**< LAP service class */
-       BT_SC_HSP_SERVICE_MASK = 0x00000020, /**< HSP service class */
-       BT_SC_HFP_SERVICE_MASK = 0x00000040, /**< HFP service class */
-       BT_SC_OPP_SERVICE_MASK = 0x00000080, /**< OPP service class */
-       BT_SC_FTP_SERVICE_MASK = 0x00000100, /**< FTP service class */
-       BT_SC_CTP_SERVICE_MASK = 0x00000200, /**< CTP service class */
-       BT_SC_ICP_SERVICE_MASK = 0x00000400, /**< ICP service class */
-       BT_SC_SYNC_SERVICE_MASK = 0x00000800, /**< SYNC service class */
-       BT_SC_BPP_SERVICE_MASK = 0x00001000, /**< BPP service class */
-       BT_SC_BIP_SERVICE_MASK = 0x00002000, /**< BIP service class */
-       BT_SC_PANU_SERVICE_MASK = 0x00004000, /**< PANU service class */
-       BT_SC_NAP_SERVICE_MASK = 0x00008000, /**< NAP service class */
-       BT_SC_GN_SERVICE_MASK = 0x00010000, /**< GN service class */
-       BT_SC_SAP_SERVICE_MASK = 0x00020000, /**< SAP service class */
-       BT_SC_A2DP_SERVICE_MASK = 0x00040000, /**< A2DP service class */
-       BT_SC_AVRCP_SERVICE_MASK = 0x00080000, /**< AVRCP service class */
-       BT_SC_PBAP_SERVICE_MASK = 0x00100000, /**< PBAP service class */
-       BT_SC_HID_SERVICE_MASK = 0x00200000, /**< HID service class */
-       BT_SC_A2DP_SOURCE_SERVICE_MASK = 0x00400000, /**< A2DP SOURCE service class */
-       BT_SC_ALL_SERVICE_MASK = 0x00FFFFFF, /**< ALL service class */
-       BT_SC_MAX /**< MAX service class */
-} bt_service_class_t;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Enumerations of major service class.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_MAJOR_SERVICE_CLASS_LIMITED_DISCOVERABLE_MODE  = 0x002000, /**< Limited discoverable mode */
-       BT_MAJOR_SERVICE_CLASS_POSITIONING                = 0x010000, /**< Positioning class */
-       BT_MAJOR_SERVICE_CLASS_NETWORKING                 = 0x020000, /**< Networking class */
-       BT_MAJOR_SERVICE_CLASS_RENDERING                  = 0x040000, /**< Rendering class */
-       BT_MAJOR_SERVICE_CLASS_CAPTURING                  = 0x080000, /**< Capturing class */
-       BT_MAJOR_SERVICE_CLASS_OBJECT_TRANSFER            = 0x100000, /**< Object transferring class */
-       BT_MAJOR_SERVICE_CLASS_AUDIO                      = 0x200000, /**< Audio class*/
-       BT_MAJOR_SERVICE_CLASS_TELEPHONY                  = 0x400000, /**< Telephony class */
-       BT_MAJOR_SERVICE_CLASS_INFORMATION                = 0x800000, /**< Information class */
-} bt_major_service_class_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Enumerations of major device class.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_MAJOR_DEVICE_CLASS_MISC = 0x00, /**< Miscellaneous major device class*/
-       BT_MAJOR_DEVICE_CLASS_COMPUTER = 0x01, /**< Computer major device class */
-       BT_MAJOR_DEVICE_CLASS_PHONE = 0x02, /**< Phone major device class */
-       BT_MAJOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT = 0x03, /**< LAN/Network access point major device class */
-       BT_MAJOR_DEVICE_CLASS_AUDIO_VIDEO = 0x04, /**< Audio/Video major device class */
-       BT_MAJOR_DEVICE_CLASS_PERIPHERAL = 0x05, /**< Peripheral major device class */
-       BT_MAJOR_DEVICE_CLASS_IMAGING = 0x06, /**< Imaging major device class */
-       BT_MAJOR_DEVICE_CLASS_WEARABLE = 0x07, /**< Wearable device class */
-       BT_MAJOR_DEVICE_CLASS_TOY = 0x08, /**< Toy device class */
-       BT_MAJOR_DEVICE_CLASS_HEALTH = 0x09, /**< Health device class */
-       BT_MAJOR_DEVICE_CLASS_UNCATEGORIZED = 0x1F, /**< Uncategorized major device class */
-} bt_major_device_class_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Enumerations of minor device class.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_MINOR_DEVICE_CLASS_COMPUTER_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of computer */
-       BT_MINOR_DEVICE_CLASS_COMPUTER_DESKTOP_WORKSTATION = 0x04, /**< Desktop workstation minor device class of computer */
-       BT_MINOR_DEVICE_CLASS_COMPUTER_SERVER_CLASS = 0x08, /**< Server minor device class of computer */
-       BT_MINOR_DEVICE_CLASS_COMPUTER_LAPTOP = 0x0C, /**< Laptop minor device class of computer */
-       BT_MINOR_DEVICE_CLASS_COMPUTER_HANDHELD_PC_OR_PDA = 0x10, /**< Handheld PC/PDA minor device class of computer */
-       BT_MINOR_DEVICE_CLASS_COMPUTER_PALM_SIZED_PC_OR_PDA = 0x14, /**< Palm sized PC/PDA minor device class of computer */
-       BT_MINOR_DEVICE_CLASS_COMPUTER_WEARABLE_COMPUTER = 0x18, /**< Wearable(watch sized) minor device class of computer */
-
-       BT_MINOR_DEVICE_CLASS_PHONE_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of phone */
-       BT_MINOR_DEVICE_CLASS_PHONE_CELLULAR = 0x04, /**< Cellular minor device class of phone */
-       BT_MINOR_DEVICE_CLASS_PHONE_CORDLESS = 0x08, /**< Cordless minor device class of phone */
-       BT_MINOR_DEVICE_CLASS_PHONE_SMART_PHONE = 0x0C, /**< Smart phone minor device class of phone */
-       BT_MINOR_DEVICE_CLASS_PHONE_WIRED_MODEM_OR_VOICE_GATEWAY = 0x10, /**< Wired modem or voice gateway minor device class of phone */
-       BT_MINOR_DEVICE_CLASS_PHONE_COMMON_ISDN_ACCESS = 0x14, /**< Common ISDN minor device class of phone */
-
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_FULLY_AVAILABLE = 0x04, /**< Fully available minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_1_TO_17_PERCENT_UTILIZED = 0x20, /**< 1-17% utilized minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_17_TO_33_PERCENT_UTILIZED = 0x40, /**< 17-33% utilized minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_33_TO_50_PERCENT_UTILIZED = 0x60, /**< 33-50% utilized minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_50_to_67_PERCENT_UTILIZED = 0x80, /**< 50-67% utilized minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_67_TO_83_PERCENT_UTILIZED = 0xA0, /**< 67-83% utilized minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_83_TO_99_PERCENT_UTILIZED = 0xC0, /**< 83-99% utilized minor device class of LAN/Network access point */
-       BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_NO_SERVICE_AVAILABLE = 0xE0, /**< No service available minor device class of LAN/Network access point */
-
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_WEARABLE_HEADSET = 0x04, /**< Wearable headset minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HANDS_FREE = 0x08, /**< Hands-free minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_MICROPHONE = 0x10, /**< Microphone minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_LOUDSPEAKER = 0x14, /**< Loudspeaker minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HEADPHONES = 0x18, /**< Headphones minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_PORTABLE_AUDIO = 0x1C, /**< Portable audio minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_CAR_AUDIO = 0x20, /**< Car audio minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_SET_TOP_BOX = 0x24, /**< Set-top box minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HIFI_AUDIO_DEVICE = 0x28, /**< Hifi audio minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VCR = 0x2C, /**< VCR minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_CAMERA = 0x30, /**< Video camera minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_CAMCORDER = 0x34, /**< Camcorder minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_MONITOR = 0x38, /**< Video monitor minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_DISPLAY_LOUDSPEAKER = 0x3C, /**< Video display and loudspeaker minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_CONFERENCING = 0x40, /**< Video conferencing minor device class of audio/video */
-       BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_GAMING_TOY = 0x48, /**< Gaming/toy minor device class of audio/video */
-
-       BT_MINOR_DEVICE_CLASS_PERIPHERA_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_KEY_BOARD = 0x40, /**< Key board minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_POINTING_DEVICE = 0x80, /**< Pointing device minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_COMBO_KEYBOARD_POINTING_DEVICE = 0xC0, /**< Combo keyboard or pointing device minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_JOYSTICK = 0x04, /**< Joystick minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_GAME_PAD = 0x08, /**< Game pad minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_REMOTE_CONTROL = 0x0C, /**< Remote control minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_SENSING_DEVICE = 0x10, /**< Sensing device minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_DIGITIZER_TABLET = 0x14, /**< Digitizer minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_CARD_READER = 0x18, /**< Card reader minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_DIGITAL_PEN = 0x1C, /**< Digital pen minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_HANDHELD_SCANNER = 0x20, /**< Handheld scanner minor device class of peripheral */
-       BT_MINOR_DEVICE_CLASS_PERIPHERAL_HANDHELD_GESTURAL_INPUT_DEVICE = 0x24, /**< Handheld gestural input device minor device class of peripheral */
-
-       BT_MINOR_DEVICE_CLASS_IMAGING_DISPLAY = 0x10, /**< Display minor device class of imaging */
-       BT_MINOR_DEVICE_CLASS_IMAGING_CAMERA = 0x20, /**< Camera minor device class of imaging */
-       BT_MINOR_DEVICE_CLASS_IMAGING_SCANNER = 0x40, /**< Scanner minor device class of imaging */
-       BT_MINOR_DEVICE_CLASS_IMAGING_PRINTER = 0x80, /**< Printer minor device class of imaging */
-
-       BT_MINOR_DEVICE_CLASS_WEARABLE_WRIST_WATCH = 0x04, /**< Wrist watch minor device class of wearable */
-       BT_MINOR_DEVICE_CLASS_WEARABLE_PAGER = 0x08, /**< Pager minor device class of wearable */
-       BT_MINOR_DEVICE_CLASS_WEARABLE_JACKET = 0x0C, /**< Jacket minor device class of wearable */
-       BT_MINOR_DEVICE_CLASS_WEARABLE_HELMET = 0x10, /**< Helmet minor device class of wearable */
-       BT_MINOR_DEVICE_CLASS_WEARABLE_GLASSES = 0x14, /**< Glasses minor device class of wearable */
-
-       BT_MINOR_DEVICE_CLASS_TOY_ROBOT = 0x04, /**< Robot minor device class of toy */
-       BT_MINOR_DEVICE_CLASS_TOY_VEHICLE = 0x08, /**< Vehicle minor device class of toy */
-       BT_MINOR_DEVICE_CLASS_TOY_DOLL_ACTION = 0x0C, /**< Doll/Action minor device class of toy */
-       BT_MINOR_DEVICE_CLASS_TOY_CONTROLLER = 0x10, /**< Controller minor device class of toy */
-       BT_MINOR_DEVICE_CLASS_TOY_GAME = 0x14, /**< Game minor device class of toy */
-
-       BT_MINOR_DEVICE_CLASS_HEALTH_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_BLOOD_PRESSURE_MONITOR = 0x04, /**< Blood pressure monitor minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_THERMOMETER = 0x08, /**< Thermometer minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_WEIGHING_SCALE = 0x0C, /**< Weighing scale minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_GLUCOSE_METER = 0x10, /**< Glucose minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_PULSE_OXIMETER = 0x14, /**< Pulse oximeter minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_HEART_PULSE_RATE_MONITOR = 0x18, /**< Heart/Pulse rate monitor minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_DATA_DISPLAY = 0x1C, /**< Health data display minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_STEP_COUNTER = 0x20, /**< Step counter minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_BODY_COMPOSITION_ANALYZER = 0x24, /**< Body composition analyzer minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_PEAK_FLOW_MONITOR = 0x28, /**< Peak flow monitor minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_MEDICATION_MONITOR = 0x2C, /**< Medication monitor minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_KNEE_PROSTHESIS = 0x30, /**< Knee prosthesis minor device class of health */
-       BT_MINOR_DEVICE_CLASS_HEALTH_ANKLE_PROSTHESIS = 0x34, /**< Ankle prosthesis minor device class of health */
-} bt_minor_device_class_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Enumerations of gap appearance type.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_APPEARANCE_TYPE_UNKNOWN = 0x00, /**< Unknown appearance type */
-       BT_APPEARANCE_TYPE_GENERIC_PHONE = 0x40, /**< Generic Phone type - Generic category */
-       BT_APPEARANCE_TYPE_GENERIC_COMPUTER = 0x80, /**< Generic Computer type - Generic category */
-       BT_APPEARANCE_TYPE_GENERIC_WATCH = 0xC0, /**< Generic Watch type - Generic category */
-} bt_appearance_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Enumerations of the Bluetooth device's LE connection mode.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_DEVICE_LE_CONNECTION_MODE_BALANCED, /**< Balanced mode of power consumption and connection latency */
-       BT_DEVICE_LE_CONNECTION_MODE_LOW_LATENCY, /**< Low connection latency but high power consumption */
-       BT_DEVICE_LE_CONNECTION_MODE_LOW_ENERGY, /**< Low power consumption but high connection latency */
-} bt_device_le_connection_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Enumerations of connected Bluetooth device event role.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_SOCKET_UNKNOWN = 0x00, /**< Unknown role*/
-       BT_SOCKET_SERVER , /**< Server role*/
-       BT_SOCKET_CLIENT, /**< Client role*/
-} bt_socket_role_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Enumerations of Bluetooth socket connection state.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_SOCKET_CONNECTED, /**< RFCOMM is connected */
-       BT_SOCKET_DISCONNECTED, /**< RFCOMM is disconnected */
-} bt_socket_connection_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Enumerations for the types of profiles related with audio
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_AUDIO_PROFILE_TYPE_ALL = 0,  /**< All supported profiles related with audio */
-       BT_AUDIO_PROFILE_TYPE_HSP_HFP,  /**< HSP(Headset Profile) and HFP(Hands-Free Profile) */
-       BT_AUDIO_PROFILE_TYPE_A2DP,  /**< A2DP(Advanced Audio Distribution Profile) */
-       BT_AUDIO_PROFILE_TYPE_AG,  /**< AG(Audio Gateway) */
-       BT_AUDIO_PROFILE_TYPE_A2DP_SINK,  /**< A2DP(Advanced Audio Distribution Profile) Sink role */
-} bt_audio_profile_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Enumerations for the call handling event
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_AG_CALL_HANDLING_EVENT_ANSWER = 0x00,  /**< Request to answer an incoming call */
-       BT_AG_CALL_HANDLING_EVENT_RELEASE,  /**< Request to release a call */
-       BT_AG_CALL_HANDLING_EVENT_REJECT,  /**< Request to reject an incoming call */
-} bt_ag_call_handling_event_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Enumerations for the multi call handling event
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_AG_MULTI_CALL_HANDLING_EVENT_RELEASE_HELD_CALLS = 0x00,  /**< Request to release held calls */
-       BT_AG_MULTI_CALL_HANDLING_EVENT_RELEASE_ACTIVE_CALLS,  /**< Request to release active calls */
-       BT_AG_MULTI_CALL_HANDLING_EVENT_ACTIVATE_HELD_CALL,  /**< Request to put active calls into hold state and activate another (held or waiting) call */
-       BT_AG_MULTI_CALL_HANDLING_EVENT_MERGE_CALLS,  /**< Request to add a held call to the conversation */
-       BT_AG_MULTI_CALL_HANDLING_EVENT_EXPLICIT_CALL_TRANSFER,  /**< Request to let a user who has two calls to connect these two calls together and release its connections to both other parties */
-} bt_ag_multi_call_handling_event_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Enumerations for the equalizer state
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_AVRCP_EQUALIZER_STATE_OFF = 0x01,  /**< Equalizer Off */
-       BT_AVRCP_EQUALIZER_STATE_ON,  /**< Equalizer On */
-} bt_avrcp_equalizer_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Enumerations for the repeat mode
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_AVRCP_REPEAT_MODE_OFF = 0x01,  /**< Repeat Off */
-       BT_AVRCP_REPEAT_MODE_SINGLE_TRACK,  /**< Single track repeat */
-       BT_AVRCP_REPEAT_MODE_ALL_TRACK,  /**< All track repeat */
-       BT_AVRCP_REPEAT_MODE_GROUP,  /**< Group repeat */
-} bt_avrcp_repeat_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Enumerations for the shuffle mode
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_AVRCP_SHUFFLE_MODE_OFF = 0x01,  /**< Shuffle Off */
-       BT_AVRCP_SHUFFLE_MODE_ALL_TRACK,  /**< All tracks shuffle */
-       BT_AVRCP_SHUFFLE_MODE_GROUP,  /**< Group shuffle */
-} bt_avrcp_shuffle_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Enumerations for the scan mode
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_AVRCP_SCAN_MODE_OFF = 0x01,  /**< Scan Off */
-       BT_AVRCP_SCAN_MODE_ALL_TRACK,  /**< All tracks scan */
-       BT_AVRCP_SCAN_MODE_GROUP,  /**< Group scan */
-} bt_avrcp_scan_mode_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Enumerations for the player state
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_AVRCP_PLAYER_STATE_STOPPED = 0x00,  /**< Stopped */
-       BT_AVRCP_PLAYER_STATE_PLAYING,  /**< Playing */
-       BT_AVRCP_PLAYER_STATE_PAUSED,  /**< Paused */
-       BT_AVRCP_PLAYER_STATE_FORWARD_SEEK,  /**< Seek Forward */
-       BT_AVRCP_PLAYER_STATE_REWIND_SEEK,  /**< Seek Rewind */
-} bt_avrcp_player_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Enumeration for the player control commands
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_AVRCP_CONTROL_PLAY = 0x01,   /**< Play */
-       BT_AVRCP_CONTROL_PAUSE,   /**< Pause */
-       BT_AVRCP_CONTROL_STOP,   /**< Stop */
-       BT_AVRCP_CONTROL_NEXT,   /**< Next Track*/
-       BT_AVRCP_CONTROL_PREVIOUS,   /**< Previous track */
-       BT_AVRCP_CONTROL_FAST_FORWARD,   /**< Fast Forward */
-       BT_AVRCP_CONTROL_REWIND   /**< Rewind */
-} bt_avrcp_player_command_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief Structure of Track metadata information.
- * @since_tizen 3.0
- *
- * @see #bt_class_s
- */
-typedef struct {
-       const char *title;   /**< Title */
-       const char *artist;   /**< Artist */
-       const char *album;   /**< Album name */
-       const char *genre;   /**< Album Genre */
-       unsigned int total_tracks;   /**< The total number of tracks */
-       unsigned int number;   /**< Track number */
-       unsigned int duration;   /**< Duration */
-} bt_avrcp_metadata_attributes_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 3.0
- * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
- * @param[in] remote_address  The remote address
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_control_initialize()
- * @see bt_avrcp_control_deinitialize()
- */
-typedef void (*bt_avrcp_control_connection_state_changed_cb) (bool connected, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the Song position mode is changed by the remote target device.
- * @since_tizen 3.0
- * @param[in] position Playback position in milliseconds. When position is 0 it means the track is starting and when it's greater than or equal to track's duration the track has ended.
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_position_changed_cb()
- * @see bt_avrcp_unset_position_changed_cb()
- */
-typedef void (*bt_avrcp_position_changed_cb) (unsigned int position, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the Song metadata information is changed by the remote target device.
- * @since_tizen 3.0
- * @param[in] track The song metadata information
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_track_info_changed_cb()
- * @see bt_avrcp_unset_track_info_changed_cb()
- */
-typedef void (*bt_avrcp_track_info_changed_cb) (bt_avrcp_metadata_attributes_info_s *track, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the Song Play status mode is changed by the remote target device.
- * @since_tizen 3.0
- * @param[in] play_state The song play status
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_play_status_changed_cb()
- * @see bt_avrcp_unset_play_status_changed_cb()
- */
-typedef void (*bt_avrcp_play_status_changed_cb) (bt_avrcp_player_state_e play_state, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Enumerations for the data channel type
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_HDP_CHANNEL_TYPE_RELIABLE  = 0x01,  /**< Reliable Data Channel */
-       BT_HDP_CHANNEL_TYPE_STREAMING,  /**< Streaming Data Channel */
-} bt_hdp_channel_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of the integer type for GATT handle's value.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_DATA_TYPE_SINT8,  /**< 8 bit signed int type */
-       BT_DATA_TYPE_SINT16,  /**< 16 bit signed int type */
-       BT_DATA_TYPE_SINT32,  /**< 32 bit signed int type */
-       BT_DATA_TYPE_UINT8,  /**< 8 bit unsigned int type */
-       BT_DATA_TYPE_UINT16,  /**< 16 bit unsigned int type */
-       BT_DATA_TYPE_UINT32  /**< 32 bit unsigned int type */
-} bt_data_type_int_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of the float type for GATT handle's value.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_DATA_TYPE_FLOAT,  /**< 32 bit float type */
-       BT_DATA_TYPE_SFLOAT  /**< 16 bit float type */
-} bt_data_type_float_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of the write type.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_GATT_WRITE_TYPE_WRITE_NO_RESPONSE,  /**< Write without response type */
-       BT_GATT_WRITE_TYPE_WRITE  /**< Write type */
-} bt_gatt_write_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of the GATT handle's type.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_GATT_TYPE_SERVICE = 0x01,  /**< GATT service type */
-       BT_GATT_TYPE_CHARACTERISTIC = 0x02,  /** GATT characteristic type */
-       BT_GATT_TYPE_DESCRIPTOR = 0x03,  /** GATT descriptor type */
-} bt_gatt_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of the service type.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_GATT_SERVICE_TYPE_PRIMARY = 0x01,  /**< GATT primary service type */
-       BT_GATT_SERVICE_TYPE_SECONDARY = 0x02,  /**< GATT secondary service type */
-} bt_gatt_service_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of the characteristic's property.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_GATT_PROPERTY_BROADCAST = 0x01,  /**< Broadcast property */
-       BT_GATT_PROPERTY_READ = 0x02,  /**< Read property */
-       BT_GATT_PROPERTY_WRITE_WITHOUT_RESPONSE = 0x04,  /**< Write without response property */
-       BT_GATT_PROPERTY_WRITE = 0x08,  /**< Write property */
-       BT_GATT_PROPERTY_NOTIFY = 0x10,  /**< Notify property */
-       BT_GATT_PROPERTY_INDICATE = 0x20,  /**< Indicate property */
-       BT_GATT_PROPERTY_AUTHENTICATED_SIGNED_WRITES = 0x40,  /**< Authenticated signed writes property */
-       BT_GATT_PROPERTY_EXTENDED_PROPERTIES = 0x80,  /**< Extended properties */
-} bt_gatt_property_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Enumerations of gatt server's service changing mode.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_GATT_CLIENT_SERVICE_ADDED,   /**< Service added */
-       BT_GATT_CLIENT_SERVICE_REMOVED, /**< Service removed */
-} bt_gatt_client_service_change_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Enumerations of the attribute's permission.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_GATT_PERMISSION_READ = 0x01,   /**< Readable permission */
-       BT_GATT_PERMISSION_WRITE = 0x02, /**< Writable permission */
-       BT_GATT_PERMISSION_ENCRYPT_READ = 0x04,  /**< Readable permission required encryption */
-       BT_GATT_PERMISSION_ENCRYPT_WRITE = 0x08,  /**< Writable permission required encryption */
-       BT_GATT_PERMISSION_ENCRYPT_AUTHENTICATED_READ = 0x10,    /**< Readable permission required encryption and authentication */
-       BT_GATT_PERMISSION_ENCRYPT_AUTHENTICATED_WRITE = 0x20,  /**< Writable permission required encryption and authentication */
-} bt_gatt_permission_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Enumerations of the remote device request types for attributes
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_GATT_REQUEST_TYPE_READ = 0x00, /* Read Requested */
-       BT_GATT_REQUEST_TYPE_WRITE = 0x01, /* Write Requested */
-} bt_gatt_att_request_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
- * @brief  Enumerations for the types of PAN(Personal Area Networking) service.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_PANU_SERVICE_TYPE_NAP = 0,  /**< Network Access Point */
-} bt_panu_service_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief  Enumeration of address book location for PBAP.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_PBAP_SOURCE_DEVICE = 0x00, /**< Request for Addressbook from remote device */
-       BT_PBAP_SOURCE_SIM , /**< Request for address book from SIM */
-} bt_pbap_address_book_source_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief  Enumeration of folder type.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_PBAP_FOLDER_PHONE_BOOK = 0x00, /**< Request for address book */
-       BT_PBAP_FOLDER_INCOMING , /**< Request for incoming calls */
-       BT_PBAP_FOLDER_OUTGOING , /**< Request for outgoing calls */
-       BT_PBAP_FOLDER_MISSED , /**< Request for missed calls */
-       BT_PBAP_FOLDER_COMBINED , /**< Request for combined calls */
-} bt_pbap_folder_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief  Enumeration of phone book search fields.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_PBAP_SEARCH_NAME = 0x00, /**< Request for search by name (default) */
-       BT_PBAP_SEARCH_NUMBER, /**< Request for search by phone number */
-       BT_PBAP_SEARCH_SOUND, /**< Request for search by sound */
-} bt_pbap_search_field_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief  Enumeration of vCard Formats.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_PBAP_VCARD_FORMAT_VCARD21 = 0x00, /**< vCard format 2.1 (default) */
-       BT_PBAP_VCARD_FORMAT_VCARD30, /**< vCard format 3.0 */
-} bt_pbap_vcard_format_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief  Enumeration of sorting orders.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_PBAP_ORDER_INDEXED = 0x00, /**< Filter order indexed (default) */
-       BT_PBAP_ORDER_ALPHANUMERIC, /**< Filter order alphanumeric */
-       BT_PBAP_ORDER_PHONETIC, /**< Filter order phonetic */
-} bt_pbap_sort_order_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief The handle to control Bluetooth LE advertising.
- * @since_tizen 2.3.1
- */
-typedef void *bt_advertiser_h;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief The handle of a service, characteristic or descriptor.
- * @since_tizen 2.3.1
- */
-typedef void *bt_gatt_h;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief The handle of a GATT client which is associated with a remote device.
- * @since_tizen 2.3.1
- */
-typedef void *bt_gatt_client_h;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief The handle of a GATT server.
- * @since_tizen 3.0
- */
-typedef void *bt_gatt_server_h;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  The handle of calls state.
- * @since_tizen 2.3.1
- */
-typedef void *bt_call_list_h;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Class structure of device and service.
- * @since_tizen 2.3.1
- *
- * @see #bt_device_info_s
- * @see #bt_adapter_device_discovery_info_s
- * @see bt_device_bond_created_cb()
- * @see bt_adapter_device_discovery_state_changed_cb()
- */
-typedef struct {
-       bt_major_device_class_e major_device_class;     /**< Major device class. */
-       bt_minor_device_class_e minor_device_class;     /**< Minor device class. */
-       int major_service_class_mask;   /**< Major service class mask.
-       This value can be a combination of #bt_major_service_class_e like #BT_MAJOR_SERVICE_CLASS_RENDERING | #BT_MAJOR_SERVICE_CLASS_AUDIO */
-} bt_class_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Structure of device discovery information.
- * @since_tizen 2.3.1
- *
- * @see #bt_class_s
- * @see bt_adapter_device_discovery_state_changed_cb()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       char *remote_name;      /**< The name of remote device */
-       bt_class_s bt_class;    /**< The Bluetooth classes */
-       int rssi;       /**< The strength indicator of received signal  */
-       bool is_bonded; /**< The bonding state */
-       char **service_uuid;  /**< The UUID list of service */
-       int service_count;      /**< The number of services */
-       bt_appearance_type_e appearance;        /**< The Bluetooth appearance */
-       int manufacturer_data_len;      /**< manufacturer specific data length */
-       char *manufacturer_data;                /**< manufacturer specific data */
-} bt_adapter_device_discovery_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Structure of le scan result information.
- * @since_tizen 2.3.1
- *
- * @see bt_adapter_le_start_scan()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       bt_device_address_type_e address_type;  /**< The address type of remote device */
-       int rssi;               /**< The strength indicator of received signal  */
-       int adv_data_len;       /**< advertising indication data length */
-       char *adv_data;         /**< advertising indication data */
-       int scan_data_len;      /**< scan response data length */
-       char *scan_data;        /**< scan response data */
-} bt_adapter_le_device_scan_result_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Structure of le iBeacon scan result information.
- * @since_tizen 3.0
- *
- * @see bt_adapter_le_start_scan()
- */
-typedef struct {
-       int company_id;         /**< company ID */
-       int ibeacon_type;       /**< Ibeacon type */
-       char *uuid;                     /**< UUID */
-       int major_id;           /**< Major ID */
-       int minor_id;           /**< Minor ID */
-       int measured_power;     /**< measured Power */
-} bt_adapter_ibeacon_scan_result_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief LE service data structure.
- * @since_tizen 2.3.1
- *
- * @see bt_adapter_le_get_scan_result_service_data()
- */
-typedef struct {
-       char *service_uuid;     /**< 16 bit UUID of the service data */
-       char *service_data;     /**< Service data */
-       int service_data_len;   /**< Service data length */
-} bt_adapter_le_service_data_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Device information structure used for identifying pear device.
- * @since_tizen 2.3.1
- *
- * @see #bt_class_s
- * @see bt_device_bond_created_cb()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       char *remote_name;      /**< The name of remote device */
-       bt_class_s bt_class;    /**< The Bluetooth classes */
-       char **service_uuid;  /**< The UUID list of service */
-       int service_count;      /**< The number of services */
-       bool is_bonded; /**< The bonding state */
-       bool is_connected;      /**< The connection state */
-       bool is_authorized;     /**< The authorization state */
-       int manufacturer_data_len;      /**< manufacturer specific data length */
-       char *manufacturer_data;                /**< manufacturer specific data */
-} bt_device_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Service Discovery Protocol (SDP) data structure.
- * @since_tizen 2.3.1
- *
- * @details This protocol is used for discovering available services or pear device,
- * and finding one to connect with.
- *
- * @see bt_device_service_searched_cb()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       char **service_uuid;  /**< The UUID list of service */
-       int service_count;    /**< The number of services. */
-} bt_device_sdp_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Device connection information structure.
- * @since_tizen 2.3.1
- *
- * @see bt_device_connection_state_changed_cb()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       bt_device_connection_link_type_e link;  /**< Link type */
-       bt_device_disconnect_reason_e disconn_reason;  /**< Disconnection reason */
-} bt_device_connection_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Rfcomm connection data used for exchanging data between Bluetooth devices.
- * @since_tizen 2.3.1
- *
- * @see bt_socket_connection_state_changed_cb()
- */
-typedef struct {
-       int socket_fd;  /**< The file descriptor of connected socket */
-       int server_fd;  /**< The file descriptor of the server socket or -1 for client connection */
-       bt_socket_role_e local_role;    /**< The local device role in this connection */
-       char *remote_address;   /**< The remote device address */
-       char *service_uuid;     /**< The service UUId */
-} bt_socket_connection_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Structure of RFCOMM received data.
- * @since_tizen 2.3.1
- *
- * @remarks User can use standard linux functions for reading/writing
- * data from/to sockets.
- *
- * @see bt_socket_data_received_cb()
- */
-typedef struct {
-       int socket_fd;  /**< The socket fd */
-       int data_size;  /**< The length of the received data */
-       char *data;     /**< The received data */
-} bt_socket_received_data_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when the Bluetooth adapter state changes.
- * @since_tizen 2.3.1
- *
- * @param[in]   result  The result of the adapter state changing
- * @param[in]   adapter_state  The adapter state to be changed
- * @param[in]   user_data  The user data passed from the callback registration function
- * @see bt_adapter_set_state_changed_cb()
- * @see bt_adapter_unset_state_changed_cb()
- */
-typedef void (*bt_adapter_state_changed_cb)(int result, bt_adapter_state_e adapter_state, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when adapter name changes.
- * @since_tizen 2.3.1
- *
- * @param[in]   device_name    The name of the Bluetooth device to be changed
- * @param[in]   user_data      The user data passed from the callback registration function
- * @pre This function will be invoked when the name of Bluetooth adapter changes
- * if you register this callback using bt_adapter_set_name_changed_cb().
- * @see bt_adapter_set_name()
- * @see bt_adapter_set_name_changed_cb()
- * @see bt_adapter_unset_name_changed_cb()
- */
-typedef void (*bt_adapter_name_changed_cb)(char *device_name, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when the visibility mode changes.
- * @since_tizen 2.3.1
- *
- * @param[in] result The result of the visibility mode changing
- * @param[in] visibility_mode The visibility mode to be changed
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @pre This function will be invoked when the visibility of Bluetooth adapter changes
- * if you register this callback using bt_adapter_set_visibility_mode_changed_cb().
- *
- * @see bt_adapter_set_visibility_mode_changed_cb()
- * @see bt_adapter_unset_visibility_mode_changed_cb()
- */
-typedef void (*bt_adapter_visibility_mode_changed_cb)
-       (int result, bt_adapter_visibility_mode_e visibility_mode, void *user_data);
-
-/**
- * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called every second until the visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE.
- * @since_tizen 2.3.1
- *
- * @remarks  This callback function is called only if visibility mode is #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE.
- * @param[in]  duration  The duration until the visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE (in seconds)
- * @param[in]  user_data  The user data passed from the callback registration function
- * @pre  This function will be invoked if you register this callback using bt_adapter_set_visibility_duration_changed_cb().
- * @see  bt_adapter_set_visibility_duration_changed_cb()
- * @see  bt_adapter_unset_visibility_duration_changed_cb()
- */
-typedef void (*bt_adapter_visibility_duration_changed_cb)(int duration, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when the state of device discovery changes.
- * @since_tizen 2.3.1
- *
- * @remarks If \a discovery_state is #BT_ADAPTER_DEVICE_DISCOVERY_FOUND,
- * then you can get some information, such as remote device address, remote device name, rssi, and bonding state.
- *
- * @param[in] result The result of the device discovery
- * @param[in] discovery_state The discovery state to be changed
- * @param[in] discovery_info The information of the discovered device \n
- *                                     If \a discovery_state is #BT_ADAPTER_DEVICE_DISCOVERY_STARTED or
- * #BT_ADAPTER_DEVICE_DISCOVERY_FINISHED, then \a discovery_info is NULL.
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @pre Either bt_adapter_start_device_discovery() or bt_adapter_stop_device_discovery() will invoke this function
- * if you register this callback using bt_adapter_set_device_discovery_state_changed_cb().
- *
- * @see bt_adapter_start_device_discovery()
- * @see bt_adapter_stop_device_discovery()
- * @see bt_adapter_set_device_discovery_state_changed_cb()
- * @see bt_adapter_unset_device_discovery_state_changed_cb()
- *
- */
-typedef void (*bt_adapter_device_discovery_state_changed_cb)
-       (int result, bt_adapter_device_discovery_state_e discovery_state, bt_adapter_device_discovery_info_s *discovery_info, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when you get bonded devices repeatedly.
- * @since_tizen 2.3.1
- *
- * @param[in] device_info The bonded device information
- * @param[in] user_data The user data passed from the foreach function
- * @return @c true to continue with the next iteration of the loop,
- * \n @c false to break out of the loop.
- * @pre bt_adapter_foreach_bonded_device() will invoke this function.
- *
- * @see bt_adapter_foreach_bonded_device()
- *
- */
-typedef bool (*bt_adapter_bonded_device_cb)(bt_device_info_s *device_info, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Called when the LE advertisement has been found.
- * @since_tizen 2.3.1
- *
- * @param[in] result The result of the LE scan
- * @param[in] info The information of the found LE advertisement.
- * @param[in] user_data The user data passed from the start function
- *
- * @see bt_adapter_le_start_scan()
- *
- */
-typedef void (*bt_adapter_le_scan_result_cb)(int result,
-               bt_adapter_le_device_scan_result_info_s *info, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Called when the state of advertiser changes.
- * @since_tizen 2.3.1
- *
- * @param[out] result The result of the requested state change of advertiser
- * @param[out] advertiser The handle of the state changed advertiser
- * @param[out] adv_state The advertiser state to be changed
- * @param[out] user_data The user data passed from the start function
- *
- * @see bt_adapter_le_start_advertising_new()
- * @see bt_adapter_le_stop_advertising()
- */
-typedef void (*bt_adapter_le_advertising_state_changed_cb)(int result,
-               bt_advertiser_h advertiser, bt_adapter_le_advertising_state_e adv_state, void *user_data);
-
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Called when the process of creating bond finishes.
- * @since_tizen 2.3.1
- *
- * @remarks If the remote user does not respond within 60 seconds, a time out will happen with #BT_ERROR_TIMED_OUT result code.\n
- * If bt_device_cancel_bonding() is called and it returns #BT_ERROR_NONE, then this callback function will be called
- * with #BT_ERROR_CANCELLED result. \n
- * If creating a bond succeeds but service search fails, then this callback will be called with #BT_ERROR_SERVICE_SEARCH_FAILED.
- * In this case, you should try service search again by bt_device_start_service_search() to get the supported service list.
- *
- * @param[in] result The result of the bonding device
- * @param[in] device_info The device information which you creates bond with
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @pre Either bt_device_create_bond() will invoke this function
- * if you register this callback using bt_device_set_bond_created_cb().
- *
- * @see bt_device_create_bond()
- * @see bt_device_cancel_bonding()
- * @see bt_device_set_bond_created_cb()
- * @see bt_device_unset_bond_created_cb()
- */
-typedef void (*bt_device_bond_created_cb)(int result, bt_device_info_s *device_info, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when you get connected profiles repeatedly.
- * @since_tizen 2.3.1
- *
- * @param[in] profile The connected Bluetooth profile
- * @param[in] user_data The user data passed from the foreach function
- * @return @c true to continue with the next iteration of the loop,
- * \n @c false to break out of the loop.
- * @pre bt_device_foreach_connected_profiles() will invoke this function.
- * @see bt_device_foreach_connected_profiles()
- */
-typedef bool (*bt_device_connected_profile)(bt_profile_e profile, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when the bond destroys.
- * @since_tizen 2.3.1
- *
- * @param[in] result The result that a bond is destroyed
- * @param[in] remote_address The address of the remote Bluetooth device to destroy bond with
- * @param[in] user_data The user data passed from the callback registration function
- * @pre bt_device_destroy_bond() will invoke this function
- * if you register this callback using bt_device_set_bond_destroyed_cb().
- *
- * @see bt_device_destroy_bond()
- * @see bt_device_set_bond_destroyed_cb()
- * @see bt_device_unset_bond_destroyed_cb()
- */
-typedef void (*bt_device_bond_destroyed_cb)(int result, char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when the authorization of device changes.
- * @since_tizen 2.3.1
- *
- * @param[in] authorization The authorization of device
- * @param[in] remote_address The address of the remote Bluetooth device which is (un)authorized
- * @param[in] user_data The user data passed from the callback registration function
- * @pre bt_device_set_authorization() will invoke this function if you register this callback using bt_device_set_authorization_changed_cb().
- *
- * @see bt_device_set_authorization()
- * @see #bt_device_set_authorization_changed_cb()
- * @see #bt_device_unset_authorization_changed_cb()
- */
-typedef void (*bt_device_authorization_changed_cb)
-       (bt_device_authorization_e authorization, char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when the process of service search finishes.
- * @since_tizen 2.3.1
- *
- * @remark
- *
- * @param[in] result The result of the service searching
- * @param[in] sdp_info The structure of service lists found on a device
- * @param[in] user_data The user data passed from the callback registration function
- * @pre Either bt_device_start_service_search() will invoke this function
- * if you register this callback using  bt_device_set_service_searched_cb().
- *
- * @see bt_device_start_service_search()
- * @see bt_device_set_service_searched_cb()
- * @see bt_device_unset_service_searched_cb()
- *
- */
-typedef void (*bt_device_service_searched_cb)(int result, bt_device_sdp_info_s *sdp_info, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 2.3.1
- *
- * @param[in] connected The connection status: (@c true = connected, @c false = disconnected)
- * @param[in] conn_info The connection information
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_device_set_connection_state_changed_cb()
- * @see bt_device_unset_connection_state_changed_cb()
- */
-typedef void (*bt_device_connection_state_changed_cb)(bool connected, bt_device_connection_info_s *conn_info, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief Called when you receive data.
- * @since_tizen 2.3.1
- *
- * @param[in] data The received data from the remote device
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @pre When the connected remote Bluetooth device invokes bt_socket_send_data(),
- *             this function will be invoked if you register this function using bt_socket_set_data_received_cb().
- *
- * @see bt_socket_set_data_received_cb()
- * @see bt_socket_unset_data_received_cb()
- * @see bt_socket_send_data()
- */
-typedef void (*bt_socket_data_received_cb)(bt_socket_received_data_s *data, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Called when the socket connection state changes.
- * @since_tizen 2.3.1
- *
- * @param[in] result The result of connection state changing
- * @param[in] connection_state The connection state
- * @param[in] connection The connection information which is established or disconnected
- * @param[in] user_data The user data passed from the callback registration function
- * @pre Either bt_socket_connect_rfcomm() will invoke this function.
- * In addition, bt_socket_connection_state_changed_cb() will be invoked when the socket connection state is changed.
- * @see bt_socket_listen_and_accept_rfcomm()
- * @see bt_socket_connect_rfcomm()
- * @see bt_socket_set_connection_state_changed_cb()
- * @see bt_socket_unset_connection_state_changed_cb()
- */
-typedef void (*bt_socket_connection_state_changed_cb)
-       (int result, bt_socket_connection_state_e connection_state, bt_socket_connection_s *connection, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
- * @brief  Called when a RFCOMM connection is requested.
- * @since_tizen 2.3.1
- *
- * @param[in] socket_fd  The file descriptor of socket on which a connection is requested
- * @param[in] remote_address  The address of remote device
- * @param[in] user_data The user data passed from the callback registration function
- * @pre If you register this callback function by bt_socket_set_connection_requested_cb(),
- * bt_socket_connection_requested_cb() will be invoked.
- */
-typedef void (*bt_socket_connection_requested_cb) (int socket_fd, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief  Called when an OPP connection is requested.
- * @since_tizen 2.3.1
- *
- * @details You must call bt_opp_server_accept_connection() if you want to accept.
- * Otherwise, you must call bt_opp_server_reject_connection().
- * @param[in] remote_address  The address of remote device
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_opp_server_accept()
- * @see bt_opp_server_reject()
- */
-typedef void (*bt_opp_server_connection_requested_cb)(const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief  Called when a file is being transferred.
- * @since_tizen 2.3.1
- *
- * @param[in] file  The path of file to be pushed
- * @param[in] size The file size (bytes)
- * @param[in] percent The progress in percentage (1 ~ 100)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_opp_server_accept()
- * @see bt_opp_server_accept_connection()
- */
-typedef void (*bt_opp_server_transfer_progress_cb) (const char *file, long long size, int percent, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief  Called when a transfer is finished.
- * @since_tizen 2.3.1
- *
- * @param[in] error_code  The result of push
- * @param[in] file  The path of file to be pushed
- * @param[in] size The file size (bytes)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_opp_server_accept()
- * @see bt_opp_server_accept_connection()
- */
-typedef void (*bt_opp_server_transfer_finished_cb) (int result, const char *file, long long size, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief  Called when OPP server responds to the push request.
- * @since_tizen 2.3.1
- *
- * @param[in] result  The result of OPP server response
- * @param[in] remote_address  The remote address
- * @param[in] user_data  The user data passed from the callback registration function
- * @pre bt_opp_client_push_files() will invoke this function.
- * @see bt_opp_client_push_files()
- */
-typedef void (*bt_opp_client_push_responded_cb)(int result, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief  Called when each file is being transferred.
- * @since_tizen 2.3.1
- *
- * @param[in] file  The path of file to be pushed
- * @param[in] size The file size (bytes)
- * @param[in] percent The progress in percentage (1 ~ 100). 100 means that a file is transferred completely.
- * @param[in] user_data The user data passed from the callback registration function
- * @pre bt_opp_client_push_files() will invoke this function.
- * @see bt_opp_client_push_files()
- */
-typedef void (*bt_opp_client_push_progress_cb)(const char *file, long long size, int percent, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
- * @brief  Called when the push request is finished.
- * @since_tizen 2.3.1
- *
- * @param[in] result  The result of the push request
- * @param[in] remote_address  The remote address
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_opp_client_push_files()
- */
-typedef void (*bt_opp_client_push_finished_cb)(int result, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 2.3.1
- *
- * @details  This callback is called when the connection state is changed.
- * When you call bt_audio_connect() or bt_audio_disconnect(), this callback is also called with error result even though these functions fail.
- * @param[in] result  The result of changing the connection state
- * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
- * @param[in] remote_address  The remote address
- * @param[in] type  The type of audio profile except #BT_AUDIO_PROFILE_TYPE_ALL
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_audio_set_connection_state_changed_cb()
- * @see bt_audio_unset_connection_state_changed_cb()
- */
-typedef void (*bt_audio_connection_state_changed_cb) (int result, bool connected, const char *remote_address, bt_audio_profile_type_e type, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when a call handling event happened from Hands-Free.
- * @since_tizen 2.3.1
- *
- * @param[in] event  The call handling event happened from Hands-Free
- * @param[in] call_id  The call ID
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_call_handling_event_cb()
- * @see bt_ag_unset_call_handling_event_cb()
- */
-typedef void (*bt_ag_call_handling_event_cb) (bt_ag_call_handling_event_e event, unsigned int call_id, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when a multi call handling event happened from Hands-Free.
- * @since_tizen 2.3.1
- *
- * @param[in] event  The call handling event happened from Hands-Free
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_multi_call_handling_event_cb()
- * @see bt_ag_unset_multi_call_handling_event_cb()
- */
-typedef void (*bt_ag_multi_call_handling_event_cb) (bt_ag_multi_call_handling_event_e event, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when a DTMF(Dual Tone Multi Frequency) is transmitted from Hands-Free.
- * @since_tizen 2.3.1
- *
- * @param[in] dtmf  The DTMF transmitted from Hands-Free
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_dtmf_transmitted_cb()
- * @see bt_ag_unset_dtmf_transmitted_cb()
- */
-typedef void (*bt_ag_dtmf_transmitted_cb) (const char *dtmf, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when the speaker gain of the remote device is changed.
- * @since_tizen 2.3.1
- *
- * @param[in] gain The gain of speaker (0 ~ 15)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_speaker_gain_changed_cb()
- * @see bt_ag_unset_speaker_gain_changed_cb()
- */
-typedef void (*bt_ag_speaker_gain_changed_cb) (int gain, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when the microphone gain of the remote device is changed.
- * @since_tizen 2.3.1
- *
- * @param[in] gain The gain of microphone (0 ~ 15)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_microphone_gain_changed_cb()
- * @see bt_ag_unset_microphone_gain_changed_cb()
- */
-typedef void (*bt_ag_microphone_gain_changed_cb) (int gain, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 2.3.1
- *
- * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
- * @param[in] remote_address  The remote address
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_target_initialize()
- * @see bt_avrcp_target_deinitialize()
- */
-typedef void (*bt_avrcp_target_connection_state_changed_cb) (bool connected, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the equalizer state is changed by the remote control device.
- * @since_tizen 2.3.1
- *
- * @param[in] equalizer The equalizer state
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_equalizer_state_changed_cb()
- * @see bt_avrcp_unset_equalizer_state_changed_cb()
- */
-typedef void (*bt_avrcp_equalizer_state_changed_cb) (bt_avrcp_equalizer_state_e equalizer, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the repeat mode is changed by the remote control device.
- * @since_tizen 2.3.1
- *
- * @param[in] repeat The repeat mode
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_repeat_mode_changed_cb()
- * @see bt_avrcp_unset_repeat_mode_changed_cb()
- */
-typedef void (*bt_avrcp_repeat_mode_changed_cb) (bt_avrcp_repeat_mode_e repeat, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the shuffle mode is changed by the remote control device.
- * @since_tizen 2.3.1
- *
- * @param[in] shuffle The shuffle mode
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_shuffle_mode_changed_cb()
- * @see bt_avrcp_unset_shuffle_mode_changed_cb()
- */
-typedef void (*bt_avrcp_shuffle_mode_changed_cb) (bt_avrcp_shuffle_mode_e shuffle, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
- * @brief  Called when the scan mode is changed by the remote control device.
- * @since_tizen 2.3.1
- *
- * @param[in] shuffle The shuffle mode
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_avrcp_set_scan_mode_changed_cb()
- * @see bt_avrcp_unset_scan_mode_changed_cb()
- */
-typedef void (*bt_avrcp_scan_mode_changed_cb) (bt_avrcp_scan_mode_e scan, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_HOST_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 2.3.1
- *
- * @details  This callback is called when the connection state is changed.
- * When you call bt_hid_host_connect() or bt_hid_host_disconnect(), this callback is also called with error result even though these functions fail.
- * @param[in] result  The result of changing the connection state
- * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
- * @param[in] remote_address  The remote address
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_hid_host_connect()
- * @see bt_hid_host_disconnect()
- */
-typedef void (*bt_hid_host_connection_state_changed_cb) (int result, bool connected, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Called when the connection is established.
- * @since_tizen 2.3.1
- *
- * @param[in] result  The result of connecting to the remote device
- * @param[in] remote_address  The address of connected remote device
- * @param[in] app_id  The ID of application
- * @param[in] type  The type of HDP(Health Device Profile) channel
- * @param[in] channel  The connected data channel
- * @param[in] user_data The user data passed from the callback registration function
- * @see  bt_hdp_disconnected_cb
- * @see bt_hdp_set_connection_state_changed_cb()
- * @see bt_hdp_unset_connection_state_changed_cb()
- */
-typedef void (*bt_hdp_connected_cb) (int result, const char *remote_address, const char *app_id,
-       bt_hdp_channel_type_e type, unsigned int channel, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Called when the connection is disconnected.
- * @since_tizen 2.3.1
- *
- * @param[in] result  The result of disconnecting from the remote device
- * @param[in] remote_address  The address of disconnected remote device
- * @param[in] channel  The connected data channel
- * @param[in] user_data The user data passed from the callback registration function
- * @see  bt_hdp_connected_cb
- * @see bt_hdp_set_connection_state_changed_cb()
- * @see bt_hdp_unset_connection_state_changed_cb()
- */
-typedef void (*bt_hdp_disconnected_cb) (int result, const char *remote_address, unsigned int channel, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
- * @brief  Called when the you receive the data.
- * @since_tizen 2.3.1
- *
- * @param[in] channel  The connected data channel
- * @param[in] data  The received data
- * @param[in] size  The size of received data (byte)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_hdp_set_data_received_cb()
- * @see bt_hdp_unset_data_received_cb()
- */
-typedef void (*bt_hdp_data_received_cb) (unsigned int channel, const char *data, unsigned int size, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when you get GATT handles repeatedly
- * @since_tizen 2.3.1
- *
- * @param[in] total The total number of GATT handles to be called
- * @param[in] index The index of current GATT handle. It starts from 0.
- * @param[in] gatt_handle The GATT handle
- * @param[in] user_data The user data passed from the foreach function
- *
- * @see bt_gatt_service_foreach_characteristics()
- * @see bt_gatt_service_foreach_included_services()
- * @see bt_gatt_characteristic_foreach_descriptors()
- * @see bt_gatt_client_foreach_services()
- */
-typedef bool (*bt_gatt_foreach_cb) (int total, int index, bt_gatt_h gatt_handle,
-                                   void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when the client request(e.g. read / write) has been completed
- * @since_tizen 2.3.1
- *
- * @param[in] result The result of a request
- * @param[in] request_handle The requesting GATT handle
- * @param[in] user_data The user data passed from the requesting function
- *
- * @see bt_gatt_client_read_value()
- * @see bt_gatt_client_write_value()
- */
-typedef void (*bt_gatt_client_request_completed_cb) (int result,
-               bt_gatt_h request_handle, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when a value of a watched characteristic's GATT handle has been changed
- * @since_tizen 2.3.1
- *
- * @remarks After this function is returned, a changed value is automatically
- * applied to @a characteristic. Before that, @a characteristic has an old value.
- *
- * @param[in] characteristic The characteristic's GATT handle of which value change is informed. It has an old value.
- * @param[in] value The new value
- * @param[in] len The length of @a value
- * @param[in] user_data The user data passed from the registering function
- *
- * @see bt_gatt_client_set_characteristic_value_changed_cb()
- */
-typedef void (*bt_gatt_client_characteristic_value_changed_cb) (bt_gatt_h characteristic,
-               char *value, int len, void *user_data);
-
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief  Called when a service of a remote GATT server has been changed.
- * @since_tizen 3.0
- *
- * @param[in] client The handle of a GATT client which is associated with a remote device.
- * @param[in] change_type The changed type
- * @param[in] service_uuid The changed service uuid
- * @param[in] user_data The user data passed from the registering function
- *
- * @see bt_gatt_client_set_characteristic_value_changed_cb()
- */
-typedef void (*bt_gatt_client_service_changed_cb) (bt_gatt_client_h client,
-               bt_gatt_client_service_change_type_e change_type,
-               const char* service_uuid, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
- * @brief Called when the connection state is changed.
- * @since_tizen 2.3.1
- *
- * @details This callback is called when the connection state is changed.
- * When you called bt_gatt_connect() or bt_gatt_disconnect(), this callback is also called with error result even though these functions fail.
- *
- * @param[in] result The result of changing the connection state.
- * @param[in] connected The state to be changed, @a true means connected state, Otherwise, @a false.
- * @param[in] remote_address The remote_address
- * @param[in] user_data The user data passed from the callback registration function.
- *
- * @see bt_gatt_connect()
- * @see bt_gatt_disconnect()
- * @see bt_gatt_set_connection_state_changed_cb()
- * @see bt_gatt_unset_connection_state_changed_cb()
- */
-typedef void (*bt_gatt_connection_state_changed_cb)(int result, bool connected, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Called when a value of a characteristic or descriptor's GATT handle has been changed.
- * @since_tizen 3.0
- *
- * @details For finishing the request, call the function #bt_gatt_server_send_response in callback.
- *
- * @remarks After this function is returned, a changed value is automatically
- * applied to @a gatt_handle. Before that, @a gatt_handle has an old value.
- * @remarks The @a remote_address must not be freed by application.
- * @remarks The @a server must not be freed by application.
- * @remarks The @a gatt_handle must not be freed by application.
- * @remarks The @a value must not be freed by application.
- *
- * @param[in] remote_address The address of the remote device which requests a change
- * @param[in] request_id The identification of this request. It will be used to send a response.
- * @param[in] server The GATT server handle
- * @param[in] gatt_handle The characteristic or descriptor's GATT handle which has an old value
- * @param[in] response_needed Indicates whether a response is required by the remote device - @c true if required, @c false if not
- * @param[in] offset The requested offset from where the @a gatt_handle value will be updated
- * @param[in] value The new value
- * @param[in] len The length of @a value
- * @param[in] user_data The user data passed from the registration function
- *
- * @see bt_gatt_server_set_write_value_requested_cb()
- * @see bt_gatt_server_send_response()
- */
-typedef void (*bt_gatt_server_write_value_requested_cb) (const char *remote_address,
-                                int request_id, bt_gatt_server_h server,
-                                bt_gatt_h gatt_handle, bool response_needed, int offset,
-                                const char *value, int len, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Called when the remote device requests to read a value on a GATT server.
- * @since_tizen 3.0
- *
- * @details For finishing the request, call the function #bt_gatt_server_send_response in callback.
- *
- * @remarks The @a remote_address must not be freed by application.
- * @remarks The @a server must not be freed by application.
- * @remarks The @a gatt_handle must not be freed by application.
- *
- * @param[in] remote_address The address of the requesting remote device
- * @param[in] request_id The identification of this request. It will be used to send a response.
- * @param[in] server The GATT server handle
- * @param[in] gatt_handle The characteristic or descriptor's GATT handle to be read
- * @param[in] offset The requested offset from where the GATT handle's value is read
- * @param[in] user_data The user data passed from the registration function
- *
- * @see bt_gatt_server_set_read_value_requested_cb()
- * @see bt_gatt_server_send_response()
- */
-typedef void (*bt_gatt_server_read_value_requested_cb) (const char *remote_address,
-               int request_id, bt_gatt_server_h server, bt_gatt_h gatt_handle,
-               int offset, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Called when the remote device enables or disables the Notification/Indication for particular characteristics.
- * @since_tizen 3.0
- *
- * @details By using this callback function, server can know notification state.
- *
- * @remarks The @a server must not be freed by application.
- * @remarks The @a gatt_handle must not be freed by application.
- *
- * @param[in] notify Indicates whether the Notification/Indication is enabled or not
- * @param[in] server The GATT server handle
- * @param[in] gatt_handle The characteristic's GATT handle to be read
- * @param[in] user_data The user data passed from the registration function
- *
- * @see bt_gatt_server_set_read_value_requested_cb()
- */
-typedef void (*bt_gatt_server_characteristic_notification_state_changed_cb) (bool notify,
-                       bt_gatt_server_h server, bt_gatt_h gatt_handle, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_SERVER_MODULE
- * @brief  Called when the sending notification / indication is done.
- * @since_tizen 3.0
- *
- * @remarks The @a remote_address must not be freed by application.
- * @remarks The @a server must not be freed by application.
- * @remarks The @a characteristic must not be freed by application.
- *
- * @remarks In case of an indication, once a confirmation is received from the remote device this callback will be called. \n
- * This callback will be called several times if there are two or more remote devices which enable a Client Characteristic Configuration Descriptor(CCCD). \n
- * For the last remote device, @a completed will be set as true.
- *
- * @param[in] result The result of a sending operation
- * @param[in] remote_address The address of the remote device
- * @param[in] server The GATT server handle
- * @param[in] characteristic The characteristic's GATT handle
- * @param[in] completed If this callback is for the last remote device which enables a CCCD, it will be true. Or it will be false.
- * @param[in] user_data The user data passed from the requesting function
- *
- * @see bt_gatt_server_notify_characteristic_changed_value()
- */
-typedef void (*bt_gatt_server_notification_sent_cb) (int result,
-               const char *remote_address, bt_gatt_server_h server,
-               bt_gatt_h characteristic, bool completed, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 2.3.1
- *
- * @param[in] connected  Indicates whether a client is connected or disconnected
- * @param[in] remote_address  The remote address
- * @param[in] interface_name  The interface name. For example, bnep0, bnep1.
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_nap_set_connection_state_changed_cb()
- * @see bt_nap_unset_connection_state_changed_cb()
- */
-typedef void (*bt_nap_connection_state_changed_cb) (bool connected, const char *remote_address, const char *interface_name, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 2.3.1
- *
- * @details  This callback is called when the connection state is changed.
- * When you call bt_panu_connect() or bt_panu_disconnect(), this callback is also called with error result even though these functions fail.
- * @param[in] result  The result of changing the connection state
- * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
- * @param[in] remote_address  The remote address
- * @param[in] type  The type of PAN service
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_nap_set_connection_state_changed_cb()
- * @see bt_nap_unset_connection_state_changed_cb()
- */
-typedef void (*bt_panu_connection_state_changed_cb) (int result, bool connected, const char *remote_address, bt_panu_service_type_e type, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Enumerations of the Bluetooth HID mouse's button.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_HID_MOUSE_BUTTON_NONE = 0x00, /**<The mouse's none value*/
-       BT_HID_MOUSE_BUTTON_LEFT = 0x01, /**<The mouse's left button value*/
-       BT_HID_MOUSE_BUTTON_RIGHT = 0x02,  /**<The mouse's right button value*/
-       BT_HID_MOUSE_BUTTON_MIDDLE = 0x04 /**<The mouse's middle button value*/
-} bt_hid_mouse_button_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief The structure type containing the HID mouse event information.
- * @since_tizen 3.0
- *
- * @see bt_hid_device_send_mouse_event()
- */
-typedef struct {
-       int buttons; /**< The button values, we can combine key's values when we pressed multiple mouse buttons*/
-       int axis_x; /**< The location's x value, -128 ~127 */
-       int axis_y; /**< The location's y value, -128 ~127 */
-       int padding; /**< The padding value, -128 ~127 */
-} bt_hid_mouse_data_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief The structure type containing the HID keyboard event information.
- * @since_tizen 3.0
- * @details If you want to know more detail values, refer to http://www.usb.org/developers/hidpage/ and see "HID Usage Tables"
- *
- * @see bt_hid_device_send_key_event()
- */
-typedef struct {
-       unsigned char modifier; /**< The modifier keys : such as shift, alt */
-       unsigned char key[8]; /**< The key value - currently pressed keys : Max 8 at once */
-} bt_hid_key_data_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Enumerations of the Bluetooth HID header type.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_HID_HEADER_HANDSHAKE, /**< The Bluetooth HID header type: Handshake */
-       BT_HID_HEADER_HID_CONTROL, /**< The Bluetooth HID header type: HID control */
-       BT_HID_HEADER_GET_REPORT, /**< The Bluetooth HID header type: Get report */
-       BT_HID_HEADER_SET_REPORT, /**< The Bluetooth HID header type: Set report */
-       BT_HID_HEADER_GET_PROTOCOL, /**< The Bluetooth HID header type: Get protocol */
-       BT_HID_HEADER_SET_PROTOCOL, /**< The Bluetooth HID header type: Set protocol */
-       BT_HID_HEADER_DATA, /**< The Bluetooth HID header type: Data */
-       BT_HID_HEADER_UNKNOWN /**< The Bluetooth HID header type: Unknown */
-} bt_hid_header_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Enumerations of the Bluetooth HID parameter type.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_HID_PARAM_DATA_RTYPE_INPUT, /**< Parameter type: Input */
-       BT_HID_PARAM_DATA_RTYPE_OUTPUT /**< Parameter type: Output */
-} bt_hid_param_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief Enumerations of the Bluetooth HID handshake type.
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_HID_HANDSHAKE_SUCCESSFUL = 0x00, /**< Handshake error code none */
-       BT_HID_HANDSHAKE_NOT_READY, /**< Handshake error code Not Ready */
-       BT_HID_HANDSHAKE_ERR_INVALID_REPORT_ID, /**< Handshake error code send invalid report id */
-       BT_HID_HANDSHAKE_ERR_UNSUPPORTED_REQUEST, /**< Handshake error code request unsupported request */
-       BT_HID_HANDSHAKE_ERR_INVALID_PARAMETER, /**< Handshake error code received invalid parameter */
-       BT_HID_HANDSHAKE_ERR_UNKNOWN = 0x0e, /**< unknown error */
-       BT_HID_HANDSHAKE_ERR_FATAL /**< Fatal error */
-} bt_hid_handshake_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief The structure type containing data received from the HID Host.
- * @since_tizen 3.0
- */
-typedef struct {
-       const char *address;  /**< The remote device's address  */
-       bt_hid_header_type_e header_type;  /**< The header type */
-       bt_hid_param_type_e param_type;  /**< The parameter type */
-       int data_size;  /**< The length of the received data */
-       const char *data;     /**< The received data */
-} bt_hid_device_received_data_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief  Called when the Bluetooth HID Device connection state changes.
- * @details The following error codes can be delivered: \n
- *             #BT_ERROR_NONE \n
- *             #BT_ERROR_OPERATION_FAILED \n
- * @since_tizen 3.0
- *
- * @param[in]   result  The result of changing the connection state.
- * @param[in]   connected  The requested state. @a true means the connection is enabled, @false means the connection is disabled.
- * @param[in]   remote_address  The remote device's address
- * @param[in]   user_data  The user data passed from the callback registration function
- * @see bt_hid_device_activate()
- */
-typedef void (*bt_hid_device_connection_state_changed_cb) (int result,
-       bool connected, const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE
- * @brief  Called when the HID Device receives data from the HID Host.
- * @details The following error codes can be delivered: \n
- *             #BT_ERROR_NONE \n
- *             #BT_ERROR_OPERATION_FAILED \n
- * @since_tizen 3.0
- *
- * @param[in]   data  The data received from the HID Host.
- * @param[in]   user_data  The user data passed from the callback registration function
- * @see bt_hid_device_set_data_received_cb()
- */
-typedef void (*bt_hid_device_data_received_cb)(const bt_hid_device_received_data_s *data, void *user_data);
-/* HID device related type */
-
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief The structure type containing vCard information.
- * @since_tizen 3.0
- *
- * @see bt_pbap_client_pull_vcard()
- */
-typedef struct {
-       int index;                                      /**< The vcard index, used as a parameter for bt_pbap_client_pull_vcard() */
-       const char *contact_name;       /**< The contact name of the vCard */
-} bt_pbap_vcard_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief  Called when PBAP is Connected or Disconnected.
- * @details The following error codes can be delivered: \n
- *             #BT_ERROR_NONE \n
- *             #BT_ERROR_OPERATION_FAILED \n
- * @since_tizen 3.0
- *
- * @param[in] result The result of connecting to or disconnecting from the remote device
- * @param[in] connected The PBAP connection status (@c true = connected, @c false = disconnected)
- * @param[in] remote_address The remote device address (@a remote_address is valid only inside this function. To use outside the callback, make a copy. @a remote_address should not be freed.)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_pbap_client_connect()
- * @see bt_pbap_client_disconnect()
- */
-typedef void (*bt_pbap_connection_state_changed_cb)(int result, bool connected,
-               const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief  Called when PBAP Phonebook size calculation completes.
- * @details The following error codes can be delivered: \n
- *             #BT_ERROR_NONE \n
- *             #BT_ERROR_OPERATION_FAILED \n
- * @since_tizen 3.0
- *
- * @param[in] result The result of getting the phone book size
- * @param[in] remote_address The remote device address (@a remote_address is valid only inside this function. To use outside the callback, make a copy. @a remote_address should not be freed.)
- * @param[in] size Size of Phonebook
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_pbap_client_get_phone_book_size()
- * @see bt_pbap_client_connect()
- * @see bt_pbap_client_disconnect()
- */
-typedef void (*bt_pbap_phone_book_size_cb)(int result, const char *remote_address,
-               int size, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief  Called when PBAP Phonebook Pull completes.
- * @details The received phone book file will be saved in the platform downloads folder. \n
- *              The following error codes can be delivered: \n
- *             #BT_ERROR_NONE \n
- *             #BT_ERROR_OPERATION_FAILED \n
- * @since_tizen 3.0
- *
- * @param[in] result The result of getting the phone book
- * @param[in] remote_address The remote device address (@a remote_address is valid only inside this function. To use outside the callback, make a copy. @a remote_address should not be freed.)
- * @param[in] vcf_file The absolute path of the file in which the vCards are saved (@a vcf_file is valid only inside this function. To use outside the callback, make a copy. @a vcf_file should not be freed.)
- * @param[in] successful true if the operation was successful, false if not
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_pbap_client_get_phone_book()
- * @see bt_pbap_client_connect()
- * @see bt_pbap_client_disconnect()
- */
-typedef void (*bt_pbap_phone_book_received_cb)(int result, const char *remote_address,
-               const char *vcf_file, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE
- * @brief  Called when PBAP List vCards completes.
- * @details The following error codes can be delivered: \n
- *             #BT_ERROR_NONE \n
- *             #BT_ERROR_OPERATION_FAILED \n
- * @since_tizen 3.0
- *
- * @param[in] result The result of getting the vcard list
- * @param[in] remote_address The remote device address (@a remote_address is valid only inside this function. To use outside the callback, make a copy. @a remote_address should not be freed.)
- * @param[in] vcard_info List of vcard information (@a vcard_info is valid only inside this function. To use outside the callback, make a copy. @a vcard_info should not be freed.)
- * @param[in] count Number of contacts in the list
- * @param[in] successful true if the operation was successful, false if not
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_pbap_client_get_list()
- * @see bt_pbap_client_connect()
- * @see bt_pbap_client_disconnect()
- */
-typedef void (*bt_pbap_list_vcards_cb)(int result, const char *remote_address,
-               const bt_pbap_vcard_info_s *vcard_info, int count, void *user_data);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_NETWORK_BLUETOOTH_TYPE_H__ */
diff --git a/include/wearable/bluetooth_type_extension.h b/include/wearable/bluetooth_type_extension.h
deleted file mode 100644 (file)
index 5e89266..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __TIZEN_NETWORK_BLUETOOTH_TYPE_EXTENSION_H__
-#define __TIZEN_NETWORK_BLUETOOTH_TYPE_EXTENSION_H__
-
- #ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/**
- * @file bluetooth_type_extension.h
- */
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when the SCO(Synchronous Connection Oriented link) state is changed.
- * @since_tizen 2.3.1
- *
- * @details  This callback is called when the SCO state is changed.
- * When you call bt_ag_open_sco() or bt_ag_close_sco(), this callback is also called with error result even though these functions failed.
- * @param[in] result  The result of changing the connection state
- * @param[in] opened  The state to be changed: (@c true = opened, @c  false = not opened)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_sco_state_changed_cb()
- * @see bt_ag_unset_sco_state_changed_cb()
- * @see bt_ag_open_sco()
- * @see bt_ag_close_sco()
- */
-typedef void (*bt_ag_sco_state_changed_cb) (int result, bool opened, void *user_data);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_NETWORK_BLUETOOTH_TYPE_EXTENSION_H__ */
diff --git a/include/wearable/bluetooth_type_internal.h b/include/wearable/bluetooth_type_internal.h
deleted file mode 100644 (file)
index d1657bc..0000000
+++ /dev/null
@@ -1,589 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __TIZEN_NETWORK_BLUETOOTH_TYPE_INTERNAL_H__
-#define __TIZEN_NETWORK_BLUETOOTH_TYPE_INTERNAL_H__
-
-#include <glib.h>
-
- #ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/**
- * @file bluetooth_type_internal.h
- */
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth adapter le state.
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_ADAPTER_LE_DISABLED = 0x00, /**< Bluetooth le is disabled */
-       BT_ADAPTER_LE_ENABLED, /**< Bluetooth le is enabled */
-} bt_adapter_le_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Called when the Bluetooth adapter le state changes.
- * @since_tizen 2.3.1
- *
- * @param[in]   result  The result of the adapter state changing
- * @param[in]   adapter_le_state  The adapter le state to be changed
- * @param[in]   user_data  The user data passed from the callback registration function
- * @pre Either bt_adapter_le_enable() or bt_adapter_le_disable() will invoke this callback if you register this callback using bt_adapter_le_set_state_changed_cb().
- * @see bt_adapter_le_enable()
- * @see bt_adapter_le_disable()
- * @see bt_adapter_le_set_state_changed_cb()
- * @see bt_adapter_le_unset_state_changed_cb()
- */
-typedef void (*bt_adapter_le_state_changed_cb)(int result, bt_adapter_le_state_e adapter_le_state, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Enumerations for the call state
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_AG_CALL_EVENT_IDLE = 0x00,  /**< Idle */
-       BT_AG_CALL_EVENT_ANSWERED,  /**< Answered */
-       BT_AG_CALL_EVENT_HELD,  /**< Held */
-       BT_AG_CALL_EVENT_RETRIEVED,  /**< Retrieved */
-       BT_AG_CALL_EVENT_DIALING,  /**< Dialing */
-       BT_AG_CALL_EVENT_ALERTING,  /**< Alerting */
-       BT_AG_CALL_EVENT_INCOMING,  /**< Incoming */
-} bt_ag_call_event_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Enumerations for the call state
- * @since_tizen 2.3.1
- */
-typedef enum {
-       BT_AG_CALL_STATE_IDLE = 0x00,  /**< Idle state */
-       BT_AG_CALL_STATE_ACTIVE,  /**< Active state */
-       BT_AG_CALL_STATE_HELD,  /**< Held state */
-       BT_AG_CALL_STATE_DIALING,  /**< Dialing state */
-       BT_AG_CALL_STATE_ALERTING,  /**< Alerting state */
-       BT_AG_CALL_STATE_INCOMING,  /**< Incoming state */
-       BT_AG_CALL_STATE_WAITING,  /**< Waiting for connected indication event after answering an incoming call*/
-} bt_ag_call_state_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_MODULE
- * @brief  Enumerations for the transfer type
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_TRANSFER_INBOUND,        /**< Inbound Transfer Type */
-       BT_TRANSFER_OUTBOUND,       /**< Outbound Transfer Type */
-} bt_opp_transfer_type_t;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
- * @brief  Enumerations of the Bluetooth A2DP role.
- * @since_tizen 4.0
- */
-typedef enum {
-       BT_A2DP_SOURCE,
-       BT_A2DP_SINK,
-} bt_audio_role_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when the connectable state changes.
- * @since_tizen 2.3.1
- *
- * @param[in] result The result of the connectable state changing
- * @param[in] connectable The connectable to be changed
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @pre This function will be invoked when the connectable state of local Bluetooth adapter changes
- * if you register this callback using bt_adapter_set_connectable_changed_cb().
- *
- * @see bt_adapter_set_connectable()
- * @see bt_adapter_set_connectable_changed_cb()
- * @see bt_adapter_unset_connectable_changed_cb()
- */
-typedef void (*bt_adapter_connectable_changed_cb)
-       (int result, bool connectable, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
- * @brief  Called when the push is requested.
- * @since_tizen 2.3.1
- *
- * @details You must call bt_opp_server_accept() if you want to accept.
- * Otherwise, you must call bt_opp_server_reject().
- * @param[in] file  The path of file to be pushed
- * @param[in] size The file size (bytes)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_opp_server_initialize()
- */
-typedef void (*bt_opp_server_push_requested_cb)(const char *file, int size, void *user_data);
-
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief  Enumerations of the Bluetooth adapter le scan type.
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_ADAPTER_LE_PASSIVE_SCAN = 0x00,
-       BT_ADAPTER_LE_ACTIVE_SCAN
-} bt_adapter_le_scan_type_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Enumerations for the call handling event
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_HF_CALL_HANDLING_EVENT_ANSWER = 0x00,  /**< Request to answer an incoming call */
-       BT_HF_CALL_HANDLING_EVENT_RELEASE,  /**< Request to release a call */
-       BT_HF_CALL_HANDLING_EVENT_REJECT,  /**< Request to reject an incoming call */
-       BT_HF_CALL_HANDLING_EVENT_RING,  /**< Request of ringing call */
-       BT_HF_CALL_HANDLING_EVENT_CALL_STARTED,  /**< Request of Call started */
-       BT_HF_CALL_HANDLING_EVENT_CALL_ENDED,  /**< Request of Call Ended */
-       BT_HF_CALL_HANDLING_EVENT_VOICE_RECOGNITION_ENABLED,  /**< Request of voice recognition enabled */
-       BT_HF_CALL_HANDLING_EVENT_VOICE_RECOGNITION_DISABLED,  /**< Request of voice recognition disabled */
-       BT_HF_CALL_HANDLING_EVENT_VENDOR_DEP_CMD,  /**< Request of Vendor command */
-       BT_HF_CALL_HANDLING_EVENT_WAITING,  /**< Request to waiting a call */
-       BT_HF_CALL_HANDLING_EVENT_HELD,  /**< Request to hold a call */
-       BT_HF_CALL_HANDLING_EVENT_UNHELD,  /**< Request to unhold calls */
-       BT_HF_CALL_HANDLING_EVENT_SWAPPED,  /**< Request to swap calls */
-} bt_hf_call_handling_event_e;
-
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Enumerations for the multi call handling event
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_HF_MULTI_CALL_HANDLING_EVENT_RELEASE_HELD_CALLS = 0x00,  /**< Request to release held calls */
-       BT_HF_MULTI_CALL_HANDLING_EVENT_RELEASE_ACTIVE_CALLS,  /**< Request to release active calls */
-       BT_HF_MULTI_CALL_HANDLING_EVENT_ACTIVATE_HELD_CALL,  /**< Request to put active calls into hold state and activate another (held or waiting) call */
-       BT_HF_MULTI_CALL_HANDLING_EVENT_MERGE_CALLS,  /**< Request to add a held call to the conversation */
-       BT_HF_MULTI_CALL_HANDLING_EVENT_EXPLICIT_CALL_TRANSFER,  /**< Request to let a user who has two calls to connect these two calls together and release its connections to both other parties */
-} bt_hf_multi_call_handling_event_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Enumerations for the call state
- * @since_tizen 2.3
- */
-typedef enum {
-       BT_HF_CALL_EVENT_IDLE = 0x00,  /**< Idle */
-       BT_HF_CALL_EVENT_ANSWER,  /**< Answered */
-       BT_HF_CALL_EVENT_HOLD,  /**< Held */
-       BT_HF_CALL_EVENT_RETRIEVE,  /**< Retrieved */
-       BT_HF_CALL_EVENT_DIAL,  /**< Dialing */
-       BT_HF_CALL_EVENT_ALERT,  /**< Alerting */
-       BT_HF_CALL_EVENT_INCOMING,  /**< Incoming */
-       BT_HF_CALL_EVENT_REDIAL,  /**< Redialling */
-       BT_HF_CALL_EVENT_RELEASE_ALL_NONACTIVE_CALLS,  /**< Release all nonactive calls */
-       BT_HF_CALL_EVENT_ACCEPT_AND_RELEASE,  /**< Accept and Release */
-       BT_HF_CALL_EVENT_ACCEPT_AND_HOLD,  /**< Accept and Hold */
-       BT_HF_CALL_EVENT_ADD_TO_CONVERSATION,  /**< Add to the conversation */
-} bt_hf_call_event_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  HF Call status information.
- * @since_tizen 2.3
- */
-typedef struct {
-       char *number;  /**< Phone Number */
-       int direction;  /**< Direction :Incoming(1), Outgoing(0) */
-       int status;  /**< Call Status :Active(0), Held(1), Waiting(5), Dailing(2) */
-       int multi_party;  /**< Multiparty/conf call: Yes(1), No(0) */
-       int index;  /**< Call index/ID */
-} bt_hf_call_status_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called when the manufacturer dat changes.
- * @since_tizen 2.3
- *
- * @param[in]   data           The manufacurer data of the Bluetooth device to be changed
- * @param[in]   len                    The length of @a data
- * @param[in]   user_data      The user data passed from the callback registration function
- * @pre This function will be invoked when the manufacturer data of Bluetooth adapter changes
- * if callback is registered using bt_adapter_set_manufacturer_data_changed_cb().
- * @see bt_adapter_set_manufacturer_data()
- * @see bt_adapter_set_manufacturer_data_changed_cb()
- * @see bt_adapter_unset_manufacturer_data_changed_cb()
- */
-typedef void (*bt_adapter_manufacturer_data_changed_cb) (char *data,
-               int len, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief  Called repeatedly when you get the devices connected with specific profile.
- * @since_tizen 3.0
- *
- * @param[in]   remote_address The address of remote device
- * @param[in]   user_data      The user data passed from the callback registration function
- * @return @c true to continue with the next iteration of the loop,
- * \n @c false to break out of the loop.
- * @pre bt_adapter_foreach_profile_connected_devices() will invoke this function.
- * @see bt_adapter_foreach_profile_connected_devices()
- */
-typedef bool (*bt_adapter_profile_connected_devices_cb)(const char *remote_address, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Called when the SCO(Synchronous Connection Oriented link) state is changed.
- * @since_tizen 2.3
- *
- * @details  This callback is called when the SCO state is changed.
- * When you call bt_ag_open_sco() or bt_ag_close_sco(), this callback is also called with error result even though these functions failed.
- * @param[in] result  The result of changing the connection state
- * @param[in] opened  The state to be changed: (@c true = opened, @c  false = not opened)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_sco_state_changed_cb()
- * @see bt_ag_unset_sco_state_changed_cb()
- * @see bt_ag_open_sco()
- * @see bt_ag_close_sco()
- */
-typedef void (*bt_hf_sco_state_changed_cb) (int result, bool opened, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Called when a call handling event happened from Hands-Free.
- * @since_tizen 2.3
- *
- * @param[in] event  The call handling event happened from Hands-Free
- * @param[in] call_id  The call ID
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_call_handling_event_cb()
- * @see bt_ag_unset_call_handling_event_cb()
- */
-typedef void (*bt_hf_call_handling_event_cb) (bt_hf_call_handling_event_e event, char *phone_number, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Called when a multi call handling event happened from Hands-Free.
- * @since_tizen 2.3
- *
- * @param[in] event  The call handling event happened from Hands-Free
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_multi_call_handling_event_cb()
- * @see bt_ag_unset_multi_call_handling_event_cb()
- */
-typedef void (*bt_hf_multi_call_handling_event_cb) (bt_hf_multi_call_handling_event_e event, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Called when the speaker gain of the remote device is changed.
- * @since_tizen 2.3
- *
- * @param[in] gain The gain of speaker (0 ~ 15)
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_hf_set_speaker_gain_changed_cb()
- * @see bt_hf_unset_speaker_gain_changed_cb()
- */
-typedef void (*bt_hf_speaker_gain_changed_cb) (int gain, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Called when a call status updated event happened from Hands-Free.
- * @since_tizen 2.3
- * @remarks call_info_list has elements which consist of bt_hf_call_status_info_s
- * @remarks The @a call_info_list must be released with bt_hf_free_call_status_info_list() by you.
- *
- * @param[in] event  The call handling event happened from Hands-Free
- * @param[in] call_id  The call ID
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_hf_call_status_info_s
- * @see bt_hf_set_call_status_updated_event_cb()
- * @see bt_hf_unset_call_status_updated_event_cb()
- */
-typedef void (*bt_hf_call_status_updated_event_cb) (GSList *call_info_list, void *user_data);
-
-/**
-* @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
-* @brief DPM BT allowance state
-* @since_tizen 3.0
-*/
-typedef enum {
-       BT_DPM_ERROR      = -1,   /**< bluetooth allowance error */
-       BT_DPM_BT_ALLOWED,        /**< bluetooth allowance allowed */
-       BT_DPM_HANDSFREE_ONLY, /**< bluetooth allowance handsfree only */
-       BT_DPM_BT_RESTRICTED,  /**< bluetooth allowance restricted */
-} bt_dpm_allow_e;
-
-/**
-* @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
-* @brief DPM Policy status
-* @since_tizen 3.0
-*/
-typedef enum {
-       BT_DPM_STATUS_ERROR = -1,
-
-       BT_DPM_ALLOWED   = 0,    /**< DPM Policy status allowed. */
-       BT_DPM_RESTRICTED                = 1,    /**< DPM Policy status restricted. */
-
-       BT_DPM_ENABLE                    = 1,    /**< DPM Policy status enabled. */
-       BT_DPM_DISABLE  = 0,     /**< DPM Policy status disabled. */
-
-       BT_DPM_FALSE             = 0,    /**< DPM Policy status false. */
-       BT_DPM_TRUE             = 1,    /**< DPM Policy status true. */
-} bt_dpm_status_e;
-
-/**
-* @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE
-* @brief DPM Profile states
-* @since_tizen 3.0
-*/
-typedef enum {
-       BT_DPM_POLICY_A2DP_PROFILE_STATE,
-       BT_DPM_POLICY_AVRCP_PROFILE_STATE,
-       BT_DPM_POLICY_BPP_PROFILE_STATE,
-       BT_DPM_POLICY_DUN_PROFILE_STATE,
-       BT_DPM_POLICY_FTP_PROFILE_STATE,
-       BT_DPM_POLICY_HFP_PROFILE_STATE,
-       BT_DPM_POLICY_HSP_PROFILE_STATE,
-       BT_DPM_POLICY_PBAP_PROFILE_STATE,
-       BT_DPM_POLICY_SAP_PROFILE_STATE,
-       BT_DPM_POLICY_SPP_PROFILE_STATE,
-       BT_DPM_PROFILE_NONE,
-} bt_dpm_profile_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief The handle to control Bluetooth LE scan filter
- * @since_tizen 2.4
- */
-typedef void *bt_scan_filter_h;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Device LE connection update structure.
- * @since_tizen 2.3.1
- */
-typedef struct {
-       unsigned int interval_min;   /**< Minimum value for the connection event interval (msec) */
-       unsigned int interval_max;   /**< Maximum value for the connection event interval (msec) */
-       unsigned int latency;   /**< Slave latency (msec) */
-       unsigned int time_out;   /**< Supervision timeout (msec) */
-} bt_le_conn_update_s;
-
-/**
- * Structure to DPM device list
- */
-typedef struct {
-       int count;
-       char **devices;
-} bt_dpm_device_list_s;
-
-/**
- * Structure to DPM uuid list
- */
-typedef struct {
-       int count;
-       char **uuids;
-} bt_dpm_uuids_list_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Trusted Profile enumeration.
- * @since_tizen 3.0
- *
- * @see bt_device_set_profile_trusted()
- * @see bt_device_get_profile_trusted()
- */
-typedef enum {
-       BT_TRUSTED_PROFILE_PBAP = 1,
-       BT_TRUSTED_PROFILE_MAP,
-       BT_TRUSTED_PROFILE_SAP,
-       BT_TRUSTED_PROFILE_ALL = 0xFFFFFFFF,
-} bt_trusted_profile_t;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Restricted Profile enumeration.
- * @since_tizen 3.0
- *
- * @see bt_device_set_profile_restricted()
- * @see bt_device_get_profile_restricted()
- */
-typedef enum {
-       BT_RESTRICTED_PROFILE_HFP_HS = 1,
-       BT_RESTRICTED_PROFILE_A2DP,
-} bt_restricted_profile_t;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Enumerations of the authentication event types.
- * @since_tizen 3.0
- *
- */
-typedef enum {
-       BT_AUTH_KEYBOARD_PASSKEY_DISPLAY = 0, /**< PIN display event to user for entering PIN in keyboard */
-       BT_AUTH_PIN_REQUEST,                  /**< Legacy PIN or PASSKEY request event */
-       BT_AUTH_PASSKEY_CONFIRM_REQUEST,      /**< PASSKEY confirmation event to match PASSKEY in remote device */
-} bt_authentication_type_info_e;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
- * @brief Proximity Profile Role
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_PROXIMITY_REPORTER, /**< Proximity Profile Reporter role. */
-       BT_PROXIMITY_MONITOR, /**< Proximity Profile Monitor role. */
-} bt_proximity_role_t;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_PROXIMITY_MODULE
- * @brief Proximity Profile Role
- * @since_tizen 3.0
- */
-typedef enum {
-       BT_PROXIMITY_LINKLOSS_ALERT = 0x01, /**< Proximity profile Link Loss alert property */
-       BT_PROXIMITY_IMMEDIATE_ALERT = 0x02, /**< Proximity Profile Immediate alert property */
-       BT_PROXIMITY_TX_POWER = 0x04, /**< Proximity Profile Immediate alert property */
-} bt_proximity_property_t;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when Trusted Profiles is changed.
- * @since_tizen 3.0
- *
- * @param[in]   result  The result of supported profile callback
- * @param[in]   remote_address  Address of remote device
- * @param[in]   trusted_profiles  Trusted profile FLAG
- * @param[in]   user_data  The user data passed from the callback registration function
- * @see bt_device_set_trusted_profile_cb()
- * @see bt_device_unset_trusted_profile_cb()
- */
-typedef void (*bt_device_trusted_profiles_cb)
-       (int result, char *remote_address, int trusted_profile, bool supported, bool trusted, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief Attribute protocol MTU change information structure.
- * @since_tizen 3.0
- *
- * @see bt_device_att_mtu_changed_cb()
- */
-typedef struct {
-       char *remote_address;   /**< The address of remote device */
-       unsigned int mtu;               /** < MTU value */
-       unsigned int status;            /** < request status*/
-} bt_device_att_mtu_info_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
- * @brief  Called when the connection state is changed.
- * @since_tizen 3.0
- *
- * @param[in] connected The connection status: (@c true = connected, @c false = disconnected)
- * @param[in] conn_info The connection information
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_device_set_connection_state_changed_cb()
- * @see bt_device_unset_connection_state_changed_cb()
- */
-typedef void (*bt_device_att_mtu_changed_cb)(int result, bt_device_att_mtu_info_s *mtu_info, void *user_data);
-
-/**
- * @internal
- * @brief IPSP Init state changed callback
- */
-typedef void (*bt_ipsp_init_state_changed_cb)
-               (int result, bool ipsp_initialized, void *user_data);
-
-/**
- * @internal
- * @brief IPSP Connection state changed callback
- */
-typedef void (*bt_ipsp_connection_state_changed_cb)
-               (int result, bool connected, const char *remote_address, const char *iface_name, void *user_data);
-
-/**
- * @internal
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
- * @brief Called when remote device requests authentication.
- * @since_tizen 3.0
- * @param[in] result
- * @param[in] auth_type
- *             typedef enum {
- *              BT_AUTH_KEYBOARD_PASSKEY_DISPLAY = 0, : PIN display event to user for entering PIN in keyboard
- *              BT_AUTH_PIN_REQUEST,                  : Legacy PIN or PASSKEY request event
- *              BT_AUTH_PASSKEY_CONFIRM_REQUEST,      : PASSKEY confirmation event to match PASSKEY in remote device
- *             } bt_authentication_type_info_e;
- * @param[in] device_name  Name of the remote device
- * @param[in] remote_addr  Remote BD address
- * @param[in] pass_key     PASSKEY string
- *            PASSKEY string is valid only if authentication types are following
- *             a/ BT_AUTH_KEYBOARD_PASSKEY_DISPLAY
- *             b/ BT_AUTH_PASSKEY_CONFIRM_REQUEST
- *            pass_key string will be invalid if authentication event is of type BT_AUTH_PIN_REQUEST
- *            as this event indicates that user MUST enter PIN or PASSKEY and perform authentication.
- *
- *            Upon receiving BT_AUTH_KEYBOARD_PASSKEY_DISPLAY event, user should enter PASSKEY in keyboard
- *            Application can also call bt_device_cancel_bonding() Upon receiving BT_AUTH_KEYBOARD_PASSKEY_DISPLAY
- *            event which will fail the on-going pairing with remote device.
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_adapter_set_authentication_req_cb()
- */
-typedef void (*bt_adapter_authentication_req_cb)(int result, bt_authentication_type_info_e auth_type,
-                                               char *device_name, char *remote_addr,
-                                               char *pass_key, void *user_data);
-
-/**
- * @brief Proximity profile property changed callback
- */
-typedef void (*bt_proximity_property_changed_cb)
-               (int result, const char *remote_address, int role, int service_type, int prop_value, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_HF_MODULE
- * @brief  Samsung XSAT Vendor dependent command.
- * @since_tizen 2.3.2
- */
-typedef struct {
-        int app_id;  /**< The application ID */
-        char *message;  /**< Command message */
-} bt_hf_vendor_dep_at_cmd_s;
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
- * @brief  Called when a XSAT vendor command is transmitted from Hands-Free.
- * @since_tizen 2.3
- *
- * @param[in] command  The XSAT vendor command transmitted from Hands-Free
- * @param[in] user_data The user data passed from the callback registration function
- * @see bt_ag_set_vendor_cmd_cb()
- * @see bt_ag_unset_vendor_cmd_cb()
- */
-typedef void (*bt_ag_vendor_cmd_cb) (char *command, void *user_data);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __TIZEN_NETWORK_BLUETOOTH_TYPE_INTERNAL_H__ */
index 502fb68a9dc566ce2f16ddf5b4d760a6d0f9b21c..0cb44c19b69d83f076cfaae67375c9bbc10dd57d 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-network-bluetooth
 Summary:    Network Bluetooth Framework
-Version:    0.3.2
+Version:    0.3.4
 Release:    1
 Group:      Connectivity/API
 License:    Apache-2.0
@@ -14,11 +14,9 @@ BuildRequires:  pkgconfig(dbus-glib-1)
 BuildRequires:  pkgconfig(dlog)
 BuildRequires:  pkgconfig(glib-2.0)
 BuildRequires:  pkgconfig(vconf)
-%if "%{?profile}" == "tv"
 BuildRequires:  pkgconfig(db-util)
-%endif
 BuildRequires:  pkgconfig(bluetooth-api)
-BuildRequires:  pkgconfig(capi-appfw-application)
+BuildRequires:  pkgconfig(capi-appfw-app-control)
 BuildRequires:  pkgconfig(capi-base-common)
 BuildRequires:  pkgconfig(capi-system-info)
 BuildRequires:  cmake
@@ -50,27 +48,9 @@ cp %{SOURCE1001} %{SOURCE1002} .
 
 %build
 
-%if "%{?profile}" == "wearable"
-export CFLAGS="$CFLAGS -DTIZEN_PROFILE_WEARABLE"
-export CXXFLAGS="$CXXFLAGS -DTIZEN_PROFILE_WEARABLE"
-export FFLAGS="$FFLAGS -DTIZEN_PROFILE_WEARABLE"
-%endif
-
-%if "%{?profile}" == "mobile"
-export CFLAGS="$CFLAGS -DTIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT"
-export CXXFLAGS="$CXXFLAGS -DTIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT"
-export FFLAGS="$FFLAGS -DTIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT"
-%endif
-
-%if "%{?profile}" == "ivi"
-export CFLAGS="$CFLAGS -DTIZEN_PROFILE_IVI"
-export CXXFLAGS="$CXXFLAGS -DTIZEN_PROFILE_IVI"
-export FFLAGS="$FFLAGS -DTIZEN_PROFILE_IVI"
-%endif
-
-export CFLAGS="$CFLAGS -DTIZEN_FEATURE_AUDIO_HF_DISABLE -DTIZEN_FEATURE_IPSP_SUPPORT"
-export CXXFLAGS="$CXXFLAGS -DTIZEN_FEATURE_AUDIO_HF_DISABLE -DTIZEN_FEATURE_IPSP_SUPPORT"
-export FFLAGS="$FFLAGS -DTIZEN_FEATURE_AUDIO_HF_DISABLE -DTIZEN_FEATURE_IPSP_SUPPORT"
+export CFLAGS="$CFLAGS -DTIZEN_FEATURE_AUDIO_HF_DISABLE -DTIZEN_FEATURE_OTP_SUPPORT"
+export CXXFLAGS="$CXXFLAGS -DTIZEN_FEATURE_AUDIO_HF_DISABLE -DTIZEN_FEATURE_OTP_SUPPORT"
+export FFLAGS="$FFLAGS -DTIZEN_FEATURE_AUDIO_HF_DISABLE -DTIZEN_FEATURE_OTP_SUPPORT"
 
 %ifarch aarch64
 echo arch64
@@ -86,24 +66,7 @@ export CXXFLAGS+=" -DARCH64"
 export FFLAGS+=" -DARCH64"
 %endif
 
-%cmake \
-%if "%{?profile}" == "wearable"
-       -DTIZEN_PROFILE_WEARABLE=YES \
-%else
-%if "%{?profile}" == "tv"
-       -DTIZEN_PROFILE_TV=YES \
-%else
-%if "%{?profile}" == "mobile"
-       -DTIZEN_PROFILE_WEARABLE=NO \
-       -DTIZEN_PROFILE_MOBILE=YES \
-%else
-%if "%{?profile}" == "ivi"
-       -DTIZEN_PROFILE_WEARABLE=NO \
-       -DTIZEN_PROFILE_IVI=YES \
-%endif
-%endif
-%endif
-%endif
+%cmake
 
 MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
 %cmake . -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
@@ -113,9 +76,6 @@ make %{?jobs:-j%jobs}
 %install
 rm -rf %{buildroot}
 %make_install
-install -D -m 0644 LICENSE %{buildroot}%{_datadir}/license/capi-network-bluetooth
-install -D -m 0644 LICENSE %{buildroot}%{_datadir}/license/capi-network-bluetooth-devel
-
 
 %post -p /sbin/ldconfig
 
@@ -123,16 +83,12 @@ install -D -m 0644 LICENSE %{buildroot}%{_datadir}/license/capi-network-bluetoot
 
 %files
 %manifest %{name}.manifest
-#%license LICENSE.APLv2 LICENSE
+%license LICENSE
 %{_libdir}/libcapi-network-bluetooth.so.*
-%{_datadir}/license/capi-network-bluetooth
-%{_datadir}/license/capi-network-bluetooth-devel
 
 %files test
 %manifest %{name}.manifest
-%if "%{?profile}" != "tv"
 %{_bindir}/bt_unit_test
-%endif
 #%{_bindir}/bt_onoff
 #/etc/smack/accesses.d/capi-network-bluetooth-test.efl
 
@@ -148,5 +104,3 @@ install -D -m 0644 LICENSE %{buildroot}%{_datadir}/license/capi-network-bluetoot
 %{_libdir}/pkgconfig/capi-network-bluetooth.pc
 %{_libdir}/libcapi-network-bluetooth.so
 
-#%{_datadir}/license/capi-network-bluetooth-devel
-
index 72f515ed083cd46d8a78169202d4e39f3f933c6f..ce9fc4e7aae1d398e92ca707d6a9374e5e32bbd1 100644 (file)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_LE); \
 }
 
+static bt_scan_filter_h pxp_linkloss_alert_filter;
+static bt_scan_filter_h pxp_immediate_alert_filter;
+static bt_scan_filter_h pxp_signal_loss_filter;
+
 static GSList *advertiser_list = NULL;
 
 /* LCOV_EXCL_START */
@@ -156,14 +160,14 @@ int bt_adapter_get_address(char **address)
 
        error_code = _bt_get_error_code(bluetooth_get_local_address(&loc_address));
        if (error_code != BT_ERROR_NONE) { /* LCOV_EXCL_LINE */
-               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code),
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), /* LCOV_EXCL_LINE */
                                        error_code); /* LCOV_EXCL_LINE */
                return error_code; /* LCOV_EXCL_LINE */
        }
 
        error_code = _bt_convert_address_to_string(address, &loc_address);
        if (error_code != BT_ERROR_NONE) { /* LCOV_EXCL_LINE */
-               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code),
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), /* LCOV_EXCL_LINE */
                                        error_code); /* LCOV_EXCL_LINE */
                return error_code; /* LCOV_EXCL_LINE */
        }
@@ -437,14 +441,14 @@ int bt_adapter_get_name(char **name)
 
        ret = _bt_get_error_code(bluetooth_get_local_name(&loc_name));
        if (ret != BT_ERROR_NONE) { /* LCOV_EXCL_LINE */
-               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret),
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), /* LCOV_EXCL_LINE */
                                                ret); /* LCOV_EXCL_LINE */
                return ret; /* LCOV_EXCL_LINE */
        }
 
        *name = strdup(loc_name.name);
        if (*name == NULL) {
-               BT_ERR("OUT_OF_MEMORY(0x%08x)",
+               BT_ERR("OUT_OF_MEMORY(0x%08x)", /* LCOV_EXCL_LINE */
                                BT_ERROR_OUT_OF_MEMORY); /* LCOV_EXCL_LINE */
                return BT_ERROR_OUT_OF_MEMORY;
        }
@@ -466,7 +470,7 @@ int bt_adapter_set_name(const char *name)
 
        ret = _bt_get_error_code(bluetooth_set_local_name(&loc_name));
        if (ret != BT_ERROR_NONE) { /* LCOV_EXCL_LINE */
-               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret),
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), /* LCOV_EXCL_LINE */
                                                ret); /* LCOV_EXCL_LINE */
        } /* LCOV_EXCL_LINE */
 
@@ -546,18 +550,11 @@ int bt_adapter_set_visibility(bt_adapter_visibility_mode_e visibility_mode,
 int bt_adapter_set_connectable_changed_cb(bt_adapter_connectable_changed_cb callback,
                                                        void *user_data)
 {
-       int ret = BT_ERROR_NONE;
-
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(callback);
        _bt_set_cb(BT_EVENT_CONNECTABLE_CHANGED_EVENT, callback, user_data);
-       if (ret != BT_ERROR_NONE) { /* LCOV_EXCL_LINE */
-               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret),
-                                               ret); /* LCOV_EXCL_LINE */
-       } /* LCOV_EXCL_LINE */
-
-       return ret;
+       return BT_ERROR_NONE;
 }
 
 int bt_adapter_unset_connectable_changed_cb(void)
@@ -620,14 +617,14 @@ int bt_adapter_foreach_bonded_device(bt_adapter_bonded_device_cb foreach_cb,
 
        dev_list = g_ptr_array_new();
        if (dev_list == NULL) {
-               BT_ERR("OUT_OF_MEMORY(0x%08x)",
+               BT_ERR("OUT_OF_MEMORY(0x%08x)", /* LCOV_EXCL_LINE */
                                BT_ERROR_OUT_OF_MEMORY); /* LCOV_EXCL_LINE */
                return BT_ERROR_OUT_OF_MEMORY;
        }
 
        ret = _bt_get_error_code(bluetooth_get_bonded_device_list(&dev_list));
        if (ret != BT_ERROR_NONE) {
-               BT_ERR("%s(0x%08x) : Failed to get bonded device list",
+               BT_ERR("%s(0x%08x) : Failed to get bonded device list", /* LCOV_EXCL_LINE */
                _bt_convert_error_to_string(ret), ret); /* LCOV_EXCL_LINE */
                return ret;
        }
@@ -638,7 +635,7 @@ int bt_adapter_foreach_bonded_device(bt_adapter_bonded_device_cb foreach_cb,
                        ret = _bt_get_bt_device_info_s(&dev_info,
                                        (bluetooth_device_info_t *)ptr);
                        if (ret != BT_ERROR_NONE) {
-                               BT_ERR("%s(0x%08x) : Failed to get device info",
+                               BT_ERR("%s(0x%08x) : Failed to get device info", /* LCOV_EXCL_LINE */
                                        _bt_convert_error_to_string(ret),
                                        ret); /* LCOV_EXCL_LINE */
                                break;
@@ -650,7 +647,7 @@ int bt_adapter_foreach_bonded_device(bt_adapter_bonded_device_cb foreach_cb,
                        }
                        _bt_free_bt_device_info_s(dev_info); /* LCOV_EXCL_LINE */
                } else {
-                       BT_ERR("OPERATION_FAILED(0x%08x)",
+                       BT_ERR("OPERATION_FAILED(0x%08x)", /* LCOV_EXCL_LINE */
                        BT_ERROR_OPERATION_FAILED); /* LCOV_EXCL_LINE */
                        ret = BT_ERROR_OPERATION_FAILED;
                        break;
@@ -728,6 +725,7 @@ int bt_adapter_is_service_used(const char *service_uuid, bool *used)
                                        &is_used));
                *used = is_used ? true : false; /* LCOV_EXCL_LINE */
        }
+       /* TODO: MAP? see above */
 
        if (ret != BT_ERROR_NONE) { /* LCOV_EXCL_LINE */
                BT_ERR("%s(0x%08x) : Failed to run function",
@@ -738,6 +736,7 @@ int bt_adapter_is_service_used(const char *service_uuid, bool *used)
        return ret;
 }
 
+/* LCOV_EXCL_START */
 int bt_adapter_foreach_profile_connected_devices(const char *profile_uuid,
        bt_adapter_profile_connected_devices_cb callback, void *user_data)
 {
@@ -799,24 +798,19 @@ int bt_adapter_foreach_profile_connected_devices(const char *profile_uuid,
        g_ptr_array_free(addr_list, TRUE);
 
        return ret;
-}
+} /* LCOV_EXCL_STOP */
 
 int bt_adapter_set_state_changed_cb(bt_adapter_state_changed_cb callback,
                                                        void *user_data)
 {
        BT_DBG("");
-       int ret = BT_ERROR_NONE;
-
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(callback);
+
        _bt_set_cb(BT_EVENT_STATE_CHANGED, callback, user_data);
-       if (ret != BT_ERROR_NONE) { /* LCOV_EXCL_LINE */
-               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret),
-                                       ret); /* LCOV_EXCL_LINE */
-       } /* LCOV_EXCL_LINE */
 
-       return ret;
+       return BT_ERROR_NONE;
 }
 
 /* LCOV_EXCL_START */
@@ -836,56 +830,39 @@ int bt_adapter_le_set_state_changed_cb(bt_adapter_le_state_changed_cb callback,
 int bt_adapter_set_name_changed_cb(bt_adapter_name_changed_cb callback,
                                                        void *user_data)
 {
-       int ret = BT_ERROR_NONE;
-
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(callback);
+
        _bt_set_cb(BT_EVENT_NAME_CHANGED, callback, user_data);
-       if (ret != BT_ERROR_NONE) { /* LCOV_EXCL_LINE */
-               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret),
-                                               ret); /* LCOV_EXCL_LINE */
-       } /* LCOV_EXCL_LINE */
 
-       return ret;
+       return BT_ERROR_NONE;
 }
 
 int bt_adapter_set_visibility_mode_changed_cb(bt_adapter_visibility_mode_changed_cb callback,
                                                        void *user_data)
 {
-       int ret = BT_ERROR_NONE;
-
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(callback);
+
        _bt_set_cb(BT_EVENT_VISIBILITY_MODE_CHANGED, callback, user_data);
-       if (ret != BT_ERROR_NONE) { /* LCOV_EXCL_LINE */
-               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret),
-                                               ret); /* LCOV_EXCL_LINE */
-       } /* LCOV_EXCL_LINE */
 
-       return ret;
+       return BT_ERROR_NONE;
 }
 
 int bt_adapter_set_device_discovery_state_changed_cb(bt_adapter_device_discovery_state_changed_cb callback,
                                                        void *user_data)
 {
-       int ret = BT_ERROR_NONE;
-
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(callback);
-       _bt_set_cb(BT_EVENT_DEVICE_DISCOVERY_STATE_CHANGED,
-                                       callback, user_data);
-       if (ret != BT_ERROR_NONE) { /* LCOV_EXCL_LINE */
-               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret),
-                                               ret); /* LCOV_EXCL_LINE */
-       } /* LCOV_EXCL_LINE */
 
-       return ret;
+       _bt_set_cb(BT_EVENT_DEVICE_DISCOVERY_STATE_CHANGED, callback, user_data);
+
+       return BT_ERROR_NONE;
 }
 
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
 int bt_adapter_le_set_device_discovery_state_changed_cb(bt_adapter_le_device_discovery_state_changed_cb callback,
                                                        void *user_data)
 {
@@ -900,7 +877,6 @@ int bt_adapter_le_set_device_discovery_state_changed_cb(bt_adapter_le_device_dis
                                                callback, user_data);
        return BT_ERROR_NONE;
 }
-#endif
 
 int bt_adapter_unset_state_changed_cb(void)
 {
@@ -940,18 +916,13 @@ int bt_adapter_unset_visibility_mode_changed_cb(void)
 int bt_adapter_set_visibility_duration_changed_cb(bt_adapter_visibility_duration_changed_cb callback,
                                                        void *user_data)
 {
-       int ret = BT_ERROR_NONE;
-
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(callback);
+
        _bt_set_cb(BT_EVENT_VISIBILITY_DURATION_CHANGED, callback, user_data);
-       if (ret != BT_ERROR_NONE) { /* LCOV_EXCL_LINE */
-               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret),
-                                               ret); /* LCOV_EXCL_LINE */
-       } /* LCOV_EXCL_LINE */
 
-       return ret;
+       return BT_ERROR_NONE;
 }
 
 int bt_adapter_unset_visibility_duration_changed_cb(void)
@@ -970,7 +941,6 @@ int bt_adapter_unset_device_discovery_state_changed_cb(void)
        return BT_ERROR_NONE;
 }
 
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
 int bt_adapter_le_unset_device_discovery_state_changed_cb(void)
 {
        BT_INFO("DEPRECATION WARNING: bt_adapter_le_unset_device_discovery_state_changed_cb() is deprecated and will be removed from next release.");
@@ -981,7 +951,6 @@ int bt_adapter_le_unset_device_discovery_state_changed_cb(void)
        _bt_le_adapter_deinit();
        return BT_ERROR_NONE;
 }
-#endif
 
 int bt_adapter_start_device_discovery(void)
 {
@@ -1032,7 +1001,6 @@ int bt_adapter_is_discovering(bool *is_discovering)
        }
 }
 
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
 int bt_adapter_le_start_device_discovery(void)
 {
        int error_code = BT_ERROR_NONE;
@@ -1083,7 +1051,6 @@ int bt_adapter_le_is_discovering(bool *is_discovering)
                return ret; /* LCOV_EXCL_LINE */
        }
 }
-#endif
 
 int bt_adapter_get_local_oob_data(unsigned char **hash,
                                        unsigned char **randomizer,
@@ -1144,6 +1111,7 @@ int bt_adapter_set_remote_oob_data(const char *remote_address,
        }
 
        ret = _bt_get_error_code(bluetooth_oob_add_remote_data(&addr_hex,
+                                       BLUETOOTH_BDADDR_BREDR,
                                        &oob_data)); /* LCOV_EXCL_STOP */
        if (BT_ERROR_NONE != ret) { /* LCOV_EXCL_LINE */
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret),
@@ -1219,6 +1187,7 @@ int bt_adapter_set_remote_oob_ext_data(const char *remote_address,
        BT_CHECK_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(remote_address);
 
+       /* LCOV_EXCL_START */
        if ((!hash192 || !randomizer192) && (!hash256 || !randomizer256))
                return BT_ERROR_INVALID_PARAMETER;
 
@@ -1248,12 +1217,57 @@ int bt_adapter_set_remote_oob_ext_data(const char *remote_address,
                oob_data.randomizer256_len = len;
        }
 
-       ret = _bt_get_error_code(bluetooth_oob_add_remote_data(&addr_hex, &oob_data));
+       ret = _bt_get_error_code(bluetooth_oob_add_remote_data(&addr_hex,
+                               BLUETOOTH_BDADDR_BREDR, &oob_data));
+       if (BT_ERROR_NONE != ret)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+
+       return ret;
+}
+
+int bt_adapter_le_set_remote_oob_ext_data(const char *remote_address,
+               bt_device_address_type_e address_type,
+               const unsigned char *hash256, const unsigned char *randomizer256,
+               int hash256_len, int randomizer256_len)
+{
+       int ret = BT_ERROR_NONE;
+       bluetooth_device_address_t addr_hex = { {0,} };
+       bt_oob_data_t oob_data = { {0},};
+       bluetooth_bdaddr_type_e addr_type = BLUETOOTH_BDADDR_LE_PUBLIC;
+       int len;
+
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(remote_address);
+
+       if (!hash256 || !randomizer256)
+               return BT_ERROR_INVALID_PARAMETER;
+
+       _bt_convert_address_to_hex(&addr_hex, remote_address);
+
+       if (hash256 && randomizer256) {
+               len = hash256_len < BLUETOOTH_OOB_DATA_LENGTH ?
+                       hash256_len : BLUETOOTH_OOB_DATA_LENGTH;
+               memcpy(oob_data.hash256, hash256, len);
+               oob_data.hash256_len = len;
+
+               len = randomizer256_len < BLUETOOTH_OOB_DATA_LENGTH ?
+                       randomizer256_len : BLUETOOTH_OOB_DATA_LENGTH;
+               memcpy(oob_data.randomizer256, randomizer256, len);
+               oob_data.randomizer256_len = len;
+       }
+
+       addr_type = (address_type == BT_DEVICE_PUBLIC_ADDRESS) ?
+                                       BLUETOOTH_BDADDR_LE_PUBLIC : BLUETOOTH_BDADDR_LE_RANDOM;
+
+       ret = _bt_get_error_code(bluetooth_oob_add_remote_data(&addr_hex,
+                               addr_type, &oob_data));
        if (BT_ERROR_NONE != ret)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
 
        return ret;
 }
+/* LCOV_EXCL_START */
 
 int bt_adapter_remove_remote_oob_data(const char *remote_address)
 {
@@ -1404,19 +1418,14 @@ int bt_adapter_set_manufacturer_data_changed_cb(
                bt_adapter_manufacturer_data_changed_cb callback,
                void *user_data)
 {
-       int ret = BT_ERROR_NONE;
-
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(callback);
+
        _bt_set_cb(BT_EVENT_MANUFACTURER_DATA_CHANGED,
                        callback, user_data);
-       if (ret != BT_ERROR_NONE) { /* LCOV_EXCL_LINE */
-               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret),
-                                               ret); /* LCOV_EXCL_LINE */
-       } /* LCOV_EXCL_LINE */
 
-       return ret;
+       return BT_ERROR_NONE;
 }
 
 int bt_adapter_unset_manufacturer_data_changed_cb(void)
@@ -1551,7 +1560,6 @@ int bt_adapter_le_set_scan_mode(bt_adapter_le_scan_mode_e scan_mode)
        } /* LCOV_EXCL_LINE */
        return ret;
 }
-/* LCOV_EXCL_STOP */
 
 int bt_adapter_le_set_customized_scan_mode(float scan_interval, float scan_window)
 {
@@ -1569,7 +1577,7 @@ int bt_adapter_le_set_customized_scan_mode(float scan_interval, float scan_windo
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
 
        return ret;
-}
+} /* LCOV_EXCL_STOP */
 
 int bt_adapter_le_create_advertiser(bt_advertiser_h *advertiser)
 {
@@ -1580,11 +1588,6 @@ int bt_adapter_le_create_advertiser(bt_advertiser_h *advertiser)
        BT_CHECK_INPUT_PARAMETER(advertiser);
 
        __adv = (bt_advertiser_s *)g_malloc0(sizeof(bt_advertiser_s));
-       if (__adv == NULL) {
-               BT_ERR("OUT_OF_MEMORY(0x%08x)",
-                               BT_ERROR_OUT_OF_MEMORY); /* LCOV_EXCL_LINE */
-               return BT_ERROR_OUT_OF_MEMORY; /* LCOV_EXCL_LINE */
-       }
        __adv->handle = GPOINTER_TO_INT(__adv);
 
        *advertiser = (bt_advertiser_h)__adv;
@@ -1818,8 +1821,6 @@ static int __bt_convert_string_to_uuid(const char *string,
                unsigned short val;
                char *stop;
                data = g_malloc0(sizeof(char) *2);
-               if (data == NULL)
-                       return BT_ERROR_OUT_OF_MEMORY; /* LCOV_EXCL_LINE */
 
                val = strtol(string, &stop, 16);
                val = htons(val);
@@ -1833,21 +1834,39 @@ static int __bt_convert_string_to_uuid(const char *string,
                        return BT_ERROR_INVALID_PARAMETER; /* LCOV_EXCL_LINE */
                }
 
-               int ret;
+               char str_ptr[37] = { 0 };
+               char *ptr[7];
+               char *next_ptr;
+               char *stop;
+               int idx = 0;
+
                unsigned int val0, val4;
                unsigned short val1, val2, val3, val5;
                data = g_malloc0(sizeof(char) *16);
-               /* Fix : NULL_RETURNS */
-               if (data == NULL)
-                       return BT_ERROR_OUT_OF_MEMORY;
 
-               ret = sscanf(string, "%08x-%04hx-%04hx-%04hx-%08x%04hx",
-                               &val0, &val1, &val2, &val3, &val4, &val5);
-               if (ret != 6) {
-                       g_free(data);
-                       return BT_ERROR_OPERATION_FAILED;
+               /* UUID format : %08x-%04hx-%04hx-%04hx-%08x%04hx */
+               strncpy(str_ptr, string, 36);
+
+               ptr[idx++] = strtok_r(str_ptr, "-", &next_ptr);
+               while ((ptr[idx++] = strtok_r(NULL, "-", &next_ptr)) != NULL) {
+                       BT_INFO("ptr : %s", ptr[idx - 1]);
+                       if (idx == 5)
+                               break;
                }
 
+               /* ptr[4] contain "08x" and "04hx" */
+               ptr[5] = g_malloc0(sizeof(char) * 8);
+               ptr[6] = g_malloc0(sizeof(char) * 4);
+               strncpy(ptr[5], ptr[4], 8);
+               strncpy(ptr[6], ptr[4] + 8, 4);
+
+               val0 = strtol(ptr[0], &stop, 16);
+               val1 = strtol(ptr[1], &stop, 16);
+               val2 = strtol(ptr[2], &stop, 16);
+               val3 = strtol(ptr[3], &stop, 16);
+               val4 = strtol(ptr[5], &stop, 16);
+               val5 = strtol(ptr[6], &stop, 16);
+
                val0 = htonl(val0);
                val1 = htons(val1);
                val2 = htons(val2);
@@ -1855,6 +1874,8 @@ static int __bt_convert_string_to_uuid(const char *string,
                val4 = htonl(val4);
                val5 = htons(val5);
 
+               BT_INFO("%x, %x, %x, %x, %x, %x", val0, val1, val2, val3, val4, val5);
+
                memcpy(data, &val0, 4);
                memcpy(data + 4, &val1, 2);
                memcpy(data + 6, &val2, 2);
@@ -1864,6 +1885,9 @@ static int __bt_convert_string_to_uuid(const char *string,
 
                *uuid = data;
                *bit = 128;
+
+               g_free(ptr[5]);
+               g_free(ptr[6]);
        } else {
                BT_ERR("Invalid UUID"); /* LCOV_EXCL_LINE */
                return BT_ERROR_INVALID_PARAMETER; /* LCOV_EXCL_LINE */
@@ -1880,9 +1904,6 @@ static int __bt_convert_byte_ordering(char *data, int data_len,
 
        /* Convert to little endian */
        swp = g_malloc0(data_len);
-       /* Fix : NULL_RETURNS */
-       if (swp == NULL)
-               return BT_ERROR_OUT_OF_MEMORY;
        for (i = 0, j = data_len - 1; i < data_len; i++, j--)
                swp[i] = data[j];
 
@@ -1977,8 +1998,6 @@ static int __bt_append_adv_type_data(bt_advertiser_h advertiser,
        }
 
        new_adv = g_malloc0(adv_len + new_data_len);
-       if (!new_adv)
-               return BT_ERROR_OUT_OF_MEMORY;
 
        for (i = 0; i < adv_len; i++) {
                len = adv_data[i];
@@ -2155,10 +2174,6 @@ int bt_adapter_le_add_advertising_service_data(bt_advertiser_h advertiser,
        g_free(uuid_ptr);
 
        adv_data = g_malloc0(sizeof(char) *(service_data_len + 2));
-       if (!adv_data) {
-               g_free(converted_uuid); /* LCOV_EXCL_LINE */
-               return BT_ERROR_OUT_OF_MEMORY;
-       }
 
        memcpy(adv_data, converted_uuid, 2);
        memcpy(adv_data + 2, service_data, service_data_len);
@@ -2220,8 +2235,6 @@ int bt_adapter_le_add_advertising_manufacturer_data(bt_advertiser_h advertiser,
        }
 
        adv_data = g_malloc0(sizeof(char) *(manufacturer_data_len + 2));
-       if (!adv_data)
-               return BT_ERROR_OUT_OF_MEMORY;
 
        adv_data[0] = manufacturer_id & 0xffffffff;
        adv_data[1] = (manufacturer_id & 0xff00) >> 8;
@@ -2346,7 +2359,6 @@ int bt_adapter_le_clear_advertising_data(bt_advertiser_h advertiser,
        return ret;
 }
 
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
 int bt_adapter_le_start_advertising(bt_advertiser_h advertiser,
                bt_adapter_le_advertising_params_s *adv_params,
                bt_adapter_le_advertising_state_changed_cb cb,
@@ -2414,7 +2426,6 @@ int bt_adapter_le_start_advertising(bt_advertiser_h advertiser,
 
        return ret;
 }
-#endif
 
 int bt_adapter_le_stop_advertising(bt_advertiser_h advertiser)
 {
@@ -2881,9 +2892,6 @@ int bt_adapter_le_get_scan_result_service_uuids(const bt_adapter_le_device_scan_
                return BT_ERROR_NO_DATA;
 
        *uuids = g_malloc0(sizeof(char *) *uuid_count);
-       /* Fix : NULL_RETURNS */
-       if (*uuids == NULL)
-               return BT_ERROR_OUT_OF_MEMORY;
 
        *count = uuid_count;
 
@@ -2904,19 +2912,13 @@ int bt_adapter_le_get_scan_result_service_uuids(const bt_adapter_le_device_scan_
                if (uuid_size != 0) {
                        for (i = 0; i < (field_len - 1); i += uuid_size) {
                                if (uuid_size == 2) {
-                                       (*uuids)[uuid_index] = g_malloc0(sizeof(char) *4 + 1);
-                                       /* Fix : NULL_RETURNS */
-                                       if ((*uuids)[uuid_index] == NULL)
-                                               return BT_ERROR_OUT_OF_MEMORY;
+                                       (*uuids)[uuid_index] = g_malloc0(sizeof(char) * 4 + 1);
                                        snprintf((*uuids)[uuid_index], 5,
                                                        "%2.2X%2.2X",
                                                        remain_data[i+3],
                                                        remain_data[i+2]);
                                } else {
-                                       (*uuids)[uuid_index] = g_malloc0(sizeof(char) *36 + 1);
-                                       /* Fix : NULL_RETURNS */
-                                       if ((*uuids)[uuid_index] == NULL)
-                                               return BT_ERROR_OUT_OF_MEMORY;
+                                       (*uuids)[uuid_index] = g_malloc0(sizeof(char) * 36 + 1);
                                        snprintf((*uuids)[uuid_index], 37, "%2.2X%2.2X%2.2X%2.2X-%2.2X%2.2X-%2.2X%2.2X-%2.2X%2.2X-%2.2X%2.2X%2.2X%2.2X%2.2X%2.2X",
                                                remain_data[i+17], remain_data[i+16], remain_data[i+15], remain_data[i+14],
                                                remain_data[i+13], remain_data[i+12], remain_data[i+11], remain_data[i+10], remain_data[i+9], remain_data[i+8],
@@ -2962,9 +2964,6 @@ int bt_adapter_le_get_scan_result_device_name(const bt_adapter_le_device_scan_re
                if (adv_data[1] == BT_ADAPTER_LE_ADVERTISING_DATA_LOCAL_NAME ||
                        adv_data[1] == BT_ADAPTER_LE_ADVERTISING_DATA_SHORT_LOCAL_NAME) {
                        *name = g_malloc0(sizeof(char) *field_len);
-                       /* Fix : NULL_RETURNS */
-                       if (*name == NULL)
-                               return BT_ERROR_OUT_OF_MEMORY;
                        memcpy(*name, &adv_data[2], field_len - 1);
 
                        return BT_ERROR_NONE;
@@ -3068,10 +3067,7 @@ int bt_adapter_le_get_scan_result_service_solicitation_uuids(const bt_adapter_le
        if (uuid_count == 0)
                return BT_ERROR_NO_DATA;
 
-       *uuids = g_malloc0(sizeof(char *) *uuid_count);
-       /* Fix : NULL_RETURNS */
-       if (*uuids == NULL)
-               return BT_ERROR_OUT_OF_MEMORY;
+       *uuids = g_malloc0(sizeof(char *) * uuid_count);
        *count = uuid_count;
 
        remain_data = adv_data;
@@ -3089,18 +3085,12 @@ int bt_adapter_le_get_scan_result_service_solicitation_uuids(const bt_adapter_le
                if (uuid_size != 0) {
                        for (i = 0; i < (field_len - 1); i += uuid_size) {
                                if (uuid_size == 2) {
-                                       (*uuids)[uuid_index] = g_malloc0(sizeof(char) *4 + 1);
-                                       /* Fix : NULL_RETURNS */
-                                       if ((*uuids)[uuid_index] == NULL)
-                                               return BT_ERROR_OUT_OF_MEMORY;
+                                       (*uuids)[uuid_index] = g_malloc0(sizeof(char) * 4 + 1);
                                        snprintf((*uuids)[uuid_index], 5,
                                                "%2.2X%2.2X", remain_data[i+3],
                                                remain_data[i+2]);
                                } else {
-                                       (*uuids)[uuid_index] = g_malloc0(sizeof(char) *36 + 1);
-                                       /* Fix : NULL_RETURNS */
-                                       if ((*uuids)[uuid_index] == NULL)
-                                               return BT_ERROR_OUT_OF_MEMORY;
+                                       (*uuids)[uuid_index] = g_malloc0(sizeof(char) * 36 + 1);
                                        snprintf((*uuids)[uuid_index], 37, "%2.2X%2.2X%2.2X%2.2X-%2.2X%2.2X-%2.2X%2.2X-%2.2X%2.2X-%2.2X%2.2X%2.2X%2.2X%2.2X%2.2X",
                                                remain_data[i+17], remain_data[i+16], remain_data[i+15], remain_data[i+14],
                                                remain_data[i+13], remain_data[i+12], remain_data[i+11], remain_data[i+10], remain_data[i+9], remain_data[i+8],
@@ -3161,10 +3151,7 @@ int bt_adapter_le_get_scan_result_service_data_list(const bt_adapter_le_device_s
        if (data_count == 0)
                return BT_ERROR_NO_DATA;
 
-       *data_list = g_malloc0(sizeof(bt_adapter_le_service_data_s) *data_count);
-       /* Fix : NULL_RETURNS */
-       if (*data_list == NULL)
-               return BT_ERROR_OUT_OF_MEMORY;
+       *data_list = g_malloc0(sizeof(bt_adapter_le_service_data_s) * data_count);
        *count = data_count;
 
        remain_data = adv_data;
@@ -3303,15 +3290,14 @@ int bt_adapter_le_get_scan_result_manufacturer_data(const bt_adapter_le_device_s
        return BT_ERROR_NO_DATA; /* LCOV_EXCL_STOP */
 }
 
-int bt_adapter_le_free_ibeacon_report(bt_adapter_ibeacon_scan_result_info_s *ibeacon_info)
+int bt_adapter_le_free_ibeacon_report(bt_adapter_le_ibeacon_scan_result_info_s *ibeacon_info)
 {
 
        BT_CHECK_LE_SUPPORT();
        BT_CHECK_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(ibeacon_info); /* LCOV_EXCL_START */
 
-       if (ibeacon_info->uuid)
-               g_free(ibeacon_info->uuid);
+       g_free(ibeacon_info->uuid);
 
        g_free(ibeacon_info);
 
@@ -3319,7 +3305,7 @@ int bt_adapter_le_free_ibeacon_report(bt_adapter_ibeacon_scan_result_info_s *ibe
 }
 
 int bt_adapter_le_get_scan_result_ibeacon_report(const bt_adapter_le_device_scan_result_info_s *info,
-                       bt_adapter_le_packet_type_e pkt_type, bt_adapter_ibeacon_scan_result_info_s **ibeacon_info)
+                       bt_adapter_le_packet_type_e pkt_type, bt_adapter_le_ibeacon_scan_result_info_s **ibeacon_info)
 {
        int manufacturer_id;
        char *manufacturer_data;
@@ -3340,19 +3326,13 @@ int bt_adapter_le_get_scan_result_ibeacon_report(const bt_adapter_le_device_scan
        if (manufacturer_id != COMPANY_ID_APPLE)
                return BT_ERROR_NO_DATA;
 
-       *ibeacon_info = g_malloc0(sizeof(bt_adapter_ibeacon_scan_result_info_s));
-       if (*ibeacon_info == NULL)
-               return BT_ERROR_OUT_OF_MEMORY;
+       *ibeacon_info = g_malloc0(sizeof(bt_adapter_le_ibeacon_scan_result_info_s));
 
        (*ibeacon_info)->company_id = manufacturer_id;
        (*ibeacon_info)->ibeacon_type = manufacturer_data[1] << 8;
        (*ibeacon_info)->ibeacon_type += manufacturer_data[0];
 
-       (*ibeacon_info)->uuid = g_malloc0(sizeof(char) *36 + 1);
-       if ((*ibeacon_info)->uuid == NULL) {
-               g_free(*ibeacon_info);
-               return BT_ERROR_OUT_OF_MEMORY;
-       }
+       (*ibeacon_info)->uuid = g_malloc0(sizeof(char) * 36 + 1);
 
        snprintf((*ibeacon_info)->uuid, 37, "%2.2X%2.2X%2.2X%2.2X-%2.2X%2.2X-%2.2X%2.2X-%2.2X%2.2X-%2.2X%2.2X%2.2X%2.2X%2.2X%2.2X",
                manufacturer_data[17], manufacturer_data[16], manufacturer_data[15], manufacturer_data[14],
@@ -3372,7 +3352,7 @@ int bt_adapter_le_get_scan_result_ibeacon_report(const bt_adapter_le_device_scan
 
 
 /* LCOV_EXCL_START */
-int bt_adapter_le_create_scan_filter(bt_scan_filter_h *scan_filter)
+int bt_adapter_le_scan_filter_create(bt_scan_filter_h *scan_filter)
 {
        bt_le_scan_filter_s *__filter = NULL;
 
@@ -3380,17 +3360,7 @@ int bt_adapter_le_create_scan_filter(bt_scan_filter_h *scan_filter)
        BT_CHECK_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(scan_filter);
 
-       if (bluetooth_is_scan_filter_supported() == FALSE) {
-               BT_ERR("BT_ERROR_NOT_SUPPORTED(0x%08x)", BT_ERROR_NOT_SUPPORTED);
-               return BT_ERROR_NOT_SUPPORTED;
-       }
-
        __filter = (bt_le_scan_filter_s *)g_malloc0(sizeof(bt_le_scan_filter_s));
-       if (__filter == NULL) {
-               BT_ERR("OUT_OF_MEMORY(0x%08x)",
-                               BT_ERROR_OUT_OF_MEMORY); /* LCOV_EXCL_LINE */
-               return BT_ERROR_OUT_OF_MEMORY;
-       }
 
        __filter->manufacturer_id = -1;
        *scan_filter = (bt_scan_filter_h)__filter;
@@ -3398,7 +3368,7 @@ int bt_adapter_le_create_scan_filter(bt_scan_filter_h *scan_filter)
        return BT_ERROR_NONE;
 }
 
-int bt_adapter_le_destroy_scan_filter(bt_scan_filter_h scan_filter)
+int bt_adapter_le_scan_filter_destroy(bt_scan_filter_h scan_filter)
 {
        bt_le_scan_filter_s *__filter = (bt_le_scan_filter_s *)scan_filter;
 
@@ -3686,7 +3656,7 @@ int bt_adapter_le_scan_filter_set_manufacturer_data_with_mask(bt_scan_filter_h s
        return BT_ERROR_NONE;
 }
 
-int bt_adapter_le_register_scan_filter(bt_scan_filter_h scan_filter)
+int bt_adapter_le_scan_filter_register(bt_scan_filter_h scan_filter)
 {
        int error_code = BT_ERROR_NONE;
        bt_le_scan_filter_s *__filter = (bt_le_scan_filter_s *)scan_filter;
@@ -3713,7 +3683,7 @@ int bt_adapter_le_register_scan_filter(bt_scan_filter_h scan_filter)
        return error_code;
 }
 
-int bt_adapter_le_unregister_scan_filter(bt_scan_filter_h scan_filter)
+int bt_adapter_le_scan_filter_unregister(bt_scan_filter_h scan_filter)
 {
        int error_code = BT_ERROR_NONE;
        bt_le_scan_filter_s *__filter = (bt_le_scan_filter_s *)scan_filter;
@@ -3736,18 +3706,13 @@ int bt_adapter_le_unregister_scan_filter(bt_scan_filter_h scan_filter)
        return error_code;
 }
 
-int bt_adapter_le_unregister_all_scan_filters(void)
+int bt_adapter_le_scan_filter_unregister_all(void)
 {
        int error_code = BT_ERROR_NONE;
 
        BT_CHECK_LE_SUPPORT();
        BT_CHECK_INIT_STATUS();
 
-       if (bluetooth_is_scan_filter_supported() == FALSE) {
-               BT_ERR("BT_ERROR_NOT_SUPPORTED(0x%08x)", BT_ERROR_NOT_SUPPORTED);
-               return BT_ERROR_NOT_SUPPORTED;
-       }
-
        if (bluetooth_is_le_scanning() == TRUE) {
                BT_ERR("NOW_IN_PROGRESS(0x%08x)",
                        BT_ERROR_NOW_IN_PROGRESS); /* LCOV_EXCL_LINE */
@@ -3876,9 +3841,7 @@ int bt_adapter_unset_authentication_req_cb(void)
        return BT_ERROR_NONE;
 }
 
-int bt_adapter_le_set_ibeacon_scan_filter(bt_scan_filter_h scan_filter,
-                       const char *data,
-                       unsigned int data_len)
+int bt_adapter_le_scan_filter_set_ibeacon(bt_scan_filter_h scan_filter)
 {
        bt_le_scan_filter_s *__filter = (bt_le_scan_filter_s *)scan_filter;
        int ibeacon_manufacturer_id = COMPANY_ID_APPLE;
@@ -3889,38 +3852,160 @@ int bt_adapter_le_set_ibeacon_scan_filter(bt_scan_filter_h scan_filter,
 
        BT_INFO("");
 
-       if (data_len > 27) {
-               BT_ERR("INVALID_PARAMETER(0x%08x)",
-                       BT_ERROR_INVALID_PARAMETER); /* LCOV_EXCL_LINE */
-               bt_adapter_le_destroy_scan_filter(scan_filter);
-               return BT_ERROR_INVALID_PARAMETER;
-       }
        g_free(__filter->manufacturer_data);
        g_free(__filter->manufacturer_data_mask);
 
        __filter->manufacturer_id = ibeacon_manufacturer_id;
-       if (data != NULL) {
-               __filter->manufacturer_data = g_memdup(data, data_len);
-               __filter->manufacturer_data_len = data_len;
-       } else {
-               __filter->manufacturer_data = NULL;
-               __filter->manufacturer_data_len = 0;
-       }
+       __filter->manufacturer_data = NULL;
+       __filter->manufacturer_data_len = 0;
        __filter->manufacturer_data_mask = NULL;
 
        return BT_ERROR_NONE;
 }
 
+int bt_adapter_le_scan_filter_set_proximity_uuid(bt_scan_filter_h scan_filter)
+{
+       int ret;
+
+       BT_CHECK_LE_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(scan_filter);
+
+       /* register Linkloss alert scan filter */
+       ret = bt_adapter_le_scan_filter_create(&pxp_linkloss_alert_filter);
+       if (ret == BT_ERROR_NONE) {
+
+               ret = bt_adapter_le_scan_filter_set_service_uuid(pxp_linkloss_alert_filter, PXP_LINK_LOSS_SVC_UUID);
+               if (ret == BT_ERROR_NONE)
+                       ret = bt_adapter_le_scan_filter_register(pxp_linkloss_alert_filter);
+               if (ret != BT_ERROR_NONE) {
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+
+                       ret = bt_adapter_le_scan_filter_destroy(pxp_linkloss_alert_filter);
+                       if (ret != BT_ERROR_NONE)
+                               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+
+                       pxp_linkloss_alert_filter = NULL;
+               }
+       } else {
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       /* register Immediate alert scan filter */
+       ret = bt_adapter_le_scan_filter_create(&pxp_immediate_alert_filter);
+       if (ret == BT_ERROR_NONE) {
+
+               ret = bt_adapter_le_scan_filter_set_service_uuid(pxp_immediate_alert_filter, PXP_IMMEDIATE_ALERT_SVC_UUID);
+               if (ret == BT_ERROR_NONE)
+                       ret = bt_adapter_le_scan_filter_register(pxp_immediate_alert_filter);
+               if (ret != BT_ERROR_NONE) {
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+
+                       ret = bt_adapter_le_scan_filter_destroy(pxp_immediate_alert_filter);
+                       if (ret != BT_ERROR_NONE)
+                               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+
+                       pxp_immediate_alert_filter = NULL;
+               }
+       } else {
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       /* register Signal loss scan filter */
+       ret = bt_adapter_le_scan_filter_create(&pxp_signal_loss_filter);
+       if (ret == BT_ERROR_NONE) {
+
+               ret = bt_adapter_le_scan_filter_set_service_uuid(pxp_signal_loss_filter, PXP_TX_POWER_SVC_UUID);
+               if (ret == BT_ERROR_NONE)
+                       ret = bt_adapter_le_scan_filter_register(pxp_signal_loss_filter);
+               if (ret != BT_ERROR_NONE) {
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+
+                       ret = bt_adapter_le_scan_filter_destroy(pxp_signal_loss_filter);
+                       if (ret != BT_ERROR_NONE)
+                               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+
+                       pxp_signal_loss_filter = NULL;
+               }
+       } else {
+               return BT_ERROR_OPERATION_FAILED;
+       }
+       return ret;
+}
+
+int bt_adapter_le_scan_filter_unset_proximity_uuid(bt_scan_filter_h scan_filter)
+{
+       int ret = BT_ERROR_NONE;
+
+       BT_CHECK_LE_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(scan_filter);
+
+       /* unregister Linkloss alert scan filter */
+       if (pxp_linkloss_alert_filter) {
+
+               ret = bt_adapter_le_scan_filter_unregister(pxp_linkloss_alert_filter);
+               if (ret != BT_ERROR_NONE)
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+
+               ret = bt_adapter_le_scan_filter_destroy(pxp_linkloss_alert_filter);
+               if (ret != BT_ERROR_NONE)
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+
+               pxp_linkloss_alert_filter = NULL;
+       }
+
+       /* unregister Immediate alert scan filter */
+       if (pxp_immediate_alert_filter) {
+
+               ret = bt_adapter_le_scan_filter_unregister(pxp_immediate_alert_filter);
+               if (ret != BT_ERROR_NONE)
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+
+               ret = bt_adapter_le_scan_filter_destroy(pxp_immediate_alert_filter);
+               if (ret != BT_ERROR_NONE)
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+
+               pxp_immediate_alert_filter = NULL;
+       }
+
+       /* unregister Signal loss scan filter */
+       if (pxp_signal_loss_filter) {
+
+               ret = bt_adapter_le_scan_filter_unregister(pxp_signal_loss_filter);
+               if (ret != BT_ERROR_NONE)
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+
+               ret = bt_adapter_le_scan_filter_destroy(pxp_signal_loss_filter);
+               if (ret != BT_ERROR_NONE)
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+
+               pxp_signal_loss_filter = NULL;
+       }
+
+       return ret;
+}
 /* LCOV_EXCL_STOP */
 
+int bt_adapter_le_scan_filter_set_type(bt_scan_filter_h scan_filter,
+                       bt_adapter_le_scan_filter_type_e mode)
+{
+       if (mode == BT_ADAPTER_LE_SCAN_FILTER_TYPE_IBEACON)
+               return bt_adapter_le_scan_filter_set_ibeacon(scan_filter);
+       else if (mode == BT_ADAPTER_LE_SCAN_FILTER_TYPE_PROXIMITY_UUID) /* LCOV_EXCL_LINE */
+               return bt_adapter_le_scan_filter_set_proximity_uuid(scan_filter); /* LCOV_EXCL_LINE */
+       else
+               return BT_ERROR_INVALID_PARAMETER;
+}
+
 int bt_adapter_passkey_reply(char *passkey, bool authentication_reply)
 {
        BT_CHECK_INIT_STATUS();
-       BT_CHECK_INPUT_PARAMETER(passkey);
-       int error_code = BT_ERROR_NONE;
-       error_code = _bt_get_error_code(bluetooth_passkey_reply(passkey, authentication_reply));
-       if (error_code != BT_ERROR_NONE)
-               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+       BT_CHECK_INPUT_PARAMETER(passkey); /* LCOV_EXCL_LINE */
+       int error_code = BT_ERROR_NONE; /* LCOV_EXCL_LINE */
+       error_code = _bt_get_error_code(bluetooth_passkey_reply(passkey, authentication_reply)); /* LCOV_EXCL_LINE */
+       if (error_code != BT_ERROR_NONE) /* LCOV_EXCL_LINE */
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code); /* LCOV_EXCL_LINE */
 
        return error_code;
 }
@@ -3929,11 +4014,10 @@ int bt_adapter_passkey_confirmation_reply(bool confirmation_reply)
 {
        BT_CHECK_INIT_STATUS();
 
-       int error_code = BT_ERROR_NONE;
-       error_code = _bt_get_error_code(bluetooth_passkey_confirmation_reply(confirmation_reply));
-       if (error_code != BT_ERROR_NONE)
-               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+       int error_code = BT_ERROR_NONE; /* LCOV_EXCL_LINE */
+       error_code = _bt_get_error_code(bluetooth_passkey_confirmation_reply(confirmation_reply)); /* LCOV_EXCL_LINE */
+       if (error_code != BT_ERROR_NONE) /* LCOV_EXCL_LINE */
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code); /* LCOV_EXCL_LINE */
 
        return error_code;
 }
-/* LCOV_EXCL_STOP */
index b609a801b8d3980d861e46045c56891739736f19..a5401a301cb509f120f374022d7ab4a0af7fa153 100644 (file)
@@ -31,9 +31,7 @@ typedef struct _call_list_s {
 } call_list_s;
 
 static bool is_audio_a2dp_initialized = false;
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
 static bool is_audio_hf_initialized = false;
-#endif
 static bool is_audio_ag_initialized = false;
 
 #define BT_CHECK_AUDIO_SUPPORT() \
@@ -134,14 +132,14 @@ int bt_audio_initialize(void)
        else
                is_audio_a2dp_initialized = true;
 
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
-       error = bluetooth_hf_init(_bt_hf_event_proxy, NULL);
-       error = _bt_get_error_code(error);
-       if (BT_ERROR_NONE != error)
-               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error), error);
-       else
-               is_audio_hf_initialized = true;
-#endif
+       if (TIZEN_PROFILE_WEARABLE_IVI) {
+               error = bluetooth_hf_init(_bt_hf_event_proxy, NULL); /* LCOV_EXCL_LINE */
+               error = _bt_get_error_code(error); /* LCOV_EXCL_LINE */
+               if (BT_ERROR_NONE != error) /* LCOV_EXCL_LINE */
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error), error); /* LCOV_EXCL_LINE */
+               else /* LCOV_EXCL_LINE */
+                       is_audio_hf_initialized = true; /* LCOV_EXCL_LINE */
+       }
 
 #ifndef TIZEN_FEATURE_HFP_DISABLE /* B2_3G */
        error = bluetooth_telephony_init((void *)_bt_telephony_event_proxy, NULL);
@@ -154,10 +152,8 @@ int bt_audio_initialize(void)
 
        /* There is no success case for 3 profiles */
        if (!is_audio_a2dp_initialized &&
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
-               !is_audio_hf_initialized &&
-#endif
-                !is_audio_ag_initialized) {
+               (!TIZEN_PROFILE_WEARABLE_IVI || !is_audio_hf_initialized) && /* LCOV_EXCL_LINE */
+                !is_audio_ag_initialized) { /* LCOV_EXCL_LINE */
                return BT_ERROR_OPERATION_FAILED;
        }
 
@@ -178,14 +174,14 @@ int bt_audio_deinitialize(void)
 
        is_audio_a2dp_initialized = false;
 
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
-       error = bluetooth_hf_deinit();
-       error = _bt_get_error_code(error);
-       if (BT_ERROR_NONE != error)
-               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error), error);
+       if (TIZEN_PROFILE_WEARABLE_IVI) { /* LCOV_EXCL_START */
+               error = bluetooth_hf_deinit();
+               error = _bt_get_error_code(error);
+               if (BT_ERROR_NONE != error)
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error), error);
 
-       is_audio_hf_initialized = false;
-#endif
+               is_audio_hf_initialized = false; /* LCOV_EXCL_STOP */
+       }
 
 #ifndef TIZEN_FEATURE_HFP_DISABLE /* B2_3G */
        error = bluetooth_telephony_deinit();
@@ -242,14 +238,14 @@ int bt_audio_connect(const char *remote_address, bt_audio_profile_type_e type)
        case BT_AUDIO_PROFILE_TYPE_A2DP:
                error = bluetooth_av_connect(&addr_hex);
                break;
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
-       case BT_AUDIO_PROFILE_TYPE_AG:
-               error = bluetooth_hf_connect(&addr_hex);
-               break;
-#endif
        case BT_AUDIO_PROFILE_TYPE_A2DP_SINK:
                error = bluetooth_av_source_connect(&addr_hex);
                break;
+       case BT_AUDIO_PROFILE_TYPE_AG:
+               if (TIZEN_PROFILE_WEARABLE_IVI) {
+                       error = bluetooth_hf_connect(&addr_hex);
+                       break;
+               } /* else: goto default */
        case BT_AUDIO_PROFILE_TYPE_ALL:
        default:
                error = bluetooth_audio_connect(&addr_hex);
@@ -300,14 +296,14 @@ int bt_audio_disconnect(const char *remote_address, bt_audio_profile_type_e type
        case BT_AUDIO_PROFILE_TYPE_A2DP:
                error = bluetooth_av_disconnect(&addr_hex);
                break;
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
-       case BT_AUDIO_PROFILE_TYPE_AG:
-               error = bluetooth_hf_disconnect(&addr_hex);
-               break;
-#endif
        case BT_AUDIO_PROFILE_TYPE_A2DP_SINK:
                error = bluetooth_av_source_disconnect(&addr_hex);
                break;
+       case BT_AUDIO_PROFILE_TYPE_AG:
+               if (TIZEN_PROFILE_WEARABLE_IVI) {
+                       error = bluetooth_hf_disconnect(&addr_hex);
+                       break;
+               } /* else goto default */
        case BT_AUDIO_PROFILE_TYPE_ALL:
        default:
                error = bluetooth_audio_disconnect(&addr_hex);
@@ -615,7 +611,6 @@ int bt_ag_notify_call_list(bt_call_list_h list)
 
        return error;
 }
-/* LCOV_EXCL_STOP */
 
 int bt_ag_notify_vendor_cmd(const char *command)
 {
@@ -631,7 +626,7 @@ int bt_ag_notify_vendor_cmd(const char *command)
        if (error != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error), error);
        return error;
-}
+} /* LCOV_EXCL_STOP */
 
 int bt_ag_notify_voice_recognition_state(bool state)
 {
@@ -695,6 +690,27 @@ int bt_ag_unset_multi_call_handling_event_cb(void)
        return BT_ERROR_NONE;
 }
 
+int bt_ag_set_vendor_cmd_cb(bt_ag_vendor_cmd_cb callback,
+                                               void *user_data)
+{
+       BT_CHECK_HFP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_AG_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(callback);
+       _bt_set_cb(BT_EVENT_AG_VENDOR_CMD, callback, user_data);
+       return BT_ERROR_NONE;
+}
+
+int bt_ag_unset_vendor_cmd_cb(void)
+{
+       BT_CHECK_HFP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_AG_INIT_STATUS();
+       if (_bt_check_cb(BT_EVENT_AG_VENDOR_CMD) == true)
+               _bt_unset_cb(BT_EVENT_AG_VENDOR_CMD);
+       return BT_ERROR_NONE;
+}
+
 int bt_ag_set_dtmf_transmitted_cb(bt_ag_dtmf_transmitted_cb callback,
                                                void *user_data)
 {
@@ -739,6 +755,29 @@ int bt_ag_is_connected(bool *connected)
        return error;
 }
 
+int bt_ag_switch_headset(const char *remote_addr)
+{
+       int error;
+
+       BT_CHECK_HFP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_AG_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(remote_addr);
+
+       char *addr = g_strdup(remote_addr);
+       BT_INFO("Remote address = %s", addr);
+
+       error = bluetooth_telephony_set_active_headset(addr);
+       error = _bt_get_error_code(error);
+
+       if (error != BT_ERROR_NONE)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error), error);
+
+       g_free(addr);
+
+       return error;
+}
+
 int bt_call_list_create(bt_call_list_h *list)
 {
        call_list_s *handle;
@@ -752,10 +791,6 @@ int bt_call_list_create(bt_call_list_h *list)
                return BT_ERROR_ALREADY_DONE;
        }
        handle = g_malloc0(sizeof(call_list_s));
-       if (handle == NULL) {
-               BT_ERR("BT_ERROR_OUT_OF_MEMORY(0x%08x)", BT_ERROR_OUT_OF_MEMORY);
-               return BT_ERROR_OUT_OF_MEMORY;
-       }
 
        *list = handle;
        return BT_ERROR_NONE;
@@ -792,8 +827,7 @@ int bt_call_list_reset(bt_call_list_h list)
                        break;
                handle->list = g_list_remove(handle->list, call_status);
 
-               if (NULL != call_status->phone_number)
-                       g_free(call_status->phone_number);
+               g_free(call_status->phone_number);
 
                g_free(call_status);
        } while (1);
@@ -813,9 +847,6 @@ int bt_call_list_add(bt_call_list_h list, unsigned int call_id, bt_ag_call_state
        handle = (call_list_s *)list;
        call_status = g_malloc0(sizeof(bt_telephony_call_status_info_t));
 
-       /* Fix : NULL_RETURNS */
-       if (call_status == NULL)
-               return BT_ERROR_OUT_OF_MEMORY;
        call_status->call_id = call_id;
        call_status->call_status = state;
        if (phone_number)
@@ -843,47 +874,50 @@ int bt_a2dp_set_content_protection(bool status)
        }
        return error;
 }
-/* LCOV_EXCL_STOP */
 
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
 int bt_hf_initialize(void)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
 
        int error;
 
-       BT_CHECK_INIT_STATUS();
        error = bluetooth_hf_init(_bt_hf_event_proxy, NULL);
        error = _bt_get_error_code(error);
        if (BT_ERROR_NONE != error) {
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error), error);
                return error;
        }
+
+       is_audio_hf_initialized = true;
+
        return error;
 }
 
 int bt_hf_deinitialize(void)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
 
        int error;
 
-       BT_CHECK_INIT_STATUS();
        error = bluetooth_hf_deinit();
        error = _bt_get_error_code(error);
-       if (BT_ERROR_NONE != error) {
+       if (BT_ERROR_NONE != error)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error), error);
-               return error;
-       }
-       return error;
+
+       is_audio_hf_initialized = false;
+
+       return BT_ERROR_NONE;
 }
 
 int bt_hf_notify_call_event(bt_hf_call_event_e event, char *phone_number)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
 
        int error = BT_ERROR_NONE;
 
@@ -932,8 +966,9 @@ int bt_hf_notify_call_event(bt_hf_call_event_e event, char *phone_number)
 
 int bt_hf_notify_speaker_gain(int gain)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
 
        int error;
 
@@ -947,8 +982,9 @@ int bt_hf_notify_speaker_gain(int gain)
 
 int bt_hf_set_speaker_gain_changed_cb(bt_hf_speaker_gain_changed_cb callback, void *user_data)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(callback);
 
        _bt_set_cb(BT_EVENT_HF_SPEAKER_GAIN_CHANGE, callback, user_data);
@@ -957,8 +993,9 @@ int bt_hf_set_speaker_gain_changed_cb(bt_hf_speaker_gain_changed_cb callback, vo
 
 int bt_hf_unset_speaker_gain_changed_cb(void)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
 
        if (_bt_check_cb(BT_EVENT_HF_SPEAKER_GAIN_CHANGE) == true)
                _bt_unset_cb(BT_EVENT_HF_SPEAKER_GAIN_CHANGE);
@@ -967,8 +1004,9 @@ int bt_hf_unset_speaker_gain_changed_cb(void)
 
 int bt_hf_notify_voice_recognition_state(bool state)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
 
        int error;
 
@@ -980,10 +1018,46 @@ int bt_hf_notify_voice_recognition_state(bool state)
        return error;
 }
 
-int bt_hf_set_call_status_updated_event_cb(bt_hf_call_status_updated_event_cb callback, void *user_data)
+int bt_hf_set_vendor_dep_cmd_event_cb(bt_hf_vendor_dep_cmd_event_cb callback, void *user_data)
 {
        BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(callback);
+
+       _bt_set_cb(BT_EVENT_HF_VENDOR_DEP_CMD_EVENT, callback, user_data);
+       return BT_ERROR_NONE;
+}
+
+int bt_hf_unset_vendor_dep_cmd_event_cb(void)
+{
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
+
+       if (_bt_check_cb(BT_EVENT_HF_VENDOR_DEP_CMD_EVENT) == true)
+               _bt_unset_cb(BT_EVENT_HF_VENDOR_DEP_CMD_EVENT);
+       return BT_ERROR_NONE;
+}
+
+int bt_hf_notify_vendor_cmd(int appid, char *msg)
+{
+       int error;
+
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
+
+       error = bluetooth_hf_send_xsat_cmd(appid, msg);
+       error = _bt_get_error_code(error);
+       if (error != BT_ERROR_NONE)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error), error);
+
+       return error;
+}
+
+int bt_hf_set_call_status_updated_event_cb(bt_hf_call_status_updated_event_cb callback, void *user_data)
+{
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
 
        BT_CHECK_INPUT_PARAMETER(callback);
        _bt_set_cb(BT_EVENT_HF_CALL_STATUS_UPDATED_EVENT, callback, user_data);
@@ -992,8 +1066,9 @@ int bt_hf_set_call_status_updated_event_cb(bt_hf_call_status_updated_event_cb ca
 
 int bt_hf_unset_call_status_updated_event_cb(void)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
 
        if (_bt_check_cb(BT_EVENT_HF_CALL_STATUS_UPDATED_EVENT) == true)
                _bt_unset_cb(BT_EVENT_HF_CALL_STATUS_UPDATED_EVENT);
@@ -1002,8 +1077,9 @@ int bt_hf_unset_call_status_updated_event_cb(void)
 
 int bt_hf_close_sco(void)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
 
        int error;
 
@@ -1017,8 +1093,9 @@ int bt_hf_close_sco(void)
 
 int bt_hf_send_dtmf(char *dtmf)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
 
        int error;
 
@@ -1032,8 +1109,9 @@ int bt_hf_send_dtmf(char *dtmf)
 
 int bt_hf_is_connected(bool *connected)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(connected);
 
        int error;
@@ -1054,8 +1132,9 @@ int bt_hf_is_connected(bool *connected)
 
 int bt_hf_is_sco_opened(bool *opened)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(opened);
 
        int error;
@@ -1076,8 +1155,9 @@ int bt_hf_is_sco_opened(bool *opened)
 
 int bt_hf_get_codec_id(unsigned int *codec_id)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(codec_id);
 
        int error;
@@ -1092,8 +1172,9 @@ int bt_hf_get_codec_id(unsigned int *codec_id)
 
 int bt_hf_get_call_status_info_list(GSList **call_list)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(call_list);
 
        int error;
@@ -1128,14 +1209,14 @@ int bt_hf_get_call_status_info_list(GSList **call_list)
 
 int bt_hf_is_inband_ringtone_supported(bool *supported)
 {
-#ifdef TIZEN_BT_HFP_HF_ENABLE
-       int error;
-       gboolean is_supported = FALSE;
-
        BT_CHECK_HF_SUPPORT();
        BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(supported);
 
+       int error;
+       gboolean is_supported = FALSE;
+
        error = bluetooth_hf_is_ibr_supported(&is_supported);
        error = _bt_get_error_code(error);
        if (error != BT_ERROR_NONE)
@@ -1147,10 +1228,6 @@ int bt_hf_is_inband_ringtone_supported(bool *supported)
                *supported = FALSE;
 
        return error;
-#else
-       BT_ERR("NOT_SUPPORTED(0x%08x)", BT_ERROR_NOT_SUPPORTED);
-       return BT_ERROR_NOT_SUPPORTED;
-#endif
 }
 
 static void __bt_hf_free_call_status_info(void *data)
@@ -1162,8 +1239,9 @@ static void __bt_hf_free_call_status_info(void *data)
 
 int bt_hf_free_call_status_info_list(GSList *call_list)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(call_list);
 
        g_slist_free_full(call_list, __bt_hf_free_call_status_info);
@@ -1174,8 +1252,9 @@ int bt_hf_free_call_status_info_list(GSList *call_list)
 int bt_hf_set_sco_state_changed_cb(bt_hf_sco_state_changed_cb callback,
                                        void *user_data)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(callback);
        _bt_set_cb(BT_EVENT_HF_SCO_CONNECTION_STATUS, callback, user_data);
        return BT_ERROR_NONE;
@@ -1183,8 +1262,9 @@ int bt_hf_set_sco_state_changed_cb(bt_hf_sco_state_changed_cb callback,
 
 int bt_hf_unset_sco_state_changed_cb(void)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
 
        if (_bt_check_cb(BT_EVENT_HF_SCO_CONNECTION_STATUS) == true)
                _bt_unset_cb(BT_EVENT_HF_SCO_CONNECTION_STATUS);
@@ -1194,8 +1274,9 @@ int bt_hf_unset_sco_state_changed_cb(void)
 int bt_hf_set_call_handling_event_cb(bt_hf_call_handling_event_cb callback,
                                        void *user_data)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(callback);
 
        _bt_set_cb(BT_EVENT_HF_CALL_HANDLING_EVENT, callback, user_data);
@@ -1204,8 +1285,9 @@ int bt_hf_set_call_handling_event_cb(bt_hf_call_handling_event_cb callback,
 
 int bt_hf_unset_call_handling_event_cb(void)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
 
        if (_bt_check_cb(BT_EVENT_HF_CALL_HANDLING_EVENT) == true)
                _bt_unset_cb(BT_EVENT_HF_CALL_HANDLING_EVENT);
@@ -1216,8 +1298,9 @@ int bt_hf_set_multi_call_handling_event_cb(
                                        bt_hf_multi_call_handling_event_cb callback,
                                        void *user_data)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(callback);
 
        _bt_set_cb(BT_EVENT_HF_MULTI_CALL_HANDLING_EVENT, callback, user_data);
@@ -1226,8 +1309,9 @@ int bt_hf_set_multi_call_handling_event_cb(
 
 int bt_hf_unset_multi_call_handling_event_cb(void)
 {
-       BT_CHECK_INIT_STATUS();
        BT_CHECK_HF_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
 
        if (_bt_check_cb(BT_EVENT_HF_MULTI_CALL_HANDLING_EVENT) == true)
                _bt_unset_cb(BT_EVENT_HF_MULTI_CALL_HANDLING_EVENT);
@@ -1240,6 +1324,7 @@ int bt_hf_set_remote_call_event_cb(
 {
        BT_CHECK_HF_SUPPORT();
        BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(callback);
        _bt_set_cb(BT_EVENT_HF_REMOTE_CALL_EVENT, callback, user_data);
        return BT_ERROR_NONE;
@@ -1249,6 +1334,7 @@ int bt_hf_unset_remote_call_event_cb(void)
 {
        BT_CHECK_HF_SUPPORT();
        BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
        if (_bt_check_cb(BT_EVENT_HF_REMOTE_CALL_EVENT) == true)
                _bt_unset_cb(BT_EVENT_HF_REMOTE_CALL_EVENT);
        return BT_ERROR_NONE;
@@ -1260,6 +1346,7 @@ int bt_hf_set_remote_device_state_changed_cb(
 {
        BT_CHECK_HF_SUPPORT();
        BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(callback);
        _bt_set_cb(BT_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED, callback, user_data);
        return BT_ERROR_NONE;
@@ -1269,8 +1356,9 @@ int bt_hf_unset_remote_device_state_changed_cb(void)
 {
        BT_CHECK_HF_SUPPORT();
        BT_CHECK_INIT_STATUS();
+       BT_CHECK_HF_INIT_STATUS();
        if (_bt_check_cb(BT_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED) == true)
                _bt_unset_cb(BT_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED);
        return BT_ERROR_NONE;
 }
-#endif
+/* LCOV_EXCL_STOP */
index 9da615c67a229cff84b26a9b814e3890f3eb45a8..3a35c51130f2704a6f9c819aa809289d83a3462f 100644 (file)
@@ -59,15 +59,17 @@ int __bt_check_avrcp_target_init_status(void)
                return BT_ERROR_NOT_INITIALIZED; \
        }
 
+/* LCOV_EXCL_START */
 int __bt_check_avrcp_control_init_status(void)
 {
-       if (is_avrcp_control_initialized != true) {
+       if (is_avrcp_control_initialized != true) { /* LCOV_EXCL_LINE */
                BT_ERR("NOT_INITIALIZED(0x%08x)", BT_ERROR_NOT_INITIALIZED); /* LCOV_EXCL_LINE */
                return BT_ERROR_NOT_INITIALIZED; /* LCOV_EXCL_LINE */
        }
 
        return BT_ERROR_NONE;
 }
+/* LCOV_EXCL_STOP */
 
 /*The below API is just to conver the error from Audio API's to CAPI error codes,
 * this is temporary change and changes to proper error code will be done in
@@ -108,6 +110,7 @@ int bt_avrcp_target_initialize(bt_avrcp_target_connection_state_changed_cb callb
        return BT_ERROR_NONE;
 }
 
+/* LCOV_EXCL_START */
 int bt_avrcp_target_connect(const char *remote_address)
 {
        int error;
@@ -144,7 +147,7 @@ int bt_avrcp_target_disconnect(const char *remote_address)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error), error);
 
        return error;
-}
+} /* LCOV_EXCL_STOP */
 
 int bt_avrcp_target_deinitialize(void)
 {
@@ -387,6 +390,22 @@ int bt_avrcp_control_send_player_command(bt_avrcp_player_command_e cmd)
        return error;
 }
 
+int bt_avrcp_control_set_absolute_volume(unsigned int value)
+{
+       int error;
+
+       BT_CHECK_AVRCP_CONTROL_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_AVRCP_CONTROL_INIT_STATUS();
+       error = bluetooth_media_transport_set_property(VOLUME, value);
+       error = _bt_convert_avrcp_error_code(error);
+       error = _bt_get_error_code(error);
+       if (BT_ERROR_NONE != error)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error), error); /* LCOV_EXCL_LINE */
+
+       return error;
+}
+
 int bt_avrcp_control_set_equalizer_state(bt_avrcp_equalizer_state_e state)
 {
        int error;
@@ -570,16 +589,15 @@ int bt_avrcp_control_get_track_info(bt_avrcp_metadata_attributes_info_s **track)
        } else {
                tr_info = (bt_avrcp_metadata_attributes_info_s *)g_malloc0(
                                sizeof(bt_avrcp_metadata_attributes_info_s));
-               if (tr_info) {
-                       tr_info->title = metadata.title;
-                       tr_info->artist = metadata.artist;
-                       tr_info->album = metadata.album;
-                       tr_info->genre = metadata.genre;
-                       tr_info->total_tracks = metadata.total_tracks;
-                       tr_info->number = metadata.number;
-                       tr_info->duration = metadata.duration;
-                       *track = tr_info;
-               }
+
+               tr_info->title = metadata.title;
+               tr_info->artist = metadata.artist;
+               tr_info->album = metadata.album;
+               tr_info->genre = metadata.genre;
+               tr_info->total_tracks = metadata.total_tracks;
+               tr_info->number = metadata.number;
+               tr_info->duration = metadata.duration;
+               *track = tr_info;
        }
        return error;
 }
old mode 100755 (executable)
new mode 100644 (file)
index 9bb9730..31ff603
@@ -22,6 +22,7 @@
 #include <stdio.h>
 #include <stdbool.h>
 #include <bluetooth-api.h>
+#include <system_info.h>
 
 #include "bluetooth.h"
 #include "bluetooth_internal.h"
@@ -51,12 +52,11 @@ static void __bt_free_bt_adapter_device_discovery_info_s(bt_adapter_device_disco
 static int __bt_get_bt_adapter_le_device_scan_info_s(bt_adapter_le_device_scan_result_info_s **scan_info, bluetooth_le_device_info_t *source_info);
 static void __bt_free_bt_adapter_le_device_scan_info_s(bt_adapter_le_device_scan_result_info_s *scan_info);
 
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
+/* TDS Forward declarations */
+static void __bt_free_tds_scan_result_info_s(bt_tds_transport_block_list_s *discovery_info);
+
 static int __bt_get_bt_adapter_le_device_discovery_info_s(bt_adapter_le_device_discovery_info_s **le_discovery_info, bluetooth_le_device_info_t *source_info);
 static void __bt_free_bt_adapter_le_device_discovery_info_s(bt_adapter_le_device_discovery_info_s *discovery_info);
-#endif
-static int __bt_gatt_client_update_characteristics(bt_gatt_handle_info_t char_handles, bt_gatt_service_s *service);
-static int __bt_gatt_client_update_descriptors(bt_gatt_handle_info_t desc_handles, bt_gatt_characteristic_s *characteristic);
 
 /*
  *  Public Functions
@@ -98,169 +98,7 @@ int bt_get_uuid_name(const char *uuid, char **name)
        BT_CHECK_INPUT_PARAMETER(uuid);
        BT_CHECK_INPUT_PARAMETER(name);
 
-       int i;
-       int offset = 0;
-       int uuid_len = 4;
-       static struct {
-               const char *uuid;
-               const char *specification_name;
-       } bt_uuid_name[] = {
-               /* BT Classic Services */
-               {"1101", "Serial Port Service"},
-               {"1102", "LAN Access Using PPP Service"},
-               {"1103", "Dialup Netwworking Service"},
-               {"1104", "IrMCSync Service"},
-               {"1105", "OBEX Object Push Service"},
-               {"1106", "OBEX File Transfer Service"},
-               {"1107", "IrMC Sync Command Service"},
-               {"1108", "Headset Service"},
-               {"1109", "Cordless Telephony Service"},
-               {"110A", "Audio Source Service"},
-               {"110B", "Audio Sink Service"},
-               {"110C", "AV Remote Control Target Service"},
-               {"110D", "Advanced Audio Distribution Profile"},
-               {"110E", "AV Remote Control Service"},
-               {"110F", "Video Conferencing Service"},
-               {"1110", "Intercom Service"},
-               {"1111", "Fax Service"},
-               {"1112", "Headset Audio Gateway Service"},
-               {"1113", "WAP Service"},
-               {"1114", "WAP Client Service"},
-               {"1115", "PANU Service"},
-               {"1116", "NAP Service"},
-               {"1117", "GN Service"},
-               {"1118", "Direct Printing Service"},
-               {"1119", "Reference Printing Service"},
-               {"111A", "Basic Imaging Profile"},
-               {"111B", "Imaging Responder Service"},
-               {"111C", "Imaging Automatic Archive Service"},
-               {"111D", "Imaging Reference Objects Service"},
-               {"111E", "Handsfree Service"},
-               {"111F", "Handsfree Audio Gateway Service"},
-               {"1120", "Direct Printing Reference Objects Service"},
-               {"1121", "Reflected UI Service"},
-               {"1122", "Basic Printing Profile"},
-               {"1123", "Printing Status Service"},
-               {"1124", "Human Interface Device Service"},
-               {"1125", "Hardcopy Cable Replacement Profile"},
-               {"1126", "HCR Print Service"},
-               {"1127", "HCR Scan Service"},
-               {"112D", "SIM Access Service"},
-               {"112E", "Phonebook Access PCE Service"},
-               {"112F", "Phonebook Access PSE Service"},
-               {"1130", "Phonebook Access  Profile"},
-               {"1132", "Message Access Server Service"},
-               {"1133", "Message Notification Server Service"},
-               {"1134", "Message Access Profile"},
-               {"1200", "PnP Information Service"},
-               {"1201", "Generic Networking Service"},
-               {"1202", "Generic File Transfer Service"},
-               {"1203", "Generic Audio Service"},
-               {"1204", "Generic Telephony Service"},
-               {"1205", "UPnP Service"},
-               {"1206", "UPnP Ip Service"},
-               {"1400", "Health Device Profile"},
-
-               /* GATT Services */
-               {"1800", "Generic Access"},
-               {"1801", "Generic Attribute"},
-               {"1802", "Immediate Alert"},
-               {"1803", "Link Loss"},
-               {"1804", "Tx Power"},
-               {"1805", "Current Time Service"},
-               {"1806", "Reference Time Update Service"},
-               {"1807", "Next DST Change Service"},
-               {"1808", "Glucose"},
-               {"1809", "Health Thermometer"},
-               {"180A", "Device Information"},
-               {"180D", "Heart Rate"},
-               {"180F", "Battery Service"},
-               {"1810", "Blood Pressure"},
-               {"1811", "Alert Notification Service"},
-               {"1812", "Human Interface Device"},
-
-               /* GATT Declarations */
-               {"2800", "Primary Service Declaration"},
-               {"2801", "Secondary Service Declaration"},
-               {"2802", "Include Declaration"},
-               {"2803", "Characteristic Declaration"},
-
-               /* GATT Descriptors */
-               {"2900", "Characteristic Extended Properties"},
-               {"2901", "Characteristic User Description"},
-               {"2902", "Client Characteristic Configuration"},
-               {"2903", "Server Characteristic Configuration"},
-               {"2904", "Characteristic Format"},
-               {"2905", "Characteristic Aggregate Formate"},
-               {"2906", "Valid Range"},
-               {"2907", "External Report Reference"},
-               {"2908", "Report Reference"},
-
-               /* GATT Characteristics */
-               {"2A00", "Device Name"},
-               {"2A01", "Appearance"},
-               {"2A02", "Peripheral Privacy Flag"},
-               {"2A03", "Reconnection Address"},
-               {"2A04", "Peripheral Preferred Connection Parameters"},
-               {"2A05", "Service Changed"},
-               {"2A06", "Alert Level"},
-               {"2A07", "Tx Power Level"},
-               {"2A08", "Date Time"},
-               {"2A09", "Day of Week"},
-               {"2A0A", "Day Date Time"},
-               {"2A19", "Battery Level"},
-               {"2A1E", "Intermediate Temperature"},
-               {"2A23", "System ID"},
-               {"2A24", "Model Number String"},
-               {"2A25", "Serial Number String"},
-               {"2A26", "Firmware Revision String"},
-               {"2A27", "Hardware Revision String"},
-               {"2A28", "Software Revision String"},
-               {"2A29", "Manufacturer Name String"},
-               {"2A2A", "IEEE 11073-20601 Regulatory Certification Data List"},
-               {"2A2B", "Current Time"},
-               {"2A37", "Heart Rate Measurement"},
-               {"2A38", "Body Sensor Location"},
-               {"2A3F", "Alert Status"},
-               {"2A46", "New Alert"},
-               {"2A4A", "HID Information"},
-               {"2A4C", "HID Control Point"},
-               {"2A50", "PnP ID"},
-
-               /* Custom uuids */
-               {"7905F431-B5CE-4E99-A40F-4B1E122D00D0", "Apple Notification Center Service"},
-               {"9FBF120D-6301-42D9-8C58-25E699A21DBD", "Notifications Source"},
-               {"69D1D8F3-45E1-49A8-9821-9BBDFDAAD9D9", "Control Point"},
-               {"22EAC6E9-24D6-4BB5-BE44-B36ACE7C7BFB", "Data Source"},
-               {"89D3502B-0F36-433A-8EF4-C502AD55F8DC", "Apple Media Service"},
-               {"9B3C81D8-57B1-4A8A-B8DF-0E56F7CA51C2", "Remote Command"},
-               {"2F7CABCE-808D-411F-9A0C-BB92BA96C102", "Entity Update"},
-               {"C6B2F38C-23AB-46D8-A6AB-A3A870BBD5D7", "Entity Attribute"},
-               {"9A3F68E0-86CE-11E5-A309-0002A5D5C51B", "Samsung Gear Manager Service"},
-               {"c2f2cc0f-c085-4dd4-be5a-aca3074bbc72", "Control Point"},
-               {"cece518b-28d7-4171-92d5-76a1e249a3b9", "Notifications Source"},
-               {NULL, NULL}
-       };
-
-       if (strlen(uuid) == 36) {
-               if (!g_ascii_strncasecmp(uuid + 9, "0000-1000-8000-00805F9B34FB", 27))
-                       offset = 4;
-               else {
-                       offset = 0;
-                       uuid_len = 36;
-               }
-       } else if (strlen(uuid) >= 8)
-               offset = 4;
-
-       for (i = 0; bt_uuid_name[i].uuid; i++) {
-               if (!g_ascii_strncasecmp(uuid + offset, bt_uuid_name[i].uuid, uuid_len)) {
-                       *name = g_strdup(bt_uuid_name[i].specification_name);
-                       return BT_ERROR_NONE;
-               }
-       }
-
-       *name = g_strdup("Unknown");
-       return BT_ERROR_NONE;
+       return _bt_get_error_code(bluetooth_get_uuid_name(uuid, name));
 }
 
 /*
@@ -382,6 +220,13 @@ int _bt_get_error_code(int origin_error)
                return BT_ERROR_AUTH_REJECTED;
        case BLUETOOTH_ERROR_DEVICE_POLICY_RESTRICTION:
                return BT_ERROR_DEVICE_POLICY_RESTRICTION;
+/* Because BLUETOOTH_ERROR_NO_DATA is not defined in Tizen 3.0's bluetooth-api.h,
+   the build error is occured. We will include all patchsets for this in Tizen 4.0.
+   In tizen 3.0, we comment out this code for fixing build error.  */
+#if 0
+       case BLUETOOTH_ERROR_NO_DATA:
+               return BT_ERROR_NO_DATA;
+#endif
        case BLUETOOTH_ERROR_PARING_FAILED:
        case BLUETOOTH_ERROR_MAX_CONNECTION:
        case BLUETOOTH_ERROR_REGISTRATION_FAILED:
@@ -441,10 +286,17 @@ int _bt_get_bt_device_info_s(bt_device_info_s **dest_dev, bluetooth_device_info_
        (*dest_dev)->manufacturer_data_len = source_dev->manufacturer_data.data_len;
        if (source_dev->manufacturer_data.data_len > 0) {
                (*dest_dev)->manufacturer_data = (char *)malloc(source_dev->manufacturer_data.data_len);
-               memcpy((*dest_dev)->manufacturer_data, source_dev->manufacturer_data.data, source_dev->manufacturer_data.data_len);
+               if ((*dest_dev)->manufacturer_data)
+                       memcpy((*dest_dev)->manufacturer_data, source_dev->manufacturer_data.data,
+                                                               source_dev->manufacturer_data.data_len);
+               else
+                       return BT_ERROR_OUT_OF_MEMORY;
        } else {
                (*dest_dev)->manufacturer_data = (char *)malloc(1);
-               (*dest_dev)->manufacturer_data[0] = 0;
+               if ((*dest_dev)->manufacturer_data)
+                       (*dest_dev)->manufacturer_data[0] = 0;
+               else
+                       return BT_ERROR_OUT_OF_MEMORY;
        }
 
        return BT_ERROR_NONE;
@@ -477,6 +329,55 @@ void _bt_free_bt_device_info_s(bt_device_info_s *device_info)
        free(device_info);
        device_info = NULL;
 }
+
+int _bt_get_ad_data_by_type(char *in_data, int in_len,
+               char in_type, char **data, int *data_len)
+{
+       if (in_data == NULL || data == NULL || data_len == NULL)
+               return BLUETOOTH_ERROR_INTERNAL;
+
+       if (in_len < 0)
+               return BLUETOOTH_ERROR_INTERNAL;
+
+       int i;
+       int len = 0;
+       int type = 0;
+
+       for (i = 0; i < in_len; i++) {
+               len = in_data[i];
+               if (len <= 0 || i + 1 >= in_len) {
+                       BT_ERR("Invalid advertising data");
+                       return BLUETOOTH_ERROR_INTERNAL;
+               }
+
+               type = in_data[i + 1];
+               if (type == in_type) {
+                       i = i + 2;
+                       len--;
+                       break;
+               }
+
+               i += len;
+               len = 0;
+       }
+
+       if (i + len > in_len) {
+               BT_ERR("Invalid advertising data");
+               return BLUETOOTH_ERROR_INTERNAL;
+       } else if (len == 0) {
+               BT_DBG("AD Type 0x%02x data is not set", in_type);
+               *data = NULL;
+               *data_len = 0;
+               return BLUETOOTH_ERROR_NONE;
+       }
+
+       *data = g_memdup(&in_data[i], len);
+       if (*data == NULL)
+               return BLUETOOTH_ERROR_OUT_OF_MEMORY;
+       *data_len = len;
+
+       return BLUETOOTH_ERROR_NONE;
+}
 /* LCOV_EXCL_STOP */
 
 int _bt_convert_address_to_string(char **addr_str, bluetooth_device_address_t *addr_hex)
@@ -496,18 +397,17 @@ int _bt_convert_address_to_string(char **addr_str, bluetooth_device_address_t *a
 
 void _bt_convert_address_to_hex(bluetooth_device_address_t *addr_hex, const char *addr_str)
 {
-       int i = 0;
-       unsigned int addr[BLUETOOTH_ADDRESS_LENGTH] = { 0, };
+       char *ptr1, *ptr2, *ptr3, *ptr4, *ptr5;
 
        if (addr_str == NULL || addr_str[0] == '\0')
-               return; /* LCOV_EXCL_LINE */
-
-       i = sscanf(addr_str, "%X:%X:%X:%X:%X:%X", &addr[0], &addr[1], &addr[2], &addr[3], &addr[4], &addr[5]);
-       if (i != BLUETOOTH_ADDRESS_LENGTH)
-               BT_ERR("Invalid format string - [%s]", addr_str); /* LCOV_EXCL_LINE */
+               return;
 
-       for (i = 0; i < BLUETOOTH_ADDRESS_LENGTH; i++)
-               addr_hex->addr[i] = (unsigned char)addr[i];
+       addr_hex->addr[0] = strtol(addr_str, &ptr5, 16);
+       addr_hex->addr[1] = strtol(ptr5 + 1, &ptr4, 16);
+       addr_hex->addr[2] = strtol(ptr4 + 1, &ptr3, 16);
+       addr_hex->addr[3] = strtol(ptr3 + 1, &ptr2, 16);
+       addr_hex->addr[4] = strtol(ptr2 + 1, &ptr1, 16);
+       addr_hex->addr[5] = strtol(ptr1 + 1, NULL, 16);
 }
 
 char *_bt_convert_error_to_string(int error)
@@ -554,13 +454,13 @@ char *_bt_convert_error_to_string(int error)
        case BT_ERROR_NOT_SUPPORTED:
                return "NOT_SUPPORTD"; /* LCOV_EXCL_LINE */
        case BT_ERROR_NO_DATA:
-               return "NO_DATA";
+               return "NO_DATA"; /* LCOV_EXCL_LINE */
        case BT_ERROR_QUOTA_EXCEEDED:
-               return "QUOTA EXCEEDED";
+               return "QUOTA EXCEEDED"; /* LCOV_EXCL_LINE */
        case BT_ERROR_AGAIN:
-               return "AGAIN";
+               return "AGAIN"; /* LCOV_EXCL_LINE */
        case BT_ERROR_DEVICE_POLICY_RESTRICTION:
-               return "DEVICE_POLICY_RESTRICTION";
+               return "DEVICE_POLICY_RESTRICTION"; /* LCOV_EXCL_LINE */
        default:
                return "UNKNOWN"; /* LCOV_EXCL_LINE */
        }
@@ -579,12 +479,12 @@ char *_bt_convert_uuid_to_uuid128(const char *uuid)
                break;
 
        case 8:         /* UUID 32bits */
-               uuid128 = g_strdup_printf("%s-0000-1000-8000-00805f9b34fb", uuid);
-               break;
+               uuid128 = g_strdup_printf("%s-0000-1000-8000-00805f9b34fb", uuid); /* LCOV_EXCL_LINE */
+               break; /* LCOV_EXCL_LINE */
 
        case 36:        /* UUID 128bits */
-               uuid128 = strdup(uuid);
-               break;
+               uuid128 = strdup(uuid); /* LCOV_EXCL_LINE */
+               break; /* LCOV_EXCL_LINE */
 
        default:
                return NULL;
@@ -616,10 +516,6 @@ static int __bt_get_bt_device_sdp_info_s(bt_device_sdp_info_s **dest, bt_sdp_inf
 
        *dest = (bt_device_sdp_info_s *)g_malloc0(sizeof(bt_device_sdp_info_s));
 
-       /* Fix : NULL_RETURNS */
-       if (*dest == NULL)
-               return BT_ERROR_OUT_OF_MEMORY;
-
        if (_bt_convert_address_to_string(&((*dest)->remote_address), &(source->device_addr)) != BT_ERROR_NONE) {
                __bt_free_bt_device_sdp_info_s(*dest);
                return BT_ERROR_OUT_OF_MEMORY;
@@ -674,11 +570,9 @@ static void __bt_free_bt_device_sdp_info_s(bt_device_sdp_info_s *sdp_info)
        sdp_info = NULL;
 }
 
-static int __bt_get_bt_device_att_mtu_info_s(bt_device_att_mtu_info_s **dest, bluetooth_le_att_mtu_info_t *source)
+static int __bt_get_bt_gatt_client_att_mtu_info_s(bt_gatt_client_att_mtu_info_s **dest, bluetooth_le_att_mtu_info_t *source)
 {
-       *dest = (bt_device_att_mtu_info_s *)g_malloc0(sizeof(bt_device_att_mtu_info_s));
-       if (*dest == NULL)
-               return BT_ERROR_OUT_OF_MEMORY;
+       *dest = (bt_gatt_client_att_mtu_info_s *)g_malloc0(sizeof(bt_gatt_client_att_mtu_info_s));
 
        if (_bt_convert_address_to_string(&((*dest)->remote_address), &(source->device_address)) != BT_ERROR_NONE) {
                g_free(*dest);
@@ -697,10 +591,6 @@ static int __bt_get_bt_device_connection_info_s(bt_device_connection_info_s **de
 {
        *dest = (bt_device_connection_info_s *)g_malloc0(sizeof(bt_device_connection_info_s));
 
-       /* Fix : NULL_RETURNS */
-       if (*dest == NULL)
-               return BT_ERROR_OUT_OF_MEMORY;
-
        if (_bt_convert_address_to_string(&((*dest)->remote_address), &(source->device_addr)) != BT_ERROR_NONE) {
                __bt_free_bt_device_connection_info_s(*dest);
                return BT_ERROR_OUT_OF_MEMORY;
@@ -719,12 +609,32 @@ static int __bt_get_bt_device_connection_info_s(bt_device_connection_info_s **de
                break;
        }
 
-       (*dest)->disconn_reason = source->disc_reason;
+       switch (source->disc_reason) {
+/* After ACR for BT_DEVICE_DISCONNECT_REASON_AUTH_FAILED, will enable this code */
+#if 0
+       case (int)BLUETOOTH_ERROR_AUTH_FAILURE:
+               (*dest)->disconn_reason = BT_DEVICE_DISCONNECT_REASON_AUTH_FAILED;
+               break;
+#endif
+       case (int)BLUETOOTH_ERROR_CONNECTION_TIMEOUT:
+               (*dest)->disconn_reason = BT_DEVICE_DISCONNECT_REASON_TIMEOUT;
+               break;
+       case (int)BLUETOOTH_ERROR_REMOTE_USER_TERM:
+       case (int)BLUETOOTH_ERROR_REMOTE_LOW_RESOURCES:
+       case (int)BLUETOOTH_ERROR_REMOTE_POWER_OFF:
+               (*dest)->disconn_reason = BT_DEVICE_DISCONNECT_REASON_REMOTE;
+               break;
+       case (int)BLUETOOTH_ERROR_LOCAL_HOST_TERM:
+               (*dest)->disconn_reason = BT_DEVICE_DISCONNECT_REASON_LOCAL_HOST;
+               break;
+       default:
+               (*dest)->disconn_reason = BT_DEVICE_DISCONNECT_REASON_UNKNOWN;
+               break;
+       }
 
        return BT_ERROR_NONE;
 }
 
-#ifdef GATT_DIRECT
 static bt_gatt_server_read_value_requested_cb __bt_gatt_attribute_get_read_cb(
                                        bt_gatt_h service, bt_gatt_h attribute, bt_gatt_h *gatt_handle, void **user_data)
 {
@@ -744,6 +654,9 @@ static bt_gatt_server_read_value_requested_cb __bt_gatt_attribute_get_read_cb(
                for (l2 = serv->services; l2 != NULL; l2 = l2->next) {
                        bt_gatt_service_s *svc = l2->data;
 
+                       if (!svc)
+                               return NULL;
+
                        if (g_strcmp0(svc->path, svc_path) == 0) {
                                for (l3 = svc->characteristics; l3 != NULL; l3 = l3->next) {
                                        bt_gatt_characteristic_s *chr = l3->data;
@@ -777,62 +690,7 @@ static bt_gatt_server_read_value_requested_cb __bt_gatt_attribute_get_read_cb(
        }
        return NULL;
 }
-#else
-/* Search for handle */
-static bt_gatt_server_read_value_requested_cb __bt_gatt_attribute_get_read_cb(int att_handle, bt_gatt_server_h *server,
-                                                                bt_gatt_h *gatt_handle, void **user_data)
-{
-       const GSList *gatt_server_list = NULL;
-       const GSList *l1, *l2, *l3, *l4;
-
-       gatt_server_list = _bt_gatt_get_server_list();
-
-       for (l1 = gatt_server_list; l1 != NULL; l1 = l1->next) {
-               bt_gatt_server_s *serv = l1->data;
-
-               if (!serv)
-                       return NULL;
-
-               for (l2 = serv->services; l2 != NULL; l2 = l2->next) {
-                       bt_gatt_service_s *svc = l2->data;
-                       for (l3 = svc->characteristics; l3 != NULL; l3 = l3->next) {
-                               bt_gatt_characteristic_s *chr = l3->data;
-
-                               if (chr) {
-                                       if (chr->handle == att_handle) {
-                                               if (chr->read_requested_cb) {
-                                                       BT_INFO("GATT Server: Handle search match found! Its a characteristic: UUID [%s]", chr->uuid);
-                                                       *user_data = chr->read_requested_user_data;
-                                                       *gatt_handle = chr;
-                                                       *server = serv;
-                                                       return chr->read_requested_cb;
-                                               } else
-                                                       return NULL;
-                                       } else {
-                                               for (l4 = chr->descriptors; l4 != NULL; l4 = l4->next) {
-                                                       bt_gatt_descriptor_s *desc = l4->data;
-
-                                                       if (desc && desc->handle == att_handle) {
-                                                               if (desc->read_requested_cb) {
-                                                                       *user_data = desc->read_requested_user_data;
-                                                                       *gatt_handle = desc;
-                                                                       *server = serv;
-                                                                       BT_INFO("GATT Server: Handle search match found! Its a Desc UUID [%s]", desc->uuid);
-                                                                       return desc->read_requested_cb;
-                                                               } else
-                                                                       return NULL;
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-               }
-       }
-       return NULL;
-}
-#endif
 
-#ifdef GATT_DIRECT
 static bt_gatt_server_write_value_requested_cb __bt_gatt_attribute_get_value_change_cb(
                                        bt_gatt_h service, bt_gatt_h attribute, bt_gatt_h *gatt_handle, void **user_data)
 {
@@ -852,6 +710,9 @@ static bt_gatt_server_write_value_requested_cb __bt_gatt_attribute_get_value_cha
                for (l2 = serv->services; l2 != NULL; l2 = l2->next) {
                        bt_gatt_service_s *svc = l2->data;
 
+                       if (!svc)
+                               return NULL;
+
                        if (g_strcmp0(svc->path, svc_path) == 0) {
                                for (l3 = svc->characteristics; l3 != NULL; l3 = l3->next) {
                                        bt_gatt_characteristic_s *chr = l3->data;
@@ -885,61 +746,7 @@ static bt_gatt_server_write_value_requested_cb __bt_gatt_attribute_get_value_cha
        }
        return NULL;
 }
-#else
-static bt_gatt_server_write_value_requested_cb __bt_gatt_attribute_get_value_change_cb(int att_handle, bt_gatt_h *server,
-                                                                bt_gatt_h *gatt_handle, void **user_data)
-{
-       const GSList *gatt_server_list = NULL;
-       const GSList *l1, *l2, *l3, *l4;
-
-       gatt_server_list = _bt_gatt_get_server_list();
-
-       for (l1 = gatt_server_list; l1 != NULL; l1 = l1->next) {
-               bt_gatt_server_s *serv = l1->data;
-
-               if (!serv)
-                       return NULL;
 
-               for (l2 = serv->services; l2 != NULL; l2 = l2->next) {
-                       bt_gatt_service_s *svc = l2->data;
-                       for (l3 = svc->characteristics; l3 != NULL; l3 = l3->next) {
-                               bt_gatt_characteristic_s *chr = l3->data;
-
-                               if (chr) {
-                                       if (chr->handle == att_handle) {
-                                               if (chr->write_value_requested_cb) {
-                                                       BT_INFO("GATT Server: Handle search match found! Its a characteristic: UUID [%s]", chr->uuid);
-                                                       *user_data = chr->write_value_requested_user_data;
-                                                       *gatt_handle = chr;
-                                                       *server = svc;
-                                                       return chr->write_value_requested_cb;
-                                               } else
-                                                       return NULL;
-                                       } else {
-                                               for (l4 = chr->descriptors; l4 != NULL; l4 = l4->next) {
-                                                       bt_gatt_descriptor_s *desc = l4->data;
-
-                                                       if (desc && desc->handle == att_handle) {
-                                                               if (desc->write_value_requested_cb) {
-                                                                       *user_data = desc->write_value_requested_user_data;
-                                                                       *gatt_handle = desc;
-                                                                       *server = svc;
-                                                                       BT_INFO("GATT Server: Handle search match found! Its a Desc UUID [%s]", desc->uuid);
-                                                                       return desc->write_value_requested_cb;
-                                                               } else
-                                                                       return NULL;
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-               }
-       }
-       return NULL;
-}
-#endif
-
-#ifdef GATT_DIRECT
 static bt_gatt_server_characteristic_notification_state_changed_cb
                __bt_gatt_attribute_get_notification_change_cb(
                                        bt_gatt_h service, bt_gatt_h attribute, bt_gatt_h *gatt_handle, void **user_data)
@@ -978,47 +785,7 @@ static bt_gatt_server_characteristic_notification_state_changed_cb
        }
        return NULL;
 }
-#else
-static bt_gatt_server_characteristic_notification_state_changed_cb
-               __bt_gatt_attribute_get_notification_change_cb(
-                                        bt_gatt_server_h *server, int handle, bt_gatt_h *char_handle, void **user_data)
-{
-       const GSList *gatt_server_list = NULL;
-       const GSList *l1, *l2, *l3;
-
-       gatt_server_list = _bt_gatt_get_server_list();
 
-       for (l1 = gatt_server_list; l1 != NULL; l1 = l1->next) {
-               bt_gatt_server_s *serv = l1->data;
-
-               if (!serv)
-                       return NULL;
-
-               for (l2 = serv->services; l2 != NULL; l2 = l2->next) {
-                       bt_gatt_service_s *svc = l2->data;
-
-                       for (l3 = svc->characteristics; l3 != NULL; l3 = l3->next) {
-                               bt_gatt_characteristic_s *chr = l3->data;
-
-                               if (chr && chr->handle == handle) {
-                                       if (chr->notified_cb) {
-                                               *user_data = chr->notified_user_data;
-                                               *char_handle =  (bt_gatt_h*) chr;
-                                               *server = serv;
-                                               return chr->notification_changed_cb;
-                                       } else
-                                               return NULL;
-                               }
-                       }
-               }
-       }
-       return NULL;
-}
-
-
-#endif
-
-#ifdef GATT_DIRECT
 static bt_gatt_server_notification_sent_cb __bt_gatt_attribute_get_notification_completed_cb(
                                        bt_gatt_h service, bt_gatt_h attribute, void **user_data)
 {
@@ -1055,42 +822,6 @@ static bt_gatt_server_notification_sent_cb __bt_gatt_attribute_get_notification_
        }
        return NULL;
 }
-#else
-static bt_gatt_server_notification_sent_cb __bt_gatt_attribute_get_notification_completed_cb(
-                                        bt_gatt_server_h *server, int handle, bt_gatt_h *char_handle, void **user_data)
-{
-       const GSList *gatt_server_list = NULL;
-       const GSList *l1, *l2, *l3;
-
-       gatt_server_list = _bt_gatt_get_server_list();
-
-       for (l1 = gatt_server_list; l1 != NULL; l1 = l1->next) {
-               bt_gatt_server_s *serv = l1->data;
-
-               if (!serv)
-                       return NULL;
-
-               for (l2 = serv->services; l2 != NULL; l2 = l2->next) {
-                       bt_gatt_service_s *svc = l2->data;
-
-                       for (l3 = svc->characteristics; l3 != NULL; l3 = l3->next) {
-                               bt_gatt_characteristic_s *chr = l3->data;
-
-                               if (chr && chr->handle == handle) {
-                                       if (chr->notified_cb) {
-                                               *user_data = chr->notified_user_data;
-                                               *char_handle =  (bt_gatt_h*) chr;
-                                               *server = serv;
-                                               return chr->notified_cb;
-                                       } else
-                                               return NULL;
-                               }
-                       }
-               }
-       }
-       return NULL;
-}
-#endif
 
 static void __bt_free_bt_device_connection_info_s(bt_device_connection_info_s *conn_info)
 {
@@ -1114,7 +845,6 @@ void _bt_audio_event_proxy(int event, bt_audio_event_param_t *param, void *user_
        __bt_event_proxy(event, &new_param, user_data);
 }
 
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
 void _bt_hf_event_proxy(int event, bt_hf_event_param_t *param, void *user_data)
 {
        bluetooth_event_param_t new_param;
@@ -1124,7 +854,6 @@ void _bt_hf_event_proxy(int event, bt_hf_event_param_t *param, void *user_data)
        new_param.user_data = NULL;
        __bt_event_proxy(event, &new_param, user_data);
 }
-#endif
 
 void _bt_telephony_event_proxy(int event, telephony_event_param_t *param, void *user_data)
 {
@@ -1155,19 +884,6 @@ void _bt_hid_event_proxy(int event, hid_event_param_t *param, void *user_data)
        new_param.user_data = param->user_data;
        __bt_event_proxy(event, &new_param, user_data);
 }
-
-#ifndef GATT_DIRECT
-void _bt_gatt_server_event_proxy(int event, gatt_server_event_param_t *param, void *user_data)
-{
-       bluetooth_event_param_t new_param;
-       new_param.event = param->event;
-       new_param.param_data = param->param_data;
-       new_param.result = param->result;
-       new_param.user_data = NULL;
-       __bt_event_proxy(event, &new_param, user_data);
-}
-#endif
-
 /* LCOV_EXCL_STOP */
 
 static bool __bt_need_to_handle(int event)
@@ -1178,11 +894,26 @@ static bool __bt_need_to_handle(int event)
        case BLUETOOTH_EVENT_ADVERTISING_STARTED:
        case BLUETOOTH_EVENT_ADVERTISING_STOPPED:
        case BLUETOOTH_EVENT_GATT_CONNECTED:
+       case BLUETOOTH_EVENT_GATT_DISCONNECTED:
        case BLUETOOTH_EVENT_GATT_SERVER_VALUE_CHANGED:
        case BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_STATE_CHANGED:
        case BLUETOOTH_EVENT_GATT_SERVER_READ_REQUESTED:
        case BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_COMPLETED:
        case BLUETOOTH_EVENT_GATT_CLIENT_SERVICE_CHANGED:
+       case BLUETOOTH_EVENT_GATT_ATT_MTU_CHANGED:
+       case BLUETOOTH_EVENT_TDS_TRANSPORT_DATA_RECEIVED:
+       case BLUETOOTH_EVENT_TDS_ACTIVATION_RESULT:
+       case BLUETOOTH_EVENT_TDS_CONTROL_POINT_ENABLED:
+       case BLUETOOTH_EVENT_TDS_ACTIVATION_INDICATION:
+       case BLUETOOTH_EVENT_OTP_READ_CHAR_VAL:
+       case BLUETOOTH_EVENT_OTP_NOTIFICATION_ENABLED:
+       case BLUETOOTH_EVENT_OTP_WRITE_CHAR_VAL:
+       case BLUETOOTH_EVENT_OTP_INDICATION:
+       case BLUETOOTH_EVENT_OTC_STATE_CHANGED:
+       case BLUETOOTH_EVENT_GATT_READ_CHAR:
+       case BLUETOOTH_EVENT_GATT_WRITE_CHAR:
+       case BLUETOOTH_EVENT_GATT_READ_DESC:
+       case BLUETOOTH_EVENT_GATT_WRITE_DESC:
                return true;
        default:
                break;
@@ -1216,9 +947,7 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
        bluetooth_device_address_t *bd_addr = NULL;
        telephony_event_callid_t *call_data = NULL;
        char *device_addr = NULL;
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
        char *phone_number = NULL;
-#endif
        int error_code = BT_ERROR_NONE;
        int event_index = -1;
        bluetooth_network_device_info_t *dev_info = NULL;
@@ -1231,6 +960,7 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
        bt_le_data_length_params_t  *data_length_info = NULL;
        bt_ipsp_connection_info_t *bt_ipsp_iface_info = NULL;
        bt_pxp_property_changed_params_t *bt_pxp_property_info = NULL;
+       bluetooth_tds_activation_req_t *tds_act_req_info = NULL;
 
        if (!__bt_need_to_handle(event))
                return;
@@ -1334,7 +1064,7 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                auth_information = (bluetooth_authentication_request_info_t *)(param->param_data);
                _bt_convert_address_to_string(&device_addr, &auth_information->device_address);
 
-               BT_DBG("BUETOOTH_EVENT_PIN_REQUEST: name = %s address = %s", auth_information->device_name.name,
+               BT_DBG("BUETOOTH_EVENT_PIN_REQUEST: name = %s address = %s", auth_information->device_name,
                        device_addr);
 
                ((bt_adapter_authentication_req_cb)bt_event_slot_container[event_index].callback)
@@ -1348,7 +1078,7 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                auth_information = (bluetooth_authentication_request_info_t *)(param->param_data);
                _bt_convert_address_to_string(&device_addr, &auth_information->device_address);
 
-               BT_DBG("BLUETOOTH_EVENT_PASSKEY_REQUEST: name = %s address = %s", auth_information->device_name.name,
+               BT_DBG("BLUETOOTH_EVENT_PASSKEY_REQUEST: name = %s address = %s", auth_information->device_name,
                        device_addr);
 
                ((bt_adapter_authentication_req_cb)bt_event_slot_container[event_index].callback)
@@ -1473,6 +1203,7 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                else
                        error_code = _bt_get_error_code(param->result);
 
+               memset(&rfcomm_connection, 0x00, sizeof(bt_socket_connection_s));
                connection_ind = (bluetooth_rfcomm_connection_t *)(param->param_data);
 
                if (connection_ind) {
@@ -1506,6 +1237,7 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
        case BLUETOOTH_EVENT_RFCOMM_DISCONNECTED:
                BT_INFO("bt_socket_connection_state_changed_cb() will be called with BT_SOCKET_DISCONNECTED");
 
+               memset(&rfcomm_connection, 0x00, sizeof(bt_socket_connection_s));
                disconnection_ind = (bluetooth_rfcomm_disconnection_t *)(param->param_data);
 
                if (disconnection_ind) {
@@ -1626,6 +1358,89 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                /* This event don't be used in CAPI */
                break;
 
+       case BLUETOOTH_EVENT_MAP_CONNECTED:
+               BT_INFO("bt_map_client_??????????_cb() will be called");
+               bd_addr = (bluetooth_device_address_t *)(param->param_data);
+               _bt_convert_address_to_string(&device_addr, bd_addr);
+
+               /* TODO: MAP, see above */
+
+               if (device_addr != NULL)
+                       free(device_addr);
+               break;
+
+       case BLUETOOTH_EVENT_MAP_DISCONNECTED:
+               BT_INFO("bt_map_client_??????????_cb() will be called");
+               bd_addr = (bluetooth_device_address_t *)(param->param_data);
+               _bt_convert_address_to_string(&device_addr, bd_addr);
+
+               /* TODO: MAP, see above */
+
+               if (device_addr != NULL)
+                       free(device_addr);
+               break;
+       case BLUETOOTH_EVENT_MAP_LIST_FOLDERS_COMPLETE:
+               BT_INFO("BLUETOOTH_EVENT_MAP_LIST_FOLDERS_COMPLETE event");
+               //do not need to release memory, it is managed by bluetooth-frwk
+               bt_map_client_folders_s* folders_struct = (bt_map_client_folders_s*) param->param_data;
+               ((bt_map_client_list_folders_cb)bt_event_slot_container[event_index].callback)
+                                                       (param->result, folders_struct->names, folders_struct->size,
+                                                                       bt_event_slot_container[event_index].user_data);
+
+               if (device_addr != NULL)
+                       free(device_addr);
+               break;
+
+       case BLUETOOTH_EVENT_MAP_LIST_FILTER_FIELD_COMPLETE:
+               {
+                       BT_INFO(" BLUETOOTH_EVENT_MAP_LIST_FILTER_FIELD_COMPLETE event");
+                       bt_map_list_filter_fields_info_t* fields_info = (bt_map_list_filter_fields_info_t*)(param->param_data);
+
+                       ((bt_map_client_list_filter_fields_cb)bt_event_slot_container[event_index].callback)
+                                                       (param->result, fields_info->fields, fields_info->size,
+                                                       bt_event_slot_container[event_index].user_data);
+
+                       if (device_addr != NULL)
+                               free(device_addr);
+               }
+               break;
+
+       case BLUETOOTH_EVENT_MAP_LIST_MESSAGES_COMPLETE:
+               BT_INFO("BLUETOOTH_EVENT_MAP_LIST_MESSAGES_COMPLETE event");
+               bt_map_client_message_items_s* messages_struct = (bt_map_client_message_items_s*) param->param_data;
+               ((bt_map_client_list_messages_cb)bt_event_slot_container[event_index].callback)(
+                       param->result,
+                       (bt_map_client_message_item_s*)(messages_struct->message_items),
+                       messages_struct->size,
+                       bt_event_slot_container[event_index].user_data);
+               if (device_addr != NULL)
+                       free(device_addr);
+               break;
+
+       case BLUETOOTH_EVENT_MAP_GET_MESSAGE_COMPLETE:
+               BT_INFO("BLUETOOTH_EVENT_MAP_GET_MESSAGE_COMPLETE event");
+
+               bt_get_message_callback_data *data = bt_event_slot_container[event_index].user_data;
+               char *target_file = (char*) data->target_file;
+               void *user_data = data->user_data;
+               g_free(data);
+
+               bt_map_client_message_s *res = g_malloc0(sizeof(bt_map_client_message_s));
+               res->file_path = target_file;
+
+               ((bt_map_client_get_message_cb)bt_event_slot_container[event_index].callback)(
+                       param->result, res, user_data);
+               g_free(res);
+               break;
+
+       case BLUETOOTH_EVENT_MAP_PUSH_MESSAGE_COMPLETE:
+               BT_INFO("BLUETOOTH_EVENT_MAP_PUSH_MESSAGE_COMPLETE event");
+
+               ((bt_map_client_push_message_cb)bt_event_slot_container[event_index].callback)(
+                       param->result,
+                       bt_event_slot_container[event_index].user_data);
+               break;
+
        case BLUETOOTH_EVENT_NETWORK_SERVER_CONNECTED:
                BT_INFO("BLUETOOTH_EVENT_NETWORK_SERVER_CONNECTED");
                dev_info = (bluetooth_network_device_info_t *)(param->param_data);
@@ -2010,23 +1825,32 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
        case BLUETOOTH_EVENT_GATT_CONNECTED: {
                bt_gatt_client_s *client_s;
                bt_gatt_connection_state_changed_cb cb = NULL;
+               bool is_pxp_initialized = FALSE;
                BT_INFO("BLUETOOTH_EVENT_GATT_CONNECTED");
                _bt_convert_address_to_string(&device_addr,
                                (bluetooth_device_address_t *)(param->param_data));
                client_s = (bt_gatt_client_s *)_bt_gatt_get_client(device_addr);
-               if (client_s && !client_s->services_discovered) {
-                       if (_bt_gatt_client_update_services(client_s) != BT_ERROR_NONE)
-                               BT_ERR("_bt_gatt_client_update_services failed");
-                       else
-                               client_s->services_discovered = true;
-               }
-               if (client_s)
+               if (client_s) {
                        client_s->connected = true;
+                       _bt_gatt_client_update_services(client_s);
+               }
                if (event_index >= 0)
                        cb = bt_event_slot_container[event_index].callback;
                if (cb)
                        cb(_bt_get_error_code(param->result), TRUE, device_addr,
                                bt_event_slot_container[event_index].user_data);
+
+               /* The below check is for calling the callback for proximity profile reporter/Monitor role */
+               _bt_check_proximity_is_initialized(&is_pxp_initialized);
+               if (is_pxp_initialized)
+                       _bt_proximity_connection_set_state_changed(param->result, device_addr, TRUE);
+
+               /* TDS Seeker */
+               _bt_tds_update_seeker_connection_state_changed(param->result, device_addr, TRUE);
+
+               /* OTP Client */
+               _bt_otp_client_connection_state_changed(param->result, device_addr, TRUE);
+
                g_free(device_addr);
                device_addr = NULL;
                break;
@@ -2034,6 +1858,7 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
        case BLUETOOTH_EVENT_GATT_DISCONNECTED: {
                bt_gatt_client_s *client_s;
                bt_gatt_connection_state_changed_cb cb = NULL;
+               bool is_pxp_initialized = FALSE;
                BT_INFO("BLUETOOTH_EVENT_GATT_DISCONNECTED");
                _bt_convert_address_to_string(&device_addr,
                                (bluetooth_device_address_t *)(param->param_data));
@@ -2045,12 +1870,23 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                if (cb)
                        cb(_bt_get_error_code(param->result), FALSE, device_addr,
                                bt_event_slot_container[event_index].user_data);
+               /* The below check is for calling the callback for proximity profile reporter/Monitor role */
+               _bt_check_proximity_is_initialized(&is_pxp_initialized);
+               if (is_pxp_initialized)
+                       _bt_proximity_connection_set_state_changed(param->result, device_addr, FALSE);
+
+               /* TDS Seeker */
+               _bt_tds_update_seeker_connection_state_changed(param->result, device_addr, FALSE);
+
+               /* OTP Client */
+               _bt_otp_client_connection_state_changed(param->result, device_addr, FALSE);
+
                g_free(device_addr);
                device_addr = NULL;
                break;
        }
-#ifdef TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT
-       case BLUETOOTH_EVENT_GATT_SVC_CHAR_DISCOVERED: {
+       case BLUETOOTH_EVENT_GATT_SVC_CHAR_DISCOVERED:
+       if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT) {
                BT_INFO("BLUETOOTH_EVENT_GATT_SVC_CHAR_DISCOVERED");
                if (_bt_gatt_is_legacy_client_mode()) {
                        bt_gatt_discovered_char_t *svc_char = param->param_data;
@@ -2066,24 +1902,24 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                        _bt_unset_cb(BT_EVENT_GATT_CLIENT_CHARACTERISTIC_DISCOVERED_LEGACY);
                }
                break;
+       } else {
+               break; /* goto default */
        }
-#endif
        case BLUETOOTH_EVENT_GATT_CHAR_VAL_CHANGED:
-               BT_INFO("BLUETOOTH_EVENT_GATT_CHAR_VAL_CHANGED");
                char_val = (bt_gatt_char_value_t *)(param->param_data);
 
-#ifdef TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT
-               if (_bt_gatt_is_legacy_client_mode()) {
-                       bt_gatt_char_value_t *char_val = param->param_data;
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT && _bt_gatt_is_legacy_client_mode()) {
+                       if (_bt_gatt_is_legacy_client_mode()) {
+                               bt_gatt_char_value_t *char_val = param->param_data;
 
-                       if (char_val == NULL)
-                               return;
-                       ((bt_gatt_characteristic_changed_cb)bt_event_slot_container[event_index].callback)
-                               (char_val->char_handle, char_val->char_value, char_val->val_len,
-                                bt_event_slot_container[event_index].user_data);
-                       break;
+                               if (char_val == NULL)
+                                       return;
+                               ((bt_gatt_characteristic_changed_cb)bt_event_slot_container[event_index].callback)
+                                       (char_val->char_handle, char_val->char_value, char_val->val_len,
+                                        bt_event_slot_container[event_index].user_data);
+                               break;
+                       }
                }
-#endif
                if (char_val == NULL)
                        return;
 
@@ -2092,106 +1928,48 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                  bt_event_slot_container[event_index].user_data);
 
                break;
-       case BLUETOOTH_EVENT_GATT_READ_CHAR: {
-               int ret;
-               bt_gatt_client_request_completed_cb cb = bt_event_slot_container[event_index].callback;
-               bt_gatt_client_cb_data_s *cb_data = bt_event_slot_container[event_index].user_data;
-
+       case BLUETOOTH_EVENT_GATT_READ_CHAR:
                BT_INFO("BLUETOOTH_EVENT_GATT_READ_CHAR");
 
-#ifdef TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT
-               if (_bt_gatt_is_legacy_client_mode()) {
-                       bt_gatt_char_value_t *char_val = param->param_data;
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT && _bt_gatt_is_legacy_client_mode()) {
+                       if (_bt_gatt_is_legacy_client_mode()) {
+                               bt_gatt_char_value_t *char_val = param->param_data;
 
-                       ((bt_gatt_characteristic_read_cb)bt_event_slot_container[event_index].callback)
-                               (char_val->char_value, char_val->val_len,
-                                bt_event_slot_container[event_index].user_data);
-                       _bt_unset_cb(BT_EVENT_GATT_CLIENT_READ_CHARACTERISTIC_LEGACY);
-                       break;
-               }
-#endif
-               _bt_unset_cb(BT_EVENT_GATT_CLIENT_READ_CHARACTERISTIC);
-               ret = _bt_get_error_code(param->result);
-               if (ret == BT_ERROR_NONE) {
-                       char_val = (bt_gatt_char_value_t *)(param->param_data);
-                       bt_gatt_set_value(cb_data->gatt_handle,
-                                       (char *)char_val->char_value, (int)char_val->val_len);
+                               ((bt_gatt_characteristic_read_cb)bt_event_slot_container[event_index].callback)
+                                       (char_val->char_value, char_val->val_len,
+                                        bt_event_slot_container[event_index].user_data);
+                               _bt_unset_cb(BT_EVENT_GATT_CLIENT_READ_CHARACTERISTIC_LEGACY);
+                               break;
+                       }
                }
-               cb(ret, cb_data->gatt_handle, cb_data->user_data);
-               g_free(cb_data);
-
+               _handle_gatt_client_read_completed_event(param->result,
+                                                        param->param_data);
                break;
-       }
-       case BLUETOOTH_EVENT_GATT_WRITE_CHAR: {
-               int ret;
-               bt_gatt_client_request_completed_cb cb = bt_event_slot_container[event_index].callback;
-               bt_gatt_client_cb_data_s *cb_data = bt_event_slot_container[event_index].user_data;
-
-               BT_INFO("BLUETOOTH_EVENT_GATT_WRITE_CHAR");
-
-#ifdef TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT
-               if (_bt_gatt_is_legacy_client_mode()) {
-                       ((bt_gatt_characteristic_write_cb)bt_event_slot_container[event_index].callback)
-                               (bt_event_slot_container[event_index].user_data);
+       case BLUETOOTH_EVENT_GATT_WRITE_CHAR:
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT && _bt_gatt_is_legacy_client_mode()) {
+                       if (_bt_gatt_is_legacy_client_mode()) {
+                               ((bt_gatt_characteristic_write_cb)bt_event_slot_container[event_index].callback)
+                                       (bt_event_slot_container[event_index].user_data);
 
-                       _bt_unset_cb(BT_EVENT_GATT_CLIENT_WRITE_CHARACTERISTIC_LEGACY);
-                       break;
+                               _bt_unset_cb(BT_EVENT_GATT_CLIENT_WRITE_CHARACTERISTIC_LEGACY);
+                               break;
+                       }
                }
-#endif
-               _bt_unset_cb(BT_EVENT_GATT_CLIENT_WRITE_CHARACTERISTIC);
-
-               /* Send actual ATT error code to Application
-               * if param->result is not BLUETOOTH_ERROR_INTERNAL.
-               */
-               if (param->result == BLUETOOTH_ERROR_INTERNAL)
-                       ret = _bt_get_error_code(param->result);
-               else
-                       ret = param->result;
-
-               if (ret != BT_ERROR_NONE)
-                       BT_ERR("BLUETOOTH_EVENT_GATT_WRITE_CHAR - ret [%d]", ret);
-
-               cb(ret, cb_data->gatt_handle, cb_data->user_data);
-               g_free(cb_data);
 
+               _handle_gatt_client_write_completed_event(param->result,
+                                                         param->param_data);
                break;
-       }
-       case BLUETOOTH_EVENT_GATT_READ_DESC: {
-               int ret;
-               bt_gatt_client_request_completed_cb cb = bt_event_slot_container[event_index].callback;
-               bt_gatt_client_cb_data_s *cb_data = bt_event_slot_container[event_index].user_data;
-               bt_gatt_char_property_t *desc_val = NULL;
-
+       case BLUETOOTH_EVENT_GATT_READ_DESC:
                BT_INFO("BLUETOOTH_EVENT_GATT_READ_DESC");
-
-               _bt_unset_cb(BT_EVENT_GATT_CLIENT_READ_DESCRIPTOR);
-               ret = _bt_get_error_code(param->result);
-               if (ret == BT_ERROR_NONE) {
-                       desc_val = (bt_gatt_char_property_t *)(param->param_data);
-                       bt_gatt_set_value(cb_data->gatt_handle,
-                                       desc_val->description, (int)desc_val->val_len);
-               }
-               cb(ret, cb_data->gatt_handle, cb_data->user_data);
-               g_free(cb_data);
-
+               _handle_gatt_client_read_completed_event(param->result,
+                                                        param->param_data);
                break;
-       }
-       case BLUETOOTH_EVENT_GATT_WRITE_DESC: {
-               int ret;
-               bt_gatt_client_request_completed_cb cb = bt_event_slot_container[event_index].callback;
-               bt_gatt_client_cb_data_s *cb_data = bt_event_slot_container[event_index].user_data;
-
+       case BLUETOOTH_EVENT_GATT_WRITE_DESC:
                BT_INFO("BLUETOOTH_EVENT_GATT_WRITE_DESC");
-
-               _bt_unset_cb(BT_EVENT_GATT_CLIENT_WRITE_DESCRIPTOR);
-               ret = _bt_get_error_code(param->result);
-               cb(ret, cb_data->gatt_handle, cb_data->user_data);
-               g_free(cb_data);
-
+               _handle_gatt_client_write_completed_event(param->result,
+                                                         param->param_data);
                break;
-       }
        case BLUETOOTH_EVENT_GATT_SERVER_READ_REQUESTED: {
-#ifdef GATT_DIRECT
                bt_gatt_read_req_t *read_req = param->param_data;
                bt_gatt_server_read_value_requested_cb cb;
                void *user_data = NULL;
@@ -2203,50 +1981,16 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                if (cb == NULL) {
                        bluetooth_gatt_send_response(read_req->req_id,
                                                                BLUETOOTH_GATT_ATT_REQUEST_TYPE_READ,
-                                                               BLUETOOTH_ERROR_INTERNAL, 0, NULL, 0);
+                                                               BLUETOOTH_ATT_ERROR_INTERNAL, 0, NULL, 0);
                        return;
                }
 
                cb(read_req->address, read_req->req_id, read_req->service_handle,
                                        gatt_handle, read_req->offset,
                                        user_data);
-#else
-               BT_INFO("BLUETOOTH_EVENT_GATT_SERVER_READ_REQUESTED");
-                bluetooth_gatt_server_read_requested_info_t *read_req = (bluetooth_gatt_server_read_requested_info_t *)(param->param_data);
-
-                bt_gatt_server_read_value_requested_cb cb_read;
-                void *user_data_read = NULL;
-                bt_gatt_h gatt_handle = NULL;
-                bt_gatt_server_h serv = NULL;
-                cb_read = __bt_gatt_attribute_get_read_cb(read_req->attribute_handle,
-                                              &serv, &gatt_handle, &user_data_read);
-
-                /* Copy data */
-                _bt_convert_address_to_string(&device_addr, &read_req->device_address);
-
-                BT_INFO("GATT Server Read Req: Addr      [%s]", device_addr);
-                BT_INFO("GATT Server Read Req: Att handle[%d]", read_req->attribute_handle);
-                BT_INFO("GATT Server Read Req: Conn ID   [%d]", read_req->connection_id);
-                BT_INFO("GATT Server Read Req: Trans ID  [%d]", read_req->request_id);
-                BT_INFO("GATT Server Read Req: Offset    [%d]", read_req->offset);
-                BT_INFO("GATT Server Read Req: Is Long   [%d]", read_req->is_long);
-
-                if (cb_read == NULL) {
-                        BT_INFO("GATT Server: App has not set the Read requested callback..for the current handle");
-                        bt_gatt_server_send_response(read_req->request_id, BT_GATT_REQUEST_TYPE_READ, 0, BLUETOOTH_ERROR_INTERNAL, NULL, 0);
-                        BT_INFO("GATT Server: Internal response sent for Read Request");
-                        return;
-                }
-
-                cb_read(device_addr, read_req->request_id, serv, gatt_handle, read_req->offset, user_data_read);
-
-                if (device_addr != NULL)
-                        free(device_addr);
-#endif
                break;
        }
        case BLUETOOTH_EVENT_GATT_SERVER_VALUE_CHANGED: {
-#ifdef GATT_DIRECT
                bt_gatt_value_change_t *value_change = param->param_data;
                bt_gatt_server_write_value_requested_cb cb;
                void *user_data = NULL;
@@ -2258,64 +2002,19 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                if (cb == NULL) {
                        if (value_change->response_needed == FALSE)
                                return;
+
                        bluetooth_gatt_send_response(value_change->req_id,
                                                                BLUETOOTH_GATT_ATT_REQUEST_TYPE_WRITE,
-                                                               BLUETOOTH_ERROR_INTERNAL, 0, NULL, 0);
+                                                               BLUETOOTH_ATT_ERROR_INTERNAL, 0, NULL, 0);
                        return;
                }
 
                cb(value_change->address, value_change->req_id, value_change->service_handle,
-                                       gatt_handle, value_change->offset, value_change->response_needed,
+                                       gatt_handle, (bool)value_change->response_needed, value_change->offset,
                                        (char *)value_change->att_value, value_change->val_len, user_data);
-#else
-               BT_INFO("BLUETOOTH_EVENT_GATT_SERVER_WRITE_REQUESTED");
-                bluetooth_gatt_server_write_requested_info_t *write_req = (bluetooth_gatt_server_write_requested_info_t *)(param->param_data);
-                char *val = g_malloc0(write_req->length);
-                memcpy(val, write_req->data.data, write_req->length);
-
-                bt_gatt_server_write_value_requested_cb cb_wr;
-                void *user_data_write = NULL;
-                bt_gatt_h gatt_handle = NULL;
-                bt_gatt_h server = NULL;
-                cb_wr = __bt_gatt_attribute_get_value_change_cb(write_req->attribute_handle,
-                                              &server, &gatt_handle, &user_data_write);
-                /* Copy data */
-                _bt_convert_address_to_string(&device_addr, &write_req->device_address);
-
-                BT_INFO("GATT Server Write Req: Address    [%s]", device_addr);
-                BT_INFO("GATT Server Write Req: Att handle [%d]", write_req->attribute_handle);
-                BT_INFO("GATT Server Write Req: Conn ID    [%d]", write_req->connection_id);
-                BT_INFO("GATT Server Write Req: Trans ID   [%d]", write_req->request_id);
-                BT_INFO("GATT Server Write Req: Offset     [%d]", write_req->offset);
-                BT_INFO("GATT Server Write Req: Length     [%d]", write_req->length);
-                BT_INFO("GATT Server Write Req: Need Resp  [%d]", write_req->need_resp);
-
-                if (cb_wr == NULL) {
-                        BT_INFO("GATT Server: App has not set the Write requested callback..for the current handle");
-                        if (write_req->need_resp) {
-                                BT_INFO("GATT Server: Send Response to Remote GATT client");
-                                bt_gatt_server_send_response(write_req->request_id, BT_GATT_REQUEST_TYPE_WRITE, 0, BLUETOOTH_ERROR_INTERNAL, NULL, 0);
-                                BT_INFO("GATT Server: Internal response sent for Write Request");
-                        }
-                        return;
-                }
-
-                cb_wr(device_addr, write_req->request_id, server, gatt_handle,
-                               write_req->need_resp, write_req->offset,
-                               val, write_req->length, user_data_write);
-
-                /* Free Data */
-                if (val != NULL) {
-                        g_free(val);
-                }
-
-                if (device_addr != NULL)
-                        free(device_addr);
-#endif
                break;
        }
        case BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_STATE_CHANGED: {
-#ifdef GATT_DIRECT
                bt_gatt_char_notify_change_t *value_change = param->param_data;
                bt_gatt_server_characteristic_notification_state_changed_cb cb;
                void *user_data = NULL;
@@ -2329,28 +2028,9 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
 
                cb(value_change->att_notify, value_change->service_handle,
                                gatt_handle, user_data);
-#else
-               BT_INFO("BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_STATE_CHANGED");
-                bluetooth_gatt_server_notification_changed_t *notif_info = (bluetooth_gatt_server_notification_changed_t*)(param->param_data);
-               bt_gatt_server_characteristic_notification_state_changed_cb cb;
-
-                bt_gatt_server_h server_handle = NULL;
-                bt_gatt_h char_handle = NULL;
-
-                void *user_data_cfm = NULL;
-
-                cb = __bt_gatt_attribute_get_notification_change_cb(&server_handle,
-                                                notif_info->handle, &char_handle, &user_data_cfm);
-
-                if (cb == NULL)
-                        return;
-
-                cb(notif_info->notification, server_handle, char_handle, user_data_cfm);
-#endif
                break;
        }
        case BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_COMPLETED: {
-#ifdef GATT_DIRECT
                bt_gatt_indicate_confirm_t *confrim_status = param->param_data;
                bt_gatt_server_notification_sent_cb cb;
                void *user_data = NULL;
@@ -2364,36 +2044,11 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                cb(_bt_get_error_code(param->result), confrim_status->address,
                                confrim_status->service_handle,
                                confrim_status->att_handle, confrim_status->complete, user_data);
-#else
-               BT_INFO("BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_COMPLETED");
-                bluetooth_gatt_server_indicate_confirmed_info_t *cfm_info = (bluetooth_gatt_server_indicate_confirmed_info_t*)(param->param_data);
-                bt_gatt_server_notification_sent_cb cb;
-
-                bt_gatt_server_h server_handle = NULL;
-                bt_gatt_h char_handle = NULL;
-
-                void *user_data_cfm = NULL;
 
-                cb = __bt_gatt_attribute_get_notification_completed_cb(&server_handle,
-                                                cfm_info->handle, &char_handle, &user_data_cfm);
-
-                if (cb == NULL)
-                        return;
-
-                /* Copy data */
-                _bt_convert_address_to_string(&device_addr, &cfm_info->device_address);
-
-                cb(_bt_get_error_code(param->result), device_addr,
-                                server_handle, char_handle, cfm_info->completed, user_data_cfm);
-                /* Free Data */
-                if (device_addr != NULL)
-                        free(device_addr);
-
-#endif
                break;
        }
-#ifdef TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT
-       case BLUETOOTH_EVENT_GATT_SVC_CHAR_DESC_DISCOVERED: {
+       case BLUETOOTH_EVENT_GATT_SVC_CHAR_DESC_DISCOVERED:
+       if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT) {
                BT_INFO("BLUETOOTH_EVENT_GATT_SVC_CHAR_DESC_DISCOVERED");
                if (_bt_gatt_is_legacy_client_mode()) {
                        bt_gatt_char_property_t *char_desc = param->param_data;
@@ -2407,8 +2062,9 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                        _bt_unset_cb(BT_EVENT_GATT_CLIENT_CHARACTERISTIC_DESCRIPTOR_DISCOVERED_LEGACY);
                }
                break;
+       } else {
+               break; /* goto default */
        }
-#endif
        case BLUETOOTH_EVENT_GATT_SERVER_CHARACTERISTIC_VALUE_CHANGED: {
                const GSList *server_list = NULL;
                BT_INFO("BLUETOOTH_EVENT_GATT_SERVER_CHARACTERISTIC_VALUE_CHANGED");
@@ -2428,7 +2084,8 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
 
                                for (char_list = svc->characteristics; char_list; char_list = g_slist_next(char_list)) {
                                        bt_gatt_characteristic_s *chr = (bt_gatt_characteristic_s *)char_list->data;
-                                       if (chr->path && strcmp(char_val->char_handle, chr->path) == 0) {
+
+                                       if (chr && g_strcmp0(char_val->char_handle, chr->path) == 0) {
                                                g_free(chr->value);
                                                chr->value = NULL;
                                                if (char_val->val_len > 0)
@@ -2437,7 +2094,7 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                                                /* TODO : Fix build error temporary */
                                                if (chr->write_value_requested_cb)
                                                        chr->write_value_requested_cb(NULL, 0, (bt_gatt_server_h)serv, (bt_gatt_h)chr,
-                                                                                       0, TRUE, (char*)char_val->char_value, char_val->val_len,
+                                                                                       TRUE, 0, (char *)char_val->char_value, char_val->val_len,
                                                                                        chr->write_value_requested_user_data);
                                        }
                                }
@@ -2445,7 +2102,6 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                }
                break;
        }
-/* LCOV_EXCL_STOP */
        case BLUETOOTH_EVENT_GATT_CLIENT_SERVICE_CHANGED: {
                bt_gatt_service_change_t *service_change =
                        (bt_gatt_service_change_t *)(param->param_data);
@@ -2463,6 +2119,12 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                _bt_convert_address_to_string(&device_addr,
                                &service_change->device_addr);
 
+               /* Check if TDS Service removed */
+               _bt_tds_check_service_changed(device_addr, service_change);
+
+               /* Check if OTS Service removed */
+               _bt_otp_check_service_changed(device_addr, service_change);
+
                client = _bt_gatt_get_client(device_addr);
                g_free(device_addr);
                device_addr = NULL;
@@ -2521,6 +2183,7 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                }
                break;
        }
+/* LCOV_EXCL_STOP */
        case BLUETOOTH_EVENT_ADVERTISING_STARTED:
                BT_INFO("BLUETOOTH_EVENT_ADVERTISING_STARTED");
                adv_handle = (int *)(param->param_data);
@@ -2536,7 +2199,7 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
 
                break;
        case BLUETOOTH_EVENT_ADVERTISING_STOPPED:
-               BT_INFO("BLUETOOTH_EVENT_ADVERTISING_STOPPED");
+               BT_INFO("BLUETOOTH_EVENT_ADVERTISING_STOPPED"); /* LCOV_EXCL_START */
                adv_handle = (int *)(param->param_data);
 
                if (bt_event_slot_container[event_index].callback != NULL) {
@@ -2546,7 +2209,7 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                }
 
                _bt_adapter_le_invoke_advertising_state_cb(*adv_handle,
-                               _bt_get_error_code(param->result), BT_ADAPTER_LE_ADVERTISING_STOPPED);
+                               _bt_get_error_code(param->result), BT_ADAPTER_LE_ADVERTISING_STOPPED); /* LCOV_EXCL_STOP */
 
                break;
        case BLUETOOTH_EVENT_MANUFACTURER_DATA_CHANGED: /* LCOV_EXCL_START */
@@ -2589,12 +2252,26 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                 bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_GATT_ATT_MTU_CHANGED: {
-               bt_device_att_mtu_info_s *mtu_info = NULL;
+               bt_gatt_client_att_mtu_info_s *mtu_info = NULL;
+               bt_gatt_client_s *client = NULL;
 
                BT_INFO("BLUETOOTH_EVENT_GATT_ATT_MTU_CHANGED");
-               __bt_get_bt_device_att_mtu_info_s(&mtu_info, (bluetooth_le_att_mtu_info_t *)(param->param_data));
-               ((bt_device_att_mtu_changed_cb)bt_event_slot_container[event_index].callback)
-                (_bt_get_error_code(param->result), mtu_info, bt_event_slot_container[event_index].user_data);
+               __bt_get_bt_gatt_client_att_mtu_info_s(&mtu_info, (bluetooth_le_att_mtu_info_t *)(param->param_data));
+
+               client = _bt_gatt_get_client(mtu_info->remote_address);
+
+               if (client && client->connected && client->att_mtu_changed_cb)
+                       client->att_mtu_changed_cb(client,
+                                       (const bt_gatt_client_att_mtu_info_s *)mtu_info,
+                                       client->att_mtu_changed_user_data);
+
+               if (bt_event_slot_container[event_index].callback)
+                       ((bt_device_att_mtu_changed_cb)bt_event_slot_container[event_index].callback)
+                        (_bt_get_error_code(param->result), (bt_device_att_mtu_info_s *)mtu_info,
+                        bt_event_slot_container[event_index].user_data);
+
+               g_free(mtu_info);
+
                break;
        }
        case BLUETOOTH_EVENT_LE_DATA_LENGTH_CHANGED:
@@ -2608,10 +2285,10 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                bt_event_slot_container[event_index].user_data);
 
                if (device_addr != NULL)
-                       free(device_addr); /* LCOV_EXCL_STOP */
+                       free(device_addr);
                break;
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
-       case BLUETOOTH_PBAP_CONNECTED: {
+       case BLUETOOTH_PBAP_CONNECTED:
+       if (TIZEN_PROFILE_WEARABLE_IVI) {
                bt_pbap_connection_state_changed_cb cb = bt_event_slot_container[event_index].callback;
                void *user_data = bt_event_slot_container[event_index].user_data;
                bt_pbap_connected_t *connected = (bt_pbap_connected_t *)param->param_data;
@@ -2625,8 +2302,11 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                        free(device_addr);
 
                break;
+       } else {
+               break; /* goto default; */
        }
-       case BLUETOOTH_PBAP_DISCONNECTED: {
+       case BLUETOOTH_PBAP_DISCONNECTED:
+       if (TIZEN_PROFILE_WEARABLE_IVI) {
                bt_pbap_connection_state_changed_cb cb = bt_event_slot_container[event_index].callback;
                void *user_data = bt_event_slot_container[event_index].user_data;
                bt_pbap_connected_t *connected = (bt_pbap_connected_t *)param->param_data;
@@ -2640,8 +2320,11 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                        free(device_addr);
 
                break;
+       } else {
+               break; /* goto default; */
        }
-       case BLUETOOTH_PBAP_PHONEBOOK_SIZE: {
+       case BLUETOOTH_PBAP_PHONEBOOK_SIZE:
+       if (TIZEN_PROFILE_WEARABLE_IVI) {
                bt_pbap_phone_book_size_cb cb = bt_event_slot_container[event_index].callback;
                void *user_data = bt_event_slot_container[event_index].user_data;
                bt_pbap_phonebook_size_t *pb_size = (bt_pbap_phonebook_size_t *)param->param_data;
@@ -2656,8 +2339,11 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                        free(device_addr);
 
                break;
+       } else {
+               break; /* goto default; */
        }
-       case BLUETOOTH_PBAP_PHONEBOOK_PULL: {
+       case BLUETOOTH_PBAP_PHONEBOOK_PULL:
+       if (TIZEN_PROFILE_WEARABLE_IVI) {
                bt_pbap_phone_book_received_cb cb = bt_event_slot_container[event_index].callback;
                void *user_data = bt_event_slot_container[event_index].user_data;
                bt_pbap_phonebook_pull_t *pb_pull = (bt_pbap_phonebook_pull_t *)(param->param_data);
@@ -2673,8 +2359,11 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                        free(device_addr);
 
                break;
+       } else {
+               break; /* goto default; */
        }
-       case BLUETOOTH_PBAP_VCARD_LIST: {
+       case BLUETOOTH_PBAP_VCARD_LIST:
+       if (TIZEN_PROFILE_WEARABLE_IVI) {
                int i;
                bt_pbap_list_vcards_cb cb = bt_event_slot_container[event_index].callback;
                void *user_data = bt_event_slot_container[event_index].user_data;
@@ -2703,10 +2392,12 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                                g_free((char *)vcard_info[i].contact_name);
                        free(vcard_info);
                }
-
                break;
+       } else {
+               break; /* goto default; */
        }
-       case BLUETOOTH_PBAP_VCARD_PULL: {
+       case BLUETOOTH_PBAP_VCARD_PULL:
+       if (TIZEN_PROFILE_WEARABLE_IVI) {
                bt_pbap_phone_book_received_cb cb = bt_event_slot_container[event_index].callback;
                void *user_data = bt_event_slot_container[event_index].user_data;
                bt_pbap_vcard_pull_t *vc_pull = (bt_pbap_vcard_pull_t *)(param->param_data);
@@ -2722,8 +2413,11 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                        free(device_addr);
 
                break;
+       } else {
+               break; /* goto default; */
        }
-       case BLUETOOTH_PBAP_PHONEBOOK_SEARCH: {
+       case BLUETOOTH_PBAP_PHONEBOOK_SEARCH:
+       if (TIZEN_PROFILE_WEARABLE_IVI) {
                bt_pbap_list_vcards_cb cb = bt_event_slot_container[event_index].callback;
                void *user_data = bt_event_slot_container[event_index].user_data;
                bt_pbap_phonebook_search_list_t *vc_list = (bt_pbap_phonebook_search_list_t *)(param->param_data);
@@ -2743,12 +2437,14 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                if (device_addr != NULL)
                        free(device_addr);
 
-               if (vcard_info != NULL)
-                       free(vcard_info);
+               g_free(vcard_info);
 
                break;
+       } else {
+               break; /* goto default; */
        }
        case BLUETOOTH_EVENT_HF_CONNECTED:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_CONNECTED");
                device_addr = (char *)(param->param_data);
                ((bt_audio_connection_state_changed_cb)bt_event_slot_container[event_index].callback)
@@ -2756,6 +2452,7 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_DISCONNECTED:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_DISCONNECTED");
                device_addr = (char *)(param->param_data);
                ((bt_audio_connection_state_changed_cb)bt_event_slot_container[event_index].callback)
@@ -2763,6 +2460,7 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_AUDIO_CONNECTED:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_AUDIO_CONNECTED");
                device_addr = (char *)(param->param_data);
                ((bt_hf_sco_state_changed_cb)bt_event_slot_container[event_index].callback)
@@ -2770,6 +2468,7 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_AUDIO_DISCONNECTED:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_AUDIO_DISCONNECTED");
                device_addr = (char *)(param->param_data);
                ((bt_hf_sco_state_changed_cb)bt_event_slot_container[event_index].callback)
@@ -2777,6 +2476,7 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_RING_INDICATOR:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_RING_INDICATOR");
                phone_number = (char *)(param->param_data);
                ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback)
@@ -2784,66 +2484,77 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_CALL_TERMINATED:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_CALL_TERMINATED");
                ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback)
                (BT_HF_REMOTE_CALL_EVENT_CALL_TERMINATED, NULL,
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_CALL_FAILED_TO_DIAL:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_CALL_FAILED_TO_DIAL");
                ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback)
                (BT_HF_REMOTE_CALL_EVENT_FAILED_TO_DIALING, NULL,
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_CALL_IDLE:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_CALL_IDLE");
                ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback)
                (BT_HF_REMOTE_CALL_EVENT_IDLE, NULL,
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_CALLSETUP_INCOMING:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_CALLSETUP_INCOMING");
                ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback)
                (BT_HF_REMOTE_CALL_EVENT_INCOMING, NULL,
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_CALLSETUP_DIALING:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_CALLSETUP_DIALING");
                ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback)
                (BT_HF_REMOTE_CALL_EVENT_DIALING, NULL,
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_CALLSETUP_ALERTING:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_CALLSETUP_ALERTING");
                ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback)
                (BT_HF_REMOTE_CALL_EVENT_ALERTING, NULL,
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_CALL_STARTED:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_CALL_STARTED");
                ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback)
                (BT_HF_REMOTE_CALL_EVENT_CALL_STARTED, NULL,
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_CALL_ENDED:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_CALL_ENDED");
                ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback)
                (BT_HF_REMOTE_CALL_EVENT_CALL_ENDED, NULL,
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_VOICE_RECOGNITION_ENABLED:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_VOICE_RECOGNITION_ENABLED");
                ((bt_hf_remote_device_state_changed_cb)bt_event_slot_container[event_index].callback)
                (BT_HF_REMOTE_DEVICE_STATE_VOICE_RECOGNITON, TRUE,
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_VOICE_RECOGNITION_DISABLED:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_VOICE_RECOGNITION_DISABLED");
                ((bt_hf_remote_device_state_changed_cb)bt_event_slot_container[event_index].callback)
                (BT_HF_REMOTE_DEVICE_STATE_VOICE_RECOGNITON, FALSE,
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_CALL_WAITING:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_CALL_WAITING");
                phone_number = (char *)(param->param_data);
                ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback)
@@ -2851,24 +2562,28 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_CALL_ON_HOLD:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_CALL_ON_HOLD");
                ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback)
                (BT_HF_REMOTE_CALL_EVENT_HELD, NULL,
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_CALL_UNHOLD:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_CALL_UNHOLD");
                ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback)
                (BT_HF_REMOTE_CALL_EVENT_UNHELD, NULL,
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_CALL_SWAPPED:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_CALL_SWAPPED");
                ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback)
                (BT_HF_REMOTE_CALL_EVENT_SWAPPED, NULL,
                bt_event_slot_container[event_index].user_data);
                break;
        case BLUETOOTH_EVENT_HF_VENDOR_DEP_CMD:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) break;
                BT_INFO("BLUETOOTH_EVENT_HF_VENDOR_DEP_CMD");
                bluetooth_vendor_dep_at_cmd_t *cmd = (bluetooth_vendor_dep_at_cmd_t *)(param->param_data);
                bt_hf_vendor_dep_at_cmd_s command = {0, };
@@ -2877,14 +2592,18 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                ((bt_hf_vendor_dep_cmd_event_cb)bt_event_slot_container[event_index].callback)
                (command, bt_event_slot_container[event_index].user_data);
                break;
-       case BLUETOOTH_EVENT_HF_VOLUME_SPEAKER: {
+       case BLUETOOTH_EVENT_HF_VOLUME_SPEAKER:
+       if (TIZEN_PROFILE_WEARABLE_IVI) {
                BT_INFO("BLUETOOTH_EVENT_HF_VOLUME_SPEAKER");
                int *spk_gain = (int *)(param->param_data);
                ((bt_hf_speaker_gain_changed_cb)bt_event_slot_container[event_index].callback)
                (*spk_gain, bt_event_slot_container[event_index].user_data);
                break;
+       } else {
+               break; /* goto default; */
        }
-       case BLUETOOTH_EVENT_HF_CALL_STATUS: {
+       case BLUETOOTH_EVENT_HF_CALL_STATUS:
+       if (TIZEN_PROFILE_WEARABLE_IVI) {
                BT_INFO("BLUETOOTH_EVENT_HF_CALL_STATUS");
                bt_hf_call_list_s *handle = (bt_hf_call_list_s *)(param->param_data);
                GList *l = NULL;
@@ -2906,8 +2625,11 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                ((bt_hf_call_status_updated_event_cb)bt_event_slot_container[event_index].callback)
                (call_list, bt_event_slot_container[event_index].user_data);
                break;
+       } else {
+               break; /* goto default; */
        }
-       case BLUETOOTH_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED: {
+       case BLUETOOTH_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED:
+       if (TIZEN_PROFILE_WEARABLE_IVI) {
                bluetooth_hf_ciev_device_event_t *device_event = (bluetooth_hf_ciev_device_event_t *)(param->param_data);
 
                BT_INFO("BLUETOOTH_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED (status %d)(value %d)",
@@ -2917,8 +2639,9 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                ((bt_hf_remote_device_state_e) device_event->event, device_event->value,
                bt_event_slot_container[event_index].user_data);
                break;
+       } else {
+               break; /* goto default; */
        }
-#endif
        case BLUETOOTH_EVENT_IPSP_INIT_STATE_CHANGED: {
                BT_DBG("BLUETOOTH_EVENT_IPSP_INIT_STATE_CHANGED"); /* LCOV_EXCL_LINE */
                ((bt_ipsp_init_state_changed_cb)bt_event_slot_container[event_index].callback) /* LCOV_EXCL_LINE */
@@ -2931,26 +2654,152 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                bt_pxp_property_info = (bt_pxp_property_changed_params_t *)(param->param_data);
                _bt_convert_address_to_string(&device_addr, &bt_pxp_property_info->device_address);
 
-               ((bt_proximity_property_changed_cb)bt_event_slot_container[event_index].callback) /* LCOV_EXCL_LINE */
+               ((bt_proximity_reporter_property_changed_cb)bt_event_slot_container[event_index].callback) /* LCOV_EXCL_LINE */
                        (_bt_get_error_code(param->result), device_addr,
-                       bt_pxp_property_info->role, bt_pxp_property_info->service_type,
+                       bt_pxp_property_info->service_type,
                        bt_pxp_property_info->alert_lvl, bt_event_slot_container[event_index].user_data);
 
                if (device_addr != NULL)
-                       free(device_addr); /* LCOV_EXCL_STOP */
+                       free(device_addr);
+               break;
+       }
+       case BLUETOOTH_EVENT_TDS_ACTIVATION_REQUESTED: {
+               BT_DBG("BLUETOOTH_EVENT_TDS_ACTIVATION_REQUESTED"); /* LCOV_EXCL_LINE */
+               tds_act_req_info = (bluetooth_tds_activation_req_t *)(param->param_data);
+               _bt_convert_address_to_string(&device_addr, &tds_act_req_info->rem_addr);
+
+               ((bt_tds_activation_requested_cb)bt_event_slot_container[event_index].callback) /* LCOV_EXCL_LINE */
+                       (device_addr, tds_act_req_info->transport, tds_act_req_info->tds_data.data,
+                        tds_act_req_info->tds_data.length, bt_event_slot_container[event_index].user_data);
+
+               if (device_addr != NULL)
+                       free(device_addr);
+               break;
+       }
+       case BLUETOOTH_EVENT_TDS_TRANSPORT_DATA_RECEIVED: {
+               BT_DBG("BLUETOOTH_EVENT_TDS_TRANSPORT_DATA_RECEIVED"); /* LCOV_EXCL_LINE */
+               bluetooth_tds_transport_data_info_t *info = NULL;
+               bluetooth_device_address_t *addr = NULL;
+
+               if (_bt_get_error_code(param->result) == BT_ERROR_NONE) {
+                       info = (bluetooth_tds_transport_data_info_t *)(param->param_data);
+                       _bt_convert_address_to_string(&device_addr, &info->device_address);
+                       _bt_tds_send_complete_transport_data(_bt_get_error_code(param->result), device_addr,
+                                       info->data, info->data_length);
+               } else {
+                       BT_ERR("TDS Complete data Read request failed!!!");
+                       addr = (bluetooth_device_address_t *)(param->param_data);
+                       _bt_convert_address_to_string(&device_addr, addr);
+                       _bt_tds_send_complete_transport_data(_bt_get_error_code(param->result), device_addr,
+                                       NULL, 0);
+               }
+               BT_DBG("TDS Complete data blocks received: Remote provider address [%s]", device_addr);
+               if (device_addr != NULL)
+                       free(device_addr);
+               break;
+       }
+       case BLUETOOTH_EVENT_TDS_ACTIVATION_RESULT: {
+               BT_DBG("BLUETOOTH_EVENT_TDS_ACTIVATION_RESULT"); /* LCOV_EXCL_LINE */
+               _bt_convert_address_to_string(&device_addr,
+                       (bluetooth_device_address_t *)(param->param_data));
+
+               _bt_tds_control_point_activation_result_update(_bt_get_error_code(param->result), device_addr);
+
+               if (device_addr != NULL)
+                       free(device_addr);
+               break;
+       }
+       case BLUETOOTH_EVENT_TDS_CONTROL_POINT_ENABLED: {
+               BT_DBG("BLUETOOTH_EVENT_TDS_CONTROL_POINT_ENABLED"); /* LCOV_EXCL_LINE */
+               _bt_convert_address_to_string(&device_addr,
+                       (bluetooth_device_address_t *)(param->param_data));
+
+               _bt_tds_control_point_enabled_update(_bt_get_error_code(param->result), device_addr);
+
+               if (device_addr != NULL)
+                       free(device_addr);
+               break;
+       } case BLUETOOTH_EVENT_TDS_ACTIVATION_INDICATION: {
+               BT_DBG("BLUETOOTH_EVENT_TDS_ACTIVATION_INDICATION"); /* LCOV_EXCL_LINE */
+               bluetooth_tds_indication_res_t *tds_act_ind_res = NULL;
+               tds_act_ind_res = (bluetooth_tds_indication_res_t *)(param->param_data);
+
+               _bt_convert_address_to_string(&device_addr, &tds_act_ind_res->rem_addr);
+
+               BT_ERR("Address [%s]", device_addr);
+               _bt_tds_control_point_indication_response_update(device_addr, tds_act_ind_res);
+
+               if (device_addr != NULL)
+                       free(device_addr);
+               break;
+       }
+       case BLUETOOTH_EVENT_OTP_SERVER_STATE_CHANGED: {
+               bt_otp_server_state_changed_cb cb = bt_event_slot_container[event_index].callback;
+               bool *status = (bool *)(param->param_data);
+
+               BT_INFO("BLUETOOTH_EVENT_OTP_SERVER_STATE_CHANGED [%s]", *status ? "enabled" : "disabled");
+
+               cb(_bt_get_error_code(param->result), *status ? true : false);
+               break;
+       }
+       case BLUETOOTH_EVENT_OTP_READ_CHAR_VAL: {
+               BT_DBG("BLUETOOTH_EVENT_OTP_READ_CHAR_VAL"); /* LCOV_EXCL_LINE */
+               bluetooth_otp_resp_info_t *info = NULL;
+               char *handle = NULL;
+
+               if (param->result == BT_ATT_ERROR_NONE) {
+                       info = (bluetooth_otp_resp_info_t *)(param->param_data);
+                       BT_ERR("Read Success Handle [%s]", info->handle);
+                       _bt_otp_client_read_value_response(param->result,
+                                                                               info->handle, info->data, info->data_length);
+               } else {
+                       handle = (char *)(param->param_data);
+                       BT_ERR("Read Fail Handle [%s]", handle);
+                       _bt_otp_client_read_value_response(param->result,
+                                                                               handle, NULL, 0);
+               }
+               break;
+       }
+       case BLUETOOTH_EVENT_OTP_WRITE_CHAR_VAL: {
+               BT_DBG("BLUETOOTH_EVENT_OTP_WRITE_CHAR_VAL"); /* LCOV_EXCL_LINE */
+               char *handle = (char *)(param->param_data);
+               BT_ERR("Handle [%s]", handle);
+               _bt_otp_client_write_value_response(param->result, handle);
+               break;
+       }
+       case BLUETOOTH_EVENT_OTP_NOTIFICATION_ENABLED: {
+               BT_DBG("BLUETOOTH_EVENT_OTP_NOTIFICATION_ENABLED"); /* LCOV_EXCL_LINE */
+               char *handle = (char *)(param->param_data);
+               BT_DBG("Handle [%s]", handle);
+               _bt_otp_client_notification_enabled(_bt_get_error_code(param->result), handle);
+               break;
+       } case BLUETOOTH_EVENT_OTP_INDICATION: {
+               BT_DBG("BLUETOOTH_EVENT_OTP_INDICATION"); /* LCOV_EXCL_LINE */
+               bluetooth_otp_resp_info_t *otp_ind_info = NULL;
+               otp_ind_info = (bluetooth_otp_resp_info_t *)(param->param_data);
+               BT_DBG("Handle [%s]", otp_ind_info->handle);
+               _bt_otp_client_indication(_bt_get_error_code(param->result), otp_ind_info);
+               break;
+       } case BLUETOOTH_EVENT_OTC_STATE_CHANGED: {
+               BT_DBG("BLUETOOTH_EVENT_OTC_STATE_CHANGED"); /* LCOV_EXCL_LINE */
+               bluetooth_otc_info_t *otc_info = NULL;
+               otc_info = (bluetooth_otc_info_t *)(param->param_data);
+
+               BT_ERR("Address [%s]", otc_info->address);
+               _bt_otc_connection_state_changed(_bt_get_error_code(param->result), otc_info);
                break;
        }
        default:
+               BT_INFO("Unknown function");
                break;
        }
 }
+/* LCOV_EXCL_STOP */
 
 static void __bt_le_event_proxy(int event, bluetooth_event_param_t *param, void *user_data)
 {
        bt_adapter_le_device_scan_result_info_s *scan_info = NULL;
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
        bt_adapter_le_device_discovery_info_s *discovery_info = NULL;
-#endif
        int event_index = -1;
 
        event_index = __bt_get_cb_index(event);
@@ -2971,51 +2820,88 @@ static void __bt_le_event_proxy(int event, bluetooth_event_param_t *param, void
                    (_bt_get_error_code(param->result), BT_ADAPTER_LE_DISABLED, bt_event_slot_container[event_index].user_data);
                break;
 
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
        case BLUETOOTH_EVENT_LE_DISCOVERY_STARTED:
-               BT_INFO("BLUETOOTH_EVENT_LE_DISCOVERY_STARTED"); /* LCOV_EXCL_LINE */
-               ((bt_adapter_le_device_discovery_state_changed_cb) bt_event_slot_container[event_index].callback) /* LCOV_EXCL_LINE */
-                       (_bt_get_error_code(param->result), BT_ADAPTER_LE_DEVICE_DISCOVERY_STARTED, NULL, bt_event_slot_container[event_index].user_data);
-               break;
+               if (!TIZEN_PROFILE_WEARABLE_IVI) {
+                       BT_INFO("BLUETOOTH_EVENT_LE_DISCOVERY_STARTED"); /* LCOV_EXCL_LINE */
+                       ((bt_adapter_le_device_discovery_state_changed_cb) bt_event_slot_container[event_index].callback) /* LCOV_EXCL_LINE */
+                               (_bt_get_error_code(param->result), BT_ADAPTER_LE_DEVICE_DISCOVERY_STARTED, NULL, bt_event_slot_container[event_index].user_data);
+                       break;
+               } else {
+                       break; /* goto default */
+               }
        case BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED:
-               BT_INFO("BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED"); /* LCOV_EXCL_LINE */
-               ((bt_adapter_le_device_discovery_state_changed_cb)bt_event_slot_container[event_index].callback) /* LCOV_EXCL_LINE */
-                       (_bt_get_error_code(param->result), BT_ADAPTER_LE_DEVICE_DISCOVERY_FINISHED, NULL, bt_event_slot_container[event_index].user_data);
-               break;
-#endif
-
-       case BLUETOOTH_EVENT_REMOTE_LE_DEVICE_FOUND:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) {
+                       BT_INFO("BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED"); /* LCOV_EXCL_LINE */
+                       ((bt_adapter_le_device_discovery_state_changed_cb)bt_event_slot_container[event_index].callback) /* LCOV_EXCL_LINE */
+                               (_bt_get_error_code(param->result), BT_ADAPTER_LE_DEVICE_DISCOVERY_FINISHED, NULL, bt_event_slot_container[event_index].user_data);
+                       break;
+               } else {
+                       break; /* goto default */
+               }
+       case BLUETOOTH_EVENT_REMOTE_LE_DEVICE_FOUND: /* LCOV_EXCL_START */
                BT_INFO("BLUETOOTH_EVENT_REMOTE_LE_DEVICE_FOUND");
                event_index = BT_EVENT_LE_SCAN_RESULT_UPDATED;
                if (bt_event_slot_container[event_index].callback != NULL) {
                        if (__bt_get_bt_adapter_le_device_scan_info_s(&scan_info, (bluetooth_le_device_info_t *)(param->param_data)) == BT_ERROR_NONE) {
                                ((bt_adapter_le_scan_result_cb)bt_event_slot_container[event_index].callback)
                                        (_bt_get_error_code(param->result), scan_info, bt_event_slot_container[event_index].user_data);
-                               __bt_free_bt_adapter_le_device_scan_info_s(scan_info);
                        } else {
                                ((bt_adapter_le_scan_result_cb)bt_event_slot_container[event_index].callback)
                                        (_bt_get_error_code(param->result), NULL, bt_event_slot_container[event_index].user_data);
                        }
                }
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
-               event_index = BT_EVENT_LE_DEVICE_DISCOVERY_STATE_CHANGED;
-               if (bt_event_slot_container[event_index].callback != NULL) {
-                       if (__bt_get_bt_adapter_le_device_discovery_info_s(&discovery_info, (bluetooth_le_device_info_t *)(param->param_data)) == BT_ERROR_NONE) { /* LCOV_EXCL_LINE */
-                               ((bt_adapter_le_device_discovery_state_changed_cb)bt_event_slot_container[event_index].callback) /* LCOV_EXCL_LINE */
-                                       (_bt_get_error_code(param->result), BT_ADAPTER_LE_DEVICE_DISCOVERY_FOUND, discovery_info, bt_event_slot_container[event_index].user_data);
-                               __bt_free_bt_adapter_le_device_discovery_info_s(discovery_info); /* LCOV_EXCL_LINE */
-                       } else {
-                               ((bt_adapter_le_device_discovery_state_changed_cb)bt_event_slot_container[event_index].callback) /* LCOV_EXCL_LINE */
-                                       (_bt_get_error_code(param->result), BT_ADAPTER_LE_DEVICE_DISCOVERY_FOUND, NULL, bt_event_slot_container[event_index].user_data);
+               if (!TIZEN_PROFILE_WEARABLE_IVI) {
+                       event_index = BT_EVENT_LE_DEVICE_DISCOVERY_STATE_CHANGED;
+                       if (bt_event_slot_container[event_index].callback != NULL) {
+                               if (__bt_get_bt_adapter_le_device_discovery_info_s(&discovery_info, (bluetooth_le_device_info_t *)(param->param_data)) == BT_ERROR_NONE) { /* LCOV_EXCL_LINE */
+                                       ((bt_adapter_le_device_discovery_state_changed_cb)bt_event_slot_container[event_index].callback) /* LCOV_EXCL_LINE */
+                                               (_bt_get_error_code(param->result), BT_ADAPTER_LE_DEVICE_DISCOVERY_FOUND, discovery_info, bt_event_slot_container[event_index].user_data);
+                                       __bt_free_bt_adapter_le_device_discovery_info_s(discovery_info); /* LCOV_EXCL_LINE */
+                               } else {
+                                       ((bt_adapter_le_device_discovery_state_changed_cb)bt_event_slot_container[event_index].callback) /* LCOV_EXCL_LINE */
+                                               (_bt_get_error_code(param->result), BT_ADAPTER_LE_DEVICE_DISCOVERY_FOUND, NULL, bt_event_slot_container[event_index].user_data);
+                               }
+                       }
+               }
+               /* TDS Provider Search: Uses Scan Info */
+               if (bt_event_slot_container[BT_EVENT_TDS_PROVIDER_FOUND_RESULT].callback != NULL) {
+                       char *data = NULL;
+                       int data_len = 0;
+                       if (!scan_info) {
+                               /* Get Scan Info */
+                               if (__bt_get_bt_adapter_le_device_scan_info_s(&scan_info,
+                                                       (bluetooth_le_device_info_t *)(param->param_data)) != BT_ERROR_NONE) { /* LCOV_EXCL_LINE */
+                                       break;
+                               }
+                       }
+                       _bt_get_ad_data_by_type((char*)scan_info->adv_data, scan_info->adv_data_len,
+                                       BT_ADAPTER_LE_ADVERTISING_DATA_TRANSPORT_DISCOVERY,
+                                       &data, &data_len);
+                       if (data != NULL) {
+                               BT_DBG("TDS Service available Data length[%d]", data_len);
+                               bt_tds_transport_block_list_s *info = g_malloc0(sizeof(bt_tds_transport_block_list_s));
+
+                               if (_bt_tds_parse_transport_blocks(&info, data, data_len) == BT_ERROR_NONE) {
+                                       ((bt_tds_provider_scan_result_cb)bt_event_slot_container[BT_EVENT_TDS_PROVIDER_FOUND_RESULT].callback) /* LCOV_EXCL_LINE */
+                                               (_bt_get_error_code(param->result),
+                                                scan_info->remote_address, info,
+                                                scan_info,
+                                                bt_event_slot_container[BT_EVENT_TDS_PROVIDER_FOUND_RESULT].user_data);
+                               }
+                               __bt_free_tds_scan_result_info_s(info);
+
+                               g_free(data);
                        }
                }
-#endif
-               break;
 
+               if (scan_info)
+                       __bt_free_bt_adapter_le_device_scan_info_s(scan_info);
+               break;
        default:
                break;
        }
 }
+/* LCOV_EXCL_STOP */
 
 /* LCOV_EXCL_START */
 static int __bt_get_bt_adapter_device_discovery_info_s(bt_adapter_device_discovery_info_s **discovery_info, bluetooth_device_info_t *source_info)
@@ -3047,7 +2933,6 @@ static int __bt_get_bt_adapter_device_discovery_info_s(bt_adapter_device_discove
                                if ((*discovery_info)->service_uuid[i] != NULL)
                                        __bt_convert_lower_to_upper((*discovery_info)->service_uuid[i]);
 
-                               BT_INFO("UUID: %s", (*discovery_info)->service_uuid[i]);
                        }
                }
        } else
@@ -3097,7 +2982,7 @@ static void __bt_free_bt_adapter_device_discovery_info_s(bt_adapter_device_disco
        free(discovery_info);
        discovery_info = NULL;
 }
-/* LCOV_EXCL_STOP */
+
 static int __bt_get_bt_adapter_le_device_scan_info_s(
                        bt_adapter_le_device_scan_result_info_s **scan_info,
                        bluetooth_le_device_info_t *source_info)
@@ -3153,8 +3038,23 @@ static void __bt_free_bt_adapter_le_device_scan_info_s(bt_adapter_le_device_scan
        scan_info = NULL;
 }
 
-/* LCOV_EXCL_START */
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
+static void __bt_free_tds_scan_result_info_s(bt_tds_transport_block_list_s *discovery_info)
+{
+       int k;
+
+       if (discovery_info == NULL)
+               return;
+
+       for (k = 0; k < discovery_info->num_transport_block; k++) {
+               g_free(discovery_info->data[k]->data);
+               g_free(discovery_info->data[k]);
+       }
+
+       g_free(discovery_info);
+       discovery_info = NULL;
+
+}
+
 static int __bt_get_bt_adapter_le_device_discovery_info_s(
                        bt_adapter_le_device_discovery_info_s **le_discovery_info,
                        bluetooth_le_device_info_t *source_info)
@@ -3206,9 +3106,6 @@ static void __bt_free_bt_adapter_le_device_discovery_info_s(bt_adapter_le_device
        discovery_info = NULL;
 }
 
-#endif
-
-#ifdef TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT
 static int __bt_get_gatt_client_cb_index(int event)
 {
        switch (event) {
@@ -3231,7 +3128,6 @@ static int __bt_get_gatt_client_cb_index(int event)
 
        return -1;
 }
-#endif
 /* LCOV_EXCL_STOP */
 static int __bt_get_cb_index(int event)
 {
@@ -3303,6 +3199,16 @@ static int __bt_get_cb_index(int event)
                return BT_EVENT_OPP_CLIENT_PUSH_PROGRESS;
        case BLUETOOTH_EVENT_OPC_DISCONNECTED:
                return BT_EVENT_OPP_CLIENT_PUSH_FINISHED;
+       case BLUETOOTH_EVENT_MAP_LIST_FOLDERS_COMPLETE:
+               return BT_EVENT_MAP_CLIENT_LIST_FOLDERS;
+       case BLUETOOTH_EVENT_MAP_LIST_FILTER_FIELD_COMPLETE:
+               return BT_EVENT_MAP_CLIENT_LIST_FILTER_FIELDS;
+       case BLUETOOTH_EVENT_MAP_LIST_MESSAGES_COMPLETE:
+               return BT_EVENT_MAP_CLIENT_LIST_MESSAGES;
+       case BLUETOOTH_EVENT_MAP_GET_MESSAGE_COMPLETE:
+                       return BT_EVENT_MAP_CLIENT_GET_MESSAGE;
+       case BLUETOOTH_EVENT_MAP_PUSH_MESSAGE_COMPLETE:
+                       return BT_EVENT_MAP_CLIENT_PUSH_MESSAGE;
        case BLUETOOTH_EVENT_NETWORK_SERVER_CONNECTED:
        case BLUETOOTH_EVENT_NETWORK_SERVER_DISCONNECTED:
                return BT_EVENT_NAP_CONNECTION_STATE_CHANGED;
@@ -3384,23 +3290,26 @@ static int __bt_get_cb_index(int event)
                return BT_EVENT_HID_DEVICE_CONNECTION_STATUS;
        case BLUETOOTH_HID_DEVICE_DATA_RECEIVED:
                return BT_EVENT_HID_DEVICE_DATA_RECEIVED;
-#ifdef TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT
        case BLUETOOTH_EVENT_GATT_SVC_CHAR_DISCOVERED:
+               if (!TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT)
+                       return -1; /* default */
                return BT_EVENT_GATT_CLIENT_CHARACTERISTIC_DISCOVERED_LEGACY;
        case BLUETOOTH_EVENT_GATT_SVC_CHAR_DESC_DISCOVERED:
+               if (!TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT)
+                       return -1; /* default */
                return BT_EVENT_GATT_CLIENT_CHARACTERISTIC_DESCRIPTOR_DISCOVERED_LEGACY;
        case BLUETOOTH_EVENT_GATT_CHAR_VAL_CHANGED:
-       case BLUETOOTH_EVENT_GATT_READ_CHAR:
-       case BLUETOOTH_EVENT_GATT_WRITE_CHAR:
-               return __bt_get_gatt_client_cb_index(event);
-#else
-       case BLUETOOTH_EVENT_GATT_CHAR_VAL_CHANGED:
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT)
+                       return __bt_get_gatt_client_cb_index(event);
                return BT_EVENT_GATT_CLIENT_VALUE_CHANGED;
        case BLUETOOTH_EVENT_GATT_READ_CHAR:
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT)
+                       return __bt_get_gatt_client_cb_index(event);
                return BT_EVENT_GATT_CLIENT_READ_CHARACTERISTIC;
        case BLUETOOTH_EVENT_GATT_WRITE_CHAR:
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT)
+                       return __bt_get_gatt_client_cb_index(event);
                return BT_EVENT_GATT_CLIENT_WRITE_CHARACTERISTIC;
-#endif
        case BLUETOOTH_EVENT_GATT_READ_DESC:
                return BT_EVENT_GATT_CLIENT_READ_DESCRIPTOR;
        case BLUETOOTH_EVENT_GATT_WRITE_DESC:
@@ -3432,27 +3341,46 @@ static int __bt_get_cb_index(int event)
                return BT_EVENT_SUPPORTED_TRUSTED_PROFILE_EVENT;
        case BLUETOOTH_EVENT_LE_DATA_LENGTH_CHANGED:
                return BT_EVENT_LE_DATA_LENGTH_CHANGED; /* LCOV_EXCL_LINE */
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
        case BLUETOOTH_PBAP_CONNECTED:
        case BLUETOOTH_PBAP_DISCONNECTED:
-               return BT_EVENT_PBAP_CONNECTION_STATUS;
+               if (!TIZEN_PROFILE_WEARABLE_IVI) /* LCOV_EXCL_LINE */
+                       return -1;
+               return BT_EVENT_PBAP_CONNECTION_STATUS; /* LCOV_EXCL_LINE */
        case BLUETOOTH_PBAP_PHONEBOOK_SIZE:
-               return BT_EVENT_PBAP_PHONEBOOK_SIZE;
+               if (!TIZEN_PROFILE_WEARABLE_IVI) /* LCOV_EXCL_LINE */
+                       return -1;
+               return BT_EVENT_PBAP_PHONEBOOK_SIZE; /* LCOV_EXCL_LINE */
        case BLUETOOTH_PBAP_PHONEBOOK_PULL:
-               return BT_EVENT_PBAP_PHONEBOOK_PULL;
+               if (!TIZEN_PROFILE_WEARABLE_IVI) /* LCOV_EXCL_LINE */
+                       return -1;
+               return BT_EVENT_PBAP_PHONEBOOK_PULL; /* LCOV_EXCL_LINE */
        case BLUETOOTH_PBAP_VCARD_LIST:
-               return BT_EVENT_PBAP_VCARD_LIST;
+               if (!TIZEN_PROFILE_WEARABLE_IVI) /* LCOV_EXCL_LINE */
+                       return -1;
+               return BT_EVENT_PBAP_VCARD_LIST; /* LCOV_EXCL_LINE */
        case BLUETOOTH_PBAP_VCARD_PULL:
-               return BT_EVENT_PBAP_VCARD_PULL;
+               if (!TIZEN_PROFILE_WEARABLE_IVI) /* LCOV_EXCL_LINE */
+                       return -1;
+               return BT_EVENT_PBAP_VCARD_PULL; /* LCOV_EXCL_LINE */
        case BLUETOOTH_PBAP_PHONEBOOK_SEARCH:
+               if (!TIZEN_PROFILE_WEARABLE_IVI) /* LCOV_EXCL_START */
+                       return -1;
                return BT_EVENT_PBAP_PHONEBOOK_SEARCH;
        case BLUETOOTH_EVENT_HF_CONNECTED:
+               if (!TIZEN_PROFILE_WEARABLE_IVI)
+                       return -1;
                return BT_EVENT_AUDIO_CONNECTION_STATUS;
        case BLUETOOTH_EVENT_HF_DISCONNECTED:
+               if (!TIZEN_PROFILE_WEARABLE_IVI)
+                       return -1;
                return BT_EVENT_AUDIO_CONNECTION_STATUS;
        case BLUETOOTH_EVENT_HF_AUDIO_CONNECTED:
+               if (!TIZEN_PROFILE_WEARABLE_IVI)
+                       return -1;
                return BT_EVENT_HF_SCO_CONNECTION_STATUS;
        case BLUETOOTH_EVENT_HF_AUDIO_DISCONNECTED:
+               if (!TIZEN_PROFILE_WEARABLE_IVI)
+                       return -1;
                return BT_EVENT_HF_SCO_CONNECTION_STATUS;
        case BLUETOOTH_EVENT_HF_RING_INDICATOR:
        case BLUETOOTH_EVENT_HF_CALL_TERMINATED:
@@ -3467,24 +3395,37 @@ static int __bt_get_cb_index(int event)
        case BLUETOOTH_EVENT_HF_CALLSETUP_INCOMING:
        case BLUETOOTH_EVENT_HF_CALLSETUP_DIALING:
        case BLUETOOTH_EVENT_HF_CALLSETUP_ALERTING:
+               if (!TIZEN_PROFILE_WEARABLE_IVI)
+                       return -1;
                return BT_EVENT_HF_REMOTE_CALL_EVENT;
        case BLUETOOTH_EVENT_HF_VENDOR_DEP_CMD:
+               if (!TIZEN_PROFILE_WEARABLE_IVI)
+                       return -1;
                return BT_EVENT_HF_VENDOR_DEP_CMD_EVENT;
        case BLUETOOTH_EVENT_HF_VOLUME_SPEAKER:
+               if (!TIZEN_PROFILE_WEARABLE_IVI)
+                       return -1;
                return BT_EVENT_HF_SPEAKER_GAIN_CHANGE;
        case BLUETOOTH_EVENT_HF_CALL_STATUS:
+               if (!TIZEN_PROFILE_WEARABLE_IVI)
+                       return -1;
                return BT_EVENT_HF_CALL_STATUS_UPDATED_EVENT;
        case BLUETOOTH_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED:
        case BLUETOOTH_EVENT_HF_VOICE_RECOGNITION_ENABLED:
        case BLUETOOTH_EVENT_HF_VOICE_RECOGNITION_DISABLED:
+               if (!TIZEN_PROFILE_WEARABLE_IVI)
+                       return -1;
                return BT_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED;
-#endif
        case BLUETOOTH_EVENT_IPSP_INIT_STATE_CHANGED:
                return  BT_EVENT_IPSP_INIT_STATE_CHANGED;
        case BLUETOOTH_EVENT_PXP_PROPERTY_CHANGED:
-               return BT_EVENT_PROXIMITY_PROPERTY_CHANGED;
+               return BT_EVENT_PROXIMITY_REPORTER_PROPERTY_CHANGED;
+       case BLUETOOTH_EVENT_TDS_ACTIVATION_REQUESTED:
+               return BT_EVENT_TDS_ACTIVATION_REQUESTED;
+       case BLUETOOTH_EVENT_OTP_SERVER_STATE_CHANGED:
+               return BT_EVENT_OTP_SERVER_STATE_CHANGED;
        default:
-               return -1;
+               return -1; /* LCOV_EXCL_STOP */
        }
 }
 /* LCOV_EXCL_START */
@@ -3498,241 +3439,6 @@ static void __bt_convert_lower_to_upper(char *origin)
                        origin[i] = toupper(origin[i]);
        }
 }
-
-static void bt_gatt_client_handle_destroy(bt_gatt_h gatt_handle)
-{
-       bt_gatt_common_s *handle = (bt_gatt_common_s *)gatt_handle;
-
-       if (handle) {
-               if (handle->type == BT_GATT_TYPE_SERVICE)
-                       bt_gatt_service_destroy(gatt_handle);
-               else if (handle->type == BT_GATT_TYPE_CHARACTERISTIC)
-                       bt_gatt_characteristic_destroy(gatt_handle);
-               else if (handle->type == BT_GATT_TYPE_DESCRIPTOR)
-                       bt_gatt_descriptor_destroy(gatt_handle);
-               else
-                       BT_ERR("Type is invalid(type:%d)", handle->type);
-       }
-}
-
-int _bt_gatt_client_update_all(bt_gatt_client_h client)
-{
-       bt_gatt_client_s *client_s = client;
-       bluetooth_device_address_t addr_hex = { {0, } };
-       bt_gatt_handle_info_t *prim_svc = NULL;
-       int ret;
-       int i;
-       int j;
-       GSList *svc_list = NULL;
-
-       prim_svc = g_new0(bt_gatt_handle_info_t, 1);
-
-       _bt_convert_address_to_hex(&addr_hex, client_s->remote_address);
-       ret = bluetooth_gatt_get_primary_services(&addr_hex, prim_svc);
-       ret = _bt_get_error_code(ret);
-       if (ret != BT_ERROR_NONE) {
-               BT_ERR("bluetooth_gatt_get_primary_services is failed");
-               return ret;
-       }
-
-       if (prim_svc->count == 0)
-               goto done;
-
-       for (i = 0; i < prim_svc->count; i++) {
-               bt_gatt_service_s *svc = NULL;
-               bt_gatt_service_property_t property;
-
-               if (prim_svc->handle[i] == NULL)
-                       continue;
-               BT_DBG("handle: %s", prim_svc->handle[i]);
-
-               memset(&property, 0x00, sizeof(property));
-
-               ret = bluetooth_gatt_get_service_property(
-                               prim_svc->handle[i], &property);
-               ret = _bt_get_error_code(ret);
-               if (ret != BT_ERROR_NONE) {
-                       BT_ERR("bluetooth_gatt_get_service_property is failed");
-                       continue;
-               }
-
-               /* Add primary service */
-               ret = bt_gatt_service_create(property.uuid,
-                               BT_GATT_SERVICE_TYPE_PRIMARY,
-                               (bt_gatt_h *)&svc);
-               if (ret != BT_ERROR_NONE) {
-                       BT_ERR("bt_gatt_service_create is failed");
-                       continue;
-               }
-
-               svc->role = BT_GATT_ROLE_CLIENT;
-               svc->parent = (void *)client_s;
-               svc->path = g_strdup(prim_svc->handle[i]);
-
-               svc_list = g_slist_append(svc_list, svc);
-
-               if (property.include_handles.count != 0 && property.include_handles.handle) {
-                       GSList *include_list = NULL;
-                       /* Add included services */
-                       for (j = 0; j < property.include_handles.count; j++) {
-                               bt_gatt_service_s *sec_svc = NULL;
-                               bt_gatt_service_property_t sec_property;
-
-                               if (property.include_handles.handle[j] == NULL)
-                                       continue;
-
-                               memset(&sec_property, 0x00, sizeof(sec_property));
-
-                               ret = bluetooth_gatt_get_service_property(
-                                               property.include_handles.handle[j],
-                                               &sec_property);
-                               ret = _bt_get_error_code(ret);
-                               if (ret != BT_ERROR_NONE)
-                                       continue;
-
-                               ret = bt_gatt_service_create(sec_property.uuid,
-                                               BT_GATT_SERVICE_TYPE_SECONDARY,
-                                               (bt_gatt_h *)&sec_svc);
-                               if (ret != BT_ERROR_NONE)
-                                       continue;
-
-                               sec_svc->role = BT_GATT_ROLE_CLIENT;
-                               sec_svc->parent = (void *)svc;
-                               sec_svc->is_included_service = true;
-                               sec_svc->path = g_strdup(property.include_handles.handle[j]);
-
-                               include_list = g_slist_append(include_list, sec_svc);
-                               bluetooth_gatt_free_service_property(&sec_property);
-                       }
-
-                       g_slist_free_full(svc->included_services,
-                                       bt_gatt_client_handle_destroy);
-                       svc->included_services = include_list;
-               }
-               if (property.char_handle.count != 0 && property.char_handle.handle) {
-
-                       /* Add characteristics */
-                       __bt_gatt_client_update_characteristics(property.char_handle, svc);
-               }
-               bluetooth_gatt_free_service_property(&property);
-       }
-       g_strfreev(prim_svc->handle);
-
-       g_free(prim_svc);
-
-       if (svc_list == NULL)
-               return BT_ERROR_OPERATION_FAILED;
-
-done:
-       g_slist_free_full(client_s->services,
-                       bt_gatt_client_handle_destroy);
-
-       client_s->services = svc_list;
-
-       return BT_ERROR_NONE;
-}
-
-static int __bt_gatt_client_update_characteristics(bt_gatt_handle_info_t char_handles,
-               bt_gatt_service_s *service)
-{
-       GSList *chr_list = NULL;
-       int i;
-
-       for (i = 0; i < char_handles.count; i++) {
-               bt_gatt_characteristic_s *chr = NULL;
-               bt_gatt_char_property_t char_property;
-               int ret;
-
-               memset(&char_property, 0x00, sizeof(char_property));
-               ret = bluetooth_gatt_get_characteristics_property(
-                               char_handles.handle[i], &char_property);
-               ret = _bt_get_error_code(ret);
-               if (ret != BT_ERROR_NONE) {
-                       BT_ERR("bluetooth_gatt_get_characteristics_property is failed");
-                       goto next;
-               }
-
-               ret = bt_gatt_characteristic_create(char_property.uuid, 0,
-                               char_property.permission, (char *)char_property.val,
-                               (int)char_property.val_len, (bt_gatt_h *)&chr);
-               if (ret != BT_ERROR_NONE) {
-                       BT_ERR("bt_gatt_characteristic_create is failed");
-                       goto next;
-               }
-
-               if (char_property.permission & BT_GATT_PROPERTY_WRITE_WITHOUT_RESPONSE)
-                       chr->write_type = BT_GATT_WRITE_TYPE_WRITE_NO_RESPONSE;
-               else if (char_property.permission & BT_GATT_PROPERTY_WRITE)
-                       chr->write_type = BT_GATT_WRITE_TYPE_WRITE;
-
-               chr->path = g_strdup(char_handles.handle[i]);
-               BT_DBG("path : %s", chr->path);
-               chr->parent = (void *)service;
-               chr->role = BT_GATT_ROLE_CLIENT;
-
-               if (char_property.char_desc_handle.count != 0 && char_property.char_desc_handle.handle) {
-
-                       /* Add characteristics descriptor */
-                       __bt_gatt_client_update_descriptors(char_property.char_desc_handle, chr);
-               }
-
-               chr_list = g_slist_append(chr_list, chr);
-next:
-               bluetooth_gatt_free_char_property(&char_property);
-       }
-
-       g_slist_free_full(service->characteristics,
-                       bt_gatt_client_handle_destroy);
-       service->characteristics = chr_list;
-       return BT_ERROR_NONE;
-}
-
-static int __bt_gatt_client_update_descriptors(bt_gatt_handle_info_t desc_handles,
-               bt_gatt_characteristic_s *characteristic)
-
-{
-       GSList *desc_list = NULL;
-       int i;
-
-       /* Add characteristics descriptor */
-
-       for (i = 0; i < desc_handles.count; i++) {
-               bt_gatt_descriptor_s *desc = NULL;
-               bt_gatt_char_descriptor_property_t desc_property;
-               int ret;
-
-               memset(&desc_property, 0x00, sizeof(desc_property));
-               ret = bluetooth_gatt_get_char_descriptor_property(
-                               desc_handles.handle[i], &desc_property);
-               ret = _bt_get_error_code(ret);
-               if (ret != BT_ERROR_NONE) {
-                       BT_ERR("bluetooth_gatt_get_char_descriptor_property is failed");
-                       goto next;
-               }
-
-               ret = bt_gatt_descriptor_create(desc_property.uuid, 0,
-                                       (char *)desc_property.val, (int)desc_property.val_len,
-                                       (bt_gatt_h *)&desc);
-
-               if (ret != BT_ERROR_NONE) {
-                       BT_ERR("bt_gatt_characteristic_create is failed");
-                       goto next;
-               }
-               desc->path = g_strdup(desc_handles.handle[i]);
-               BT_DBG("path : %s", desc->path);
-               desc->parent = (void *)characteristic;
-               desc->role = BT_GATT_ROLE_CLIENT;
-               desc_list = g_slist_append(desc_list, desc);
-
-next:
-               bluetooth_gatt_free_desc_property(&desc_property);
-       }
-
-       g_slist_free_full(characteristic->descriptors,
-                       bt_gatt_client_handle_destroy);
-       characteristic->descriptors = desc_list;
-       return BT_ERROR_NONE;
-}
 /* LCOV_EXCL_STOP */
 
 tizen_profile_t profile = _PROFILE_UNKNOWN;
index 800eb4c501d5823569962740b75cad3459e3d574..98edb2c8ff4ecfd23e9411fcb65808fe46da0ce4 100644 (file)
@@ -388,22 +388,24 @@ int bt_device_unset_connection_state_changed_cb(void)
        return BT_ERROR_NONE;
 }
 
+/* LCOV_EXCL_START */
 int bt_device_unset_rssi_alert_cb(void)
 {
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
        _bt_unset_cb(BT_EVENT_RSSI_ALERT_EVENT);
        return BT_ERROR_NONE;
-}
+} /* LCOV_EXCL_STOP */
 
 int bt_device_unset_att_mtu_changed_cb(void)
 {
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
-       _bt_unset_cb(BT_EVENT_DEVICE_CONNECTION_STATUS);
+       _bt_unset_cb(BT_EVENT_GATT_ATT_MTU_CHANGE_STATUS);
        return BT_ERROR_NONE;
 }
 
+/* LCOV_EXCL_START */
 int bt_device_enable_rssi_monitor(const char *remote_address,
                                bt_device_connection_link_type_e link_type,
                                int low_threshold, int in_range_threshold,
@@ -481,7 +483,6 @@ int bt_device_get_rssi_strength(const char *remote_address,
 }
 
 
-/* LCOV_EXCL_START */
 int bt_device_le_conn_update(const char *device_address,
        const bt_le_conn_update_s *parameters)
 {
@@ -557,6 +558,10 @@ int bt_device_get_service_mask_from_uuid_list(char **uuids,
                        service_mask |= BT_SC_OPP_SERVICE_MASK;
                        break;
 
+               case BLUETOOTH_OBEX_MESSAGE_ACCESS_SERVICE_UUID:
+                       service_mask |= BT_SC_MAP_SERVICE_MASK;
+                       break;
+
                case BLUETOOTH_OBEX_FILE_TRANSFER_UUID:
                        service_mask |= BT_SC_FTP_SERVICE_MASK;
                        break;
@@ -792,12 +797,12 @@ int bt_device_get_att_mtu(const char *remote_address, unsigned int *mtu)
        }
 
        *mtu = mtu_value;
-       BT_INFO("Got MTU: Remote address [%s] MTU Size [%u]", remote_address, mtu_value);
+
        return ret;
 
 }
 
-int bt_device_get_ida(const char *remote_rpa, char **id_address)
+int bt_device_get_id_address(const char *remote_rpa, char **id_address)
 {
        bluetooth_device_address_t id_addr = { {0} };
        bluetooth_device_address_t addr_hex = { {0,} };
@@ -891,8 +896,8 @@ int bt_device_set_profile_restricted(const char *device_address,
        BT_CHECK_INPUT_PARAMETER(device_address);
 
        _bt_convert_address_to_hex(&addr_hex, device_address);
-       error_code = _bt_get_error_code(bluetooth_set_profile_restricted(&addr_hex,
-                       profile, restricted));
+       error_code = _bt_get_error_code(bluetooth_set_profile_trusted(&addr_hex,
+                       profile, !restricted));
 
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
@@ -904,21 +909,21 @@ int bt_device_get_profile_restricted(const char *device_address,
                bt_restricted_profile_t profile, int *restricted)
 {
        bluetooth_device_address_t addr_hex = { {0,} };
-       int profile_restricted;
+       int profile_trusted;
        int error_code = BT_ERROR_NONE;
 
        BT_CHECK_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(device_address);
 
        _bt_convert_address_to_hex(&addr_hex, device_address);
-       error_code = _bt_get_error_code(bluetooth_get_profile_restricted(&addr_hex,
-                       profile, &profile_restricted));
+       error_code = _bt_get_error_code(bluetooth_get_profile_trusted(&addr_hex,
+                       profile, &profile_trusted));
 
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
        if (restricted)
-               *restricted = profile_restricted;
+               *restricted = !profile_trusted;
        return error_code;
 }
 
index d176b10ce5f4be76bbeb5ef90202972f8afcd7bd..69470f119e48fe45abdb2a41b7de9afc8d1f2573 100644 (file)
 #include "bluetooth_private.h"
 
 /* LCOV_EXCL_START */
-static int _bt_dpm_get_error_code(int origin_error)
-{
-       switch (origin_error) {
-       case BLUETOOTH_DPM_RESULT_SUCCESS:
-               return BT_ERROR_NONE;
-       case BLUETOOTH_DPM_RESULT_INVALID_PARAM:
-               return BT_ERROR_INVALID_PARAMETER;
-       case BLUETOOTH_DPM_RESULT_NOT_SUPPORTED:
-               return BT_ERROR_NOT_SUPPORTED;
-       case BLUETOOTH_DPM_RESULT_SERVICE_NOT_ENABLED:
-               return BT_ERROR_NOT_ENABLED;
-       case BLUETOOTH_DPM_RESULT_FAIL:
-       case BLUETOOTH_DPM_RESULT_ACCESS_DENIED:
-       default:
-               return BT_ERROR_OPERATION_FAILED;
-       }
-
-}
-
 int bt_dpm_set_allow_bluetooth_mode(bt_dpm_allow_e value)
 {
        int error_code = BT_ERROR_NONE;
@@ -54,7 +35,7 @@ int bt_dpm_set_allow_bluetooth_mode(bt_dpm_allow_e value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_set_allow_mode(dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_set_allow_mode(dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -68,7 +49,7 @@ int bt_dpm_get_allow_bluetooth_mode(bt_dpm_allow_e *value)
 
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_get_allow_mode(&dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_get_allow_mode(&dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
        *value = dpm_value;
@@ -84,7 +65,7 @@ int bt_dpm_activate_device_restriction(bt_dpm_status_e value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_activate_device_restriction(dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_activate_device_restriction(dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -99,7 +80,7 @@ int bt_dpm_is_device_restriction_active(bt_dpm_status_e *value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_is_device_restriction_active(&dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_is_device_restriction_active(&dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
        *value = dpm_value;
@@ -115,7 +96,7 @@ int bt_dpm_activate_uuid_restriction(bt_dpm_status_e value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_activate_uuid_restriction(dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_activate_uuid_restriction(dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -130,7 +111,7 @@ int bt_dpm_is_uuid_restriction_active(bt_dpm_status_e *value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_is_uuid_restriction_active(&dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_is_uuid_restriction_active(&dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
        *value = dpm_value;
@@ -148,7 +129,7 @@ int bt_dpm_add_devices_to_blacklist(const char *device_address)
        BT_CHECK_INPUT_PARAMETER(device_address);
 
        _bt_convert_address_to_hex(&addr_hex, device_address);
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_add_devices_to_blacklist(&addr_hex));
+       error_code = _bt_get_error_code(bluetooth_dpm_add_devices_to_blacklist(&addr_hex));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -165,7 +146,7 @@ int bt_dpm_add_devices_to_whitelist(const char *device_address)
        BT_CHECK_INPUT_PARAMETER(device_address);
 
        _bt_convert_address_to_hex(&addr_hex, device_address);
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_add_devices_to_whitelist(&addr_hex));
+       error_code = _bt_get_error_code(bluetooth_dpm_add_devices_to_whitelist(&addr_hex));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -179,7 +160,7 @@ int bt_dpm_add_uuids_to_blacklist(const char *service_uuid)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_add_uuids_to_blacklist(service_uuid));
+       error_code = _bt_get_error_code(bluetooth_dpm_add_uuids_to_blacklist(service_uuid));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -193,7 +174,7 @@ int bt_dpm_add_uuids_to_whitelist(const char *service_uuid)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_add_uuids_to_whitelist(service_uuid));
+       error_code = _bt_get_error_code(bluetooth_dpm_add_uuids_to_whitelist(service_uuid));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -207,7 +188,7 @@ int bt_dpm_clear_devices_from_blacklist(void)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_clear_devices_from_blacklist());
+       error_code = _bt_get_error_code(bluetooth_dpm_clear_devices_from_blacklist());
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -221,7 +202,7 @@ int bt_dpm_clear_devices_from_whitelist(void)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_clear_devices_from_whitelist());
+       error_code = _bt_get_error_code(bluetooth_dpm_clear_devices_from_whitelist());
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -235,7 +216,7 @@ int bt_dpm_clear_uuids_from_blacklist(void)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_clear_uuids_from_blacklist());
+       error_code = _bt_get_error_code(bluetooth_dpm_clear_uuids_from_blacklist());
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -249,7 +230,7 @@ int bt_dpm_clear_uuids_from_whitelist(void)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_clear_uuids_from_whitelist());
+       error_code = _bt_get_error_code(bluetooth_dpm_clear_uuids_from_whitelist());
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -289,7 +270,7 @@ int bt_dpm_get_devices_from_blacklist(bt_dpm_device_list_s **device_list)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_get_devices_from_blacklist(&dev_list));
+       error_code = _bt_get_error_code(bluetooth_dpm_get_devices_from_blacklist(&dev_list));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -306,7 +287,7 @@ int bt_dpm_get_devices_from_whitelist(bt_dpm_device_list_s **device_list)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_get_devices_from_whitelist(&dev_list));
+       error_code = _bt_get_error_code(bluetooth_dpm_get_devices_from_whitelist(&dev_list));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -352,7 +333,7 @@ int bt_dpm_get_uuids_from_blacklist(bt_dpm_uuids_list_s **uuid_list)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_get_uuids_from_blacklist(&uuids));
+       error_code = _bt_get_error_code(bluetooth_dpm_get_uuids_from_blacklist(&uuids));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -369,7 +350,7 @@ int bt_dpm_get_uuids_from_whitelist(bt_dpm_uuids_list_s **uuid_list)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_get_uuids_from_whitelist(&uuids));
+       error_code = _bt_get_error_code(bluetooth_dpm_get_uuids_from_whitelist(&uuids));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -388,7 +369,7 @@ int bt_dpm_remove_device_from_whitelist(const char *device_address)
        BT_CHECK_INPUT_PARAMETER(device_address);
 
        _bt_convert_address_to_hex(&addr_hex, device_address);
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_remove_device_from_whitelist(&addr_hex));
+       error_code = _bt_get_error_code(bluetooth_dpm_remove_device_from_whitelist(&addr_hex));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -405,7 +386,7 @@ int bt_dpm_remove_device_from_blacklist(const char *device_address)
        BT_CHECK_INPUT_PARAMETER(device_address);
 
        _bt_convert_address_to_hex(&addr_hex, device_address);
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_remove_device_from_blacklist(&addr_hex));
+       error_code = _bt_get_error_code(bluetooth_dpm_remove_device_from_blacklist(&addr_hex));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -419,7 +400,7 @@ int bt_dpm_remove_uuid_from_whitelist(const char *service_uuid)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_remove_uuid_from_whitelist(service_uuid));
+       error_code = _bt_get_error_code(bluetooth_dpm_remove_uuid_from_whitelist(service_uuid));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -433,7 +414,7 @@ int bt_dpm_remove_uuid_from_blacklist(const char *service_uuid)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_remove_uuid_from_blacklist(service_uuid));
+       error_code = _bt_get_error_code(bluetooth_dpm_remove_uuid_from_blacklist(service_uuid));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -448,7 +429,7 @@ int bt_dpm_set_allow_outgoing_call(bt_dpm_status_e value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_set_allow_outgoing_call(dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_set_allow_outgoing_call(dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -463,7 +444,7 @@ int bt_dpm_get_allow_outgoing_call(bt_dpm_status_e *value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_get_allow_outgoing_call(&dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_get_allow_outgoing_call(&dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
        *value = dpm_value;
@@ -479,7 +460,7 @@ int bt_dpm_set_pairing_state(bt_dpm_status_e value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_set_pairing_state(dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_set_pairing_state(dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -494,7 +475,7 @@ int bt_dpm_get_pairing_state(bt_dpm_status_e *value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_get_pairing_state(&dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_get_pairing_state(&dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
        *value = dpm_value;
@@ -511,7 +492,7 @@ int bt_dpm_set_profile_state(bt_dpm_profile_e profile, bt_dpm_status_e value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_set_profile_state(dpm_profile, dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_set_profile_state(dpm_profile, dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -526,7 +507,7 @@ int bt_dpm_get_profile_state(bt_dpm_profile_e profile, bt_dpm_status_e *value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_get_profile_state(profile, &dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_get_profile_state(profile, &dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
        *value = dpm_value;
@@ -542,7 +523,7 @@ int bt_dpm_set_desktop_connectivity_state(bt_dpm_status_e value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_set_desktop_connectivity_state(dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_set_desktop_connectivity_state(dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -557,7 +538,7 @@ int bt_dpm_get_desktop_connectivity_state(bt_dpm_status_e *value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_get_desktop_connectivity_state(&dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_get_desktop_connectivity_state(&dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
        *value = dpm_value;
@@ -573,7 +554,7 @@ int bt_dpm_set_discoverable_state(bt_dpm_status_e value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_set_discoverable_state(dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_set_discoverable_state(dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -588,7 +569,7 @@ int bt_dpm_get_discoverable_state(bt_dpm_status_e *value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_get_discoverable_state(&dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_get_discoverable_state(&dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
        *value = dpm_value;
@@ -604,7 +585,7 @@ int bt_dpm_set_limited_discoverable_state(bt_dpm_status_e value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_set_limited_discoverable_state(dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_set_limited_discoverable_state(dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -619,7 +600,7 @@ int bt_dpm_get_limited_discoverable_state(bt_dpm_status_e *value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_get_limited_discoverable_state(&dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_get_limited_discoverable_state(&dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
        *value = dpm_value;
@@ -635,7 +616,7 @@ int bt_dpm_set_data_transfer_state(bt_dpm_status_e value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_set_data_transfer_state(dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_set_data_transfer_state(dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
@@ -650,7 +631,7 @@ int bt_dpm_get_data_transfer_state(bt_dpm_status_e *value)
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
        BT_CHECK_INIT_STATUS();
 
-       error_code = _bt_dpm_get_error_code(bluetooth_dpm_get_data_transfer_state(&dpm_value));
+       error_code = _bt_get_error_code(bluetooth_dpm_get_data_transfer_state(&dpm_value));
        if (error_code != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
        *value = dpm_value;
index 3ff0add053a8ad272b8aafb1feea66ab7cd491aa..b05bf207a42987d034ad0186c1754857c29b5783 100644 (file)
 #include "bluetooth_internal.h"
 #include "bluetooth_type_internal.h"
 
-#ifndef GATT_DIRECT
-#include "bluetooth-gatt-server-api.h"
-int instance_id;
-#endif
-
 #define BT_ADDR_STR_LEN                17
 
 static GSList *gatt_client_list = NULL;
@@ -37,8 +32,11 @@ static GSList *gatt_server_list = NULL;
 static bool is_gatt_server_initialized = false;
 static bool is_gatt_server_started = false;
 
-bt_gatt_service_s* __bt_gatt_service_create(const char *uuid,
-                               bt_gatt_service_type_e type);
+static bt_gatt_service_s* __bt_gatt_service_create(const char *uuid,
+                                                  bt_gatt_service_type_e type);
+static void __bt_gatt_free_descriptor(bt_gatt_h gatt_handle);
+static void __bt_gatt_free_characteristic(bt_gatt_h gatt_handle);
+static void __bt_gatt_free_service(bt_gatt_h gatt_handle);
 
 #define BT_CHECK_GATT_SUPPORT() \
 { \
@@ -55,7 +53,7 @@ bt_gatt_service_s* __bt_gatt_service_create(const char *uuid,
 }
 
 /* LCOV_EXCL_START */
-int __bt_check_gatt_server_init_status(void)
+static int __bt_check_gatt_server_init_status(void)
 {
        if (is_gatt_server_initialized != true) {
                BT_ERR("NOT_INITIALIZED(0x%08x)", BT_ERROR_NOT_INITIALIZED);
@@ -82,7 +80,11 @@ static int __get_gatt_handle_by_uuid(GSList *list, const char *uuid,
                bt_gatt_common_s *common = (bt_gatt_common_s *)l->data;
 
                uuid128_b = _bt_convert_uuid_to_uuid128(common->uuid);
-               if (g_ascii_strcasecmp(uuid128_a, uuid128_b) == 0) {
+
+               if (uuid128_b == NULL) {
+                       BT_ERR("__get_gatt_handle_by_uuid Error Parameter are NULL..\n");
+                       continue;
+               } else if (g_ascii_strcasecmp(uuid128_a, uuid128_b) == 0) {
                        g_free(uuid128_b);
                        break;
                }
@@ -91,8 +93,19 @@ static int __get_gatt_handle_by_uuid(GSList *list, const char *uuid,
        }
        g_free(uuid128_a);
 
-       if (!l)
+       if (!l) {
+               char *name = NULL;
+               bt_get_uuid_name(uuid, &name);
+               BT_INFO("Find uuid : %s [%s]", uuid, name);
+               g_free(name);
+               for (l = list; l; l = g_slist_next(l)) {
+                       bt_gatt_common_s *common = (bt_gatt_common_s *)l->data;
+                       bt_get_uuid_name(common->uuid, &name);
+                       BT_INFO("%s %s [%s]", common->path + 38, common->uuid, name);
+                       g_free(name);
+               }
                return BT_ERROR_NO_DATA;
+       }
 
        *gatt_handle = l->data;
 
@@ -121,18 +134,6 @@ const GSList* _bt_gatt_get_server_list(void)
        return gatt_server_list;
 }
 
-static void __bt_gatt_client_handle_destroy(bt_gatt_h gatt_handle)
-{
-       bt_gatt_common_s *handle = (bt_gatt_common_s*)gatt_handle;
-
-       if (handle->type == BT_GATT_TYPE_SERVICE)
-               bt_gatt_service_destroy(gatt_handle);
-       else if (handle->type == BT_GATT_TYPE_CHARACTERISTIC)
-               bt_gatt_characteristic_destroy(gatt_handle);
-       else if (handle->type == BT_GATT_TYPE_DESCRIPTOR)
-               bt_gatt_descriptor_destroy(gatt_handle);
-}
-
 bt_gatt_h _bt_gatt_client_add_service(bt_gatt_client_h client, const char *path)
 {
        int ret;
@@ -186,6 +187,16 @@ int _bt_gatt_client_update_services(bt_gatt_client_h client)
        int ret;
        int i;
 
+       if (!client_s->connected) {
+               BT_INFO("Not connected");
+               return BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED;
+       }
+
+       if (client_s->services_discovered) {
+               BT_INFO("Already discovered");
+               return BT_ERROR_ALREADY_DONE;
+       }
+
        _bt_convert_address_to_hex(&addr_hex, client_s->remote_address);
 
        ret = bluetooth_gatt_get_primary_services(&addr_hex, &prim_svc);
@@ -195,8 +206,8 @@ int _bt_gatt_client_update_services(bt_gatt_client_h client)
                return ret;
        }
 
-       g_slist_free_full(client_s->services,
-                       __bt_gatt_client_handle_destroy);
+       if (client_s->services)
+               g_slist_free_full(client_s->services, __bt_gatt_free_service);
        client_s->services = NULL;
 
        if (prim_svc.count == 0) {
@@ -204,12 +215,13 @@ int _bt_gatt_client_update_services(bt_gatt_client_h client)
                return BT_ERROR_NONE;
        }
 
+       client_s->services_discovered = true;
        for (i = 0; i < prim_svc.count; i++) {
-               BT_INFO("Service handle[%d] %s", i, prim_svc.handle[i]);
-
-               if (!_bt_gatt_client_add_service(client, prim_svc.handle[i]))
+               if (!_bt_gatt_client_add_service(client, prim_svc.handle[i])) {
                        BT_ERR("_bt_gatt_client_add_service is failed [%s]",
                                        prim_svc.handle[i]);
+                       client_s->services_discovered = false;
+               }
        }
        g_strfreev(prim_svc.handle);
 
@@ -265,8 +277,7 @@ next:
        g_strfreev(svc->include_handles);
        svc->include_handles = NULL;
 
-       g_slist_free_full(svc->included_services,
-                       __bt_gatt_client_handle_destroy);
+       g_slist_free_full(svc->included_services, __bt_gatt_free_service);
 
        svc->included_services = include_list;
 
@@ -328,8 +339,7 @@ next:
        g_strfreev(svc->char_handles);
        svc->char_handles = NULL;
 
-       g_slist_free_full(svc->characteristics,
-                       __bt_gatt_client_handle_destroy);
+       g_slist_free_full(svc->characteristics, __bt_gatt_free_characteristic);
 
        svc->characteristics = chr_list;
 
@@ -384,15 +394,13 @@ next:
        g_strfreev(chr->desc_handles);
        chr->desc_handles = NULL;
 
-       g_slist_free_full(chr->descriptors,
-                       __bt_gatt_client_handle_destroy);
+       g_slist_free_full(chr->descriptors, __bt_gatt_free_descriptor);
 
        chr->descriptors = desc_list;
 
        return BT_ERROR_NONE;
 }
 
-#ifdef TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT
 bool _bt_gatt_is_legacy_client_mode(void)
 {
        if (gatt_client_list) {
@@ -611,7 +619,7 @@ int bt_gatt_watch_characteristic_changes(bt_gatt_attribute_h service)
        BT_CHECK_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(service);
 
-       ret = _bt_get_error_code(bluetooth_gatt_watch_characteristics((const char *)service)); /* LCOV_EXCL_LINE */
+       ret = _bt_get_error_code(bluetooth_gatt_watch_characteristics((const char *)service, NULL)); /* LCOV_EXCL_LINE */
 
        if (ret != BT_ERROR_NONE) /* LCOV_EXCL_LINE */
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret),
@@ -769,7 +777,7 @@ int bt_gatt_read_characteristic_value(bt_gatt_attribute_h characteristic,
        BT_CHECK_INPUT_PARAMETER(characteristic);
        BT_CHECK_INPUT_PARAMETER(callback); /* LCOV_EXCL_START */
 
-       ret = _bt_get_error_code(bluetooth_gatt_read_characteristic_value((const char *)characteristic));
+       ret = _bt_get_error_code(bluetooth_gatt_read_characteristic_value((const char *)characteristic, NULL));
 
        if (ret != BT_ERROR_NONE) {
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
@@ -805,7 +813,6 @@ int bt_gatt_discover_characteristic_descriptor(bt_gatt_attribute_h characteristi
 
        return ret; /* LCOV_EXCL_STOP */
 }
-#endif
 
 int bt_gatt_connect(const char *address, bool auto_connect)
 {
@@ -870,7 +877,11 @@ static void __bt_gatt_free_descriptor(bt_gatt_h gatt_handle)
        g_free(desc->path);
        g_free(desc->uuid);
        g_free(desc->value);
-       g_free(desc);
+
+       if (!desc->read_cb && !desc->write_cb)
+               g_free(desc);
+       else
+               desc->parent = NULL;
 }
 
 static void __bt_gatt_free_characteristic(bt_gatt_h gatt_handle)
@@ -895,7 +906,11 @@ static void __bt_gatt_free_characteristic(bt_gatt_h gatt_handle)
        g_free(chr->path);
        g_free(chr->uuid);
        g_free(chr->value);
-       g_free(chr);
+
+       if (!chr->read_cb && !chr->write_cb)
+               g_free(chr);
+       else
+               chr->parent = NULL;
 }
 
 static void __bt_gatt_free_service(bt_gatt_h gatt_handle)
@@ -907,20 +922,10 @@ static void __bt_gatt_free_service(bt_gatt_h gatt_handle)
        g_slist_free_full(svc->characteristics, __bt_gatt_free_characteristic);
 
        if (svc->role == BT_GATT_ROLE_SERVER) {
-#ifdef GATT_DIRECT
                ret = _bt_get_error_code(bluetooth_gatt_unregister_service(svc->path));
                if (ret != BT_ERROR_NONE)
                        BT_ERR("%s(0x%08x) : Failed to unregister service",
                                        _bt_convert_error_to_string(ret), ret);
-#else
-               BT_INFO("GATT Server Delete Service: service handle [%d] Inst ID [%d]", svc->handle, instance_id);
-               ret = _bt_get_error_code(bluetooth_gatt_server_delete_service(svc->handle, instance_id));
-               if (ret != BT_ERROR_NONE) {
-                       BT_ERR("%s(0x%08x)",
-                                       _bt_convert_error_to_string(ret), ret);
-               }
-#endif
-
        }
 
        g_strfreev(svc->include_handles);
@@ -984,6 +989,7 @@ static void __bt_gatt_destroy_service(bt_gatt_h gatt_handle)
        __bt_gatt_free_service(gatt_handle);
 }
 
+/* LCOV_EXCL_START */
 static int __convert_int_to_signed_bits(int i, int size)
 {
        if (i < 0)
@@ -1082,6 +1088,7 @@ static int __get_data_type_int_size(bt_data_type_int_e format)
                return 0;
        }
 }
+/* LCOV_EXCL_STOP */
 
 int bt_gatt_destroy(bt_gatt_h gatt_handle)
 {
@@ -1105,6 +1112,32 @@ int bt_gatt_destroy(bt_gatt_h gatt_handle)
        return BT_ERROR_NONE;
 }
 
+static int __get_write_prop(bt_gatt_write_type_e type, bt_gatt_property_e *prop)
+{
+       if (!prop)
+               return BT_ERROR_INVALID_PARAMETER;
+
+       switch (type) {
+       case BT_GATT_WRITE_TYPE_WRITE:
+               *prop = BT_GATT_PROPERTY_WRITE;
+               break;
+       case BT_GATT_WRITE_TYPE_WRITE_NO_RESPONSE:
+               *prop = BT_GATT_PROPERTY_WRITE_WITHOUT_RESPONSE;
+               break;
+/* After ACR for BT_GATT_WRITE_TYPE_SIGNED_WRITE, will enable this code */
+#if 0
+       case BT_GATT_WRITE_TYPE_SIGNED_WRITE:
+               *prop = BT_GATT_PROPERTY_AUTHENTICATED_SIGNED_WRITES;
+               break;
+#endif
+       default:
+               BT_ERR("Unknow write type : %d", type);
+               return BT_ERROR_INVALID_PARAMETER;
+       }
+
+       return BT_ERROR_NONE;
+}
+
 int bt_gatt_service_destroy(bt_gatt_h gatt_handle)
 {
        bt_gatt_common_s *handle = (bt_gatt_common_s *)gatt_handle;
@@ -1311,11 +1344,6 @@ int bt_gatt_set_value(bt_gatt_h gatt_handle, const char *value,
        bt_gatt_characteristic_s *chr = (bt_gatt_characteristic_s *)gatt_handle;
        bt_gatt_descriptor_s *desc = (bt_gatt_descriptor_s *)gatt_handle;
 
-#ifndef GATT_DIRECT
-       int k;
-       bluetooth_gatt_server_update_value_t param;
-#endif
-
        BT_CHECK_GATT_SUPPORT();
        BT_CHECK_INIT_STATUS();
 
@@ -1333,7 +1361,6 @@ int bt_gatt_set_value(bt_gatt_h gatt_handle, const char *value,
                return BT_ERROR_INVALID_PARAMETER;
        }
 
-#ifdef GATT_DIRECT
        if (handle->role == BT_GATT_ROLE_SERVER && handle->path) {
                ret = _bt_get_error_code(bluetooth_gatt_update_characteristic(handle->path,
                                                        value, value_length));
@@ -1342,26 +1369,7 @@ int bt_gatt_set_value(bt_gatt_h gatt_handle, const char *value,
                        return ret;
                }
        }
-#else
-       if (handle->role == BT_GATT_ROLE_SERVER && handle->handle) {
 
-               memset(&param, 0x00, sizeof(bluetooth_gatt_server_update_value_t));
-               /* DEBUG */
-               for(k=0; k < value_length; k++) {
-                       BT_DBG("New Value[%d] = [0x%x]", k, value[k]);
-               }
-               param.length = value_length;
-               memcpy(&param.data.data[0], value, value_length);
-
-               param.attribute_handle = handle->handle;
-               ret = _bt_get_error_code(bluetooth_gatt_server_update_characteristic(instance_id,
-                                       &param));
-               if (ret != BT_ERROR_NONE) {
-                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
-                       return ret;
-               }
-       }
-#endif
        g_free(*val);
        *val = NULL;
        if (value_length > 0)
@@ -1384,10 +1392,6 @@ int bt_gatt_set_int_value(bt_gatt_h gatt_handle, bt_data_type_int_e type,
        bt_gatt_characteristic_s *chr = (bt_gatt_characteristic_s *)gatt_handle;
        bt_gatt_descriptor_s *desc = (bt_gatt_descriptor_s *)gatt_handle;
 
-#ifndef GATT_DIRECT
-        bluetooth_gatt_server_update_value_t param;
-#endif
-
        BT_CHECK_GATT_SUPPORT();
        BT_CHECK_INIT_STATUS();
 
@@ -1415,22 +1419,12 @@ int bt_gatt_set_int_value(bt_gatt_h gatt_handle, bt_data_type_int_e type,
                *val_len = fmt_size;
        } else if (*val_len == offset) { /* Added */
                tmp = g_malloc0(*val_len + fmt_size);
-               /* Fix : NULL_RETURNS */
-               if (!tmp) {
-                       g_free(*val);
-                       return BT_ERROR_OUT_OF_MEMORY;
-               }
                memcpy(tmp, *val, *val_len);
                g_free(*val);
                *val = tmp;
                *val_len += fmt_size;
        } else if (*val_len < offset + fmt_size) {/* Overlapped */
                tmp = g_malloc0(offset + fmt_size);
-               /* Fix : NULL_RETURNS */
-               if (!tmp) {
-                       g_free(*val);
-                       return BT_ERROR_OUT_OF_MEMORY;
-               }
                memcpy(tmp, *val, *val_len);
                g_free(*val);
                *val = tmp;
@@ -1485,20 +1479,8 @@ int bt_gatt_set_int_value(bt_gatt_h gatt_handle, bt_data_type_int_e type,
        }
 
        if (handle->role == BT_GATT_ROLE_SERVER && handle->path) {
-
-#ifdef GATT_DIRECT
                ret = _bt_get_error_code(bluetooth_gatt_update_characteristic(handle->path,
                                                        *val, *val_len));
-#else
-               memset(&param, 0x00, sizeof(bluetooth_gatt_server_update_value_t));
-                param.length = *val_len;
-                memcpy(&param.data.data[0], *val, *val_len);
-
-                param.attribute_handle = handle->handle;
-                ret = _bt_get_error_code(bluetooth_gatt_server_update_characteristic(instance_id,
-                                        &param));
-
-#endif
                if (ret != BT_ERROR_NONE) {
                        BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
                        return ret;
@@ -1523,10 +1505,6 @@ int bt_gatt_set_float_value(bt_gatt_h gatt_handle, bt_data_type_float_e type,
        bt_gatt_characteristic_s *chr = (bt_gatt_characteristic_s *)gatt_handle;
        bt_gatt_descriptor_s *desc = (bt_gatt_descriptor_s *)gatt_handle;
 
-#ifndef GATT_DIRECT
-        bluetooth_gatt_server_update_value_t param;
-#endif
-
        BT_CHECK_GATT_SUPPORT();
        BT_CHECK_INIT_STATUS();
 
@@ -1556,28 +1534,15 @@ int bt_gatt_set_float_value(bt_gatt_h gatt_handle, bt_data_type_float_e type,
 
        if (*val == NULL) {
                *val = g_malloc0(fmt_size);
-               /* Fix : NULL_RETURNS */
-               if (*val == NULL)
-                       return BT_ERROR_OUT_OF_MEMORY;
                *val_len = fmt_size;
        } else if (*val_len == offset) {/* Added */
                tmp = g_malloc0(*val_len + fmt_size);
-               /* Fix : NULL_RETURNS */
-               if (tmp == NULL) {
-                       g_free(*val);
-                       return BT_ERROR_OUT_OF_MEMORY;
-               }
                memcpy(tmp, *val, *val_len);
                g_free(*val);
                *val = tmp;
                *val_len += fmt_size;
        } else if (*val_len < offset + fmt_size) {/* Overlapped */
                tmp = g_malloc0(offset + fmt_size);
-               /* Fix : NULL_RETURNS */
-               if (tmp == NULL) {
-                       g_free(*val);
-                       return BT_ERROR_OUT_OF_MEMORY;
-               }
                memcpy(tmp, *val, *val_len);
                g_free(*val);
                *val = tmp;
@@ -1607,19 +1572,8 @@ int bt_gatt_set_float_value(bt_gatt_h gatt_handle, bt_data_type_float_e type,
        }
 
        if (handle->role == BT_GATT_ROLE_SERVER && handle->path) {
-
-#ifdef GATT_DIRECT
                ret = _bt_get_error_code(bluetooth_gatt_update_characteristic(handle->path,
                                                        *val, *val_len));
-#else
-               memset(&param, 0x00, sizeof(bluetooth_gatt_server_update_value_t));
-                param.length = *val_len;
-                memcpy(&param.data.data[0], *val, *val_len);
-
-                param.attribute_handle = handle->handle;
-                ret = _bt_get_error_code(bluetooth_gatt_server_update_characteristic(instance_id,
-                                        &param));
-#endif
                if (ret != BT_ERROR_NONE) {
                        BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
                        return ret;
@@ -1724,7 +1678,7 @@ int bt_gatt_get_type(bt_gatt_h gatt_handle, bt_gatt_type_e *gatt_type)
        return BT_ERROR_NONE; /* LCOV_EXCL_LINE */
 }
 
-bt_gatt_service_s* __bt_gatt_service_create(const char *uuid,
+static bt_gatt_service_s* __bt_gatt_service_create(const char *uuid,
                                bt_gatt_service_type_e type)
 {
        bt_gatt_service_s *svc;
@@ -1737,15 +1691,10 @@ bt_gatt_service_s* __bt_gatt_service_create(const char *uuid,
                return NULL;
 
        svc->type = BT_GATT_TYPE_SERVICE;
-#ifdef GATT_DIRECT
        if (strlen(uuid) == 8)
                svc->uuid = _bt_convert_uuid_to_uuid128(uuid);
        else
                svc->uuid = strdup(uuid);
-#else
-       svc->uuid = _bt_convert_uuid_to_uuid128(uuid);
-
-#endif
        if (svc->uuid == NULL) {
                g_free(svc);
                return NULL;
@@ -1777,10 +1726,7 @@ int bt_gatt_service_create(const char *uuid, bt_gatt_service_type_e type,
                return BT_ERROR_OUT_OF_MEMORY;
        svc->role = BT_GATT_ROLE_SERVER;
        svc->is_included_service = false;
-#ifndef GATT_DIRECT
-       BT_INFO("Current handle count of service [%d]", svc->numhandles);
-       svc->numhandles = 1; /* Initalize numhandles to 1 */
-#endif
+
        *service = (bt_gatt_h)svc;
 
        return BT_ERROR_NONE;
@@ -1804,10 +1750,7 @@ int bt_gatt_service_add_characteristic(bt_gatt_h service,
 
        svc->characteristics = g_slist_append(svc->characteristics, chr);
        chr->parent = (void *)service;
-#ifndef GATT_DIRECT
-       BT_INFO("Current handle count of service [%d]", svc->numhandles);
-        svc->numhandles += 2;
-#endif
+
        return BT_ERROR_NONE;
 }
 
@@ -1830,10 +1773,6 @@ int bt_gatt_service_add_included_service(bt_gatt_h service,
        svc->included_services = g_slist_append(svc->included_services,
                                                        included_svc);
        included_svc->parent = (void *)service;
-#ifndef GATT_DIRECT
-       BT_INFO("Current handle count of service [%d]", svc->numhandles);
-        svc->numhandles = 1; /* Initalize numhandles to 1 */
-#endif
 
        return BT_ERROR_NONE;
 }
@@ -2042,22 +1981,16 @@ int bt_gatt_characteristic_create(const char *uuid, int permissions,
        if (value_length > 0)
                BT_CHECK_INPUT_PARAMETER(value);
 
-       chr = malloc(sizeof(*chr));
-       if (chr == NULL)
-               return BT_ERROR_OUT_OF_MEMORY;
+       chr = g_malloc(sizeof(*chr));
 
        memset(chr, 0x00, sizeof(*chr));
 
        chr->type = BT_GATT_TYPE_CHARACTERISTIC;
        chr->role = BT_GATT_ROLE_SERVER;
-#ifdef GATT_DIRECT
        if (strlen(uuid) == 8)
                chr->uuid = _bt_convert_uuid_to_uuid128(uuid);
        else
                chr->uuid = g_strdup(uuid);
-#else
-       chr->uuid = _bt_convert_uuid_to_uuid128(uuid);
-#endif
        if (chr->uuid == NULL) {
                ret = BT_ERROR_OUT_OF_MEMORY;
                goto fail;
@@ -2090,9 +2023,6 @@ int bt_gatt_characteristic_add_descriptor(bt_gatt_h characteristic,
                                          bt_gatt_h descriptor)
 {
        bt_gatt_characteristic_s *chr = (bt_gatt_characteristic_s *)characteristic;
-#ifndef GATT_DIRECT
-       bt_gatt_service_s *svc = (bt_gatt_service_s *)chr->parent;
-#endif
        bt_gatt_descriptor_s *desc = (bt_gatt_descriptor_s *)descriptor;
 
        BT_CHECK_GATT_SUPPORT();
@@ -2114,10 +2044,6 @@ int bt_gatt_characteristic_add_descriptor(bt_gatt_h characteristic,
 
        chr->descriptors = g_slist_append(chr->descriptors, desc);
        desc->parent = (void *)characteristic;
-#ifndef GATT_DIRECT
-       BT_INFO("Current handle count of service [%d]", svc->numhandles);
-        svc->numhandles += 1; /* Initalize numhandles to 1 */
-#endif
 
        return BT_ERROR_NONE;
 }
@@ -2204,7 +2130,8 @@ int bt_gatt_characteristic_set_write_type(bt_gatt_h characteristic,
                                        bt_gatt_write_type_e write_type)
 {
        bt_gatt_characteristic_s *chr = (bt_gatt_characteristic_s *)characteristic;
-       int property;
+       bt_gatt_property_e property = BT_GATT_PROPERTY_WRITE;
+       int ret;
 
        BT_CHECK_GATT_SUPPORT();
        BT_CHECK_INIT_STATUS();
@@ -2216,22 +2143,9 @@ int bt_gatt_characteristic_set_write_type(bt_gatt_h characteristic,
                return BT_ERROR_INVALID_PARAMETER; /* LCOV_EXCL_LINE */
        }
 
-       switch (write_type) {
-       case BT_GATT_WRITE_TYPE_WRITE:
-               property = BT_GATT_PROPERTY_WRITE;
-               break;
-       case BT_GATT_WRITE_TYPE_WRITE_NO_RESPONSE:
-               property = BT_GATT_PROPERTY_WRITE_WITHOUT_RESPONSE;
-               break;
-/* After ACR for BT_GATT_WRITE_TYPE_SIGNED_WRITE, will enable this code */
-#if 0
-       case BT_GATT_WRITE_TYPE_SIGNED_WRITE:
-               property = BT_GATT_PROPERTY_AUTHENTICATED_SIGNED_WRITES;
-               break;
-#endif
-       default:
+       ret = __get_write_prop(write_type, &property);
+       if (ret != BT_ERROR_NONE)
                return BT_ERROR_NOT_SUPPORTED;
-       }
 
        if (!(chr->properties & property))
                return BT_ERROR_NOT_SUPPORTED;
@@ -2332,22 +2246,15 @@ int bt_gatt_descriptor_create(const char *uuid, int permissions,
        if (value_length > 0)
                BT_CHECK_INPUT_PARAMETER(value);
 
-       desc = malloc(sizeof(*desc));
-       if (desc == NULL)
-               return BT_ERROR_OUT_OF_MEMORY;
-
+       desc = g_malloc(sizeof(*desc));
        memset(desc, 0x00, sizeof(*desc));
 
        desc->type = BT_GATT_TYPE_DESCRIPTOR;
        desc->role = BT_GATT_ROLE_SERVER;
-#ifdef GATT_DIRECT
        if (strlen(uuid) == 8)
                desc->uuid = _bt_convert_uuid_to_uuid128(uuid);
        else
                desc->uuid = g_strdup(uuid);
-#else
-               desc->uuid = _bt_convert_uuid_to_uuid128(uuid);
-#endif
        if (desc->uuid == NULL) {
                ret = BT_ERROR_OUT_OF_MEMORY;
                goto fail;
@@ -2404,11 +2311,7 @@ int bt_gatt_server_initialize(void)
        }
 
        if (!is_gatt_server_initialized) {
-#ifndef GATT_DIRECT
-               ret = _bt_get_error_code(bluetooth_gatt_server_init(&instance_id, _bt_gatt_server_event_proxy, NULL));
-#else
                ret = _bt_get_error_code(bluetooth_gatt_init());
-#endif
 
                if (ret != BT_ERROR_NONE) {
                        BT_ERR("%s(0x%08x)",
@@ -2443,34 +2346,14 @@ int bt_gatt_server_deinitialize(void)
                g_slist_free(gatt_server_list);
                gatt_server_list = NULL;
 
-#ifndef GATT_DIRECT
-               ret = _bt_get_error_code(bluetooth_gatt_deinit());
-               if (ret != BT_ERROR_NONE) {
-                       BT_ERR("%s(0x%08x)",
-                               _bt_convert_error_to_string(ret), ret);
-                       return BT_ERROR_OPERATION_FAILED;
-               }
-
-               ret = _bt_get_error_code(bluetooth_gatt_server_unregister(instance_id));
-
-               if (ret != BT_ERROR_NONE) {
-                       BT_ERR("%s(0x%08x)",
-                               _bt_convert_error_to_string(ret), ret);
-                       return BT_ERROR_OPERATION_FAILED;
-               }
-#else
                ret = _bt_get_error_code(bluetooth_gatt_deinit());
 
-#endif
                if (ret != BT_ERROR_NONE) {
                        BT_ERR("%s(0x%08x)",
                                _bt_convert_error_to_string(ret), ret);
                        return BT_ERROR_OPERATION_FAILED;
                }
 
-#ifndef GATT_DIRECT
-               instance_id = -1;
-#endif
                is_gatt_server_initialized = false;
                is_gatt_server_started = false;
                return BT_ERROR_NONE;
@@ -2500,7 +2383,6 @@ int bt_gatt_server_create(bt_gatt_server_h *server)
 
        *server = (bt_gatt_server_h)serv;
 
-       BT_INFO("Creating a GATT Server");
        gatt_server_list = g_slist_append(gatt_server_list, serv);
 
        return BT_ERROR_NONE;
@@ -2572,9 +2454,6 @@ int bt_gatt_server_set_characteristic_notification_state_change_cb(bt_gatt_h gat
 int bt_gatt_server_register_service(bt_gatt_server_h server, bt_gatt_h service)
 {
        int ret = BT_ERROR_NONE;
-#ifndef GATT_DIRECT
-       bluetooth_gatt_server_attribute_params_t param;
-#endif
        bt_gatt_server_s *serv = (bt_gatt_server_s *)server;
        bt_gatt_service_s *svc = (bt_gatt_service_s *)service;
        GSList *char_l;
@@ -2594,15 +2473,9 @@ int bt_gatt_server_register_service(bt_gatt_server_h server, bt_gatt_h service)
                BT_ERR("Already Server started");
                return BT_ERROR_OPERATION_FAILED;
        }
-#ifndef GATT_DIRECT
-       BT_INFO("Service number of total handles [%d]", svc->numhandles);
-       ret = _bt_get_error_code(bluetooth_gatt_server_add_service(svc->uuid, svc->type,
-                               svc->numhandles, instance_id, &svc->handle));
-       BT_INFO("Service added handle [%d]", svc->handle);
-#else
+
        ret = _bt_get_error_code(bluetooth_gatt_add_service(svc->uuid,
-                               &svc->path));
-#endif
+                                                       &svc->path));
        if (ret != BT_ERROR_NONE) {
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
                return ret;
@@ -2612,98 +2485,65 @@ int bt_gatt_server_register_service(bt_gatt_server_h server, bt_gatt_h service)
                GSList *desc_l;
                bt_gatt_characteristic_s *chr = char_l->data;
 
-#ifndef GATT_DIRECT
-               /* Add Characteristic to GATT database */
-               memset(&param, 0x00, sizeof(param));
-               param.permissions = chr->permissions;
-               param.properties = chr->properties;
-               param.service_handle = svc->handle;
-               param.instance_id = instance_id;
-               BT_INFO("GATT Server Add Char: UUID [%s] permission [%d] properties [%d] service handle [%d] Inst ID [%d]",
-                               chr->uuid, chr->permissions, chr->properties, svc->handle, instance_id);
-               ret = _bt_get_error_code(bluetooth_gatt_server_add_new_characteristic(chr->uuid, &param, &chr->handle));
-               BT_INFO("Char added handle [%d]", chr->handle);
-#else
                ret = _bt_get_error_code(bluetooth_gatt_add_new_characteristic(
                                        svc->path, chr->uuid,
                                        (bt_gatt_permission_t)chr->permissions,
                                        (bt_gatt_characteristic_property_t)chr->properties,
                                        &chr->path));
-#endif
                if (ret != BT_ERROR_NONE) {
                        BT_ERR("%s(0x%08x)",
-                                       _bt_convert_error_to_string(ret), ret);
+                               _bt_convert_error_to_string(ret), ret);
                        goto fail;
                }
 
-               /* Only in platform */
-#ifdef GATT_DIRECT
                ret = _bt_get_error_code(bluetooth_gatt_set_characteristic_value(chr->path,
                                        chr->value, chr->value_length));
 
                if (ret != BT_ERROR_NONE) {
                        BT_ERR("%s(0x%08x)",
-                                       _bt_convert_error_to_string(ret), ret);
+                               _bt_convert_error_to_string(ret), ret);
                        goto fail;
                }
-#endif
+
                for (desc_l = chr->descriptors; desc_l; desc_l = g_slist_next(desc_l)) {
                        bt_gatt_descriptor_s *desc = desc_l->data;
 
-#ifndef GATT_DIRECT
-                       /* Add descriptor to GATT database */
-                       BT_INFO("GATT Server Add Descriptor: UUID [%s] permission [%d] service handle [%d] Inst ID [%d]",
-                                       desc->uuid, desc->permissions, svc->handle, instance_id);
-                       ret = _bt_get_error_code(bluetooth_gatt_server_add_descriptor(desc->uuid, (bt_gatt_permission_t)desc->permissions,
-                                               svc->handle, instance_id, &desc->handle));
-                       BT_INFO("Descriptor added handle [%d]", desc->handle);
-#else
                        ret = _bt_get_error_code(bluetooth_gatt_add_descriptor(
-                                               chr->path, desc->uuid,
-                                               (bt_gatt_permission_t)desc->permissions,
-                                               &desc->path));
-#endif
+                                                       chr->path, desc->uuid,
+                                                       (bt_gatt_permission_t)desc->permissions,
+                                                       &desc->path));
+
                        if (ret != BT_ERROR_NONE) {
                                BT_ERR("%s(0x%08x)",
-                                               _bt_convert_error_to_string(ret), ret);
+                                       _bt_convert_error_to_string(ret), ret);
                                goto fail;
                        }
 
-                       /* Only in platform */
-#ifdef GATT_DIRECT
                        ret = _bt_get_error_code(bluetooth_gatt_set_descriptor_value(desc->path,
-                                               desc->value, desc->value_length));
+                                       desc->value, desc->value_length));
 
                        if (ret != BT_ERROR_NONE) {
                                BT_ERR("%s(0x%08x)",
-                                               _bt_convert_error_to_string(ret), ret);
+                                       _bt_convert_error_to_string(ret), ret);
                                goto fail;
                        }
-#endif
                }
        }
 
-       /* Only in platform */
-#ifdef GATT_DIRECT
        ret = _bt_get_error_code(bluetooth_gatt_register_service(svc->path));
 
        if (ret != BT_ERROR_NONE) {
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
                goto fail;
        }
-#endif
 
        serv->services = g_slist_append(serv->services, svc);
-       BT_INFO("@@Appending one service to the server, current service count [%d]", g_slist_length(serv->services));
        svc->parent = (void *)server;
+
        return ret;
 
 fail:
-       /* Only in platform */
-       BT_ERR("Registering Service failed!!!!!");
-#ifdef GATT_DIRECT
        bluetooth_gatt_unregister_service(svc->path);
-#endif
 
        return ret;
 }
@@ -2744,11 +2584,7 @@ int bt_gatt_server_unregister_all_services(bt_gatt_server_h server)
        g_slist_free_full(serv->services, __bt_gatt_free_service);
        serv->services = NULL;
 
-#ifdef GATT_DIRECT
        ret = bluetooth_gatt_unregister_application();
-#else
-       ret = bluetooth_gatt_server_unregister(instance_id);
-#endif
        is_gatt_server_started = false;
 
        return ret;
@@ -2757,41 +2593,14 @@ int bt_gatt_server_unregister_all_services(bt_gatt_server_h server)
 int bt_gatt_server_start(void)
 {
        int ret = BT_ERROR_NONE;
-#ifndef GATT_DIRECT
-       GSList *l;
-       GSList *l1;
-#endif
+
        BT_CHECK_GATT_SUPPORT();
        BT_CHECK_INIT_STATUS();
        BT_CHECK_GATT_SERVER_INIT_STATUS();
 
        if (!is_gatt_server_started) {
-#ifdef GATT_DIRECT
                ret = bluetooth_gatt_register_application();
-#else
-               /* Kick Start all services*/
-               BT_INFO("Total GATT Servers for this application [%d]", g_slist_length(gatt_server_list));
-               for (l = gatt_server_list; l; l = g_slist_next(l)) {
-                       bt_gatt_server_s *server = (bt_gatt_server_s *)l->data;
-
-                       BT_INFO("Total GATT Services for this current server(server) of this App [%d]", g_slist_length(server->services));
-
-                       for (l1 = server->services; l1; l1 = g_slist_next(l1)) {
-                               bt_gatt_service_s *service = (bt_gatt_service_s *)l1->data;
-                               BT_DBG("Service handle [%d] Service UUID [%s]", service->handle, service->uuid);
-                               /* Mark the service Registered */
-                               ret = _bt_get_error_code(bluetooth_gatt_server_start_service(service->handle, instance_id));
 
-                               if (ret != BT_ERROR_NONE) {
-                                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
-                               }
-                       }
-               }
-
-               /* No need to RegisterApplication, when last service gets started, automatically
-                  application will be registered */
-               //ret = bluetooth_gatt_register_application();
-#endif
                if (ret != BT_ERROR_NONE) {
                        BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
                        return ret;
@@ -2814,47 +2623,17 @@ int bt_gatt_server_send_response(int request_id, bt_gatt_att_request_type_e requ
        BT_CHECK_INIT_STATUS();
 
        if (request_type == BT_GATT_REQUEST_TYPE_READ &&
-               resp_status == BT_ERROR_NONE) {
+               resp_status == BT_ATT_ERROR_NONE) {
                BT_CHECK_INPUT_PARAMETER(value);
 
                if (value_length < 0)
                        return BT_ERROR_INVALID_PARAMETER;
        }
 
-#ifdef GATT_DIRECT
        ret = _bt_get_error_code(bluetooth_gatt_send_response(request_id,
                                        request_type, resp_status,
                                        offset, value, value_length));
-#else
-       bluetooth_gatt_att_data_t resp;
-        bluetooth_gatt_server_response_params_t param;
-
-       memset(&resp,  0x00, sizeof(resp));
-       memset(&param, 0x00, sizeof(param));
-
-       /* Copy response data */
-       resp.length = value_length;
-       resp.offset = offset;
-       memcpy(&resp.data[0], value, value_length);
-
-       /* Copy Response parameters */
-       param.req_type = request_type;
-       param.request_id = request_id;
-       param.response_status = resp_status;
-       param.auth_req = 0;   /* Default value set to 0 as Platform API does not provide this option */
-
-       BT_INFO("GATT Server Send Response: Response type [%d]", request_type);
-       BT_INFO("Req ID [%d] data_len [%d] offset [%d] Resp Status [%d]",
-                        request_id, value_length, offset, resp_status);
-
-        ret = _bt_get_error_code(bluetooth_gatt_server_send_response(&param, &resp));
-
-        if (ret != BT_ERROR_NONE) {
-                BT_ERR("%s(0x%08x)",
-                                _bt_convert_error_to_string(ret), ret);
-                return BT_ERROR_OPERATION_FAILED;
-        }
-#endif
+
        if (ret != BT_ERROR_NONE)
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
 
@@ -2870,13 +2649,6 @@ int bt_gatt_server_notify_characteristic_changed_value(bt_gatt_h characteristic,
        bluetooth_device_address_t addr_hex = { {0,} };
        int ret = BT_ERROR_NONE;
 
-#ifndef GATT_DIRECT
-       int attribute_handle;
-       bluetooth_gatt_att_data_t indication;
-       bluetooth_gatt_server_indication_params_t param;
-       int k;
-#endif
-
        BT_CHECK_GATT_SUPPORT();
        BT_CHECK_INIT_STATUS();
        BT_CHECK_GATT_SERVER_INIT_STATUS();
@@ -2885,85 +2657,27 @@ int bt_gatt_server_notify_characteristic_changed_value(bt_gatt_h characteristic,
 
        _bt_convert_address_to_hex(&addr_hex, device_address);
 
-#ifdef GATT_DIRECT
        if (chr->value_length > 0 && chr->value) {
                if (handle->role == BT_GATT_ROLE_SERVER && handle->path) {
                        ret = bluetooth_gatt_server_set_notification(handle->path,
-                                       &addr_hex);
+                                                               &addr_hex);
                        if (ret != BT_ERROR_NONE) {
                                BT_ERR("%s(0x%08x)",
-                                               _bt_convert_error_to_string(ret), ret);
+                                       _bt_convert_error_to_string(ret), ret);
                                return ret;
                        }
                        ret = _bt_get_error_code(bluetooth_gatt_update_characteristic(
-                                               handle->path,
-                                               chr->value,
-                                               chr->value_length));
+                                                       handle->path,
+                                                       chr->value,
+                                                       chr->value_length));
                        if (ret != BT_ERROR_NONE) {
                                BT_ERR("%s(0x%08x)",
-                                               _bt_convert_error_to_string(ret), ret);
+                                       _bt_convert_error_to_string(ret), ret);
                                return ret;
                        }
                }
        }
 
-#else
-       if (handle->type == BT_GATT_TYPE_CHARACTERISTIC) {
-               attribute_handle = chr->handle;
-       } else {
-               BT_ERR("Type is invalid(type:%d)", handle->type);
-               return BT_ERROR_INVALID_PARAMETER;
-       }
-
-       if (!(chr->properties & BT_GATT_PROPERTY_INDICATE) &&
-                       !(chr->properties & BT_GATT_PROPERTY_NOTIFY)) {
-               BT_ERR("Characteristic [%d] does not have either Notifcation or Indicate property enabled", attribute_handle);
-               return BT_ERROR_INVALID_PARAMETER;
-       }
-
-       BT_INFO("GATT Server: Notify/Indicate char value changed to Remote GATT client");
-       if (!device_address)
-               BT_INFO("Indication to be Multicasted!");
-       else
-               BT_INFO("Indication to be Unicasted.. [%s]", device_address);
-
-       if (chr->value_length > 0 && chr->value) {
-               if (handle->role == BT_GATT_ROLE_SERVER) {
-
-                       /* DEBUG */
-                       for(k=0; k < chr->value_length; k++) {
-                               BT_DBG("Indication Data [%d] = [0x%x]", k, chr->value[k]);
-                       }
-                       /* Copy Indication data */
-                       indication.length = chr->value_length;
-                       indication.offset = 0; /* Default value */
-                       memcpy(&indication.data[0], chr->value, chr->value_length);
-
-                       /* Copy Indication parameters */
-                       param.atrribute_handle = attribute_handle;
-
-                       if (chr->properties & BT_GATT_PROPERTY_INDICATE) {
-                               BT_DBG("Characteritsic [%d]has Indicate Property", attribute_handle);
-                               param.need_confirmation = TRUE;
-                       } else {
-                               param.need_confirmation = FALSE;
-                               BT_DBG("Enable Notifcation for the characteristic [%d]",attribute_handle);
-                       }
-                       param.instance_id = instance_id;
-                       ret = _bt_get_error_code(bluetooth_gatt_server_send_indication(&addr_hex, &param, &indication));
-                       BT_INFO("Sent Indication to Remote GATT client: result [%d]", ret);
-
-                       if (ret != BT_ERROR_NONE) {
-                               BT_ERR("%s(0x%08x)",
-                                               _bt_convert_error_to_string(ret), ret);
-                               return BT_ERROR_OPERATION_FAILED;
-                       }
-               }
-       }
-
-       /* Save the Remote GATT client address to be used for notification later on */
-       memcpy(&chr->address.addr, &addr_hex.addr, BLUETOOTH_ADDRESS_LENGTH);
-#endif
        chr->notified_cb = callback;
        chr->notified_user_data = user_data;
 
@@ -3063,7 +2777,10 @@ int bt_gatt_client_create(const char *remote_address, bt_gatt_client_h *client)
        for (l = gatt_client_list; l; l = g_slist_next(l)) {
                bt_gatt_client_s *c = (bt_gatt_client_s *)l->data;
 
-               if (!g_ascii_strcasecmp(c->remote_address, remote_address)) {
+               if ((c == NULL) || (c->remote_address == NULL)) {
+                       BT_ERR("bt_gatt_client_create Error Parameter are NULL..\n");
+                       continue;
+               } else if (!g_ascii_strcasecmp(c->remote_address, remote_address)) {
                        BT_ERR("Gatt client for %s is already created",
                                        remote_address);
                        return BT_ERROR_ALREADY_DONE;
@@ -3079,23 +2796,27 @@ int bt_gatt_client_create(const char *remote_address, bt_gatt_client_h *client)
 
        client_s->remote_address = g_strdup(remote_address);
        if (client_s->remote_address == NULL) {
-               free(client_s);
+               g_free(client_s);
                ret = BT_ERROR_OUT_OF_MEMORY;
                BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
                return ret;
        }
 
-       *client = (bt_gatt_client_h)client_s;
-       gatt_client_list = g_slist_append(gatt_client_list, client_s);
-
        if (bt_device_is_profile_connected(remote_address, BT_PROFILE_GATT,
                                &connected) != BT_ERROR_NONE)
                BT_ERR("bt_device_is_profile_connected is failed");
        else
                client_s->connected = connected;
 
-       if (_bt_gatt_client_update_services(*client) == BT_ERROR_NONE)
-               client_s->services_discovered = true;
+       ret = _bt_gatt_client_update_services(client_s);
+       if (ret != BT_ERROR_NONE) {
+               BT_INFO("_bt_gatt_client_update_services returns 0x%X. "
+                       "It could be updated when service is available.", ret);
+               ret = BT_ERROR_NONE;
+       }
+
+       *client = (bt_gatt_client_h)client_s;
+       gatt_client_list = g_slist_append(gatt_client_list, client_s);
 
        BT_INFO("GATT Client Handle is created");
 
@@ -3140,17 +2861,109 @@ int bt_gatt_client_get_remote_address(bt_gatt_client_h client,
        return BT_ERROR_NONE;
 }
 
-static bool __bt_gatt_client_is_in_progress(void)
+void _handle_gatt_client_read_completed_event(int result, bt_gatt_resp_data_t *resp)
 {
-       if (_bt_check_cb(BT_EVENT_GATT_CLIENT_WRITE_CHARACTERISTIC) ||
-           _bt_check_cb(BT_EVENT_GATT_CLIENT_WRITE_DESCRIPTOR) ||
-           _bt_check_cb(BT_EVENT_GATT_CLIENT_READ_CHARACTERISTIC) ||
-           _bt_check_cb(BT_EVENT_GATT_CLIENT_READ_DESCRIPTOR)) {
-               BT_ERR("Operation is in progress");
-               return true;
+       bt_gatt_common_s *handle;
+       bt_gatt_client_request_completed_cb cb = NULL;
+       void *user_data = NULL;
+
+       if (resp == NULL) {
+               BT_ERR("GATT Client response data is NULL");
+               return;
+       }
+
+       handle = resp->user_data;
+       if (handle->type == BT_GATT_TYPE_CHARACTERISTIC) {
+               bt_gatt_characteristic_s *chr = (bt_gatt_characteristic_s *)handle;
+
+               cb = chr->read_cb;
+               user_data = chr->read_user_data;
+
+               chr->read_cb = NULL;
+               chr->read_user_data = NULL;
+
+               if (!chr->parent) {
+                       BT_INFO("Already destroyed handle : %p", chr);
+                       if (!chr->write_cb)
+                               g_free(chr);
+                       return;
+               }
+       } else if (handle->type == BT_GATT_TYPE_DESCRIPTOR) {
+               bt_gatt_descriptor_s *desc = (bt_gatt_descriptor_s *)handle;
+
+               cb = desc->read_cb;
+               user_data = desc->read_user_data;
+
+               desc->read_cb = NULL;
+               desc->read_user_data = NULL;
+
+               if (!desc->parent) {
+                       BT_INFO("Already destroyed handle : %p", desc);
+                       if (!desc->write_cb)
+                               g_free(desc);
+                       return;
+               }
+       }
+
+       if (result == BLUETOOTH_ATT_ERROR_NONE) {
+               bt_gatt_set_value(handle,
+                               (char *)resp->value, (int)resp->len);
        }
 
-       return false; /* LCOV_EXCL_STOP */
+       if (cb)
+               cb(result, handle, user_data);
+
+       return;
+}
+
+void _handle_gatt_client_write_completed_event(int result, bt_gatt_resp_data_t *resp)
+{
+       bt_gatt_common_s *handle;
+       bt_gatt_client_request_completed_cb cb = NULL;
+       void *user_data = NULL;
+
+       if (resp == NULL) {
+               BT_ERR("GATT Client response data is NULL");
+               return;
+       }
+
+       handle = resp->user_data;
+       if (handle->type == BT_GATT_TYPE_CHARACTERISTIC) {
+               bt_gatt_characteristic_s *chr = (bt_gatt_characteristic_s *)handle;
+
+               cb = chr->write_cb;
+               user_data = chr->write_user_data;
+
+               chr->write_cb = NULL;
+               chr->write_user_data = NULL;
+
+               if (!chr->parent) {
+                       BT_INFO("Already destroyed handle : %p", chr);
+                       if (!chr->read_cb)
+                               g_free(chr);
+                       return;
+               }
+       } else if (handle->type == BT_GATT_TYPE_DESCRIPTOR) {
+               bt_gatt_descriptor_s *desc = (bt_gatt_descriptor_s *)handle;
+
+               cb = desc->write_cb;
+               user_data = desc->write_user_data;
+
+               desc->write_cb = NULL;
+               desc->write_user_data = NULL;
+
+               if (!desc->parent) {
+                       BT_INFO("Already destroyed handle : %p", desc);
+                       if (!desc->read_cb)
+                               g_free(desc);
+                       return;
+               }
+       }
+
+       if (cb)
+               cb(result, handle, user_data);
+
+       return; /* LCOV_EXCL_STOP */
 }
 
 int bt_gatt_client_read_value(bt_gatt_h gatt_handle,
@@ -3158,56 +2971,47 @@ int bt_gatt_client_read_value(bt_gatt_h gatt_handle,
 {
        int ret = BT_ERROR_NONE;
        bt_gatt_common_s *c = (bt_gatt_common_s *)gatt_handle;
-       bt_gatt_client_cb_data_s *cb_data;
 
        BT_CHECK_GATT_SUPPORT();
        BT_CHECK_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(gatt_handle);
        BT_CHECK_INPUT_PARAMETER(callback); /* LCOV_EXCL_START */
 
-       if (__bt_gatt_client_is_in_progress()) {
-               BT_ERR("Operation is in progress");
-               return BT_ERROR_NOW_IN_PROGRESS;
-       }
-
-       cb_data = malloc(sizeof(bt_gatt_client_cb_data_s));
-       if (cb_data == NULL) {
-               BT_ERR("Cannot alloc cb_data");
-               return BT_ERROR_OPERATION_FAILED;
-       }
-
-       cb_data->gatt_handle = gatt_handle;
-       cb_data->user_data = user_data;
-
        if (c->type == BT_GATT_TYPE_CHARACTERISTIC) {
                bt_gatt_characteristic_s *chr = (bt_gatt_characteristic_s *)gatt_handle;
 
+               if (chr->read_cb) {
+                       BT_ERR("read request is now in progress");
+                       return BT_ERROR_NOW_IN_PROGRESS;
+               }
+
                ret = _bt_get_error_code(
-                       bluetooth_gatt_read_characteristic_value(chr->path));
-               if (ret != BT_ERROR_NONE) {
-                       g_free(cb_data);
-                       BT_ERR("%s(0x%08x)",
-                               _bt_convert_error_to_string(ret), ret);
+                       bluetooth_gatt_read_characteristic_value(chr->path, gatt_handle));
+               if (ret == BT_ERROR_NONE) {
+                       chr->read_cb = callback;
+                       chr->read_user_data = user_data;
                } else {
-                       _bt_set_cb(BT_EVENT_GATT_CLIENT_READ_CHARACTERISTIC,
-                                                       callback, cb_data);
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
                }
        } else if (c->type == BT_GATT_TYPE_DESCRIPTOR) {
                bt_gatt_descriptor_s *desc = (bt_gatt_descriptor_s *)gatt_handle;
 
+               if (desc->read_cb) {
+                       BT_ERR("read request is now in progress");
+                       return BT_ERROR_NOW_IN_PROGRESS;
+               }
+
                ret = _bt_get_error_code(
-                       bluetooth_gatt_read_descriptor_value(desc->path));
-               if (ret != BT_ERROR_NONE) {
-                       g_free(cb_data);
-                       BT_ERR("%s(0x%08x)",
-                               _bt_convert_error_to_string(ret), ret);
+                       bluetooth_gatt_read_descriptor_value(desc->path, gatt_handle));
+               if (ret == BT_ERROR_NONE) {
+                       desc->read_cb = callback;
+                       desc->read_user_data = user_data;
                } else {
-                       _bt_set_cb(BT_EVENT_GATT_CLIENT_READ_DESCRIPTOR,
-                                                       callback, cb_data);
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
                }
        } else {
+               ret = BT_ERROR_INVALID_PARAMETER;
                BT_ERR("Invalid handle type for read ");
-               g_free(cb_data);
        }
 
        return ret; /* LCOV_EXCL_STOP */
@@ -3216,78 +3020,56 @@ int bt_gatt_client_read_value(bt_gatt_h gatt_handle,
 int bt_gatt_client_write_value(bt_gatt_h gatt_handle,
                bt_gatt_client_request_completed_cb callback, void *user_data)
 {
-       int ret = BT_ERROR_NONE;
        bt_gatt_common_s *c = (bt_gatt_common_s *)gatt_handle;
-       bt_gatt_client_cb_data_s *cb_data;
+       bt_gatt_property_e write_prop = BT_GATT_PROPERTY_WRITE;
+       int ret = BT_ERROR_NONE;
 
        BT_CHECK_GATT_SUPPORT();
        BT_CHECK_INIT_STATUS();
-       BT_CHECK_INPUT_PARAMETER(gatt_handle);
-       BT_CHECK_INPUT_PARAMETER(callback); /* LCOV_EXCL_START */
-
-       if (__bt_gatt_client_is_in_progress()) {
-               BT_ERR("Operation is in progress");
-               return BT_ERROR_NOW_IN_PROGRESS;
-       }
-
-       cb_data = malloc(sizeof(bt_gatt_client_cb_data_s));
-       if (cb_data == NULL) {
-               BT_ERR("Cannot alloc cb_data");
-               return BT_ERROR_OPERATION_FAILED;
-       }
-
-       cb_data->gatt_handle = gatt_handle;
-       cb_data->user_data = user_data;
+       BT_CHECK_INPUT_PARAMETER(gatt_handle); /* LCOV_EXCL_START */
 
        if (c->type == BT_GATT_TYPE_CHARACTERISTIC) {
                bt_gatt_characteristic_s *chr = (bt_gatt_characteristic_s *)gatt_handle;
 
-               BT_DBG("path : %s", chr->path);
-               if (chr->write_type == BT_GATT_WRITE_TYPE_WRITE)
-                       ret = _bt_get_error_code(bluetooth_gatt_set_characteristics_value_by_type(
-                                       chr->path, (guint8 *)chr->value,
-                                       chr->value_length,
-                                       BT_GATT_PROPERTY_WRITE));
-               else if (chr->write_type == BT_GATT_WRITE_TYPE_WRITE_NO_RESPONSE)
-                       ret = _bt_get_error_code(bluetooth_gatt_set_characteristics_value_by_type(
-                                       chr->path, (guint8 *)chr->value,
-                                       chr->value_length,
-                                       BT_GATT_PROPERTY_WRITE_WITHOUT_RESPONSE));
-/* After ACR for BT_GATT_WRITE_TYPE_SIGNED_WRITE, will enable this code */
-#if 0
-
-               else if (chr->write_type == BT_GATT_WRITE_TYPE_SIGNED_WRITE)
-                       ret = _bt_get_error_code(bluetooth_gatt_set_characteristics_value_by_type(
-                                       chr->path, (guint8 *)chr->value, chr->value_length,
-                                       BT_GATT_PROPERTY_AUTHENTICATED_SIGNED_WRITES));
-#endif
-               else {
-                       BT_ERR("Unknow write type : %d", chr->write_type);
-                       BT_ERR("path : %s", chr->path);
-                       ret = BT_ERROR_OPERATION_FAILED;
+               if (chr->write_cb) {
+                       BT_ERR("write request is now in progress");
+                       return BT_ERROR_NOW_IN_PROGRESS;
                }
-               if (ret != BT_ERROR_NONE) {
-                       g_free(cb_data);
-                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+
+               ret = __get_write_prop(chr->write_type, &write_prop);
+               if (ret != BT_ERROR_NONE)
+                       return BT_ERROR_OPERATION_FAILED;
+
+               ret = _bt_get_error_code(bluetooth_gatt_set_characteristics_value_by_type(
+                                       chr->path, (guint8 *)chr->value,
+                                       chr->value_length, write_prop,
+                                       gatt_handle));
+               if (ret == BT_ERROR_NONE) {
+                       chr->write_cb = callback;
+                       chr->write_user_data = user_data;
                } else {
-                       _bt_set_cb(BT_EVENT_GATT_CLIENT_WRITE_CHARACTERISTIC, callback, cb_data);
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
                }
        } else if (c->type == BT_GATT_TYPE_DESCRIPTOR) {
                bt_gatt_descriptor_s *desc = (bt_gatt_descriptor_s *)gatt_handle;
 
+               if (desc->write_cb) {
+                       BT_ERR("write request is now in progress");
+                       return BT_ERROR_NOW_IN_PROGRESS;
+               }
+
                ret = _bt_get_error_code(bluetooth_gatt_write_descriptor_value(
-                                               desc->path,
-                                               (guint8 *)desc->value,
-                                               desc->value_length));
-               if (ret != BT_ERROR_NONE) {
-                       g_free(cb_data);
-                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+                                       desc->path, (guint8 *)desc->value,
+                                       desc->value_length, gatt_handle));
+               if (ret == BT_ERROR_NONE) {
+                       desc->write_cb = callback;
+                       desc->write_user_data = user_data;
                } else {
-                       _bt_set_cb(BT_EVENT_GATT_CLIENT_WRITE_DESCRIPTOR, callback, cb_data);
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
                }
        } else {
-               BT_ERR("Invalid handle type for write ");
-               g_free(cb_data);
+               BT_ERR("Invalid handle type for write");
+               ret = BT_ERROR_INVALID_PARAMETER;
        }
 
        return ret;
@@ -3329,8 +3111,6 @@ static gboolean __get_bdaddr_from_path(const char *path, char *addr)
        }
        addr[i] = '\0';
 
-       BT_DBG("path : %s, addr : %s", path, addr);
-
        return TRUE;
 }
 
@@ -3345,8 +3125,6 @@ static void __value_changed_cb(char *char_path,
        bt_gatt_characteristic_s *chr;
        char remote_address[BT_ADDR_STR_LEN + 1] = { 0, };
 
-       BT_DBG("%s", char_path);
-
        if (__get_bdaddr_from_path(char_path, remote_address) == FALSE) {
                BT_ERR("Cannot get addr from path : %s", char_path);
                return;
@@ -3363,7 +3141,11 @@ static void __value_changed_cb(char *char_path,
                svc = (bt_gatt_service_s *)l->data;
                for (ll = svc->characteristics; ll; ll = g_slist_next(ll)) {
                        chr = (bt_gatt_characteristic_s *)ll->data;
-                       if (g_ascii_strcasecmp(chr->path, char_path) == 0) {
+
+                       if ((chr == NULL) || (chr->path == NULL)) {
+                               BT_ERR("__value_changed_cb Error Parameter are NULL..\n");
+                               continue;
+                       } else if (g_ascii_strcasecmp(chr->path, char_path) == 0) {
                                if (chr->value_changed_cb)
                                        chr->value_changed_cb(chr, value,
                                                value_length,
@@ -3381,6 +3163,7 @@ int bt_gatt_client_set_characteristic_value_changed_cb(bt_gatt_h characteristic,
                void *user_data)
 {
        int ret;
+       char *name = NULL;
        bt_gatt_characteristic_s *chr = (bt_gatt_characteristic_s *)characteristic;
 
        BT_CHECK_GATT_SUPPORT();
@@ -3388,13 +3171,17 @@ int bt_gatt_client_set_characteristic_value_changed_cb(bt_gatt_h characteristic,
        BT_CHECK_INPUT_PARAMETER(characteristic);
        BT_CHECK_INPUT_PARAMETER(callback);
 
+       bt_gatt_service_s *svc = (bt_gatt_service_s *)chr->parent;
+
        chr->value_changed_cb = callback;
        chr->value_changed_user_data = user_data;
 
        if (chr->properties &
                (BT_GATT_PROPERTY_NOTIFY | BT_GATT_PROPERTY_INDICATE)) {
+               bt_get_uuid_name(svc->uuid, &name);
                ret = _bt_get_error_code(bluetooth_gatt_watch_characteristics(
-                                       chr->path));
+                                       chr->path, name));
+               g_free(name);
                if (ret != BT_ERROR_NONE)
                        BT_ERR("%s(0x%08x)",
                                _bt_convert_error_to_string(ret), ret);
@@ -3540,3 +3327,86 @@ int bt_gatt_client_unset_service_changed_cb(bt_gatt_client_h client)
 
        return BT_ERROR_NONE;
 }
+
+int bt_gatt_client_request_att_mtu_change(bt_gatt_client_h client, unsigned int mtu)
+{
+       int ret;
+       bluetooth_device_address_t addr_hex = { {0,} };
+       bt_gatt_client_s *client_s = (bt_gatt_client_s *)client;
+
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(client);
+
+       _bt_convert_address_to_hex(&addr_hex, client_s->remote_address);
+
+       ret = _bt_get_error_code(bluetooth_request_att_mtu(&addr_hex, mtu));
+       if (BT_ERROR_NONE != ret)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+
+       return ret;
+}
+
+int bt_gatt_client_get_att_mtu(bt_gatt_client_h client, unsigned int *mtu)
+{
+       bluetooth_device_address_t addr_hex = { {0,} };
+       int ret;
+       unsigned int mtu_value = 0;
+       bt_gatt_client_s *client_s = (bt_gatt_client_s *)client;
+
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(client);
+
+       _bt_convert_address_to_hex(&addr_hex, client_s->remote_address);
+
+       ret = _bt_get_error_code(bluetooth_get_att_mtu(&addr_hex, &mtu_value));
+
+       if (ret != BT_ERROR_NONE) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+               return ret;
+       }
+
+       *mtu = mtu_value;
+
+       return ret;
+
+}
+
+int bt_gatt_client_set_att_mtu_changed_cb(bt_gatt_client_h client, bt_gatt_client_att_mtu_changed_cb callback, void *user_data)
+{
+       bt_gatt_client_s *client_s = (bt_gatt_client_s *)client;
+
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(callback);
+       BT_CHECK_INPUT_PARAMETER(client);
+
+       if (client_s->att_mtu_changed_cb) {
+               BT_INFO("Already registered");
+               client_s->att_mtu_changed_cb = callback;
+               client_s->att_mtu_changed_user_data = user_data;
+               return BT_ERROR_NONE;
+       }
+
+       BT_INFO("MTU Changed callback registered");
+       client_s->att_mtu_changed_cb = callback;
+       client_s->att_mtu_changed_user_data = user_data;
+
+       return BT_ERROR_NONE;
+}
+
+int bt_gatt_client_unset_att_mtu_changed_cb(bt_gatt_client_h client)
+{
+       bt_gatt_client_s *client_s = (bt_gatt_client_s *)client;
+
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(client);
+
+       BT_INFO("MTU Changed callback unregistered [%s]", client_s->remote_address);
+       client_s->service_changed_cb = NULL;
+       client_s->service_changed_user_data = NULL;
+
+       return BT_ERROR_NONE;
+}
index c8f4bdf9570fd65f4c59e70ba88b53f40ed4b7bc..acb2001df972f8e7ba0d0096895582975086893f 100644 (file)
@@ -28,6 +28,9 @@
 
 static bool is_hid_host_initialized = false;
 
+#define HID_MOUSE_REPORT_ID 1
+#define HID_KEY_REPORT_ID 2
+
 #define BT_CHECK_HID_HOST_SUPPORT() \
 { \
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON); \
@@ -221,14 +224,16 @@ int bt_hid_device_send_mouse_event(const char *remote_address,
                const bt_hid_mouse_data_s *mouse_data)
 {
        int ret;
+       hid_send_mouse_event_t mouse_event = {0, };
+
        BT_CHECK_HID_DEVICE_SUPPORT();
        BT_CHECK_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(remote_address);
        BT_CHECK_INPUT_PARAMETER(mouse_data);
 
-       if (mouse_data->buttons != BT_HID_MOUSE_BUTTON_LEFT ||
-               mouse_data->buttons != BT_HID_MOUSE_BUTTON_RIGHT ||
-               mouse_data->buttons != BT_HID_MOUSE_BUTTON_MIDDLE) {
+       if ((mouse_data->buttons < BT_HID_MOUSE_BUTTON_NONE) ||
+           (mouse_data->buttons > (BT_HID_MOUSE_BUTTON_LEFT |
+             BT_HID_MOUSE_BUTTON_RIGHT | BT_HID_MOUSE_BUTTON_MIDDLE))) {
                return BT_ERROR_INVALID_PARAMETER;
        }
 
@@ -243,8 +248,16 @@ int bt_hid_device_send_mouse_event(const char *remote_address,
                return -1;
        }
 
+       mouse_event.btcode = 0xA1;
+       mouse_event.rep_id = HID_MOUSE_REPORT_ID;
+
+       mouse_event.button = (unsigned char)mouse_data->buttons;
+       mouse_event.axis_x = (signed char)mouse_data->axis_x;
+       mouse_event.axis_y = (signed char)mouse_data->axis_y;
+       mouse_event.axis_z = (signed char)mouse_data->padding;
+
        ret = bluetooth_hid_device_send_mouse_event(remote_address,
-                       *(hid_send_mouse_event_t *)mouse_data);
+                       mouse_event);
        if (ret <= 0) {
                if (ret == -1) {
                        /* write fail case */
@@ -273,8 +286,10 @@ int bt_hid_device_send_key_event(const char *remote_address,
        BT_CHECK_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(remote_address);
        BT_CHECK_INPUT_PARAMETER(key_data);
-       hid_send_key_event_t send_event;
+       hid_send_key_event_t send_event = {0};
 
+       send_event.btcode = 0xA1;
+       send_event.rep_id = HID_KEY_REPORT_ID;
        send_event.modify = key_data->modifier;
        memcpy(send_event.key, key_data->key, sizeof(send_event.key));
 
index bff324350f118eab83721eea8cf4ddd5b90904ed..a1c9e6b4a657b79ed5cf545e50099cd7087cc127 100644 (file)
 
 static bool is_ipsp_initialized = false;
 
-#ifdef TIZEN_FEATURE_IPSP_SUPPORT
-#define BT_CHECK_IPSP_SUPPORT()
-#else
 #define BT_CHECK_IPSP_SUPPORT() \
-       { \
-               LOGE("[%s] NOT_SUPPORTED(0x%08x)", __FUNCTION__, BT_ERROR_NOT_SUPPORTED); \
-               return BT_ERROR_NOT_SUPPORTED; \
-       }
-#endif
+{ \
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON); \
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_IPSP); \
+}
 
 #define BT_CHECK_IPSP_INIT_STATUS() \
        if (__bt_check_ipsp_init_status() == BT_ERROR_NOT_INITIALIZED) { \
diff --git a/src/bluetooth-map-client.c b/src/bluetooth-map-client.c
new file mode 100644 (file)
index 0000000..9cc1cf8
--- /dev/null
@@ -0,0 +1,400 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <glib.h>
+#include <dlog.h>
+#include <stdio.h>
+#include <stdbool.h>
+#include <string.h>
+#include <bluetooth-api.h>
+
+#include "bluetooth.h"
+#include "bluetooth_private.h"
+
+static bool is_map_client_initialized = false;
+
+#define BT_CHECK_MAP_CLIENT_SUPPORT() \
+{ \
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON); \
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_MAP); \
+}
+
+#define BT_CHECK_MAP_CLIENT_INIT_STATUS() \
+       if (__bt_check_map_client_init_status() == BT_ERROR_NOT_INITIALIZED) { \
+               BT_ERR("[%s] NOT_INITIALIZED(0x%08x)", __FUNCTION__, BT_ERROR_NOT_INITIALIZED); \
+               return BT_ERROR_NOT_INITIALIZED; \
+       }
+/* LCOV_EXCL_START */
+int __bt_check_map_client_init_status(void)
+{
+       if (is_map_client_initialized != true) {
+               BT_ERR("NOT_INITIALIZED(0x%08x)", BT_ERROR_NOT_INITIALIZED);
+               return BT_ERROR_NOT_INITIALIZED;
+       }
+
+       return BT_ERROR_NONE;
+}
+
+int bt_map_client_initialize(void)
+{
+       BT_DBG("bt_map_client_initialize");
+
+       int error_code = BT_ERROR_NONE;
+
+       // TODO: MAP: it is not supported on TM1
+       //BT_CHECK_MAP_CLIENT_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+
+       error_code = _bt_get_error_code(bluetooth_map_client_init());
+
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), /* LCOV_EXCL_LINE */
+                               error_code); /* LCOV_EXCL_LINE */
+               return error_code; /* LCOV_EXCL_LINE */
+       }
+
+       is_map_client_initialized = true;
+       return error_code;
+}
+
+int bt_map_client_deinitialize(void)
+{
+       BT_DBG("bt_map_client_deinitialize");
+
+       int error_code = BT_ERROR_NONE;
+
+       // TODO: MAP: it is not supported on TM1
+       //BT_CHECK_MAP_CLIENT_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_MAP_CLIENT_INIT_STATUS();
+
+       error_code = _bt_get_error_code(bluetooth_map_client_deinit());
+
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), /* LCOV_EXCL_LINE */
+                               error_code); /* LCOV_EXCL_LINE */
+               return error_code; /* LCOV_EXCL_LINE */
+       }
+
+       is_map_client_initialized = false;
+       return error_code;
+}
+
+int bt_map_client_create_session(const char* remote_address,
+                       bt_map_client_session_info_h* handle)
+{
+       BT_DBG("bt_map_client_create_session");
+       int error_code = BT_ERROR_NONE;
+
+       //BT_CHECK_MAP_CLIENT_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_MAP_CLIENT_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(remote_address);
+
+       bt_map_client_session_info_s* session =
+               g_malloc0(sizeof(bt_map_client_session_info_s));
+       session->remote_address = strdup(remote_address);
+
+       error_code = _bt_get_error_code(bluetooth_map_client_create_session(session));
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code),
+                               error_code);
+               free(session->remote_address);
+               g_free(session);
+       } else {
+               BT_DBG("Successfully created session");
+               *handle = session;
+       }
+       return error_code;
+
+}
+
+int bt_map_client_destroy_session(bt_map_client_session_info_h handle)
+{
+       BT_DBG("bt_map_client_destroy_session");
+       int error_code = BT_ERROR_NONE;
+
+       //BT_CHECK_MAP_CLIENT_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_MAP_CLIENT_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(handle);
+
+       bt_map_client_session_info_s* session = (bt_map_client_session_info_s*)handle;
+
+       error_code = _bt_get_error_code(bluetooth_map_client_destroy_session(session));
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code),
+                               error_code);
+       } else {
+               BT_DBG("Successfully destroyed session");
+       }
+       return error_code;
+}
+
+int bt_map_client_set_folder(bt_map_client_session_info_h handle, const char *name)
+{
+       int error_code = BT_ERROR_NONE;
+
+       //BT_CHECK_MAP_CLIENT_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_MAP_CLIENT_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(handle);
+       BT_CHECK_INPUT_PARAMETER(name);
+
+       bt_map_client_session_info_s* session = (bt_map_client_session_info_s*)handle;
+
+       error_code = _bt_get_error_code(bluetooth_map_client_set_folder(session, name));
+
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code),
+                               error_code);
+       }
+       return error_code;
+}
+
+int bt_map_client_list_folders(bt_map_client_session_info_h handle,
+                       bt_map_client_list_folders_filter_h filter,
+                       bt_map_client_list_folders_cb callback,
+                       void* user_data)
+{
+       BT_DBG("bt_map_client_list_folders");
+       //BT_CHECK_MAP_CLIENT_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_MAP_CLIENT_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(handle);
+       BT_CHECK_INPUT_PARAMETER(filter);
+       BT_CHECK_INPUT_PARAMETER_UINT(filter->offset);
+       BT_CHECK_INPUT_PARAMETER_UINT(filter->max_count);
+
+       bt_map_client_session_info_s* session = (bt_map_client_session_info_s*) handle;
+
+       int error_code = _bt_get_error_code(
+               bluetooth_map_client_list_folders(
+                       session,
+                       (bt_map_client_list_folders_filter_t*) filter
+               )
+       );
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("bt_map_client_list_folders %s(0x%08x)", _bt_convert_error_to_string(error_code),
+                               error_code);
+       } else {
+               _bt_set_cb(BT_EVENT_MAP_CLIENT_LIST_FOLDERS, callback, user_data);
+       }
+
+       return error_code; /* LCOV_EXCL_STOP */
+}
+
+int bt_map_client_list_filter_fields(bt_map_client_session_info_h handle,
+                       bt_map_client_list_filter_fields_cb callback,
+                       void *user_data)
+{
+       int error_code = BT_ERROR_NONE;
+
+       //BT_CHECK_MAP_CLIENT_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_MAP_CLIENT_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(handle);
+
+       bt_map_client_session_info_s* session = (bt_map_client_session_info_s*) handle;
+
+       error_code = _bt_get_error_code(bluetooth_map_client_list_filter_fields(session));
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code),
+                               error_code);
+       } else {
+               _bt_set_cb(BT_EVENT_MAP_CLIENT_LIST_FILTER_FIELDS, callback, user_data);
+       }
+
+       return error_code;
+}
+
+int bt_map_client_list_messages(bt_map_client_session_info_h handle,
+                       const char* folder,
+                       bt_map_client_list_messages_filter_h filter,
+                       bt_map_client_list_messages_cb callback,
+                       void *user_data)
+{
+       BT_DBG("bt_map_client_list_messages");
+
+       //BT_CHECK_MAP_CLIENT_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_MAP_CLIENT_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(handle);
+       BT_CHECK_INPUT_PARAMETER(filter);
+       BT_CHECK_INPUT_PARAMETER_UINT(filter->offset);
+       BT_CHECK_INPUT_PARAMETER_UINT(filter->max_count);
+       BT_CHECK_INPUT_PARAMETER_UINT(filter->subject_length);
+       BT_CHECK_INPUT_PARAMETER_BOOL(filter->is_read);
+       BT_CHECK_INPUT_PARAMETER_BOOL(filter->is_priority);
+
+       bt_map_client_session_info_s* session = (bt_map_client_session_info_s*) handle;
+
+       int error_code = _bt_get_error_code(
+               bluetooth_map_client_list_messages(
+                       session,
+                       folder,
+                       (bt_map_client_list_messages_filter_t*) filter
+               )
+       );
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("bluetooth_map_client_list_messages %s(0x%08x)",
+                       _bt_convert_error_to_string(error_code), error_code);
+       } else {
+               _bt_set_cb(BT_EVENT_MAP_CLIENT_LIST_MESSAGES, callback, user_data);
+       }
+
+       return error_code;
+}
+
+int bt_map_client_update_inbox(bt_map_client_session_info_h handle)
+{
+       int error_code = BT_ERROR_NONE;
+
+       //BT_CHECK_MAP_CLIENT_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_MAP_CLIENT_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(handle);
+
+       bt_map_client_session_info_s* session = (bt_map_client_session_info_s*)handle;
+
+       error_code = _bt_get_error_code(bluetooth_map_client_update_inbox(session));
+
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code),
+                               error_code);
+       }
+       return error_code;
+}
+
+int bt_map_client_push_message(bt_map_client_session_info_h handle,
+                       const char* source_file,
+                       const char* folder,
+                       bt_map_client_push_message_args_h args,
+                       bt_map_client_push_message_cb callback,
+                       void *user_data)
+{
+       BT_DBG("Entered bt_map_client_get_message");
+
+       //BT_CHECK_MAP_CLIENT_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_MAP_CLIENT_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(handle);
+       BT_CHECK_INPUT_PARAMETER(source_file);
+       BT_CHECK_INPUT_PARAMETER(folder);
+       BT_CHECK_INPUT_PARAMETER(args);
+
+       bt_map_client_session_info_s* session = (bt_map_client_session_info_s*)handle;
+
+       int error_code = _bt_get_error_code(
+               bluetooth_map_client_push_message(
+                       session,
+                       source_file,
+                       folder,
+                       (bt_map_client_push_message_args_t*) args
+               )
+       );
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("bluetooth_map_client_push_message %s(0x%08x)",
+                       _bt_convert_error_to_string(error_code), error_code);
+       } else {
+               _bt_set_cb(BT_EVENT_MAP_CLIENT_PUSH_MESSAGE, callback, user_data);
+       }
+
+       return error_code;
+}
+
+int bt_map_client_get_message(bt_map_client_session_info_h handle,
+                       const bt_map_client_message_object_h message_object,
+                       const char* target_file,
+                       bool attachment,
+                       bt_map_client_get_message_cb callback,
+                       void* user_data)
+{
+       BT_DBG("Entered bt_map_client_get_message");
+       //BT_CHECK_MAP_CLIENT_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_MAP_CLIENT_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(handle);
+       BT_CHECK_INPUT_PARAMETER(message_object);
+       BT_CHECK_INPUT_PARAMETER(target_file);
+
+       bt_map_client_session_info_s* session = (bt_map_client_session_info_s*) handle;
+
+       bt_get_message_callback_data *data = g_malloc(sizeof(*data));
+       data->target_file = target_file;
+       data->user_data = user_data;
+
+       int error_code = _bt_get_error_code(bluetooth_map_client_get_message(session,
+                       message_object, target_file, attachment));
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("bt_map_client_get_message %s(0x%08x)", _bt_convert_error_to_string(error_code),
+                               error_code);
+       } else {
+               _bt_set_cb(BT_EVENT_MAP_CLIENT_GET_MESSAGE, callback, data);
+       }
+
+       return error_code; /* LCOV_EXCL_STOP */
+}
+
+void bt_map_client_list_folders_filter_create(bt_map_client_list_folders_filter_h *filter)
+{
+       (*filter) = g_malloc(sizeof(bt_map_client_list_folders_filter_s));
+       (*filter)->offset = -1;
+       (*filter)->max_count = -1;
+}
+
+void bt_map_client_list_folders_filter_destroy(bt_map_client_list_folders_filter_h *filter)
+{
+       g_free(*filter);
+       *filter = NULL;
+}
+
+void bt_map_client_list_messages_filter_create(bt_map_client_list_messages_filter_h *filter)
+{
+       (*filter) = g_malloc(sizeof(bt_map_client_list_messages_filter_s));
+       (*filter)->offset = -1;
+       (*filter)->max_count = -1;
+       (*filter)->subject_length = -1;
+       (*filter)->fields = NULL;
+       (*filter)->types = NULL;
+       (*filter)->period_begin = NULL;
+       (*filter)->period_end = NULL;
+       (*filter)->is_read = -1;
+       (*filter)->recipient = NULL;
+       (*filter)->sender = NULL;
+       (*filter)->is_priority = -1;
+}
+
+void bt_map_client_list_messages_filter_destroy(bt_map_client_list_messages_filter_h *filter)
+{
+       g_free(*filter);
+       *filter = NULL;
+}
+
+void bt_map_client_push_message_args_create(bt_map_client_push_message_args_h *args)
+{
+       (*args) = g_malloc(sizeof(bt_map_client_push_message_args_s));
+       (*args)->is_transparent = -1;
+       (*args)->is_retry = -1;
+       (*args)->charset =  NULL;
+}
+
+void bt_map_client_push_message_args_destroy(bt_map_client_push_message_args_h *args)
+{
+       g_free(*args);
+       *args = NULL;
+}
+/* LCOV_EXCL_STOP */
diff --git a/src/bluetooth-otp.c b/src/bluetooth-otp.c
new file mode 100644 (file)
index 0000000..4fa02f0
--- /dev/null
@@ -0,0 +1,2589 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <glib.h>
+#include <dlog.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdbool.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <arpa/inet.h>
+#include <bluetooth-api.h>
+
+#include "bluetooth.h"
+#include "bluetooth_internal.h"
+#include "bluetooth_private.h"
+
+#ifdef TIZEN_FEATURE_OTP_SUPPORT
+#define BT_CHECK_OTP_SUPPORT()
+#else
+#define BT_CHECK_OTP_SUPPORT() \
+       { \
+               LOGE("[%s] NOT_SUPPORTED(0x%08x)", __FUNCTION__, BT_ERROR_NOT_SUPPORTED); \
+               return BT_ERROR_NOT_SUPPORTED; \
+       }
+#endif
+
+#define BT_CHECK_LE_SUPPORT() \
+{ \
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON); \
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_LE); \
+}
+
+#define BT_CHECK_OTP_SERVER_INIT_STATUS() \
+       if (__bt_check_otp_server_init_status() == BT_ERROR_NOT_INITIALIZED) { \
+               LOGE("[%s] NOT_INITIALIZED(0x%08x)", __FUNCTION__, \
+                                       BT_ERROR_NOT_INITIALIZED); \
+               return BT_ERROR_NOT_INITIALIZED; \
+       }
+
+#define BT_OTP_SERVICE_UUID                    "00001825-0000-1000-8000-00805f9b34fb"
+#define BT_OTP_FEATURE_UUID                    "00002abd-0000-1000-8000-00805f9b34fb"
+#define BT_OTP_OACP_CONTROL_POINT_UUID         "00002ac5-0000-1000-8000-00805f9b34fb"
+#define BT_OTP_OLCP_CONTROL_POINT_UUID         "00002ac6-0000-1000-8000-00805f9b34fb"
+#define BT_OTP_OBJECT_NAME_UUID                        "00002abe-0000-1000-8000-00805f9b34fb"
+#define BT_OTP_OBJECT_TYPE_UUID                        "00002abf-0000-1000-8000-00805f9b34fb"
+#define BT_OTP_OBJECT_SIZE_UUID                        "00002ac0-0000-1000-8000-00805f9b34fb"
+#define BT_OTP_OBJECT_FIRST_CREATED_UUID       "00002ac1-0000-1000-8000-00805f9b34fb"
+#define BT_OTP_OBJECT_LAST_MODIFIED_UUID       "00002ac2-0000-1000-8000-00805f9b34fb"
+#define BT_OTP_OBJECT_ID_UUID                  "00002ac3-0000-1000-8000-00805f9b34fb"
+#define BT_OTP_OBJECT_PROP_UUID                        "00002ac4-0000-1000-8000-00805f9b34fb"
+#define BT_OTP_OBJECT_LIST_FILTER_UUID         "00002ac7-0000-1000-8000-00805f9b34fb"
+#define BT_OTP_OBJECT_CHANGED_UUID             "00002ac8-0000-1000-8000-00805f9b34fb"
+
+/* OLCP opcodes */
+#define OLCP_FIRST             0x01
+#define OLCP_LAST              0x02
+#define OLCP_PREVIOUS          0x03
+#define OLCP_NEXT              0x04
+#define OLCP_GOTO              0x05
+#define OLCP_ORDER             0x06
+#define OLCP_REQ_NO_OBJ                0x07
+#define OLCP_CLEAR_MARKING     0x08
+#define OLCP_RESPONSE          0x70
+
+/* OLCP error opcodes */
+#define OLCP_SUCCESS                   0x01
+#define OLCP_OPCODE_NOT_SUPPORTED      0x02
+#define OLCP_INVALID_PARAM             0x03
+#define OLCP_OPERATION_FAILED          0x04
+#define OLCP_OUT_OF_BOUNDS             0x05
+#define OLCP_TOO_MANY_OBJ              0x06
+#define OLCP_NO_OBJ                    0x07
+#define OLCP_OJECT_ID_NOT_FOUND                0x08
+
+/* OACP opcodes */
+#define OACP_CREATE                    0x01
+#define OACP_DELETE                    0x02
+#define OACP_CALC_CHECKSUM             0x03
+#define OACP_EXECUTE                   0x04
+#define OACP_READ                      0x05
+#define OACP_WRITE                     0x06
+#define OACP_ABORT                     0x07
+#define OACP_RESPONSE                  0x60
+
+/* OACP error codes */
+#define OACP_SUCCESS                   0x01
+#define OACP_OPCODE_NOT_SUPPORTED      0x02
+#define OACP_INVALID_PARAM             0x03
+#define OACP_INSUFFICIENT_RESOURCES    0x04
+#define OACP_INVALID_OBJ               0x05
+#define OACP_CHANNEL_UNAVAILABLE       0x06
+#define OACP_UNSUPPORTED_TYPE          0x07
+#define OACP_PROCEDURE_NOT_SUPPORTED   0x08
+#define OACP_OBJECT_LOCKED             0x09
+#define OACP_OPERATION_FAILED          0x0A
+
+/* Object Properties */
+#define OBJECT_DELETE  0x00000001
+#define OBJECT_EXECUTE 0x00000002
+#define OBJECT_READ    0x00000004
+#define OBJECT_WRITE   0x00000008
+#define OBJECT_APPEND  0x00000010
+#define OBJECT_TRUNCATE        0x00000020
+#define OBJECT_PATCH   0x00000040
+#define OBJECT_MARK    0x00000080
+
+#define BT_OTP_CLIENT_BASE_DIR "/home/owner/media/otp-client/"
+#define BT_FILE_PATH_MAX_LEN 262
+#define BT_OTP_FEATURE_LENGTH 8
+#define BT_ADDR_LENGTH 18
+
+#define BT_OTC_CONNECTION_MAX_TIMEOUT 10000 /* Timeout for OTC Connection in msec */
+
+#define BT_L2CAP_BUFFER_LEN 672
+
+#define BT_OTP_IS_OACP_SUPPORTED(feature)              feature & 0xffffffff00000000
+#define BT_OTP_IS_OLCP_SUPPORTED(feature)              feature & 0x00000000ffffffff
+#define BT_OTP_IS_OACP_READ_SUPPORTED(feature)         feature & 0x1000000000000000
+#define BT_OTP_IS_OACP_CREATE_SUPPORTED(feature)       feature & 0x0100000000000000
+#define BT_OTP_IS_OACP_WRITE_SUPPORTED(feature)                feature & 0x2000000000000000
+#define BT_OTP_IS_OACP_EXECUTE_SUPPORTED(feature)      feature & 0x0800000000000000
+#define BT_OTP_IS_OACP_DELETE_SUPPORTED(feature)       feature & 0x0200000000000000
+#define BT_OTP_IS_OLCP_GOTO_SUPPORTED(feature)         feature & 0x0000000001000000
+
+#define BT_OTP_IS_READ_PERMITTED(props)                props & OBJECT_READ
+#define BT_OTP_IS_WRITE_PERMITTED(props)       props & OBJECT_WRITE
+#define BT_OTP_IS_EXECUTE_PERMITTED(props)     props & OBJECT_EXECUTE
+#define BT_OTP_IS_DELETE_PERMITTED(props)      props & OBJECT_DELETE
+
+#define BT_OTP_OBJ_CHANGED_SRC(flag)           (flag & 0x01)
+#define BT_OTP_OBJ_CHANGED_CONTENT(flag)       ((flag & 0x02) >> 1)
+#define BT_OTP_OBJ_CHANGED_META(flag)          ((flag & 0x04) >> 2)
+#define BT_OTP_OBJ_CHANGED_CREATE(flag)        ((flag & 0x08) >> 3)
+#define BT_OTP_OBJ_CHANGED_DELETE(flag)        ((flag & 0x10) >> 4)
+
+/* OTP Object Type Custom UUIDs */
+/* In SIG Assigned numbers not available */
+#define UNSUPPORTED_OBJECT_TYPE_UUID   "7fb0"
+#define FIRMWARE_UUID                  "7fb1"
+#define ROUTE_GPX_UUID                 "7fb2"
+#define TRACK_GPX_UUID                 "7fb3"
+
+typedef enum {
+       BT_OTP_NO_OPERATION = 0,
+       BT_OTP_OBJECT_DISCOVERY,
+       BT_OTP_OBJECT_READ,
+       BT_OTP_OBJECT_SELECT,
+       BT_OTP_OBJECT_CREATE,
+       BT_OTP_OBJECT_WRITE,
+       BT_OTP_OBJECT_EXECUTE,
+       BT_OTP_OBJECT_DELETE,
+} bt_otp_api_info_e;
+
+typedef struct {
+       char *name;
+       char *type;
+       uint32_t curr_size;
+       uint32_t alloc_size;
+       time_t first_created;
+       time_t last_modified;
+       uint64_t id;
+       uint32_t props;
+} object_metadata;
+
+typedef struct {
+       char *remote_address;
+       bool connected;
+
+       const void *connection_callback;
+       void *conn_cb_user_data;
+
+       char *otp_service_handle;               /* OTP Service Handle */
+       char *otp_feature_obj_path;             /* OTP feature characteristic handle */
+       uint64_t otp_feature;                   /* OTP feature value */
+       char *otp_oacp_control_point;           /* OTP OACP Control Point characteristic handle */
+       char *otp_oacp_cccd;                    /* OTP OACP Control Point CCCD handle */
+       char *otp_olcp_control_point;           /* OTP OLCP Control Point characteristic handle */
+       char *otp_olcp_cccd;                    /* OTP OLCP Control Point CCCD handle */
+
+       /* Object Metadata paths */
+       char *otp_name_obj_path;                /* OTP Object Name characteristic handle */
+       char *otp_type_obj_path;                /* OTP Object Type characteristic handle */
+       char *otp_size_obj_path;                /* OTP Object Size characteristic handle */
+       char *otp_first_created_obj_path;       /* OTP Object Frist Created characteristic handle */
+       char *otp_last_modified_obj_path;       /* OTP Object Last Modified characteristic handle */
+       char *otp_id_obj_path;                  /* OTP Object ID characteristic handle */
+       char *otp_props_obj_path;               /* OTP Object Properties characteristic handle */
+
+       char *otp_list_filter_obj_path; /* OTP Object List Filter handle */
+       char *otp_obj_changed_obj_path;         /* OTP Object Changed handle */
+       char *otp_obj_changed_cccd;             /* OTP Object Changed CCCD handle */
+
+       bool oacp_cccd_enabled;                 /* OTP OACP Control Point CCCD is enabled or not */
+       bool olcp_cccd_enabled;                 /* OTP OLCP Control Point CCCD is enabled or not */
+       bool obj_changed_cccd_enabed;   /* OTP Object Changed CCCD is enabled or not */
+       bool multiple_obj_supp;                 /* Indicates whether remote server supports
+                                                * multiple-objects or not
+                                                */
+       GSList *object_list;                    /* List of server objects */
+       uint64_t object_id;                     /* ID of current object */
+
+       /* Ongoing API Information */
+       bt_otp_api_info_e curr_op;
+       const void *callback;
+       void *user_data;
+} bt_otp_client_s;
+
+typedef struct {
+       uint32_t offset;
+       uint32_t length;
+       uint32_t size;
+       char *file_path;
+       FILE *fp;
+} bt_otp_client_read_op;
+
+typedef struct {
+       char *filename;
+       char *type_uuid;
+       time_t first_created;
+       uint32_t size;
+} bt_otp_client_create_op;
+
+typedef struct {
+       char *file_path;
+       time_t last_modified;
+       uint32_t size;
+       uint32_t offset;
+       uint32_t length;
+       uint8_t mode;
+       FILE *fp;
+} bt_otp_client_write_op;
+
+static bool is_otp_server_initialized = false;
+bt_otp_client_create_op *oacp_create_op = NULL;
+bt_otp_client_read_op *oacp_read_op = NULL;
+bt_otp_client_write_op *oacp_write_op = NULL;
+bool otc_connection_status = FALSE;
+bt_otp_object_list_s *obj_list;
+uint64_t select_obj_id = 0;
+object_metadata *metadata;
+GSList *otp_client_list;
+unsigned int timeout_id;
+guint id;
+
+object_metadata *_bt_otp_client_find_object(GSList *list, uint64_t id);
+static void _bt_otp_client_notify_read_object_status(int result,
+                       char *file_path, bt_otp_client_s *otp_client_s);
+void __bt_otp_reset_api_info(bt_otp_client_s *otp_client_s);
+static void _bt_otp_client_send_select_object_callback(int result,
+                                       bt_otp_client_s *otp_client_s);
+static void _bt_otp_client_send_create_object_callback(int result,
+                               uint64_t id, bt_otp_client_s *otp_client_s);
+static void _bt_otp_client_send_write_object_callback(int result,
+                               unsigned int length, bt_otp_client_s *otp_client_s);
+static void _bt_otp_client_send_execute_object_callback(int result,
+                                       bt_otp_client_s *otp_client_s);
+static void _bt_otp_client_send_delete_object_callback(int result,
+                                       bt_otp_client_s *otp_client_s);
+static void _bt_otp_send_callback(int result, char *file_path, uint64_t id,
+                       unsigned int length, bt_otp_client_s *otp_client_s);
+
+int __bt_check_otp_server_init_status(void)
+{
+       if (is_otp_server_initialized != true) {
+               BT_ERR("NOT_INITIALIZED(0x%08x)", BT_ERROR_NOT_INITIALIZED);
+               return BT_ERROR_NOT_INITIALIZED;
+       }
+
+       return BT_ERROR_NONE;
+}
+
+/* LCOV_EXCL_START */
+int bt_otp_server_initialize(const char *directory)
+{
+       int error_code = BT_ERROR_NONE;
+
+       BT_CHECK_OTP_SUPPORT();
+       BT_CHECK_LE_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+
+       error_code = _bt_get_error_code(bluetooth_otp_server_init(directory));
+
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code),
+                               error_code);
+               return error_code;
+       }
+
+       is_otp_server_initialized = true;
+       return BT_ERROR_NONE;
+}
+
+int bt_otp_server_deinitialize()
+{
+       int error_code = BT_ERROR_NONE;
+
+       BT_CHECK_OTP_SUPPORT();
+       BT_CHECK_LE_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_OTP_SERVER_INIT_STATUS();
+
+       error_code = _bt_get_error_code(bluetooth_otp_server_deinit());
+
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), /* LCOV_EXCL_LINE */
+                               error_code);
+               return error_code; /* LCOV_EXCL_LINE */
+       }
+
+       is_otp_server_initialized = false;
+       return BT_ERROR_NONE;
+}
+
+int bt_otp_set_server_state_changed_cb(bt_otp_server_state_changed_cb callback, void *user_data)
+{
+       BT_CHECK_OTP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(callback);
+       _bt_set_cb(BT_EVENT_OTP_SERVER_STATE_CHANGED, callback, user_data);
+       return BT_ERROR_NONE;
+
+}
+int bt_otp_unset_server_state_changed_cb(void)
+{
+       BT_CHECK_OTP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       if (_bt_check_cb(BT_EVENT_OTP_SERVER_STATE_CHANGED) == true)
+               _bt_unset_cb(BT_EVENT_OTP_SERVER_STATE_CHANGED);
+       return BT_ERROR_NONE;
+}
+
+static bt_otp_client_s *_bt_otp_client_find(const char *remote_address)
+{
+       GSList *l;
+       bt_otp_client_s *info;
+
+       for (l = otp_client_list; l; l = g_slist_next(l)) {
+               info = l->data;
+               if ((info == NULL) || (info->remote_address == NULL)) {
+                       BT_ERR("_bt_otp_client_find Error Parameter are NULL..\n");
+                       continue;
+               } else if (info && !g_ascii_strcasecmp(info->remote_address, remote_address)) {
+                       return info;
+               }
+       }
+       return NULL;
+}
+
+static char *free_object_path(char *path)
+{
+       g_free(path);
+       return NULL;
+}
+
+static void _bt_otp_client_free_object_list(bt_otp_client_s *otp_client_s)
+{
+       GSList *tmp = NULL;
+       for (tmp = otp_client_s->object_list; tmp != NULL; tmp = tmp->next) {
+               if (tmp->data) {
+                       object_metadata *metadata_info = tmp->data;
+                       g_free(metadata_info->name);
+                       g_free(metadata_info->type);
+                       otp_client_s->object_list = g_slist_delete_link(otp_client_s->object_list, tmp->data);
+               }
+       }
+       g_slist_free(otp_client_s->object_list);
+       otp_client_s->object_list = NULL;
+}
+
+static void _bt_otp_client_init(bt_otp_client_s *otp_client_s)
+{
+       /* Reset CCCD */
+       otp_client_s->oacp_cccd_enabled = FALSE;
+       otp_client_s->olcp_cccd_enabled = FALSE;
+       otp_client_s->obj_changed_cccd_enabed = FALSE;
+
+       otp_client_s->curr_op = BT_OTP_NO_OPERATION;
+       otp_client_s->multiple_obj_supp = FALSE;
+}
+
+static void __bt_otp_client_reset_server_data(bt_otp_client_s *otp_client_s)
+{
+       int k;
+
+       otp_client_s->otp_service_handle =
+                       free_object_path(otp_client_s->otp_service_handle);
+       otp_client_s->otp_feature_obj_path =
+                       free_object_path(otp_client_s->otp_feature_obj_path);
+       otp_client_s->otp_oacp_control_point =
+                       free_object_path(otp_client_s->otp_oacp_control_point);
+       otp_client_s->otp_oacp_cccd =
+                       free_object_path(otp_client_s->otp_oacp_cccd);
+       otp_client_s->otp_olcp_control_point =
+                       free_object_path(otp_client_s->otp_olcp_control_point);
+       otp_client_s->otp_olcp_cccd =
+                       free_object_path(otp_client_s->otp_olcp_cccd);
+       otp_client_s->otp_name_obj_path =
+                       free_object_path(otp_client_s->otp_name_obj_path);
+       otp_client_s->otp_type_obj_path =
+                       free_object_path(otp_client_s->otp_type_obj_path);
+       otp_client_s->otp_size_obj_path =
+                       free_object_path(otp_client_s->otp_size_obj_path);
+       otp_client_s->otp_first_created_obj_path =
+                       free_object_path(otp_client_s->otp_first_created_obj_path);
+       otp_client_s->otp_last_modified_obj_path =
+                       free_object_path(otp_client_s->otp_last_modified_obj_path);
+       otp_client_s->otp_id_obj_path =
+                       free_object_path(otp_client_s->otp_id_obj_path);
+       otp_client_s->otp_props_obj_path =
+                       free_object_path(otp_client_s->otp_props_obj_path);
+       otp_client_s->otp_list_filter_obj_path =
+                       free_object_path(otp_client_s->otp_list_filter_obj_path);
+       otp_client_s->otp_obj_changed_obj_path =
+                       free_object_path(otp_client_s->otp_obj_changed_obj_path);
+       otp_client_s->otp_obj_changed_cccd =
+                       free_object_path(otp_client_s->otp_obj_changed_cccd);
+
+       /* Free GSList */
+       if (obj_list) {
+               for (k = 0; k < obj_list->num_objects; k++) {
+                       otp_object_metadata_s *data = obj_list->data[k];
+                       g_free(data->name);
+                       g_free(data);
+               }
+               g_free(obj_list);
+               obj_list = NULL;
+       }
+
+       /* Free Object List */
+       _bt_otp_client_free_object_list(otp_client_s);
+
+       if (oacp_read_op) {
+               fclose(oacp_read_op->fp);
+               g_free(oacp_read_op->file_path);
+               g_free(oacp_read_op);
+               oacp_read_op = NULL;
+       }
+
+       if (oacp_create_op) {
+               g_free(oacp_create_op->filename);
+               g_free(oacp_create_op->type_uuid);
+               g_free(oacp_create_op);
+               oacp_create_op = NULL;
+       }
+
+       _bt_otp_client_init(otp_client_s);
+}
+
+int bt_otp_client_set_connection_state_changed_cb(bt_otp_client_h otp_client,
+                       bt_otp_client_state_changed_cb callback, void *user_data)
+{
+       bt_otp_client_s *otp_client_s = (bt_otp_client_s *)otp_client;
+
+       BT_CHECK_LE_SUPPORT();
+       BT_CHECK_OTP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(otp_client_s);
+       BT_CHECK_INPUT_PARAMETER(callback);
+
+       if (_bt_otp_client_find(otp_client_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       BT_DBG("Set OTP Client Connection State changed callback");
+       /* register the callback */
+       otp_client_s->connection_callback = callback;
+       otp_client_s->conn_cb_user_data = user_data;
+
+       return BT_ERROR_NONE;
+}
+
+int bt_otp_client_unset_connection_state_changed_cb(bt_otp_client_h otp_client)
+{
+       bt_otp_client_s *otp_client_s = (bt_otp_client_s *)otp_client;
+
+       BT_CHECK_LE_SUPPORT();
+       BT_CHECK_OTP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(otp_client_s);
+
+       if (_bt_otp_client_find(otp_client_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       BT_DBG("UnSet OTP Client Connection State changed callback");
+       /* unregister the callback */
+       otp_client_s->connection_callback = NULL;
+       otp_client_s->conn_cb_user_data = NULL;
+
+       return BT_ERROR_NONE;
+}
+
+static int __bt_update_otp_server_data(bluetooth_device_address_t *address, bt_otp_client_s *otp_client_s)
+{
+       int ret = BLUETOOTH_ERROR_INTERNAL;
+       bt_gatt_service_property_t service;
+       int count;
+
+       ret = bluetooth_gatt_get_service_from_uuid(address, BT_OTP_SERVICE_UUID, &service);
+       if (ret != BLUETOOTH_ERROR_NONE) {
+               BT_ERR("Failed to find OTP service on the remote device [%s]", address);
+               return ret;
+       }
+
+       /* Discover all charc & desc of OTP service */
+       for (count = 0; count < service.char_handle.count; count++) {
+               bt_gatt_char_property_t characteristic;
+               memset(&characteristic, 0x00, sizeof(characteristic));
+
+               BT_DBG("Get properties for Char [%s]", service.char_handle.handle[count]);
+
+               ret = bluetooth_gatt_get_characteristics_property(service.char_handle.handle[count],
+                               &characteristic);
+
+               if (ret != BLUETOOTH_ERROR_NONE) {
+                       BT_ERR("Get characteristic property failed(0x%08x)", ret);
+                       bluetooth_gatt_free_service_property(&service);
+                       bluetooth_gatt_free_char_property(&characteristic);
+                       goto fail;
+               } else {
+                       if (g_strstr_len(characteristic.uuid, -1, BT_OTP_FEATURE_UUID)) {
+                               BT_DBG("OTP feature characteristic discovered");
+
+                               if (otp_client_s->otp_feature_obj_path)
+                                       g_free(otp_client_s->otp_feature_obj_path);
+                               otp_client_s->otp_feature_obj_path = g_strdup(characteristic.handle);
+
+                               ret = _bt_get_error_code(bluetooth_otp_read_characteristic_value(otp_client_s->otp_feature_obj_path));
+                               if (ret != BT_ERROR_NONE)
+                                       BT_ERR("Failed to read OTP Feature : %s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+
+                               BT_DBG("OTP feature handle [%s]", otp_client_s->otp_feature_obj_path);
+                       } else if (g_strstr_len(characteristic.uuid, -1, BT_OTP_OACP_CONTROL_POINT_UUID)) {
+                               BT_DBG("OTP OACP Control Point discovered");
+                               bt_gatt_char_descriptor_property_t desc_property;
+                               memset(&desc_property, 0x00, sizeof(desc_property));
+
+                               /* Get CCCD for Control Point */
+                               ret = bluetooth_gatt_get_char_descriptor_property(
+                                               characteristic.char_desc_handle.handle[0], &desc_property);
+
+                               if (ret != BLUETOOTH_ERROR_NONE) {
+                                       BT_ERR("Failed to discover CCCD for OACP Control point");
+                                       bluetooth_gatt_free_service_property(&service);
+                                       bluetooth_gatt_free_char_property(&characteristic);
+                                       bluetooth_gatt_free_desc_property(&desc_property);
+                                       goto fail;
+                               }
+                               if (otp_client_s->otp_oacp_control_point)
+                                       g_free(otp_client_s->otp_oacp_control_point);
+                               otp_client_s->otp_oacp_control_point = g_strdup(characteristic.handle);
+
+                               if (otp_client_s->otp_oacp_cccd)
+                                       g_free(otp_client_s->otp_oacp_cccd);
+                               otp_client_s->otp_oacp_cccd = g_strdup(desc_property.handle);
+
+                               BT_DBG("OACP Control point handle [%s]", otp_client_s->otp_oacp_control_point);
+                               BT_DBG("OACP Control point CCCD handle [%s]", otp_client_s->otp_oacp_cccd);
+                       } else if (g_strstr_len(characteristic.uuid, -1, BT_OTP_OLCP_CONTROL_POINT_UUID)) {
+                               BT_DBG("OTP OLCP Control Point discovered");
+                               bt_gatt_char_descriptor_property_t desc_property;
+                               memset(&desc_property, 0x00, sizeof(desc_property));
+
+                               /* Get CCCD for Control Point */
+                               ret = bluetooth_gatt_get_char_descriptor_property(
+                                               characteristic.char_desc_handle.handle[0], &desc_property);
+
+                               if (ret != BLUETOOTH_ERROR_NONE) {
+                                       BT_ERR("Failed to discover CCCD for OLCP Control point");
+                                       bluetooth_gatt_free_service_property(&service);
+                                       bluetooth_gatt_free_char_property(&characteristic);
+                                       bluetooth_gatt_free_desc_property(&desc_property);
+                                       goto fail;
+                               }
+                               if (otp_client_s->otp_olcp_control_point)
+                                       g_free(otp_client_s->otp_olcp_control_point);
+                               otp_client_s->otp_olcp_control_point = g_strdup(characteristic.handle);
+
+                               if (otp_client_s->otp_olcp_cccd)
+                                       g_free(otp_client_s->otp_olcp_cccd);
+                               otp_client_s->otp_olcp_cccd = g_strdup(desc_property.handle);
+
+                               BT_DBG("OLCP Control point handle [%s]", otp_client_s->otp_olcp_control_point);
+                               BT_DBG("OLCP Control point CCCD handle [%s]", otp_client_s->otp_olcp_cccd);
+                       }  else if (g_strstr_len(characteristic.uuid, -1, BT_OTP_OBJECT_NAME_UUID)) {
+                               BT_DBG("OTP Object Name characteristic discovered");
+
+                               if (otp_client_s->otp_name_obj_path)
+                                       g_free(otp_client_s->otp_name_obj_path);
+                               otp_client_s->otp_name_obj_path = g_strdup(characteristic.handle);
+
+                               BT_DBG("OTP Object Name handle [%s]", otp_client_s->otp_name_obj_path);
+                       }  else if (g_strstr_len(characteristic.uuid, -1, BT_OTP_OBJECT_TYPE_UUID)) {
+                               BT_DBG("OTP Object Type characteristic discovered");
+
+                               if (otp_client_s->otp_type_obj_path)
+                                       g_free(otp_client_s->otp_type_obj_path);
+                               otp_client_s->otp_type_obj_path = g_strdup(characteristic.handle);
+
+                               BT_DBG("OTP Object Type handle [%s]", otp_client_s->otp_type_obj_path);
+                       }  else if (g_strstr_len(characteristic.uuid, -1, BT_OTP_OBJECT_SIZE_UUID)) {
+                               BT_DBG("OTP Object Size characteristic discovered");
+
+                               if (otp_client_s->otp_size_obj_path)
+                                       g_free(otp_client_s->otp_size_obj_path);
+                               otp_client_s->otp_size_obj_path = g_strdup(characteristic.handle);
+
+                               BT_DBG("OTP Object Size handle [%s]", otp_client_s->otp_size_obj_path);
+                       }  else if (g_strstr_len(characteristic.uuid, -1, BT_OTP_OBJECT_FIRST_CREATED_UUID)) {
+                               BT_DBG("OTP Object First Created characteristic discovered");
+
+                               if (otp_client_s->otp_first_created_obj_path)
+                                       g_free(otp_client_s->otp_first_created_obj_path);
+                               otp_client_s->otp_first_created_obj_path = g_strdup(characteristic.handle);
+
+                               BT_DBG("OTP Object First Created handle [%s]", otp_client_s->otp_first_created_obj_path);
+                       }  else if (g_strstr_len(characteristic.uuid, -1, BT_OTP_OBJECT_LAST_MODIFIED_UUID)) {
+                               BT_DBG("OTP Object Last Modified characteristic discovered");
+
+                               if (otp_client_s->otp_last_modified_obj_path)
+                                       g_free(otp_client_s->otp_last_modified_obj_path);
+                               otp_client_s->otp_last_modified_obj_path = g_strdup(characteristic.handle);
+
+                               BT_DBG("OTP Object Last Modified handle [%s]", otp_client_s->otp_last_modified_obj_path);
+                       }  else if (g_strstr_len(characteristic.uuid, -1, BT_OTP_OBJECT_ID_UUID)) {
+                               BT_DBG("OTP Object ID characteristic discovered");
+
+                               if (otp_client_s->otp_id_obj_path)
+                                       g_free(otp_client_s->otp_id_obj_path);
+                               otp_client_s->otp_id_obj_path = g_strdup(characteristic.handle);
+
+                               BT_DBG("OTP Object ID handle [%s]", otp_client_s->otp_id_obj_path);
+                       }  else if (g_strstr_len(characteristic.uuid, -1, BT_OTP_OBJECT_PROP_UUID)) {
+                               BT_DBG("OTP Object Properties characteristic discovered");
+
+                               if (otp_client_s->otp_props_obj_path)
+                                       g_free(otp_client_s->otp_props_obj_path);
+                               otp_client_s->otp_props_obj_path = g_strdup(characteristic.handle);
+
+                               BT_DBG("OTP Object Properties handle [%s]", otp_client_s->otp_props_obj_path);
+                       }  else if (g_strstr_len(characteristic.uuid, -1, BT_OTP_OBJECT_LIST_FILTER_UUID)) {
+                               BT_DBG("OTP Object List Filter characteristic discovered");
+
+                               if (otp_client_s->otp_list_filter_obj_path)
+                                       g_free(otp_client_s->otp_list_filter_obj_path);
+                               otp_client_s->otp_list_filter_obj_path = g_strdup(characteristic.handle);
+
+                               BT_DBG("OTP Object List Filter handle [%s]", otp_client_s->otp_list_filter_obj_path);
+                       }  else if (g_strstr_len(characteristic.uuid, -1, BT_OTP_OBJECT_CHANGED_UUID)) {
+                               BT_DBG("OTP Object Changed characteristic discovered");
+                               bt_gatt_char_descriptor_property_t desc_property;
+                               memset(&desc_property, 0x00, sizeof(desc_property));
+
+                               /* Get CCCD for Object Changed Charc */
+                               ret = bluetooth_gatt_get_char_descriptor_property(
+                                               characteristic.char_desc_handle.handle[0], &desc_property);
+
+                               if (ret != BLUETOOTH_ERROR_NONE) {
+                                       BT_ERR("Failed to discover CCCD for Object Changed Charc");
+                                       bluetooth_gatt_free_service_property(&service);
+                                       bluetooth_gatt_free_char_property(&characteristic);
+                                       bluetooth_gatt_free_desc_property(&desc_property);
+                                       goto fail;
+                               }
+                               if (otp_client_s->otp_obj_changed_obj_path)
+                                       g_free(otp_client_s->otp_obj_changed_obj_path);
+                               otp_client_s->otp_obj_changed_obj_path = g_strdup(characteristic.handle);
+
+                               if (otp_client_s->otp_obj_changed_cccd)
+                                       g_free(otp_client_s->otp_obj_changed_cccd);
+                               otp_client_s->otp_obj_changed_cccd = g_strdup(desc_property.handle);
+
+                               BT_DBG("OTP Object Changed handle [%s]", otp_client_s->otp_obj_changed_obj_path);
+                               BT_DBG("OTP Object Changed CCCD handle [%s]", otp_client_s->otp_obj_changed_cccd);
+                       }       else {
+                               BT_DBG("Other OTP Characteristic handle [%s]", characteristic.handle);
+                               BT_DBG("UUID [%s]", characteristic.uuid);
+                       }
+               } /* Characteristic property get successful */
+               bluetooth_gatt_free_char_property(&characteristic);
+       } /* Next Charatceristic */
+
+       if (otp_client_s->otp_service_handle)
+               g_free(otp_client_s->otp_service_handle);
+
+       otp_client_s->otp_service_handle = g_strdup(service.handle);
+       bluetooth_gatt_free_service_property(&service);
+       return ret;
+fail:
+       __bt_otp_client_reset_server_data(otp_client_s);
+       return ret;
+}
+
+void _bt_otp_check_service_changed(char *address, bt_gatt_service_change_t *service_change)
+{
+       bt_otp_client_s *otp_client_s = NULL;
+       int error_code = BLUETOOTH_ERROR_NONE;
+       bluetooth_device_address_t addr_hex = { {0,} };
+       if (!address) {
+               BT_ERR("Abnormal Result!!");
+               return;
+       }
+       otp_client_s = _bt_otp_client_find(address);
+       BT_DBG("GATT Service state changed [%d]", service_change->change_type);
+       BT_DBG("GATT Service [%s]", service_change->svc_path);
+       if (otp_client_s) {
+               if (service_change->change_type ==  BLUETOOTH_GATT_SERVICE_CHANGE_TYPE_REMOVE) {
+                       if (otp_client_s->otp_service_handle &&
+                                       g_strcmp0(otp_client_s->otp_service_handle, service_change->svc_path) == 0) {
+                               BT_ERR("OTS Primary Service removed abnormally from Remote Server [%s]", address);
+                               __bt_otp_client_reset_server_data(otp_client_s);
+                       }
+               } else {
+                       _bt_convert_address_to_hex(&addr_hex, address);
+
+                       /* Attempt to update OTS Service data if service added is OTS service */
+                       if (__bt_update_otp_server_data(&addr_hex, otp_client_s) == BLUETOOTH_ERROR_NONE) {
+                               BT_INFO("OTS Primary Service added in Remote Server [%s]", address);
+                               /* Set Service changed Watcher */
+                               error_code = bluetooth_gatt_set_service_change_watcher(&addr_hex, true);
+                               if (error_code != BLUETOOTH_ERROR_NONE)
+                                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+                       }
+               }
+       }
+       BT_DBG("-");
+}
+
+void _bt_otp_client_connection_state_changed(int result,
+                                       const char *remote_address,
+                                       bool connected)
+{
+       bt_otp_client_s *otp_client_s = NULL;
+       BT_DBG("OTP Client Connection state changed result [%d] connected [%d]", result, connected ? TRUE : FALSE);
+
+       otp_client_s = _bt_otp_client_find(remote_address);
+       if (otp_client_s) {
+               BT_DBG("OTP Client found against address [%s]", remote_address);
+
+               bluetooth_device_address_t addr_hex = { {0,} };
+               _bt_convert_address_to_hex(&addr_hex, remote_address);
+
+               if (result != BT_ERROR_NONE) {
+                       BT_ERR("GATT Connect Request failed Address [%s]", remote_address);
+                       __bt_otp_client_reset_server_data(otp_client_s);
+                       bluetooth_gatt_set_service_change_watcher(&addr_hex, false);
+
+                       if (otp_client_s->connection_callback)
+                               ((bt_otp_client_state_changed_cb)otp_client_s->connection_callback)
+                                       (result, remote_address, otp_client_s, connected, otp_client_s->conn_cb_user_data);
+                       return;
+               }
+               /* Update OTP Service values */
+               if (connected) {
+                       int error_code = BLUETOOTH_ERROR_NONE;
+                       BT_DBG("Remote device connected successfully");
+                       /* Attempt to update OTP Service data */
+                       error_code = __bt_update_otp_server_data(&addr_hex, otp_client_s);
+                       if (error_code != BLUETOOTH_ERROR_NONE)
+                               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+
+                       /* Set Service changed Watcher */
+                       error_code = bluetooth_gatt_set_service_change_watcher(&addr_hex, true);
+                       if (error_code != BLUETOOTH_ERROR_NONE)
+                               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+               } else {
+                       BT_DBG("Remote device disconnected successfully");
+                       /* Disconnected */
+                       __bt_otp_client_reset_server_data(otp_client_s);
+                       bluetooth_gatt_set_service_change_watcher(&addr_hex, false);
+               }
+               otp_client_s->connected = connected;
+
+               if (otp_client_s->connection_callback)
+                       ((bt_otp_client_state_changed_cb)otp_client_s->connection_callback)
+                               (result, remote_address, otp_client_s, connected, otp_client_s->conn_cb_user_data);
+       } else {
+               BT_DBG("OTP client not found!");
+       }
+}
+
+int bt_otp_client_create(const char *remote_address, bt_otp_client_h *otp_client)
+{
+       int error_code = BT_ERROR_NONE;
+       bt_otp_client_s *otp_client_s = NULL;
+       bool connected = false;
+       bluetooth_device_address_t addr_hex = { {0,} };
+       bt_otp_client_s *info;
+       GSList *l;
+       BT_INFO("+");
+
+       BT_CHECK_LE_SUPPORT();
+       BT_CHECK_OTP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(remote_address);
+       BT_CHECK_INPUT_PARAMETER(otp_client);
+
+       for (l = otp_client_list; l; l = g_slist_next(l)) {
+               info = l->data;
+
+               if ((info == NULL) || (info->remote_address == NULL)) {
+                       BT_ERR("bt_otp_client_create Error Parameter are NULL..\n");
+                       continue;
+               } else if (info && !g_ascii_strcasecmp(info->remote_address, remote_address)) {
+                       BT_ERR("OTP Client for Remote device [%s] is already created",
+                                       remote_address);
+                       *otp_client = (bt_otp_client_h)info;
+                       return BT_ERROR_ALREADY_DONE;
+               }
+       }
+
+       otp_client_s = g_malloc0(sizeof(*otp_client_s));
+       if (otp_client_s == NULL) {
+               error_code = BT_ERROR_OUT_OF_MEMORY;
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+               return error_code;
+       }
+
+       if (bt_device_is_profile_connected(remote_address, BT_PROFILE_GATT,
+                               &connected) != BT_ERROR_NONE)
+               BT_ERR("bt_device_is_profile_connected is failed");
+       otp_client_s->connected = connected;
+
+       _bt_convert_address_to_hex(&addr_hex, remote_address);
+
+       if (otp_client_s->connected == true) {
+               /* Update all serv & charc */
+               error_code = __bt_update_otp_server_data(&addr_hex, otp_client_s);
+               if (error_code != BLUETOOTH_ERROR_NONE) {
+                       __bt_otp_client_reset_server_data(otp_client_s);
+                       g_free(otp_client_s);
+                       return BT_ERROR_OPERATION_FAILED;
+               }
+               error_code = bluetooth_gatt_set_service_change_watcher(&addr_hex, true);
+               if (error_code != BLUETOOTH_ERROR_NONE) {
+                       __bt_otp_client_reset_server_data(otp_client_s);
+                       g_free(otp_client_s);
+                       return BT_ERROR_OPERATION_FAILED;
+               }
+       }
+
+       otp_client_s->remote_address = g_strdup(remote_address);
+       if (otp_client_s->remote_address == NULL) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code),
+                                                                       error_code);
+               __bt_otp_client_reset_server_data(otp_client_s);
+               g_free(otp_client_s);
+               return BT_ERROR_OUT_OF_MEMORY;
+       }
+
+       _bt_otp_client_init(otp_client_s);
+
+       otp_client_list = g_slist_append(otp_client_list, otp_client_s);
+       *otp_client = (bt_otp_client_h)otp_client_s;
+
+       BT_DBG("OTP Client Created");
+       return BT_ERROR_NONE;
+}
+
+int bt_otp_client_destroy(bt_otp_client_h otp_client)
+{
+       bt_otp_client_s *otp_client_s = (bt_otp_client_s *)otp_client;
+
+       BT_CHECK_LE_SUPPORT();
+       BT_CHECK_OTP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(otp_client_s);
+
+       if (_bt_otp_client_find(otp_client_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       BT_DBG("OTP client Remote device [%s]", otp_client_s->remote_address);
+       __bt_otp_client_reset_server_data(otp_client_s);
+
+       otp_client_list = g_slist_remove(otp_client_list, otp_client_s);
+       g_free(otp_client_s);
+       otp_client_s = NULL;
+
+       return BT_ERROR_NONE;
+}
+
+int bt_otp_client_connect(bt_otp_client_h otp_client)
+{
+       int error_code;
+       bt_otp_client_s *otp_client_s = (bt_otp_client_s *)otp_client;
+
+       BT_CHECK_LE_SUPPORT();
+       BT_CHECK_OTP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(otp_client_s);
+
+       if (_bt_otp_client_find(otp_client_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (otp_client_s->connected)
+               return BT_ERROR_NONE;
+
+       BT_DBG("OTP client connect Remote device [%s]", otp_client_s->remote_address);
+       error_code = bt_gatt_connect(otp_client_s->remote_address, FALSE);
+
+       if (error_code != BT_ERROR_NONE)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+
+       return error_code;
+}
+
+int bt_otp_client_disconnect(bt_otp_client_h otp_client)
+{
+       int error_code;
+       bt_otp_client_s *otp_client_s = (bt_otp_client_s *)otp_client;
+
+       BT_CHECK_LE_SUPPORT();
+       BT_CHECK_OTP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(otp_client_s);
+
+       if (_bt_otp_client_find(otp_client_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (otp_client_s->connected == false) {
+               BT_ERR("Remote device [%s] is not conencted", otp_client_s->remote_address);
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       BT_DBG("OTP client Disconnect Remote device [%s]", otp_client_s->remote_address);
+       error_code = bt_gatt_disconnect(otp_client_s->remote_address);
+
+       if (error_code != BT_ERROR_NONE)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+
+       return error_code;
+}
+
+void _bt_otp_get_remote_address(char *handle, char *remote_address)
+{
+       char *dev_path;
+       dev_path = strstr(handle, "dev_");
+       dev_path += 4;
+       /* 18 -> Length of BT ADDR in path */
+       g_strlcpy(remote_address, dev_path, BT_ADDR_LENGTH);
+       g_strdelimit(remote_address, "_", ':');
+       BT_INFO("[%s] --> [%s]", handle, remote_address);
+}
+
+void _bt_otp_send_discovery_callback(int result, bt_otp_client_s *otp_client_s)
+{
+       object_metadata *metadata;
+       GSList *l;
+       int k;
+       if (result != BLUETOOTH_ERROR_NONE) {
+               ((bt_otp_client_object_discovery_cb)otp_client_s->callback)(
+               result, otp_client_s->remote_address, NULL, otp_client_s->user_data);
+               return;
+       }
+
+       BT_INFO("All Object/Objects Discovered");
+       if (obj_list) {
+               for (k = 0; k < obj_list->num_objects; k++) {
+                       otp_object_metadata_s *data = obj_list->data[k];
+                       g_free(data->name);
+                       g_free(data);
+               }
+               g_free(obj_list);
+               obj_list = NULL;
+       }
+       obj_list = g_malloc0(sizeof(bt_otp_object_list_s));
+       obj_list->num_objects = g_slist_length(otp_client_s->object_list);
+       obj_list->data = (otp_object_metadata_s **)g_malloc0(sizeof(otp_object_metadata_s *)*obj_list->num_objects);
+       k = 0;
+       for (l = otp_client_s->object_list; l; l = g_slist_next(l)) {
+               metadata = l->data;
+               if (metadata == NULL)
+                       continue;
+               otp_object_metadata_s *m_data = g_malloc0(sizeof(otp_object_metadata_s));
+               m_data->id = metadata->id;
+               m_data->name = g_strdup(metadata->name);
+               obj_list->data[k] = (otp_object_metadata_s *)g_malloc0(sizeof(otp_object_metadata_s));
+               obj_list->data[k] = m_data;
+               k++;
+       }
+       ((bt_otp_client_object_discovery_cb)otp_client_s->callback)(
+               BLUETOOTH_ERROR_NONE, otp_client_s->remote_address, obj_list, otp_client_s->user_data);
+}
+
+void _bt_otp_client_read_value_response(int result, char *char_path,
+                                               char *value, int len)
+{
+       bt_otp_client_s *otp_client_s = NULL;
+       char remote_address[BT_ADDR_LENGTH];
+       int error_code = BLUETOOTH_ERROR_NONE;
+
+       _bt_otp_get_remote_address(char_path, remote_address);
+
+       BT_DBG("OTP client Read Value Response [%d] [%s] [%s] [%d]", result,
+                                                       char_path, value, len);
+
+       otp_client_s = _bt_otp_client_find(remote_address);
+       if (otp_client_s == NULL) {
+               BT_INFO("Client Not Found");
+               return;
+       }
+
+       if (result != BLUETOOTH_ERROR_NONE) {
+               BT_INFO("Read failed for [%s]", char_path);
+               goto done;
+       }
+
+       if (!g_strcmp0(otp_client_s->otp_feature_obj_path, char_path)) {
+                       uint64_t feature =      (uint64_t)(value[0] & 0xFF) << 56       |
+                                                               (uint64_t)(value[1] & 0xFF) << 48       |
+                                                               (uint64_t)(value[2] & 0xFF) << 40       |
+                                                               (uint64_t)(value[3] & 0xFF) << 32       |
+                                                               (uint64_t)(value[4] & 0xFF) << 24       |
+                                                               (uint64_t)(value[5] & 0xFF) << 16       |
+                                                               (uint64_t)(value[6] & 0xFF) << 8        |
+                                                               (uint64_t)(value[7] & 0xFF);
+                       otp_client_s->otp_feature = feature;
+                       BT_INFO("OTP Feature [%u]", feature);
+
+                       if (BT_OTP_IS_OACP_SUPPORTED(otp_client_s->otp_feature)
+                                                               && !otp_client_s->oacp_cccd_enabled
+                                                               && otp_client_s->otp_oacp_control_point) {
+
+                               error_code = bluetooth_otp_enable_notification(otp_client_s->otp_oacp_control_point);
+                               if (error_code != BT_ERROR_NONE)
+                                       BT_ERR("OACP Notification enable failed %s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+                       }
+
+                       if (BT_OTP_IS_OLCP_SUPPORTED(otp_client_s->otp_feature)
+                                                       && !otp_client_s->olcp_cccd_enabled
+                                                       && otp_client_s->otp_olcp_control_point) {
+                               error_code = bluetooth_otp_enable_notification(otp_client_s->otp_olcp_control_point);
+                               if (error_code != BT_ERROR_NONE)
+                                       BT_ERR("OLCP Notification enable failed %s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+                       }
+
+                       if (!otp_client_s->obj_changed_cccd_enabed
+                                       && otp_client_s->otp_obj_changed_obj_path) {
+                               error_code = bluetooth_otp_enable_notification(otp_client_s->otp_obj_changed_obj_path);
+                               if (error_code != BT_ERROR_NONE)
+                                       BT_ERR("Object Changed Notification enable failed %s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+                       }
+       } else {
+               if (!g_strcmp0(otp_client_s->otp_name_obj_path, char_path)) {
+                       char *name = NULL;
+                       name = g_strndup(value, len);
+                       BT_INFO("Object Name [%s]", name);
+
+                       if (otp_client_s->curr_op == BT_OTP_OBJECT_DISCOVERY) {
+                               metadata->name = g_strdup(name);
+                               error_code = bluetooth_otp_read_characteristic_value(otp_client_s->otp_type_obj_path);
+                               if (error_code != BLUETOOTH_ERROR_NONE) {
+                                       BT_INFO("Read Charc Value Failed %s(0x%08x)",
+                                                       _bt_convert_error_to_string(error_code), error_code);
+                                       result = error_code;
+                                       g_free(name);
+                                       goto done;
+                               }
+                       }
+                       g_free(name);
+               } else if (!g_strcmp0(otp_client_s->otp_type_obj_path, char_path)) {
+                       char *type = NULL;
+                       type = g_strndup(value, len);
+                       BT_INFO("Object Type [%s]", type);
+
+                       if (otp_client_s->curr_op == BT_OTP_OBJECT_DISCOVERY) {
+                               metadata->type = g_strdup(type);
+                               error_code = bluetooth_otp_read_characteristic_value(otp_client_s->otp_size_obj_path);
+                               if (error_code != BLUETOOTH_ERROR_NONE) {
+                                       BT_INFO("Read Charc Value Failed %s(0x%08x)",
+                                                       _bt_convert_error_to_string(error_code), error_code);
+                                       result = error_code;
+                                       g_free(type);
+                                       goto done;
+                               }
+                       }
+                       g_free(type);
+               } else if (!g_strcmp0(otp_client_s->otp_size_obj_path, char_path)) {
+                       uint32_t csize, asize;
+                       csize = (uint32_t)(value[3] & 0xFF) << 24       |
+                                                       (uint32_t)(value[2] & 0xFF) << 16       |
+                                                       (uint32_t)(value[1] & 0xFF) << 8        |
+                                                       (uint32_t)(value[0] & 0xFF);
+
+                       asize = (uint32_t)(value[7] & 0xFF) << 24       |
+                                                       (uint32_t)(value[6] & 0xFF) << 16       |
+                                                       (uint32_t)(value[5] & 0xFF) << 8        |
+                                                       (uint32_t)(value[4] & 0xFF);
+
+                       BT_INFO("Object Size curr[%lu] alloc[%lu]", csize, asize);
+
+                       if (otp_client_s->curr_op == BT_OTP_OBJECT_DISCOVERY) {
+                               metadata->curr_size = csize;
+                               metadata->alloc_size = asize;
+                               error_code = bluetooth_otp_read_characteristic_value(otp_client_s->otp_props_obj_path);
+                               if (error_code != BLUETOOTH_ERROR_NONE) {
+                                       BT_INFO("Read Charc Value Failed %s(0x%08x)",
+                                                       _bt_convert_error_to_string(error_code), error_code);
+                                       result = error_code;
+                                       goto done;
+                               }
+                       }
+               } else if (!g_strcmp0(otp_client_s->otp_props_obj_path, char_path)) {
+                       uint32_t props;
+                       props = (uint32_t)(value[3] & 0xFF) << 24               |
+                                               (uint32_t)(value[2] & 0xFF) << 16       |
+                                               (uint32_t)(value[1] & 0xFF) << 8        |
+                                               (uint32_t)(value[0] & 0xFF);
+                       BT_INFO("Object Properties [%lu]", props);
+
+                       /* First-created & Last-modified are optional charcacteristics */
+                       if (otp_client_s->curr_op == BT_OTP_OBJECT_DISCOVERY) {
+                               metadata->props = props;
+                               if (otp_client_s->otp_first_created_obj_path) {
+                                       error_code = bluetooth_otp_read_characteristic_value(otp_client_s->otp_first_created_obj_path);
+                                       if (error_code != BLUETOOTH_ERROR_NONE) {
+                                               BT_INFO("Read Charc Value Failed %s(0x%08x)",
+                                                               _bt_convert_error_to_string(error_code), error_code);
+                                               result = error_code;
+                                               goto done;
+                                       }
+                               } else if (otp_client_s->otp_last_modified_obj_path) {
+                                       error_code = bluetooth_otp_read_characteristic_value(otp_client_s->otp_last_modified_obj_path);
+                                       if (error_code != BLUETOOTH_ERROR_NONE) {
+                                               BT_INFO("Read Charc Value Failed %s(0x%08x)",
+                                                                       _bt_convert_error_to_string(error_code), error_code);
+                                               result = error_code;
+                                               goto done;
+                                       }
+                               } else {
+                                       /* Reading Object ID characteristics makes sense if server
+                                        * supports multiple objects.
+                                        */
+                                       if (otp_client_s->multiple_obj_supp) {
+                                               metadata->id = 0x256;
+                                               otp_client_s->object_id = metadata->id;
+                                               otp_client_s->object_list = g_slist_append(otp_client_s->object_list, metadata);
+                                               goto done;
+                                       } else {
+                                               if (otp_client_s->otp_id_obj_path) {
+                                                       error_code = bluetooth_otp_read_characteristic_value(otp_client_s->otp_id_obj_path);
+                                                       if (error_code != BLUETOOTH_ERROR_NONE) {
+                                                               BT_INFO("Read Charc Value Failed %s(0x%08x)",
+                                                                               _bt_convert_error_to_string(error_code), error_code);
+                                                               result = error_code;
+                                                               goto done;
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               } else if (!g_strcmp0(otp_client_s->otp_first_created_obj_path, char_path)) {
+                       struct tm tm = {0};
+                       uint16_t year = (uint16_t)(value[1] & 0xFF) << 8        |
+                                                       (uint16_t)(value[0] & 0xFF);
+                       tm.tm_year = year-1900;
+                       tm.tm_mon = value[2] & 0xFF;
+                       tm.tm_mon = tm.tm_mon-1;
+                       tm.tm_mday = value[3] & 0xFF;
+                       tm.tm_hour = value[4] & 0xFF;
+                       tm.tm_min = value[5] & 0xFF;
+                       tm.tm_sec = value[6] & 0xFF;
+                       BT_INFO("Object First Created [%d]-[%d]-[%d]\t[%d][%d][%d]", tm.tm_mday,
+                                               tm.tm_mon, tm.tm_year, tm.tm_hour, tm.tm_min, tm.tm_sec);
+
+                       if (otp_client_s->curr_op == BT_OTP_OBJECT_DISCOVERY) {
+                               metadata->first_created = mktime(&tm);
+                               if (otp_client_s->otp_last_modified_obj_path) {
+                                       error_code = bluetooth_otp_read_characteristic_value(otp_client_s->otp_last_modified_obj_path);
+                                       if (error_code != BLUETOOTH_ERROR_NONE) {
+                                               BT_INFO("Read Charc Value Failed %s(0x%08x)",
+                                                                       _bt_convert_error_to_string(error_code), error_code);
+                                               result = error_code;
+                                               goto done;
+                                       }
+                               } else {
+                                       if (otp_client_s->multiple_obj_supp) {
+                                               metadata->id = 0x256;
+                                               otp_client_s->object_id = metadata->id;
+                                               otp_client_s->object_list = g_slist_append(otp_client_s->object_list, metadata);
+                                               goto done;
+                                       } else {
+                                               if (otp_client_s->otp_id_obj_path) {
+                                                       error_code = bluetooth_otp_read_characteristic_value(otp_client_s->otp_id_obj_path);
+                                                       if (error_code != BLUETOOTH_ERROR_NONE) {
+                                                               BT_INFO("Read Charc Value Failed %s(0x%08x)",
+                                                                                       _bt_convert_error_to_string(error_code), error_code);
+                                                               result = error_code;
+                                                               goto done;
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               } else if (!g_strcmp0(otp_client_s->otp_last_modified_obj_path, char_path)) {
+                       struct tm tm = {0};
+                       uint16_t year = (uint16_t)(value[1] & 0xFF) << 8        |
+                                                       (uint16_t)(value[0] & 0xFF);
+                       tm.tm_year = year-1900;
+                       tm.tm_mon = value[2] & 0xFF;
+                       tm.tm_mon = tm.tm_mon-1;
+                       tm.tm_mday = value[3] & 0xFF;
+                       tm.tm_hour = value[4] & 0xFF;
+                       tm.tm_min = value[5] & 0xFF;
+                       tm.tm_sec = value[6] & 0xFF;
+                       BT_INFO("Object Last Modified [%d]-[%d]-[%d]\t[%d][%d][%d]", tm.tm_mday,
+                                               tm.tm_mon, tm.tm_year, tm.tm_hour, tm.tm_min, tm.tm_sec);
+
+                       if (otp_client_s->curr_op == BT_OTP_OBJECT_DISCOVERY) {
+                               metadata->last_modified = mktime(&tm);
+                               if (otp_client_s->multiple_obj_supp) {
+                                       /* None of the optional characteristics supported, so finish object discovery */
+                                       metadata->id = 0x256;
+                                       otp_client_s->object_id = metadata->id;
+                                       otp_client_s->object_list = g_slist_append(otp_client_s->object_list, metadata);
+                                       goto done;
+                               } else {
+                                       if (otp_client_s->otp_id_obj_path) {
+                                               error_code = bluetooth_otp_read_characteristic_value(otp_client_s->otp_id_obj_path);
+                                               if (error_code != BLUETOOTH_ERROR_NONE) {
+                                                       BT_INFO("Read Charc Value Failed %s(0x%08x)",
+                                                                               _bt_convert_error_to_string(error_code), error_code);
+                                                       result = error_code;
+                                                       goto done;
+                                               }
+                                       }
+                               }
+                       }
+               } else if (!g_strcmp0(otp_client_s->otp_id_obj_path, char_path)) {
+                       uint64_t id;
+                       id = (uint64_t)(value[5] & 0xFF) << 48  |
+                                       (uint64_t)(value[4] & 0xFF) << 32       |
+                                       (uint64_t)(value[3] & 0xFF) << 24       |
+                                       (uint64_t)(value[2] & 0xFF) << 16       |
+                                       (uint64_t)(value[1] & 0xFF) << 8        |
+                                       (uint64_t)(value[0] & 0xFF);
+                       BT_INFO("Object ID [%llu]", id);
+                       /* TODO: Remove the previous stored object list */
+                       if (otp_client_s->curr_op == BT_OTP_OBJECT_DISCOVERY) {
+                               metadata->id = id;
+                               otp_client_s->object_id = metadata->id;
+                               otp_client_s->object_list = g_slist_append(otp_client_s->object_list, metadata);
+
+                               uint8_t value[7] = {0x00};
+                               value[0] = OLCP_NEXT;
+                               error_code = bluetooth_otp_write_characteristics_value(otp_client_s->otp_olcp_control_point, value, 1);
+                               if (error_code != BT_ERROR_NONE) {
+                                       BT_ERR("Failed to write control point : %s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+                                       result = error_code;
+                                       goto done;
+                               }
+                       } else if (otp_client_s->curr_op == BT_OTP_OBJECT_CREATE) {
+                               metadata = g_malloc0(sizeof(object_metadata));
+                               metadata->name = g_strdup(oacp_create_op->filename);
+                               metadata->type = g_strdup(oacp_create_op->type_uuid);
+                               metadata->curr_size = oacp_create_op->size;
+                               metadata->alloc_size = oacp_create_op->size;
+                               /* Dont hard code */
+                               metadata->props = OBJECT_READ | OBJECT_WRITE;
+                               metadata->first_created = oacp_create_op->first_created;
+                               metadata->last_modified = oacp_create_op->first_created;
+                               metadata->id = id;
+                               otp_client_s->object_id = metadata->id;
+                               otp_client_s->object_list = g_slist_append(otp_client_s->object_list, metadata);
+                               goto done;
+                       }
+               }
+               return;
+done:
+               switch (otp_client_s->curr_op) {
+               case BT_OTP_OBJECT_DISCOVERY:
+               case BT_OTP_OBJECT_CREATE:
+                       _bt_otp_send_callback(result, NULL, otp_client_s->object_id, 0, otp_client_s);
+                       break;
+               default:
+                       break;
+               }
+       }
+}
+
+static void _bt_otp_send_callback(int result, char *file_path, uint64_t id,
+                       unsigned int length, bt_otp_client_s *otp_client_s)
+{
+       switch (otp_client_s->curr_op) {
+       case BT_OTP_OBJECT_DISCOVERY:
+               _bt_otp_send_discovery_callback(result, otp_client_s);
+               break;
+       case BT_OTP_OBJECT_READ:
+               _bt_otp_client_notify_read_object_status(result,
+                                                       file_path, otp_client_s);
+               break;
+       case BT_OTP_OBJECT_SELECT:
+               _bt_otp_client_send_select_object_callback(result, otp_client_s);
+               break;
+       case BT_OTP_OBJECT_CREATE:
+               _bt_otp_client_send_create_object_callback(result, id, otp_client_s);
+               break;
+       case BT_OTP_OBJECT_WRITE:
+               _bt_otp_client_send_write_object_callback(result, length, otp_client_s);
+               break;
+       case BT_OTP_OBJECT_EXECUTE:
+               _bt_otp_client_send_execute_object_callback(result, otp_client_s);
+               break;
+       case BT_OTP_OBJECT_DELETE:
+               _bt_otp_client_send_delete_object_callback(result, otp_client_s);
+               break;
+       case BT_OTP_NO_OPERATION:
+               break;
+       default:
+               break;
+       }
+
+       __bt_otp_reset_api_info(otp_client_s);
+}
+
+void _bt_otp_client_write_value_response(int result, char *handle)
+{
+       bt_otp_client_s *otp_client_s = NULL;
+       char remote_address[BT_ADDR_LENGTH];
+       BT_DBG("OTP client Write Value Response [%d] [%s]", result, handle);
+
+       _bt_otp_get_remote_address(handle, remote_address);
+       otp_client_s = _bt_otp_client_find(remote_address);
+       if (otp_client_s == NULL) {
+               BT_INFO("Client Not Found");
+               return;
+       }
+
+       if (result != BLUETOOTH_ERROR_NONE) {
+               BT_DBG("OTP Write Failed");
+               goto fail;
+       }
+
+       if (otp_client_s->curr_op == BT_OTP_OBJECT_CREATE) {
+               if ((!g_strcmp0(otp_client_s->otp_name_obj_path, handle) ||
+                       !g_strcmp0(otp_client_s->otp_first_created_obj_path, handle)) &&
+                                                                       oacp_create_op) {
+                       struct tm fc_tm;
+                       uint8_t value[8];
+                       int error_code;
+                       memset(value, 0, 8);
+                       localtime_r(&(oacp_create_op->first_created), &fc_tm);
+
+                       value[1] = ((fc_tm.tm_year+1900) >> 8) & 0xFF;
+                       value[0] = (fc_tm.tm_year+1900) & 0xFF;
+                       value[2] = (fc_tm.tm_mon+1) & 0xFF;
+                       value[3] = fc_tm.tm_mday & 0xFF;
+                       value[4] = fc_tm.tm_hour & 0xFF;
+                       value[5] = fc_tm.tm_min & 0xFF;
+                       value[6] = fc_tm.tm_sec & 0xFF;
+
+                       if (!g_strcmp0(otp_client_s->otp_name_obj_path, handle)) {
+                               /* Write First-Created */
+                               error_code = bluetooth_otp_write_characteristics_value(otp_client_s->otp_first_created_obj_path,
+                                                                                                       value, sizeof(value));
+                       } else {
+                               /* Write Last-Modified */
+                               error_code = bluetooth_otp_write_characteristics_value(otp_client_s->otp_last_modified_obj_path,
+                                                                                                       value, sizeof(value));
+                       }
+
+                       if (error_code != BT_ERROR_NONE) {
+                               BT_ERR("Failed to write first_created / last_modified : %s(0x%08x)",
+                                               _bt_convert_error_to_string(error_code), error_code);
+                               result = error_code;
+                               goto fail;
+                       }
+               } else if (!g_strcmp0(otp_client_s->otp_last_modified_obj_path, handle)) {
+                       /* Read Object ID */
+                       int error_code;
+                       error_code = bluetooth_otp_read_characteristic_value(otp_client_s->otp_id_obj_path);
+                       if (error_code != BLUETOOTH_ERROR_NONE) {
+                               BT_INFO("Read object ID Failed %s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+                               result = error_code;
+                               goto fail;
+                       }
+               }
+       }
+       return;
+fail:
+       _bt_otp_send_callback(result, NULL, 0, 0, otp_client_s);
+}
+
+void _bt_otp_client_notification_enabled(int result, char *handle)
+{
+       bt_otp_client_s *otp_client_s = NULL;
+       char remote_address[BT_ADDR_LENGTH];
+       BT_DBG("OTP notificaton [%d] [%s]", result, handle);
+       _bt_otp_get_remote_address(handle, remote_address);
+
+       otp_client_s = _bt_otp_client_find(remote_address);
+       if (otp_client_s == NULL) {
+               BT_INFO("Client Not Found");
+               return;
+       }
+
+       if (!g_strcmp0(otp_client_s->otp_oacp_control_point, handle)) {
+               if (result != BLUETOOTH_ERROR_NONE) {
+                       otp_client_s->oacp_cccd_enabled = FALSE;
+                       BT_ERR("Failed to enable OACP notification : %s(0x%08x)",
+                                       _bt_convert_error_to_string(result), result);
+               } else {
+                       otp_client_s->oacp_cccd_enabled = TRUE;
+               }
+       } else if (!g_strcmp0(otp_client_s->otp_olcp_control_point, handle)) {
+               if (result != BLUETOOTH_ERROR_NONE) {
+                       otp_client_s->olcp_cccd_enabled = FALSE;
+                       BT_ERR("Failed to enable OLCP notification : %s(0x%08x)",
+                                       _bt_convert_error_to_string(result), result);
+               } else {
+                       otp_client_s->olcp_cccd_enabled = TRUE;
+               }
+       } else if (!g_strcmp0(otp_client_s->otp_obj_changed_obj_path, handle)) {
+               if (result != BLUETOOTH_ERROR_NONE) {
+                       otp_client_s->obj_changed_cccd_enabed = FALSE;
+                       BT_ERR("Failed to enable Object changed notification : %s(0x%08x)",
+                                       _bt_convert_error_to_string(result), result);
+               } else {
+                       otp_client_s->obj_changed_cccd_enabed = TRUE;
+               }
+       }
+}
+
+void _bt_otp_client_indication(int result, bluetooth_otp_resp_info_t *info)
+{
+       bt_otp_client_s *otp_client_s = NULL;
+       char remote_address[BT_ADDR_LENGTH];
+       int error_code;
+
+       BT_DBG("OTP indication response [%s]", info->handle);
+       _bt_otp_get_remote_address(info->handle, remote_address);
+
+       otp_client_s = _bt_otp_client_find(remote_address);
+       if (otp_client_s == NULL) {
+               BT_INFO("Client Not Found");
+               return;
+       }
+
+       if (!g_strcmp0(otp_client_s->otp_oacp_control_point, info->handle)) {
+               uint8_t resp_code = info->data[0];
+               uint8_t req_opcode = info->data[1];
+               uint8_t result_code = info->data[2];
+
+               BT_INFO("Resp_code [0x%x], Req_opcode [0x%x], result_code [0x%x]",
+                                                       resp_code, req_opcode, result_code);
+
+               if (resp_code != OACP_RESPONSE) {
+                       BT_INFO("Indication Response Failed : Wrong Response Code");
+                       result = BLUETOOTH_ERROR_INTERNAL;
+                       goto oacp_done;
+               }
+
+               if (result_code != OACP_SUCCESS) {
+                       BT_INFO("Indication Response Fail [0x%x]", result_code);
+                       result = BLUETOOTH_ERROR_INTERNAL;
+                       goto oacp_done;
+               }
+
+               switch (req_opcode) {
+               case OACP_CREATE:
+                       BT_INFO("OACP_CREATE Indication received");
+                       if ((otp_client_s->curr_op == BT_OTP_OBJECT_CREATE) && oacp_create_op) {
+                               int len;
+                               uint8_t value[BT_FILE_PATH_MAX_LEN];
+
+                               len = strlen(oacp_create_op->filename) + 1;
+                               memcpy(value, oacp_create_op->filename, len);
+
+                               error_code = bluetooth_otp_write_characteristics_value(otp_client_s->otp_name_obj_path,
+                                                                                                               value, len);
+                               if (error_code != BT_ERROR_NONE) {
+                                       BT_ERR("Failed to write object name : %s(0x%08x)",
+                                                       _bt_convert_error_to_string(error_code), error_code);
+                                       result = error_code;
+                                       goto oacp_done;
+                               }
+                       }
+                       break;
+               case OACP_DELETE:
+                       BT_INFO("OACP_DELETE Indication received");
+                       goto oacp_done;
+                       break;
+               case OACP_CALC_CHECKSUM:
+                       break;
+               case OACP_EXECUTE:
+                       BT_INFO("OACP_EXECUTE Indication received");
+                       goto oacp_done;
+                       break;
+               case OACP_READ:
+               case OACP_WRITE:
+                       BT_INFO("OACP Read/Write Indication received");
+                        bluetooth_device_address_t addr_hex = { {0,} };
+                       _bt_convert_address_to_hex(&addr_hex, otp_client_s->remote_address);
+                       if (otc_connection_status) {
+                               BT_INFO("OTC Connected already");
+                               break;
+                       }
+                       error_code = bluetooth_otp_connect_otc(&addr_hex);
+                       if (error_code != BLUETOOTH_ERROR_NONE) {
+                               BT_INFO("OTC Connection Failed %s(0x%08x)",
+                                       _bt_convert_error_to_string(error_code), error_code);
+                               result = error_code;
+                               goto oacp_done;
+                       }
+                       break;
+               case OACP_ABORT:
+                       break;
+               default:
+                       BT_INFO("Indication Failed : Wrong Req Opcode [0x%x], Reason [0x%x]",
+                                                                       req_opcode, result_code);
+                       result = BLUETOOTH_ERROR_INTERNAL;
+                       goto oacp_done;
+                       break;
+               }
+               return;
+oacp_done:
+               switch (otp_client_s->curr_op) {
+               case BT_OTP_OBJECT_READ:
+               case BT_OTP_OBJECT_CREATE:
+               case BT_OTP_OBJECT_WRITE:
+               case BT_OTP_OBJECT_EXECUTE:
+               case BT_OTP_OBJECT_DELETE:
+                       _bt_otp_send_callback(result, NULL, 0, 0, otp_client_s);
+                       break;
+               default:
+                       break;
+               }
+       } else if (!g_strcmp0(otp_client_s->otp_olcp_control_point, info->handle)) {
+               uint8_t resp_code = info->data[0];
+               uint8_t req_opcode = info->data[1];
+               uint8_t result_code = info->data[2];
+
+               /* Indication failed/timeout occured */
+               if (result != BLUETOOTH_ERROR_NONE)
+                       goto olcp_done;
+
+               BT_INFO("Resp_code [0x%x], Req_opcode [0x%x], result_code [0x%x]",
+                                                       resp_code, req_opcode, result_code);
+
+               if (resp_code != OLCP_RESPONSE) {
+                       BT_INFO("Indication Response Failed : Wrong Response Code");
+                       result = BLUETOOTH_ERROR_INTERNAL;
+                       goto olcp_done;
+               }
+
+               if (result_code != OLCP_SUCCESS) {
+                       switch (result_code) {
+                       case OLCP_NO_OBJ:
+                               BT_INFO("No Object Found on server");
+                               result = BLUETOOTH_ERROR_INTERNAL;
+                               break;
+                       case OLCP_OUT_OF_BOUNDS:
+                               /* All object discovered succesfully, notify application via callback */
+                               result = BLUETOOTH_ERROR_NONE;
+                               break;
+                       case OLCP_OJECT_ID_NOT_FOUND:
+                               BT_INFO("Object ID not found");
+                               result = BLUETOOTH_ERROR_INTERNAL;
+                               break;
+                       default:
+                               BT_INFO("Indication Response Fail [0x%x]", result_code);
+                               result = BLUETOOTH_ERROR_INTERNAL;
+                               break;
+                       }
+                       goto olcp_done;
+               }
+
+               switch (req_opcode) {
+               case OLCP_ORDER:
+               case OLCP_REQ_NO_OBJ:
+               case OLCP_CLEAR_MARKING:
+                       break;
+               case OLCP_FIRST:
+               case OLCP_LAST:
+               case OLCP_NEXT:
+               case OLCP_PREVIOUS: {
+                       /* Once we get success indication response for OLCP,
+                        * attempt to read object metadata */
+                       metadata = g_malloc0(sizeof(object_metadata));
+                       error_code = bluetooth_otp_read_characteristic_value(otp_client_s->otp_name_obj_path);
+                       if (error_code != BLUETOOTH_ERROR_NONE) {
+                               BT_INFO("Read Charc Value Failed %s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+                               result = error_code;
+                               goto olcp_done;
+                       }
+                       } break;
+               case OLCP_GOTO:
+                               /* Update the object id & notify client app*/
+                               otp_client_s->object_id = select_obj_id;
+                               select_obj_id = 0;
+                               goto olcp_done;
+                       break;
+               default:
+                       BT_INFO("Indication Response Failed : Wrong Req Opcode [0x%x], Reason [0x%x]",
+                                                                               req_opcode, result_code);
+                       result = BLUETOOTH_ERROR_INTERNAL;
+                       goto olcp_done;
+                       break;
+               }
+               return;
+olcp_done:
+               switch (otp_client_s->curr_op) {
+               case BT_OTP_OBJECT_DISCOVERY:
+               case BT_OTP_OBJECT_SELECT:
+                       _bt_otp_send_callback(result, NULL, 0, 0, otp_client_s);
+                       break;
+               default:
+                       break;
+               }
+       } else if (!g_strcmp0(otp_client_s->otp_obj_changed_obj_path, info->handle)) {
+               BT_INFO("Indication Received for Object Changed Characteristic");
+               uint8_t flag = info->data[0];
+               uint64_t id = 0;
+               BT_INFO("Source of change : %s", BT_OTP_OBJ_CHANGED_SRC(flag) ? "Client" : "Server");
+               BT_INFO("Change occurred to obj contents : %s", BT_OTP_OBJ_CHANGED_CONTENT(flag) ? "True" : "False");
+               BT_INFO("Change occurred to obj metadata : %s", BT_OTP_OBJ_CHANGED_META(flag) ? "True" : "False");
+               BT_INFO("Object creation : %s", BT_OTP_OBJ_CHANGED_CREATE(flag) ? "True" : "False");
+               BT_INFO("Object Deletion : %s", BT_OTP_OBJ_CHANGED_DELETE(flag) ? "True" : "False");
+
+               id = (uint64_t)(info->data[6] & 0xFF) << 40 |
+                               (uint64_t)(info->data[5] & 0xFF) << 32 |
+                               (uint64_t)(info->data[4] & 0xFF) << 24 |
+                               (uint64_t)(info->data[3] & 0xFF) << 16 |
+                               (uint64_t)(info->data[2] & 0xFF) << 8  |
+                               (uint64_t)(info->data[1] & 0xFF);
+               BT_INFO("Changed occurred to object id %u", id);
+       }
+}
+
+void __bt_otp_reset_api_info(bt_otp_client_s *otp_client_s)
+{
+       otp_client_s->curr_op = BT_OTP_NO_OPERATION;
+       otp_client_s->callback = NULL;
+       otp_client_s->user_data = NULL;
+}
+
+int bt_otp_client_discover_all_objects(bt_otp_client_h otp_client,
+                               bt_otp_client_object_discovery_cb callback,
+                               void *user_data)
+{
+       int error_code = BLUETOOTH_ERROR_NONE;
+       bt_otp_client_s *otp_client_s = (bt_otp_client_s *)otp_client;
+
+       BT_CHECK_LE_SUPPORT();
+       BT_CHECK_OTP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(otp_client_s);
+
+       if (_bt_otp_client_find(otp_client_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (otp_client_s->connected == false) {
+               BT_ERR("Remote device [%s] is not conencted", otp_client_s->remote_address);
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       if (otp_client_s->curr_op != BT_OTP_NO_OPERATION) {
+               BT_DBG("OTP client is busy");
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       BT_DBG("OTP client Discover objects from Remote device [%s]", otp_client_s->remote_address);
+       otp_client_s->curr_op = BT_OTP_OBJECT_DISCOVERY;
+       otp_client_s->callback = callback;
+       otp_client_s->user_data = user_data;
+
+       _bt_otp_client_free_object_list(otp_client_s);
+
+       if (!otp_client_s->otp_olcp_control_point) {
+               /* Remote server supports only single object */
+               otp_client_s->multiple_obj_supp = TRUE;
+               metadata = g_malloc0(sizeof(object_metadata));
+               error_code = bluetooth_otp_read_characteristic_value(otp_client_s->otp_name_obj_path);
+               if (error_code != BLUETOOTH_ERROR_NONE) {
+                       BT_INFO("Read Charc Value Failed %s(0x%08x)",
+                                               _bt_convert_error_to_string(error_code), error_code);
+                       error_code = BT_ERROR_OPERATION_FAILED;
+                       __bt_otp_reset_api_info(otp_client_s);
+               }
+       } else {
+               /* Remote server supports multiple objects.
+                * Perform OLCP to discover all objects.
+                */
+               uint8_t value[7] = {0x00};
+               value[0] = OLCP_FIRST;
+               error_code = bluetooth_otp_write_characteristics_value(otp_client_s->otp_olcp_control_point, value, 1);
+               if (error_code != BT_ERROR_NONE) {
+                       BT_ERR("Failed to write control point : %s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+                       __bt_otp_reset_api_info(otp_client_s);
+               }
+       }
+
+       return error_code;
+}
+
+static void _bt_otp_client_send_select_object_callback(int result,
+                               bt_otp_client_s *otp_client_s)
+{
+       ((bt_otp_client_object_select_cb)otp_client_s->callback)(
+                               result, otp_client_s->remote_address,
+                               otp_client_s->object_id, otp_client_s->user_data);
+}
+
+int bt_otp_client_select_object(bt_otp_client_h otp_client, unsigned long long id,
+                               bt_otp_client_object_select_cb callback, void *user_data)
+{
+       int error_code;
+       bt_otp_client_s *otp_client_s = (bt_otp_client_s *)otp_client;
+
+       BT_CHECK_LE_SUPPORT();
+       BT_CHECK_OTP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(otp_client_s);
+
+       if (_bt_otp_client_find(otp_client_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (otp_client_s->connected == false) {
+               BT_ERR("Remote device [%s] is not conencted", otp_client_s->remote_address);
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       if (otp_client_s->object_id == id) {
+               BT_INFO("Object already selected");
+               _bt_otp_client_send_select_object_callback(BLUETOOTH_ERROR_NONE, otp_client_s);
+               return BLUETOOTH_ERROR_NONE;
+       }
+       if (otp_client_s->curr_op != BT_OTP_NO_OPERATION) {
+               BT_DBG("OTP client is busy");
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       if (~BT_OTP_IS_OLCP_GOTO_SUPPORTED(otp_client_s->otp_feature)) {
+               BT_INFO("OLCP GOTO not supported");
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       BT_DBG("OTP client select object [%llu] from Remote device [%s]", id, otp_client_s->remote_address);
+       otp_client_s->curr_op = BT_OTP_OBJECT_SELECT;
+       otp_client_s->callback = callback;
+       otp_client_s->user_data = user_data;
+
+       select_obj_id = id;
+
+       uint8_t value[7] = {0x00};
+       value[0] = OLCP_GOTO;
+       value[1] = select_obj_id & 0xFF;
+       value[2] = (select_obj_id >> 8) & 0xFF;
+       value[3] = (select_obj_id >> 16) & 0xFF;
+       value[4] = (select_obj_id >> 24) & 0xFF;
+       value[5] = (select_obj_id >> 32) & 0xFF;
+       value[6] = (select_obj_id >> 40) & 0xFF;
+
+       error_code = bluetooth_otp_write_characteristics_value(otp_client_s->otp_olcp_control_point,
+                                                                                               value, 7);
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("Failed to write control point : %s(0x%08x)",
+                               _bt_convert_error_to_string(error_code), error_code);
+               __bt_otp_reset_api_info(otp_client_s);
+       }
+
+       return error_code;
+}
+
+static bool __bt_otc_connection_timeout_cb(gpointer user_data)
+{
+       bluetooth_otc_info_t *otc_info = (bluetooth_otc_info_t *)user_data;
+       char *address = otc_info->address;
+       bluetooth_device_address_t addr_hex = { {0,} };
+
+       /* TODO: Write OACP Abort opcode, then disconnect */
+
+       BT_DBG("OTC Connection timer Expired [%s]", address);
+       _bt_convert_address_to_hex(&addr_hex, address);
+       bluetooth_otp_disconnect_otc(&addr_hex);
+
+       return TRUE;
+}
+
+static gboolean __client_data_received_cb(GIOChannel *chan, GIOCondition cond,
+                                                               gpointer data)
+{
+       bluetooth_otc_info_t *otc_info = (bluetooth_otc_info_t *)data;
+       char *remote_addr = otc_info->address;
+       GIOStatus status = G_IO_STATUS_NORMAL;
+       GError *err = NULL;
+       char *buffer = NULL;
+       gsize len = 0;
+       int written;
+       int fd;
+
+       BT_DBG("");
+
+       fd = g_io_channel_unix_get_fd(chan);
+       if (cond & (G_IO_NVAL | G_IO_HUP | G_IO_ERR)) {
+               otc_connection_status = FALSE;
+               BT_ERR("OTC Client disconnected: %d", fd);
+               close(fd);
+               g_source_remove(id);
+               return FALSE;
+       }
+
+       buffer = g_malloc0(BT_L2CAP_BUFFER_LEN + 1);
+
+       status = g_io_channel_read_chars(chan, buffer,
+                                       BT_L2CAP_BUFFER_LEN,
+                                       &len, &err);
+       if (status != G_IO_STATUS_NORMAL) {
+               BT_ERR("IO Channel read is failed with %d", status);
+
+               g_free(buffer);
+               if (err) {
+                       otc_connection_status = FALSE;
+                       BT_ERR("IO Channel read error [%s]", err->message);
+                       if (status == G_IO_STATUS_ERROR) {
+                               BT_ERR("cond : %d", cond);
+                               g_error_free(err);
+                               close(fd);
+                               g_source_remove(id);
+                               return FALSE;
+                       }
+                       g_error_free(err);
+               }
+               return TRUE;
+       }
+
+       BT_DBG("Received data length %d, remote_addr = %s", len, remote_addr);
+
+       if (!oacp_read_op) {
+               char file_path[BT_FILE_PATH_MAX_LEN] = {0, };
+               bt_otp_client_s *otp_client_s = NULL;
+               object_metadata *object_info = NULL;
+               uint64_t obj_id;
+               FILE *fp = NULL;
+               char err_msg[256] = {0, };
+
+               otp_client_s = _bt_otp_client_find(remote_addr);
+               if (otp_client_s == NULL) {
+                       BT_INFO("Client Not Found");
+                       goto fail;
+               }
+
+               obj_id = otp_client_s->object_id;
+
+               object_info = _bt_otp_client_find_object(otp_client_s->object_list, obj_id);
+               if (!object_info) {
+                       BT_INFO("Object Not Found [%llu]", obj_id);
+                       goto fail;
+               }
+
+               snprintf(file_path, sizeof(file_path), "%s%s",
+                                               BT_OTP_CLIENT_BASE_DIR, object_info->name);
+               BT_DBG("file_path = [%s]", file_path);
+
+               fp = fopen(file_path, "w");
+               if (!fp) {
+                       strerror_r(errno, err_msg, sizeof(err_msg));
+                       BT_ERR("fopen() failed : %s", err_msg);
+                       goto fail;
+               }
+
+               oacp_read_op = g_malloc0(sizeof(bt_otp_client_read_op));
+               oacp_read_op->offset = 0;
+               oacp_read_op->length = 0;
+               oacp_read_op->fp = fp;
+               oacp_read_op->size = object_info->curr_size;
+               oacp_read_op->file_path = g_strdup(file_path);
+       }
+
+       if (oacp_read_op->length <= oacp_read_op->size) {
+               written = fwrite(buffer, 1, len, oacp_read_op->fp);
+               oacp_read_op->length += written;
+               BT_DBG("written [%d], length_sofar [%lu], received_buff_len [%d], size [%lu]",
+                                       written, oacp_read_op->length, len, oacp_read_op->size);
+       }
+
+       if (timeout_id > 0) {
+               g_source_remove(timeout_id);
+               timeout_id = g_timeout_add(BT_OTC_CONNECTION_MAX_TIMEOUT,
+                       (GSourceFunc)__bt_otc_connection_timeout_cb, (gpointer)otc_info);
+       }
+fail:
+       g_free(buffer);
+       return TRUE;
+}
+
+static void _bt_otp_client_notify_read_object_status(int result,
+                       char *file_path, bt_otp_client_s *otp_client_s)
+{
+
+       ((bt_otp_client_read_object_complete_cb)otp_client_s->callback)(
+                               result, otp_client_s->remote_address,
+                               file_path, otp_client_s->user_data);
+}
+
+static void _bt_otp_client_write_on_fd(bluetooth_otc_info_t *otc_info)
+{
+       char buf[BT_L2CAP_BUFFER_LEN];
+       int written, read, len;
+       FILE *fp = NULL;
+       int length;
+       unsigned int byteswritten = 0;
+       int fd = otc_info->fd;
+       char *address = otc_info->address;
+       int result = BLUETOOTH_ERROR_NONE;
+       bt_otp_client_s *otp_client_s = NULL;
+       bluetooth_device_address_t addr_hex = { {0,} };
+       struct tm fc_tm;
+       uint8_t value[7];
+       char err_msg[256] = {0, };
+
+       if (!oacp_write_op) {
+               result = BLUETOOTH_ERROR_INTERNAL;
+               goto fail;
+       }
+
+       BT_DBG("file_path = [%s]", oacp_write_op->file_path);
+
+       fp = fopen(oacp_write_op->file_path, "r");
+       if (!fp) {
+               strerror_r(errno, err_msg, sizeof(err_msg));
+               BT_ERR("fopen() failed : %s", err_msg);
+               result = BLUETOOTH_ERROR_INTERNAL;
+               goto fail;
+       }
+
+       if (oacp_write_op->offset > 0)
+               fseek(fp, oacp_write_op->offset, SEEK_SET);
+
+       BT_DBG("length [%d]", oacp_write_op->length);
+       length = oacp_write_op->length;
+
+       while (length > 0) {
+               if (length < BT_L2CAP_BUFFER_LEN)
+                       len = length;
+               else
+                       len = BT_L2CAP_BUFFER_LEN;
+
+               read = fread(buf, 1, len, fp);
+               written = write(fd, buf, len);
+
+               if (written < 0) {
+                       result = BLUETOOTH_ERROR_INTERNAL;
+                       goto fail;
+               }
+
+               length -= written;
+               byteswritten += written;
+
+               BT_DBG("read [%d], written [%d], rem_len [%d]",
+                                               read, written, length);
+       }
+
+fail:
+       if (fp)
+               fclose(fp);
+
+       /* Disconnect and notify application */
+       _bt_convert_address_to_hex(&addr_hex, address);
+       bluetooth_otp_disconnect_otc(&addr_hex);
+
+       otp_client_s = _bt_otp_client_find(address);
+       if (otp_client_s == NULL) {
+               BT_INFO("Client Not Found");
+               return;
+       }
+
+       if (result == BLUETOOTH_ERROR_NONE) {
+               /* Write Last-modified */
+               memset(value, 0, 7);
+               localtime_r(&(oacp_write_op->last_modified), &fc_tm);
+
+               value[1] = ((fc_tm.tm_year+1900) >> 8) & 0xFF;
+               value[0] = (fc_tm.tm_year+1900) & 0xFF;
+               value[2] = (fc_tm.tm_mon+1) & 0xFF;
+               value[3] = fc_tm.tm_mday & 0xFF;
+               value[4] = fc_tm.tm_hour & 0xFF;
+               value[5] = fc_tm.tm_min & 0xFF;
+               value[6] = fc_tm.tm_sec & 0xFF;
+               result = bluetooth_otp_write_characteristics_value(otp_client_s->otp_last_modified_obj_path,
+                                                                                                       value, 7);
+       }
+
+       _bt_otp_client_send_write_object_callback(result,
+                               byteswritten, otp_client_s);
+       __bt_otp_reset_api_info(otp_client_s);
+}
+
+void _bt_otc_connection_state_changed(int result, bluetooth_otc_info_t *otc_info)
+{
+       GIOChannel *data_io;
+       char file_path[BT_FILE_PATH_MAX_LEN];
+       bt_otp_client_s *otp_client_s = NULL;
+
+       BT_DBG("OTC Channel status [%d], fd [%d]", otc_info->connected, otc_info->fd);
+
+       otp_client_s = _bt_otp_client_find(otc_info->address);
+       if (otp_client_s == NULL) {
+               BT_INFO("Client Not Found");
+               return;
+       }
+
+       if (oacp_read_op) {
+               if (!otc_info->connected)
+                       memcpy(file_path, oacp_read_op->file_path,
+                                               strlen(oacp_read_op->file_path) + 1);
+               /*
+                * Remove request in both connected/disconnected case.
+                * So that new request can proceed.
+                */
+               fclose(oacp_read_op->fp);
+               g_free(oacp_read_op->file_path);
+               g_free(oacp_read_op);
+               oacp_read_op = NULL;
+       }
+
+       if (otc_info->connected) {
+               BT_DBG("OTC Connected");
+               otc_connection_status = TRUE;
+
+               data_io = g_io_channel_unix_new(otc_info->fd);
+
+               g_io_channel_set_encoding(data_io, NULL, NULL);
+               g_io_channel_set_flags(data_io, G_IO_FLAG_NONBLOCK, NULL);
+
+               if (otp_client_s->curr_op == BT_OTP_OBJECT_WRITE) {
+                       _bt_otp_client_write_on_fd(otc_info);
+               } else if (otp_client_s->curr_op == BT_OTP_OBJECT_READ) {
+                       id = g_io_add_watch(data_io,
+                               G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
+                               __client_data_received_cb, (gpointer)otc_info);
+
+                       timeout_id = g_timeout_add(BT_OTC_CONNECTION_MAX_TIMEOUT,
+                               (GSourceFunc)__bt_otc_connection_timeout_cb, (gpointer)otc_info);
+               }
+       } else {
+               BT_DBG("OTC Disconnected");
+               otc_connection_status = FALSE;
+               if (timeout_id > 0) {
+                       g_source_remove(timeout_id);
+                       timeout_id = 0;
+               }
+
+               if (otp_client_s && (otp_client_s->curr_op == BT_OTP_OBJECT_READ)) {
+                       _bt_otp_client_notify_read_object_status(BLUETOOTH_ERROR_NONE,
+                                                               file_path, otp_client_s);
+                       __bt_otp_reset_api_info(otp_client_s);
+               }
+       }
+}
+
+object_metadata *_bt_otp_client_find_object(GSList *list, uint64_t id)
+{
+       GSList *l;
+       object_metadata *info;
+
+       for (l = list; l; l = g_slist_next(l)) {
+               info = l->data;
+
+               if (info && (info->id == id))
+                       return info;
+       }
+       return NULL;
+}
+
+int bt_otp_client_read_object_contents(bt_otp_client_h otp_client,
+                                       bt_otp_client_read_object_complete_cb callback,
+                                       void *user_data)
+{
+       bt_otp_client_s *otp_client_s = (bt_otp_client_s *)otp_client;
+       object_metadata *object_info = NULL;
+       uint64_t obj_id;
+       int error_code;
+
+       BT_CHECK_LE_SUPPORT();
+       BT_CHECK_OTP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(otp_client_s);
+
+       if (_bt_otp_client_find(otp_client_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (otp_client_s->connected == false) {
+               BT_ERR("Remote device [%s] is not conencted", otp_client_s->remote_address);
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       obj_id = otp_client_s->object_id;
+
+       BT_DBG("OTP client Read objects Contents from Remote device [%s] for Object [%llu]",
+                                                               otp_client_s->remote_address, obj_id);
+
+       object_info = _bt_otp_client_find_object(otp_client_s->object_list, obj_id);
+       if (!object_info) {
+               BT_INFO("Object Not Found [%llu]", obj_id);
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       if (~BT_OTP_IS_OACP_READ_SUPPORTED(otp_client_s->otp_feature)) {
+               BT_INFO("OACP Read not supported");
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       if (~BT_OTP_IS_READ_PERMITTED(object_info->props)) {
+               BT_INFO("Read not permitted");
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       if (otp_client_s->curr_op != BT_OTP_NO_OPERATION) {
+               BT_DBG("OTP Client is busy");
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       otp_client_s->callback = callback;
+       otp_client_s->user_data = user_data;
+       otp_client_s->curr_op = BT_OTP_OBJECT_READ;
+
+       uint32_t offset = 0;
+       uint32_t length = object_info->curr_size;
+
+       BT_INFO("Object ID [%llu],Offset [%lu], Length [%lu], curr_size [%lu]",
+                               obj_id, offset, length, object_info->curr_size);
+       uint8_t value[9] = {0x00};
+
+       value[0] = OACP_READ;
+       value[1] = (offset) & 0xFF;
+       value[2] = (offset >> 8) & 0xFF;
+       value[3] = (offset >> 16) & 0xFF;
+       value[4] = (offset >> 24) & 0xFF;
+       value[5] = (length) & 0xFF;
+       value[6] = (length >> 8) & 0xFF;
+       value[7] = (length >> 16) & 0xFF;
+       value[8] = (length >> 24) & 0xFF;
+
+       error_code = bluetooth_otp_write_characteristics_value(otp_client_s->otp_oacp_control_point,
+                                                                                               value, 9);
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("Failed to write control point : %s(0x%08x)",
+                               _bt_convert_error_to_string(error_code), error_code);
+               __bt_otp_reset_api_info(otp_client_s);
+       }
+
+       return error_code;
+}
+
+static void _bt_otp_client_send_create_object_callback(int result,
+                               uint64_t id, bt_otp_client_s *otp_client_s)
+{
+
+       ((bt_otp_client_object_create_cb)otp_client_s->callback)(
+                               result, otp_client_s->remote_address,
+                               id, otp_client_s->user_data);
+
+       if (oacp_create_op) {
+               g_free(oacp_create_op->filename);
+               g_free(oacp_create_op->type_uuid);
+               g_free(oacp_create_op);
+               oacp_create_op = NULL;
+       }
+}
+
+int _bt_otp_uuid_convert_string_to_hex(char *uuid, char *value)
+{
+       int len, uuid_len;
+       uint32_t data0, data4;
+       uint16_t data1, data2, data3, data5;
+
+       if (!uuid) {
+               BT_ERR("Object Type UUID NULL");
+               return 0;
+       }
+
+       len = strlen(uuid);
+
+       switch (len) {
+       case 4:
+               /* UUID 16bits */
+               sscanf(uuid, "%04hx", &data1);
+               data1 = htons(data1);
+               memcpy(value, &data1, 2);
+               uuid_len = 2;
+               break;
+
+       case 8:
+               /* UUID 32bits */
+               sscanf(uuid, "%08x", &data0);
+               data0 = htonl(data0);
+               memcpy(value, &data0, 4);
+               uuid_len = 4;
+               break;
+
+       case 36:
+               /* UUID 128bits */
+               sscanf(uuid, "%08x-%04hx-%04hx-%04hx-%08x%04hx",
+                       &data0, &data1, &data2,
+                       &data3, &data4, &data5);
+
+               data0 = htonl(data0);
+               data1 = htons(data1);
+               data2 = htons(data2);
+               data3 = htons(data3);
+               data4 = htonl(data4);
+               data5 = htons(data5);
+
+               memcpy(value, &data0, 4);
+               memcpy(value+4, &data1, 2);
+               memcpy(value+6, &data2, 2);
+               memcpy(value+8, &data3, 2);
+               memcpy(value+10, &data4, 4);
+               memcpy(value+14, &data5, 2);
+               uuid_len = 16;
+               break;
+
+       default:
+               uuid_len = 0;
+       }
+
+       return uuid_len;
+}
+
+int bt_otp_client_create_object(bt_otp_client_h otp_client,
+                                       const char *file_path,
+                                       bt_otp_client_object_create_cb callback,
+                                       void *user_data)
+{
+       int error_code;
+       bt_otp_client_s *otp_client_s = (bt_otp_client_s *)otp_client;
+       struct stat st;
+       uint32_t size;
+       char *file_name, *last_token;
+       time_t curr_time;
+       char *type_uuid;
+       char err_msg[256] = {0, };
+
+       BT_CHECK_LE_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(otp_client_s);
+
+       if (_bt_otp_client_find(otp_client_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (otp_client_s->connected == false) {
+               BT_ERR("Remote device [%s] is not conencted", otp_client_s->remote_address);
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       if (otp_client_s->curr_op != BT_OTP_NO_OPERATION) {
+               BT_DBG("OTP Client is busy");
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       if (~BT_OTP_IS_OACP_CREATE_SUPPORTED(otp_client_s->otp_feature)) {
+               BT_INFO("OACP Create not supported");
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       BT_DBG("OTP client create object [%s] in Remote device [%s]",
+                               file_path, otp_client_s->remote_address);
+
+       /* Get file_name & size from file_path */
+       if (stat(file_path, &st) == -1) {
+               strerror_r(errno, err_msg, sizeof(err_msg));
+               BT_INFO("stat failed: %s (%d)\n", err_msg, errno);
+               return BLUETOOTH_ERROR_INTERNAL;
+       }
+
+       otp_client_s->callback = callback;
+       otp_client_s->user_data = user_data;
+       otp_client_s->curr_op = BT_OTP_OBJECT_CREATE;
+
+       size = (uint32_t)st.st_size;
+       last_token = strrchr(file_path, '/');
+       file_name = last_token + 1;
+
+       BT_INFO("Filepath [%s], Filename [%s], Size[%u]\n",
+                                       file_path, file_name, size);
+
+       oacp_create_op = g_malloc0(sizeof(bt_otp_client_create_op));
+       oacp_create_op->size = size;
+       oacp_create_op->filename = g_strdup(file_name);
+
+       time(&curr_time);
+       oacp_create_op->first_created = curr_time;
+
+       /* There isn't clear description for Object Type in spec */
+       type_uuid = g_strdup(UNSUPPORTED_OBJECT_TYPE_UUID);
+       oacp_create_op->type_uuid = g_strdup(type_uuid);
+
+       /* UUIDs can be 128/64/16 bits */
+       uint8_t value[40] = {0x00};
+       int len;
+
+       value[0] = OACP_CREATE;
+       len = 1;
+       len += _bt_otp_uuid_convert_string_to_hex(type_uuid, (char *)value + 1);
+       value[++len] = size & 0xFF;
+       value[++len] = (size >> 8) & 0xFF;
+       value[++len] = (size >> 16) & 0xFF;
+       value[++len] = (size >> 24) & 0xFF;
+
+       error_code = bluetooth_otp_write_characteristics_value(otp_client_s->otp_oacp_control_point,
+                                                                       value, len);
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("Failed to write control point : %s(0x%08x)",
+                       _bt_convert_error_to_string(error_code), error_code);
+               __bt_otp_reset_api_info(otp_client_s);
+       }
+       g_free(type_uuid);
+       return error_code;
+}
+
+static void _bt_otp_client_send_write_object_callback(int result,
+               unsigned int length, bt_otp_client_s *otp_client_s)
+{
+       ((bt_otp_client_object_write_cb)otp_client_s->callback)(
+                               result, otp_client_s->remote_address,
+                               length, otp_client_s->user_data);
+
+       if (oacp_write_op) {
+               g_free(oacp_write_op->file_path);
+               g_free(oacp_write_op);
+               oacp_write_op = NULL;
+       }
+}
+
+int bt_otp_client_write_object(bt_otp_client_h otp_client,
+                                       const char *file_path,
+                                       int offset, int length, int mode,
+                                       bt_otp_client_object_write_cb callback,
+                                       void *user_data)
+{
+       int error_code;
+       bt_otp_client_s *otp_client_s = (bt_otp_client_s *)otp_client;
+       object_metadata *object_info = NULL;
+       struct stat st;
+       uint32_t size;
+       time_t curr_time;
+       char err_msg[256] = {0, };
+
+       BT_CHECK_LE_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(otp_client_s);
+       BT_CHECK_INPUT_PARAMETER(file_path);
+
+       if (_bt_otp_client_find(otp_client_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (otp_client_s->connected == false) {
+               BT_ERR("Remote device [%s] is not conencted", otp_client_s->remote_address);
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       if (otp_client_s->curr_op != BT_OTP_NO_OPERATION) {
+               BT_DBG("OTP Client is busy");
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       if (~BT_OTP_IS_OACP_WRITE_SUPPORTED(otp_client_s->otp_feature)) {
+               BT_INFO("OACP Write not supported");
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       object_info = _bt_otp_client_find_object(otp_client_s->object_list,
+                                                       otp_client_s->object_id);
+       if (!object_info) {
+               BT_INFO("Object Not Found [%llu]", otp_client_s->object_id);
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       if (~BT_OTP_IS_WRITE_PERMITTED(object_info->props)) {
+               BT_INFO("Write not permitted");
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       BT_DBG("OTP client wirte object [%s] in Remote device [%s]",
+                                               file_path, otp_client_s->remote_address);
+
+       /* Get file_name & size from file_path */
+       if (stat(file_path, &st) == -1) {
+               strerror_r(errno, err_msg, sizeof(err_msg));
+               BT_INFO("stat failed: %s (%d)\n", err_msg, errno);
+               return BLUETOOTH_ERROR_INTERNAL;
+       }
+
+       size = (uint32_t)st.st_size;
+
+       BT_INFO("Filepath [%s], Size[%llu]",
+                                                       file_path, size);
+       BT_INFO("offset[%llu], length[%llu], mode[%u]",
+                                                               offset, length, mode);
+
+       oacp_write_op = g_malloc0(sizeof(bt_otp_client_write_op));
+       oacp_write_op->size = size;
+       oacp_write_op->file_path = g_strdup(file_path);
+       oacp_write_op->offset = offset;
+       oacp_write_op->length = length;
+       oacp_write_op->mode = mode;
+
+       time(&curr_time);
+       oacp_write_op->last_modified = curr_time;
+
+       if (offset < 0 && (offset > size || (length - offset) > size)) {
+               /* Invalid param */
+               return BLUETOOTH_ERROR_INTERNAL;
+       }
+
+       otp_client_s->callback = callback;
+       otp_client_s->user_data = user_data;
+       otp_client_s->curr_op = BT_OTP_OBJECT_WRITE;
+
+       uint8_t value[10] = {0x00};
+       value[0] = OACP_WRITE;
+       value[1] = offset & 0xFF;
+       value[2] = (offset >> 8) & 0xFF;
+       value[3] = (offset >> 16) & 0xFF;
+       value[4] = (offset >> 24) & 0xFF;
+       value[5] = length & 0xFF;
+       value[6] = (length >> 8) & 0xFF;
+       value[7] = (length >> 16) & 0xFF;
+       value[8] = (length >> 24) & 0xFF;
+       value[9] = mode & 0xFF;
+
+       error_code = bluetooth_otp_write_characteristics_value(otp_client_s->otp_oacp_control_point,
+                                                                                               value, 10);
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("Failed to write control point : %s(0x%08x)",
+                       _bt_convert_error_to_string(error_code), error_code);
+               __bt_otp_reset_api_info(otp_client_s);
+       }
+
+       return error_code;
+}
+
+static void _bt_otp_client_send_execute_object_callback(int result,
+                                       bt_otp_client_s *otp_client_s)
+{
+       ((bt_otp_client_object_execute_cb)otp_client_s->callback)(
+                               result, otp_client_s->remote_address,
+                               otp_client_s->object_id, otp_client_s->user_data);
+}
+
+int bt_otp_client_execute_object(bt_otp_client_h otp_client,
+                                                       bt_otp_client_object_execute_cb callback,
+                                                       void *user_data)
+{
+       int error_code;
+       bt_otp_client_s *otp_client_s = (bt_otp_client_s *)otp_client;
+       object_metadata *object_info = NULL;
+
+       BT_CHECK_LE_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(otp_client_s);
+
+       if (_bt_otp_client_find(otp_client_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (otp_client_s->connected == false) {
+               BT_ERR("Remote device [%s] is not conencted", otp_client_s->remote_address);
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       if (otp_client_s->curr_op != BT_OTP_NO_OPERATION) {
+               BT_DBG("OTP Client is busy");
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       if (~BT_OTP_IS_OACP_EXECUTE_SUPPORTED(otp_client_s->otp_feature)) {
+               BT_INFO("OACP Execute not supported");
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       object_info = _bt_otp_client_find_object(otp_client_s->object_list,
+                                                       otp_client_s->object_id);
+       if (!object_info) {
+               BT_INFO("Object Not Found [%llu]", otp_client_s->object_id);
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       if (~BT_OTP_IS_EXECUTE_PERMITTED(object_info->props)) {
+               BT_INFO("Execute not permitted");
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       BT_DBG("OTP client execute object [%llu] in Remote device [%s]",
+                               otp_client_s->object_id, otp_client_s->remote_address);
+
+       otp_client_s->callback = callback;
+       otp_client_s->user_data = user_data;
+       otp_client_s->curr_op = BT_OTP_OBJECT_EXECUTE;
+
+       uint8_t value[1];
+       value[0] = OACP_EXECUTE;
+
+       error_code = bluetooth_otp_write_characteristics_value(otp_client_s->otp_oacp_control_point,
+                                                                                               value, 1);
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("Failed to write control point : %s(0x%08x)",
+                       _bt_convert_error_to_string(error_code), error_code);
+               __bt_otp_reset_api_info(otp_client_s);
+       }
+
+       return error_code;
+}
+
+static void _bt_otp_client_send_delete_object_callback(int result,
+                                       bt_otp_client_s *otp_client_s)
+{
+       ((bt_otp_client_object_delete_cb)otp_client_s->callback)(
+                               result, otp_client_s->remote_address,
+                               otp_client_s->object_id, otp_client_s->user_data);
+
+       if (result == BLUETOOTH_ERROR_NONE)
+               otp_client_s->object_id = 0;
+}
+
+int bt_otp_client_delete_object(bt_otp_client_h otp_client,
+                                                       bt_otp_client_object_delete_cb callback,
+                                                       void *user_data)
+{
+       int error_code;
+       bt_otp_client_s *otp_client_s = (bt_otp_client_s *)otp_client;
+       object_metadata *object_info = NULL;
+
+       BT_CHECK_LE_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(otp_client_s);
+
+       if (_bt_otp_client_find(otp_client_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (otp_client_s->connected == false) {
+               BT_ERR("Remote device [%s] is not conencted", otp_client_s->remote_address);
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       if (otp_client_s->curr_op != BT_OTP_NO_OPERATION) {
+               BT_DBG("OTP Client is busy");
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       if (~BT_OTP_IS_OACP_DELETE_SUPPORTED(otp_client_s->otp_feature)) {
+               BT_INFO("OACP Delete not supported");
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       object_info = _bt_otp_client_find_object(otp_client_s->object_list,
+                                                       otp_client_s->object_id);
+       if (!object_info) {
+               BT_INFO("Object Not Found [%llu]", otp_client_s->object_id);
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       if (~BT_OTP_IS_DELETE_PERMITTED(object_info->props)) {
+               BT_INFO("Delete not permitted");
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       BT_DBG("OTP client delete object [%llu] in Remote device [%s]",
+                               otp_client_s->object_id, otp_client_s->remote_address);
+
+       otp_client_s->callback = callback;
+       otp_client_s->user_data = user_data;
+       otp_client_s->curr_op = BT_OTP_OBJECT_DELETE;
+
+       uint8_t value[1];
+       value[0] = OACP_DELETE;
+
+       error_code = bluetooth_otp_write_characteristics_value(otp_client_s->otp_oacp_control_point,
+                                                                                               value, 1);
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("Failed to write control point : %s(0x%08x)",
+                       _bt_convert_error_to_string(error_code), error_code);
+               __bt_otp_reset_api_info(otp_client_s);
+       }
+
+       return error_code;
+}
index 716f4597851c6aa4bf21997499e98bf8f3a2f9e6..d6b5af150a70f1261745f309f7d9ed3c55dc2a1c 100644 (file)
@@ -30,7 +30,7 @@
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON); \
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_PBAP_CLIENT); \
 }
-
+/* LCOV_EXCL_START */
 int bt_pbap_client_initialize(void)
 {
        BT_CHECK_PBAP_CLIENT_SUPPORT();
@@ -308,3 +308,4 @@ int bt_pbap_client_search_phone_book(const char *address,
 
        return error_code;
 }
+/* LCOV_EXCL_STOP */
index 713e2d92a029c23ef543c6f028c88e1e293fd51a..6ca39901c4c0c5136e0251bc0ecdecb395c219b6 100644 (file)
 #include "bluetooth_internal.h"
 #include "bluetooth_private.h"
 
-static int role_registered = -1;
+typedef struct {
+       bt_gatt_h linkloss_service;
+       bt_gatt_h immediate_service;
+} bt_proximity_service_info_t;
+
+typedef struct {
+       bt_proximity_service_info_t services;
+} bt_proximity_reporter_server_s;
+
+typedef struct {
+       bt_proximity_reporter_server_s reporter_server;
+       int services_supported;
+       bool connected;
+
+       const void *connection_callback;
+       void *user_data;
+} bt_proximity_reporter_s;
+
+typedef struct {
+       GSList *services;
+       char *remote_address;
+       bool services_discovered;
+       bool connected;
+
+       const void *connection_callback;
+       void *user_data;
+} bt_proximity_monitor_s;
+
+GSList *proximity_monitor_list;
+
+static bool pxp_monitor_initialized = false;
+static bool pxp_reporter_initialized = false;
+static int pxp_monitor_supported_services = false;
+static bt_proximity_reporter_s *reporter_s = NULL;
+
+#define BT_CHECK_GATT_PXP_SUPPORT() \
+{ \
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON); \
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_LE); \
+}
 
-int bt_proximity_register(bt_proximity_role_t role, bt_proximity_property_changed_cb callback, void *user_data)
+int bt_proximity_reporter_create(bt_proximity_reporter_h *reporter)
 {
        int error_code = BT_ERROR_NONE;
 
-       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
+       BT_CHECK_GATT_PXP_SUPPORT();
        BT_CHECK_INIT_STATUS();
-       BT_CHECK_INPUT_PARAMETER(callback); /* LCOV_EXCL_LINE */
 
-       if (role == BT_PROXIMITY_REPORTER) {
-               /* register Reporter Role Here */
-               error_code = _bt_get_error_code(bluetooth_register_proximity_reporter());
-               if (error_code != BT_ERROR_NONE)
-                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+       if (reporter_s != NULL)
+               return BT_ERROR_ALREADY_DONE;
+
+       /* register Reporter Role Here */
+       error_code = _bt_get_error_code(bluetooth_proximity_reporter_register());
+       if (error_code != BT_ERROR_NONE)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+       else
+               pxp_reporter_initialized = true;
+
+       reporter_s = g_malloc0(sizeof(*reporter_s));
+       if (reporter_s == NULL) {
+               error_code = BT_ERROR_OUT_OF_MEMORY;
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+               return error_code;
        }
-       role_registered = role;
+       *reporter = (bt_proximity_reporter_s *)reporter_s;
+       error_code = bt_gatt_service_create(PXP_LINK_LOSS_SVC_UUID, BT_GATT_SERVICE_TYPE_PRIMARY,
+                                  &reporter_s->reporter_server.services.linkloss_service);
+       if (error_code != BT_ERROR_NONE)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
-       /* register the callback, common for both reporter and monitor roles */
-       _bt_set_cb(BT_EVENT_PROXIMITY_PROPERTY_CHANGED, callback, user_data);
+       error_code = bt_gatt_service_create(PXP_IMMEDIATE_ALERT_SVC_UUID, BT_GATT_SERVICE_TYPE_PRIMARY,
+                                  &reporter_s->reporter_server.services.linkloss_service);
+       if (error_code != BT_ERROR_NONE)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
+       /* By default the bluez stack supports Link loss and immediate alert service when we register */
+       reporter_s->services_supported = BT_PROXIMITY_LINKLOSS_ALERT | BT_PROXIMITY_IMMEDIATE_ALERT;
+
+       /* Start Advertising with Proximity services */
        return error_code;
 }
 
-int bt_proximity_unregister(bt_proximity_role_t role)
+int bt_proximity_reporter_destroy(bt_proximity_reporter_h reporter)
 {
        int error_code = BT_ERROR_NONE;
 
-       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
+       BT_CHECK_GATT_PXP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(reporter);
+
+       if (reporter_s == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (!pxp_reporter_initialized)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       /* Unregister Reporter Role Here */
+       error_code = _bt_get_error_code(bluetooth_proximity_reporter_unregister()); /* LCOV_EXCL_START */
+       if (error_code != BT_ERROR_NONE)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+       else
+               pxp_reporter_initialized = false;
+
+       bt_gatt_destroy(reporter_s->reporter_server.services.linkloss_service);
+       bt_gatt_destroy(reporter_s->reporter_server.services.linkloss_service);
+       reporter_s->services_supported = 0;
+
+       g_free(reporter_s);
+       reporter_s = NULL;
+
+       return error_code;
+}
+
+int _bt_check_proximity_is_initialized(bool *is_initialized)
+{
+       BT_CHECK_GATT_PXP_SUPPORT();
        BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(is_initialized);
+
+       if (pxp_reporter_initialized || pxp_monitor_initialized)
+               *is_initialized = TRUE;
+       else
+               *is_initialized = FALSE;
+
+       return BT_ERROR_NONE;
+}
+/* LCOV_EXCL_STOP */
+static bt_proximity_monitor_s *_bt_proximity_monitor_find(const char *remote_address)
+{
+       GSList *l;
+
+       for (l = proximity_monitor_list; l; l = g_slist_next(l)) {
+               bt_proximity_monitor_s *c = (bt_proximity_monitor_s *)l->data;
+
+               if ((c == NULL) || (c->remote_address == NULL)) {
+                       BT_ERR("_bt_proximity_monitor_find Error Parameter are NULL..\n");
+                       continue;
+               } else if (!g_ascii_strcasecmp(c->remote_address, remote_address)) {
+                       return c;
+               }
+       }
+       return NULL;
+}
+/* LCOV_EXCL_START */
+int _bt_proximity_connection_set_state_changed(int result, const char *remote_address, bool connected)
+{
+       int service_type = 0;
+       int error_code = BT_ERROR_NONE;
+
+       BT_DBG("bt_proximity_connection_state_changed");
+       if (pxp_monitor_initialized) {
+               bt_proximity_monitor_s *monitor_s = NULL;
+
+               monitor_s = _bt_proximity_monitor_find(remote_address);
+               if (monitor_s) {
+                       bluetooth_device_address_t addr_hex = { {0,} };
+                       _bt_convert_address_to_hex(&addr_hex, remote_address);
+                       error_code = bluetooth_proximity_monitor_get_supported_services(&addr_hex, &service_type);
+                       if (error_code != BT_ERROR_NONE)
+                                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+
+                       monitor_s->connected = connected;
+                       monitor_s->services_discovered = service_type;
+                       pxp_monitor_supported_services = service_type;
+                       if (monitor_s->connection_callback)
+                               ((bt_proximity_monitor_connection_state_changed_cb)monitor_s->connection_callback)
+                               (result, remote_address, monitor_s, connected, service_type, monitor_s->user_data);
+               }
+       }
+       if (pxp_reporter_initialized) {
+               if (reporter_s) {
+                       service_type = reporter_s->services_supported;
+                       reporter_s->connected = connected;
+                       if (reporter_s->connection_callback)
+                               ((bt_proximity_reporter_connection_state_changed_cb)reporter_s->connection_callback)
+                               (result, remote_address, reporter_s, connected, service_type, reporter_s->user_data);
+               }
+       }
+       return error_code;
+}
+/* LCOV_EXCL_STOP */
+int bt_proximity_monitor_create(const char *remote_address, bt_proximity_monitor_h *monitor)
+{
+       int error_code = BT_ERROR_NONE;
+       bt_proximity_monitor_s *monitor_s = NULL;
+       bool connected = false;
+       bluetooth_device_address_t addr_hex = { {0,} };
+       int service_type = 0;
+       GSList *l;
+
+       BT_CHECK_GATT_PXP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(remote_address); /* LCOV_EXCL_START */
+       BT_CHECK_INPUT_PARAMETER(monitor); /* LCOV_EXCL_START */
+
+       for (l = proximity_monitor_list; l; l = g_slist_next(l)) {
+               bt_proximity_monitor_s *c = (bt_proximity_monitor_s *)l->data;
+
+               if ((c == NULL) || (c->remote_address == NULL)) {
+                       BT_ERR("bt_proximity_monitor_create Error Parameter are NULL..\n");
+                       continue;
+               } else if (!g_ascii_strcasecmp(c->remote_address, remote_address)) {
+                       BT_ERR("Gatt client for %s is already created",
+                                       remote_address);
+                       return BT_ERROR_ALREADY_DONE;
+               }
+       }
+
+       monitor_s = g_malloc0(sizeof(*monitor_s));
+       if (monitor_s == NULL) {
+               error_code = BT_ERROR_OUT_OF_MEMORY;
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+               return error_code;
+       }
+
+       monitor_s->remote_address = g_strdup(remote_address);
+       if (monitor_s->remote_address == NULL) {
+               g_free(monitor_s);
+               error_code = BT_ERROR_OUT_OF_MEMORY;
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+               return error_code;
+       }
+
+       *monitor = (bt_proximity_monitor_h)monitor_s;
+       proximity_monitor_list = g_slist_append(proximity_monitor_list, monitor_s);
+
+       if (bt_device_is_profile_connected(remote_address, BT_PROFILE_GATT,
+                               &connected) != BT_ERROR_NONE)
+               BT_ERR("bt_device_is_profile_connected is failed");
+       monitor_s->connected = connected;
+
+       _bt_convert_address_to_hex(&addr_hex, remote_address);
 
-       if (role == BT_PROXIMITY_REPORTER) {
-               /* Unregister Reporter Role Here */
-               error_code = _bt_get_error_code(bluetooth_unregister_proximity_reporter());
-               if (error_code != BT_ERROR_NONE)
+       if (bluetooth_proximity_monitor_get_supported_services(&addr_hex,
+                               &service_type) != BT_ERROR_NONE)
                        BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+       monitor_s->services_discovered = service_type;
+
+       pxp_monitor_initialized = true;
+
+       BT_INFO("Proximity Monitor Handle is created");
+
+       return error_code;
+}
+
+int bt_proximity_monitor_destroy(bt_proximity_monitor_h monitor)
+{
+       bt_proximity_monitor_s *monitor_s = (bt_proximity_monitor_s *)monitor;
+
+       BT_CHECK_GATT_PXP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(monitor); /* LCOV_EXCL_START */
+
+       if (_bt_proximity_monitor_find(monitor_s->remote_address) == NULL)
+               return BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED;
+
+       if (monitor_s->connection_callback) {
+               monitor_s->connection_callback = NULL;
+               monitor_s->user_data = NULL;
        }
+       pxp_monitor_supported_services = 0;
+
+       g_free(monitor_s->remote_address);
+       proximity_monitor_list = g_slist_remove(proximity_monitor_list, monitor_s);
+       g_free(monitor_s);
+
+       return BT_ERROR_NONE; /* LCOV_EXCL_STOP */
+}
+
+int bt_proximity_monitor_connect(bt_proximity_monitor_h monitor)
+{
+       int error_code;
+       bt_proximity_monitor_s *monitor_s = (bt_proximity_monitor_s *)monitor;
 
-       /* unregister the callback, common for both reporter and monitor roles */
-       _bt_unset_cb(BT_EVENT_PROXIMITY_PROPERTY_CHANGED);
-       role_registered = -1;
+       BT_CHECK_GATT_PXP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(monitor_s);/* LCOV_EXCL_START */
+
+       if (_bt_proximity_monitor_find(monitor_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       error_code = bt_gatt_connect(monitor_s->remote_address, FALSE);
+
+       if (error_code != BT_ERROR_NONE)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
        return error_code;
 }
+/* LCOV_EXCL_STOP */
+int bt_proximity_monitor_disconnect(bt_proximity_monitor_h monitor)
+{
+       int error_code;
+       bt_proximity_monitor_s *monitor_s = (bt_proximity_monitor_s *)monitor;
+
+       BT_CHECK_GATT_PXP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(monitor_s);
+/* LCOV_EXCL_START */
+       if (_bt_proximity_monitor_find(monitor_s->remote_address) == NULL)
+               return BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED;
+
+       error_code = bt_gatt_disconnect(monitor_s->remote_address);
+
+       if (error_code != BT_ERROR_NONE)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+
+       return error_code;
+}
+/* LCOV_EXCL_STOP */
+int bt_proximity_monitor_set_connection_state_changed_cb(bt_proximity_monitor_h monitor,
+                               bt_proximity_monitor_connection_state_changed_cb callback, void *user_data)
+{
+       bt_proximity_monitor_s *monitor_s = (bt_proximity_monitor_s *)monitor;
+
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(monitor_s);
+       BT_CHECK_INPUT_PARAMETER(callback);
+
+       if (_bt_proximity_monitor_find(monitor_s->remote_address) == NULL)
+               return BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED;
+
+       /* register the callback */
+       monitor_s->connection_callback = callback;
+       monitor_s->user_data = user_data;
+
+       return BT_ERROR_NONE;
+}
+
+int bt_proximity_monitor_unset_connection_state_changed_cb(bt_proximity_monitor_h monitor)
+{
+       bt_proximity_monitor_s *monitor_s = (bt_proximity_monitor_s *)monitor;
+
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(monitor_s);
+
+       if (_bt_proximity_monitor_find(monitor_s->remote_address) == NULL)
+               return BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED;
+
+       /* unregister the callback */
+       monitor_s->connection_callback = NULL;
+       monitor_s->user_data = NULL;
+
+       return BT_ERROR_NONE;
+}
+
+int bt_proximity_reporter_set_connection_state_changed_cb(bt_proximity_reporter_h reporter,
+               bt_proximity_reporter_connection_state_changed_cb callback, void *user_data)
+{
+       bt_proximity_reporter_s *reporter_l = (bt_proximity_reporter_s *)reporter;
+
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(reporter_l);
+       BT_CHECK_INPUT_PARAMETER(callback);
+
+       /* register the callback */
+       reporter_s->connection_callback = callback;
+       reporter_s->user_data = user_data;
+
+       return BT_ERROR_NONE;
+}
+
+int bt_proximity_reporter_unset_connection_state_changed_cb(bt_proximity_reporter_h reporter)
+{
+       bt_proximity_reporter_s *reporter_l = (bt_proximity_reporter_s *)reporter;
+
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(reporter_l);
+
+       /* unregister the callback */
+       reporter_l->connection_callback = NULL;
+       reporter_l->user_data = NULL;
+
+       return BT_ERROR_NONE;
+}
 
-int bt_proximity_set_property(const char *remote_address, bt_proximity_property_t property, int value)
+int bt_proximity_reporter_set_property_changed_cb(bt_proximity_reporter_h reporter,
+               bt_proximity_reporter_property_changed_cb callback, void *user_data)
+{
+       bt_proximity_reporter_s *reporter_l = (bt_proximity_reporter_s *)reporter;
+
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(reporter_l);
+       BT_CHECK_INPUT_PARAMETER(callback);
+
+       /* register the callback */
+       _bt_set_cb(BT_EVENT_PROXIMITY_REPORTER_PROPERTY_CHANGED, callback, user_data);
+
+       return BT_ERROR_NONE;
+}
+
+int bt_proximity_reporter_unset_property_changed_cb(bt_proximity_reporter_h reporter)
+{
+       bt_proximity_reporter_s *reporter_l = (bt_proximity_reporter_s *)reporter;
+
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(reporter_l);
+
+       /* unregister the callback */
+       _bt_unset_cb(BT_EVENT_PROXIMITY_REPORTER_PROPERTY_CHANGED);
+
+       return BT_ERROR_NONE;
+}
+
+int bt_proximity_monitor_set_linkloss_alert(bt_proximity_monitor_h monitor, int value)
 {
        int error_code = BT_ERROR_NONE;
+       bt_proximity_monitor_s *monitor_s = (bt_proximity_monitor_s *)monitor;
        bluetooth_device_address_t addr_hex = { {0,} };
 
-       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
+       BT_CHECK_GATT_PXP_SUPPORT();
        BT_CHECK_INIT_STATUS();
-       BT_CHECK_INPUT_PARAMETER(remote_address); /* LCOV_EXCL_LINE */
+       BT_CHECK_INPUT_PARAMETER(monitor); /* LCOV_EXCL_LINE */
+/* LCOV_EXCL_START */
+       if (_bt_proximity_monitor_find(monitor_s->remote_address) == NULL)
+               return BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED;
 
-       if (role_registered != BT_PROXIMITY_MONITOR)
+       if (!(pxp_monitor_supported_services & BT_PROXIMITY_LINKLOSS_ALERT))
                return BT_ERROR_NOT_SUPPORTED;
 
-       _bt_convert_address_to_hex(&addr_hex, remote_address); /* LCOV_EXCL_LINE */
+       _bt_convert_address_to_hex(&addr_hex, monitor_s->remote_address);
 
-       error_code = _bt_get_error_code(bluetooth_set_proximity_property(&addr_hex, property, value));
+       error_code = _bt_get_error_code(bluetooth_proximity_monitor_set_property(&addr_hex,
+                                               BT_PROXIMITY_LINKLOSS_ALERT, value));
        if (error_code != BT_ERROR_NONE)
                        BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
        return error_code;
 }
+/* LCOV_EXCL_STOP */
+int bt_proximity_monitor_set_immediate_alert(bt_proximity_monitor_h monitor, int value)
+{
+       int error_code = BT_ERROR_NONE;
+       bt_proximity_monitor_s *monitor_s = (bt_proximity_monitor_s *)monitor;
+       bluetooth_device_address_t addr_hex = { {0,} };
+
+       BT_CHECK_GATT_PXP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(monitor); /* LCOV_EXCL_LINE */
+/* LCOV_EXCL_START */
+       if (_bt_proximity_monitor_find(monitor_s->remote_address) == NULL)
+               return BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED;
 
-int bt_proximity_get_property(const char *remote_address, bt_proximity_property_t property, int *value)
+       if (!(pxp_monitor_supported_services & BT_PROXIMITY_IMMEDIATE_ALERT))
+               return BT_ERROR_NOT_SUPPORTED;
+
+       _bt_convert_address_to_hex(&addr_hex, monitor_s->remote_address);
+
+       error_code = _bt_get_error_code(bluetooth_proximity_monitor_set_property(&addr_hex,
+                                               BT_PROXIMITY_IMMEDIATE_ALERT, value));
+       if (error_code != BT_ERROR_NONE)
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+
+       return error_code;
+}
+/* LCOV_EXCL_STOP */
+int bt_proximity_monitor_get_linkloss_alert(bt_proximity_monitor_h monitor, int *value)
 {
        int error_code = BT_ERROR_NONE;
+       bt_proximity_monitor_s *monitor_s = (bt_proximity_monitor_s *)monitor;
        bluetooth_device_address_t addr_hex = { {0,} };
 
-       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
+       BT_CHECK_GATT_PXP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(monitor); /* LCOV_EXCL_LINE */
+
+       if (_bt_proximity_monitor_find(monitor_s->remote_address) == NULL) /* LCOV_EXCL_LINE */
+               return BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED;
+
+       if (!(pxp_monitor_supported_services & BT_PROXIMITY_LINKLOSS_ALERT)) /* LCOV_EXCL_LINE */
+               return BT_ERROR_NOT_SUPPORTED;
+
+       _bt_convert_address_to_hex(&addr_hex, monitor_s->remote_address); /* LCOV_EXCL_LINE */
+
+       error_code = _bt_get_error_code(bluetooth_proximity_monitor_get_property(&addr_hex, /* LCOV_EXCL_LINE */
+                                               BT_PROXIMITY_LINKLOSS_ALERT, value));
+
+       if (error_code != BT_ERROR_NONE) /* LCOV_EXCL_LINE */
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code); /* LCOV_EXCL_LINE */
+
+       return error_code;
+}
+
+int bt_proximity_monitor_get_immediate_alert(bt_proximity_monitor_h monitor, int *value)
+{
+       int error_code = BT_ERROR_NONE;
+       bt_proximity_monitor_s *monitor_s = (bt_proximity_monitor_s *)monitor;
+       bluetooth_device_address_t addr_hex = { {0,} };
+
+       BT_CHECK_GATT_PXP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(monitor); /* LCOV_EXCL_LINE */
+
+       if (_bt_proximity_monitor_find(monitor_s->remote_address) == NULL) /* LCOV_EXCL_LINE */
+               return BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED;
+
+       if (!(pxp_monitor_supported_services & BT_PROXIMITY_IMMEDIATE_ALERT)) /* LCOV_EXCL_LINE */
+               return BT_ERROR_NOT_SUPPORTED;
+
+       _bt_convert_address_to_hex(&addr_hex, monitor_s->remote_address); /* LCOV_EXCL_LINE */
+
+       error_code = _bt_get_error_code(bluetooth_proximity_monitor_get_property(&addr_hex, /* LCOV_EXCL_LINE */
+                                               BT_PROXIMITY_IMMEDIATE_ALERT, value));
+
+       if (error_code != BT_ERROR_NONE) /* LCOV_EXCL_LINE */
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code); /* LCOV_EXCL_LINE */
+
+       return error_code;
+}
+
+int bt_proximity_monitor_get_signal_level(bt_proximity_monitor_h monitor, int *value)
+{
+       int error_code = BT_ERROR_NONE;
+       bt_proximity_monitor_s *monitor_s = (bt_proximity_monitor_s *)monitor;
+       bluetooth_device_address_t addr_hex = { {0,} };
+
+       BT_CHECK_GATT_PXP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(monitor); /* LCOV_EXCL_LINE */
+
+       if (_bt_proximity_monitor_find(monitor_s->remote_address) == NULL) /* LCOV_EXCL_LINE */
+               return BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED;
+
+       if (!(pxp_monitor_supported_services & BT_PROXIMITY_TX_POWER)) /* LCOV_EXCL_LINE */
+               return BT_ERROR_NOT_SUPPORTED;
+
+       _bt_convert_address_to_hex(&addr_hex, monitor_s->remote_address); /* LCOV_EXCL_LINE */
+
+       error_code = _bt_get_error_code(bluetooth_proximity_monitor_get_property(&addr_hex,
+                                                       BT_PROXIMITY_TX_POWER, value));
+
+       if (error_code != BT_ERROR_NONE) /* LCOV_EXCL_LINE */
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code); /* LCOV_EXCL_LINE */
+
+       return error_code;
+}
+
+int bt_proximity_reporter_get_linkloss_alert(const char *remote_address, int *value)
+{
+       int error_code = BT_ERROR_NONE;
+       bluetooth_device_address_t addr_hex = { {0,} };
+
+       BT_CHECK_GATT_PXP_SUPPORT();
        BT_CHECK_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(remote_address); /* LCOV_EXCL_LINE */
 
-       if (role_registered != BT_PROXIMITY_MONITOR)
+       if (reporter_s == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (!(reporter_s->services_supported & BT_PROXIMITY_LINKLOSS_ALERT))
                return BT_ERROR_NOT_SUPPORTED;
 
        _bt_convert_address_to_hex(&addr_hex, remote_address); /* LCOV_EXCL_LINE */
 
-       error_code = _bt_get_error_code(bluetooth_get_proximity_property(&addr_hex, property, value));
+       error_code = _bt_get_error_code(bluetooth_proximity_reporter_get_property(&addr_hex,
+                                               BT_PROXIMITY_LINKLOSS_ALERT, value));
 
-       if (error_code != BT_ERROR_NONE)
-                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+       if (error_code != BT_ERROR_NONE) /* LCOV_EXCL_LINE */
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code); /* LCOV_EXCL_LINE */
 
 
        return error_code;
 }
 
-int bt_proximity_get_supported_services(const char *remote_address, int *supported_services)
+int bt_proximity_reporter_get_immediate_alert(const char *remote_address, int *value)
 {
        int error_code = BT_ERROR_NONE;
        bluetooth_device_address_t addr_hex = { {0,} };
 
-       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON);
+       BT_CHECK_GATT_PXP_SUPPORT();
        BT_CHECK_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(remote_address); /* LCOV_EXCL_LINE */
 
-       if (role_registered != BT_PROXIMITY_MONITOR)
+       if (reporter_s == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (!(reporter_s->services_supported & BT_PROXIMITY_IMMEDIATE_ALERT))
                return BT_ERROR_NOT_SUPPORTED;
 
        _bt_convert_address_to_hex(&addr_hex, remote_address); /* LCOV_EXCL_LINE */
 
-       error_code = _bt_get_error_code(bluetooth_get_proximity_supported_services(&addr_hex, supported_services));
+       error_code = _bt_get_error_code(bluetooth_proximity_reporter_get_property(&addr_hex,
+                                               BT_PROXIMITY_IMMEDIATE_ALERT, value));
 
        if (error_code != BT_ERROR_NONE)
                        BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
 
-
        return error_code;
 }
-
-/* LCOV_EXCL_STOP */
diff --git a/src/bluetooth-tds.c b/src/bluetooth-tds.c
new file mode 100644 (file)
index 0000000..63ff05f
--- /dev/null
@@ -0,0 +1,1174 @@
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <glib.h>
+#include <dlog.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdbool.h>
+#include <string.h>
+#include <bluetooth-api.h>
+
+#include "bluetooth.h"
+#include "bluetooth_internal.h"
+#include "bluetooth_private.h"
+
+#define BT_CHECK_TDS_SUPPORT() \
+{ \
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON); \
+       BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_LE); \
+}
+
+#define BT_TDS_SERVICE_UUID "00001824-0000-1000-8000-00805f9b34fb"
+#define BT_TDS_CONTROL_POINT_UUID "00002abc-0000-1000-8000-00805f9b34fb"
+#define BT_TDS_USER_DATA_DESCRIPTOR "00002a56-0000-1000-8000-00805f9b34fb"
+
+typedef struct {
+       unsigned int tds_handle;
+       bluetooth_tds_transport_t transport;
+       bluetooth_tds_transport_state_t state;
+} bt_tds_provider_s;
+
+typedef struct bt_tds_transport_slot_s {
+       bool is_seek_ongoing;
+} bt_tds_transport_slot_s;
+
+typedef struct {
+       char *remote_address;
+       bool connected;
+
+       const void *connection_callback;
+       void *conn_cb_user_data;
+
+       const void *complete_data_callback;  /* Callback for receiving complete TDS data block */
+       void *complete_data_cb_user_data;    /* User data for complete TDS data block callback */
+
+       char *tds_service_handle;            /* TDS Primary Service Handle */
+       char *tds_control_point;             /* TDS Control Point characteristic handle */
+       char *tds_control_point_cccd;        /* TDS Control Point CCCD handle */
+       char *tds_user_data_desciptor;       /* TDS User descriptor handle: This will store the Entire TDS block data in GATT Server */
+
+       bool cccd_enabled;                   /* TDS Control Point CCCD is enabled or not */
+
+       bool tds_activation_ongoing;         /* TDS Actvation is ongoing or not */
+       void *control_point_act_cb;          /* TDS Control Point Activation Response callback */
+       void *control_point_act_user_data;   /* User data for TDS Control Point Activation Response callback*/
+
+       unsigned char *activation_data;      /* TDS Activation data */
+       int data_len;
+} bt_tds_seeker_s;
+
+gboolean tds_provider_registered = FALSE;
+GSList *providers_list;
+GSList *tds_seeker_list;
+/* LCOV_EXCL_START */
+static int __bt_update_tds_transport_data(bluetooth_device_address_t *address, bt_tds_seeker_s *seeker_s);
+static void __bt_tds_reset_seeker_data(bt_tds_seeker_s *seeker);
+
+int bt_tds_set_transport_activation_requested_cb(
+               bt_tds_activation_requested_cb callback, void *user_data)
+{
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(callback);
+       _bt_set_cb(BT_EVENT_TDS_ACTIVATION_REQUESTED, callback, user_data);
+       return BT_ERROR_NONE;
+}
+
+int bt_tds_unset_transport_activation_requested_cb(void)
+{
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       _bt_unset_cb(BT_EVENT_TDS_ACTIVATION_REQUESTED);
+       return BT_ERROR_NONE;
+}
+
+int bt_tds_provider_register(void)
+{
+       int error_code = BT_ERROR_NONE;
+
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+
+       if (tds_provider_registered)
+               return BT_ERROR_ALREADY_DONE;
+
+       /* register TDS provider role here */
+       error_code = _bt_get_error_code(bluetooth_tds_provider_register());
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+               return error_code;
+       }
+
+       tds_provider_registered = TRUE;
+       return error_code;
+}
+
+int bt_tds_provider_unregister(void)
+{
+       int error_code = BT_ERROR_NONE;
+       GSList *l;
+
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+
+       if (!tds_provider_registered)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       /* register TDS provider role here */
+       error_code = _bt_get_error_code(bluetooth_tds_provider_unregister());
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+               return error_code;
+       }
+
+       for (l = providers_list; l != NULL; l = g_slist_next(l)) {
+               bt_tds_provider_s *tds_provider = l->data;
+               g_free(tds_provider);
+       }
+       providers_list = NULL;
+
+       tds_provider_registered = FALSE;
+       return error_code;
+}
+
+int bt_tds_provider_create(bt_tds_provider_h *provider, bt_tds_transport_e transport)
+{
+       bluetooth_tds_transport_t tds_transport;
+       int error_code = BT_ERROR_NONE;
+       bt_tds_provider_s *tds_provider;
+
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+
+       if (!tds_provider_registered)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       switch (transport) {
+       case BT_TDS_TRANSPORT_BT:
+               error_code = BT_ERROR_NOT_SUPPORTED;
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+               return error_code;
+       case BT_TDS_TRANSPORT_CUSTOM:
+               tds_transport = BLUETOOTH_TDS_TRANSPORT_CUSTOM;
+               break;
+       default:
+               error_code = BT_ERROR_INVALID_PARAMETER;
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+               return error_code;
+       }
+
+       tds_provider = g_malloc0(sizeof(bt_tds_provider_s));
+       if (!tds_provider) {
+               error_code = BT_ERROR_OUT_OF_MEMORY;
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+               return error_code;
+       }
+
+       tds_provider->tds_handle = GPOINTER_TO_INT(tds_provider);
+
+       /* register TDS provider role here */
+       error_code = _bt_get_error_code(bluetooth_tds_provider_create(tds_transport, tds_provider->tds_handle));
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+               g_free(tds_provider);
+               return error_code;
+       }
+
+       tds_provider->transport = tds_transport;
+       tds_provider->state = BLUETOOTH_TDS_TRANSPORT_STATE_OFF;
+       *provider = (bt_tds_provider_h *)tds_provider;
+       providers_list = g_slist_append(providers_list, tds_provider);
+       return error_code;
+}
+
+int bt_tds_provider_destroy(bt_tds_provider_h provider)
+{
+       bt_tds_provider_s *tds_provider;
+       int error_code = BT_ERROR_NONE;
+
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(provider);
+
+       if (!tds_provider_registered)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (NULL == g_slist_find(providers_list, provider)) {
+               BT_ERR("g_slist_find returned NULL");
+               return BT_ERROR_NOT_INITIALIZED;
+       }
+
+       tds_provider = (bt_tds_provider_s *)provider;
+       /* Unregister TDS provider role Here */
+       error_code = _bt_get_error_code(bluetooth_tds_provider_destroy(tds_provider->tds_handle));
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+               return error_code;
+       }
+
+       providers_list = g_slist_remove(providers_list, tds_provider);
+       g_free(tds_provider);
+       return error_code;
+}
+
+int bt_tds_provider_set_transport_data(bt_tds_provider_h provider,
+               bt_tds_transport_state_e transport_state, unsigned char *buf, int length)
+{
+       bluetooth_tds_transport_state_t state;
+       bt_tds_provider_s *tds_provider;
+       int error_code = BT_ERROR_NONE;
+
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(buf);
+
+       if (!tds_provider_registered)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (0 >= length || BLUETOOTH_TDS_DATA_LENGTH_MAX < length) {
+               error_code = BT_ERROR_INVALID_PARAMETER;
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+               return error_code;
+       }
+
+       switch (transport_state) {
+       case BT_TDS_TRANSPORT_STATE_OFF:
+               state = BLUETOOTH_TDS_TRANSPORT_STATE_OFF;
+               break;
+       case BT_TDS_TRANSPORT_STATE_ON:
+               state = BLUETOOTH_TDS_TRANSPORT_STATE_ON;
+               break;
+       case BT_TDS_TRANSPORT_STATE_UNAVAILABLE:
+               state = BLUETOOTH_TDS_TRANSPORT_STATE_UNAVAILABLE;
+               break;
+       default:
+               error_code = BT_ERROR_INVALID_PARAMETER;
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+               return error_code;
+       }
+
+       if (NULL == g_slist_find(providers_list, provider)) {
+               BT_ERR("g_slist_find returned NULL");
+               return BT_ERROR_NOT_INITIALIZED;
+       }
+
+       tds_provider = (bt_tds_provider_s *)provider;
+       tds_provider->state = state;
+
+       /* TDS provider: set transport data here */
+       error_code = _bt_get_error_code(
+                       bluetooth_set_tds_provider_transport_data(tds_provider->tds_handle, state, buf, length));
+       if (error_code != BT_ERROR_NONE)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+
+       return error_code;
+}
+
+/* TODO: Add more parameters if needed */
+int bt_tds_provider_send_activation_resp(char *address, int result, bt_tds_provider_h provider)
+{
+       bluetooth_device_address_t dev_address;
+       bt_tds_provider_s *tds_provider;
+       int error_code = BT_ERROR_NONE;
+       unsigned char *buf = NULL;
+       int length = 0;
+
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(provider);
+       BT_CHECK_INPUT_PARAMETER(address);
+
+       if (!tds_provider_registered)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (NULL == g_slist_find(providers_list, provider)) {
+               BT_ERR("g_slist_find returned NULL");
+               return BT_ERROR_NOT_INITIALIZED;
+       }
+
+       _bt_convert_address_to_hex(&dev_address, address);
+       tds_provider = (bt_tds_provider_s *)provider;
+
+       /* TODO: If needed, fill buf with additional params */
+
+       /* TDS provider: send tds activation response */
+       error_code = _bt_get_error_code(bluetooth_send_tds_activation_response(
+                               &dev_address, tds_provider->tds_handle, result, buf, length));
+       if (error_code != BT_ERROR_NONE)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+
+       return error_code;
+}
+
+int bt_tds_provider_set_manufacturer_data(unsigned char *buf, int length)
+{
+       int error_code = BT_ERROR_NONE;
+
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(buf);
+
+       if (!tds_provider_registered)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (29 < length) {
+               error_code = BT_ERROR_INVALID_PARAMETER;
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+               return error_code;
+       }
+
+       /* TDS provider: set manufacturer data here */
+       error_code = _bt_get_error_code(
+                       bluetooth_set_tds_provider_manuf_data(buf, length));
+       if (error_code != BT_ERROR_NONE)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+
+       return error_code;
+}
+
+static bt_tds_seeker_s *_bt_tds_seeker_find(const char *remote_address)
+{
+       GSList *l;
+
+       for (l = tds_seeker_list; l; l = g_slist_next(l)) {
+
+               if ((l == NULL) || (l->data == NULL) || (((bt_tds_seeker_s *)l->data)->remote_address == NULL)) {
+                       BT_ERR("_bt_tds_seeker_find Error Parameter are NULL..\n");
+                       continue;
+               } else if (!g_ascii_strcasecmp(((bt_tds_seeker_s *)l->data)->remote_address, remote_address)) {
+                       return ((bt_tds_seeker_s *)l->data);
+               }
+       }
+       return NULL;
+}
+
+static void __bt_tds_free_transport_data(bt_tds_transport_block_list_s *info)
+{
+       int k;
+
+       if (info == NULL)
+               return;
+
+       for (k = 0; k < info->num_transport_block; k++) {
+               g_free(info->data[k]->data);
+               g_free(info->data[k]);
+       }
+
+       g_free(info);
+}
+
+void _bt_tds_check_service_changed(char *address, bt_gatt_service_change_t *service_change)
+{
+       bt_tds_seeker_s *seeker_s = NULL;
+       int error_code = BLUETOOTH_ERROR_NONE;
+       bluetooth_device_address_t addr_hex = { {0,} };
+       if (!address) {
+               BT_ERR("Abnormal Result!!");
+               return;
+       }
+       seeker_s = _bt_tds_seeker_find(address);
+       BT_DBG("GATT Service state changed [%d]", service_change->change_type);
+       BT_DBG("GATT Service [%s]", service_change->svc_path);
+       if (seeker_s) {
+               if (service_change->change_type ==  BLUETOOTH_GATT_SERVICE_CHANGE_TYPE_REMOVE) {
+                       if (seeker_s->tds_service_handle &&
+                                       g_strcmp0(seeker_s->tds_service_handle, service_change->svc_path) == 0) {
+                               BT_ERR("TDS Primary Service removed abnormally from Remote Provider [%s]", address);
+                               __bt_tds_reset_seeker_data(seeker_s);
+                       }
+               } else {
+                       _bt_convert_address_to_hex(&addr_hex, address);
+
+                       /* Attempt to update TDS Service data if service added is TDS service */
+                       if (__bt_update_tds_transport_data(&addr_hex, seeker_s) == BLUETOOTH_ERROR_NONE) {
+                               BT_INFO("TDS Primary Service added in Remote Provider [%s]", address);
+                               /* Set Service changed Watcher */
+                               error_code = bluetooth_gatt_set_service_change_watcher(&addr_hex, true);
+                               if (error_code != BLUETOOTH_ERROR_NONE)
+                                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+                       }
+               }
+       }
+       BT_DBG("-");
+}
+
+void _bt_tds_send_complete_transport_data(int result, const char *address, char *data, int data_len)
+{
+       bt_tds_seeker_s *seeker_s = NULL;
+
+       if (!address) {
+               BT_ERR("Abnormal Result!!");
+               return;
+       }
+
+       seeker_s = _bt_tds_seeker_find(address);
+
+       if (seeker_s && (seeker_s)->complete_data_callback) {
+               BT_DBG("Complete TDS Data recv callback is set by app");
+
+               if (result == BT_ERROR_NONE) {
+                       bt_tds_transport_block_list_s *info = g_malloc0(sizeof(bt_tds_transport_block_list_s));
+
+                       if (_bt_tds_parse_transport_blocks(&info, data, data_len) == BT_ERROR_NONE) {
+                               ((bt_tds_seeker_complete_transport_data_cb)((seeker_s)->complete_data_callback))(result,
+                               address, info,
+                               (seeker_s)->complete_data_cb_user_data);
+                       } else {
+                               BT_ERR("Error parsing data blocks");
+                               ((bt_tds_seeker_complete_transport_data_cb)((seeker_s)->complete_data_callback))(result,
+                               address, NULL,
+                               (seeker_s)->complete_data_cb_user_data);
+                       }
+                       __bt_tds_free_transport_data(info);
+               } else {
+                       BT_ERR("TDS Data read failed!!");
+                       ((bt_tds_seeker_complete_transport_data_cb)((seeker_s)->complete_data_callback))(result,
+                       address, NULL,
+                       (seeker_s)->complete_data_cb_user_data);
+               }
+       }
+}
+
+void _bt_tds_control_point_indication_response_update(const char *address, bluetooth_tds_indication_res_t *info)
+{
+       bt_tds_seeker_s *seeker_s = NULL;
+
+       if (!address) {
+               BT_ERR("Abnormal Result!!");
+               return;
+       }
+
+       seeker_s = _bt_tds_seeker_find(address);
+       int result = BT_ERROR_NONE;
+       int k;
+
+       if (seeker_s) {
+               BT_DBG("TDS Control point Activation Indication Response");
+               BT_DBG("Data length [%d]", info->tds_data.length);
+               BT_DBG("Address[%s]", address);
+
+               /* DEBUG */
+               for (k = 0; k < info->tds_data.length; k++)
+                       BT_DBG("Data[%d] [0x%x]", info->tds_data.data[k]);
+
+               if (seeker_s->tds_activation_ongoing == true) {
+                       (seeker_s)->tds_activation_ongoing = false;
+
+                       if (info->tds_data.length < 2)
+                               result = BT_ERROR_OPERATION_FAILED;
+                       else {
+                               if (info->tds_data.data[1] == 0x00) {
+                                       BT_DBG("Provider has enabled transport");
+                                       result = BT_ERROR_NONE;
+                               } else
+                                       result = BT_ERROR_OPERATION_FAILED;
+                       }
+
+                       if ((seeker_s)->control_point_act_cb)
+                               ((bt_tds_control_point_activation_indication_cb)((seeker_s)->control_point_act_cb))(result,
+                               address, info->tds_data.data, info->tds_data.length, (seeker_s)->control_point_act_user_data);
+                       g_free(seeker_s->activation_data);
+                       seeker_s->activation_data = NULL;
+               }
+       }
+}
+
+void _bt_tds_control_point_activation_result_update(int result, const char *remote_address)
+{
+       bt_tds_seeker_s *seeker_s = NULL;
+       if (!remote_address) {
+               BT_ERR("Abnormal Result!!");
+               return;
+       }
+       seeker_s = _bt_tds_seeker_find(remote_address);
+
+       if (seeker_s) {
+               BT_DBG("TDS Control point Activation response [%d] address [%s]", result, remote_address);
+
+               if ((seeker_s)->tds_activation_ongoing == true) {
+                       /* Send Pending Activation Request callback with error */
+                       if (result != BT_ERROR_NONE) {
+                               (seeker_s)->tds_activation_ongoing = false;
+                               if ((seeker_s)->control_point_act_cb)
+                                       ((bt_tds_control_point_activation_indication_cb)((seeker_s)->control_point_act_cb))(BT_ERROR_OPERATION_FAILED,
+                                       remote_address, NULL, 0, (seeker_s)->control_point_act_user_data);
+                               g_free(seeker_s->activation_data);
+                               seeker_s->activation_data = NULL;
+                               return;
+                       } else
+                               BT_DBG("TDS Activation request successfully accepted by Provider, wait for Indication");
+               } else
+                       BT_DBG("TDS Control point activation request is not ongoing");
+       }
+}
+
+void _bt_tds_control_point_enabled_update(int result, const char *remote_address)
+{
+       bt_tds_seeker_s *seeker_s = NULL;
+       if (!remote_address) {
+               BT_ERR("Abnormal Result!!");
+               return;
+       }
+       seeker_s = _bt_tds_seeker_find(remote_address);
+       int ret = BT_ERROR_NONE;
+       bluetooth_device_address_t addr_hex = { {0,} };
+       _bt_convert_address_to_hex(&addr_hex, remote_address);
+
+       if (seeker_s) {
+               BT_DBG("TDS Control point Enable result [%d] address [%s]", result, remote_address);
+
+               /* Send Pending Activation Request callback with error */
+               if (result != BT_ERROR_NONE) {
+                       (seeker_s)->tds_activation_ongoing = false;
+
+                       if ((seeker_s)->control_point_act_cb)
+                               ((bt_tds_control_point_activation_indication_cb)((seeker_s)->control_point_act_cb))(BT_ERROR_OPERATION_FAILED,
+                               remote_address, NULL, 0, (seeker_s)->control_point_act_user_data);
+
+                       g_free(seeker_s->activation_data);
+                       seeker_s->activation_data = NULL;
+                       return;
+               } else {
+                       BT_DBG("TDS Control Point enabled successfully!!");
+                       seeker_s->cccd_enabled = true;
+                       ret = _bt_get_error_code(bluetooth_tds_activate_control_point(&addr_hex,
+                                               seeker_s->tds_control_point, seeker_s->activation_data,
+                                               seeker_s->data_len));
+                       if (ret != BT_ERROR_NONE) {
+                               (seeker_s)->tds_activation_ongoing = false;
+
+                               if ((seeker_s)->control_point_act_cb)
+                                       ((bt_tds_control_point_activation_indication_cb)((seeker_s)->control_point_act_cb))(BT_ERROR_OPERATION_FAILED,
+                                       remote_address, NULL, 0, (seeker_s)->control_point_act_user_data);
+
+                               if (seeker_s->activation_data) {
+                                       g_free(seeker_s->activation_data);
+                                       seeker_s->activation_data = NULL;
+                               }
+                       }
+                       BT_DBG("Activation request sent, wait for response and Indication");
+               }
+       }
+}
+
+int _bt_tds_parse_transport_blocks(bt_tds_transport_block_list_s **info,
+               char *data, int data_len)
+{
+       int numblocks = 0;
+       int index = 2;
+       uint8_t flags;
+       int k;
+       GSList *info_list = NULL;
+       GSList *l = NULL;
+
+       if (data_len < 3) {
+               BT_ERR("Invalid TDS data, can not process!!");
+               return BT_ERROR_INVALID_PARAMETER;
+       }
+
+       tds_transport_data_s *td;
+
+       while (index < data_len) {
+
+               /* Check if Provider Role is supported by Remote */
+               flags = data[index-1];
+
+               if (!(flags & 0x02)) {
+                       /* Move to Next Block */
+                       index = index + data[index] + 3;
+                       BT_ERR("TDS Block is not Provider Role");
+                       continue;
+               }
+
+               td = g_malloc(sizeof(tds_transport_data_s));
+               td->length = data[index];
+
+               td->data = g_malloc0(td->length);
+
+               /* Fill Transport Block Data excluding Flag and Org ID */
+               for (k = 0; k < td->length; k++)
+                       td->data[k] = data[k+index+1];
+
+               /* Get Transport Name  */
+               td->transport = data[index -2];
+
+               /* Get Transport Data Block Incomplete status */
+               if (flags & 0x04)
+                       td->is_data_complete = false;
+               else
+                       td->is_data_complete = true;
+
+               /* Get Transport's current state */
+               if (flags & 0x08)
+                       td->state = BT_TDS_TRANSPORT_STATE_ON;
+               else if (flags & 0x10)
+                       td->state = BT_TDS_TRANSPORT_STATE_UNAVAILABLE;
+               else
+                       td->state = BT_TDS_TRANSPORT_STATE_OFF;
+
+               /* Move to Next Block */
+               index = index + data[index] + 3;
+               info_list = g_slist_append(info_list, td);
+
+               (*info)->num_transport_block = ++numblocks;
+               BT_DBG("Transport Block data length [%d] Flags [0x%x] Transport Name [0x%x] Block Num [%d]",
+                               td->length, flags, td->transport, numblocks);
+
+       }
+
+       if (info_list != NULL) {
+               (*info)->data = (tds_transport_data_s**)g_malloc0(g_slist_length(info_list) * sizeof(tds_transport_data_s));
+               k = 0;
+               while (info_list) {
+                       l = info_list;
+                       (*info)->data[k++] = (tds_transport_data_s*)l->data;
+                       info_list = g_slist_remove(info_list, l->data);
+               }
+               return BT_ERROR_NONE;
+       }
+       return BT_ERROR_NO_DATA;
+}
+
+static void __bt_tds_reset_seeker_data(bt_tds_seeker_s *seeker)
+{
+
+       g_free((seeker)->tds_control_point);
+       (seeker)->tds_control_point = NULL;
+
+       g_free((seeker)->tds_control_point_cccd);
+       (seeker)->tds_control_point_cccd = NULL;
+
+       g_free((seeker)->tds_user_data_desciptor);
+       (seeker)->tds_user_data_desciptor = NULL;
+
+       g_free((seeker)->tds_service_handle);
+       (seeker)->tds_service_handle = NULL;
+
+       g_free((seeker)->activation_data);
+       (seeker)->activation_data = NULL;
+
+       /* Reset CCCD */
+       (seeker)->cccd_enabled = false;
+}
+
+void _bt_tds_update_seeker_connection_state_changed(int result,
+               const char *remote_address, bool connected)
+{
+       int error_code = BLUETOOTH_ERROR_NONE;
+       bt_tds_seeker_s *seeker_s = NULL;
+       BT_DBG("TDS Seeker Connection state changed result [%d] connected [%d]", result, connected ? TRUE : FALSE);
+
+       /* GATT Connect Request failed */
+       seeker_s = _bt_tds_seeker_find(remote_address);
+       if (seeker_s) {
+               BT_DBG("Seeker found against address [%s]", remote_address);
+
+               bluetooth_device_address_t addr_hex = { {0,} };
+               _bt_convert_address_to_hex(&addr_hex, remote_address);
+
+               if (result != BT_ERROR_NONE) {
+                       BT_ERR("GATT Connect Request failed Address [%s]", remote_address);
+                       __bt_tds_reset_seeker_data(seeker_s);
+                       bluetooth_gatt_set_service_change_watcher(&addr_hex, false);
+
+                       if ((seeker_s)->connection_callback)
+                               ((bt_tds_seeker_connection_state_changed_cb)(seeker_s)->connection_callback)
+                                       (result, remote_address, seeker_s, connected, (seeker_s)->conn_cb_user_data);
+                       return;
+               }
+               /* Update TDS Control point values */
+               if (connected) {
+                       BT_DBG("Remote Provider connected successfully");
+                       /* Attempt to update TDS Service data */
+                       error_code = __bt_update_tds_transport_data(&addr_hex, seeker_s);
+                       if (error_code != BLUETOOTH_ERROR_NONE)
+                               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+
+                       /* Set Service changed Watcher */
+                       error_code = bluetooth_gatt_set_service_change_watcher(&addr_hex, true);
+                       if (error_code != BLUETOOTH_ERROR_NONE)
+                               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+               } else {
+                       BT_DBG("Remote Provider disconnected successfully");
+                       /* Disconnected */
+                       __bt_tds_reset_seeker_data(seeker_s);
+                       bluetooth_gatt_set_service_change_watcher(&addr_hex, false);
+               }
+               (seeker_s)->connected = connected;
+
+               if ((seeker_s)->connection_callback)
+                       ((bt_tds_seeker_connection_state_changed_cb)(seeker_s)->connection_callback)
+                               (result, remote_address, seeker_s, connected, (seeker_s)->conn_cb_user_data);
+       } else {
+               BT_DBG("TDS Seeker not found!");
+       }
+}
+
+int bt_tds_start_seeking_providers(bt_tds_provider_scan_result_cb cb, void *user_data)
+{
+       int error_code = BT_ERROR_NONE;
+
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(cb);
+       BT_DBG("+");
+
+       /* LE Event handler registered */
+       if (_bt_le_adapter_init() != BLUETOOTH_ERROR_NONE)
+               return BT_ERROR_OPERATION_FAILED;
+
+       /* Start LE discovery with default scan params if already not started */
+       if (bluetooth_is_le_scanning() == false)
+               error_code = _bt_get_error_code(bluetooth_start_le_discovery());
+
+       if (error_code != BT_ERROR_NONE &&
+                       error_code != BT_ERROR_NOW_IN_PROGRESS) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code),
+                               error_code);
+       } else {
+               BT_DBG("LE Discovery ON..Wait for TDS Configuration Service from Remote Providers");
+               _bt_set_cb(BT_EVENT_TDS_PROVIDER_FOUND_RESULT, cb, user_data);
+       }
+
+       return error_code;
+}
+
+int bt_tds_stop_seeking_providers(void)
+{
+       int error_code = BT_ERROR_NONE;
+
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_DBG("+");
+
+       if (bluetooth_is_le_scanning() == true)
+               error_code = _bt_get_error_code(bluetooth_stop_le_discovery());
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code),
+                               error_code);
+       }
+
+       _bt_unset_cb(BT_EVENT_TDS_PROVIDER_FOUND_RESULT);
+       return BT_ERROR_NONE;
+}
+
+static int __bt_update_tds_transport_data(bluetooth_device_address_t *address, bt_tds_seeker_s *seeker_s)
+{
+       int ret = BLUETOOTH_ERROR_INTERNAL;
+       bt_gatt_service_property_t service;
+       int count;
+
+       ret = bluetooth_gatt_get_service_from_uuid(address, BT_TDS_SERVICE_UUID, &service);
+       if (ret != BLUETOOTH_ERROR_NONE) {
+               BT_ERR("Failed to find TDS configuration service");
+               return ret;
+       }
+
+       /* Find all characteristics of TDS service and their properties  */
+       for (count = 0; count < service.char_handle.count; count++) {
+               bt_gatt_char_property_t characteristic;
+               memset(&characteristic, 0x00, sizeof(characteristic));
+
+               BT_DBG("Get properties for Char [%s]", service.char_handle.handle[count]);
+
+               ret = bluetooth_gatt_get_characteristics_property(service.char_handle.handle[count],
+                               &characteristic);
+
+               if (ret != BLUETOOTH_ERROR_NONE) {
+                       BT_ERR("Get characteristic property failed(0x%08x)", ret);
+                       bluetooth_gatt_free_service_property(&service);
+                       bluetooth_gatt_free_char_property(&characteristic);
+                       goto fail;
+               } else {
+                       if (g_strstr_len(characteristic.uuid, -1, BT_TDS_CONTROL_POINT_UUID)) {
+                               BT_DBG("TDS Control point discovered ");
+                               bt_gatt_char_descriptor_property_t desc_property;
+                               memset(&desc_property, 0x00, sizeof(desc_property));
+
+
+                               /* Get CCCD for Control Point */
+                               ret = bluetooth_gatt_get_char_descriptor_property(
+                                               characteristic.char_desc_handle.handle[0], &desc_property);
+
+                               if (ret != BLUETOOTH_ERROR_NONE) {
+                                       BT_ERR("Failed to discover CCCD for TDS Control point");
+                                       bluetooth_gatt_free_service_property(&service);
+                                       bluetooth_gatt_free_char_property(&characteristic);
+                                       bluetooth_gatt_free_desc_property(&desc_property);
+                                       goto fail;
+                               }
+                               g_free((seeker_s)->tds_control_point);
+                               (seeker_s)->tds_control_point = g_strdup(characteristic.handle);
+
+                               g_free((seeker_s)->tds_control_point_cccd);
+                               (seeker_s)->tds_control_point_cccd = g_strdup(desc_property.handle);
+
+                               BT_DBG("TDS Control point handle [%s]", (seeker_s)->tds_control_point);
+                               BT_DBG("TDS Control point CCCD handle [%s]", (seeker_s)->tds_control_point_cccd);
+                       } else {
+                               /* Fetch Descriptors for the discovered characteristic */
+                               int c;
+                               int p;
+
+                               for (c = 0; c < characteristic.char_desc_handle.count; c++) {
+
+                                       bt_gatt_char_descriptor_property_t desc_property;
+                                       memset(&desc_property, 0x00, sizeof(desc_property));
+
+                                       ret = bluetooth_gatt_get_char_descriptor_property(
+                                                       characteristic.char_desc_handle.handle[c], &desc_property);
+
+                                       if (ret != BLUETOOTH_ERROR_NONE) {
+                                               BT_ERR("Failed to discover Descriptor Property for characteristic [%s]",
+                                                               characteristic.handle);
+                                               bluetooth_gatt_free_service_property(&service);
+                                               bluetooth_gatt_free_char_property(&characteristic);
+                                               bluetooth_gatt_free_desc_property(&desc_property);
+                                               goto fail;
+                                       } else {
+                                               /* Descriptor property discovered */
+                                               BT_DBG("Descriptor handle  [%s]", desc_property.handle);
+                                               BT_DBG("Descriptor UUID    [%s]", desc_property.uuid);
+                                               BT_DBG("Descriptor val len [%d]", desc_property.val_len);
+
+                                               if (g_strstr_len(desc_property.uuid, -1, BT_TDS_USER_DATA_DESCRIPTOR)) {
+                                                       BT_DBG("User data descriptor handle discovered");
+                                                       g_free((seeker_s)->tds_user_data_desciptor);
+                                                       (seeker_s)->tds_user_data_desciptor = g_strdup(desc_property.handle);
+                                               }
+
+                                               for (p = 0; p < desc_property.val_len; p++)
+                                                       BT_DBG("Descriptor data[%d] = [0x%x]", p, desc_property.val[p]);
+                                       } /* Descriptor property get successful */
+                                       bluetooth_gatt_free_desc_property(&desc_property);
+                               } /* Next Descriptor */
+                       } /* Control Point characteristic */
+               } /* Characteristic property get successful */
+               bluetooth_gatt_free_char_property(&characteristic);
+       } /* Next Charatceristic */
+
+       g_free((seeker_s)->tds_service_handle);
+
+       (seeker_s)->tds_service_handle = g_strdup(service.handle);
+       bluetooth_gatt_free_service_property(&service);
+       return ret;
+fail:
+       __bt_tds_reset_seeker_data(seeker_s);
+       return ret;
+}
+
+int bt_tds_seeker_set_connection_state_changed_cb(bt_tds_seeker_h seeker,
+                       bt_tds_seeker_connection_state_changed_cb callback, void *user_data)
+{
+       bt_tds_seeker_s *seeker_s = (bt_tds_seeker_s *)seeker;
+
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(seeker_s);
+       BT_CHECK_INPUT_PARAMETER(callback);
+
+       if (_bt_tds_seeker_find(seeker_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       BT_DBG("Set TDS Seeker Connection State changed callback");
+       /* register the callback */
+       seeker_s->connection_callback = callback;
+       seeker_s->conn_cb_user_data = user_data;
+
+       return BT_ERROR_NONE;
+}
+
+int bt_tds_seeker_unset_connection_state_changed_cb(bt_tds_seeker_h seeker)
+{
+       bt_tds_seeker_s *seeker_s = (bt_tds_seeker_s *)seeker;
+
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(seeker_s);
+
+       if (_bt_tds_seeker_find(seeker_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       BT_DBG("UnSet TDS Seeker Connection State changed callback");
+       /* unregister the callback */
+       seeker_s->connection_callback = NULL;
+       seeker_s->conn_cb_user_data = NULL;
+
+       return BT_ERROR_NONE;
+}
+
+int bt_tds_seeker_activate_control_point(bt_tds_seeker_h seeker,
+                               bt_tds_transport_e transport, unsigned char *buffer, int len,
+                               bt_tds_control_point_activation_indication_cb callback, void *user_data)
+{
+       bt_tds_seeker_s *seeker_s = (bt_tds_seeker_s *)seeker;
+       bluetooth_device_address_t addr_hex = { {0,} };
+       int ret = BT_ERROR_NONE;
+       unsigned char *buf;
+
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(seeker_s);
+       BT_CHECK_INPUT_PARAMETER(buffer);
+       BT_CHECK_INPUT_PARAMETER(callback);
+
+       if (len > 255)
+               return BT_ERROR_INVALID_PARAMETER;
+
+       if (_bt_tds_seeker_find(seeker_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (seeker_s->connected == false)
+               return BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED;
+
+       if (seeker_s->tds_activation_ongoing == true)
+               return BT_ERROR_NOW_IN_PROGRESS;
+
+       /* Check if both TDS Control Point char & Control Point CCCD are valid or discovered */
+       if (!(seeker_s->tds_control_point) ||
+                       !(seeker_s->tds_control_point_cccd))
+               return BT_ERROR_OPERATION_FAILED;
+
+       BT_DBG("Activate Control Point [%s] transport [%d] current CCCD state [%d]",
+                               seeker_s->remote_address, transport, seeker_s->cccd_enabled);
+
+       _bt_convert_address_to_hex(&addr_hex, seeker_s->remote_address);
+
+       /* Activate Control Point */
+       buf = g_malloc0(len+2);
+
+       buf[0] = 0x01; /* Activate control point Opcode */
+       buf[1] = transport; /* Activate control point Opcode */
+       memcpy(buf+2, buffer, len);
+
+       /* Check if TDS control Point is already enabled or not */
+       if (seeker_s->cccd_enabled == FALSE) {
+               /* Enable TDS Control point CCCD to enable */
+               BT_DBG("TDS Control point is disabled, enable it");
+               ret = _bt_get_error_code(bluetooth_tds_enable_control_point(&addr_hex, seeker_s->tds_control_point));
+               if (ret != BT_ERROR_NONE) {
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+                       g_free(buf);
+                       return ret;
+               }
+       } else {
+               BT_DBG("TDS Control point is already enabled");
+               ret = _bt_get_error_code(bluetooth_tds_activate_control_point(&addr_hex, seeker_s->tds_control_point, buf, len));
+               if (ret != BT_ERROR_NONE) {
+                       BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+                       g_free(buf);
+                       return ret;
+               }
+       }
+
+       /* Register the callback */
+       seeker_s->tds_activation_ongoing = true;
+       seeker_s->control_point_act_cb = callback;
+       seeker_s->control_point_act_user_data = user_data;
+
+       /* Save actvation data and trigger when CCCD is actually enabled */
+       seeker_s->activation_data = buf;
+       seeker_s->data_len = len;
+
+       BT_DBG("-");
+       return ret;
+}
+
+int bt_tds_seeker_get_complete_transport_blocks(bt_tds_seeker_h seeker,
+                               bt_tds_seeker_complete_transport_data_cb callback, void *user_data)
+{
+       bt_tds_seeker_s *seeker_s = (bt_tds_seeker_s *)seeker;
+       bluetooth_device_address_t addr_hex = { {0,} };
+       int ret = BT_ERROR_NONE;
+
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(seeker_s);
+       BT_CHECK_INPUT_PARAMETER(callback);
+
+       if (_bt_tds_seeker_find(seeker_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (seeker_s->connected == false)
+               return BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED;
+
+       if (!seeker_s->tds_user_data_desciptor)
+               return BT_ERROR_OPERATION_FAILED;
+
+       BT_DBG("Set TDS Seeker Get complete callback");
+       _bt_convert_address_to_hex(&addr_hex, seeker_s->remote_address);
+
+       /* Read Data from Transport Data block desciptor */
+       ret = _bt_get_error_code(bluetooth_tds_read_transport_data(&addr_hex, seeker_s->tds_user_data_desciptor));
+       if (ret != BT_ERROR_NONE) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(ret), ret);
+               return ret;
+       }
+       /* register the callback */
+       seeker_s->complete_data_callback = callback;
+       seeker_s->complete_data_cb_user_data = user_data;
+
+       return ret;
+}
+
+int bt_tds_seeker_create(const char *remote_address, bt_tds_seeker_h *seeker)
+{
+       int error_code = BT_ERROR_NONE;
+       bt_tds_seeker_s *seeker_s = NULL;
+       bool connected = false;
+       bluetooth_device_address_t addr_hex = { {0,} };
+       GSList *l;
+       BT_INFO("+");
+
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(remote_address);
+       BT_CHECK_INPUT_PARAMETER(seeker);
+
+       for (l = tds_seeker_list; l; l = g_slist_next(l)) {
+               bt_tds_seeker_s *c = (bt_tds_seeker_s *)l->data;
+
+               if ((c == NULL) || ((c->remote_address == NULL))) {
+                       BT_ERR("bt_tds_seeker_create Error Parameter are NULL..\n");
+                       continue;
+               } else if (!g_ascii_strcasecmp(c->remote_address, remote_address)) {
+                       BT_ERR("TDS Seeker for Remote Provider [%s] is already created",
+                                       remote_address);
+                       *seeker = (bt_tds_seeker_h)c;
+                       return BT_ERROR_ALREADY_DONE;
+               }
+       }
+
+       seeker_s = g_malloc0(sizeof(*seeker_s));
+       if (seeker_s == NULL) {
+               error_code = BT_ERROR_OUT_OF_MEMORY;
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+               return error_code;
+       }
+
+       if (bt_device_is_profile_connected(remote_address, BT_PROFILE_GATT,
+                               &connected) != BT_ERROR_NONE)
+               BT_ERR("bt_device_is_profile_connected is failed");
+       seeker_s->connected = connected;
+
+       _bt_convert_address_to_hex(&addr_hex, remote_address);
+
+       if (seeker_s->connected == true) {
+               error_code = __bt_update_tds_transport_data(&addr_hex, seeker_s);
+               if (error_code != BLUETOOTH_ERROR_NONE) {
+                       __bt_tds_reset_seeker_data(seeker_s);
+                       g_free(seeker_s);
+                       return BT_ERROR_OPERATION_FAILED;
+               }
+               error_code = bluetooth_gatt_set_service_change_watcher(&addr_hex, true);
+               if (error_code != BLUETOOTH_ERROR_NONE) {
+                       __bt_tds_reset_seeker_data(seeker_s);
+                       g_free(seeker_s);
+                       return BT_ERROR_OPERATION_FAILED;
+               }
+       }
+
+       seeker_s->remote_address = g_strdup(remote_address);
+       if (seeker_s->remote_address == NULL) {
+               __bt_tds_reset_seeker_data(seeker_s);
+               free(seeker_s);
+               error_code = BT_ERROR_OUT_OF_MEMORY;
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+               return error_code;
+       }
+
+       seeker_s->cccd_enabled = FALSE;
+       seeker_s->activation_data = NULL;
+
+       tds_seeker_list = g_slist_append(tds_seeker_list, seeker_s);
+       *seeker = (bt_tds_seeker_h)seeker_s;
+
+       BT_DBG("TDS Seeker Created");
+       return BT_ERROR_NONE;
+}
+
+int bt_tds_seeker_destroy(bt_tds_seeker_h seeker)
+{
+       bt_tds_seeker_s *seeker_s = (bt_tds_seeker_s *)seeker;
+
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(seeker_s);
+
+       if (_bt_tds_seeker_find(seeker_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       BT_DBG("TDS Seeker destroy Remote Provider [%s]", seeker_s->remote_address);
+       __bt_tds_reset_seeker_data(seeker_s);
+
+       tds_seeker_list = g_slist_remove(tds_seeker_list, seeker_s);
+       g_free(seeker_s);
+       seeker_s = NULL;
+
+       return BT_ERROR_NONE;
+}
+
+int bt_tds_seeker_connect(bt_tds_seeker_h seeker)
+{
+       int error_code;
+       bt_tds_seeker_s *seeker_s = (bt_tds_seeker_s *)seeker;
+
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(seeker_s);
+
+       if (_bt_tds_seeker_find(seeker_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (seeker_s->connected)
+               return BT_ERROR_NONE;
+
+       BT_DBG("TDS Seeker connect Remote Provider [%s]", seeker_s->remote_address);
+       error_code = bt_gatt_connect(seeker_s->remote_address, FALSE);
+
+       if (error_code != BT_ERROR_NONE)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+
+       return error_code;
+}
+
+int bt_tds_seeker_disconnect(bt_tds_seeker_h seeker)
+{
+       int error_code;
+       bt_tds_seeker_s *seeker_s = (bt_tds_seeker_s *)seeker;
+
+       BT_CHECK_TDS_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(seeker_s);
+
+       if (_bt_tds_seeker_find(seeker_s->remote_address) == NULL)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (seeker_s->connected == false) {
+               BT_ERR("Remote Provider [%s] is not conencted", seeker_s->remote_address);
+               return BT_ERROR_OPERATION_FAILED;
+       }
+
+       BT_DBG("TDS Seeker Disconnect Remote Provider [%s]", seeker_s->remote_address);
+       error_code = bt_gatt_disconnect(seeker_s->remote_address);
+
+       if (error_code != BT_ERROR_NONE)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code), error_code);
+
+       return error_code;
+}
+/* LCOV_EXCL_STOP */
index 69cdc4c82b6fb21e16b64778189335f0b07f7d53..bb1758f43538087a7b54d5cbb3773da1902708cb 100644 (file)
@@ -1,7 +1,7 @@
 SET(fw_test "${fw_name}-test")
 
 INCLUDE(FindPkgConfig)
-pkg_check_modules(${fw_test} REQUIRED glib-2.0 capi-appfw-application)
+pkg_check_modules(${fw_test} REQUIRED glib-2.0 capi-appfw-app-control)
 FOREACH(flag ${${fw_test}_CFLAGS})
     SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
 ENDFOREACH(flag)
index c6aa47158aa4b95a840b65dbefe6a77b2a5fe9ac..dd866f7fbb6c15db2fd9a18ca0415fcd3b5e2b2f 100644 (file)
@@ -55,16 +55,14 @@ const char *hid_uuid = "00001124-0000-1000-8000-00805f9b34fb";
 const char *opp_uuid = "00001105-0000-1000-8000-00805f9b34fb";
 const char *custom_uuid = "fa87c0d0-afac-11de-8a39-0800200c9a66";
 
-/*
- * Temporary HPS UUIDs. SIG has to define the UUIDs yet.
- */
-#define HPS_UUID "00001900-0000-1000-8000-00805f9b34fb"
-#define HTTP_URI_UUID "00001901-0000-1000-8000-00805f9b34fb"
-#define HTTP_HDR_UUID "00001902-0000-1000-8000-00805f9b34fb"
-#define HTTP_ENTITY_UUID "00001903-0000-1000-8000-00805f9b34fb"
-#define HTTP_CP_UUID "00001904-0000-1000-8000-00805f9b34fb"
-#define HTTP_STATUS_UUID "00001905-0000-1000-8000-00805f9b34fb"
-#define HTTP_SECURITY_UUID "00001906-0000-1000-8000-00805f9b34fb"
+/* HPS UUIDs. defined by SIG */
+#define HPS_UUID "1823"
+#define HTTP_URI_UUID "2ab6"
+#define HTTP_HDR_UUID "2ab7"
+#define HTTP_ENTITY_UUID "2ab9"
+#define HTTP_CP_UUID "2aba"
+#define HTTP_STATUS_UUID "2ab8"
+#define HTTP_SECURITY_UUID "2abb"
 #define HTTP_STATUS_DESC_UUID "2902"
 
 static bt_unit_test_table_e current_tc_table;
@@ -95,12 +93,10 @@ static int total_time = 0;
 static struct timeval check_time = {0,};
 
 static gboolean is_sub_index = FALSE;
-#ifdef TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT
 int service_index;
 int char_service_index;
 static int selected_service_index = -1;
 static int selected_char_index = 0;
-#endif
 
 static bt_advertiser_h advertiser = NULL;
 static bt_advertiser_h advertiser_list[3] = {NULL, };
@@ -121,11 +117,19 @@ gatt_handle_t thermometer_h;
 gatt_handle_t custom_h;
 gatt_handle_t ipsp_h;
 
-#ifdef TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT
+bt_proximity_reporter_h reporter;
+bt_proximity_monitor_h monitor;
+bt_scan_filter_h pxp_scan_filter;
+
+bt_tds_provider_h provider;
+char *tds_act_address;
+bt_tds_seeker_h seeker;
+
+bt_otp_client_h otp_client;
+
 bt_gatt_attribute_h service_clone[MAX_SERVICES];
 bt_gatt_attribute_h characteristics[MAX_SERVICES];
 bt_gatt_attribute_h characteristics_services[MAX_SERVICES];
-#endif
 
 static unsigned char *hash = NULL;
 static unsigned char *randomizer = NULL;
@@ -173,14 +177,18 @@ tc_table_t tc_main[] = {
                , BT_UNIT_TEST_TABLE_DPM},
        {"PXP"
                , BT_UNIT_TEST_TABLE_PXP},
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
        {"HF Role"
                , BT_UNIT_TEST_TABLE_HF},
        {"PBAP Client"
                , BT_UNIT_TEST_TABLE_PBAP_CLIENT},
-#endif
        {"etc.(Automated test, AppControl)"
                , BT_UNIT_TEST_TABLE_ETC},
+       {"TDS Provider"
+               , BT_UNIT_TEST_TABLE_TDS_PROVIDER},
+       {"TDS Seeker"
+               , BT_UNIT_TEST_TABLE_TDS_SEEKER},
+       {"OTP"
+               , BT_UNIT_TEST_TABLE_OTP},
        {"Initialize All"
                , BT_UNIT_TEST_FUNCTION_INITIALIZE_ALL},
        {"FINISH"
@@ -208,6 +216,8 @@ tc_table_t tc_adapter[] = {
                , BT_UNIT_TEST_FUNCTION_ADAPTER_IS_DISCOVERING},
        {"bt_adapter_foreach_bonded_device"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_FOREACH_BONDED_DEVICE},
+       {"bt_adapter_foreach_profile_connected_devices"
+               , BT_UNIT_TEST_FUNCTION_ADAPTER_FOREACH_PROFILE_CONNECTED_DEVICES},
        {"bt_adapter_get_bonded_device_info"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_GET_BONDED_DEVICE_INFO},
        {"bt_adapter_is_service_used"
@@ -287,12 +297,10 @@ tc_table_t tc_adapter_le[] = {
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_START_SCAN},
        {"bt_adapter_le_stop_scan"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_STOP_SCAN},
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
        {"bt_adapter_le_start_device_discovery"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_START_DEVICE_DISCOVERY},
        {"bt_adapter_le_stop_device_discovery"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_STOP_DEVICE_DISCOVERY},
-#endif
        {"bt_adapter_le_add_advertising_data"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_ADD_ADVERTISING_DATA},
        {"bt_adapter_le_set_advertising_mode"
@@ -303,22 +311,20 @@ tc_table_t tc_adapter_le[] = {
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_ADVERTISING_CONNECTABLE},
        {"bt_adapter_le_start_advertising_new"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_START_ADVERTISING_NEW},
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
        {"bt_adapter_le_start_advertising"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_START_ADVERTISING},
-#endif
        {"bt_adapter_le_stop_advertising"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_STOP_ADVERTISING},
        {"bt_adapter_le_add_white_list"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_ADD_WHITE_LIST},
        {"bt_adapter_le_remove_white_list"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REMOVE_WHITE_LIST},
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
        {"bt_adapter_le_clear_white_list"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_CLEAR_WHITE_LIST},
-#endif
        {"bt_adapter_le_enable_privacy"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_ENABLE_PRIVACY},
+       {"bt_adapter_le_set_remote_oob_ext_data"
+                       , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_REMOTE_OOB_EXT_DATA},
        {"Register scan filter (Device Address)"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_DEVICE_ADDRESS},
        {"Register scan filter (Service UUID)"
@@ -329,12 +335,10 @@ tc_table_t tc_adapter_le[] = {
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_IBEACON_DATA},
        {"Unregister all scan filters"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_UNREGISTER_ALL_SCAN_FILTERS},
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
        {"bt_adapter_le_set_device_discovery_state_changed_cb"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_DEVICE_DISCOVERY_STATE_CHANGED_CB},
        {"bt_adapter_le_unset_device_discovery_state_changed_cb"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_UNSET_DEVICE_DISCOVERY_STATE_CHANGED_CB},
-#endif
        {"bt_adater_le_read_maximum_data_length"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_READ_MAXIMUM_DATA_LENGTH},
        {"bt_adater_le_wite_host_suggested_def_data_length"
@@ -521,6 +525,8 @@ tc_table_t tc_audio[] = {
                , BT_UNIT_TEST_FUNCTION_AG_SET_CALL_HANDLING_EVENT_CB},
        {"bt_ag_is_nrec_enabled"
                , BT_UNIT_TEST_FUNCTION_AG_IS_NREC_ENABLED},
+       {"bt_ag_switch_headset"
+               , BT_UNIT_TEST_FUNCTION_AG_SWITCH_HEADSET},
        {"bt_audio_select_role(source)"
                , BT_UNIT_TEST_FUNCTION_A2DP_SOURCE_ROLE},
        {"bt_audio_select_role(sink)"
@@ -582,10 +588,18 @@ tc_table_t tc_gatt[] = {
                , BT_UNIT_TEST_FUNCTION_GATT_CLIENT_UNSET_CHAR_VALUE_CHANGED_CB},
        {"bt_gatt_client_foreach_services"
                , BT_UNIT_TEST_FUNCTION_GATT_CLIENT_FOREACH_SERVICES},
+       {"bt_gatt_client_request_att_mtu_change"
+               , BT_UNIT_TEST_FUNCTION_GATT_CLIENT_REQUEST_ATT_MTU},
+       {"bt_gatt_client_get_att_mtu"
+                               , BT_UNIT_TEST_FUNCTION_GATT_CLIENT_GET_ATT_MTU},
        {"bt_gatt_client_set_service_changed_cb"
                , BT_UNIT_TEST_FUNCTION_GATT_CLIENT_SET_SERVICE_CHANGED_CB},
        {"bt_gatt_client_unset_service_changed_cb"
                , BT_UNIT_TEST_FUNCTION_GATT_CLIENT_UNSET_SERVICE_CHANGED_CB},
+       {"bt_gatt_client_set_att_mtu_changed_cb"
+               , BT_UNIT_TEST_FUNCTION_GATT_CLIENT_SET_ATT_MTU_CHANGED_CB},
+       {"bt_gatt_client_unset_att_mtu_changed_cb"
+               , BT_UNIT_TEST_FUNCTION_GATT_CLIENT_UNSET_ATT_MTU_CHANGED_CB},
        {"bt_gatt_server_initialize"
                , BT_UNIT_TEST_FUNCTION_GATT_SERVER_INITIALIZE},
        {"bt_gatt_server_deinitilaize"
@@ -610,6 +624,8 @@ tc_table_t tc_gatt[] = {
                , BT_UNIT_TEST_FUNCTION_GATT_SERVER_REGISTER_DEVICE_INFORMATION_SVC},
        {"Register Link Loss Service"
                , BT_UNIT_TEST_FUNCTION_GATT_SERVER_REGISTER_LINK_LOSS_SVC},
+       {"Register HID Over GATT Service"
+               , BT_UNIT_TEST_FUNCTION_GATT_SERVER_REGISTER_HOGP_SVC},
        {"Register Custom Service"
                , BT_UNIT_TEST_FUNCTION_GATT_SERVER_REGISTER_CUSTOM_SVC},
        {"Change Custom Value"
@@ -626,7 +642,6 @@ tc_table_t tc_gatt[] = {
                , BT_UNIT_TEST_FUNCTION_ANCS_NEGATIVE_ACTION},
        {"ANCS (Get Noti. Attr.)"
                , BT_UNIT_TEST_FUNCTION_ANCS_GET_NOTI_ATTR},
-#ifdef TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT
        {"bt_gatt_foreach_primary_services"
                , BT_UNIT_TEST_FUNCTION_GATT_FOREACH_PRIMARY_SERVICES},
        {"bt_gatt_discover_characteristics"
@@ -653,7 +668,6 @@ tc_table_t tc_gatt[] = {
                , BT_UNIT_TEST_FUNCTION_GATT_WATCH_CHARACTERISTIC_CHANGES},
        {"bt_gatt_unwatch_characteristic_changes"
                , BT_UNIT_TEST_FUNCTION_GATT_UNWATCH_CHARACTERISTIC_CHANGES},
-#endif
        {"Select this menu to set parameters and then select the function again."
                , BT_UNIT_TEST_FUNCTION_ACTIVATE_FLAG_TO_SET_PARAMETERS},
        {NULL                                   , 0x0000},
@@ -700,20 +714,50 @@ tc_table_t tc_pxp[] = {
        /* HPS functions */
        {"BACK"
                , BT_UNIT_TEST_FUNCTION_BACK},
-       {"Proximity (Register)"
-               , BT_UNIT_TEST_FUNCTION_PXP_REGISTER},
-       {"Proximity (Unregister)"
-               , BT_UNIT_TEST_FUNCTION_PXP_UNREGISTER},
-       {"Proximity (Connect as Monitor)"
+       {"Proximity Reporter(Register)"
+               , BT_UNIT_TEST_FUNCTION_PXP_REPORTER_REGISTER},
+       {"Proximity Reporter(Unregister)"
+               , BT_UNIT_TEST_FUNCTION_PXP_REPORTER_UNREGISTER},
+       {"Proximity Reporter(Start Advertising Proximity Reporter)"
+               , BT_UNIT_TEST_FUNCTION_PXP_REPORTER_START_ADVERTISING},
+       {"Proximity Reporter (Set State Changed callback)"
+               , BT_UNIT_TEST_FUNCTION_PXP_REPORTER_SET_CONNECTION_STATE_CHANGED_CB},
+       {"Proximity Reporter (UnSet State Changed callback)"
+               , BT_UNIT_TEST_FUNCTION_PXP_REPORTER_UNSET_CONNECTION_STATE_CHANGED_CB},
+       {"Proximity Reporter (Set Property Changed callback)"
+               , BT_UNIT_TEST_FUNCTION_PXP_REPORTER_SET_PROPERTIES_CHANGED_CB},
+       {"Proximity Reporter (UnSet Property Changed callback)"
+               , BT_UNIT_TEST_FUNCTION_PXP_REPORTER_UNSET_PROPERTIES_CHANGED_CB},
+       {"Proximity Reporter(Read Linkloss Alert Level)"
+               , BT_UNIT_TEST_FUNCTION_PXP_REPORTER_READ_LINKLOSS_ALERT},
+       {"Proximity Reporter(Read Immediate Alert Level)"
+               , BT_UNIT_TEST_FUNCTION_PXP_REPORTER_READ_IMMEDIATE_ALERT},
+       {"Proximity Monitor(Create)"
+               , BT_UNIT_TEST_FUNCTION_PXP_MONITOR_CREATE},
+       {"Proximity Monitor(Destroy)"
+               , BT_UNIT_TEST_FUNCTION_PXP_MONITOR_DESTROY},
+       {"Proximity Monitor(Connect)"
                , BT_UNIT_TEST_FUNCTION_PXP_MONITOR_CONNECT},
-       {"Proximity (Disconnect Monitor)"
+       {"Proximity Monitor(Disconnect)"
                , BT_UNIT_TEST_FUNCTION_PXP_MONITOR_DISCONNECT},
-       {"Proximity (Write Alert Level)"
-               , BT_UNIT_TEST_FUNCTION_PXP_WRITE_ALERT_LEVEL},
-       {"Proximity (Read Alert Level)"
-               , BT_UNIT_TEST_FUNCTION_PXP_READ_ALERT_LEVEL},
-       {"Proximity (Get Supported Services)"
-               , BT_UNIT_TEST_FUNCTION_PXP_GET_SUPPORTED_SERVICES},
+       {"Proximity Monitor (Set State Changed callback)"
+               , BT_UNIT_TEST_FUNCTION_PXP_MONITOR_SET_CONNECTION_STATE_CHANGED_CB},
+       {"Proximity Monitor (UnSet State Changed callback)"
+               , BT_UNIT_TEST_FUNCTION_PXP_MONITOR_UNSET_CONNECTION_STATE_CHANGED_CB},
+       {"Proximity Monitor(Set LE Scan Filter for Proximity UUID)"
+               , BT_UNIT_TEST_FUNCTION_PXP_MONITOR_SET_SCAN_FILTER_SERVICE_UUID},
+       {"Proximity Monitor(Unet LE Scan Filter for Proximity UUID)"
+               , BT_UNIT_TEST_FUNCTION_PXP_MONITOR_UNSET_SCAN_FILTER_SERVICE_UUID},
+       {"Proximity Monitor(Write Linkloss Alert Level)"
+               , BT_UNIT_TEST_FUNCTION_PXP_MONITOR_WRITE_LINKLOSS_ALERT},
+       {"Proximity Monitor(Write Immediate Alert Level)"
+               , BT_UNIT_TEST_FUNCTION_PXP_MONITOR_WRITE_IMMEDIATE_ALERT},
+       {"Proximity Monitor(Read Linkloss Alert Level)"
+               , BT_UNIT_TEST_FUNCTION_PXP_MONITOR_READ_LINKLOSS_ALERT},
+       {"Proximity Monitor(Read Immediate Alert Level)"
+               , BT_UNIT_TEST_FUNCTION_PXP_MONITOR_READ_IMMEDIATE_ALERT},
+       {"Proximity Monitor(Read Signal Level)"
+               , BT_UNIT_TEST_FUNCTION_PXP_MONITOR_READ_SIGNAL_LEVEL},
        {"Select this menu to set parameters and then select the function again."
                , BT_UNIT_TEST_FUNCTION_ACTIVATE_FLAG_TO_SET_PARAMETERS},
        {NULL                                   , 0x0000},
@@ -765,6 +809,8 @@ tc_table_t tc_avrcp[] = {
                , BT_UNIT_TEST_FUNCTION_AVRCP_CONTROL_NEXT},
        {"bt_avrcp_control_player_PREV"
                , BT_UNIT_TEST_FUNCTION_AVRCP_CONTROL_PREV},
+       {"bt_avrcp_control_player_SET_ABSOLUTE_VOLUME"
+               , BT_UNIT_TEST_FUNCTION_AVRCP_CONTROL_SET_ABSOLUTE_VOLUME},
        {"bt_avrcp_control_player_GET_REPEAT"
                , BT_UNIT_TEST_FUNCTION_AVRCP_CONTROL_GET_REPEAT},
        {"bt_avrcp_control_player_SET_REPEAT"
@@ -978,7 +1024,6 @@ tc_table_t tc_DPM[] = {
        {NULL                                   , 0x0000},
 };
 
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
 tc_table_t tc_hf[] = {
        /* Handsfree role functions */
        {"BACK"
@@ -1060,7 +1105,99 @@ tc_table_t tc_pbap_client[] = {
                , BT_UNIT_TEST_FUNCTION_ACTIVATE_FLAG_TO_SET_PARAMETERS},
        {NULL                                   , 0x0000},
 };
-#endif
+
+tc_table_t tc_tds_provider[] = {
+       /* TDS provider functions */
+       {"BACK"
+               , BT_UNIT_TEST_FUNCTION_BACK},
+       {"TDS Provider(Register)"
+               , BT_UNIT_TEST_FUNCTION_TDS_PROVIDER_REGISTER},
+       {"TDS Provider(Unregister)"
+               , BT_UNIT_TEST_FUNCTION_TDS_PROVIDER_UNREGISTER},
+       {"TDS Provider set activation req callback"
+               , BT_UNIT_TEST_FUNCTION_TDS_PROVIDER_SET_ACT_REQ_CB},
+       {"TDS Provider unset activation req callback"
+               , BT_UNIT_TEST_FUNCTION_TDS_PROVIDER_UNSET_ACT_REQ_CB},
+       {"TDS CUSTOM Provider(Create)"
+               , BT_UNIT_TEST_FUNCTION_TDS_CUSTOM_PROVIDER_CREATE},
+       {"TDS CUSTOM Provider(Destroy)"
+               , BT_UNIT_TEST_FUNCTION_TDS_CUSTOM_PROVIDER_DESTROY},
+       {"TDS CUSTOM Provider(Set transport Data)"
+               , BT_UNIT_TEST_FUNCTION_TDS_CUSTOM_PROVIDER_SET_TRANSPORT_DATA},
+       {"TDS CUSTOM Provider(Set manuf Data)"
+               , BT_UNIT_TEST_FUNCTION_TDS_CUSTOM_PROVIDER_SET_MANUF_DATA},
+       {"TDS CUSTOM Provider(Send Activation Response)"
+               , BT_UNIT_TEST_FUNCTION_TDS_CUSTOM_PROVIDER_SEND_ACTIVATION_RESP},
+       {NULL                                   , 0x0000},
+};
+
+tc_table_t tc_tds_seeker[] = {
+       /* TDS Seeker functions */
+       {"BACK"
+               , BT_UNIT_TEST_FUNCTION_BACK},
+       {"TDS Seeker Start Discovering Provider"
+               , BT_UNIT_TEST_FUNCTION_TDS_START_DISCOVERING_PROVIDER},
+       {"TDS Seeker Stop Discovering Provider"
+               , BT_UNIT_TEST_FUNCTION_TDS_STOP_DISCOVERING_PROVIDER},
+       {"TDS Seeker(Create)"
+               , BT_UNIT_TEST_FUNCTION_TDS_SEEKER_CREATE},
+       {"TDS Seeker(Destroy)"
+               , BT_UNIT_TEST_FUNCTION_TDS_SEEKER_DESTROY},
+       {"TDS Set Seeker Connection cb"
+               , BT_UNIT_TEST_FUNCTION_TDS_SEEKER_SET_CONNECTION_CALLBACK},
+       {"TDS Seeker Connect(remote)"
+               , BT_UNIT_TEST_FUNCTION_TDS_SEEKER_CONNECT},
+       {"TDS Seeker DisConnect(remote)"
+               , BT_UNIT_TEST_FUNCTION_TDS_SEEKER_DISCONNECT},
+       {"TDS UnSet Seeker Connection cb"
+               , BT_UNIT_TEST_FUNCTION_TDS_SEEKER_UNSET_CONNECTION_CALLBACK},
+       {"TDS Read Complete Transport Data (remote)"
+               , BT_UNIT_TEST_FUNCTION_TDS_SEEKER_GET_COMPLETE_DATA},
+       {"TDS Activate Control Point (remote)"
+               , BT_UNIT_TEST_FUNCTION_TDS_SEEKER_ACTIVATE_CONTROL_POINT},
+       {NULL                                   , 0x0000},
+};
+
+tc_table_t tc_otp[] = {
+       /* OTP functions */
+       {"BACK"
+               , BT_UNIT_TEST_FUNCTION_BACK},
+       {"bt_otp_server_init"
+               , BT_UNIT_TEST_FUNCTION_OTP_SERVER_INIT},
+       {"bt_otp_server_deinit"
+               , BT_UNIT_TEST_FUNCTION_OTP_SERVER_DEINIT},
+       {"bt_otp_set_server_state_changed_cb"
+               , BT_UNIT_TEST_FUNCTION_OTP_SET_SERVER_STATE_CHANGED_CB},
+       {"bt_otp_unset_server_state_changed_cb"
+               , BT_UNIT_TEST_FUNCTION_OTP_UNSET_SERVER_STATE_CHANGED_CB},
+       {"bt_otp_client_create"
+               , BT_UNIT_TEST_FUNCTION_OTP_CLIENT_CREATE},
+       {"bt_otp_client_destroy"
+               , BT_UNIT_TEST_FUNCTION_OTP_CLIENT_DESTROY},
+       {"bt_otp_client_set_connection_state_changed_cb"
+               , BT_UNIT_TEST_FUNCTION_OTP_CLIENT_SET_CONNECTION_CALLBACK},
+       {"bt_otp_client_unset_connection_state_changed_cb"
+               , BT_UNIT_TEST_FUNCTION_OTP_CLIENT_UNSET_CONNECTION_CALLBACK},
+       {"bt_otp_client_connect"
+               , BT_UNIT_TEST_FUNCTION_OTP_CLIENT_CONNECT},
+       {"bt_otp_client_disconnect"
+               , BT_UNIT_TEST_FUNCTION_OTP_CLIENT_DISCONNECT},
+       {"bt_otp_client_discover_all_objects"
+               , BT_UNIT_TEST_FUNCTION_OTP_CLIENT_DISCOVER_ALL_OBJECTS},
+       {"bt_otp_client_select_object"
+               , BT_UNIT_TEST_FUNCTION_OTP_CLIENT_SELECT_OBJ},
+       {"bt_otp_client_read_object_contents"
+               , BT_UNIT_TEST_FUNCTION_OTP_CLIENT_READ_OBJ_CONTENTS},
+       {"bt_otp_client_create_object"
+               , BT_UNIT_TEST_FUNCTION_OTP_CLIENT_CREATE_OBJ},
+       {"bt_otp_client_write_object"
+               , BT_UNIT_TEST_FUNCTION_OTP_CLIENT_WRITE_OBJ},
+       {"bt_otp_client_execute_object"
+               , BT_UNIT_TEST_FUNCTION_OTP_CLIENT_EXECUTE_OBJ},
+       {"bt_otp_client_delete_object"
+               , BT_UNIT_TEST_FUNCTION_OTP_CLIENT_DELETE_OBJ},
+       {NULL                                   , 0x0000},
+};
 
 tc_table_t tc_automated_test[] = {
        /* Automated test Functions*/
@@ -1139,14 +1276,16 @@ void tc_usage_print(void)
        case BT_UNIT_TEST_TABLE_PXP:
                tc_table = tc_pxp;
                break;
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
        case BT_UNIT_TEST_TABLE_HF:
+               if (!TIZEN_PROFILE_WEARABLE_IVI)
+                       goto __default__;
                tc_table = tc_hf;
                break;
        case BT_UNIT_TEST_TABLE_PBAP_CLIENT:
+               if (!TIZEN_PROFILE_WEARABLE_IVI)
+                       goto __default__;
                tc_table = tc_pbap_client;
                break;
-#endif
        case BT_UNIT_TEST_TABLE_ETC:
                if (input_automated_test_delay == true) {
                        TC_PRT("Input the delay for automated"
@@ -1159,7 +1298,17 @@ void tc_usage_print(void)
                __bt_initialize_all();
                TC_PRT("Key 0 : usage BACK");
                return;
+       case BT_UNIT_TEST_TABLE_TDS_PROVIDER:
+               tc_table = tc_tds_provider;
+               break;
+       case BT_UNIT_TEST_TABLE_TDS_SEEKER:
+               tc_table = tc_tds_seeker;
+               break;
+       case BT_UNIT_TEST_TABLE_OTP:
+               tc_table = tc_otp;
+               break;
        case BT_UNIT_TEST_TABLE_MAIN:
+__default__:
        default:
                tc_table = tc_main;
                break;
@@ -1249,6 +1398,9 @@ static const char *__bt_get_error_message(bt_error_e err)
        case BT_ERROR_SERVICE_NOT_FOUND:
                err_str = "BT_ERROR_SERVICE_NOT_FOUND";
                break;
+       case BT_ERROR_NO_DATA:
+               err_str = "BT_ERROR_NO_DATA";
+               break;
        case BT_ERROR_NOT_SUPPORTED:
                err_str = "BT_ERROR_NOT_SUPPORTED";
                break;
@@ -1263,7 +1415,6 @@ static const char *__bt_get_error_message(bt_error_e err)
        return err_str;
 }
 
-#ifdef TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT
 static gboolean __select_index_cb(GIOChannel *chan,
                                GIOCondition cond,
                                gpointer data)
@@ -1346,7 +1497,6 @@ static void __bt_free_gatt_characteristics_services(void)
        }
        char_service_index = 0;
 }
-#endif
 
 void __bt_adapter_state_changed_cb(int result,
                bt_adapter_state_e adapter_state, void *user_data)
@@ -1418,16 +1568,23 @@ static bool __bt_adapter_bonded_device_cb(bt_device_info_s *device_info,
        void *user_data)
 {
        int i;
+       char *str = NULL;
 
        TC_PRT("remote_address: %s", device_info->remote_address);
        TC_PRT("remote_name: %s", device_info->remote_name);
+       TC_PRT("is_connected: %d", device_info->is_connected);
        TC_PRT("service_count: %d", device_info->service_count);
 
        if (device_info->service_uuid == NULL) {
                TC_PRT("No uuids");
        } else {
-               for (i = 0; i < device_info->service_count; i++)
-                       TC_PRT("uuid: %s", device_info->service_uuid[i]);
+               for (i = 0; i < device_info->service_count; i++) {
+                       bt_get_uuid_name(device_info->service_uuid[i], &str);
+
+                       TC_PRT("[%d / %d] %s (%s)", i, device_info->service_count,
+                               str ? str : "Unknown", device_info->service_uuid[i]);
+                       g_free(str);
+               }
        }
 
        if (device_info->manufacturer_data_len > 0) {
@@ -1438,6 +1595,15 @@ static bool __bt_adapter_bonded_device_cb(bt_device_info_s *device_info,
                        printf("%02x ", device_info->manufacturer_data[i]);
                printf("]\n");
        }
+       printf("\n");
+
+       return true;
+}
+
+static bool __bt_adapter_profile_connected_devices_cb(
+       const char *remote_address, void *user_data)
+{
+       TC_PRT("remote_address: %s", remote_address);
 
        return true;
 }
@@ -1514,7 +1680,7 @@ static void __bt_adapter_le_scan_result_cb(
                char *manufacturer_data;
                int manufacturer_data_len;
                int count;
-               bt_adapter_ibeacon_scan_result_info_s *ibeacon_info = NULL;
+               bt_adapter_le_ibeacon_scan_result_info_s *ibeacon_info = NULL;
 
                pkt_type += i;
                if (pkt_type == BT_ADAPTER_LE_PACKET_ADVERTISING
@@ -1567,14 +1733,9 @@ static void __bt_adapter_le_scan_result_cb(
                if (bt_adapter_le_get_scan_result_manufacturer_data(
                        info, pkt_type, &manufacturer_id, &manufacturer_data,
                        &manufacturer_data_len) == BT_ERROR_NONE) {
-                       if (manufacturer_data_len > 1)
-                               TC_PRT("Manufacturer data[ID:%.4X, 0x%.2X%.2X...(len:%d)]",
-                                               manufacturer_id, manufacturer_data[0],
-                                               manufacturer_data[1], manufacturer_data_len);
-                       else
-                               TC_PRT("Manufacturer data[ID:%.4X, len:%d]",
-                                               manufacturer_id, manufacturer_data_len);
-
+                       TC_PRT("Manufacturer data[ID:%.4X, 0x%.2X%.2X...(len:%d)]",
+                               manufacturer_id, manufacturer_data[0],
+                               manufacturer_data[1], manufacturer_data_len);
                        g_free(manufacturer_data);
                }
                if (bt_adapter_le_get_scan_result_ibeacon_report(info, pkt_type,
@@ -1597,7 +1758,7 @@ void __bt_gatt_server_read_value_requested_cb(
        int offset, void *user_data)
 {
        char char_value_1[3] = {0, 1, 2};
-       int resp_status = BT_ERROR_NONE;
+       int resp_status = BT_ATT_ERROR_NONE;
 
        TC_PRT("__bt_gatt_server_read_value_requested_cb");
        TC_PRT("remote_address %s", remote_address);
@@ -1622,7 +1783,6 @@ void __bt_gatt_server_notification_state_change_cb(bool notify,
 }
 
 
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
 static void __bt_adapter_le_device_discovery_state_changed_cb(int result,
                bt_adapter_le_device_discovery_state_e discovery_state,
                bt_adapter_le_device_discovery_info_s *discovery_info,
@@ -1646,18 +1806,12 @@ static void __bt_adapter_le_device_discovery_state_changed_cb(int result,
                        discovery_info->rssi,
                        discovery_info->address_type);
 
-               if (discovery_info->adv_data_len > 31 ||
-                               discovery_info->scan_data_len > 31) {
-                       TC_PRT("###################");
-                       bt_adapter_le_stop_device_discovery();
-                       TC_PRT("###################");
-                       return;
-               }
 #if 0
                /* LE ADV information */
                int i, ret;
                int field_len = 0;
                unsigned char *field_data;
+
                printf("Adv data [");
                for (i = 0; i < discovery_info->adv_data_len; i++)
                        printf("%02x ", discovery_info->adv_data[i]);
@@ -1687,7 +1841,6 @@ static void __bt_adapter_le_device_discovery_state_changed_cb(int result,
 #endif
        }
 }
-#endif
 
 static void __bt_adapter_le_advertising_state_changed_cb(int result,
        bt_advertiser_h advertiser, bt_adapter_le_advertising_state_e adv_state,
@@ -1743,6 +1896,7 @@ static void __bt_hid_device_data_received_cb(const bt_hid_device_received_data_s
        TC_PRT("+");
        char val = 0x01;
        int ret = 0;
+       static char hidmode = 0x01;
        if (data == NULL) {
                TC_PRT("No received data");
                return;
@@ -1763,19 +1917,32 @@ static void __bt_hid_device_data_received_cb(const bt_hid_device_received_data_s
        case BT_HID_HEADER_GET_REPORT:
                TC_PRT("GET_REPORT data");
                TC_PRT("ReportId %d", data->data[1]);
-               bt_hid_key_data_s send_data;
-               /* Will send character 'a' */
-               char    pressedkey[8]    = { 4, 0, 0, 0,  0, 0, 0, 0 };
-               memcpy(send_data.key, pressedkey, 8);
-               send_data.modifier = 0;
+
                if (data->data[1] == 0x02) {
-               ret = bt_hid_device_reply_to_report(remote_addr,
-                               BT_HID_HEADER_GET_REPORT,
-                               BT_HID_PARAM_DATA_RTYPE_INPUT,
-                               (const char *)&send_data,
-                               sizeof(send_data));
+                       bt_hid_key_data_s send_data;
+                       /* Will send character 'a' */
+                       char pressedkey[8] = { 4, 0, 0, 0,  0, 0, 0, 0 };
+                       memcpy(send_data.key, pressedkey, 8);
+                       send_data.modifier = 0;
+                       ret = bt_hid_device_reply_to_report(remote_addr,
+                                       BT_HID_HEADER_GET_REPORT,
+                                       BT_HID_PARAM_DATA_RTYPE_INPUT,
+                                       (const char *)&send_data,
+                                       sizeof(send_data));
                } else if (data->data[1] == 0x01) {
                        TC_PRT("Send Mouse Event");
+                       bt_hid_mouse_data_s send_data;
+
+                       send_data.buttons = 1;
+                       send_data.padding  = BT_HID_MOUSE_BUTTON_NONE;
+
+                       send_data.axis_x = 10;
+                       send_data.axis_y = 0;
+                       ret = bt_hid_device_reply_to_report(remote_addr,
+                                       BT_HID_HEADER_GET_REPORT,
+                                       BT_HID_PARAM_DATA_RTYPE_INPUT,
+                                       (const char *)&send_data,
+                                       sizeof(send_data));
                } else {
                        TC_PRT("Invalid ReportId");
                        val = BT_HID_HANDSHAKE_ERR_INVALID_REPORT_ID;
@@ -1788,21 +1955,35 @@ static void __bt_hid_device_data_received_cb(const bt_hid_device_received_data_s
                break;
        case BT_HID_HEADER_SET_REPORT:
                TC_PRT("SET_REPORT data");
+               val = BT_HID_HANDSHAKE_SUCCESSFUL;
+               ret = bt_hid_device_reply_to_report(remote_addr,
+                               BT_HID_HEADER_HANDSHAKE,
+                               BT_HID_PARAM_DATA_RTYPE_INPUT,
+                               &val, sizeof(val));
+               TC_PRT("ret %d", ret);
                break;
        case BT_HID_HEADER_DATA:
                TC_PRT("TRANs DATA");
                break;
        case BT_HID_HEADER_GET_PROTOCOL:
-               TC_PRT("GET PROTOCOL");
+               TC_PRT("GET PROTOCOL %x", hidmode);
                ret = bt_hid_device_reply_to_report(remote_addr,
                                BT_HID_HEADER_GET_PROTOCOL,
                                BT_HID_PARAM_DATA_RTYPE_INPUT,
-                               &val, sizeof(val));
+                               &hidmode, sizeof(hidmode));
                TC_PRT("ret %d", ret);
                break;
        case BT_HID_HEADER_SET_PROTOCOL:
                TC_PRT("SET PROTOCOL");
                val = BT_HID_HANDSHAKE_SUCCESSFUL;
+
+               if (data->data[0] & 0x01) {
+                       TC_PRT("HID Report mode set");
+                       hidmode = 0x01;
+               } else {
+                       TC_PRT("HID Boot mode set");
+                       hidmode = 0x00;
+               }
                ret = bt_hid_device_reply_to_report(remote_addr,
                                BT_HID_HEADER_HANDSHAKE,
                                BT_HID_PARAM_DATA_RTYPE_INPUT,
@@ -2043,13 +2224,22 @@ void __bt_print_repeat_test_final_summary()
 void __bt_gatt_connection_state_changed_cb(int result,
        bool connected, const char *remote_address, void *user_data)
 {
-       TC_PRT("result: %s", __bt_get_error_message(result));
+       if (result != BT_ERROR_NONE)
+               TC_PRT("result: %s", __bt_get_error_message(result));
+
        if (connected) {
-               TC_PRT("LE connected(address = %s)", remote_address);
-               /* Fix : STRING_OVERFLOW */
+               TC_PRT("GATT connected [%s]", remote_address);
                strncpy(remote_addr, remote_address, strlen(remote_addr));
+
+               bt_le_conn_update_s param;
+
+               param.interval_min = 90;
+               param.interval_max = 90;
+               param.latency = 0;
+               param.time_out = 2000;
+               bt_device_le_conn_update(remote_addr, &param);
        } else {
-               TC_PRT("LE DISconnected");
+               TC_PRT("GATT DISconnected [%s]", remote_address);
        }
 }
 
@@ -2057,9 +2247,11 @@ void __bt_hps_connection_state_changed_cb(int result,
        bool connected, const char *remote_address, void *user_data)
 {
        int ret;
-       TC_PRT("result: %s", __bt_get_error_message(result));
+       if (result != BT_ERROR_NONE)
+               TC_PRT("result: %s", __bt_get_error_message(result));
+
        if (connected) {
-               TC_PRT("HPS connected(address = %s)", remote_address);
+               TC_PRT("HPS connected  [%s]", remote_address);
                /* Fix : STRING_OVERFLOW */
                strncpy(remote_addr, remote_address, strlen(remote_addr));
                if (hps_client) {
@@ -2071,7 +2263,7 @@ void __bt_hps_connection_state_changed_cb(int result,
                        __bt_get_error_message(ret));
 
        } else {
-               TC_PRT("HPS DISconnected");
+               TC_PRT("HPS DISconnected [%s]", remote_address);
        }
 }
 
@@ -2098,6 +2290,28 @@ void __bt_gatt_client_service_changed_cb(bt_gatt_client_h c,
        g_free(addr);
 }
 
+void __bt_gatt_client_att_mtu_changed_cb(bt_gatt_client_h c, const bt_gatt_client_att_mtu_info_s *mtu_info, void *user_data)
+{
+       char *addr = NULL;
+       int ret;
+
+       TC_PRT("__bt_gatt_client_att_mtu_changed_cb");
+
+       ret = bt_gatt_client_get_remote_address(client, &addr);
+       if (ret != BT_ERROR_NONE) {
+               TC_PRT("Cannot get remote address");
+               return;
+       }
+
+       if (mtu_info) {
+               TC_PRT("status [%d]", mtu_info->status);
+               TC_PRT("address [%s]", mtu_info->remote_address);
+               TC_PRT("MTU [%d]", mtu_info->mtu);
+       }
+
+       g_free(addr);
+}
+
 int __bt_gatt_client_set_value(char *type, char *value, bt_gatt_h h)
 {
        int ret;
@@ -2166,11 +2380,6 @@ void __bt_gatt_client_print_value(bt_gatt_h h)
 
        if (hex_format) {
                str = g_malloc0(len * 5 + 1);
-               /* Fix : NULL_RETURNS */
-               if (!str) {
-                       TC_PRT("BT_ERROR_OUT_OF_MEMORY");
-                       goto fail;
-               }
                for (i = 0; i < len; i++) {
                        if (i > 0)
                                str[i * 5 - 1] = ' ';
@@ -2179,18 +2388,12 @@ void __bt_gatt_client_print_value(bt_gatt_h h)
                }
        } else {
                str = g_malloc0(len + 1);
-               /* Fix : NULL_RETURNS */
-               if (!str) {
-                       TC_PRT("BT_ERROR_OUT_OF_MEMORY");
-                       goto fail;
-               }
                memcpy(str, value, len);
        }
 
        TC_PRT("Value : %s", str);
 
        g_free(str);
-fail:
        g_free(value);
 }
 
@@ -2223,7 +2426,7 @@ void __bt_gatt_client_write_complete_cb(int result,
        bt_get_uuid_name(uuid, &str);
 
        TC_PRT("Write %s for %s (%s)",
-               result == BT_ERROR_NONE ? "Success" : "Fail",
+               result == BT_ATT_ERROR_NONE ? "Success" : "Fail",
                str ? str : "Unknown", uuid);
 
        g_free(str);
@@ -2242,13 +2445,13 @@ void __bt_gatt_client_read_complete_cb(int result,
        bt_get_uuid_name(uuid, &str);
 
        TC_PRT("Read %s for %s (%s)",
-               result == BT_ERROR_NONE ? "Success" : "Fail",
+               result == BT_ATT_ERROR_NONE ? "Success" : "Fail",
                str ? str : "Unknown", uuid);
 
        g_free(str);
        g_free(uuid);
 
-       if (result != BT_ERROR_NONE)
+       if (result != BT_ATT_ERROR_NONE)
                return;
 
        __bt_gatt_client_print_value(gatt_handle);
@@ -2360,9 +2563,6 @@ bool __bt_hps_client_svc_cb(int total,
                        index, total,
                        str ? str : "Unknown", uuid);
 
-               g_free(str);
-               g_free(uuid);
-
                if (test_id == BT_UNIT_TEST_FUNCTION_HPS_CLIENT_PRINT_ALL) {
 #ifdef ARCH64
                        ret = bt_gatt_service_foreach_characteristics(svc_handle,
@@ -2377,6 +2577,9 @@ bool __bt_hps_client_svc_cb(int total,
                                TC_PRT("bt_gatt_service_foreach_characteristics is failed : %d", ret);
                }
        }
+
+       g_free(str);
+       g_free(uuid);
        return true;
 }
 
@@ -2475,43 +2678,67 @@ void __bt_HP_client_cp_req_status_changed_cb(bt_gatt_h chr,
        return;
 }
 
-void __bt_pxp_montior_connection_state_changed_cb(int result,
-       bool connected, const char *remote_address, void *user_data)
+void __bt_proximity_reporter_property_changed_cb(int result, const char *remote_address,
+                                       int service_type, int prop_value, void *user_data)
 {
-       int ret;
-       TC_PRT("result: %s", __bt_get_error_message(result));
-       if (connected) {
-               int property = 0;
+       TC_PRT("reporter_property result [%s]", __bt_get_error_message(result));
+       TC_PRT("remote_address : %s", remote_address);
+       TC_PRT("service_type : %d", service_type);
+       TC_PRT("prop_value : %d", prop_value);
+}
 
-               TC_PRT("PXP Monitor connected(address = %s)", remote_address);
+void __bt_proximity_monitor_connection_state_changed_cb(int result, const char *remote_address,
+                       bt_proximity_monitor_h monitor_s, bool connected, int supported_service, void *user_data)
+{
+       TC_PRT("result: %s", __bt_get_error_message(result));
+       if (result == BT_ERROR_NONE) {
+               if (connected) {
+                       TC_PRT("PXP connected(address = %s)", remote_address);
+                       TC_PRT("PXP Reporter supported Service\n");
+                       if (supported_service & BT_PROXIMITY_LINKLOSS_ALERT)
+                               TC_PRT("BT_PROXIMITY_LINKLOSS_ALERT\n");
+                       if (supported_service & BT_PROXIMITY_IMMEDIATE_ALERT)
+                               TC_PRT("BT_PROXIMITY_IMMEDIATE_ALERT\n");
+                       if (supported_service & BT_PROXIMITY_TX_POWER)
+                               TC_PRT("BT_PROXIMITY_TX_POWER");
+               } else {
+                       TC_PRT("PXP DISconnected");
+               }
+       }
+}
 
-               ret = bt_proximity_get_supported_services(remote_addr, &property);
-               TC_PRT("bt_proximity_get_supported_service returns %s\n",
-                                                               __bt_get_error_message(ret));
-               if (ret == BT_ERROR_NONE) {
-                       TC_PRT("PXP Monitor supported Service\n");
-                       if (property & BT_PROXIMITY_LINKLOSS_ALERT)
+void __bt_proximity_reporter_connection_state_changed_cb(int result, const char *remote_address,
+                       bt_proximity_reporter_h reporter_s, bool connected, int supported_service, void *user_data)
+{
+       TC_PRT("result: %s", __bt_get_error_message(result));
+       if (result == BT_ERROR_NONE) {
+               if (connected) {
+                       TC_PRT("PXP connected(address = %s)", remote_address);
+                       TC_PRT("PXP Reporter supported Service\n");
+                       if (supported_service & BT_PROXIMITY_LINKLOSS_ALERT)
                                TC_PRT("BT_PROXIMITY_LINKLOSS_ALERT\n");
-                       if (property & BT_PROXIMITY_IMMEDIATE_ALERT)
+                       if (supported_service & BT_PROXIMITY_IMMEDIATE_ALERT)
                                TC_PRT("BT_PROXIMITY_IMMEDIATE_ALERT\n");
-                       if (property & BT_PROXIMITY_TX_POWER)
-                               TC_PRT("BT_PROXIMITY_TX_POWER\n");
+                       if (supported_service & BT_PROXIMITY_TX_POWER)
+                               TC_PRT("BT_PROXIMITY_TX_POWER");
+               } else {
+                       TC_PRT("PXP DISconnected");
                }
-       } else {
-               TC_PRT("PXP Monitor DISconnected");
-               ret = bt_gatt_unset_connection_state_changed_cb();
        }
 }
 
-void __bt_proximity_property_changed_cb(int result, const char *remote_address,
-                                       int role, int service_type,
-                                       int prop_value, void *user_data)
+void __tds_activation_req_cb(char *rem_bd_addr,
+       bt_tds_transport_e transport, unsigned char *buf, int len, void *user_data)
 {
-       TC_PRT("result [%s]", __bt_get_error_message(result));
-       TC_PRT("remote_address : %s", remote_address);
-       TC_PRT("Role : %d", role);
-       TC_PRT("service_type : %d", service_type);
-       TC_PRT("prop_value : %d", prop_value);
+       int i;
+
+       TC_PRT("remote_address : %s", rem_bd_addr);
+       TC_PRT("transport : %d", transport);
+       for (i = 0; i < len; i++)
+               TC_PRT("Act req data[%d] : %.2x", i, buf[i]);
+
+       g_free(tds_act_address);
+       tds_act_address = g_strdup(rem_bd_addr);
 }
 
 void __bt_gatt_server_notification_sent_cb(int result,
@@ -2526,10 +2753,10 @@ void __bt_gatt_server_notification_sent_cb(int result,
 
 void __bt_gatt_server_write_value_requested_cb(const char *remote_address,
                                int request_id, bt_gatt_server_h server,
-                               bt_gatt_h gatt_handle,  bool response_needed, int offset,
+                               bt_gatt_h gatt_handle, bool response_needed, int offset,
                                const char *value, int len, void *user_data)
 {
-       int i, resp_status =  BT_ERROR_NONE;
+       int i, resp_status =  BT_ATT_ERROR_NONE;
        TC_PRT("remote_address : %s", remote_address);
        TC_PRT("Response needed : %d", response_needed);
        TC_PRT("offset : %d", offset);
@@ -2561,7 +2788,6 @@ bool __bt_gatt_server_foreach_svc_cb(int total,
        return true;
 }
 
-#ifdef TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT
 bool __bt_gatt_primary_service_cb(bt_gatt_attribute_h service,
        void *user_data)
 {
@@ -2622,6 +2848,7 @@ bool __bt_gatt_included_service_cb(bt_gatt_attribute_h service,
        bt_get_uuid_name(uuid, &name);
        TC_PRT("uuid: %s [%s]", uuid, name);
 
+       g_free(value);
        g_free(uuid);
        g_free(name);
        return true;
@@ -2672,7 +2899,6 @@ void __bt_gatt_remote_characteristic_write_cb(bt_gatt_attribute_h characteristic
        TC_PRT("updated characteristic is %s", (char *)characteristic);
        TC_PRT("new char value is %s", char_value);
 }
-#endif
 
 void __bt_avrcp_target_connection_state_changed_cb(bool connected,
        const char *remote_address, void *user_data)
@@ -2833,7 +3059,6 @@ void __bt_ipsp_connection_state_changed_cb(int result,
        memcpy(ipsp_iface_name, iface_name, strlen(iface_name));
 }
 
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
 void __bt_hf_sco_state_changed_cb(int result,
        bool opened, void *user_data)
 {
@@ -2954,7 +3179,6 @@ void __bt_pbap_vcard_list_cb(int result, const char *remote_address,
        TC_PRT("Listing Status: %s",
                (result == BT_ERROR_NONE) ? "Successful" : "Unsuccessful");
 }
-#endif
 
 void __bt_repeat_test_adapter_state_changed_cb(int result,
        bt_adapter_state_e adapter_state, void *user_data)
@@ -2992,6 +3216,190 @@ void __bt_repeat_test_adapter_state_changed_cb(int result,
        bt_onoff_cnt++;
 }
 
+/* TDS Seeker Callbacks */
+static  void __bt_tds_provider_scan_result_cb(int result, const char *remote_address,
+                       bt_tds_transport_block_list_s *info, bt_adapter_le_device_scan_result_info_s *scan_info,
+                       void *user_data)
+{
+       int k;
+       int l;
+       TC_PRT("__bt_tds_provider_scan_result_cb");
+       TC_PRT("result: %s", __bt_get_error_message(result));
+
+       TC_PRT("Result: %s", __bt_get_error_message(result));
+       TC_PRT("Remote addr [%s]", remote_address);
+       TC_PRT("Number of Transport Block [%d]", info->num_transport_block);
+
+       if (result == BT_ERROR_NONE) {
+               for (k = 0; k < info->num_transport_block; k++) {
+                       TC_PRT("Block Num[%d] Transport Name [%d]", k+1, info->data[k]->transport);
+                       TC_PRT("Block Num[%d] Transport state [%d]", k+1, info->data[k]->state);
+                       TC_PRT("Block Num[%d] Is Data complete [%d]", k+1, info->data[k]->is_data_complete);
+                       TC_PRT("Block Num[%d] Length of TDS Block data [%d]", k+1, info->data[k]->length);
+
+                       for (l = 0; l < info->data[k]->length; l++)
+                               TC_PRT("Transport Specific data [%d] = [0x%x]", l, info->data[k]->data[l]);
+               }
+       }
+}
+
+static void __bt_tds_seeker_connection_state_changed_cb(int result, const char *remote_address,
+                       bt_tds_seeker_h seeker, bool connected, void *user_data)
+{
+       TC_PRT("Result: %s", __bt_get_error_message(result));
+       if (result == BT_ERROR_NONE) {
+               if (connected)
+                       TC_PRT("TDS Seeker connected(address = %s)", remote_address);
+               else
+                       TC_PRT("TDS Seeker Disconnected (address = %s)", remote_address);
+       } else
+               BT_ERR("TDS Connection failed!");
+}
+
+static void __bt_tds_seeker_complete_transport_data_cb(int result, const char *remote_address,
+                       bt_tds_transport_block_list_s *info, void *user_data)
+{
+       int k;
+       int l;
+       TC_PRT("__bt_tds_seeker_complete_transport_data_cb");
+       TC_PRT("Result: %s", __bt_get_error_message(result));
+       TC_PRT("Remote addr [%s]", remote_address);
+
+       if (result == BT_ERROR_NONE) {
+               TC_PRT("Number of Transport Block [%d]", info->num_transport_block);
+               for (k = 0; k < info->num_transport_block; k++) {
+                       TC_PRT("Block Num[%d] Transport Name [%d]", k+1, info->data[k]->transport);
+                       TC_PRT("Block Num[%d] Transport state [%d]", k+1, info->data[k]->state);
+                       TC_PRT("Block Num[%d] Is Data complete [%d]", k+1, info->data[k]->is_data_complete);
+                       TC_PRT("Block Num[%d] Length of TDS Block data [%d]", k+1, info->data[k]->length);
+
+                       for (l = 0; l < info->data[k]->length; l++)
+                               TC_PRT("Transport Specific data [%d] = [0x%x]", l, info->data[k]->data[l]);
+               }
+       } else
+               BT_ERR("TDS Data receive request failed!");
+}
+
+static void __bt_tds_control_point_activation_result_cb(int result, const char *remote_address,
+                               unsigned char *data, int length, void *user_data)
+{
+       int k;
+       TC_PRT("__bt_tds_control_point_activation_result_cb");
+       TC_PRT("Result [%d]", result);
+       TC_PRT("Address[%s]", remote_address);
+
+       if (result == BT_ERROR_NONE) {
+               TC_PRT("Data length [%d]", length);
+               for (k = 0; k < length; k++)
+                       TC_PRT("Data[%d] [0x%x]", k, data[k]);
+       }
+}
+
+void __bt_otp_server_state_changed_cb(int result, bool status)
+{
+       TC_PRT("__bt_otp_server_state_changed_cb");
+       TC_PRT("Result: %d", result);
+       TC_PRT("Server Status: %s", status ? "enabled" : "disabled");
+}
+
+static void __bt_otp_client_connection_state_changed_cb(int result, const char *remote_address,
+                       bt_otp_client_h otp_client, bool connected, void *user_data)
+{
+       TC_PRT("Result: %s", __bt_get_error_message(result));
+       if (result == BT_ERROR_NONE) {
+               if (connected)
+                       TC_PRT("OTP Client connected(address = %s)", remote_address);
+               else
+                       TC_PRT("OTP Client Disconnected (address = %s)", remote_address);
+       } else
+               BT_ERR("OTP Connection failed!");
+}
+
+static void __bt_otp_client_object_discovery_cb(int result, const char *remote_address,
+                       bt_otp_object_list_s *obj_list, void *user_data)
+{
+       int k;
+       TC_PRT("__bt_otp_client_object_discovery_cb");
+       TC_PRT("Result: %s", __bt_get_error_message(result));
+       TC_PRT("Remote addr [%s]", remote_address);
+
+       if (result == BT_ERROR_NONE) {
+               TC_PRT("Number of Objects [%d]", obj_list->num_objects);
+
+               for (k = 0; k < obj_list->num_objects; k++)
+                       TC_PRT("Object[%d] Id: [%llu] Name: [%s]", k+1, obj_list->data[k]->id, obj_list->data[k]->name);
+
+       } else {
+               BT_ERR("Object discovery failed!");
+       }
+}
+
+static void __bt_otp_client_object_select_cb(int result, const char *remote_address,
+                       unsigned long long obj_id, void *user_data)
+{
+       TC_PRT("__bt_otp_client_object_select_cb");
+       TC_PRT("Result: %s", __bt_get_error_message(result));
+       TC_PRT("Remote addr [%s]", remote_address);
+
+       if (result == BT_ERROR_NONE)
+               TC_PRT("Object selected successfully! Current object[%llu]", obj_id);
+       else
+               BT_ERR("Object selection failed! Current object[%llu]", obj_id);
+}
+
+static void __bt_otp_client_read_object_complete_cb(int result, const char *remote_address,
+                       char *file_path, void *user_data)
+{
+       if (result == BT_ERROR_NONE)
+               TC_PRT("Read object success!, File location [%s]", file_path);
+       else
+               BT_ERR("Read object failed!");
+}
+
+static void __bt_otp_client_object_create_cb(int result, const char *remote_address,
+                       unsigned long long obj_id, void *user_data)
+{
+       if (result == BT_ERROR_NONE)
+               TC_PRT("Object[%llu] created successfully in remote server!", obj_id);
+       else
+               BT_ERR("Object creation failed!");
+}
+
+static void __bt_otp_client_object_write_cb(int result, const char *remote_address,
+                       unsigned int length, void *user_data)
+{
+       if (result == BT_ERROR_NONE)
+               TC_PRT("Object write success!, [%u] bytes written", length);
+       else
+               BT_ERR("Object write failed!, [%u] bytes written", length);
+}
+
+static void __bt_otp_client_object_execute_cb(int result, const char *remote_address,
+                       unsigned long long obj_id, void *user_data)
+{
+       TC_PRT("__bt_otp_client_object_execute_cb");
+       TC_PRT("Result: %s", __bt_get_error_message(result));
+       TC_PRT("Remote addr [%s]", remote_address);
+
+       if (result == BT_ERROR_NONE)
+               TC_PRT("Object[%llu] launched successfully!", obj_id);
+       else
+               BT_ERR("Object[%llu] launch failed!", obj_id);
+}
+
+static void __bt_otp_client_object_delete_cb(int result, const char *remote_address,
+                       unsigned long long obj_id, void *user_data)
+{
+       TC_PRT("__bt_otp_client_object_delete_cb");
+       TC_PRT("Result: %s", __bt_get_error_message(result));
+       TC_PRT("Remote addr [%s]", remote_address);
+
+       if (result == BT_ERROR_NONE)
+               TC_PRT("Object[%llu] deleted successfully!", obj_id);
+       else
+               BT_ERR("Object[%llu] delete failed!", obj_id);
+}
+
 static void __bt_initialize_all(void)
 {
        int ret;
@@ -3016,25 +3424,33 @@ static void __bt_initialize_all(void)
                        __bt_device_bond_destroyed_cb, NULL);
        if (ret != BT_ERROR_NONE)
                TC_PRT("returns %s\n", __bt_get_error_message(ret));
-       ret = bt_gatt_set_connection_state_changed_cb(
-                       __bt_gatt_connection_state_changed_cb, NULL);
+       ret = bt_device_set_connection_state_changed_cb(
+                       __bt_device_connection_state_changed_cb, NULL);
        if (ret != BT_ERROR_NONE)
                TC_PRT("returns %s\n", __bt_get_error_message(ret));
-       ret = bt_adapter_set_device_discovery_state_changed_cb(
-                       __bt_adapter_device_discovery_state_changed_cb, NULL);
+       ret = bt_device_set_att_mtu_changed_cb(
+                       __bt_device_att_mtu_changed_cb, NULL);
        if (ret != BT_ERROR_NONE)
                TC_PRT("returns %s\n", __bt_get_error_message(ret));
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
-       ret = bt_adapter_le_set_device_discovery_state_changed_cb(
-               __bt_adapter_le_device_discovery_state_changed_cb, NULL);
+       ret = bt_gatt_set_connection_state_changed_cb(
+                       __bt_gatt_connection_state_changed_cb, NULL);
        if (ret != BT_ERROR_NONE)
                TC_PRT("returns %s\n", __bt_get_error_message(ret));
-#else
-       ret = bt_pbap_client_set_connection_state_changed_cb(__bt_pbap_connection_state_changed_cb,
-                       NULL);
+       ret = bt_adapter_set_device_discovery_state_changed_cb(
+                       __bt_adapter_device_discovery_state_changed_cb, NULL);
        if (ret != BT_ERROR_NONE)
                TC_PRT("returns %s\n", __bt_get_error_message(ret));
-#endif
+       if (!TIZEN_PROFILE_WEARABLE_IVI) {
+               ret = bt_adapter_le_set_device_discovery_state_changed_cb(
+                       __bt_adapter_le_device_discovery_state_changed_cb, NULL);
+               if (ret != BT_ERROR_NONE)
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+       } else {
+               ret = bt_pbap_client_set_connection_state_changed_cb(__bt_pbap_connection_state_changed_cb,
+                               NULL);
+               if (ret != BT_ERROR_NONE)
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+       }
        ret = bt_socket_set_connection_state_changed_cb(
                __bt_socket_connection_state_changed_cb, NULL);
        if (ret != BT_ERROR_NONE)
@@ -3056,17 +3472,16 @@ int test_set_params(int test_id, char *param)
        switch (current_tc_table) {
        case BT_UNIT_TEST_TABLE_ADAPTER: {
                switch (test_id) {
-               case BT_UNIT_TEST_FUNCTION_ADAPTER_SET_CONNECTABLE: {
+               case BT_UNIT_TEST_FUNCTION_ADAPTER_SET_VISIBILITY: {
                        if (param_index == 0) {
                                g_test_param.param_count = 1;
-                               g_test_param.params = g_malloc0(sizeof(char *) *g_test_param.param_count);
-                               param_type = BT_UNIT_TEST_PARAM_TYPE_BOOL;
+                               g_test_param.params = g_malloc0(sizeof(char*) * g_test_param.param_count);
+                               param_type = BT_UNIT_TEST_PARAM_TYPE_INT;
                        }
 
                        if (param_index > 0) {
                                g_test_param.params[param_index - 1] = g_malloc0(strlen(param) + 1);
-                               strncpy(g_test_param.params[param_index - 1],
-                                       param, strlen(param));
+                               strncpy(g_test_param.params[param_index - 1], param, strlen(param));
                        }
 
                        if (param_index == g_test_param.param_count) {
@@ -3080,13 +3495,42 @@ int test_set_params(int test_id, char *param)
                                return 0;
                        }
 
-                       TC_PRT("Input param(%d) type:%s",
-                               param_index + 1, param_type);
+                       TC_PRT("Input param(%d) (non-discoverable: -1, always: 0, limited-discoverable(time): N)", param_index + 1);
                        param_index++;
 
                        break;
                }
-               case BT_UNIT_TEST_FUNCTION_ADAPTER_SET_MANUFACTURER_DATA:
+               case BT_UNIT_TEST_FUNCTION_ADAPTER_SET_CONNECTABLE: {
+                       if (param_index == 0) {
+                               g_test_param.param_count = 1;
+                               g_test_param.params = g_malloc0(sizeof(char *) *g_test_param.param_count);
+                               param_type = BT_UNIT_TEST_PARAM_TYPE_BOOL;
+                       }
+
+                       if (param_index > 0) {
+                               g_test_param.params[param_index - 1] = g_malloc0(strlen(param) + 1);
+                               strncpy(g_test_param.params[param_index - 1],
+                                       param, strlen(param));
+                       }
+
+                       if (param_index == g_test_param.param_count) {
+                               need_to_set_params = false;
+#ifdef ARCH64
+                               test_input_callback((void *)(uintptr_t)test_id);
+#else
+                               test_input_callback((void *)test_id);
+#endif
+                               param_index = 0;
+                               return 0;
+                       }
+
+                       TC_PRT("Input param(%d) type:%s",
+                               param_index + 1, param_type);
+                       param_index++;
+
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_ADAPTER_SET_MANUFACTURER_DATA:
                {
                        if (param_index == 0) {
                                g_test_param.param_count = 1;
@@ -3240,6 +3684,37 @@ int test_set_params(int test_id, char *param)
                        break;
                }
 
+               case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_REMOTE_OOB_EXT_DATA: {
+                       if (param_index == 0) {
+                               g_test_param.param_count = 3;
+                               g_test_param.params = g_malloc0(sizeof(char*) * g_test_param.param_count);
+                               param_type = BT_UNIT_TEST_PARAM_TYPE_STRING;
+                       }
+
+                       if (param_index > 0) {
+                               int len = strlen(param);
+                               g_test_param.params[param_index - 1] = g_malloc0(len);
+                               param[len - 1] = '\0';
+                               strncpy(g_test_param.params[param_index - 1], param, len);
+                       }
+
+                       if (param_index == g_test_param.param_count) {
+                               need_to_set_params = false;
+#ifdef ARCH64
+                               test_input_callback((void *)(uintptr_t)test_id);
+#else
+                               test_input_callback((void *)test_id);
+#endif
+                               param_index = 0;
+                               return 0;
+                       }
+
+                       TC_PRT("Input param(%d) type:%s", param_index + 1, param_type);
+                       param_index++;
+
+                       break;
+
+               }
                default:
                        TC_PRT("There is no param to set\n");
                        need_to_set_params = false;
@@ -3311,6 +3786,35 @@ int test_set_params(int test_id, char *param)
                        break;
                }
 
+               case BT_UNIT_TEST_FUNCTION_DEVICE_UPDATE_LE_CONNECTION_MODE: {
+                       if (param_index == 0) {
+                               g_test_param.param_count = 1;
+                               g_test_param.params = g_malloc0(sizeof(char*) * g_test_param.param_count);
+                               param_type = BT_UNIT_TEST_PARAM_TYPE_INT;
+                       }
+
+                       if (param_index > 0) {
+                               g_test_param.params[param_index - 1] = g_malloc0(strlen(param) + 1);
+                               strncpy(g_test_param.params[param_index - 1], param, strlen(param));
+                       }
+
+                       if (param_index == g_test_param.param_count) {
+                               need_to_set_params = false;
+#ifdef ARCH64
+                               test_input_callback((void *)(uintptr_t)test_id);
+#else
+                               test_input_callback((void *)test_id);
+#endif
+                               param_index = 0;
+                               return 0;
+                       }
+
+                       TC_PRT("Input param(%d) mode (0 : balanced, 1 : low latency, 2 : low power) : %s", param_index + 1, param_type);
+                       param_index++;
+
+                       break;
+               }
+
                case BT_UNIT_TEST_FUNCTION_DEVICE_REQUEST_ATT_MTU: {
                        if (param_index == 0) {
                                g_test_param.param_count = 1;
@@ -3362,7 +3866,7 @@ int test_set_params(int test_id, char *param)
                                g_test_param.params[param_index - 1] = g_malloc0(len + 1);
                                /* Remove new line character */
                                param[len - 1] = '\0';
-                               strcpy(g_test_param.params[param_index - 1], param);
+                               strncpy(g_test_param.params[param_index - 1], param, strlen(param));
                        }
 
                        if (param_index == g_test_param.param_count) {
@@ -3392,7 +3896,7 @@ int test_set_params(int test_id, char *param)
                                g_test_param.params[param_index - 1] = g_malloc0(len + 1);
                                /* Remove new line character */
                                param[len - 1] = '\0';
-                               strcpy(g_test_param.params[param_index - 1], param);
+                               strncpy(g_test_param.params[param_index - 1], param, strlen(param));
                        }
 
                        if (param_index == g_test_param.param_count) {
@@ -3605,6 +4109,35 @@ int test_set_params(int test_id, char *param)
 
                        break;
                }
+               case BT_UNIT_TEST_FUNCTION_AG_SWITCH_HEADSET: {
+                       if (param_index == 0) {
+                               g_test_param.param_count = 1;
+                               g_test_param.params = g_malloc0(sizeof(char *) *g_test_param.param_count);
+                               param_type = BT_UNIT_TEST_PARAM_TYPE_STRING;
+                       }
+
+                       if (param_index > 0) {
+                               g_test_param.params[param_index - 1] = g_malloc0(strlen(param) + 1);
+                               strncpy(g_test_param.params[param_index - 1], param, strlen(param));
+                       }
+
+                       if (param_index == g_test_param.param_count) {
+                               need_to_set_params = false;
+#ifdef ARCH64
+                               test_input_callback((void *)(uintptr_t)test_id);
+#else
+                               test_input_callback((void *)test_id);
+#endif
+                               param_index = 0;
+                               return 0;
+                       }
+
+                       TC_PRT("Input param(%d) type:%s",
+                               param_index + 1, param_type);
+                       param_index++;
+
+                       break;
+               }
 
                default:
                        TC_PRT("There is no param to set\n");
@@ -3655,6 +4188,48 @@ int test_set_params(int test_id, char *param)
 
                        break;
                }
+               case BT_UNIT_TEST_FUNCTION_GATT_SET_WRITE_TYPE: {
+                       if (param_index == 0) {
+                               g_test_param.param_count = 3;
+                               g_test_param.params = g_malloc0(sizeof(char*) *g_test_param.param_count);
+                               param_type = BT_UNIT_TEST_PARAM_TYPE_STRING;
+                       }
+
+                       if (param_index > 0) {
+                               int len = strlen(param);
+                               g_test_param.params[param_index - 1] = g_malloc0(strlen(param) + 1);
+                               /* Remove new line character */
+                               param[len - 1] = '\0';
+                               strncpy(g_test_param.params[param_index - 1], param, strlen(param));
+                       }
+
+                       if (param_index == g_test_param.param_count) {
+                               need_to_set_params = false;
+#ifdef ARCH64
+                               test_input_callback((void *)(uintptr_t)test_id);
+#else
+                               test_input_callback((void *)test_id);
+#endif
+                               param_index = 0;
+                               return 0;
+                       }
+
+                       switch (param_index) {
+                       case 0:
+                               TC_PRT("Input Service UUID");
+                               break;
+                       case 1:
+                               TC_PRT("Input Characteristic UUID");
+                               break;
+                       case 2:
+                               TC_PRT("Input write_type (0 : no response, 1 : with reponse, 2 : signed)");
+                               break;
+                       }
+
+                       param_index++;
+
+                       break;
+               }
                case BT_UNIT_TEST_FUNCTION_GATT_CLIENT_READ_VALUE: {
                        if (param_index == 0) {
                                g_test_param.param_count = 3;
@@ -4152,8 +4727,7 @@ int test_set_params(int test_id, char *param)
                                                                                                        \n6.BT_DPM_POLICY_HSP_PROFILE_STATE, \
                                                                                                        \n7.BT_DPM_POLICY_PBAP_PROFILE_STATE, \
                                                                                                        \n8.BT_DPM_POLICY_SAP_PROFILE_STATE, \
-                                                                                                       \n9.BT_DPM_POLICY_SPP_PROFILE_STATE, \
-                                                                                                       \n10.BT_DPM_PROFILE_NONE");
+                                                                                                       \n9.BT_DPM_POLICY_SPP_PROFILE_STATE");
                                        break;
                                case 1:
                                        TC_PRT("Input Value Type (avail. : \n0.BT_DPM_BT_ALLOWED, \n1.BT_DPM_RESTRICTED");
@@ -4197,8 +4771,7 @@ int test_set_params(int test_id, char *param)
                                                                                                        \n6.BT_DPM_POLICY_HSP_PROFILE_STATE, \
                                                                                                        \n7.BT_DPM_POLICY_PBAP_PROFILE_STATE, \
                                                                                                        \n8.BT_DPM_POLICY_SAP_PROFILE_STATE, \
-                                                                                                       \n9.BT_DPM_POLICY_SPP_PROFILE_STATE, \
-                                                                                                       \n10.BT_DPM_PROFILE_NONE");
+                                                                                                       \n9.BT_DPM_POLICY_SPP_PROFILE_STATE");
                                        break;
                                }
 
@@ -4220,48 +4793,14 @@ int test_set_params(int test_id, char *param)
 
        case BT_UNIT_TEST_TABLE_PXP: {
                switch (test_id) {
-               case BT_UNIT_TEST_FUNCTION_PXP_REGISTER:
-               case BT_UNIT_TEST_FUNCTION_PXP_UNREGISTER: {
+               case BT_UNIT_TEST_FUNCTION_PXP_MONITOR_WRITE_LINKLOSS_ALERT:
+               case BT_UNIT_TEST_FUNCTION_PXP_MONITOR_WRITE_IMMEDIATE_ALERT: {
                        if (param_index == 0) {
                                g_test_param.param_count = 1;
                                g_test_param.params = g_malloc0(sizeof(char *) *g_test_param.param_count);
                                param_type = BT_UNIT_TEST_PARAM_TYPE_INT;
                        }
 
-                       if (param_index > 0) {
-                               g_test_param.params[param_index - 1] = g_malloc0(strlen(param) + 1);
-                               strncpy(g_test_param.params[param_index - 1], param, strlen(param));
-                       }
-
-                       if (param_index == g_test_param.param_count) {
-                               need_to_set_params = false;
-#ifdef ARCH64
-                               test_input_callback((void *)(uintptr_t)test_id);
-#else
-                               test_input_callback((void *)test_id);
-#endif
-                               param_index = 0;
-                               return 0;
-                       }
-                       switch (param_index) {
-                       case 0:
-                               TC_PRT("Input Value Type (avail. : \n0.BT_PROXIMITY_REPORTER, \n1.BT_PROXIMITY_MONITOR");
-                               break;
-                       }
-
-                       TC_PRT("Input param(%d) type:%s",
-                               param_index + 1, param_type);
-                       param_index++;
-
-                       break;
-               }
-               case BT_UNIT_TEST_FUNCTION_PXP_WRITE_ALERT_LEVEL: {
-                       if (param_index == 0) {
-                               g_test_param.param_count = 2;
-                               g_test_param.params = g_malloc0(sizeof(char *) *g_test_param.param_count);
-                               param_type = BT_UNIT_TEST_PARAM_TYPE_INT;
-                       }
-
                        if (param_index > 0) {
                                int len = strlen(param);
                                g_test_param.params[param_index - 1] = g_malloc0(len + 1);
@@ -4283,9 +4822,6 @@ int test_set_params(int test_id, char *param)
 
                        switch (param_index) {
                        case 0:
-                               TC_PRT("Input Value Type (avail. : \n1.BT_PROXIMITY_LINKLOSS_ALERT, \n2.BT_PROXIMITY_IMMEDIATE_ALERT");
-                               break;
-                       case 1:
                                TC_PRT("Input Value Type (avail. : \n0.NONE, \n1.MILD, \n2.HIGH");
                                break;
                        }
@@ -4294,45 +4830,6 @@ int test_set_params(int test_id, char *param)
 
                        break;
                }
-               case BT_UNIT_TEST_FUNCTION_PXP_READ_ALERT_LEVEL: {
-                       if (param_index == 0) {
-                               g_test_param.param_count = 1;
-                               g_test_param.params = g_malloc0(sizeof(char *) *g_test_param.param_count);
-                               param_type = BT_UNIT_TEST_PARAM_TYPE_INT;
-                       }
-
-                       if (param_index > 0) {
-                               int len = strlen(param);
-                               g_test_param.params[param_index - 1] = g_malloc0(len + 1);
-                               /* Remove new line character */
-                               param[len - 1] = '\0';
-                               strncpy(g_test_param.params[param_index - 1], param, strlen(param));
-                       }
-
-                       if (param_index == g_test_param.param_count) {
-                               need_to_set_params = false;
-#ifdef ARCH64
-                               test_input_callback((void *)(uintptr_t)test_id);
-#else
-                               test_input_callback((void *)test_id);
-#endif
-                               param_index = 0;
-                               return 0;
-                       }
-
-                       switch (param_index) {
-                       case 0:
-                               TC_PRT("Input Value Type (avail. : \n1.BT_PROXIMITY_LINKLOSS_ALERT, \n2.BT_PROXIMITY_IMMEDIATE_ALERT");
-                               break;
-                       }
-
-                       TC_PRT("Input param(%d) type:%s",
-                               param_index + 1, param_type);
-                       param_index++;
-
-                       break;
-               }
-
                default:
                        TC_PRT("There is no param to set\n");
                        need_to_set_params = false;
@@ -4502,35 +4999,65 @@ int test_set_params(int test_id, char *param)
                break;
        }
 
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
-       case BT_UNIT_TEST_TABLE_HF: {
-               switch (test_id) {
-               default:
-                       TC_PRT("There is no param to set\n");
-                       need_to_set_params = false;
-                       break;
-               }
-
-               break;
-       }
-       case BT_UNIT_TEST_TABLE_PBAP_CLIENT: {
-               switch (test_id) {
-               default:
-                       TC_PRT("There is no param to set\n");
-                       need_to_set_params = false;
-                       break;
-               }
-
-               break;
-       }
-#endif
-       case BT_UNIT_TEST_TABLE_ETC: {
+       case BT_UNIT_TEST_TABLE_HF:
+       {
                switch (test_id) {
-               case BT_UNIT_TEST_FUNCTION_CHECK_FEATURE: {
+               case BT_UNIT_TEST_FUNCTION_HF_NOTIFY_CALL_WITH_PARAM: {
                        if (param_index == 0) {
                                g_test_param.param_count = 1;
-                               g_test_param.params = g_malloc0(sizeof(char *) * g_test_param.param_count);
-                               param_type = BT_UNIT_TEST_PARAM_TYPE_STRING;
+                               g_test_param.params = g_malloc0(sizeof(char*) * g_test_param.param_count);
+                               param_type = BT_UNIT_TEST_PARAM_TYPE_INT;
+                       }
+
+                       if (param_index > 0) {
+                               g_test_param.params[param_index - 1] = g_malloc0(strlen(param) + 1);
+                               strncpy(g_test_param.params[param_index - 1], param, strlen(param));
+                       }
+
+                       if (param_index == g_test_param.param_count) {
+                               need_to_set_params = false;
+#ifdef ARCH64
+                               test_input_callback((void *)(uintptr_t)test_id);
+#else
+                               test_input_callback((void *)test_id);
+#endif
+                               param_index = 0;
+                               return 0;
+                       }
+
+                       TC_PRT("Input param(%d) type:%s", param_index + 1, param_type);
+                       param_index++;
+
+                       break;
+               }
+               default:
+                       TC_PRT("There is no param to set\n");
+                       need_to_set_params = false;
+                       break;
+               }
+
+               break;
+       }
+       case BT_UNIT_TEST_TABLE_PBAP_CLIENT:
+               if (!TIZEN_PROFILE_WEARABLE_IVI)
+                       goto __default__;
+       {
+               switch (test_id) {
+               default:
+                       TC_PRT("There is no param to set\n");
+                       need_to_set_params = false;
+                       break;
+               }
+
+               break;
+       }
+       case BT_UNIT_TEST_TABLE_ETC: {
+               switch (test_id) {
+               case BT_UNIT_TEST_FUNCTION_CHECK_FEATURE: {
+                       if (param_index == 0) {
+                               g_test_param.param_count = 1;
+                               g_test_param.params = g_malloc0(sizeof(char *) * g_test_param.param_count);
+                               param_type = BT_UNIT_TEST_PARAM_TYPE_STRING;
                        }
 
                        if (param_index > 0) {
@@ -4538,7 +5065,7 @@ int test_set_params(int test_id, char *param)
                                g_test_param.params[param_index - 1] = g_malloc0(len + 1);
                                /* Remove new line character */
                                param[len - 1] = '\0';
-                               strcpy(g_test_param.params[param_index - 1], param);
+                               strncpy(g_test_param.params[param_index - 1], param, strlen(param));
                        }
 
                        if (param_index == g_test_param.param_count) {
@@ -4564,6 +5091,168 @@ int test_set_params(int test_id, char *param)
 
                break;
        }
+       case BT_UNIT_TEST_TABLE_OTP: {
+               switch (test_id) {
+               case BT_UNIT_TEST_FUNCTION_OTP_SERVER_INIT: {
+                       if (param_index == 0) {
+                               g_test_param.param_count = 1;
+                               g_test_param.params = g_malloc0(sizeof(char *) *g_test_param.param_count);
+                       }
+
+                       if (param_index > 0) {
+                               int len = strlen(param);
+                               g_test_param.params[param_index - 1] = g_malloc0(len + 1);
+                               /* Remove new line character */
+                               param[len - 1] = '\0';
+                               strncpy(g_test_param.params[param_index - 1], param, strlen(param));
+                       }
+
+                       if (param_index == g_test_param.param_count) {
+                               need_to_set_params = false;
+#ifdef ARCH64
+                               test_input_callback((void *)(uintptr_t)test_id);
+#else
+                               test_input_callback((void *)test_id);
+#endif
+                               param_index = 0;
+                               return 0;
+                       }
+
+                       switch (param_index) {
+                       case 0:
+                               TC_PRT("Input Value in string");
+                               break;
+                       }
+
+                       param_index++;
+
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_CLIENT_SELECT_OBJ: {
+                       if (param_index == 0) {
+                               g_test_param.param_count = 1;
+                               g_test_param.params = g_malloc0(sizeof(char *) *g_test_param.param_count);
+                               param_type = BT_UNIT_TEST_PARAM_TYPE_INT;
+                       }
+
+                       if (param_index > 0) {
+                               int len = strlen(param);
+                               g_test_param.params[param_index - 1] = g_malloc0(len + 1);
+                               /* Remove new line character */
+                               param[len - 1] = '\0';
+                               strncpy(g_test_param.params[param_index - 1], param, strlen(param));
+                       }
+
+                       if (param_index == g_test_param.param_count) {
+                               need_to_set_params = false;
+#ifdef ARCH64
+                               test_input_callback((void *)(uintptr_t)test_id);
+#else
+                               test_input_callback((void *)test_id);
+#endif
+                               param_index = 0;
+                               return 0;
+                       }
+
+                       switch (param_index) {
+                       case 0:
+                               TC_PRT("Input Value in uint64_t");
+                               break;
+                       }
+
+                       param_index++;
+
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_CLIENT_CREATE_OBJ: {
+                       if (param_index == 0) {
+                               g_test_param.param_count = 1;
+                               g_test_param.params = g_malloc0(sizeof(char *) *g_test_param.param_count);
+                       }
+
+                       if (param_index > 0) {
+                               int len = strlen(param);
+                               g_test_param.params[param_index - 1] = g_malloc0(len + 1);
+                               /* Remove new line character */
+                               param[len - 1] = '\0';
+                               strncpy(g_test_param.params[param_index - 1], param, strlen(param));
+                       }
+
+                       if (param_index == g_test_param.param_count) {
+                               need_to_set_params = false;
+#ifdef ARCH64
+                               test_input_callback((void *)(uintptr_t)test_id);
+#else
+                               test_input_callback((void *)test_id);
+#endif
+                               param_index = 0;
+                               return 0;
+                       }
+
+                       switch (param_index) {
+                       case 0:
+                               TC_PRT("Input Value in string");
+                               break;
+                       }
+
+                       param_index++;
+
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_CLIENT_WRITE_OBJ: {
+                       if (param_index == 0) {
+                               g_test_param.param_count = 4;
+                               g_test_param.params = g_malloc0(sizeof(char *) *g_test_param.param_count);
+                       }
+
+                       if (param_index > 0) {
+                               int len = strlen(param);
+                               g_test_param.params[param_index - 1] = g_malloc0(len + 1);
+                               /* Remove new line character */
+                               param[len - 1] = '\0';
+                               strncpy(g_test_param.params[param_index - 1], param, strlen(param));
+                       }
+
+                       if (param_index == g_test_param.param_count) {
+                               need_to_set_params = false;
+#ifdef ARCH64
+                               test_input_callback((void *)(uintptr_t)test_id);
+#else
+                               test_input_callback((void *)test_id);
+#endif
+
+                               param_index = 0;
+                               return 0;
+                       }
+
+                       switch (param_index) {
+                       case 0:
+                               TC_PRT("Input file path");
+                               break;
+                       case 1:
+                               TC_PRT("Input offset");
+                               break;
+                       case 2:
+                               TC_PRT("Input Length");
+                               break;
+                       case 3:
+                               TC_PRT("Input mode");
+                               break;
+                       }
+
+                       param_index++;
+
+                       break;
+               }
+               default:
+                       TC_PRT("There is no param to set\n");
+                       need_to_set_params = false;
+                       break;
+               }
+
+               break;
+       }
+__default__:
        default:
                TC_PRT("There is no param to set\n");
                need_to_set_params = false;
@@ -4650,6 +5339,21 @@ int test_input_callback(void *data)
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
                }
+               case BT_UNIT_TEST_FUNCTION_ADAPTER_FOREACH_PROFILE_CONNECTED_DEVICES: {
+                       ret = bt_adapter_foreach_profile_connected_devices(BT_PROFILE_SERVICE_UUID_SPP,
+                               __bt_adapter_profile_connected_devices_cb, NULL);
+                       TC_PRT("SPP connected devices returns %s\n", __bt_get_error_message(ret));
+                       ret = bt_adapter_foreach_profile_connected_devices(BT_PROFILE_SERVICE_UUID_HFP_HF,
+                               __bt_adapter_profile_connected_devices_cb, NULL);
+                       TC_PRT("HFP HF connected devices returns %s\n", __bt_get_error_message(ret));
+                       ret = bt_adapter_foreach_profile_connected_devices(BT_PROFILE_SERVICE_UUID_A2DP_SOURCE,
+                               __bt_adapter_profile_connected_devices_cb, NULL);
+                       TC_PRT("A2DP Source connected devices returns %s\n", __bt_get_error_message(ret));
+                       ret = bt_adapter_foreach_profile_connected_devices(BT_PROFILE_SERVICE_UUID_AVRCP_CONTROL,
+                               __bt_adapter_profile_connected_devices_cb, NULL);
+                       TC_PRT("AVRCP Control connected devices returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
                case BT_UNIT_TEST_FUNCTION_ADAPTER_GET_BONDED_DEVICE_INFO: {
                        bt_device_info_s *device_info = NULL;
 
@@ -4683,6 +5387,26 @@ int test_input_callback(void *data)
                        TC_PRT("time: %d", time);
                        break;
                }
+               case BT_UNIT_TEST_FUNCTION_ADAPTER_SET_VISIBILITY: {
+                       int mode = BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE;
+                       int timeout_sec = 0;
+
+                       if (g_test_param.param_count > 0) {
+                               if (g_test_param.params[0][0] == '-')
+                                       mode = BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE;
+                               else if (g_test_param.params[0][0] == '0')
+                                       mode = BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE;
+                               else {
+                                       mode = BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE;
+                                       timeout_sec = atoi(g_test_param.params[0]);
+                               }
+                               __bt_free_test_param(&g_test_param);
+                       }
+
+                       ret = bt_adapter_set_visibility(mode, timeout_sec);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
                case BT_UNIT_TEST_FUNCTION_ADAPTER_SET_DEVICE_DISCOVERY_STATE_CHANGED_CB:
                        ret = bt_adapter_set_device_discovery_state_changed_cb(
                                __bt_adapter_device_discovery_state_changed_cb, NULL);
@@ -5047,17 +5771,19 @@ int test_input_callback(void *data)
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
 
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
                case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_START_DEVICE_DISCOVERY:
+                       if (TIZEN_PROFILE_WEARABLE_IVI)
+                               break;
                        ret = bt_adapter_le_start_device_discovery();
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
 
                case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_STOP_DEVICE_DISCOVERY:
+                       if (TIZEN_PROFILE_WEARABLE_IVI)
+                               break;
                        ret = bt_adapter_le_stop_device_discovery();
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
-#endif
 
                case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_ADD_ADVERTISING_DATA: {
                        int adv_data_type = 3; /* default all */
@@ -5073,6 +5799,7 @@ int test_input_callback(void *data)
                        const char *heart_rate_svc_uuid_16 = "180d";
                        const char *lmmediate_alert_svc_uuid_16 = "1802";
                        const char *ancs_uuid_128 = "7905F431-B5CE-4E99-A40F-4B1E122D00D0";
+                       const char *ams_uuid_128 = "89D3502B-0F36-433A-8EF4-C502AD55F8DC";
                        int appearance = 192;  /* 192 is generic watch */
 
                        advertiser = advertiser_list[advertiser_index];
@@ -5191,6 +5918,24 @@ int test_input_callback(void *data)
 
                                return 0;
 
+                       case 5: /* AMS */
+                               ret = bt_adapter_le_add_advertising_service_solicitation_uuid(advertiser,
+                                               BT_ADAPTER_LE_PACKET_ADVERTISING, time_svc_uuid_16);
+                               if (ret != BT_ERROR_NONE)
+                                       TC_PRT("add service_solicitation_uuid [0x%04x]", ret);
+
+                               ret = bt_adapter_le_add_advertising_service_solicitation_uuid(advertiser,
+                                               BT_ADAPTER_LE_PACKET_ADVERTISING, ams_uuid_128);
+                               if (ret != BT_ERROR_NONE)
+                                       TC_PRT("add service_solicitation_uuid [0x%04x]", ret);
+
+                               ret = bt_adapter_le_set_advertising_device_name(advertiser,
+                                       BT_ADAPTER_LE_PACKET_SCAN_RESPONSE, true);
+                               if (ret != BT_ERROR_NONE)
+                                       TC_PRT("set device name [0x%04x]", ret);
+
+                               return 0;
+
                        default:
                                TC_PRT("No adv data");
                                break;
@@ -5217,8 +5962,11 @@ int test_input_callback(void *data)
 
                        break;
                }
-               case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_ADVERTISING_MODE: {
-                       int mode = BT_ADAPTER_LE_ADVERTISING_MODE_BALANCED;
+               case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_ADD_HOGP_ADVERTISING_DATA: {
+                       const char *battery_svc_uuid_16 = "180f";
+                       const char *hid_svc_uuid_16 = "1812";
+                       const char *gatt_svc_uuid_16 = "1801";
+                       int appearance = 192;  /* 192 is generic watch */
 
                        advertiser = advertiser_list[advertiser_index];
 
@@ -5226,24 +5974,77 @@ int test_input_callback(void *data)
                                ret = bt_adapter_le_create_advertiser(&advertiser);
                                TC_PRT("created le advertiser(%d)", ret);
                                advertiser_list[advertiser_index] = advertiser;
+                       } else {
+                               ret = bt_adapter_le_clear_advertising_data(advertiser,
+                                       BT_ADAPTER_LE_PACKET_ADVERTISING);
+                               if (ret != BT_ERROR_NONE)
+                                       TC_PRT("clear advertising data [0x%04x]", ret);
+                               ret = bt_adapter_le_clear_advertising_data(advertiser,
+                                       BT_ADAPTER_LE_PACKET_SCAN_RESPONSE);
+                               if (ret != BT_ERROR_NONE)
+                                       TC_PRT("clear scan response data [0x%04x]", ret);
                        }
 
-                       if (g_test_param.param_count > 0) {
-                               mode = atoi(g_test_param.params[0]);
-                               __bt_free_test_param(&g_test_param);
-                       }
+                       ret = bt_adapter_le_add_advertising_service_uuid(advertiser,
+                                       BT_ADAPTER_LE_PACKET_ADVERTISING, battery_svc_uuid_16);
+                       if (ret != BT_ERROR_NONE)
+                               TC_PRT("add service_uuid [0x%04x]", ret);
 
-                       ret = bt_adapter_le_set_advertising_mode(advertiser, mode);
+                       ret = bt_adapter_le_add_advertising_service_uuid(advertiser,
+                                       BT_ADAPTER_LE_PACKET_ADVERTISING, hid_svc_uuid_16);
                        if (ret != BT_ERROR_NONE)
-                               TC_PRT("add scan response data [0x%04x]", ret);
-                       break;
-               }
-               case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_ADVERTISING_FILTER_POLICY: {
-                       int filter_policy = BT_ADAPTER_LE_ADVERTISING_FILTER_ALLOW_CONN_WL;
+                               TC_PRT("add service_uuid [0x%04x]", ret);
 
-                       advertiser = advertiser_list[advertiser_index];
+                       ret = bt_adapter_le_add_advertising_service_uuid(advertiser,
+                                       BT_ADAPTER_LE_PACKET_ADVERTISING, gatt_svc_uuid_16);
+                       if (ret != BT_ERROR_NONE)
+                               TC_PRT("add service_uuid [0x%04x]", ret);
 
-                       if (advertiser == NULL) {
+                       ret = bt_adapter_le_set_advertising_appearance(advertiser,
+                               BT_ADAPTER_LE_PACKET_ADVERTISING, appearance);
+                       if (ret != BT_ERROR_NONE)
+                               TC_PRT("add appearance data [0x%04x]", ret);
+
+                       ret = bt_adapter_le_set_advertising_tx_power_level(advertiser,
+                               BT_ADAPTER_LE_PACKET_ADVERTISING, true);
+                       if (ret != BT_ERROR_NONE)
+                               TC_PRT("add tx_power_level [0x%04x]", ret);
+
+                       /* Default scsn response data */
+                       ret = bt_adapter_le_set_advertising_device_name(advertiser,
+                               BT_ADAPTER_LE_PACKET_SCAN_RESPONSE, true);
+                       if (ret != BT_ERROR_NONE)
+                               TC_PRT("set device name [0x%04x]", ret);
+
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_ADVERTISING_MODE: {
+                       int mode = BT_ADAPTER_LE_ADVERTISING_MODE_BALANCED;
+
+                       advertiser = advertiser_list[advertiser_index];
+
+                       if (advertiser == NULL) {
+                               ret = bt_adapter_le_create_advertiser(&advertiser);
+                               TC_PRT("created le advertiser(%d)", ret);
+                               advertiser_list[advertiser_index] = advertiser;
+                       }
+
+                       if (g_test_param.param_count > 0) {
+                               mode = atoi(g_test_param.params[0]);
+                               __bt_free_test_param(&g_test_param);
+                       }
+
+                       ret = bt_adapter_le_set_advertising_mode(advertiser, mode);
+                       if (ret != BT_ERROR_NONE)
+                               TC_PRT("add scan response data [0x%04x]", ret);
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_ADVERTISING_FILTER_POLICY: {
+                       int filter_policy = BT_ADAPTER_LE_ADVERTISING_FILTER_ALLOW_CONN_WL;
+
+                       advertiser = advertiser_list[advertiser_index];
+
+                       if (advertiser == NULL) {
                                ret = bt_adapter_le_create_advertiser(&advertiser);
                                TC_PRT("created le advertiser(%d)", ret);
                                advertiser_list[advertiser_index] = advertiser;
@@ -5288,14 +6089,14 @@ int test_input_callback(void *data)
                        else cb = __bt_adapter_le_advertising_state_changed_cb_3;
 
                        advertiser = advertiser_list[advertiser_index];
+                       advertiser_index++;
+                       advertiser_index %= 3;
 
                        if (advertiser == NULL) {
                                ret = bt_adapter_le_create_advertiser(&advertiser);
                                TC_PRT("created le advertiser(%d)", ret);
                                advertiser_list[advertiser_index] = advertiser;
                        }
-                       advertiser_index++;
-                       advertiser_index %= 3;
 
                        TC_PRT("advertiser: %p", advertiser);
 
@@ -5304,8 +6105,9 @@ int test_input_callback(void *data)
                                TC_PRT("failed with [0x%04x]", ret);
                        break;
                }
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
                case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_START_ADVERTISING: {
+                       if (TIZEN_PROFILE_WEARABLE_IVI)
+                               break;
                        bt_adapter_le_advertising_state_changed_cb cb;
                        bt_adapter_le_advertising_params_s adv_params = { 0, };
 
@@ -5314,6 +6116,8 @@ int test_input_callback(void *data)
                        else cb = __bt_adapter_le_advertising_state_changed_cb_3;
 
                        advertiser = advertiser_list[advertiser_index];
+                       advertiser_index++;
+                       advertiser_index %= 3;
 
                        adv_params.interval_min = 500;
                        adv_params.interval_max = 500;
@@ -5323,8 +6127,6 @@ int test_input_callback(void *data)
                                TC_PRT("created le advertiser(%d)", ret);
                                advertiser_list[advertiser_index] = advertiser;
                        }
-                       advertiser_index++;
-                       advertiser_index %= 3;
 
                        ret = bt_adapter_le_start_advertising(advertiser,
                                &adv_params, cb, NULL);
@@ -5332,7 +6134,6 @@ int test_input_callback(void *data)
                                TC_PRT("failed with [0x%04x]", ret);
                        break;
                }
-#endif
                case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_STOP_ADVERTISING: {
                        int slot_id = 0;
 
@@ -5343,17 +6144,7 @@ int test_input_callback(void *data)
 
                        advertiser = advertiser_list[slot_id];
 
-                       TC_PRT("advertiser: %p", advertiser);
-
                        ret = bt_adapter_le_stop_advertising(advertiser);
-
-                       if (advertiser_index > 0)
-                               advertiser_index--;
-                       else
-                               advertiser_index = 2;
-
-                       advertiser_list[slot_id] = NULL;
-
                        if (ret < BT_ERROR_NONE)
                                        TC_PRT("failed with [0x%04x]", ret);
                        break;
@@ -5372,13 +6163,13 @@ int test_input_callback(void *data)
                        break;
                }
 
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
                case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_CLEAR_WHITE_LIST: {
+                       if (TIZEN_PROFILE_WEARABLE_IVI)
+                               break;
                        ret = bt_adapter_le_clear_white_list();
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
                }
-#endif
 
                case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_ENABLE_PRIVACY: {
                        static bool enable_privacy = false;
@@ -5402,10 +6193,58 @@ int test_input_callback(void *data)
                        break;
                }
 
+               case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_REMOTE_OOB_EXT_DATA: {
+                       char remote_addr[18];
+                       unsigned char *data[2];
+                       int len[2];
+                       int i;
+                       char tmp[3];
+                       long val;
+                       bt_device_address_type_e addr_type = BT_DEVICE_PUBLIC_ADDRESS;
+
+                       if (g_test_param.param_count != 3) {
+                               TC_PRT("Input parameter first!");
+                               break;
+                       }
+
+                       g_strlcpy(remote_addr, g_test_param.params[0],
+                                       sizeof(remote_addr));
+
+                       for (i = 0; i < 2; i++) {
+                               len[i] = strlen(g_test_param.params[i + 1]) / 2;
+                               data[i] = g_malloc0(len[i]);
+                       }
+
+                       for (i = 0; i < 2; i++) {
+                               int j;
+
+                               printf("Data[%d] : ", i);
+                               for (j = 0; j < len[i]; j++) {
+                                       g_strlcpy(tmp, g_test_param.params[i + 1] + 2 * j, sizeof(tmp));
+                                       val = strtol(tmp, NULL, 16);
+                                       data[i][j] = val;
+                                       printf("%02x", data[i][j]);
+                               }
+                               printf("\n");
+                       }
+
+                       ret = bt_adapter_le_set_remote_oob_ext_data(remote_addr,
+                                       addr_type,
+                                       data[0], data[1], len[0], len[1]);
+
+                       __bt_free_test_param(&g_test_param);
+
+                       for (i = 0; i < 2; i++)
+                               g_free(data[i]);
+
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+
                case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_DEVICE_ADDRESS: {
                        bt_scan_filter_h scan_filter;
 
-                       ret = bt_adapter_le_create_scan_filter(&scan_filter);
+                       ret = bt_adapter_le_scan_filter_create(&scan_filter);
                        if (ret != BT_ERROR_NONE)
                                TC_PRT("failed with [0x%04x]", ret);
 
@@ -5413,11 +6252,11 @@ int test_input_callback(void *data)
                        if (ret != BT_ERROR_NONE)
                                TC_PRT("failed with [0x%04x]", ret);
 
-                       ret = bt_adapter_le_register_scan_filter(scan_filter);
+                       ret = bt_adapter_le_scan_filter_register(scan_filter);
                        if (ret != BT_ERROR_NONE)
                                TC_PRT("failed with [0x%04x]", ret);
 
-                       ret = bt_adapter_le_destroy_scan_filter(scan_filter);
+                       ret = bt_adapter_le_scan_filter_destroy(scan_filter);
                        if (ret != BT_ERROR_NONE)
                                TC_PRT("failed with [0x%04x]", ret);
 
@@ -5427,7 +6266,7 @@ int test_input_callback(void *data)
                case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_SERVICE_UUID: {
                        bt_scan_filter_h scan_filter;
 
-                       ret = bt_adapter_le_create_scan_filter(&scan_filter);
+                       ret = bt_adapter_le_scan_filter_create(&scan_filter);
                        if (ret != BT_ERROR_NONE)
                                TC_PRT("failed with [0x%04x]", ret);
 
@@ -5435,11 +6274,11 @@ int test_input_callback(void *data)
                        if (ret != BT_ERROR_NONE)
                                TC_PRT("failed with [0x%04x]", ret);
 
-                       ret = bt_adapter_le_register_scan_filter(scan_filter);
+                       ret = bt_adapter_le_scan_filter_register(scan_filter);
                        if (ret != BT_ERROR_NONE)
                                TC_PRT("failed with [0x%04x]", ret);
 
-                       ret = bt_adapter_le_destroy_scan_filter(scan_filter);
+                       ret = bt_adapter_le_scan_filter_destroy(scan_filter);
                        if (ret != BT_ERROR_NONE)
                                TC_PRT("failed with [0x%04x]", ret);
 
@@ -5449,7 +6288,7 @@ int test_input_callback(void *data)
                case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_SERVICE_SOLICITATION_UUID: {
                        bt_scan_filter_h scan_filter;
 
-                       ret = bt_adapter_le_create_scan_filter(&scan_filter);
+                       ret = bt_adapter_le_scan_filter_create(&scan_filter);
                        if (ret != BT_ERROR_NONE)
                                TC_PRT("failed with [0x%04x]", ret);
 
@@ -5457,11 +6296,37 @@ int test_input_callback(void *data)
                        if (ret != BT_ERROR_NONE)
                                TC_PRT("failed with [0x%04x]", ret);
 
-                       ret = bt_adapter_le_register_scan_filter(scan_filter);
+                       ret = bt_adapter_le_scan_filter_register(scan_filter);
+                       if (ret != BT_ERROR_NONE)
+                               TC_PRT("failed with [0x%04x]", ret);
+
+                       ret = bt_adapter_le_scan_filter_destroy(scan_filter);
+                       if (ret != BT_ERROR_NONE)
+                               TC_PRT("failed with [0x%04x]", ret);
+
+                       break;
+               }
+
+               case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_MANUFACTURER_DATA: {
+                       bt_scan_filter_h scan_filter = NULL;
+                       int manufacturer_id = 117; /* samsung */
+                       char data[] = {0x2, 0x2, 0x2, 0x2};
+                       /* Use "appearance & tx power level" of bt_adapter_le_add_XXX_advertising_data */
+
+                       ret = bt_adapter_le_scan_filter_create(&scan_filter);
+                       if (ret != BT_ERROR_NONE)
+                               TC_PRT("failed with [0x%04x]", ret);
+
+                       ret = bt_adapter_le_scan_filter_set_manufacturer_data(scan_filter,
+                                               manufacturer_id, data, sizeof(data));
+                       if (ret != BT_ERROR_NONE)
+                               TC_PRT("failed with [0x%04x]", ret);
+
+                       ret = bt_adapter_le_scan_filter_register(scan_filter);
                        if (ret != BT_ERROR_NONE)
                                TC_PRT("failed with [0x%04x]", ret);
 
-                       ret = bt_adapter_le_destroy_scan_filter(scan_filter);
+                       ret = bt_adapter_le_scan_filter_destroy(scan_filter);
                        if (ret != BT_ERROR_NONE)
                                TC_PRT("failed with [0x%04x]", ret);
 
@@ -5470,17 +6335,16 @@ int test_input_callback(void *data)
 
                case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_IBEACON_DATA: {
                        bt_scan_filter_h scan_filter;
-                       char manufacture_1[] = {0x02, 0x15, 0xD9, 0xB9, 0xEC, 0x1F, 0x39, 0x25, 0x43, 0xD0, 0x80, 0xA9, 0x1E, 0x39, 0xD4, 0xCE, 0xA9, 0x5C, 0x01, 0x00, 0x0A, 0x00, 0x10};
 
-                       ret = bt_adapter_le_create_scan_filter(&scan_filter);
+                       ret = bt_adapter_le_scan_filter_create(&scan_filter);
                        if (ret != BT_ERROR_NONE)
                           TC_PRT("failed with [0x%04x]", ret);
 
-                       ret = bt_adapter_le_set_ibeacon_scan_filter(scan_filter, manufacture_1, sizeof(manufacture_1));
+                       ret = bt_adapter_le_scan_filter_set_type(scan_filter, BT_ADAPTER_LE_SCAN_FILTER_TYPE_IBEACON);
                        if (ret != BT_ERROR_NONE)
                                TC_PRT("failed with [0x%04x]", ret);
 
-                       ret = bt_adapter_le_register_scan_filter(scan_filter);
+                       ret = bt_adapter_le_scan_filter_register(scan_filter);
                        if (ret != BT_ERROR_NONE)
                                TC_PRT("failed with [0x%04x]", ret);
 
@@ -5488,25 +6352,27 @@ int test_input_callback(void *data)
                }
 
                case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_UNREGISTER_ALL_SCAN_FILTERS: {
-                       ret = bt_adapter_le_unregister_all_scan_filters();
+                       ret = bt_adapter_le_scan_filter_unregister_all();
                        if (ret != BT_ERROR_NONE)
                                TC_PRT("failed with [0x%04x]", ret);
 
                        break;
                }
 
-#if !defined(TIZEN_PROFILE_WEARABLE) && !defined(TIZEN_PROFILE_IVI)
                case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_DEVICE_DISCOVERY_STATE_CHANGED_CB:
+                       if (TIZEN_PROFILE_WEARABLE_IVI)
+                               break;
                        ret = bt_adapter_le_set_device_discovery_state_changed_cb(
                                __bt_adapter_le_device_discovery_state_changed_cb, NULL);
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
 
                case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_UNSET_DEVICE_DISCOVERY_STATE_CHANGED_CB:
+                       if (TIZEN_PROFILE_WEARABLE_IVI)
+                               break;
                        ret = bt_adapter_le_unset_device_discovery_state_changed_cb();
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
-#endif
                case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_READ_MAXIMUM_DATA_LENGTH: {
 
                        TC_PRT("Read Maximum LE Data length");
@@ -5741,6 +6607,25 @@ int test_input_callback(void *data)
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
                }
+
+               case BT_UNIT_TEST_FUNCTION_DEVICE_UPDATE_LE_CONNECTION: {
+                       bt_le_conn_update_s param;
+
+                       if (g_test_param.param_count == 0)
+                               break;
+
+                       param.interval_min = atof(g_test_param.params[0]);
+                       param.interval_max = atof(g_test_param.params[1]);
+                       param.latency = atoi(g_test_param.params[2]);
+                       param.time_out = atoi(g_test_param.params[3]);
+
+                       __bt_free_test_param(&g_test_param);
+
+                       ret = bt_device_le_conn_update(remote_addr, &param);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+
                case BT_UNIT_TEST_FUNCTION_ACTIVATE_FLAG_TO_SET_PARAMETERS:
                        need_to_set_params = true;
                        TC_PRT("Select the function again");
@@ -6190,6 +7075,19 @@ int test_input_callback(void *data)
                                TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
                }
+               case BT_UNIT_TEST_FUNCTION_AG_SWITCH_HEADSET: {
+                       if (g_test_param.param_count < 0) {
+                               TC_PRT("Input parameters first");
+                               break;
+                       }
+
+                       ret = bt_ag_switch_headset(g_test_param.params[0]);
+                       __bt_free_test_param(&g_test_param);
+
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+
                case BT_UNIT_TEST_FUNCTION_ACTIVATE_FLAG_TO_SET_PARAMETERS:
                        need_to_set_params = true;
                        TC_PRT("Select the function again");
@@ -6293,6 +7191,43 @@ int test_input_callback(void *data)
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
                }
+               case BT_UNIT_TEST_FUNCTION_GATT_SET_WRITE_TYPE: {
+                       char *svc_uuid = NULL;
+                       char *chr_uuid = NULL;
+                       bt_gatt_h svc = NULL;
+                       bt_gatt_h chr = NULL;
+                       bt_gatt_write_type_e write_type;
+
+                       if (g_test_param.param_count < 3) {
+                               TC_PRT("Input parameters first");
+                               break;
+                       }
+
+                       svc_uuid = g_test_param.params[0];
+                       chr_uuid = g_test_param.params[1];
+
+                       ret = bt_gatt_client_get_service(client, svc_uuid, &svc);
+                       if (ret != BT_ERROR_NONE) {
+                               TC_PRT("bt_gatt_client_get_service is failed : %d", ret);
+                               __bt_free_test_param(&g_test_param);
+                               break;
+                       }
+
+                       ret = bt_gatt_service_get_characteristic(svc, chr_uuid, &chr);
+                       if (ret != BT_ERROR_NONE) {
+                               TC_PRT("bt_gatt_service_get_characteristic is failed : %d", ret);
+                               __bt_free_test_param(&g_test_param);
+                               break;
+                       }
+
+                       write_type = atoi(g_test_param.params[2]);
+                       ret = bt_gatt_characteristic_set_write_type(chr, write_type);
+                       if (ret != BT_ERROR_NONE)
+                               TC_PRT("bt_gatt_characteristic_set_write_type is failed : %d", ret);
+
+                       __bt_free_test_param(&g_test_param);
+                       break;
+               }
                case BT_UNIT_TEST_FUNCTION_GATT_CLIENT_CREATE: {
                        if (client) {
                               bt_gatt_client_destroy(client);
@@ -6549,6 +7484,25 @@ int test_input_callback(void *data)
                                TC_PRT("bt_gatt_client_foreach_services_by_uuid is failed");
                        break;
                }
+               case BT_UNIT_TEST_FUNCTION_GATT_CLIENT_REQUEST_ATT_MTU: {
+                       unsigned int mtu = 512; /* MAX MTU Value */
+
+                       if (g_test_param.param_count > 0) {
+                               mtu = atoi(g_test_param.params[0]);
+
+                               __bt_free_test_param(&g_test_param);
+                       }
+
+                       ret = bt_gatt_client_request_att_mtu_change(client, mtu);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_GATT_CLIENT_GET_ATT_MTU: {
+                       unsigned int mtu = 0;
+                       ret = bt_gatt_client_get_att_mtu(client, &mtu);
+                       TC_PRT("returns %s, MTU %d\n", __bt_get_error_message(ret), mtu);
+                       break;
+               }
                case BT_UNIT_TEST_FUNCTION_GATT_CLIENT_SET_SERVICE_CHANGED_CB: {
                        ret = bt_gatt_client_set_service_changed_cb(client,
                                        __bt_gatt_client_service_changed_cb, NULL);
@@ -6562,6 +7516,16 @@ int test_input_callback(void *data)
                                TC_PRT("bt_gatt_client_unset_service_changed_cb is failed");
                        break;
                }
+               case BT_UNIT_TEST_FUNCTION_GATT_CLIENT_SET_ATT_MTU_CHANGED_CB: {
+                       ret = bt_gatt_client_set_att_mtu_changed_cb(client, __bt_gatt_client_att_mtu_changed_cb, NULL);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_GATT_CLIENT_UNSET_ATT_MTU_CHANGED_CB: {
+                       ret = bt_gatt_client_unset_att_mtu_changed_cb(client);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
                case BT_UNIT_TEST_FUNCTION_GATT_SERVER_INITIALIZE: {
 
                        ret = bt_gatt_server_initialize();
@@ -6924,19 +7888,47 @@ int test_input_callback(void *data)
 
                        break;
                }
-               case BT_UNIT_TEST_FUNCTION_GATT_SERVER_REGISTER_CUSTOM_SVC: {
-                       bt_gatt_h service = NULL;
-                       bt_gatt_h characteristic = NULL;
-                       bt_gatt_h descriptor = NULL;
-                       char *service_uuid = "000018f2-0000-1000-8000-00805f9b34fb";
-                       char *char_uuid = "00002af6-0000-1000-8000-00805f9b34fb";
-                       char *desc_uuid = "00002a56-0000-1000-8000-00805f9b34fb";
-                       char char_value[4] = {10, 20, 30, 40};
-                       char desc_value[4] = {12, 34, 56, 78};
-                       int value_length = 4;
+               case BT_UNIT_TEST_FUNCTION_GATT_SERVER_REGISTER_HOGP_SVC: {
+                       bt_gatt_h service1 = NULL;
+                       bt_gatt_h service2 = NULL;
+                       bt_gatt_h service3 = NULL;
+                       bt_gatt_h characteristic1_1 = NULL;
+                       bt_gatt_h characteristic2_1 = NULL;
+                       bt_gatt_h characteristic2_2 = NULL;
+                       bt_gatt_h characteristic2_3 = NULL;
+                       bt_gatt_h characteristic2_4 = NULL;
+                       bt_gatt_h characteristic2_5 = NULL;
+                       bt_gatt_h characteristic2_6 = NULL;
+                       bt_gatt_h characteristic2_7 = NULL;
+                       bt_gatt_h descriptor1_1 = NULL;
+                       bt_gatt_h descriptor2_3 = NULL;
+                       bt_gatt_h descriptor2_4_1 = NULL;
+                       bt_gatt_h descriptor2_4_2 = NULL;
+                       bt_gatt_h descriptor2_5_1 = NULL;
+                       bt_gatt_h descriptor2_5_2 = NULL;
+                       char *service_uuid1 = "180f"; /* Battery Service */
+                       char *service_uuid2 = "1812"; /* HID Service */
+                       char *service_uuid3 = "1801"; /* Generic Attribute Service */
+                       char *char_uuid1 = "2a19"; /* Battery Level */
+                       char *char_uuid2_1 = "2a4a"; /* HID information */
+                       char *char_uuid2_2 = "2a4b";
+                       char *char_uuid2_3 = "2a33";
+                       char *char_uuid2_4 = "2a4d";
+                       char *char_uuid2_5 = "2a4d";
+                       char *char_uuid2_6 = "2a4c";
+                       char *char_uuid2_7 = "2a4e";
+                       char *desc_uuid1_1 = "2902"; /* Client Characteristic Configuration */
+                       char *desc_uuid2_3 = "2902"; /* Client Characteristic Configuration */
+                       char *desc_uuid2_4_1 = "2902"; /* Client Characteristic Configuration */
+                       char *desc_uuid2_4_2 = "2908"; /* Report Reference */
+                       char *desc_uuid2_5_1 = "2908"; /* Report Reference */
+                       char *desc_uuid2_5_2 = "2901"; /* Characteristic User Description */
                        int permissions = BT_GATT_PERMISSION_READ | BT_GATT_PERMISSION_WRITE;
-                       int properties = BT_GATT_PROPERTY_BROADCAST | BT_GATT_PROPERTY_READ |
-                                                       BT_GATT_PROPERTY_WRITE | BT_GATT_PROPERTY_NOTIFY;
+                       int properties = BT_GATT_PROPERTY_READ | BT_GATT_PROPERTY_WRITE;
+
+                       char char_value[1] = {80}; /* 80% */
+                       char char_value_unknown[4] = {10, 20, 30, 40};
+                       char desc_value_configration[2] = {0, 0}; /* Notification & Indication */
 
                        ret = bt_gatt_server_initialize();
                        TC_PRT("bt_gatt_server_initialize : %s \n", __bt_get_error_message(ret));
@@ -6946,74 +7938,237 @@ int test_input_callback(void *data)
                                TC_PRT("bt_gatt_server_create : %s \n", __bt_get_error_message(ret));
                        }
 
-                       ret = bt_gatt_service_create(service_uuid,
+                       /* Battery Service */
+                       ret = bt_gatt_service_create(service_uuid1,
                                        BT_GATT_SERVICE_TYPE_PRIMARY,
-                                       &service);
+                                       &service1);
                        TC_PRT("bt_gatt_service_create : %s \n", __bt_get_error_message(ret));
 
-                       ret = bt_gatt_characteristic_create(char_uuid, permissions,
+                       ret = bt_gatt_characteristic_create(char_uuid1, permissions,
                                        properties, char_value,
-                                       value_length, &characteristic);
+                                       1, &characteristic1_1);
                        TC_PRT("bt_gatt_characteristic_create : %s\n", __bt_get_error_message(ret));
 
-                       bt_gatt_server_set_read_value_requested_cb(characteristic,
-                               __bt_gatt_server_read_value_requested_cb, NULL);
-                       ret = bt_gatt_service_add_characteristic(service, characteristic);
+                       ret = bt_gatt_service_add_characteristic(service1, characteristic1_1);
                        TC_PRT("bt_gatt_service_add_characteristic : %s\n", __bt_get_error_message(ret));
 
-                       ret = bt_gatt_descriptor_create(desc_uuid, permissions,
-                                       desc_value, value_length, &descriptor);
+                       ret = bt_gatt_descriptor_create(desc_uuid1_1, permissions,
+                                       desc_value_configration, 2, &descriptor1_1);
                        TC_PRT("bt_gatt_descriptor_create : %s\n", __bt_get_error_message(ret));
 
-                       bt_gatt_server_set_read_value_requested_cb(descriptor,
-                               __bt_gatt_server_read_value_requested_cb, NULL);
-
-                       ret = bt_gatt_server_set_write_value_requested_cb(descriptor,
-                               __bt_gatt_server_write_value_requested_cb,
-                               NULL);
-
-                       ret = bt_gatt_characteristic_add_descriptor(characteristic, descriptor);
+                       ret = bt_gatt_characteristic_add_descriptor(characteristic1_1, descriptor1_1);
                        TC_PRT("bt_gatt_characteristic_add_descriptor : %s\n", __bt_get_error_message(ret));
 
-                       ret = bt_gatt_server_register_service(server, service);
+                       ret = bt_gatt_server_register_service(server, service1);
                        TC_PRT("bt_gatt_server_register_service : %s\n", __bt_get_error_message(ret));
 
-                       custom_h.svc = service;
-                       custom_h.chr = characteristic;
-                       custom_h.desc = descriptor;
-                       break;
-               }
-               case BT_UNIT_TEST_FUNCTION_GATT_SERVER_CHANGE_CUSTOM_VAL: {
-                       char char_value[4] = {50, 60, 70, 80};
-                       if (!server) {
-                               TC_PRT("bt gatt server is not created");
-                               break;
-                       }
-                       ret = bt_gatt_set_value(custom_h.chr, char_value, 4);
-                       TC_PRT("returns  %s\n", __bt_get_error_message(ret));
-                       break;
-               }
-               case BT_UNIT_TEST_FUNCTION_GATT_START_SERVER: {
-                       ret = bt_gatt_server_start();
-                       TC_PRT("bt_gatt_server_register_service : %s\n", __bt_get_error_message(ret));
-                       break;
-               }
-               case BT_UNIT_TEST_FUNCTION_GATT_SERVER_FOREACH_SERVICES: {
-#ifdef ARCH64
-                       ret = bt_gatt_server_foreach_services(server,
-                       __bt_gatt_server_foreach_svc_cb, (void *)(uintptr_t)test_id);
-#else
-                       ret = bt_gatt_server_foreach_services(server,
-                       __bt_gatt_server_foreach_svc_cb, (void *)test_id);
-#endif
-                       TC_PRT("bt_gatt_server_foreach_services: %s\n", __bt_get_error_message(ret));
-                       break;
-               }
-               case BT_UNIT_TEST_FUNCTION_ANCS_PAIR: {
-                       bt_device_connection_link_type_e link_type = BT_DEVICE_CONNECTION_LINK_LE;
+                       /* HID Service */
+                       ret = bt_gatt_service_create(service_uuid2,
+                                       BT_GATT_SERVICE_TYPE_PRIMARY,
+                                       &service2);
+                       TC_PRT("bt_gatt_service_create : %s \n", __bt_get_error_message(ret));
 
-                       if (g_test_param.param_count > 0) {
-                               link_type = atoi(g_test_param.params[0]);
+                       ret = bt_gatt_characteristic_create(char_uuid2_1, permissions,
+                                       properties, char_value_unknown,
+                                       4, &characteristic2_1);
+                       TC_PRT("bt_gatt_characteristic_create : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_service_add_characteristic(service2, characteristic2_1);
+                       TC_PRT("bt_gatt_service_add_characteristic : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_characteristic_create(char_uuid2_2, permissions,
+                                       properties, char_value_unknown,
+                                       4, &characteristic2_2);
+                       TC_PRT("bt_gatt_characteristic_create : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_service_add_characteristic(service2, characteristic2_2);
+                       TC_PRT("bt_gatt_service_add_characteristic : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_characteristic_create(char_uuid2_3, permissions,
+                                       properties, char_value_unknown,
+                                       4, &characteristic2_3);
+                       TC_PRT("bt_gatt_characteristic_create : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_service_add_characteristic(service2, characteristic2_3);
+                       TC_PRT("bt_gatt_service_add_characteristic : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_descriptor_create(desc_uuid2_3, permissions,
+                                       desc_value_configration, 2, &descriptor2_3);
+                       TC_PRT("bt_gatt_descriptor_create : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_characteristic_add_descriptor(characteristic2_3, descriptor2_3);
+                       TC_PRT("bt_gatt_characteristic_add_descriptor : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_characteristic_create(char_uuid2_4, permissions,
+                                       properties, char_value_unknown,
+                                       4, &characteristic2_4);
+                       TC_PRT("bt_gatt_characteristic_create : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_service_add_characteristic(service2, characteristic2_4);
+                       TC_PRT("bt_gatt_service_add_characteristic : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_descriptor_create(desc_uuid2_4_1, permissions,
+                                       desc_value_configration, 2, &descriptor2_4_1);
+                       TC_PRT("bt_gatt_descriptor_create : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_characteristic_add_descriptor(characteristic2_4, descriptor2_4_1);
+                       TC_PRT("bt_gatt_characteristic_add_descriptor : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_descriptor_create(desc_uuid2_4_2, permissions,
+                                       desc_value_configration, 2, &descriptor2_4_2);
+                       TC_PRT("bt_gatt_descriptor_create : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_characteristic_add_descriptor(characteristic2_4, descriptor2_4_2);
+                       TC_PRT("bt_gatt_characteristic_add_descriptor : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_characteristic_create(char_uuid2_5, permissions,
+                                       properties, char_value_unknown,
+                                       4, &characteristic2_5);
+                       TC_PRT("bt_gatt_characteristic_create : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_service_add_characteristic(service2, characteristic2_5);
+                       TC_PRT("bt_gatt_service_add_characteristic : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_descriptor_create(desc_uuid2_5_1, permissions,
+                                       desc_value_configration, 2, &descriptor2_5_1);
+                       TC_PRT("bt_gatt_descriptor_create : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_characteristic_add_descriptor(characteristic2_5, descriptor2_5_1);
+                       TC_PRT("bt_gatt_characteristic_add_descriptor : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_descriptor_create(desc_uuid2_5_2, permissions,
+                                       desc_value_configration, 2, &descriptor2_5_2);
+                       TC_PRT("bt_gatt_descriptor_create : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_characteristic_add_descriptor(characteristic2_5, descriptor2_5_2);
+                       TC_PRT("bt_gatt_characteristic_add_descriptor : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_characteristic_create(char_uuid2_6, permissions,
+                                       properties, char_value_unknown,
+                                       4, &characteristic2_6);
+                       TC_PRT("bt_gatt_characteristic_create : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_service_add_characteristic(service2, characteristic2_6);
+                       TC_PRT("bt_gatt_service_add_characteristic : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_characteristic_create(char_uuid2_7, permissions,
+                                       properties, char_value_unknown,
+                                       4, &characteristic2_7);
+                       TC_PRT("bt_gatt_characteristic_create : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_service_add_characteristic(service2, characteristic2_7);
+                       TC_PRT("bt_gatt_service_add_characteristic : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_server_register_service(server, service2);
+                       TC_PRT("bt_gatt_server_register_service : %s\n", __bt_get_error_message(ret));
+
+                       /* Generic Attribute Service */
+                       ret = bt_gatt_service_create(service_uuid3,
+                                       BT_GATT_SERVICE_TYPE_PRIMARY,
+                                       &service3);
+                       TC_PRT("bt_gatt_service_create : %s \n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_server_register_service(server, service3);
+                       TC_PRT("bt_gatt_server_register_service : %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_GATT_SERVER_REGISTER_CUSTOM_SVC: {
+                       bt_gatt_h service = NULL;
+                       bt_gatt_h characteristic = NULL;
+                       bt_gatt_h descriptor = NULL;
+                       char *service_uuid = "000018f2-0000-1000-8000-00805f9b34fb";
+                       char *char_uuid = "00002af6-0000-1000-8000-00805f9b34fb";
+                       char *desc_uuid = "00002a56-0000-1000-8000-00805f9b34fb";
+                       char char_value[4] = {10, 20, 30, 40};
+                       char desc_value[4] = {12, 34, 56, 78};
+                       int value_length = 4;
+                       int permissions = BT_GATT_PERMISSION_READ | BT_GATT_PERMISSION_WRITE;
+                       int properties = BT_GATT_PROPERTY_BROADCAST | BT_GATT_PROPERTY_READ |
+                                                       BT_GATT_PROPERTY_WRITE | BT_GATT_PROPERTY_NOTIFY;
+
+                       ret = bt_gatt_server_initialize();
+                       TC_PRT("bt_gatt_server_initialize : %s \n", __bt_get_error_message(ret));
+
+                       if (server == NULL) {
+                               ret = bt_gatt_server_create(&server);
+                               TC_PRT("bt_gatt_server_create : %s \n", __bt_get_error_message(ret));
+                       }
+
+                       ret = bt_gatt_service_create(service_uuid,
+                                       BT_GATT_SERVICE_TYPE_PRIMARY,
+                                       &service);
+                       TC_PRT("bt_gatt_service_create : %s \n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_characteristic_create(char_uuid, permissions,
+                                       properties, char_value,
+                                       value_length, &characteristic);
+                       TC_PRT("bt_gatt_characteristic_create : %s\n", __bt_get_error_message(ret));
+
+                       bt_gatt_server_set_read_value_requested_cb(characteristic,
+                               __bt_gatt_server_read_value_requested_cb, NULL);
+                       ret = bt_gatt_service_add_characteristic(service, characteristic);
+                       TC_PRT("bt_gatt_service_add_characteristic : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_descriptor_create(desc_uuid, permissions,
+                                       desc_value, value_length, &descriptor);
+                       TC_PRT("bt_gatt_descriptor_create : %s\n", __bt_get_error_message(ret));
+
+                       bt_gatt_server_set_read_value_requested_cb(descriptor,
+                               __bt_gatt_server_read_value_requested_cb, NULL);
+
+                       ret = bt_gatt_server_set_write_value_requested_cb(descriptor,
+                               __bt_gatt_server_write_value_requested_cb,
+                               NULL);
+
+                       ret = bt_gatt_characteristic_add_descriptor(characteristic, descriptor);
+                       TC_PRT("bt_gatt_characteristic_add_descriptor : %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_gatt_server_register_service(server, service);
+                       TC_PRT("bt_gatt_server_register_service : %s\n", __bt_get_error_message(ret));
+
+                       custom_h.svc = service;
+                       custom_h.chr = characteristic;
+                       custom_h.desc = descriptor;
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_GATT_SERVER_CHANGE_CUSTOM_VAL: {
+                       char char_value[4] = {50, 60, 70, 80};
+                       if (!server) {
+                               TC_PRT("bt gatt server is not created");
+                               break;
+                       }
+                       ret = bt_gatt_set_value(custom_h.chr, char_value, 4);
+                       TC_PRT("returns  %s\n", __bt_get_error_message(ret));
+
+                       /* notify only client remote_addr */
+                       ret = bt_gatt_server_notify_characteristic_changed_value(custom_h.chr,
+                                       __bt_gatt_server_notification_sent_cb, remote_addr, NULL);
+                       TC_PRT("bt_gatt_server_notify_characteristic_changed_value : %s\n",
+                                       __bt_get_error_message(ret));
+
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_GATT_START_SERVER: {
+                       ret = bt_gatt_server_start();
+                       TC_PRT("bt_gatt_server_register_service : %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_GATT_SERVER_FOREACH_SERVICES: {
+#ifdef ARCH64
+                       ret = bt_gatt_server_foreach_services(server,
+                       __bt_gatt_server_foreach_svc_cb, (void *)(uintptr_t)test_id);
+#else
+                       ret = bt_gatt_server_foreach_services(server,
+                       __bt_gatt_server_foreach_svc_cb, (void *)test_id);
+#endif
+                       TC_PRT("bt_gatt_server_foreach_services: %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_ANCS_PAIR: {
+                       bt_device_connection_link_type_e link_type = BT_DEVICE_CONNECTION_LINK_LE;
+
+                       if (g_test_param.param_count > 0) {
+                               link_type = atoi(g_test_param.params[0]);
 
                                __bt_free_test_param(&g_test_param);
                        }
@@ -7150,8 +8305,8 @@ int test_input_callback(void *data)
 
                        break;
                }
-#ifdef TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT
-               case BT_UNIT_TEST_FUNCTION_GATT_FOREACH_PRIMARY_SERVICES: {
+               case BT_UNIT_TEST_FUNCTION_GATT_FOREACH_PRIMARY_SERVICES:
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT) {
                        __bt_free_gatt_services();
 
                        ret = bt_gatt_foreach_primary_services(remote_addr,
@@ -7162,9 +8317,11 @@ int test_input_callback(void *data)
                                __select_index(&selected_service_index,
                                "Select primary service :");
                        break;
+               } else {
+                       break; /* go to default */
                }
-
-               case BT_UNIT_TEST_FUNCTION_GATT_DISCOVER_CHARACTERISTICS: {
+               case BT_UNIT_TEST_FUNCTION_GATT_DISCOVER_CHARACTERISTICS:
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT) {
                        __bt_free_gatt_characteristics();
 
                        if (selected_service_index < 0) {
@@ -7180,18 +8337,23 @@ int test_input_callback(void *data)
                        if (ret == BT_ERROR_NONE)
                                __select_index(&selected_char_index, "Select index :");
                        break;
+               } else {
+                       break; /* goto default */
                }
-
-               case BT_UNIT_TEST_FUNCTION_GATT_DISCOVER_CHARACTERISTIC_DESCRIPTORS: {
+               case BT_UNIT_TEST_FUNCTION_GATT_DISCOVER_CHARACTERISTIC_DESCRIPTORS:
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT) {
                        ret = bt_gatt_discover_characteristic_descriptor(
                                        characteristics[selected_char_index],
                                        __bt_gatt_characteristic_descriptor_discovered_cb,
                                        NULL);
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
+               } else {
+                       break; /* goto default */
                }
 
-               case BT_UNIT_TEST_FUNCTION_GATT_GET_SERVICE_UUID: {
+               case BT_UNIT_TEST_FUNCTION_GATT_GET_SERVICE_UUID:
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT) {
                        char *uuid = NULL;
                        char *name = NULL;
 
@@ -7212,9 +8374,12 @@ int test_input_callback(void *data)
                                g_free(uuid);
                        }
                        break;
+               } else {
+                       break; /* goto default */
                }
 
-               case BT_UNIT_TEST_FUNCTION_GATT_FOREACH_INCLUDED_SERVICES: {
+               case BT_UNIT_TEST_FUNCTION_GATT_FOREACH_INCLUDED_SERVICES:
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT) {
                        __bt_free_gatt_characteristics_services();
 
                        if (selected_service_index < 0) {
@@ -7228,23 +8393,32 @@ int test_input_callback(void *data)
                                        NULL);
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
+               } else {
+                       break; /* goto default */
                }
 
-               case BT_UNIT_TEST_FUNCTION_GATT_SET_CHARACTERISTIC_CHANGED_CB: {
+               case BT_UNIT_TEST_FUNCTION_GATT_SET_CHARACTERISTIC_CHANGED_CB:
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT) {
                        ret = bt_gatt_set_characteristic_changed_cb(
                                        __bt_gatt_characteristic_changed_cb,
                                        NULL);
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
+               } else {
+                       break; /* goto default */
                }
 
-               case BT_UNIT_TEST_FUNCTION_GATT_UNSET_CHARACTERISTIC_CHANGED_CB: {
+               case BT_UNIT_TEST_FUNCTION_GATT_UNSET_CHARACTERISTIC_CHANGED_CB:
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT) {
                        ret = bt_gatt_unset_characteristic_changed_cb();
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
+               } else {
+                       break; /* goto default */
                }
 
-               case BT_UNIT_TEST_FUNCTION_GATT_GET_CHARACTERISTIC_DECLARATION: {
+               case BT_UNIT_TEST_FUNCTION_GATT_GET_CHARACTERISTIC_DECLARATION:
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT) {
                        int i;
                        char *uuid = NULL;
                        char *name = NULL;
@@ -7268,9 +8442,12 @@ int test_input_callback(void *data)
                                g_free(value);
                        }
                        break;
+               } else {
+                       break; /* goto default */
                }
 
-               case BT_UNIT_TEST_FUNCTION_GATT_SET_CHARACTERISTIC_VALUE: {
+               case BT_UNIT_TEST_FUNCTION_GATT_SET_CHARACTERISTIC_VALUE:
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT) {
                        unsigned char value[] = { 1 };
                        if (selected_char_index == 0) {
                                TC_PRT("Need to select charateristic value \n");
@@ -7282,9 +8459,12 @@ int test_input_callback(void *data)
                                        value, 1);
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
+               } else {
+                       break; /* goto default */
                }
 
-               case BT_UNIT_TEST_FUNCTION_GATT_SET_CHARACTERISTIC_VALUE_REQUEST: {
+               case BT_UNIT_TEST_FUNCTION_GATT_SET_CHARACTERISTIC_VALUE_REQUEST:
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT) {
                        unsigned char value[] = { 1 };
                        if (selected_char_index == 0) {
                                TC_PRT("Need to select charateristic value \n");
@@ -7296,9 +8476,12 @@ int test_input_callback(void *data)
                                        value, 1, __bt_gatt_char_write_cb);
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
+               } else {
+                       break; /* goto default */
                }
 
-               case BT_UNIT_TEST_FUNCTION_GATT_READ_CHARACTERISTIC_VALUE: {
+               case BT_UNIT_TEST_FUNCTION_GATT_READ_CHARACTERISTIC_VALUE:
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT) {
                        if (selected_char_index == 0) {
                                TC_PRT("Need to select charateristic value \n");
                                break;
@@ -7309,9 +8492,12 @@ int test_input_callback(void *data)
                                        __bt_gatt_char_read_cb);
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
+               } else {
+                       break; /* goto default */
                }
 
-               case BT_UNIT_TEST_FUNCTION_GATT_WATCH_CHARACTERISTIC_CHANGES: {
+               case BT_UNIT_TEST_FUNCTION_GATT_WATCH_CHARACTERISTIC_CHANGES:
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT) {
                        if (selected_service_index < 0) {
                                TC_PRT("Need to select primary service \n");
                                break;
@@ -7321,14 +8507,18 @@ int test_input_callback(void *data)
                                        service_clone[selected_service_index]);
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
+               } else {
+                       break; /* goto default */
                }
-               case BT_UNIT_TEST_FUNCTION_GATT_UNWATCH_CHARACTERISTIC_CHANGES: {
+               case BT_UNIT_TEST_FUNCTION_GATT_UNWATCH_CHARACTERISTIC_CHANGES:
+               if (TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT) {
                        ret = bt_gatt_unwatch_characteristic_changes(
                                        service_clone[selected_service_index]);
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
+               } else {
+                       break; /* goto default */
                }
-#endif
                case BT_UNIT_TEST_FUNCTION_ACTIVATE_FLAG_TO_SET_PARAMETERS:
                        need_to_set_params = true;
                        TC_PRT("Select the function again");
@@ -7848,7 +9038,12 @@ int test_input_callback(void *data)
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
                        }
-
+               case BT_UNIT_TEST_FUNCTION_AVRCP_CONTROL_SET_ABSOLUTE_VOLUME: {
+                       static unsigned int volume_level = 1;
+                       ret = bt_avrcp_control_set_absolute_volume(volume_level++);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+                       }
                case BT_UNIT_TEST_FUNCTION_AVRCP_CONTROL_GET_REPEAT: {
                        bt_avrcp_repeat_mode_e mode = BT_AVRCP_REPEAT_MODE_GROUP;
                        ret = bt_avrcp_control_get_repeat_mode(&mode);
@@ -8072,6 +9267,32 @@ int test_input_callback(void *data)
 
                        break;
                }
+               case BT_UNIT_TEST_FUNCTION_HID_DEVICE_SEND_MOUSE_EVENT_SCROLL: {
+                       bt_hid_mouse_data_s send_data;
+
+                       send_data.buttons = BT_HID_MOUSE_BUTTON_NONE;
+                       send_data.padding  = 0x01;
+
+                       send_data.axis_x = 0;
+                       send_data.axis_y = 0;
+                       TC_PRT("Scroll UP");
+                       ret = bt_hid_device_send_mouse_event(remote_addr, &send_data);
+                       if (ret < 0)
+                               TC_PRT("returns %d\n", ret);
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_HID_DEVICE_SEND_MOUSE_EVENT_SCROLL_DOWN: {
+                       bt_hid_mouse_data_s send_data;
+                       send_data.buttons = BT_HID_MOUSE_BUTTON_NONE;
+                       send_data.padding = 0xff;
+                       send_data.axis_x = 0;
+                       send_data.axis_y = 0;
+                       TC_PRT("Scroll Down");
+                       ret = bt_hid_device_send_mouse_event(remote_addr, &send_data);
+                               if (ret < 0)
+                                       TC_PRT("returns %d\n", ret);
+                       break;
+               }
                case BT_UNIT_TEST_FUNCTION_HID_DEVICE_SEND_KEY_EVENT: {
                        bt_hid_key_data_s send_data;
                        /* Will send character 'a' */
@@ -8396,7 +9617,7 @@ int test_input_callback(void *data)
                                        TC_PRT("IPSP : Current role is IPSP Sever !");
 
                                        /* Sockets Layer Call: send() */
-                                       send(ipsp_server_sock, data, strlen(data) + 1, 0);
+                                       n = send(ipsp_server_sock, data, strlen(data) + 1, 0);
                                        if (n < 0)
                                                TC_PRT("\nIPSP Error : While sending data !");
                                } else {
@@ -8405,7 +9626,7 @@ int test_input_callback(void *data)
                        } else if (role == 1) {
                                if (ipsp_client_sock) {
                                        /* Sockets Layer Call: send() */
-                                       send(ipsp_client_sock, data, strlen(data) + 1, 0);
+                                       n = send(ipsp_client_sock, data, strlen(data) + 1, 0);
                                        if (n < 0)
                                                TC_PRT("\nIPSP Error : While sending data !");
                                } else {
@@ -9054,100 +10275,264 @@ int test_input_callback(void *data)
 
        case BT_UNIT_TEST_TABLE_PXP: {
                switch (test_id) {
-               case BT_UNIT_TEST_FUNCTION_PXP_REGISTER: {
-                       int role;
-                       if (g_test_param.param_count < 1) {
-                                       TC_PRT("Input parameters first");
-                                       break;
+               case BT_UNIT_TEST_FUNCTION_PXP_REPORTER_REGISTER: {
+                       if (reporter) {
+                               ret = bt_proximity_reporter_destroy(reporter);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+
+                               ret = bt_proximity_reporter_unset_property_changed_cb(reporter);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+
+                               ret = bt_proximity_reporter_unset_connection_state_changed_cb(reporter);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                               reporter = NULL;
                        }
-                       role = atoi(g_test_param.params[0]);
-                       ret = bt_proximity_register(role, __bt_proximity_property_changed_cb, NULL);
+                       ret = bt_proximity_reporter_create(&reporter);
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
                }
-               case BT_UNIT_TEST_FUNCTION_PXP_UNREGISTER: {
-                       int role;
-                       if (g_test_param.param_count < 1) {
-                                       TC_PRT("Input parameters first");
-                                       break;
-                       }
-                       role = atoi(g_test_param.params[0]);
-                       ret = bt_proximity_unregister(role);
+               case BT_UNIT_TEST_FUNCTION_PXP_REPORTER_UNREGISTER: {
+                       ret = bt_proximity_reporter_unset_connection_state_changed_cb(reporter);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_proximity_reporter_unset_property_changed_cb(reporter);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+
+
+                       ret = bt_proximity_reporter_destroy(reporter);
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       reporter = NULL;
                        break;
                }
-               case BT_UNIT_TEST_FUNCTION_PXP_MONITOR_CONNECT: {
-                       bool auto_connect = false;
+               case BT_UNIT_TEST_FUNCTION_PXP_MONITOR_CREATE: {
+                       if (monitor) {
+                               ret = bt_proximity_monitor_disconnect(monitor);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
 
-                       ret = bt_gatt_connect(remote_addr, auto_connect);
+                               ret = bt_proximity_monitor_unset_connection_state_changed_cb(monitor);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+
+                               ret = bt_proximity_monitor_destroy(monitor);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                               monitor = NULL;
+                       }
+                       ret = bt_proximity_monitor_create(remote_addr, &monitor);
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
-                       ret = bt_gatt_set_connection_state_changed_cb(
-                                       __bt_pxp_montior_connection_state_changed_cb,
-                                       NULL);
+                       break;
+
+               }
+               case BT_UNIT_TEST_FUNCTION_PXP_MONITOR_DESTROY: {
+                       ret = bt_proximity_monitor_unset_connection_state_changed_cb(monitor);
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
 
+                       ret = bt_proximity_monitor_destroy(monitor);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       monitor = NULL;
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_PXP_MONITOR_CONNECT: {
+                       ret = bt_proximity_monitor_connect(monitor);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
                }
                case BT_UNIT_TEST_FUNCTION_PXP_MONITOR_DISCONNECT: {
-                       ret = bt_gatt_disconnect(remote_addr);
+                       ret = bt_proximity_monitor_disconnect(monitor);
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
                }
-               case BT_UNIT_TEST_FUNCTION_PXP_WRITE_ALERT_LEVEL: {
-                       int property, alert_value;
-                       if (g_test_param.param_count < 2) {
-                                       TC_PRT("Input parameters first");
-                                       break;
-                       }
-                       property = atoi(g_test_param.params[0]);
-                       alert_value = atoi(g_test_param.params[1]);
-                       ret = bt_proximity_set_property(remote_addr, property, alert_value);
+               case BT_UNIT_TEST_FUNCTION_PXP_MONITOR_SET_CONNECTION_STATE_CHANGED_CB: {
+                       ret = bt_proximity_monitor_set_connection_state_changed_cb(monitor,
+                                       __bt_proximity_monitor_connection_state_changed_cb,
+                                       NULL);
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
                }
-               case BT_UNIT_TEST_FUNCTION_PXP_READ_ALERT_LEVEL: {
-                       int alert_level = 0;
-                       int property;
-                       if (g_test_param.param_count < 1) {
-                                       TC_PRT("Input parameters first");
-                                       break;
-                       }
-                       property = atoi(g_test_param.params[0]);
-                       ret = bt_proximity_get_property(remote_addr, property, &alert_level);
-                       TC_PRT("returns %s, alert_level: %d\n", __bt_get_error_message(ret), alert_level);
+               case BT_UNIT_TEST_FUNCTION_PXP_MONITOR_UNSET_CONNECTION_STATE_CHANGED_CB: {
+                       ret = bt_proximity_monitor_unset_connection_state_changed_cb(monitor);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
                }
-               case BT_UNIT_TEST_FUNCTION_PXP_GET_SUPPORTED_SERVICES: {
-                       int property = 0;
-
-                       ret = bt_proximity_get_supported_services(remote_addr, &property);
+               case BT_UNIT_TEST_FUNCTION_PXP_REPORTER_SET_CONNECTION_STATE_CHANGED_CB: {
+                       ret = bt_proximity_reporter_set_connection_state_changed_cb(reporter,
+                                       __bt_proximity_reporter_connection_state_changed_cb,
+                                       NULL);
                        TC_PRT("returns %s\n", __bt_get_error_message(ret));
-                       if (ret == BT_ERROR_NONE) {
-                               if (property & BT_PROXIMITY_LINKLOSS_ALERT)
-                                       TC_PRT("BT_PROXIMITY_LINKLOSS_ALERT");
-                               if (property & BT_PROXIMITY_IMMEDIATE_ALERT)
-                                       TC_PRT("BT_PROXIMITY_IMMEDIATE_ALERT");
-                               if (property & BT_PROXIMITY_TX_POWER)
-                                       TC_PRT("BT_PROXIMITY_TX_POWER");
-                       }
                        break;
                }
-               case BT_UNIT_TEST_FUNCTION_ACTIVATE_FLAG_TO_SET_PARAMETERS:
-                       need_to_set_params = true;
-                       TC_PRT("Select the function again");
+               case BT_UNIT_TEST_FUNCTION_PXP_REPORTER_UNSET_CONNECTION_STATE_CHANGED_CB: {
+                       ret = bt_proximity_reporter_unset_connection_state_changed_cb(reporter);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
-
-               default:
+               }
+               case BT_UNIT_TEST_FUNCTION_PXP_REPORTER_SET_PROPERTIES_CHANGED_CB: {
+                       ret = bt_proximity_reporter_set_property_changed_cb(reporter,
+                                       __bt_proximity_reporter_property_changed_cb,
+                                       NULL);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
                        break;
                }
-               break;
-       }
+               case BT_UNIT_TEST_FUNCTION_PXP_REPORTER_UNSET_PROPERTIES_CHANGED_CB: {
+                       ret = bt_proximity_reporter_unset_property_changed_cb(reporter);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_PXP_MONITOR_SET_SCAN_FILTER_SERVICE_UUID: {
+                       if (pxp_scan_filter) {
+                               ret = bt_adapter_le_scan_filter_unset_proximity_uuid(pxp_scan_filter);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
 
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
-       case BT_UNIT_TEST_TABLE_HF: {
-               switch (test_id) {
-               case BT_UNIT_TEST_FUNCTION_HF_INITIALIZE:
-                       ret = bt_hf_initialize();
+                               ret = bt_adapter_le_scan_filter_destroy(pxp_scan_filter);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                               pxp_scan_filter = NULL;
+                       }
+                       ret = bt_adapter_le_scan_filter_create(&pxp_scan_filter);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_adapter_le_scan_filter_set_type(pxp_scan_filter,
+                                       BT_ADAPTER_LE_SCAN_FILTER_TYPE_PROXIMITY_UUID);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_adapter_le_scan_filter_register(pxp_scan_filter);
+                       if (ret != BT_ERROR_NONE)
+                               TC_PRT("failed with [0x%04x]", ret);
+
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_PXP_MONITOR_UNSET_SCAN_FILTER_SERVICE_UUID: {
+                       ret = bt_adapter_le_scan_filter_unset_proximity_uuid(pxp_scan_filter);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+
+                       ret = bt_adapter_le_scan_filter_destroy(pxp_scan_filter);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       pxp_scan_filter = NULL;
+
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_PXP_REPORTER_START_ADVERTISING: {
+                       /* Add Reporter service in advertising data */
+                       advertiser = advertiser_list[advertiser_index];
+                       if (advertiser == NULL) {
+                               ret = bt_adapter_le_create_advertiser(&advertiser);
+                               if (ret != BT_ERROR_NONE) {
+                                       TC_PRT("created le advertiser(%d)", ret);
+                                       break;
+                               }
+
+                               advertiser_list[advertiser_index] = advertiser;
+                               ret = bt_adapter_le_set_advertising_device_name(advertiser,
+                                               BT_ADAPTER_LE_PACKET_SCAN_RESPONSE, true);
+                               if (ret != BT_ERROR_NONE) {
+                                       TC_PRT("set device name [0x%04x]", ret);
+                                       break;
+                               }
+                       }
+
+                       ret = bt_adapter_le_add_advertising_service_solicitation_uuid(advertiser,
+                                       BT_ADAPTER_LE_PACKET_ADVERTISING, PXP_IMMEDIATE_ALERT_SVC_UUID);
+                       if (ret != BT_ERROR_NONE) {
+                               TC_PRT("add service_solicitation_uuid [0x%04x]", ret);
+                               break;
+                       }
+
+                       ret = bt_adapter_le_add_advertising_service_solicitation_uuid(advertiser,
+                                       BT_ADAPTER_LE_PACKET_ADVERTISING, PXP_LINK_LOSS_SVC_UUID);
+                       if (ret != BT_ERROR_NONE) {
+                               TC_PRT("add service_solicitation_uuid [0x%04x]", ret);
+                               break;
+                       }
+
+                       /* Start advertising PXP Reporter service */
+                       bt_adapter_le_advertising_state_changed_cb cb;
+
+                       if (advertiser_index == 0) cb = __bt_adapter_le_advertising_state_changed_cb;
+                       else if (advertiser_index == 1) cb = __bt_adapter_le_advertising_state_changed_cb_2;
+                       else cb = __bt_adapter_le_advertising_state_changed_cb_3;
+
+                       advertiser = advertiser_list[advertiser_index];
+
+                       advertiser_index++;
+                       advertiser_index %= 3;
+
+                       TC_PRT("advertiser: %p", advertiser);
+
+                       ret = bt_adapter_le_start_advertising_new(advertiser, cb, NULL);
+                       if (ret < BT_ERROR_NONE)
+                               TC_PRT("failed with [0x%04x]", ret);
+
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_PXP_MONITOR_WRITE_LINKLOSS_ALERT: {
+                       int alert_value;
+                       if (g_test_param.param_count < 1) {
+                                       TC_PRT("Input parameters first");
+                                       break;
+                       }
+
+                       alert_value = atoi(g_test_param.params[0]);
+                       ret = bt_proximity_monitor_set_linkloss_alert(monitor, alert_value);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_PXP_MONITOR_WRITE_IMMEDIATE_ALERT: {
+                       int alert_value;
+                       if (g_test_param.param_count < 1) {
+                                       TC_PRT("Input parameters first");
+                                       break;
+                       }
+
+                       alert_value = atoi(g_test_param.params[0]);
+                       ret = bt_proximity_monitor_set_immediate_alert(monitor, alert_value);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+
+               case BT_UNIT_TEST_FUNCTION_PXP_MONITOR_READ_LINKLOSS_ALERT: {
+                       int alert_level = 0;
+                       ret = bt_proximity_monitor_get_linkloss_alert(monitor, &alert_level);
+                       TC_PRT("returns %s, alert_level: %d\n", __bt_get_error_message(ret), alert_level);
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_PXP_MONITOR_READ_IMMEDIATE_ALERT: {
+                       int alert_level = 0;
+                       ret = bt_proximity_monitor_get_immediate_alert(monitor, &alert_level);
+                       TC_PRT("returns %s, alert_level: %d\n", __bt_get_error_message(ret), alert_level);
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_PXP_MONITOR_READ_SIGNAL_LEVEL: {
+                       int alert_level = 0;
+                       ret = bt_proximity_monitor_get_signal_level(monitor, &alert_level);
+                       TC_PRT("returns %s, signal_level: %d\n", __bt_get_error_message(ret), alert_level);
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_PXP_REPORTER_READ_LINKLOSS_ALERT: {
+                       int alert_level = 0;
+                       ret = bt_proximity_reporter_get_linkloss_alert(remote_addr, &alert_level);
+                       TC_PRT("returns %s, alert_level: %d\n", __bt_get_error_message(ret), alert_level);
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_PXP_REPORTER_READ_IMMEDIATE_ALERT: {
+                       int alert_level = 0;
+                       ret = bt_proximity_reporter_get_immediate_alert(remote_addr, &alert_level);
+                       TC_PRT("returns %s, alert_level: %d\n", __bt_get_error_message(ret), alert_level);
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_ACTIVATE_FLAG_TO_SET_PARAMETERS:
+                       need_to_set_params = true;
+                       TC_PRT("Select the function again");
+                       break;
+
+               default:
+                       break;
+               }
+               break;
+       }
+
+       case BT_UNIT_TEST_TABLE_HF: {
+               if (!TIZEN_PROFILE_WEARABLE_IVI)
+                       break;
+               switch (test_id) {
+               case BT_UNIT_TEST_FUNCTION_HF_INITIALIZE:
+                       ret = bt_hf_initialize();
                        if (ret < BT_ERROR_NONE)
                                TC_PRT("failed with [0x%04x]", ret);
                        else if (ret == BT_ERROR_NONE)
@@ -9315,6 +10700,8 @@ int test_input_callback(void *data)
                break;
        }
        case BT_UNIT_TEST_TABLE_PBAP_CLIENT: {
+               if (!TIZEN_PROFILE_WEARABLE_IVI)
+                       break;
                switch (test_id) {
 
                /*PBAP Test Cases */
@@ -9423,7 +10810,341 @@ int test_input_callback(void *data)
 
                break;
        }
-#endif
+       case BT_UNIT_TEST_TABLE_TDS_PROVIDER: {
+               switch (test_id) {
+               case BT_UNIT_TEST_FUNCTION_TDS_PROVIDER_REGISTER: {
+                       ret = bt_tds_provider_register();
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_TDS_PROVIDER_UNREGISTER: {
+                       ret = bt_tds_provider_unregister();
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       provider = NULL;
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_TDS_PROVIDER_SET_ACT_REQ_CB: {
+                       ret = bt_tds_set_transport_activation_requested_cb(__tds_activation_req_cb, NULL);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_TDS_PROVIDER_UNSET_ACT_REQ_CB: {
+                       ret = bt_tds_unset_transport_activation_requested_cb();
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_TDS_CUSTOM_PROVIDER_CREATE: {
+                       if (provider) {
+                               ret = bt_tds_provider_destroy(provider);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+
+                               provider = NULL;
+                       }
+                       ret = bt_tds_provider_create(&provider, BT_TDS_TRANSPORT_CUSTOM);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_TDS_CUSTOM_PROVIDER_DESTROY: {
+                       ret = bt_tds_provider_destroy(provider);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       provider = NULL;
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_TDS_CUSTOM_PROVIDER_SET_TRANSPORT_DATA: {
+                       unsigned char buf[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, /* Mac */
+                                               0x20, 0xFA, /* Operating Channel */
+                                               0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF}; /* Hash */
+
+                       ret = bt_tds_provider_set_transport_data(provider,
+                                       BT_TDS_TRANSPORT_STATE_OFF, buf, sizeof(buf));
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_TDS_CUSTOM_PROVIDER_SET_MANUF_DATA: {
+                       unsigned char buf[] = {0x00, 0x75, 0x4E, 0x24, 0x36, 0x28, 0x01, 0x13};
+
+                       ret = bt_tds_provider_set_manufacturer_data(buf, sizeof(buf));
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_TDS_CUSTOM_PROVIDER_SEND_ACTIVATION_RESP: {
+                       ret = bt_tds_provider_send_activation_resp(
+                                       tds_act_address, BLUETOOTH_ERROR_NONE, provider);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               default:
+                       break;
+               }
+               break;
+       }
+       case BT_UNIT_TEST_TABLE_TDS_SEEKER: {
+               switch (test_id) {
+               case BT_UNIT_TEST_FUNCTION_TDS_START_DISCOVERING_PROVIDER: {
+                       ret = bt_tds_start_seeking_providers(__bt_tds_provider_scan_result_cb, NULL);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_TDS_STOP_DISCOVERING_PROVIDER: {
+                       ret = bt_tds_stop_seeking_providers();
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_TDS_SEEKER_CREATE: {
+                       if (seeker)
+                               seeker = NULL;
+                       ret = bt_tds_seeker_create(remote_addr, &seeker);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_TDS_SEEKER_DESTROY: {
+                       if (seeker) {
+                               ret = bt_tds_seeker_destroy(seeker);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       }
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_TDS_SEEKER_SET_CONNECTION_CALLBACK: {
+                       if (seeker) {
+                               ret = bt_tds_seeker_set_connection_state_changed_cb(seeker,
+                                               __bt_tds_seeker_connection_state_changed_cb, NULL);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       }
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_TDS_SEEKER_CONNECT: {
+                       if (seeker) {
+                               ret = bt_tds_seeker_connect(seeker);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       }
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_TDS_SEEKER_DISCONNECT: {
+                       if (seeker) {
+                               ret = bt_tds_seeker_disconnect(seeker);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       }
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_TDS_SEEKER_UNSET_CONNECTION_CALLBACK: {
+                       if (seeker) {
+                               ret = bt_tds_seeker_unset_connection_state_changed_cb(seeker);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       }
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_TDS_SEEKER_GET_COMPLETE_DATA: {
+                       if (seeker) {
+                               ret = bt_tds_seeker_get_complete_transport_blocks(seeker,
+                                               __bt_tds_seeker_complete_transport_data_cb, NULL);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       }
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_TDS_SEEKER_ACTIVATE_CONTROL_POINT: {
+                       if (seeker) {
+                               unsigned char buf[] = {0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, /* Mac */
+                                       0x0A, 0x0B};    /* Channel Info */
+                               bt_tds_transport_e transport = BT_TDS_TRANSPORT_CUSTOM;
+                               ret = bt_tds_seeker_activate_control_point(seeker, transport, buf, sizeof(buf),
+                                               __bt_tds_control_point_activation_result_cb, NULL);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       }
+                       break;
+               }
+               default:
+                       break;
+               }
+               break;
+       }
+       case BT_UNIT_TEST_TABLE_OTP: {
+               switch (test_id) {
+               case BT_UNIT_TEST_FUNCTION_OTP_SERVER_INIT: {
+                       char *directory = NULL;
+
+                       if (g_test_param.param_count < 1)
+                                       TC_PRT("No relative path set");
+                       else
+                               directory = g_test_param.params[0];
+
+                       TC_PRT("%s", directory);
+
+                       ret = bt_otp_server_initialize(directory);
+                       if (ret < BT_ERROR_NONE)
+                               TC_PRT("failed with [0x%04x]", ret);
+                       else if (ret == BT_ERROR_NONE)
+                               TC_PRT("Success");
+                       /* __bt_free_test_param(&g_test_param); */
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_SERVER_DEINIT: {
+                       ret = bt_otp_server_deinitialize();
+                       if (ret < BT_ERROR_NONE)
+                               TC_PRT("failed with [0x%04x]", ret);
+                       else if (ret == BT_ERROR_NONE)
+                               TC_PRT("Success");
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_SET_SERVER_STATE_CHANGED_CB: {
+                       ret = bt_otp_set_server_state_changed_cb(
+                                               __bt_otp_server_state_changed_cb, NULL);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_UNSET_SERVER_STATE_CHANGED_CB: {
+                       ret = bt_otp_unset_server_state_changed_cb();
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_CLIENT_CREATE: {
+                       if (otp_client)
+                               otp_client = NULL;
+                       ret = bt_otp_client_create(remote_addr, &otp_client);
+                       TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_CLIENT_DESTROY: {
+                       if (otp_client) {
+                               ret = bt_otp_client_destroy(otp_client);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       }
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_CLIENT_SET_CONNECTION_CALLBACK: {
+                       if (otp_client) {
+                               ret = bt_otp_client_set_connection_state_changed_cb(otp_client,
+                                               __bt_otp_client_connection_state_changed_cb, NULL);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       }
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_CLIENT_CONNECT: {
+                       if (otp_client) {
+                               ret = bt_otp_client_connect(otp_client);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       }
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_CLIENT_DISCONNECT: {
+                       if (otp_client) {
+                               ret = bt_otp_client_disconnect(otp_client);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       }
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_CLIENT_UNSET_CONNECTION_CALLBACK: {
+                       if (otp_client) {
+                               ret = bt_otp_client_unset_connection_state_changed_cb(otp_client);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       }
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_CLIENT_DISCOVER_ALL_OBJECTS:     {
+                       if (otp_client) {
+                               ret = bt_otp_client_discover_all_objects(otp_client,
+                                                               __bt_otp_client_object_discovery_cb, NULL);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       }
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_CLIENT_SELECT_OBJ:       {
+                       if (otp_client) {
+                               unsigned long long id;
+                               if (g_test_param.param_count < 1) {
+                                               TC_PRT("Input parameters first");
+                                               break;
+                               }
+
+                               id = (unsigned long long)atoi(g_test_param.params[0]);
+                               TC_PRT("Object ID[%llu]", id);
+                               ret = bt_otp_client_select_object(otp_client, id,
+                                                       __bt_otp_client_object_select_cb, NULL);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       }
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_CLIENT_READ_OBJ_CONTENTS:        {
+                       if (otp_client) {
+                               ret = bt_otp_client_read_object_contents(otp_client,
+                                                       __bt_otp_client_read_object_complete_cb, NULL);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       }
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_CLIENT_CREATE_OBJ: {
+                       char *file_path = NULL;
+                       if (g_test_param.param_count < 1) {
+                                       TC_PRT("Input parameters first");
+                                       break;
+                       }
+
+                       file_path = g_test_param.params[0];
+                       TC_PRT("%s", file_path);
+
+                       if (otp_client) {
+                               ret = bt_otp_client_create_object(otp_client,
+                                               file_path, __bt_otp_client_object_create_cb, NULL);
+                               if (ret < BT_ERROR_NONE)
+                                       TC_PRT("failed with [0x%04x]", ret);
+                               else if (ret == BT_ERROR_NONE)
+                                       TC_PRT("Success");
+                       }
+                       __bt_free_test_param(&g_test_param);
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_CLIENT_WRITE_OBJ: {
+                       char *file_path = NULL;
+                       int offset, length, mode;
+
+                       if (g_test_param.param_count < 4) {
+                                       TC_PRT("Input parameters first");
+                                       break;
+                       }
+
+                       file_path = g_test_param.params[0];
+                       TC_PRT("%s", file_path);
+
+                       offset = strtoul(g_test_param.params[1], NULL, 10);
+                       length = strtoul(g_test_param.params[2], NULL, 10);
+                       mode = strtoul(g_test_param.params[3], NULL, 10);
+
+                       if (otp_client) {
+                               ret = bt_otp_client_write_object(otp_client,
+                                               file_path, offset, length, mode,
+                                               __bt_otp_client_object_write_cb, NULL);
+                               if (ret < BT_ERROR_NONE)
+                                       TC_PRT("failed with [0x%04x]", ret);
+                               else if (ret == BT_ERROR_NONE)
+                                       TC_PRT("Success");
+                       }
+                       __bt_free_test_param(&g_test_param);
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_CLIENT_EXECUTE_OBJ:      {
+                       if (otp_client) {
+                               ret = bt_otp_client_execute_object(otp_client,
+                                                       __bt_otp_client_object_execute_cb, NULL);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       }
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_OTP_CLIENT_DELETE_OBJ:       {
+                       if (otp_client) {
+                               ret = bt_otp_client_delete_object(otp_client,
+                                                       __bt_otp_client_object_delete_cb, NULL);
+                               TC_PRT("returns %s\n", __bt_get_error_message(ret));
+                       }
+                       break;
+               }
+               case BT_UNIT_TEST_FUNCTION_ACTIVATE_FLAG_TO_SET_PARAMETERS:
+                       need_to_set_params = true;
+                       TC_PRT("Select the function again");
+                       break;
+               default:
+                       break;
+               }
+               break;
+       }
        case BT_UNIT_TEST_TABLE_ETC: {
                static unsigned int delay = 0;
                bt_onoff_cnt = 0;
index 3f906198f1e0eb5462bcbebfbe6712dba3202792..a30a2ad453262304f7c395997c0c1368721efe20 100644 (file)
@@ -47,12 +47,13 @@ typedef enum {
        BT_UNIT_TEST_TABLE_HDP,
        BT_UNIT_TEST_TABLE_DPM,
        BT_UNIT_TEST_TABLE_PXP,
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
        BT_UNIT_TEST_TABLE_HF,
        BT_UNIT_TEST_TABLE_PBAP_CLIENT,
-#endif
        BT_UNIT_TEST_TABLE_ETC,
        BT_UNIT_TEST_FUNCTION_INITIALIZE_ALL,
+       BT_UNIT_TEST_TABLE_TDS_PROVIDER,
+       BT_UNIT_TEST_TABLE_TDS_SEEKER,
+       BT_UNIT_TEST_TABLE_OTP,
        BT_UNIT_TEST_TABLE_FINISH = 0xFF,
 } bt_unit_test_table_e;
 
@@ -69,9 +70,11 @@ typedef enum {
        BT_UNIT_TEST_FUNCTION_ADAPTER_STOP_DEVICE_DISCOVERY,
        BT_UNIT_TEST_FUNCTION_ADAPTER_IS_DISCOVERING,
        BT_UNIT_TEST_FUNCTION_ADAPTER_FOREACH_BONDED_DEVICE,
+       BT_UNIT_TEST_FUNCTION_ADAPTER_FOREACH_PROFILE_CONNECTED_DEVICES,
        BT_UNIT_TEST_FUNCTION_ADAPTER_GET_BONDED_DEVICE_INFO,
        BT_UNIT_TEST_FUNCTION_ADAPTER_IS_SERVICE_USED,
        BT_UNIT_TEST_FUNCTION_ADAPTER_GET_VISIBILITY,
+       BT_UNIT_TEST_FUNCTION_ADAPTER_SET_VISIBILITY,
        BT_UNIT_TEST_FUNCTION_ADAPTER_SET_DEVICE_DISCOVERY_STATE_CHANGED_CB,
        BT_UNIT_TEST_FUNCTION_ADAPTER_UNSET_DEVICE_DISCOVERY_STATE_CHANGED_CB,
        BT_UNIT_TEST_FUNCTION_ADAPTER_GET_LOCAL_OOB_DATA,
@@ -104,34 +107,29 @@ typedef enum {
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_SCAN_MODE,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_START_SCAN,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_STOP_SCAN,
-#ifndef TIZEN_PROFILE_WEARABLE
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_START_DEVICE_DISCOVERY,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_STOP_DEVICE_DISCOVERY,
-#endif
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_ADD_ADVERTISING_DATA,
+       BT_UNIT_TEST_FUNCTION_ADAPTER_LE_ADD_HOGP_ADVERTISING_DATA,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_ADVERTISING_MODE,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_ADVERTISING_FILTER_POLICY,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_ADVERTISING_CONNECTABLE,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_START_ADVERTISING_NEW,
-#ifndef TIZEN_PROFILE_WEARABLE
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_START_ADVERTISING,
-#endif
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_STOP_ADVERTISING,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_ADD_WHITE_LIST,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REMOVE_WHITE_LIST,
-#ifndef TIZEN_PROFILE_WEARABLE
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_CLEAR_WHITE_LIST,
-#endif
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_ENABLE_PRIVACY,
+       BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_REMOTE_OOB_EXT_DATA,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_DEVICE_ADDRESS,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_SERVICE_UUID,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_SERVICE_SOLICITATION_UUID,
+BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_MANUFACTURER_DATA,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_IBEACON_DATA,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_UNREGISTER_ALL_SCAN_FILTERS,
-#ifndef TIZEN_PROFILE_WEARABLE
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_DEVICE_DISCOVERY_STATE_CHANGED_CB,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_UNSET_DEVICE_DISCOVERY_STATE_CHANGED_CB,
-#endif
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_READ_MAXIMUM_DATA_LENGTH,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_WRITE_HOST_SUGGESTED_DEFAULT_DATA_LENGTH,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_READ_HOST_SUGGESTED_DEFAULT_DATA_LENGTH,
@@ -154,6 +152,8 @@ typedef enum {
        BT_UNIT_TEST_FUNCTION_DEVICE_DISABLE_RSSI_MONITOR,
        BT_UNIT_TEST_FUNCTION_DEVICE_GET_RSSI_STRENGTH,
        BT_UNIT_TEST_FUNCTION_DEVICE_GET_CONNECTION_STATE,
+       BT_UNIT_TEST_FUNCTION_DEVICE_UPDATE_LE_CONNECTION_MODE,
+       BT_UNIT_TEST_FUNCTION_DEVICE_UPDATE_LE_CONNECTION,
        BT_UNIT_TEST_FUNCTION_DEVICE_REQUEST_ATT_MTU,
        BT_UNIT_TEST_FUNCTION_DEVICE_SET_REQUEST_ATT_MTU_CHANGED_CB,
        BT_UNIT_TEST_FUNCTION_DEVICE_UNSET_REQUEST_ATT_MTU_CHANGED_CB,
@@ -211,6 +211,7 @@ typedef enum {
        BT_UNIT_TEST_FUNCTION_AG_NOTIFY_CALL_LIST,
        BT_UNIT_TEST_FUNCTION_AG_SET_CALL_HANDLING_EVENT_CB,
        BT_UNIT_TEST_FUNCTION_AG_IS_NREC_ENABLED,
+       BT_UNIT_TEST_FUNCTION_AG_SWITCH_HEADSET,
        BT_UNIT_TEST_FUNCTION_A2DP_SOURCE_ROLE,
        BT_UNIT_TEST_FUNCTION_A2DP_SINK_ROLE,
        BT_UNIT_TEST_FUNCTION_AG_IS_WBS_MODE,
@@ -229,6 +230,7 @@ typedef enum {
        BT_UNIT_TEST_FUNCTION_GATT_DISCONNECT,
        BT_UNIT_TEST_FUNCTION_SET_GATT_CONNECTION_STATE_CHANGED_CB,
        BT_UNIT_TEST_FUNCTION_UNSET_GATT_CONNECTION_STATE_CHANGED_CB,
+       BT_UNIT_TEST_FUNCTION_GATT_SET_WRITE_TYPE,
        BT_UNIT_TEST_FUNCTION_GATT_CLIENT_CREATE,
        BT_UNIT_TEST_FUNCTION_GATT_CLIENT_DESTROY,
        BT_UNIT_TEST_FUNCTION_GATT_CLIENT_GET_REMOTE_ADDRESS,
@@ -238,8 +240,12 @@ typedef enum {
        BT_UNIT_TEST_FUNCTION_GATT_CLIENT_SET_CHAR_VALUE_CHANGED_CB,
        BT_UNIT_TEST_FUNCTION_GATT_CLIENT_UNSET_CHAR_VALUE_CHANGED_CB,
        BT_UNIT_TEST_FUNCTION_GATT_CLIENT_FOREACH_SERVICES,
+       BT_UNIT_TEST_FUNCTION_GATT_CLIENT_REQUEST_ATT_MTU,
+       BT_UNIT_TEST_FUNCTION_GATT_CLIENT_GET_ATT_MTU,
        BT_UNIT_TEST_FUNCTION_GATT_CLIENT_SET_SERVICE_CHANGED_CB,
        BT_UNIT_TEST_FUNCTION_GATT_CLIENT_UNSET_SERVICE_CHANGED_CB,
+       BT_UNIT_TEST_FUNCTION_GATT_CLIENT_SET_ATT_MTU_CHANGED_CB,
+       BT_UNIT_TEST_FUNCTION_GATT_CLIENT_UNSET_ATT_MTU_CHANGED_CB,
        BT_UNIT_TEST_FUNCTION_GATT_SERVER_INITIALIZE,
        BT_UNIT_TEST_FUNCTION_GATT_SERVER_DEINITIALIZE,
        BT_UNIT_TEST_FUNCTION_GATT_SERVER_UNREGISTER_ALL_SERVICES,
@@ -252,6 +258,7 @@ typedef enum {
        BT_UNIT_TEST_FUNCTION_GATT_SERVER_CHANGE_THERMOMETER_MEASUREMENT,
        BT_UNIT_TEST_FUNCTION_GATT_SERVER_REGISTER_DEVICE_INFORMATION_SVC,
        BT_UNIT_TEST_FUNCTION_GATT_SERVER_REGISTER_LINK_LOSS_SVC,
+       BT_UNIT_TEST_FUNCTION_GATT_SERVER_REGISTER_HOGP_SVC,
        BT_UNIT_TEST_FUNCTION_GATT_SERVER_REGISTER_CUSTOM_SVC,
        BT_UNIT_TEST_FUNCTION_GATT_SERVER_CHANGE_CUSTOM_VAL,
        BT_UNIT_TEST_FUNCTION_GATT_START_SERVER,
@@ -260,7 +267,6 @@ typedef enum {
        BT_UNIT_TEST_FUNCTION_ANCS_POSITIVE_ACTION,
        BT_UNIT_TEST_FUNCTION_ANCS_NEGATIVE_ACTION,
        BT_UNIT_TEST_FUNCTION_ANCS_GET_NOTI_ATTR,
-#ifdef TIZEN_FEATURE_ENABLE_LEGACY_GATT_CLIENT
        BT_UNIT_TEST_FUNCTION_GATT_FOREACH_PRIMARY_SERVICES,
        BT_UNIT_TEST_FUNCTION_GATT_DISCOVER_CHARACTERISTICS,
        BT_UNIT_TEST_FUNCTION_GATT_DISCOVER_CHARACTERISTIC_DESCRIPTORS,
@@ -274,7 +280,6 @@ typedef enum {
        BT_UNIT_TEST_FUNCTION_GATT_READ_CHARACTERISTIC_VALUE,
        BT_UNIT_TEST_FUNCTION_GATT_WATCH_CHARACTERISTIC_CHANGES,
        BT_UNIT_TEST_FUNCTION_GATT_UNWATCH_CHARACTERISTIC_CHANGES,
-#endif
        BT_UNIT_TEST_FUNCTION_HPS_CLIENT_CREATE = 1,
        BT_UNIT_TEST_FUNCTION_HPS_CLIENT_DESTROY,
        BT_UNIT_TEST_FUNCTION_HPS_CLIENT_PRINT_ALL,
@@ -310,6 +315,7 @@ typedef enum {
        BT_UNIT_TEST_FUNCTION_AVRCP_CONTROL_RW,
        BT_UNIT_TEST_FUNCTION_AVRCP_CONTROL_NEXT,
        BT_UNIT_TEST_FUNCTION_AVRCP_CONTROL_PREV,
+       BT_UNIT_TEST_FUNCTION_AVRCP_CONTROL_SET_ABSOLUTE_VOLUME,
        BT_UNIT_TEST_FUNCTION_AVRCP_CONTROL_GET_REPEAT,
        BT_UNIT_TEST_FUNCTION_AVRCP_CONTROL_SET_REPEAT,
        BT_UNIT_TEST_FUNCTION_AVRCP_CONTROL_GET_SHUFFLE,
@@ -332,6 +338,8 @@ typedef enum {
        BT_UNIT_TEST_FUNCTION_HID_DEVICE_DISCONNECT,
        BT_UNIT_TEST_FUCNTION_HID_DEVICE_DEACTIVATE,
        BT_UNIT_TEST_FUNCTION_HID_DEVICE_SEND_MOUSE_EVENT,
+       BT_UNIT_TEST_FUNCTION_HID_DEVICE_SEND_MOUSE_EVENT_SCROLL,
+       BT_UNIT_TEST_FUNCTION_HID_DEVICE_SEND_MOUSE_EVENT_SCROLL_DOWN,
        BT_UNIT_TEST_FUNCTION_HID_DEVICE_SEND_KEY_EVENT,
        BT_UNIT_TEST_FUNCTION_HID_DEVICE_SEND_RC_KEY_EVENT,
        BT_UNIT_TEST_FUNCTION_HID_DEVICE_SET_DATA_RECEIVED_CB,
@@ -396,12 +404,12 @@ typedef enum {
        BT_UNIT_TEST_FUNCTION_DPM_GET_LIMITED_DISCOVERABLE_STATE,
        BT_UNIT_TEST_FUNCTION_DPM_SET_DATA_TRANSFER_STATE,
        BT_UNIT_TEST_FUNCTION_DPM_GET_DATA_TRANSFER_STATE,
-#if defined(TIZEN_PROFILE_WEARABLE) || defined(TIZEN_PROFILE_IVI)
        BT_UNIT_TEST_FUNCTION_HF_INITIALIZE = 1,
        BT_UNIT_TEST_FUNCTION_HF_DEINITIALIZE,
        BT_UNIT_TEST_FUNCTION_HF_NOTIFY_CALL_ANSWER,
        BT_UNIT_TEST_FUNCTION_HF_NOTIFY_CALL_INIT,
        BT_UNIT_TEST_FUNCTION_HF_NOTIFY_CALL_TERM,
+       BT_UNIT_TEST_FUNCTION_HF_NOTIFY_CALL_WITH_PARAM,
        BT_UNIT_TEST_FUNCTION_HF_GET_CALL_STATUS_INFO_LIST,
        BT_UNIT_TEST_FUNCTION_HF_SET_CALL_EVENT_CB,
        BT_UNIT_TEST_FUNCTION_HF_UNSET_CALL_EVENT_CB,
@@ -432,7 +440,6 @@ typedef enum {
        BT_UNIT_TEST_FUNCTION_PBAP_CLIENT_VCARDPULL,
        BT_UNIT_TEST_FUNCTION_PBAP_CLIENT_PHONEBOOKSEARCH,
        BT_UNIT_TEST_FUNCTION_PBAP_CLIENT_VCARDLIST_MAXLIST_ZERO,
-#endif
        BT_UNIT_TEST_FUNCTION_ON_OFF_REPEAT_TEST = 1,
        BT_UNIT_TEST_FUNCTION_ON_OFF_REPEAT_TEST_1_SEC_DELAY,
        BT_UNIT_TEST_FUNCTION_ON_OFF_REPEAT_TEST_N_SEC_DELAY,
@@ -441,13 +448,70 @@ typedef enum {
        BT_UNIT_TEST_FUNCTION_APP_CONTROL_2_4_BT_ONOFF,
        BT_UNIT_TEST_FUNCTION_APP_CONTROL_2_4_BT_VISIBILITY,
        BT_UNIT_TEST_FUNCTION_CHECK_FEATURE,
-       BT_UNIT_TEST_FUNCTION_PXP_REGISTER = 1,
-       BT_UNIT_TEST_FUNCTION_PXP_UNREGISTER,
+       BT_UNIT_TEST_FUNCTION_PXP_REPORTER_REGISTER = 1,
+       BT_UNIT_TEST_FUNCTION_PXP_REPORTER_UNREGISTER,
+       BT_UNIT_TEST_FUNCTION_PXP_REPORTER_START_ADVERTISING,
+       BT_UNIT_TEST_FUNCTION_PXP_REPORTER_SET_CONNECTION_STATE_CHANGED_CB,
+       BT_UNIT_TEST_FUNCTION_PXP_REPORTER_UNSET_CONNECTION_STATE_CHANGED_CB,
+       BT_UNIT_TEST_FUNCTION_PXP_REPORTER_SET_PROPERTIES_CHANGED_CB,
+       BT_UNIT_TEST_FUNCTION_PXP_REPORTER_UNSET_PROPERTIES_CHANGED_CB,
+       BT_UNIT_TEST_FUNCTION_PXP_REPORTER_READ_LINKLOSS_ALERT,
+       BT_UNIT_TEST_FUNCTION_PXP_REPORTER_READ_IMMEDIATE_ALERT,
+       BT_UNIT_TEST_FUNCTION_PXP_MONITOR_CREATE,
+       BT_UNIT_TEST_FUNCTION_PXP_MONITOR_DESTROY,
        BT_UNIT_TEST_FUNCTION_PXP_MONITOR_CONNECT,
        BT_UNIT_TEST_FUNCTION_PXP_MONITOR_DISCONNECT,
-       BT_UNIT_TEST_FUNCTION_PXP_WRITE_ALERT_LEVEL,
-       BT_UNIT_TEST_FUNCTION_PXP_READ_ALERT_LEVEL,
-       BT_UNIT_TEST_FUNCTION_PXP_GET_SUPPORTED_SERVICES,
+       BT_UNIT_TEST_FUNCTION_PXP_MONITOR_SET_CONNECTION_STATE_CHANGED_CB,
+       BT_UNIT_TEST_FUNCTION_PXP_MONITOR_UNSET_CONNECTION_STATE_CHANGED_CB,
+       BT_UNIT_TEST_FUNCTION_PXP_MONITOR_SET_SCAN_FILTER_SERVICE_UUID,
+       BT_UNIT_TEST_FUNCTION_PXP_MONITOR_UNSET_SCAN_FILTER_SERVICE_UUID,
+       BT_UNIT_TEST_FUNCTION_PXP_MONITOR_WRITE_LINKLOSS_ALERT,
+       BT_UNIT_TEST_FUNCTION_PXP_MONITOR_WRITE_IMMEDIATE_ALERT,
+       BT_UNIT_TEST_FUNCTION_PXP_MONITOR_READ_LINKLOSS_ALERT,
+       BT_UNIT_TEST_FUNCTION_PXP_MONITOR_READ_IMMEDIATE_ALERT,
+       BT_UNIT_TEST_FUNCTION_PXP_MONITOR_READ_SIGNAL_LEVEL,
+
+       /* TDS Provider */
+       BT_UNIT_TEST_FUNCTION_TDS_PROVIDER_REGISTER = 1,
+       BT_UNIT_TEST_FUNCTION_TDS_PROVIDER_UNREGISTER,
+       BT_UNIT_TEST_FUNCTION_TDS_PROVIDER_SET_ACT_REQ_CB,
+       BT_UNIT_TEST_FUNCTION_TDS_PROVIDER_UNSET_ACT_REQ_CB,
+       BT_UNIT_TEST_FUNCTION_TDS_CUSTOM_PROVIDER_CREATE,
+       BT_UNIT_TEST_FUNCTION_TDS_CUSTOM_PROVIDER_DESTROY,
+       BT_UNIT_TEST_FUNCTION_TDS_CUSTOM_PROVIDER_SET_TRANSPORT_DATA,
+       BT_UNIT_TEST_FUNCTION_TDS_CUSTOM_PROVIDER_SET_MANUF_DATA,
+       BT_UNIT_TEST_FUNCTION_TDS_CUSTOM_PROVIDER_SEND_ACTIVATION_RESP,
+
+       /* TDS Seeker */
+       BT_UNIT_TEST_FUNCTION_TDS_START_DISCOVERING_PROVIDER = 1,
+       BT_UNIT_TEST_FUNCTION_TDS_STOP_DISCOVERING_PROVIDER,
+       BT_UNIT_TEST_FUNCTION_TDS_SEEKER_CREATE,
+       BT_UNIT_TEST_FUNCTION_TDS_SEEKER_DESTROY,
+       BT_UNIT_TEST_FUNCTION_TDS_SEEKER_SET_CONNECTION_CALLBACK,
+       BT_UNIT_TEST_FUNCTION_TDS_SEEKER_CONNECT,
+       BT_UNIT_TEST_FUNCTION_TDS_SEEKER_DISCONNECT,
+       BT_UNIT_TEST_FUNCTION_TDS_SEEKER_UNSET_CONNECTION_CALLBACK,
+       BT_UNIT_TEST_FUNCTION_TDS_SEEKER_GET_COMPLETE_DATA,
+       BT_UNIT_TEST_FUNCTION_TDS_SEEKER_ACTIVATE_CONTROL_POINT,
+
+       /* OTP */
+       BT_UNIT_TEST_FUNCTION_OTP_SERVER_INIT = 1,
+       BT_UNIT_TEST_FUNCTION_OTP_SERVER_DEINIT,
+       BT_UNIT_TEST_FUNCTION_OTP_SET_SERVER_STATE_CHANGED_CB,
+       BT_UNIT_TEST_FUNCTION_OTP_UNSET_SERVER_STATE_CHANGED_CB,
+       BT_UNIT_TEST_FUNCTION_OTP_CLIENT_CREATE,
+       BT_UNIT_TEST_FUNCTION_OTP_CLIENT_DESTROY,
+       BT_UNIT_TEST_FUNCTION_OTP_CLIENT_SET_CONNECTION_CALLBACK,
+       BT_UNIT_TEST_FUNCTION_OTP_CLIENT_UNSET_CONNECTION_CALLBACK,
+       BT_UNIT_TEST_FUNCTION_OTP_CLIENT_CONNECT,
+       BT_UNIT_TEST_FUNCTION_OTP_CLIENT_DISCONNECT,
+       BT_UNIT_TEST_FUNCTION_OTP_CLIENT_DISCOVER_ALL_OBJECTS,
+       BT_UNIT_TEST_FUNCTION_OTP_CLIENT_SELECT_OBJ,
+       BT_UNIT_TEST_FUNCTION_OTP_CLIENT_READ_OBJ_CONTENTS,
+       BT_UNIT_TEST_FUNCTION_OTP_CLIENT_CREATE_OBJ,
+       BT_UNIT_TEST_FUNCTION_OTP_CLIENT_WRITE_OBJ,
+       BT_UNIT_TEST_FUNCTION_OTP_CLIENT_EXECUTE_OBJ,
+       BT_UNIT_TEST_FUNCTION_OTP_CLIENT_DELETE_OBJ,
 
        BT_UNIT_TEST_FUNCTION_ACTIVATE_FLAG_TO_SET_PARAMETERS = 0XFF,
 } bt_unit_test_function_e;