From a3b0003409a145e371adfb8b40bcb042a63a6b1f Mon Sep 17 00:00:00 2001 From: Andrei Emeltchenko Date: Fri, 1 Nov 2013 13:46:38 +0200 Subject: [PATCH] android/daemon: Update CoD and RSSI only when they exist This avoid sending zeroed Class of Device and making it unidentified. ... prop[0]: type=BT_PROPERTY_CLASS_OF_DEVICE len=4 val=000000 prop[1]: type=BT_PROPERTY_REMOTE_RSSI len=1 val=-75 prop[2]: type=BT_PROPERTY_BDNAME len=249 val=Microsoft Bluetooth Number Pad ... --- android/adapter.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/android/adapter.c b/android/adapter.c index fc41fd747..f986020c8 100644 --- a/android/adapter.c +++ b/android/adapter.c @@ -456,19 +456,23 @@ static int fill_device_props(struct hal_property *prop, bdaddr_t *addr, { uint8_t num_props = 0; - /* fill cod */ - prop->type = HAL_PROP_DEVICE_CLASS; - prop->len = sizeof(cod); - memcpy(prop->val, &cod, prop->len); - prop = ((void *) prop) + sizeof(*prop) + sizeof(cod); - num_props++; - - /* fill rssi */ - prop->type = HAL_PROP_DEVICE_RSSI; - prop->len = sizeof(rssi); - memcpy(prop->val, &rssi, prop->len); - prop = ((void *) prop) + sizeof(*prop) + sizeof(rssi); - num_props++; + /* fill Class of Device */ + if (cod) { + prop->type = HAL_PROP_DEVICE_CLASS; + prop->len = sizeof(cod); + memcpy(prop->val, &cod, prop->len); + prop = ((void *) prop) + sizeof(*prop) + sizeof(cod); + num_props++; + } + + /* fill RSSI */ + if (rssi) { + prop->type = HAL_PROP_DEVICE_RSSI; + prop->len = sizeof(rssi); + memcpy(prop->val, &rssi, prop->len); + prop = ((void *) prop) + sizeof(*prop) + sizeof(rssi); + num_props++; + } /* fill name */ if (name) { -- 2.47.3