diff --git a/src/adapter.c b/src/adapter.c
index 0b4f9ba..f8f46f8 100644
--- a/src/adapter.c
+++ b/src/adapter.c
if (dev->type != ADDR_TYPE_BREDR) {
gboolean broadcaster;
+ uint16_t app;
if (dev->flags & (EIR_LIM_DISC | EIR_GEN_DISC))
broadcaster = FALSE;
dev->legacy = FALSE;
+ if (read_remote_appearance(&adapter->bdaddr, &dev->bdaddr,
+ &app) == 0)
+ icon = gap_appearance_to_icon(app);
+
emit_device_found(adapter->path, paddr,
"Address", DBUS_TYPE_STRING, &paddr,
+ "Class", DBUS_TYPE_UINT32, &dev->class,
+ "Icon", DBUS_TYPE_STRING, &icon,
"RSSI", DBUS_TYPE_INT16, &rssi,
"Name", DBUS_TYPE_STRING, &dev->name,
"Alias", DBUS_TYPE_STRING, &alias,
if (dev_class != 0)
write_remote_class(&adapter->bdaddr, bdaddr, dev_class);
+ if (eir_data.appearance != 0)
+ write_remote_appearance(&adapter->bdaddr, bdaddr,
+ eir_data.appearance);
+
if (eir_data.name != NULL && eir_data.name_complete)
write_device_name(&adapter->bdaddr, bdaddr, eir_data.name);
diff --git a/src/eir.c b/src/eir.c
index 800dafa..7b7b705 100644
--- a/src/eir.c
+++ b/src/eir.c
if (data_len < 3)
break;
memcpy(eir->dev_class, data, 3);
+ break;
+
+ case EIR_GAP_APPEARANCE:
+ if (data_len < 2)
+ break;
+ eir->appearance = bt_get_le16(data);
+ break;
}
eir_data += field_len + 1;
diff --git a/src/eir.h b/src/eir.h
index c040e49..3c81024 100644
--- a/src/eir.h
+++ b/src/eir.h
#define EIR_TX_POWER 0x0A /* transmit power level */
#define EIR_CLASS_OF_DEV 0x0D /* Class of Device */
#define EIR_DEVICE_ID 0x10 /* device ID */
+#define EIR_GAP_APPEARANCE 0x19 /* GAP appearance */
struct uuid_info {
uuid_t uuid;
int flags;
char *name;
uint8_t dev_class[3];
+ uint16_t appearance;
gboolean name_complete;
};