From dee5bc60cbd51535f3cce43968e56b753723fb9b Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 20 Jan 2013 01:01:27 -0800 Subject: [PATCH] core: Handle invalidated RSSI signals a bit better --- src/device.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/device.c b/src/device.c index 90c4ab319..3f628a55d 100644 --- a/src/device.c +++ b/src/device.c @@ -679,7 +679,10 @@ static gboolean dev_property_exists_rssi(const GDBusPropertyTable *property, { struct btd_device *dev = data; - return dev->rssi ? TRUE : FALSE; + if (dev->rssi == 0) + return FALSE; + + return TRUE; } static gboolean dev_property_get_trusted(const GDBusPropertyTable *property, @@ -3398,7 +3401,14 @@ void device_set_rssi(struct btd_device *device, int8_t rssi) if (!device) return; - if (rssi < 0 && device->rssi < 0) { + if (rssi == 0 || device->rssi == 0) { + if (device->rssi == rssi) + return; + + DBG("rssi %d", rssi); + + device->rssi = rssi; + } else { int delta; if (device->rssi > rssi) @@ -3412,13 +3422,6 @@ void device_set_rssi(struct btd_device *device, int8_t rssi) DBG("rssi %d delta %d", rssi, delta); - device->rssi = rssi; - } else { - if (device->rssi == rssi) - return; - - DBG("rssi %d", rssi); - device->rssi = rssi; } -- 2.47.3