From 5bb418bbb7ff45fe1db87f59acee30aa7c95ef6e Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Thu, 23 Feb 2012 00:05:13 +0200 Subject: [PATCH] mgmt: Fix device_found parameters --- lib/mgmt.h | 5 ++++- mgmt/main.c | 9 +++++---- plugins/mgmtops.c | 11 ++++++++--- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/lib/mgmt.h b/lib/mgmt.h index 7072ccc0d..59c5c0690 100644 --- a/lib/mgmt.h +++ b/lib/mgmt.h @@ -381,11 +381,14 @@ struct mgmt_ev_auth_failed { 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 25ae181f3..b45b0758a 100644 --- a/mgmt/main.c +++ b/mgmt/main.c @@ -578,12 +578,13 @@ static int mgmt_device_found(int mgmt_sk, uint16_t index, 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 fd42a6467..87d3291a8 100644 --- a/plugins/mgmtops.c +++ b/plugins/mgmtops.c @@ -1346,6 +1346,7 @@ static void mgmt_device_found(int sk, uint16_t index, void *buf, size_t len) 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); @@ -1372,12 +1373,16 @@ static void mgmt_device_found(int sk, uint16_t index, void *buf, size_t 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); } -- 2.47.3