From a5ea5a40fe90f50d25408b705108782092f488e7 Mon Sep 17 00:00:00 2001 From: Jakub Pawlowski Date: Tue, 31 Mar 2015 00:33:23 -0700 Subject: [PATCH] core/device: Introduce device_set_rssi_with_delta This patch adds a new method to allow updating the RSSI property value with a given delta threshold. This helper function will be used in upcoming patches by SetDiscoveryFilter, in order to disable the delta threshold when a filter is active. --- src/device.c | 14 +++++++++++--- src/device.h | 2 ++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/device.c b/src/device.c index 8ad62d3fd..91dea27dd 100644 --- a/src/device.c +++ b/src/device.c @@ -83,6 +83,8 @@ #define MIN(a, b) ((a) < (b) ? (a) : (b)) #endif +#define RSSI_THRESHOLD 8 + static DBusConnection *dbus_conn = NULL; static unsigned service_state_cb_id; @@ -4547,7 +4549,8 @@ void device_set_legacy(struct btd_device *device, bool legacy) DEVICE_INTERFACE, "LegacyPairing"); } -void device_set_rssi(struct btd_device *device, int8_t rssi) +void device_set_rssi_with_delta(struct btd_device *device, int8_t rssi, + int8_t delta_threshold) { if (!device) return; @@ -4567,8 +4570,8 @@ void device_set_rssi(struct btd_device *device, int8_t rssi) else delta = rssi - device->rssi; - /* only report changes of 8 dBm or more */ - if (delta < 8) + /* only report changes of delta_threshold dBm or more */ + if (delta < delta_threshold) return; DBG("rssi %d delta %d", rssi, delta); @@ -4580,6 +4583,11 @@ void device_set_rssi(struct btd_device *device, int8_t rssi) DEVICE_INTERFACE, "RSSI"); } +void device_set_rssi(struct btd_device *device, int8_t rssi) +{ + device_set_rssi_with_delta(device, rssi, RSSI_THRESHOLD); +} + static gboolean start_discovery(gpointer user_data) { struct btd_device *device = user_data; diff --git a/src/device.h b/src/device.h index b17f53ab3..9e8646928 100644 --- a/src/device.h +++ b/src/device.h @@ -90,6 +90,8 @@ void btd_device_set_temporary(struct btd_device *device, bool temporary); void btd_device_set_trusted(struct btd_device *device, gboolean trusted); void device_set_bonded(struct btd_device *device, uint8_t bdaddr_type); void device_set_legacy(struct btd_device *device, bool legacy); +void device_set_rssi_with_delta(struct btd_device *device, int8_t rssi, + int8_t delta_threshold); void device_set_rssi(struct btd_device *device, int8_t rssi); bool btd_device_is_connected(struct btd_device *dev); uint8_t btd_device_get_bdaddr_type(struct btd_device *dev); -- 2.47.3