Add the implementation for ADV type for NON connectable IND (0x03) 15/276515/1
authorDohyun Pyun <dh79.pyun@samsung.com>
Mon, 20 Jun 2022 01:24:25 +0000 (10:24 +0900)
committerDohyun Pyun <dh79.pyun@samsung.com>
Mon, 20 Jun 2022 01:24:25 +0000 (10:24 +0900)
Change-Id: I16a03c9ecb4d1729c30acf47750d285df8f4a537
Signed-off-by: Dohyun Pyun <dh79.pyun@samsung.com>
include/bluetooth_internal.h
src/bluetooth-adapter.c
tests/test/bt_unit_test.c
tests/test/bt_unit_test.h

index 3532889d5df3876147394ac21a8643638332d357..c46426517a7296cc179834e059e2aa6dac02bce9 100644 (file)
@@ -1147,6 +1147,35 @@ int bt_adapter_le_set_advertising_custom_tx_power_level(bt_advertiser_h advertis
  */
 int bt_adapter_le_set_advertising_interval(bt_advertiser_h advertiser, int interval_min, int interval_max);
 
+
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Set advertising type directly
+ * @since_tizen 6.5
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/bluetooth.admin
+ *
+ * @param[in] advertiser The handle of advertiser
+ * @param[in] type the value is defined in the specification such as
+ *            (0 : ADV_IND, 1 : ADV_DIRECT_IND, 2 : ADV_SCAN_IND,
+ *             3: ADV_NONCOND_IND, 4: ADV_DIRECT_IND)
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE  Successful
+ * @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_type(bt_advertiser_h advertiser, int type);
+
+
 /**
  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
  * @brief Set advertising transport discovery data(TDS)
index c0cee957639dc48159b1e87cc1a3e8fe044a1e76..964db07beeaee702f44d988a5799abcc20b0c4a1 100644 (file)
@@ -2753,6 +2753,31 @@ int bt_adapter_le_set_advertising_filter_policy(bt_advertiser_h advertiser,
 }
 /* LCOV_EXCL_STOP */
 
+int bt_adapter_le_set_advertising_type(bt_advertiser_h advertiser,
+                                                       int type)
+{
+       int error_code = BT_ERROR_NONE;
+       bt_advertiser_s *__adv = (bt_advertiser_s *)advertiser;
+
+       BT_CHECK_LE_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(advertiser);
+
+       error_code = _bt_get_error_code(
+                       bluetooth_check_privilege_advertising_type());
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error_code),
+                                       error_code); /* LCOV_EXCL_LINE */
+               return BT_ERROR_PERMISSION_DENIED; /* LCOV_EXCL_LINE */
+       }
+
+       BT_INFO("Set advertising type : %d", type);
+
+       __adv->adv_params.type = type;
+
+       return error_code;
+}
+
 int bt_adapter_le_set_advertising_connectable(bt_advertiser_h advertiser,
                                                        bool connectable)
 {
index 2516fb45e27a5e4ebaea319bb4e4cf5f057dc7cb..607333ba33623d4a033089d7ee6dfc58d7e0493a 100644 (file)
@@ -322,6 +322,8 @@ tc_table_t tc_adapter_le[] = {
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_ADVERTISING_FILTER_POLICY},
        {"bt_adapter_le_set_advertising_connectable"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_ADVERTISING_CONNECTABLE},
+       {"bt_adapter_le_set_advertising_type (Non-connectable)"
+               , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_ADVERTISING_TYPE},
        {"bt_adapter_le_set_advertising_custom_tx_power_level"
                , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_ADVERTISING_CUSTOM_TX_POWER},
        {"bt_adapter_le_set_advertising_interval"
@@ -3635,6 +3637,10 @@ int test_set_params(int test_id, char *param)
                        param_count = 1;
                        TC_PRT("Input adv type \n (0 : Non-connectable (ADV_SCAN_IND), 1 : Connectable (ADV_IND) ");
                        break;
+               case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_ADVERTISING_TYPE:
+                       param_count = 1;
+                       TC_PRT("Input adv type \n (0 : ADV_IND, 1 : ADV_DIRECT_IND, 2 : ADV_SCAN_IND, 3: ADV_NONCOND_IND, 4: ADV_DIRECT_IND");
+                       break;
                case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_ADVERTISING_CUSTOM_TX_POWER:
                        param_count = 1;
                        TC_PRT("Input adv Tx power level \n ( 1 ~ -127 dBm) ");
@@ -5229,6 +5235,27 @@ int test_input_callback(void *data)
                                TC_PRT("add scan response data [0x%04x]", ret);
                        break;
                }
+               case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_ADVERTISING_TYPE: {
+                       int type = BT_ADAPTER_LE_ADVERTISING_NON_CONNECTABLE;
+
+                       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) {
+                               type = atoi(g_test_param.params[0]);
+                               __bt_free_test_param(&g_test_param);
+                       }
+
+                       ret = bt_adapter_le_set_advertising_type(advertiser, type);
+                       if (ret != BT_ERROR_NONE)
+                               TC_PRT("add scan response data [0x%04x]", ret);
+                       break;
+               }
                case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_ADVERTISING_CUSTOM_TX_POWER: {
                        int tx_power_level = 0;
 
index 3a603238605f1038a6c11c0eb163ededdc4881bc..1d01af058fa20c1304e2c32a7da85169b349dcd3 100644 (file)
@@ -122,6 +122,7 @@ typedef enum {
        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_SET_ADVERTISING_TYPE,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_ADVERTISING_CUSTOM_TX_POWER,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_ADVERTISING_INTERVAL,
        BT_UNIT_TEST_FUNCTION_ADAPTER_LE_START_ADVERTISING_NEW,