From dc920afdf5a9ee58181d094f96def64f15b65207 Mon Sep 17 00:00:00 2001 From: Claudio Takahasi Date: Wed, 2 Mar 2011 17:29:28 -0300 Subject: [PATCH] hcitool: add "whitelist" option to create LE connections If "whitelist" option is given, the peer address and type will be ignored and the white list will be used to determine which advertiser to connect to. --- tools/hcitool.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/tools/hcitool.c b/tools/hcitool.c index 3e5963083..d4775f1fb 100644 --- a/tools/hcitool.c +++ b/tools/hcitool.c @@ -2499,12 +2499,14 @@ static void cmd_lescan(int dev_id, int argc, char **argv) static struct option lecc_options[] = { { "help", 0, 0, 'h' }, { "random", 0, 0, 'r' }, + { "whitelist", 0, 0, 'w' }, { 0, 0, 0, 0 } }; static const char *lecc_help = "Usage:\n" - "\tlecc [--random] \n"; + "\tlecc [--random] \n" + "\tlecc --whitelist\n"; static void cmd_lecc(int dev_id, int argc, char **argv) { @@ -2515,18 +2517,22 @@ static void cmd_lecc(int dev_id, int argc, char **argv) uint8_t initiator_filter, own_bdaddr_type, peer_bdaddr_type; peer_bdaddr_type = LE_PUBLIC_ADDRESS; + initiator_filter = 0; /* Use peer address */ for_each_opt(opt, lecc_options, NULL) { switch (opt) { case 'r': peer_bdaddr_type = LE_RANDOM_ADDRESS; break; + case 'w': + initiator_filter = 0x01; /* Use white list */ + break; default: printf("%s", lecc_help); return; } } - helper_arg(1, 1, &argc, &argv, lecc_help); + helper_arg(0, 1, &argc, &argv, lecc_help); if (dev_id < 0) dev_id = hci_get_route(NULL); @@ -2537,11 +2543,12 @@ static void cmd_lecc(int dev_id, int argc, char **argv) exit(1); } - str2ba(argv[0], &bdaddr); + memset(&bdaddr, 0, sizeof(bdaddr_t)); + if (argv[0]) + str2ba(argv[0], &bdaddr); interval = htobs(0x0004); window = htobs(0x0004); - initiator_filter = 0x00; own_bdaddr_type = 0x00; min_interval = htobs(0x000F); max_interval = htobs(0x000F); -- 2.47.3