Add support for custom advertising flags. 76/295576/1 accepted/tizen/6.5/unified/20230719.174759
authorJakub Latusek <j.latusek@samsung.com>
Wed, 1 Feb 2023 05:56:12 +0000 (14:56 +0900)
committerAnuj Kumar Singh <anujk.singh@samsung.com>
Mon, 10 Jul 2023 10:31:05 +0000 (16:01 +0530)
It is required to set proper advertising flags when establishing a
connection using
Bluetooth low energy to properly recognize device type.
Without this, the Linux device cannot recognize the Tizen device
properly and establish a connection.

Change-Id: I7899e9ab56a40095df3a91aa15fc956ebd2aea58
Signed-off-by: Wootak Jung <wootak.jung@samsung.com>
Signed-off-by: Jakub Latusek <j.latusek@samsung.com>
bt-oal/bluez_hal/src/bt-hal-adapter-le.c
bt-oal/hardware/bt_gatt_server.h
bt-oal/include/oal-gatt.h
bt-oal/oal-gatt.c
bt-service/services/adapter/bt-service-core-adapter-le.c

index 3d9c87ce02e75516fe1e75d0ef2e58ee5fc6e855..0ef5f339c8882cfc6e2a5f66ce2224ddb27ce64a 100644 (file)
@@ -876,6 +876,19 @@ int _bt_hal_set_advertising_data(btgatt_adv_param_setup_t adv_param_setup)
                DBG("After Transport Discovery Data: Index [%d]", index);
        }
 
+       /* Flags */
+       if (adv_param_setup.adv_flags > 0) {
+               if (index + 2 >= BT_HAL_ADVERTISING_DATA_LENGTH_MAX)
+                       return BT_STATUS_FAIL;
+
+               adv_data[index] = 0x02;
+               adv_data[index+1] = 0x01;
+               adv_data[index+2] = adv_param_setup.adv_flags;
+               index += 3;
+               length += 3;
+               DBG("After Flags: Index [%d]", index);
+       }
+
        if (length >= BT_HAL_ADVERTISING_DATA_LENGTH_MAX)
                return BT_STATUS_FAIL;
 
index f683506490ae0d1abbba48b0ceb1be6a8569c66a..c137360e461b63bd010ded529820373620f4c3a4 100644 (file)
@@ -59,6 +59,7 @@ typedef struct {
        uint16_t  min_interval;
        uint16_t  max_interval;
        uint8_t  adv_type;
+       uint8_t  adv_flags;
        uint8_t  chnl_map;
        uint8_t  tx_power;
        uint8_t  timeout_s;
index 787f3200198ce427f76a5c20648fd523e78d87e5..381f469c94e0d147cf57908380b14495c3dc864d 100644 (file)
@@ -88,6 +88,7 @@ typedef struct {
        uint16_t min_interval;
        uint16_t max_interval;
        uint8_t  adv_type;
+       uint8_t  adv_flags;
        uint8_t  chnl_map;
        uint16_t  tx_power;
        uint8_t  timeout_s;
index 190efe9f336b7efbfa7aa37e2cf92d9f7821c05d..2631d50ef6d8f69d069a874a19ddbbcc57b4e54e 100644 (file)
@@ -580,6 +580,7 @@ oal_status_t gatts_multi_adv_set_inst_data(int instance_id,
        adv_setup.min_interval = adv_param_setup->min_interval;
        adv_setup.max_interval = adv_param_setup->min_interval;
        adv_setup.adv_type = adv_param_setup->adv_type;
+       adv_setup.adv_flags = adv_param_setup->adv_flags;
        adv_setup.chnl_map = adv_param_setup->chnl_map;
        adv_setup.tx_power = adv_param_setup->tx_power;
        adv_setup.timeout_s = adv_param_setup->timeout_s;
index 6451af58e895eaabd3e06cebfbde85a43b28aa9a..6248af15adc1014e94dcf4fa7d2f04b42e570953 100644 (file)
@@ -1568,6 +1568,11 @@ static int __bt_set_multi_adv_param(oal_ble_multi_adv_param_setup_t *adv_setup,
                        adv_setup->include_name = 1;
                        break;
                }
+               case 0x01: {
+                       adv_setup->adv_flags = ptr[2];
+                       BT_DBG("adv_flags: 0x%x", adv_setup->adv_flags);
+                       break;
+               }
                case 0x19: {
 #ifdef TIZEN_BT_HAL
                        adv_setup->include_appearance = 1;