Add adv data custom name handling logic 42/289742/1 accepted/tizen/7.0/unified/20230327.042652
authorWootak Jung <wootak.jung@samsung.com>
Thu, 16 Feb 2023 06:40:30 +0000 (15:40 +0900)
committerWootak Jung <wootak.jung@samsung.com>
Tue, 14 Mar 2023 04:55:46 +0000 (13:55 +0900)
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 258963b..fedc21b 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 f683506..1fdf33d 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 787f320..8f8a585 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 190efe9..5945117 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 b98492d..c71ad1e 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 0x19: {