From: Anupam Roy Date: Thu, 28 Sep 2017 09:56:08 +0000 (+0530) Subject: Code synchronization from tizen_4.0 branch X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=36afea9a9109b10adcbcf11b00fb9ad94969233b;p=platform%2Fcore%2Fapi%2Fbluetooth.git Code synchronization from tizen_4.0 branch Change-Id: I5a71a092987fcb4744f5ae75d3a2167362bb3ae2 Signed-off-by: Anupam Roy --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 067214e..c6d3219 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/doc/bluetooth_doc.h b/doc/bluetooth_doc.h index 5e47516..a8566f7 100644 --- a/doc/bluetooth_doc.h +++ b/doc/bluetooth_doc.h @@ -555,7 +555,7 @@ * * 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 Feat + * More details on featuring your application can be found from Feature Element. * @endif */ @@ -584,7 +584,7 @@ * * 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 Feat + * More details on featuring your application can be found from Feature Element. * @endif */ @@ -847,6 +847,33 @@ * */ +/** + * @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 + * + * @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 Feature Element. + * + */ + /** * @if WEARABLE * @defgroup CAPI_NETWORK_BLUETOOTH_PBAP_MODULE Bluetooth PBAP diff --git a/include/bluetooth.h b/include/bluetooth.h new file mode 100644 index 0000000..9be0e19 --- /dev/null +++ b/include/bluetooth.h @@ -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 +#include +#include +#include +#include + +#include + +#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 index 0000000..f6c4e90 --- /dev/null +++ b/include/bluetooth_extension.h @@ -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 index 0000000..c7d261f --- /dev/null +++ b/include/bluetooth_internal.h @@ -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 +#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__ */ diff --git a/include/bluetooth_private.h b/include/bluetooth_private.h index 538b67c..bba2f2f 100644 --- a/include/bluetooth_private.h +++ b/include/bluetooth_private.h @@ -28,10 +28,6 @@ #include #include -#ifndef GATT_DIRECT -#include -#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, /** 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 index 0000000..0423a50 --- /dev/null +++ b/include/bluetooth_type.h @@ -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 +#include +#include +#include + + #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, /** + +/* 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 index 7ca417c..0000000 --- a/include/mobile/bluetooth.h +++ /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 -#include -#include -#include -#include - -#include - -#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 index 64c76c8..0000000 --- a/include/mobile/bluetooth_extension.h +++ /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 index bcea6f9..0000000 --- a/include/mobile/bluetooth_internal.h +++ /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 -#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 index aa81ff5..0000000 --- a/include/mobile/bluetooth_type.h +++ /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 -#include -#include -#include - - #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 index 7e59c80..0000000 --- a/include/mobile/bluetooth_type_extension.h +++ /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 index 1c312ba..0000000 --- a/include/mobile/bluetooth_type_internal.h +++ /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, /** -#include -#include -#include -#include - -#include - -#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 index 64c76c8..0000000 --- a/include/tv/bluetooth_extension.h +++ /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 index bcea6f9..0000000 --- a/include/tv/bluetooth_internal.h +++ /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 -#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 index 53600a6..0000000 --- a/include/tv/bluetooth_type.h +++ /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 -#include -#include -#include - - #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 index 7e59c80..0000000 --- a/include/tv/bluetooth_type_extension.h +++ /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 index dcb2145..0000000 --- a/include/tv/bluetooth_type_internal.h +++ /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, /** -#include -#include -#include -#include - -#include - -#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 index 64c76c8..0000000 --- a/include/wearable/bluetooth_extension.h +++ /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 index 5958a5e..0000000 --- a/include/wearable/bluetooth_internal.h +++ /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 -#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 index 8560cd4..0000000 --- a/include/wearable/bluetooth_type.h +++ /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 -#include -#include -#include - - #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, /** - - #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__ */ diff --git a/packaging/capi-network-bluetooth.spec b/packaging/capi-network-bluetooth.spec index 502fb68..0cb44c1 100644 --- a/packaging/capi-network-bluetooth.spec +++ b/packaging/capi-network-bluetooth.spec @@ -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 - diff --git a/src/bluetooth-adapter.c b/src/bluetooth-adapter.c index 72f515e..ce9fc4e 100644 --- a/src/bluetooth-adapter.c +++ b/src/bluetooth-adapter.c @@ -34,6 +34,10 @@ 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 */ diff --git a/src/bluetooth-audio.c b/src/bluetooth-audio.c index b609a80..a5401a3 100644 --- a/src/bluetooth-audio.c +++ b/src/bluetooth-audio.c @@ -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 */ diff --git a/src/bluetooth-avrcp.c b/src/bluetooth-avrcp.c index 9da615c..3a35c51 100644 --- a/src/bluetooth-avrcp.c +++ b/src/bluetooth-avrcp.c @@ -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; } diff --git a/src/bluetooth-common.c b/src/bluetooth-common.c old mode 100755 new mode 100644 index 9bb9730..31ff603 --- a/src/bluetooth-common.c +++ b/src/bluetooth-common.c @@ -22,6 +22,7 @@ #include #include #include +#include #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; diff --git a/src/bluetooth-device.c b/src/bluetooth-device.c index 800eb4c..98edb2c 100644 --- a/src/bluetooth-device.c +++ b/src/bluetooth-device.c @@ -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; } diff --git a/src/bluetooth-dpm.c b/src/bluetooth-dpm.c index d176b10..69470f1 100644 --- a/src/bluetooth-dpm.c +++ b/src/bluetooth-dpm.c @@ -27,25 +27,6 @@ #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; diff --git a/src/bluetooth-gatt.c b/src/bluetooth-gatt.c index 3ff0add..b05bf20 100644 --- a/src/bluetooth-gatt.c +++ b/src/bluetooth-gatt.c @@ -24,11 +24,6 @@ #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(¶m, 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(¶m.data.data[0], value, value_length); - - param.attribute_handle = handle->handle; - ret = _bt_get_error_code(bluetooth_gatt_server_update_characteristic(instance_id, - ¶m)); - 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(¶m, 0x00, sizeof(bluetooth_gatt_server_update_value_t)); - param.length = *val_len; - memcpy(¶m.data.data[0], *val, *val_len); - - param.attribute_handle = handle->handle; - ret = _bt_get_error_code(bluetooth_gatt_server_update_characteristic(instance_id, - ¶m)); - -#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(¶m, 0x00, sizeof(bluetooth_gatt_server_update_value_t)); - param.length = *val_len; - memcpy(¶m.data.data[0], *val, *val_len); - - param.attribute_handle = handle->handle; - ret = _bt_get_error_code(bluetooth_gatt_server_update_characteristic(instance_id, - ¶m)); -#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(¶m, 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, ¶m, &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(¶m, 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(¶m, &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, ¶m, &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; +} diff --git a/src/bluetooth-hid.c b/src/bluetooth-hid.c index c8f4bdf..acb2001 100644 --- a/src/bluetooth-hid.c +++ b/src/bluetooth-hid.c @@ -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)); diff --git a/src/bluetooth-ipsp.c b/src/bluetooth-ipsp.c index bff3243..a1c9e6b 100644 --- a/src/bluetooth-ipsp.c +++ b/src/bluetooth-ipsp.c @@ -28,15 +28,11 @@ 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 index 0000000..9cc1cf8 --- /dev/null +++ b/src/bluetooth-map-client.c @@ -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 +#include +#include +#include +#include +#include + +#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 index 0000000..4fa02f0 --- /dev/null +++ b/src/bluetooth-otp.c @@ -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 +#include +#include +#include +#include +#include +#include +#include +#include + +#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; +} diff --git a/src/bluetooth-pbap.c b/src/bluetooth-pbap.c index 716f459..d6b5af1 100644 --- a/src/bluetooth-pbap.c +++ b/src/bluetooth-pbap.c @@ -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 */ diff --git a/src/bluetooth-proximity.c b/src/bluetooth-proximity.c index 713e2d9..6ca3990 100644 --- a/src/bluetooth-proximity.c +++ b/src/bluetooth-proximity.c @@ -26,116 +26,597 @@ #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 index 0000000..63ff05f --- /dev/null +++ b/src/bluetooth-tds.c @@ -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 +#include +#include +#include +#include +#include +#include + +#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 */ diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 69cdc4c..bb1758f 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -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) diff --git a/test/bt_unit_test.c b/test/bt_unit_test.c index c6aa471..dd866f7 100644 --- a/test/bt_unit_test.c +++ b/test/bt_unit_test.c @@ -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, ¶m); } 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, ¶m); + 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; diff --git a/test/bt_unit_test.h b/test/bt_unit_test.h index 3f90619..a30a2ad 100644 --- a/test/bt_unit_test.h +++ b/test/bt_unit_test.h @@ -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;