From 43657d77037302268b6ef02724c66eda416cf3e7 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Tue, 5 Jan 2016 11:17:39 +0200 Subject: [PATCH] mgmt: Add support for Start Limited Discovery --- lib/mgmt.h | 2 ++ tools/btmgmt.c | 11 ++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/mgmt.h b/lib/mgmt.h index d76bdbbf5..f6a976aa8 100644 --- a/lib/mgmt.h +++ b/lib/mgmt.h @@ -528,6 +528,8 @@ struct mgmt_rp_get_adv_size_info { uint8_t max_scan_rsp_len; } __packed; +#define MGMT_OP_START_LIMITED_DISCOVERY 0x0041 + #define MGMT_EV_CMD_COMPLETE 0x0001 struct mgmt_ev_cmd_complete { uint16_t opcode; diff --git a/tools/btmgmt.c b/tools/btmgmt.c index f82461ed7..3d03455fa 100644 --- a/tools/btmgmt.c +++ b/tools/btmgmt.c @@ -2254,19 +2254,21 @@ static struct option find_options[] = { { "help", 0, 0, 'h' }, { "le-only", 1, 0, 'l' }, { "bredr-only", 1, 0, 'b' }, + { "limited", 1, 0, 'L' }, { 0, 0, 0, 0 } }; static void cmd_find(struct mgmt *mgmt, uint16_t index, int argc, char **argv) { struct mgmt_cp_start_discovery cp; + uint8_t op = MGMT_OP_START_DISCOVERY; uint8_t type = SCAN_TYPE_DUAL; int opt; if (index == MGMT_INDEX_NONE) index = 0; - while ((opt = getopt_long(argc, argv, "+lbh", find_options, + while ((opt = getopt_long(argc, argv, "+lbLh", find_options, NULL)) != -1) { switch (opt) { case 'l': @@ -2277,6 +2279,9 @@ static void cmd_find(struct mgmt *mgmt, uint16_t index, int argc, char **argv) type |= SCAN_TYPE_BREDR; type &= ~SCAN_TYPE_LE; break; + case 'L': + op = MGMT_OP_START_LIMITED_DISCOVERY; + break; case 'h': find_usage(); optind = 0; @@ -2295,8 +2300,8 @@ static void cmd_find(struct mgmt *mgmt, uint16_t index, int argc, char **argv) memset(&cp, 0, sizeof(cp)); cp.type = type; - if (mgmt_send(mgmt, MGMT_OP_START_DISCOVERY, index, sizeof(cp), &cp, - find_rsp, NULL, NULL) == 0) { + if (mgmt_send(mgmt, op, index, sizeof(cp), &cp, find_rsp, + NULL, NULL) == 0) { error("Unable to send start_discovery cmd"); return noninteractive_quit(EXIT_FAILURE); } -- 2.47.3