From 942910b755ad5a75d1907683588506fefb45555e Mon Sep 17 00:00:00 2001 From: himanshu Date: Thu, 24 Oct 2019 11:22:33 +0530 Subject: [PATCH] Adapt unregister all scan filters functionality into BT-HAL framework This API unregisters all registered scan filters. Change-Id: I1d68b123a89469ff37e78fc0b33e466b0ff2791a Signed-off-by: himanshu --- .../services/adapter/bt-service-core-adapter-le.c | 28 ++++++++++++++++++++++ .../services/bt-request-handler.c | 11 +++++++++ .../services/include/bt-service-core-adapter-le.h | 2 ++ 3 files changed, 41 insertions(+) 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 cd62f3f..9774f17 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 @@ -770,6 +770,34 @@ int _bt_unregister_scan_filter(const char *sender, int slot_id) return BLUETOOTH_ERROR_NONE; } +int _bt_unregister_all_scan_filters(const char* sender) +{ + int ret; + bt_adapter_le_scanner_t *scanner = NULL; + bluetooth_le_scan_filter_t *filter_data = NULL; + GSList *l; + + scanner = __bt_find_scanner_from_list(sender); + + if (scanner == NULL) { + BT_ERR("There is NO available scanner."); + return BLUETOOTH_ERROR_NOT_FOUND; + } + for (l = scanner->filter_list; l != NULL; l = g_slist_next(l)) { + filter_data = l->data; + + ret = gattc_unregister_scan_filter(filter_data->slot_id); + + if (OAL_STATUS_SUCCESS != ret) + BT_ERR("gattc_unregister_scan_filter failed for slot_id = [%d]", filter_data->slot_id); + } + + g_slist_free_full(scanner->filter_list, g_free); + scanner->filter_list = NULL; + + return BLUETOOTH_ERROR_NONE; +} + int _bt_le_init(void) { BT_DBG("+"); diff --git a/bt-service-adaptation/services/bt-request-handler.c b/bt-service-adaptation/services/bt-request-handler.c index 635efc7..58ac62e 100644 --- a/bt-service-adaptation/services/bt-request-handler.c +++ b/bt-service-adaptation/services/bt-request-handler.c @@ -3148,6 +3148,17 @@ normal: break; } + case BT_UNREGISTER_ALL_SCAN_FILTERS: { + char *sender = NULL; + + sender = (char *)g_dbus_method_invocation_get_sender(context); + + BT_DBG("Remove all scan filters [Sender : %s]", sender); + + result = _bt_unregister_all_scan_filters(sender); + + break; + } case BT_DISCONNECT_DEVICE: { bluetooth_device_address_t address = { {0} }; diff --git a/bt-service-adaptation/services/include/bt-service-core-adapter-le.h b/bt-service-adaptation/services/include/bt-service-core-adapter-le.h index 8807201..5107892 100644 --- a/bt-service-adaptation/services/include/bt-service-core-adapter-le.h +++ b/bt-service-adaptation/services/include/bt-service-core-adapter-le.h @@ -102,6 +102,8 @@ int _bt_set_white_list(bluetooth_device_address_t *device_address, int address_t int _bt_set_manufacturer_data(bluetooth_manufacturer_data_t *m_data); int _bt_unregister_scan_filter(const char *sender, int slot_id); + +int _bt_unregister_all_scan_filters(const char *sender); #ifdef __cplusplus } #endif /* __cplusplus */ -- 2.7.4