Add support for custom advertising flags. 50/286850/5 accepted/tizen/unified/20230223.162142
authorJakub Latusek <j.latusek@samsung.com>
Wed, 1 Feb 2023 05:56:12 +0000 (14:56 +0900)
committerJakub Latusek <j.latusek@samsung.com>
Fri, 17 Feb 2023 10:20:51 +0000 (11:20 +0100)
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 7a599d7..f8c4110 100644 (file)
@@ -882,6 +882,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 f683506..c137360 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 787f320..381f469 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 190efe9..2631d50 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 1af0b4f..59d4e0f 100644 (file)
@@ -1583,6 +1583,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: {
                        if (len != (BLUETOOTH_APPEARANCE_LENGTH + 1)) {
                                BT_ERR("Appearance characteristic length is invalid");