From 3f3152f15e31f25643f1be6495bd81eb510f2d0c Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 20 Jan 2013 00:33:03 -0800 Subject: [PATCH] core: Avoid massive signals for changes below 8 dBm Instead of blasting clients with RSSI changed signals, slow this down a little bit and only report changes of 8 dBm and more. --- src/device.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/device.c b/src/device.c index 74bf42107..90c4ab319 100644 --- a/src/device.c +++ b/src/device.c @@ -3398,12 +3398,29 @@ void device_set_rssi(struct btd_device *device, int8_t rssi) if (!device) return; - DBG("rssi %d", rssi); + if (rssi < 0 && device->rssi < 0) { + int delta; - if (device->rssi == rssi) - return; + if (device->rssi > rssi) + delta = device->rssi - rssi; + else + delta = rssi - device->rssi; + + /* only report changes of 8 dBm or more */ + if (delta < 8) + return; + + DBG("rssi %d delta %d", rssi, delta); - device->rssi = rssi; + device->rssi = rssi; + } else { + if (device->rssi == rssi) + return; + + DBG("rssi %d", rssi); + + device->rssi = rssi; + } g_dbus_emit_property_changed(btd_get_dbus_connection(), device->path, DEVICE_INTERFACE, "RSSI"); -- 2.47.3