From: Wootak Jung Date: Fri, 11 Oct 2019 01:08:18 +0000 (+0900) Subject: Fix le scan start issue after stop X-Git-Tag: accepted/tizen/5.5/unified/20191031.023712~4^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F68%2F215568%2F3;p=platform%2Fcore%2Fconnectivity%2Fbluetooth-frwk.git Fix le scan start issue after stop le scan is not started after stop because stop_pending is set TRUE. stop_pending will be set FALSE if le discovery is finished. Change-Id: Id8d9d759e1afcbf1080c98239a14b1affb40a3b6 --- diff --git a/bt-oal/bluez_hal/inc/bt-hal-msg.h b/bt-oal/bluez_hal/inc/bt-hal-msg.h index e87c1fa..d9d249d 100644 --- a/bt-oal/bluez_hal/inc/bt-hal-msg.h +++ b/bt-oal/bluez_hal/inc/bt-hal-msg.h @@ -77,6 +77,7 @@ struct hal_prop_device_service_rec { #define HAL_PROP_DEVICE_BLE_ADV_DATA 0x17 #define HAL_PROP_ADAPTER_LOCAL_LE_FEAT 0x18 #define HAL_PROP_DEVICE_IS_ALIAS_SET 0x19 +#define HAL_PROP_ADAPTER_LE_DISCOVERY_FINISHED 0x1a struct hal_prop_device_info { uint8_t version; diff --git a/bt-oal/bluez_hal/src/bt-hal-event-receiver.c b/bt-oal/bluez_hal/src/bt-hal-event-receiver.c index 9247eb8..63dafc1 100644 --- a/bt-oal/bluez_hal/src/bt-hal-event-receiver.c +++ b/bt-oal/bluez_hal/src/bt-hal-event-receiver.c @@ -400,7 +400,7 @@ static void __bt_hal_adapter_property_changed_event(GVariant *msg) } } else if (!g_strcmp0(key, "LEDiscovering")) { - GVariant *result; +// GVariant *result; is_le_discovering = g_variant_get_boolean(value); DBG("##LE Discovering = [%d]", is_le_discovering); @@ -408,6 +408,7 @@ static void __bt_hal_adapter_property_changed_event(GVariant *msg) if (is_le_discovering) continue; +#if 0 /* No need to stop le discovery in case LEDiscovering is false */ adapter_proxy = _bt_hal_get_adapter_proxy(); if (adapter_proxy == NULL) { ERR("adapter_proxy == NULL"); @@ -427,6 +428,11 @@ static void __bt_hal_adapter_property_changed_event(GVariant *msg) continue; } g_variant_unref(result); +#endif + + size += __bt_insert_hal_properties(buf + size, + HAL_PROP_ADAPTER_LE_DISCOVERY_FINISHED, sizeof(gboolean), &is_le_discovering); + ev->num_props++; } else if (!g_strcmp0(key, "Modalias")) { char *modalias = NULL; g_variant_get(value, "s", &modalias); diff --git a/bt-oal/hardware/bluetooth.h b/bt-oal/hardware/bluetooth.h index 1d978ee..5e2eda9 100644 --- a/bt-oal/hardware/bluetooth.h +++ b/bt-oal/hardware/bluetooth.h @@ -358,6 +358,12 @@ typedef enum { */ BT_PROPERTY_REMOTE_IS_ALIAS_SET, + /** + * Description - Bluetooth Adapter LE Discovery finished + * Data type - gboolean + */ + BT_PROPERTY_ADAPTER_LE_DISCOVERY_FINISHED, + BT_PROPERTY_REMOTE_DEVICE_TIMESTAMP = 0xFF, } bt_property_type_t; diff --git a/bt-oal/include/oal-event.h b/bt-oal/include/oal-event.h index d7264cf..96d6f38 100644 --- a/bt-oal/include/oal-event.h +++ b/bt-oal/include/oal-event.h @@ -136,6 +136,7 @@ extern "C" { EVENT(OAL_EVENT_BLE_MULTI_ADVERTISING_UPDATE) /* NULL*/\ EVENT(OAL_EVENT_BLE_DISCOVERY_STARTED) /* NULL */\ EVENT(OAL_EVENT_BLE_DISCOVERY_STOPPED) /* NULL */\ + EVENT(OAL_EVENT_BLE_DISCOVERY_FINISHED) /* NULL */\ EVENT(OAL_EVENT_BLE_REMOTE_DEVICE_FOUND) /* event_ble_scan_result_info */\ EVENT(OAL_EVENT_BLE_LOCAL_FEATURES) /* adapter le features */\ EVENT(OAL_EVENT_GATTS_SERVICE_ADDED) /* gatts Service Added */\ diff --git a/bt-oal/oal-adapter-mgr.c b/bt-oal/oal-adapter-mgr.c index 6426439..3355180 100644 --- a/bt-oal/oal-adapter-mgr.c +++ b/bt-oal/oal-adapter-mgr.c @@ -935,6 +935,14 @@ static void cb_adapter_properties(bt_status_t status, sizeof(event_adapter_le_features_t)); break; } + case BT_PROPERTY_ADAPTER_LE_DISCOVERY_FINISHED: { + gboolean le_discovering = *(gboolean *)properties[i].val; + if (le_discovering == FALSE) { + BT_INFO("LE Discovery finished"); + send_event(OAL_EVENT_BLE_DISCOVERY_FINISHED, NULL, 0); + } + break; + } default: BT_WARN("Unhandled property: %d", properties[i].type); break; diff --git a/bt-service-adaptation/services/adapter/bt-service-core-adapter-le.c b/bt-service-adaptation/services/adapter/bt-service-core-adapter-le.c index 97583eb..5408846 100644 --- a/bt-service-adaptation/services/adapter/bt-service-core-adapter-le.c +++ b/bt-service-adaptation/services/adapter/bt-service-core-adapter-le.c @@ -102,6 +102,7 @@ static gboolean is_le_scanning = FALSE; static bluetooth_le_scan_params_t le_scan_params = { BT_LE_ACTIVE_SCAN, 0, 0 }; static int g_gatt_client_id = 0; +static void _bt_disable_all_scanner_status(void); /******************************************* LE Scan *********************************************/ @@ -725,6 +726,10 @@ static void __bt_le_event_handler(int event_type, gpointer event_data) break; } + case OAL_EVENT_BLE_DISCOVERY_FINISHED: { + _bt_disable_all_scanner_status(); + break; + } default: break; } @@ -1643,7 +1648,7 @@ int _bt_stop_le_scan(const char *sender) return BLUETOOTH_ERROR_NONE; } -void _bt_disable_all_scanner_status(void) +static void _bt_disable_all_scanner_status(void) { GSList *l; bt_adapter_le_scanner_t *scanner; diff --git a/bt-service-adaptation/services/bt-service-event-receiver.c b/bt-service-adaptation/services/bt-service-event-receiver.c index 8b82971..f915b37 100644 --- a/bt-service-adaptation/services/bt-service-event-receiver.c +++ b/bt-service-adaptation/services/bt-service-event-receiver.c @@ -363,6 +363,7 @@ static gboolean __bt_handle_oal_events(gpointer data) #endif case OAL_EVENT_BLE_DISCOVERY_STARTED: case OAL_EVENT_BLE_DISCOVERY_STOPPED: + case OAL_EVENT_BLE_DISCOVERY_FINISHED: case OAL_EVENT_BLE_REMOTE_DEVICE_FOUND: case OAL_EVENT_BLE_LOCAL_FEATURES: if (adapter_le_cb)