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 7a599d71f121842634ff5b96f0b331d2021890db..f8c41102377310dbefe6076477fcf24957540c89 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 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 1af0b4f5b44a4a042f856c0798fa239322f7391f..59d4e0f32e75609d4abc50e0fb5160104060b1d5 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");