OSDN Git Service

android/daemon: Update CoD and RSSI only when they exist
authorAndrei Emeltchenko <andrei.emeltchenko@intel.com>
Fri, 1 Nov 2013 11:46:38 +0000 (13:46 +0200)
committerJohan Hedberg <johan.hedberg@intel.com>
Fri, 1 Nov 2013 12:07:06 +0000 (14:07 +0200)
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

index fc41fd7..f986020 100644 (file)
@@ -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) {