diff --git a/src/adapter.c b/src/adapter.c
index c6904a1..1542e06 100644
--- a/src/adapter.c
+++ b/src/adapter.c
dev->legacy = FALSE;
if (read_remote_appearance(&adapter->bdaddr, &dev->bdaddr,
- &app) == 0)
+ dev->bdaddr_type, &app) == 0)
icon = gap_appearance_to_icon(app);
else
icon = NULL;
write_remote_class(&adapter->bdaddr, bdaddr, dev_class);
if (eir_data.appearance != 0)
- write_remote_appearance(&adapter->bdaddr, bdaddr,
+ write_remote_appearance(&adapter->bdaddr, bdaddr, bdaddr_type,
eir_data.appearance);
if (eir_data.name != NULL && eir_data.name_complete)
diff --git a/src/device.c b/src/device.c
index 7cdd025..eb015ec 100644
--- a/src/device.c
+++ b/src/device.c
icon = class_to_icon(class);
dict_append_entry(&dict, "Class", DBUS_TYPE_UINT32, &class);
- } else if (read_remote_appearance(&src, &device->bdaddr, &app) == 0)
+ } else if (read_remote_appearance(&src, &device->bdaddr,
+ device->bdaddr_type, &app) == 0)
/* Appearance */
icon = gap_appearance_to_icon(app);
app = att_get_u16(atval);
adapter_get_address(adapter, &src);
- write_remote_appearance(&src, &device->bdaddr, app);
+ write_remote_appearance(&src, &device->bdaddr, device->bdaddr_type,
+ app);
done:
att_data_list_free(list);
diff --git a/src/storage.c b/src/storage.c
index b783be0..ab9b1ed 100644
--- a/src/storage.c
+++ b/src/storage.c
return 0;
}
-int read_remote_appearance(bdaddr_t *local, bdaddr_t *peer,
+int read_remote_appearance(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
uint16_t *appearance)
{
- char filename[PATH_MAX + 1], addr[18], *str;
+ char filename[PATH_MAX + 1], key[20], *str;
create_filename(filename, PATH_MAX, local, "appearance");
- ba2str(peer, addr);
+ ba2str(peer, key);
+ sprintf(&key[17], "#%hhu", bdaddr_type);
- str = textfile_get(filename, addr);
+ str = textfile_get(filename, key);
if (!str)
return -ENOENT;
}
int write_remote_appearance(bdaddr_t *local, bdaddr_t *peer,
- uint16_t appearance)
+ uint8_t bdaddr_type, uint16_t appearance)
{
- char filename[PATH_MAX + 1], addr[18], str[7];
+ char filename[PATH_MAX + 1], key[20], str[7];
create_filename(filename, PATH_MAX, local, "appearance");
create_file(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
- ba2str(peer, addr);
+ ba2str(peer, key);
+ sprintf(&key[17], "#%hhu", bdaddr_type);
+
sprintf(str, "0x%4.4x", appearance);
- return textfile_put(filename, addr, str);
+ return textfile_put(filename, key, str);
}
int write_remote_class(bdaddr_t *local, bdaddr_t *peer, uint32_t class)
diff --git a/src/storage.h b/src/storage.h
index c3be64a..db33b43 100644
--- a/src/storage.h
+++ b/src/storage.h
int read_local_name(bdaddr_t *bdaddr, char *name);
int write_local_class(bdaddr_t *bdaddr, uint8_t *class);
int read_local_class(bdaddr_t *bdaddr, uint8_t *class);
-int write_remote_appearance(bdaddr_t *local, bdaddr_t *peer, uint16_t appearance);
-int read_remote_appearance(bdaddr_t *local, bdaddr_t *peer, uint16_t *appearance);
+int write_remote_appearance(bdaddr_t *local, bdaddr_t *peer,
+ uint8_t bdaddr_type, uint16_t appearance);
+int read_remote_appearance(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
+ uint16_t *appearance);
int write_remote_class(bdaddr_t *local, bdaddr_t *peer, uint32_t class);
int read_remote_class(bdaddr_t *local, bdaddr_t *peer, uint32_t *class);
int write_device_name(bdaddr_t *local, bdaddr_t *peer, char *name);