From c0215ee4ce764d493e595f683d39257dab3c881e Mon Sep 17 00:00:00 2001 From: Olivier Martin Date: Thu, 9 Apr 2020 09:51:27 +0200 Subject: [PATCH] gattlib: Introduce GATTLIB_DISCOVER_FILTER_NOTIFY_CHANGE --- dbus/gattlib_adapter.c | 4 ++++ gattlib-py/gattlib/adapter.py | 1 + include/gattlib.h | 3 ++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/dbus/gattlib_adapter.c b/dbus/gattlib_adapter.c index 57dd121..f4561be 100644 --- a/dbus/gattlib_adapter.c +++ b/dbus/gattlib_adapter.c @@ -120,6 +120,7 @@ GDBusObjectManager *get_device_manager_from_adapter(struct gattlib_adapter *gatt */ struct discovered_device_arg { void *adapter; + uint32_t enabled_filters; gattlib_discovered_device_t callback; void *user_data; GSList** discovered_devices_ptr; @@ -151,7 +152,9 @@ static void device_manager_on_device1_signal(const char* device1_path, struct di if (item == NULL) { // Add the device to the list *arg->discovered_devices_ptr = g_slist_append(*arg->discovered_devices_ptr, g_strdup(address)); + } + if ((item == NULL) || (arg->enabled_filters & GATTLIB_DISCOVER_FILTER_NOTIFY_CHANGE)) { arg->callback( arg->adapter, org_bluez_device1_get_address(device1), @@ -255,6 +258,7 @@ int gattlib_adapter_scan_enable_with_filter(void *adapter, uuid_t **uuid_list, i // Pass the user callback and the discovered device list pointer to the signal handlers struct discovered_device_arg discovered_device_arg = { .adapter = adapter, + .enabled_filters = enabled_filters, .callback = discovered_device_cb, .user_data = user_data, .discovered_devices_ptr = &discovered_devices, diff --git a/gattlib-py/gattlib/adapter.py b/gattlib-py/gattlib/adapter.py index 8709d98..b2fa88a 100644 --- a/gattlib-py/gattlib/adapter.py +++ b/gattlib-py/gattlib/adapter.py @@ -5,6 +5,7 @@ from .uuid import gattlib_uuid_to_int GATTLIB_DISCOVER_FILTER_USE_UUID = (1 << 0) GATTLIB_DISCOVER_FILTER_USE_RSSI = (1 << 1) +GATTLIB_DISCOVER_FILTER_NOTIFY_CHANGE = (1 << 2) GATTLIB_EDDYSTONE_TYPE_UID = (1 << 0) GATTLIB_EDDYSTONE_TYPE_URL = (1 << 1) diff --git a/include/gattlib.h b/include/gattlib.h index 1ddb34e..46e31ac 100644 --- a/include/gattlib.h +++ b/include/gattlib.h @@ -2,7 +2,7 @@ * * GattLib - GATT Library * - * Copyright (C) 2016-2019 Olivier Martin + * Copyright (C) 2016-2020 Olivier Martin * * * This program is free software; you can redistribute it and/or modify @@ -111,6 +111,7 @@ extern "C" { #define GATTLIB_DISCOVER_FILTER_USE_NONE 0 #define GATTLIB_DISCOVER_FILTER_USE_UUID (1 << 0) #define GATTLIB_DISCOVER_FILTER_USE_RSSI (1 << 1) +#define GATTLIB_DISCOVER_FILTER_NOTIFY_CHANGE (1 << 2) //@} /**