Add BT_SET_LE_STATIC_RANDOM_ADDRESS function 53/212253/1
authorDeokhyun Kim <dukan.kim@samsung.com>
Mon, 19 Aug 2019 09:33:53 +0000 (18:33 +0900)
committerDeokhyun Kim <dukan.kim@samsung.com>
Mon, 19 Aug 2019 09:33:53 +0000 (18:33 +0900)
Change-Id: Ic9d832ccfedaf40846d7b06e9c4bea4b08e9717b
Signed-off-by: Deokhyun Kim <dukan.kim@samsung.com>
bt-oal/bluez_hal/src/bt-hal-adapter-le.c
bt-oal/bluez_hal/src/bt-hal-adapter-le.h
bt-oal/bluez_hal/src/bt-hal-bluetooth.c
bt-oal/hardware/bluetooth.h
bt-oal/include/oal-adapter-mgr.h
bt-oal/oal-adapter-mgr.c
bt-service-adaptation/services/adapter/bt-service-core-adapter-le.c
bt-service-adaptation/services/bt-request-handler.c
bt-service-adaptation/services/include/bt-service-core-adapter-le.h

index 86b7bbf..1384adf 100644 (file)
@@ -118,6 +118,37 @@ int _bt_hal_le_disable(void)
 {
        return _bt_hal_dbus_disable_le();
 }
+
+int _bt_hal_set_le_static_random_address(uint8_t enable)
+{
+       DBG("+");
+       GError *error = NULL;
+       GVariant *ret;
+       GDBusProxy *proxy;
+
+       proxy = _bt_hal_get_adapter_proxy();
+       if (proxy == NULL)
+               return BT_STATUS_FAIL;
+
+       ret = g_dbus_proxy_call_sync(proxy, "SetLeStaticRandomAddress",
+                       g_variant_new("(b)", (enable ? TRUE : FALSE)),
+                       G_DBUS_CALL_FLAGS_NONE,
+                       -1,
+                       NULL,
+                       &error);
+
+       if (error) {
+               ERR("Set static address Fail: %s", error->message);
+               g_clear_error(&error);
+               return BT_STATUS_FAIL;
+       }
+
+       INFO("Set le static address [%d]", enable);
+       if (ret)
+               g_variant_unref(ret);
+
+       return BT_STATUS_SUCCESS;
+}
 #endif
 
 static void __bt_hal_free_le_adv_slot(void)
index a26c393..d8123cc 100644 (file)
@@ -37,6 +37,8 @@ extern "C" {
 int _bt_hal_le_enable(void);
 
 int _bt_hal_le_disable(void);
+
+int _bt_hal_set_le_static_random_address(uint8_t enable);
 #endif
 
 void _bt_hal_register_gatt_le_dbus_handler_cb(handle_stack_msg cb);
index 3944d14..a3348b9 100644 (file)
@@ -458,6 +458,7 @@ static const bt_interface_t bluetooth_if = {
        .enable_rssi_monitoring = enable_rssi_monitoring,
        .get_connected_link_rssi_strength = get_connected_link_rssi_strength,
        .enable_gap_auth_notifications = enable_gap_auth_notifications,
+       .set_le_static_random_address = _bt_hal_set_le_static_random_address,
        .set_hal_adapter_request_state = set_hal_adapter_request_state,
        .set_hal_le_request_state = set_hal_le_request_state,
 #endif
index ce0f49d..603c61e 100644 (file)
@@ -843,6 +843,9 @@ typedef struct {
         * type == value from bt_gap_auth_variant_t
         */
        int (*enable_gap_auth_notifications)(uint32_t type, uint8_t enable);
+
+       int (*set_le_static_random_address)(uint8_t enable);
+
        /*
        * Sets is_activating variable in HAL to TRUE. It is required for the
        * adapter switched on event to propagate to upper layers from HAL.
index 0dfacf0..23b98c4 100644 (file)
@@ -429,6 +429,8 @@ oal_status_t adapter_ble_multi_adv_enable(int instance_id);
  */
 oal_status_t adapter_ble_multi_adv_disable(int instance_id);
 
+oal_status_t adapter_set_le_static_random_address(int enable);
+
 /**
  * @brief Check if the advertising is enable
  *
index f96c650..04b48a9 100644 (file)
@@ -716,6 +716,26 @@ oal_status_t adapter_ble_multi_adv_disable(int instance_id)
        return OAL_STATUS_SUCCESS;
 }
 
+oal_status_t adapter_set_le_static_random_address(int enable)
+{
+       int ret;
+
+       CHECK_OAL_INITIALIZED();
+       API_TRACE("%d", enable);
+
+#ifdef TIZEN_BT_HAL
+       ret = blued_api->set_le_static_random_address((enable ? 1 : 0));
+       if (ret != BT_STATUS_SUCCESS)
+               BT_ERR("Static address set failed: [%s]", status2string(ret));
+       ret = convert_to_oal_status(ret);
+#else
+       BT_INFO("Not Supported");
+       ret = OAL_STATUS_NOT_SUPPORT;
+#endif
+
+       return ret;
+}
+
 static void cb_adapter_properties(bt_status_t status,
                int num_properties,
                bt_property_t *properties)
index 2e47f46..a0c503a 100644 (file)
@@ -1658,3 +1658,30 @@ gboolean _bt_is_le_coded_phy_supported(void)
 
 
 /*************************************** LE Scan APIs *********************************************/
+
+int _bt_set_le_static_random_address(gboolean is_enable)
+{
+       int result = BLUETOOTH_ERROR_NONE;
+
+       if (__bt_is_factory_test_mode()) {
+               BT_ERR("Unable to set le random address in factory binary !!");
+               return BLUETOOTH_ERROR_NOT_SUPPORT;
+       }
+
+       if (_bt_adapter_get_status() != BT_ACTIVATED &&
+               _bt_adapter_get_le_status() != BT_LE_ACTIVATED) {
+               return BLUETOOTH_ERROR_DEVICE_NOT_ENABLED;
+       }
+
+       result =  adapter_set_le_static_random_address(is_enable);
+       if (result != OAL_STATUS_SUCCESS) {
+               BT_ERR("adapter_set_connectable failed: %d", result);
+               result = BLUETOOTH_ERROR_INTERNAL;
+       } else {
+               BT_INFO("SetLeStaticRandomAddress as %d", is_enable);
+               result = BLUETOOTH_ERROR_NONE;
+       }
+
+       return result;
+}
+
index 358bb26..b9c11bd 100644 (file)
@@ -2408,6 +2408,16 @@ int __bt_bluez_request(int function_name,
                }
                break;
        }
+       case BT_SET_LE_STATIC_RANDOM_ADDRESS: {
+               gboolean is_enable;
+
+               __bt_service_get_parameters(in_param1, &is_enable,
+                               sizeof(gboolean));
+
+               result = _bt_set_le_static_random_address(is_enable);
+
+               break;
+       }
 #ifdef TIZEN_GATT_CLIENT
        /* Local Async */
        case BT_GATT_CLIENT_REGISTER: {
index 965c9b5..8b03a07 100644 (file)
@@ -86,6 +86,8 @@ gboolean _bt_is_le_2m_phy_supported(void);
 
 gboolean _bt_is_le_coded_phy_supported(void);
 
+int _bt_set_le_static_random_address(gboolean is_enable);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */