Diff between 218969aa10624e3162e340b66744addd02a93241 and 43657d77037302268b6ef02724c66eda416cf3e7

Changed Files

File Additions Deletions Status
lib/mgmt.h +2 -0 modified
tools/btmgmt.c +8 -3 modified

Full Patch

diff --git a/lib/mgmt.h b/lib/mgmt.h
index d76bdbb..f6a976a 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 f82461e..3d03455 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);
 	}