*
*/
+/**
+ * @defgroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE Bluetooth LE Adapter for Bluetooth Extended Advertising
+ * @brief Bluetooth LE API provides functions for bluetooth extended advertising functionality such as setting Primary and Secondary Phy
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ *
+ * @section CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE_HEADER Required Header
+ * \#include <bluetooth.h>
+ *
+ * @section CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE_OVERVIEW Overview
+ * Bluetooth LE API provides functions for bluetooth extended advertising functionality such as setting Primary and Secondary Phy
+ *
+ * @section CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE_FEATURE Related Features
+ * This API is related with the following features:\n
+ * - %http://tizen.org/feature/network.bluetooth\n
+ * - %http://tizen.org/feature/network.bluetooth.le\n
+ * - %http://tizen.org/feature/network.bluetooth.le.5_0\n
+ * - %http://tizen.org/feature/network.bluetooth.le.adv_ext\n
+ * It is recommended to design applications with regard to features, for reliability.\n
+ *
+ * You can check if the device supports the related features for this API by using @ref CAPI_SYSTEM_SYSTEM_INFO_MODULE, and control your application's actions accordingly.\n
+ *
+ * To ensure your application is only running on devices with specific features, please define the features in your manifest file using the manifest editor in the SDK.\n
+ *
+ * More details on featuring your application can be found from <a href="https://docs.tizen.org/application/tizen-studio/native-tools/manifest-text-editor#feature-element"><b>feature element description</b></a>.
+ *
+ */
/**
* @defgroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE Bluetooth Device
*/
int bt_socket_reject_l2cap_channel(int socket_fd);
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+ * @brief Starts the LE scan to find LE advertisement.
+ *
+ * @details If a LE advertisement is found, bt_adapter_le_new_scan_result_cb() will be invoked.
+ *
+ * @since_tizen 8.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @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_SUPPORTED Not supported
+ * @retval #BT_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @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
+ *
+ * @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_new_scan_result_cb()
+ */
+int bt_adapter_le_start_scan_new(bt_adapter_le_new_scan_result_cb cb, void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+ * @brief Sets Bluetooth LE scan role.
+ * @since_tizen 8.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] role The scan role
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED Adapter is not enabled
+ * @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_role(bt_adapter_le_scan_role_e role);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+ * @brief Sets Bluetooth LE scan phy.
+ * @since_tizen 8.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] phy The scanning phy. Valid values are one of #BT_LE_ALL_PHY,
+ * #BT_LE_1M_PHY, #BT_LE_CODED_PHY.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED Adapter is not enabled
+ * @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_phy(bt_adapter_le_phy_e phy);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+ * @brief Sets Bluetooth LE advertising legacy mode.
+ * @since_tizen 8.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] is_legacy Advertisement is extended or legacy
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED Adapter is not enabled
+ * @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_advertising_legacy_mode(bt_advertiser_h advertiser, bool is_legacy);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+ * @brief Sets Bluetooth LE advertising primary phy.
+ * @since_tizen 8.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] primary_phy Primary phy of advertiser. Valid values are #BT_LE_1M_PHY, #BT_LE_CODED_PHY.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED Adapter is not enabled
+ * @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_advertising_primary_phy(bt_advertiser_h advertiser,
+ bt_adapter_le_phy_e primary_phy);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+ * @brief Sets Bluetooth LE advertising secondary phy.
+ * @since_tizen 8.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/bluetooth
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] secondary_phy Secondary phy of advertiser, Valid values are #BT_LE_1M_PHY,
+ * #BT_LE_2M_PHY, #BT_LE_CODED_PHY.
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_ENABLED Adapter is not enabled
+ * @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_advertising_secondary_phy(bt_advertiser_h advertiser,
+ bt_adapter_le_phy_e secondary_phy);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+ * @brief Checks if LE Extended Advertising feature is supported or not.
+ * @since_tizen 8.0
+ *
+ * @remarks The LE Extended Advertising feature was introduced in the BT 5.0 core specification.
+ *
+ * @param[out] is_supported The LE Extended Advertising feature support: (@c true = supported , @c false = not supported)
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED Adapter is not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ */
+int bt_adapter_le_is_extended_advertising_supported(bool *is_supported);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+ * @brief Checks if LE Extended Scan feature is supported or not.
+ * @since_tizen 8.0
+ *
+ * @remarks The LE Extended Scan feature was introduced in the BT 5.0 core specification.
+ *
+ * @param[out] is_supported The LE Extended Scan feature support: (@c true = supported , @c false = not supported)
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED Adapter is not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ */
+int bt_adapter_le_is_extended_scan_supported(bool *is_supported);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+ * @brief Gets maximum advertisement data length supported by controller.
+ * @since_tizen 8.0
+ *
+ * @remarks The LE Maximum Advertising Data Length feature was introduced in the BT 5.0 core specification.
+ *
+ * @param[out] data_length The maximum length supported by controller for use as advertisement data or scan response data
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
+ * @retval #BT_ERROR_NOT_ENABLED Adapter is not enabled
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
+ */
+int bt_adapter_le_get_maximum_advertising_data_length(int *data_length);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+ * @brief Gets the primary phy data from the extended scan result.
+ * @since_tizen 8.0
+ *
+ * @param[in] handle The extended scan result handle
+ * @param[out] primary_phy The primary PHY
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see bt_adapter_le_start_scan_new()
+ * @see bt_adapter_le_new_scan_result_cb()
+ */
+int bt_adapter_le_get_new_scan_result_primary_phy(bt_new_scan_result_h handle, int *primary_phy);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+ * @brief Gets the secondary phy data from the extended scan result.
+ * @since_tizen 8.0
+ *
+ * @param[in] handle The extended scan result handle
+ * @param[out] secondary_phy The secondary PHY
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see bt_adapter_le_start_scan_new()
+ * @see bt_adapter_le_new_scan_result_cb()
+ */
+int bt_adapter_le_get_new_scan_result_secondary_phy(bt_new_scan_result_h handle, int *secondary_phy);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+ * @brief Gets the advertising sid data from the extended scan result.
+ * @since_tizen 8.0
+ *
+ * @param[in] handle The extended scan result handle
+ * @param[out] advertising_sid The advertising sid
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see bt_adapter_le_start_scan_new()
+ * @see bt_adapter_le_new_scan_result_cb()
+ */
+int bt_adapter_le_get_new_scan_result_advertising_sid(bt_new_scan_result_h handle, int *advertising_sid);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+ * @brief Gets the periodic advertising interval data from the extended scan result.
+ * @since_tizen 8.0
+ *
+ * @param[in] handle The extended scan result handle
+ * @param[out] periodic_adv_int The periodic advertising interval
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see bt_adapter_le_start_scan_new()
+ * @see bt_adapter_le_new_scan_result_cb()
+ */
+int bt_adapter_le_get_new_scan_result_periodic_adv_int(bt_new_scan_result_h handle, int *periodic_adv_int);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+ * @brief Checks if the scan result is extended or not.
+ * @since_tizen 8.0
+ *
+ * @param[in] handle The extended scan result handle
+ * @param[out] is_extended The whether to extended
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see bt_adapter_le_start_scan_new()
+ * @see bt_adapter_le_new_scan_result_cb()
+ */
+int bt_adapter_le_get_new_scan_result_is_extended(bt_new_scan_result_h handle, bool *is_extended);
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+ * @brief Gets the legacy scan result information from the extended scan result.
+ * @since_tizen 8.0
+ *
+ * @remarks The @a legacy_info should not be released.
+ * @remarks The @a legacy_info is available until the callback has been called.
+ *
+ * @param[in] handle The extended scan result handle
+ * @param[out] legacy_info The legacy scan result information
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
+ * @retval #BT_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see bt_adapter_le_start_scan_new()
+ * @see bt_adapter_le_new_scan_result_cb()
+ */
+int bt_adapter_le_get_new_scan_result_legacy_info(bt_new_scan_result_h handle,
+ bt_adapter_le_device_scan_result_info_s **legacy_info);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
int bt_adapter_le_is_scan_filter_supported(bool *is_supported);
/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Starts the LE scan to find LE advertisement.
- *
- * @details If a LE advertisement is found, bt_adapter_le_new_scan_result_cb() will be invoked.
- *
- * @since_tizen 8.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @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_new_scan_result_cb()
- */
-int bt_adapter_le_start_scan_new(bt_adapter_le_new_scan_result_cb cb, void *user_data);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Sets Bluetooth LE scan role.
- * @since_tizen 8.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] role The scan role
- *
- * @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_role(bt_adapter_le_scan_role_e role);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Sets Bluetooth LE scan role.
- * @since_tizen 8.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] phy The scanning phy. Valid values are one of BT_LE_ALL_PHY,
- * BT_LE_1M_PHY, BT_LE_CODED_PHY.
- *
- * @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_phy(bt_adapter_le_phy_e phy);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Sets Bluetooth LE scan role.
- * @since_tizen 8.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] isLegacy Advertisement is extended or legacy
- *
- * @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_advertising_legacy_mode(bt_advertiser_h advertiser, bool isLegacy);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Sets Bluetooth LE scan role.
- * @since_tizen 8.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] primary_phy Primary phy of advertiser. Valid values are BT_LE_1M_PHY, BT_LE_CODED_PHY.
- *
- * @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_advertising_primary_phy(bt_advertiser_h advertiser,
- bt_adapter_le_phy_e primary_phy);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
- * @brief Sets Bluetooth LE scan role.
- * @since_tizen 8.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/bluetooth
- * @param[in] secondary_phy Secondary phy of advertiser, Valid values are BT_LE_1M_PHY,
- * BT_LE_2M_PHY, BT_LE_CODED_PHY.
- *
- * @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_advertising_secondary_phy(bt_advertiser_h advertiser,
- bt_adapter_le_phy_e secondary_phy);
-
-/**
* @internal
* @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
* @brief Parse the samsung specific manufacturer data of discovered device.
unsigned char *transport_data, unsigned int transport_data_len);
/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_50_MODULE
- * @brief Checks if LE Extended Advertising feature is supported or not.
- * @since_tizen 8.0
- *
- * @remarks The LE Extended Advertising feature was introduced in the BT 5.0 core specification.
- *
- * @param[out] is_supported The LE Extended Advertising feature support: (@c true = supported , @c false = not supported)
- *
- * @return 0 on success, otherwise a negative error value.
- * @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_NOT_SUPPORTED Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_adapter_le_is_extended_advertising_supported(bool *is_supported);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_50_MODULE
- * @brief Checks if LE Extended Scan feature is supported or not.
- * @since_tizen 8.0
- *
- * @remarks The LE Extended Scan feature was introduced in the BT 5.0 core specification.
- *
- * @param[out] is_supported The LE Extended Scan feature support: (@c true = supported , @c false = not supported)
- *
- * @return 0 on success, otherwise a negative error value.
- * @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_NOT_SUPPORTED Not supported
- *
- * @pre The state of local Bluetooth must be #BT_ADAPTER_ENABLED.
- */
-int bt_adapter_le_is_extended_scan_supported(bool *is_supported);
-
-/**
- * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_50_MODULE
- * @brief Maximum advertisement data length supported by controller
- * @since_tizen 8.0
- *
- * @remarks The LE Maximum Advertising Data Length feature was introduced in the BT 5.0 core specification.
- *
- * @param[out] data_length The maximum length supported by controller for use as advertisement data or scan response 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 Adapter is 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_le_get_maximum_advertising_data_length(int *data_length);
-
-/**
* @internal
* @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
* @brief Retrieves the address of the devices connected with the specific profile.
*/
typedef void (*bt_ag_battery_level_changed_cb) (const char *remote_address, unsigned int level, void *user_data);
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Structure of le scan result information containing extended and legacy scan.
+ * @since_tizen 8.0
+ *
+ * @see bt_adapter_le_new_scan_result_cb()
+ */
+typedef struct {
+ int event_type;
+ int primary_phy;
+ int secondary_phy;
+ int advertising_sid;
+ int tx_power;
+ int periodic_adv_int;
+ bool is_extended;
+ bt_adapter_le_device_scan_result_info_s *legacy_scan_result;
+} bt_adapter_le_new_device_scan_result_info_s;
+
typedef enum {
_PROFILE_UNKNOWN = 0,
_PROFILE_MOBILE = 0x1,
typedef void (*bt_socket_l2cap_channel_connection_state_changed_cb)
(int result, bt_socket_connection_state_e connection_state, bt_socket_l2cap_le_connection_s *connection, void *user_data);
+/**
+* @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+* @brief Enumerations of the Bluetooth LE scan role.
+* @since_tizen 8.0
+*/
+typedef enum {
+ BT_ADAPTER_LE_SCAN_ALL = 0x00, /**< Scan all */
+ BT_ADAPTER_LE_SCAN_LEGACY_ONLY, /**< Legacy scan only */
+ BT_ADAPTER_LE_SCAN_EXTENDED_ONLY /**< Extended scan only */
+} bt_adapter_le_scan_role_e;
+
+/**
+* @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+* @brief Enumerations of the Bluetooth LE phy.
+* @since_tizen 8.0
+*/
+typedef enum {
+ BT_LE_ALL_PHY = 0x00, /**< All phy */
+ BT_LE_1M_PHY = 0x01, /**< 1M phy */
+ BT_LE_2M_PHY = 0x02, /**< 2M phy */
+ BT_LE_CODED_PHY = 0x03 /**< Coded phy */
+} bt_adapter_le_phy_e;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+ * @brief The handle of a new scan result.
+ * @since_tizen 8.0
+ */
+typedef void *bt_new_scan_result_h;
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_ADV_EXT_MODULE
+ * @brief Called when the LE advertisement has been found.
+ * @since_tizen 8.0
+ *
+ * @param[in] result The result of the LE scan
+ * @param[in] handle The handle of a new scan result
+ * @param[in] user_data The user data passed from the start function
+ *
+ * @see bt_adapter_le_start_scan_new()
+ */
+typedef void (*bt_adapter_le_new_scan_result_cb)(int result, bt_new_scan_result_h handle, void *user_data);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
/**
* @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
* @since_tizen 8.0
-* @brief Enumerations of the Bluetooth LE scan role.
-*/
-typedef enum {
- BT_ADAPTER_LE_SCAN_ALL = 0x00,
- BT_ADAPTER_LE_SCAN_LEGACY_ONLY,
- BT_ADAPTER_LE_SCAN_EXTENDED_ONLY
-} bt_adapter_le_scan_role_e;
-
-/**
-* @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
-* @since_tizen 8.0
-* @brief Enumerations of the Bluetooth LE phy.
-*/
-typedef enum {
- BT_LE_ALL_PHY = 0x00,
- BT_LE_1M_PHY = 0x01,
- BT_LE_2M_PHY = 0x02,
- BT_LE_CODED_PHY = 0x03
-} bt_adapter_le_phy_e;
-
-/**
-* @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
-* @since_tizen 8.0
* @brief Enumerations of the Bluetooth LE phy mask.
*/
typedef enum {
bt_tds_transport_block_list_s *info, bt_adapter_le_device_scan_result_info_s *scan_info,
void *user_data);
-typedef struct {
- int event_type;
- int primary_phy;
- int secondary_phy;
- int advertising_sid;
- int tx_power;
- int periodic_adv_int;
- bool is_extended;
- bt_adapter_le_device_scan_result_info_s *legacy_scan_result;
-} bt_adapter_le_new_device_scan_result_info_s;
-
-typedef void (*bt_adapter_le_new_scan_result_cb)(int result,
- bt_adapter_le_new_device_scan_result_info_s *info, void *user_data);
/**
* @internal
* @since_tizen 3.0
return BT_ERROR_NONE;
}
-int bt_adapter_le_set_advertising_legacy_mode(bt_advertiser_h advertiser, bool isLegacy)
+int bt_adapter_le_set_advertising_legacy_mode(bt_advertiser_h advertiser, bool is_legacy)
{
int error_code;
bt_advertiser_s *__adv = (bt_advertiser_s *)advertiser;
return BT_ERROR_PERMISSION_DENIED;
}
- BT_DBG("Setting legacy mode %d", isLegacy);
- __adv->adv_params.is_legacy = isLegacy;
+ BT_DBG("Setting legacy mode %d", is_legacy);
+ __adv->adv_params.is_legacy = is_legacy;
return BT_ERROR_NONE;
}
return error_code;
}
+int bt_adapter_le_get_new_scan_result_primary_phy(bt_new_scan_result_h handle, int *primary_phy)
+{
+ bt_adapter_le_new_device_scan_result_info_s *info = handle;
+
+ BT_CHECK_LE_SUPPORT();
+ BT_CHECK_LE_5_0_SUPPORT();
+ BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_LE_ADV_EXT);
+ BT_CHECK_INIT_STATUS();
+ BT_CHECK_INPUT_PARAMETER(handle);
+ BT_CHECK_INPUT_PARAMETER(primary_phy);
+
+ *primary_phy = info->primary_phy;
+ return BT_ERROR_NONE;
+}
+
+int bt_adapter_le_get_new_scan_result_secondary_phy(bt_new_scan_result_h handle, int *secondary_phy)
+{
+ bt_adapter_le_new_device_scan_result_info_s *info = handle;
+
+ BT_CHECK_LE_SUPPORT();
+ BT_CHECK_LE_5_0_SUPPORT();
+ BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_LE_ADV_EXT);
+ BT_CHECK_INIT_STATUS();
+ BT_CHECK_INPUT_PARAMETER(handle);
+ BT_CHECK_INPUT_PARAMETER(secondary_phy);
+
+ *secondary_phy = info->secondary_phy;
+ return BT_ERROR_NONE;
+}
+
+int bt_adapter_le_get_new_scan_result_advertising_sid(bt_new_scan_result_h handle, int *advertising_sid)
+{
+ bt_adapter_le_new_device_scan_result_info_s *info = handle;
+
+ BT_CHECK_LE_SUPPORT();
+ BT_CHECK_LE_5_0_SUPPORT();
+ BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_LE_ADV_EXT);
+ BT_CHECK_INIT_STATUS();
+ BT_CHECK_INPUT_PARAMETER(handle);
+ BT_CHECK_INPUT_PARAMETER(advertising_sid);
+
+ *advertising_sid = info->advertising_sid;
+ return BT_ERROR_NONE;
+}
+
+int bt_adapter_le_get_new_scan_result_periodic_adv_int(bt_new_scan_result_h handle, int *periodic_adv_int)
+{
+ bt_adapter_le_new_device_scan_result_info_s *info = handle;
+
+ BT_CHECK_LE_SUPPORT();
+ BT_CHECK_LE_5_0_SUPPORT();
+ BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_LE_ADV_EXT);
+ BT_CHECK_INIT_STATUS();
+ BT_CHECK_INPUT_PARAMETER(handle);
+ BT_CHECK_INPUT_PARAMETER(periodic_adv_int);
+
+ *periodic_adv_int = info->periodic_adv_int;
+ return BT_ERROR_NONE;
+}
+
+int bt_adapter_le_get_new_scan_result_is_extended(bt_new_scan_result_h handle, bool *is_extended)
+{
+ bt_adapter_le_new_device_scan_result_info_s *info = handle;
+
+ BT_CHECK_LE_SUPPORT();
+ BT_CHECK_LE_5_0_SUPPORT();
+ BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_LE_ADV_EXT);
+ BT_CHECK_INIT_STATUS();
+ BT_CHECK_INPUT_PARAMETER(handle);
+ BT_CHECK_INPUT_PARAMETER(is_extended);
+
+ *is_extended = info->is_extended;
+ return BT_ERROR_NONE;
+}
+
+int bt_adapter_le_get_new_scan_result_legacy_info(bt_new_scan_result_h handle,
+ bt_adapter_le_device_scan_result_info_s **legacy_info)
+{
+ bt_adapter_le_new_device_scan_result_info_s *info = handle;
+
+ BT_CHECK_LE_SUPPORT();
+ BT_CHECK_LE_5_0_SUPPORT();
+ BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_LE_ADV_EXT);
+ BT_CHECK_INIT_STATUS();
+ BT_CHECK_INPUT_PARAMETER(handle);
+ BT_CHECK_INPUT_PARAMETER(legacy_info);
+
+ *legacy_info = info->legacy_scan_result;
+ return BT_ERROR_NONE;
+}
+
int bt_adapter_le_stop_scan(void)
{
int error_code = BT_ERROR_NONE;
gboolean support = FALSE;
BT_CHECK_LE_5_0_SUPPORT();
+ BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_LE_ADV_EXT);
BT_CHECK_INIT_STATUS();
BT_CHECK_INPUT_PARAMETER(is_supported);
gboolean support = FALSE;
BT_CHECK_LE_5_0_SUPPORT();
+ BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_LE_ADV_EXT);
BT_CHECK_INIT_STATUS();
BT_CHECK_INPUT_PARAMETER(is_supported);
gint max_data_len = 0;
BT_CHECK_LE_5_0_SUPPORT();
+ BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_LE_ADV_EXT);
BT_CHECK_INIT_STATUS();
BT_CHECK_INPUT_PARAMETER(data_length);
event_index = BT_EVENT_LE_NEW_SCAN_RESULT_UPDATED;
if (bt_event_slot_container[event_index].callback != NULL) {
if (__bt_get_bt_adapter_le_new_device_scan_info_s(&ext_scan_info, (bluetooth_le_device_info_t *)(param->param_data)) == BT_ERROR_NONE) {
+ bt_new_scan_result_h handle = ext_scan_info;
((bt_adapter_le_new_scan_result_cb)bt_event_slot_container[event_index].callback)
- (_bt_get_error_code(param->result), ext_scan_info, bt_event_slot_container[event_index].user_data);
+ (_bt_get_error_code(param->result), handle, bt_event_slot_container[event_index].user_data);
} else {
((bt_adapter_le_new_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);
}
static void __bt_adapter_le_new_scan_result_cb(
- int result, bt_adapter_le_new_device_scan_result_info_s *info,
+ int result, bt_new_scan_result_h handle,
void *user_data)
{
int i;
bt_adapter_le_packet_type_e pkt_type = BT_ADAPTER_LE_PACKET_ADVERTISING;
+ bt_adapter_le_device_scan_result_info_s *legacy_info;
bt_adapter_le_device_scan_result_info_s *adv_info;
+ int primary_phy;
+ int secondary_phy;
+ int advertising_sid;
+ int periodic_adv_int;
+ bool is_extended;
- if (info == NULL) {
+ if (handle == NULL) {
TC_PRT("No discovery_info!");
return;
}
+ bt_adapter_le_get_new_scan_result_primary_phy(handle, &primary_phy);
+ bt_adapter_le_get_new_scan_result_secondary_phy(handle, &secondary_phy);
+ bt_adapter_le_get_new_scan_result_advertising_sid(handle, &advertising_sid);
+ bt_adapter_le_get_new_scan_result_periodic_adv_int(handle, &periodic_adv_int);
+ bt_adapter_le_get_new_scan_result_is_extended(handle, &is_extended);
+ bt_adapter_le_get_new_scan_result_legacy_info(handle, &legacy_info);
+
TC_PRT("New Scan Result");
- TC_PRT("%s Adv %d Scan resp %d RSSI %d Addr_type %d", info->legacy_scan_result->remote_address,
- info->legacy_scan_result->adv_data_len, info->legacy_scan_result->scan_data_len,
- info->legacy_scan_result->rssi,info->legacy_scan_result->address_type);
+ TC_PRT("%s Adv %d Scan resp %d RSSI %d Addr_type %d", legacy_info->remote_address,
+ legacy_info->adv_data_len, legacy_info->scan_data_len,
+ legacy_info->rssi, legacy_info->address_type);
TC_PRT("Primary_phy %d Secondary_phy %d, Advertising_sid %d, periodic_adv_int %d, Is_extended %d",
- info->primary_phy, info->secondary_phy,
- info->advertising_sid, info->periodic_adv_int, info->is_extended);
+ primary_phy, secondary_phy, advertising_sid, periodic_adv_int, is_extended);
GSList *l = NULL;
- l = g_slist_find_custom(le_scan_list, info->legacy_scan_result->remote_address,
+ l = g_slist_find_custom(le_scan_list, legacy_info->remote_address,
(GCompareFunc)__bt_compare_address);
if (l == NULL) {
adv_info = g_malloc0(sizeof(bt_adapter_le_device_scan_result_info_s));
- adv_info->remote_address= g_strdup(info->legacy_scan_result->remote_address);
- adv_info->rssi = info->legacy_scan_result->rssi;
+ adv_info->remote_address= g_strdup(legacy_info->remote_address);
+ adv_info->rssi = legacy_info->rssi;
le_scan_list = g_slist_append(le_scan_list, adv_info);
} else {
adv_info = l->data;
- adv_info->rssi = info->legacy_scan_result->rssi;
+ adv_info->rssi = legacy_info->rssi;
}
for (i = 0; i < 2; i++) {
pkt_type += i;
if (pkt_type == BT_ADAPTER_LE_PACKET_ADVERTISING
- && info->legacy_scan_result->adv_data == NULL) continue;
+ && legacy_info->adv_data == NULL) continue;
if (pkt_type == BT_ADAPTER_LE_PACKET_SCAN_RESPONSE
- && info->legacy_scan_result->scan_data == NULL) break;
+ && legacy_info->scan_data == NULL) break;
if (bt_adapter_le_get_scan_result_service_uuids(
- info->legacy_scan_result, pkt_type, &uuids, &count) == BT_ERROR_NONE) {
+ legacy_info, pkt_type, &uuids, &count) == BT_ERROR_NONE) {
int i;
for (i = 0; i < count; i++) {
TC_PRT("UUID[%d] = %s", i + 1, uuids[i]);
g_free(uuids);
}
if (bt_adapter_le_get_scan_result_device_name(
- info->legacy_scan_result, pkt_type, &device_name) == BT_ERROR_NONE) {
+ legacy_info, pkt_type, &device_name) == BT_ERROR_NONE) {
TC_PRT("Device name = %s", device_name);
if (adv_info->adv_data == NULL)
adv_info->adv_data= g_strdup(device_name);
g_free(device_name);
}
if (bt_adapter_le_get_scan_result_tx_power_level(
- info->legacy_scan_result, pkt_type, &tx_power_level) == BT_ERROR_NONE) {
+ legacy_info, pkt_type, &tx_power_level) == BT_ERROR_NONE) {
TC_PRT("TX Power level = %d", tx_power_level);
}
if (bt_adapter_le_get_scan_result_service_solicitation_uuids(
- info->legacy_scan_result, pkt_type, &uuids, &count) == BT_ERROR_NONE) {
+ legacy_info, pkt_type, &uuids, &count) == BT_ERROR_NONE) {
int i;
for (i = 0; i < count; i++) {
TC_PRT("Solicitation UUID[%d] = %s", i + 1, uuids[i]);
g_free(uuids);
}
if (bt_adapter_le_get_scan_result_service_data_list(
- info->legacy_scan_result, pkt_type, &data_list, &count) == BT_ERROR_NONE) {
+ legacy_info, pkt_type, &data_list, &count) == BT_ERROR_NONE) {
int i;
for (i = 0; i < count; i++)
TC_PRT("Service Data[%d] = [0x%2.2X%2.2X:0x%.2X...]",
bt_adapter_le_free_service_data_list(data_list, count);
}
if (bt_adapter_le_get_scan_result_appearance(
- info->legacy_scan_result, pkt_type, &appearance) == BT_ERROR_NONE) {
+ legacy_info, pkt_type, &appearance) == BT_ERROR_NONE) {
TC_PRT("Appearance = %d", appearance);
}
if (bt_adapter_le_get_scan_result_manufacturer_data(
- info->legacy_scan_result, pkt_type, &manufacturer_id, &manufacturer_data,
+ legacy_info, pkt_type, &manufacturer_id, &manufacturer_data,
&manufacturer_data_len) == BT_ERROR_NONE) {
if (manufacturer_data_len > 1) {
g_free(manufacturer_data);
}
- if (bt_adapter_le_get_scan_result_ibeacon_report(info->legacy_scan_result, pkt_type,
+ if (bt_adapter_le_get_scan_result_ibeacon_report(legacy_info, pkt_type,
&ibeacon_info) == BT_ERROR_NONE) {
TC_PRT("APPLE IBEACON");
TC_PRT("Company_id: %d", ibeacon_info->company_id);