diff --git a/lib/mgmt.h b/lib/mgmt.h
index 7072ccc..59c5c06 100644
--- a/lib/mgmt.h
+++ b/lib/mgmt.h
uint8_t status;
} __packed;
+#define MGMT_DEV_FOUND_CONFIRM_NAME 0x01
+#define MGMT_DEV_FOUND_LEGACY_PAIRING 0x02
+
#define MGMT_EV_DEVICE_FOUND 0x0012
struct mgmt_ev_device_found {
struct mgmt_addr_info addr;
int8_t rssi;
- uint8_t confirm_name;
+ uint8_t flags[4];
uint16_t eir_len;
uint8_t eir[0];
} __packed;
diff --git a/mgmt/main.c b/mgmt/main.c
index 25ae181..b45b075 100644
--- a/mgmt/main.c
+++ b/mgmt/main.c
char addr[18];
ba2str(&ev->addr.bdaddr, addr);
printf("hci%u dev_found: %s type %s rssi %d "
- "confirm_name %u eir_len %u\n", index, addr,
- typestr(ev->addr.type),
- ev->rssi, ev->confirm_name, eir_len);
+ "flags 0x%02x%02x%02x%02x eir_len %u\n", index, addr,
+ typestr(ev->addr.type), ev->rssi,
+ ev->flags[3], ev->flags[2], ev->flags[1], ev->flags[0],
+ eir_len);
}
- if (discovery && ev->confirm_name) {
+ if (discovery && (ev->flags[0] & MGMT_DEV_FOUND_CONFIRM_NAME)) {
struct mgmt_cp_confirm_name cp;
memset(&cp, 0, sizeof(cp));
diff --git a/plugins/mgmtops.c b/plugins/mgmtops.c
index fd42a64..87d3291 100644
--- a/plugins/mgmtops.c
+++ b/plugins/mgmtops.c
char addr[18];
uint16_t eir_len;
uint8_t *eir;
+ gboolean confirm_name;
if (len < sizeof(*ev)) {
error("mgmt_device_found too short (%zu bytes)", len);
eir = ev->eir;
ba2str(&ev->addr.bdaddr, addr);
- DBG("hci%u addr %s, rssi %d cfm_name %u eir_len %u", index, addr, ev->rssi,
- ev->confirm_name, eir_len);
+ DBG("hci%u addr %s, rssi %d flags 0x%02x%02x%02x%02x eir_len %u",
+ index, addr, ev->rssi,
+ ev->flags[3], ev->flags[2], ev->flags[1], ev->flags[0],
+ eir_len);
+
+ confirm_name = (ev->flags[0] & MGMT_DEV_FOUND_CONFIRM_NAME);
btd_event_device_found(&info->bdaddr, &ev->addr.bdaddr,
addr_type(ev->addr.type),
- ev->rssi, ev->confirm_name,
+ ev->rssi, confirm_name,
eir, eir_len);
}