Adapt unregister all scan filters functionality into BT-HAL framework 82/216382/2
authorhimanshu <h.himanshu@samsung.com>
Thu, 24 Oct 2019 05:52:33 +0000 (11:22 +0530)
committerhimanshu <h.himanshu@samsung.com>
Thu, 24 Oct 2019 08:32:39 +0000 (14:02 +0530)
This API unregisters all registered scan filters.

Change-Id: I1d68b123a89469ff37e78fc0b33e466b0ff2791a
Signed-off-by: himanshu <h.himanshu@samsung.com>
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 cd62f3f..9774f17 100644 (file)
@@ -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("+");
index 635efc7..58ac62e 100644 (file)
@@ -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} };
 
index 8807201..5107892 100644 (file)
@@ -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 */