Add adv data custom name handling logic 04/288404/2 accepted/tizen/unified/20230303.162750
authorWootak Jung <wootak.jung@samsung.com>
Thu, 16 Feb 2023 06:40:30 +0000 (15:40 +0900)
committerWootak Jung <wootak.jung@samsung.com>
Mon, 20 Feb 2023 07:22:06 +0000 (07:22 +0000)
Change-Id: Ia7a9db2d407855dfa4b38ee31f35be08f9f80bd3
Signed-off-by: Wootak Jung <wootak.jung@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 f8c41102377310dbefe6076477fcf24957540c89..0c60734ae32deecaa8309eb9ea4aa8c37d80c17c 100644 (file)
@@ -856,6 +856,19 @@ int _bt_hal_set_advertising_data(btgatt_adv_param_setup_t adv_param_setup)
                DBG("After Name: Index [%d]", index);
        }
 
+       /* Custom Name */
+       if (adv_param_setup.custom_name_len > 0) {
+               if (index + 1 >= BT_HAL_ADVERTISING_DATA_LENGTH_MAX)
+                       return BT_STATUS_FAIL;
+
+               adv_data[index] = 1 + adv_param_setup.custom_name_len;
+               adv_data[index+1] = 0x09;
+               memcpy(&adv_data[index+2], adv_param_setup.custom_name, adv_param_setup.custom_name_len);
+               index += (2 + adv_param_setup.custom_name_len);
+               length += (2 + adv_param_setup.custom_name_len);
+               DBG("After Custom Name: Index [%d]", index);
+       }
+
        /* Manufacturer data */
        if (adv_param_setup.manufacturer_data_len > 0) {
                if ((index + 1) +  adv_param_setup.manufacturer_data_len >= BT_HAL_ADVERTISING_DATA_LENGTH_MAX)
index c137360e461b63bd010ded529820373620f4c3a4..2efc554fb3122db6f1456287a7e0f19bb3797014 100644 (file)
@@ -43,6 +43,8 @@ typedef struct {
        uint8_t  server_if;
        bool     set_scan_rsp;
        bool     include_name;
+       char*    custom_name;
+       uint16_t custom_name_len;
        bool     include_txpower;
 #ifdef TIZEN_BT_HAL
        bool     include_appearance;
index 381f469c94e0d147cf57908380b14495c3dc864d..86161ab85c378a17f1889a6c58917d7269e78c00 100644 (file)
@@ -72,6 +72,8 @@ typedef struct {
        uint8_t  server_if;
        uint8_t  set_scan_rsp;
        uint8_t  include_name;
+       char*    custom_name;
+       uint16_t custom_name_len;
        uint8_t  include_txpower;
 #ifdef TIZEN_BT_HAL
        uint8_t  include_appearance;
index 2631d50ef6d8f69d069a874a19ddbbcc57b4e54e..10e66e00435821c0012f60d382731bdc2ab7e69a 100644 (file)
@@ -562,6 +562,8 @@ oal_status_t gatts_multi_adv_set_inst_data(int instance_id,
 
        adv_setup.set_scan_rsp = adv_param_setup->set_scan_rsp;
        adv_setup.include_name = adv_param_setup->include_name;
+       adv_setup.custom_name = adv_param_setup->custom_name;
+       adv_setup.custom_name_len = adv_param_setup->custom_name_len;
        adv_setup.include_txpower = adv_param_setup->include_txpower;
 #ifdef TIZEN_BT_HAL
        adv_setup.include_appearance = adv_param_setup->include_appearance;
index 59d4e0f32e75609d4abc50e0fb5160104060b1d5..b68b9c9ada4cd3355db9c3f3efe9cb5cd69bb409 100644 (file)
@@ -1580,7 +1580,13 @@ static int __bt_set_multi_adv_param(oal_ble_multi_adv_param_setup_t *adv_setup,
                }
                case 0x09:
                case 0x08: {
-                       adv_setup->include_name = 1;
+                       if (len == 1) {
+                               adv_setup->include_name = 1;
+                       } else {
+                               adv_setup->custom_name = g_malloc0(sizeof(char) * len - 1);
+                               memcpy(adv_setup->custom_name, ptr + 2, len - 1);
+                               adv_setup->custom_name_len = len - 1;
+                       }
                        break;
                }
                case 0x01: {