summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/btmgmt.c227
1 files changed, 84 insertions, 143 deletions
diff --git a/tools/btmgmt.c b/tools/btmgmt.c
index bcfcb5b1b..1bc97aa48 100644
--- a/tools/btmgmt.c
+++ b/tools/btmgmt.c
@@ -1129,6 +1129,8 @@ done:
noninteractive_quit(EXIT_SUCCESS);
}
+static void cmd_usage(char *cmd);
+
static void cmd_version(struct mgmt *mgmt, uint16_t index, int argc,
char **argv)
{
@@ -1822,7 +1824,7 @@ static void cmd_discov(struct mgmt *mgmt, uint16_t index, int argc,
struct mgmt_cp_set_discoverable cp;
if (argc < 2) {
- print("Usage: %s <yes/no/limited> [timeout]", argv[0]);
+ cmd_usage(argv[0]);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2006,7 +2008,7 @@ static void cmd_class(struct mgmt *mgmt, uint16_t index, int argc, char **argv)
uint8_t class[2];
if (argc < 3) {
- print("Usage: %s <major> <minor>", argv[0]);
+ cmd_usage(argv[0]);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2051,11 +2053,6 @@ static void disconnect_rsp(uint8_t status, uint16_t len, const void *param,
noninteractive_quit(EXIT_SUCCESS);
}
-static void disconnect_usage(void)
-{
- print("Usage: disconnect [-t type] <remote address>");
-}
-
static struct option disconnect_options[] = {
{ "help", 0, 0, 'h' },
{ "type", 1, 0, 't' },
@@ -2068,6 +2065,7 @@ static void cmd_disconnect(struct mgmt *mgmt, uint16_t index, int argc,
struct mgmt_cp_disconnect cp;
uint8_t type = BDADDR_BREDR;
int opt;
+ char *cmd = argv[0];
while ((opt = getopt_long(argc, argv, "+t:h", disconnect_options,
NULL)) != -1) {
@@ -2076,11 +2074,11 @@ static void cmd_disconnect(struct mgmt *mgmt, uint16_t index, int argc,
type = strtol(optarg, NULL, 0);
break;
case 'h':
- disconnect_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_SUCCESS);
default:
- disconnect_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2091,7 +2089,7 @@ static void cmd_disconnect(struct mgmt *mgmt, uint16_t index, int argc,
optind = 0;
if (argc < 1) {
- disconnect_usage();
+ cmd_usage(cmd);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2163,11 +2161,6 @@ static void find_service_rsp(uint8_t status, uint16_t len, const void *param,
discovery = true;
}
-static void find_service_usage(void)
-{
- print("Usage: find-service [-u UUID] [-r RSSI_Threshold] [-l|-b]");
-}
-
static struct option find_service_options[] = {
{ "help", no_argument, 0, 'h' },
{ "le-only", no_argument, 0, 'l' },
@@ -2201,6 +2194,7 @@ static void cmd_find_service(struct mgmt *mgmt, uint16_t index, int argc,
int8_t rssi;
uint16_t count;
int opt;
+ char *cmd = argv[0];
if (index == MGMT_INDEX_NONE)
index = 0;
@@ -2209,7 +2203,7 @@ static void cmd_find_service(struct mgmt *mgmt, uint16_t index, int argc,
count = 0;
if (argc == 1) {
- find_service_usage();
+ cmd_usage(cmd);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2246,11 +2240,11 @@ static void cmd_find_service(struct mgmt *mgmt, uint16_t index, int argc,
rssi = atoi(optarg);
break;
case 'h':
- find_service_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_SUCCESS);
default:
- find_service_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2261,7 +2255,7 @@ static void cmd_find_service(struct mgmt *mgmt, uint16_t index, int argc,
optind = 0;
if (argc > 0) {
- find_service_usage();
+ cmd_usage(cmd);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2291,11 +2285,6 @@ static void find_rsp(uint8_t status, uint16_t len, const void *param,
discovery = true;
}
-static void find_usage(void)
-{
- print("Usage: find [-l|-b] [-L]");
-}
-
static struct option find_options[] = {
{ "help", 0, 0, 'h' },
{ "le-only", 1, 0, 'l' },
@@ -2310,6 +2299,7 @@ static void cmd_find(struct mgmt *mgmt, uint16_t index, int argc, char **argv)
uint8_t op = MGMT_OP_START_DISCOVERY;
uint8_t type = SCAN_TYPE_DUAL;
int opt;
+ char *cmd = argv[0];
if (index == MGMT_INDEX_NONE)
index = 0;
@@ -2329,11 +2319,11 @@ static void cmd_find(struct mgmt *mgmt, uint16_t index, int argc, char **argv)
op = MGMT_OP_START_LIMITED_DISCOVERY;
break;
case 'h':
- find_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_SUCCESS);
default:
- find_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2368,11 +2358,6 @@ static void stop_find_rsp(uint8_t status, uint16_t len, const void *param,
noninteractive_quit(EXIT_SUCCESS);
}
-static void stop_find_usage(void)
-{
- print("Usage: stop-find [-l|-b]");
-}
-
static struct option stop_find_options[] = {
{ "help", 0, 0, 'h' },
{ "le-only", 1, 0, 'l' },
@@ -2386,6 +2371,7 @@ static void cmd_stop_find(struct mgmt *mgmt, uint16_t index, int argc,
struct mgmt_cp_stop_discovery cp;
uint8_t type = SCAN_TYPE_DUAL;
int opt;
+ char *cmd = argv[0];
if (index == MGMT_INDEX_NONE)
index = 0;
@@ -2403,7 +2389,7 @@ static void cmd_stop_find(struct mgmt *mgmt, uint16_t index, int argc,
break;
case 'h':
default:
- stop_find_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_SUCCESS);
}
@@ -2438,7 +2424,7 @@ static void cmd_name(struct mgmt *mgmt, uint16_t index, int argc, char **argv)
struct mgmt_cp_set_local_name cp;
if (argc < 2) {
- print("Usage: %s <name> [shortname]", argv[0]);
+ cmd_usage(argv[0]);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2490,11 +2476,6 @@ static void pair_rsp(uint8_t status, uint16_t len, const void *param,
noninteractive_quit(EXIT_SUCCESS);
}
-static void pair_usage(void)
-{
- print("Usage: pair [-c cap] [-t type] <remote address>");
-}
-
static struct option pair_options[] = {
{ "help", 0, 0, 'h' },
{ "capability", 1, 0, 'c' },
@@ -2509,6 +2490,7 @@ static void cmd_pair(struct mgmt *mgmt, uint16_t index, int argc, char **argv)
uint8_t type = BDADDR_BREDR;
char addr[18];
int opt;
+ char *cmd = argv[0];
while ((opt = getopt_long(argc, argv, "+c:t:h", pair_options,
NULL)) != -1) {
@@ -2520,11 +2502,11 @@ static void cmd_pair(struct mgmt *mgmt, uint16_t index, int argc, char **argv)
type = strtol(optarg, NULL, 0);
break;
case 'h':
- pair_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_SUCCESS);
default:
- pair_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2535,7 +2517,7 @@ static void cmd_pair(struct mgmt *mgmt, uint16_t index, int argc, char **argv)
optind = 0;
if (argc < 1) {
- pair_usage();
+ cmd_usage(cmd);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2586,11 +2568,6 @@ static void cancel_pair_rsp(uint8_t status, uint16_t len, const void *param,
noninteractive_quit(EXIT_SUCCESS);
}
-static void cancel_pair_usage(void)
-{
- print("Usage: cancelpair [-t type] <remote address>");
-}
-
static struct option cancel_pair_options[] = {
{ "help", 0, 0, 'h' },
{ "type", 1, 0, 't' },
@@ -2603,6 +2580,7 @@ static void cmd_cancel_pair(struct mgmt *mgmt, uint16_t index, int argc,
struct mgmt_addr_info cp;
uint8_t type = BDADDR_BREDR;
int opt;
+ char *cmd = argv[0];
while ((opt = getopt_long(argc, argv, "+t:h", cancel_pair_options,
NULL)) != -1) {
@@ -2611,11 +2589,11 @@ static void cmd_cancel_pair(struct mgmt *mgmt, uint16_t index, int argc,
type = strtol(optarg, NULL, 0);
break;
case 'h':
- cancel_pair_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_SUCCESS);
default:
- cancel_pair_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2626,7 +2604,7 @@ static void cmd_cancel_pair(struct mgmt *mgmt, uint16_t index, int argc,
optind = 0;
if (argc < 1) {
- cancel_pair_usage();
+ cmd_usage(cmd);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2672,11 +2650,6 @@ static void unpair_rsp(uint8_t status, uint16_t len, const void *param,
noninteractive_quit(EXIT_SUCCESS);
}
-static void unpair_usage(void)
-{
- print("Usage: unpair [-t type] <remote address>");
-}
-
static struct option unpair_options[] = {
{ "help", 0, 0, 'h' },
{ "type", 1, 0, 't' },
@@ -2689,6 +2662,7 @@ static void cmd_unpair(struct mgmt *mgmt, uint16_t index, int argc,
struct mgmt_cp_unpair_device cp;
uint8_t type = BDADDR_BREDR;
int opt;
+ char *cmd = argv[0];
while ((opt = getopt_long(argc, argv, "+t:h", unpair_options,
NULL)) != -1) {
@@ -2697,11 +2671,11 @@ static void cmd_unpair(struct mgmt *mgmt, uint16_t index, int argc,
type = strtol(optarg, NULL, 0);
break;
case 'h':
- unpair_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_SUCCESS);
default:
- unpair_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2712,7 +2686,7 @@ static void cmd_unpair(struct mgmt *mgmt, uint16_t index, int argc,
optind = 0;
if (argc < 1) {
- unpair_usage();
+ cmd_usage(cmd);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2799,11 +2773,6 @@ static void irks_rsp(uint8_t status, uint16_t len, const void *param,
noninteractive_quit(EXIT_SUCCESS);
}
-static void irks_usage(void)
-{
- print("Usage: irks [--local <index>] [--file <file path>]");
-}
-
static struct option irks_options[] = {
{ "help", 0, 0, 'h' },
{ "local", 1, 0, 'l' },
@@ -2820,6 +2789,7 @@ static void cmd_irks(struct mgmt *mgmt, uint16_t index, int argc, char **argv)
uint16_t count, local_index;
char path[PATH_MAX];
int opt;
+ char *cmd = argv[0];
if (index == MGMT_INDEX_NONE)
index = 0;
@@ -2865,11 +2835,11 @@ static void cmd_irks(struct mgmt *mgmt, uint16_t index, int argc, char **argv)
count++;
break;
case 'h':
- irks_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_SUCCESS);
default:
- irks_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2880,7 +2850,7 @@ static void cmd_irks(struct mgmt *mgmt, uint16_t index, int argc, char **argv)
optind = 0;
if (argc > 0) {
- irks_usage();
+ cmd_usage(cmd);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2923,11 +2893,6 @@ static void block_rsp(uint16_t op, uint16_t id, uint8_t status, uint16_t len,
noninteractive_quit(EXIT_SUCCESS);
}
-static void block_usage(void)
-{
- print("Usage: block [-t type] <remote address>");
-}
-
static struct option block_options[] = {
{ "help", 0, 0, 'h' },
{ "type", 1, 0, 't' },
@@ -2939,6 +2904,7 @@ static void cmd_block(struct mgmt *mgmt, uint16_t index, int argc, char **argv)
struct mgmt_cp_block_device cp;
uint8_t type = BDADDR_BREDR;
int opt;
+ char *cmd = argv[0];
while ((opt = getopt_long(argc, argv, "+t:h", block_options,
NULL)) != -1) {
@@ -2947,11 +2913,11 @@ static void cmd_block(struct mgmt *mgmt, uint16_t index, int argc, char **argv)
type = strtol(optarg, NULL, 0);
break;
case 'h':
- block_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_SUCCESS);
default:
- block_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2962,7 +2928,7 @@ static void cmd_block(struct mgmt *mgmt, uint16_t index, int argc, char **argv)
optind = 0;
if (argc < 1) {
- block_usage();
+ cmd_usage(cmd);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -2980,17 +2946,13 @@ static void cmd_block(struct mgmt *mgmt, uint16_t index, int argc, char **argv)
}
}
-static void unblock_usage(void)
-{
- print("Usage: unblock [-t type] <remote address>");
-}
-
static void cmd_unblock(struct mgmt *mgmt, uint16_t index, int argc,
char **argv)
{
struct mgmt_cp_unblock_device cp;
uint8_t type = BDADDR_BREDR;
int opt;
+ char *cmd = argv[0];
while ((opt = getopt_long(argc, argv, "+t:h", block_options,
NULL)) != -1) {
@@ -2999,11 +2961,11 @@ static void cmd_unblock(struct mgmt *mgmt, uint16_t index, int argc,
type = strtol(optarg, NULL, 0);
break;
case 'h':
- unblock_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_SUCCESS);
default:
- unblock_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_FAILURE);
}
@@ -3014,7 +2976,7 @@ static void cmd_unblock(struct mgmt *mgmt, uint16_t index, int argc,
optind = 0;
if (argc < 1) {
- unblock_usage();
+ cmd_usage(cmd);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -3178,13 +3140,6 @@ static void remote_oob_rsp(uint8_t status, uint16_t len, const void *param,
print("Remote OOB data added for %s (%u)", addr, rp->type);
}
-static void remote_oob_usage(void)
-{
- print("Usage: remote-oob [-t <addr_type>] "
- "[-r <rand192>] [-h <hash192>] [-R <rand256>] [-H <hash256>] "
- "<addr>");
-}
-
static struct option remote_oob_opt[] = {
{ "help", 0, 0, '?' },
{ "type", 1, 0, 't' },
@@ -3196,6 +3151,7 @@ static void cmd_remote_oob(struct mgmt *mgmt, uint16_t index,
{
struct mgmt_cp_add_remote_oob_data cp;
int opt;
+ char *cmd = argv[0];
memset(&cp, 0, sizeof(cp));
cp.addr.type = BDADDR_BREDR;
@@ -3219,7 +3175,7 @@ static void cmd_remote_oob(struct mgmt *mgmt, uint16_t index,
hex2bin(optarg, cp.hash256, 16);
break;
default:
- remote_oob_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_FAILURE);
}
@@ -3230,7 +3186,7 @@ static void cmd_remote_oob(struct mgmt *mgmt, uint16_t index,
optind = 0;
if (argc < 1) {
- remote_oob_usage();
+ cmd_usage(cmd);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -3263,7 +3219,7 @@ static void did_rsp(uint8_t status, uint16_t len, const void *param,
static void did_usage(void)
{
- print("Usage: did <source>:<vendor>:<product>:<version>");
+ cmd_usage("did");
print(" possible source values: bluetooth, usb");
}
@@ -3323,18 +3279,13 @@ static void static_addr_rsp(uint8_t status, uint16_t len, const void *param,
noninteractive_quit(EXIT_SUCCESS);
}
-static void static_addr_usage(void)
-{
- print("Usage: static-addr <address>");
-}
-
static void cmd_static_addr(struct mgmt *mgmt, uint16_t index,
int argc, char **argv)
{
struct mgmt_cp_set_static_address cp;
if (argc < 2) {
- static_addr_usage();
+ cmd_usage(argv[0]);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -3379,7 +3330,7 @@ static void cmd_public_addr(struct mgmt *mgmt, uint16_t index,
struct mgmt_cp_set_public_address cp;
if (argc < 2) {
- print("Usage: public-addr <address>");
+ cmd_usage(argv[0]);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -3460,11 +3411,6 @@ static void conn_info_rsp(uint8_t status, uint16_t len, const void *param,
noninteractive_quit(EXIT_SUCCESS);
}
-static void conn_info_usage(void)
-{
- print("Usage: conn-info [-t type] <remote address>");
-}
-
static struct option conn_info_options[] = {
{ "help", 0, 0, 'h' },
{ "type", 1, 0, 't' },
@@ -3477,6 +3423,7 @@ static void cmd_conn_info(struct mgmt *mgmt, uint16_t index,
struct mgmt_cp_get_conn_info cp;
uint8_t type = BDADDR_BREDR;
int opt;
+ char *cmd = argv[0];
while ((opt = getopt_long(argc, argv, "+t:h", conn_info_options,
NULL)) != -1) {
@@ -3485,11 +3432,11 @@ static void cmd_conn_info(struct mgmt *mgmt, uint16_t index,
type = strtol(optarg, NULL, 0);
break;
case 'h':
- conn_info_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_SUCCESS);
default:
- conn_info_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_FAILURE);
}
@@ -3500,7 +3447,7 @@ static void cmd_conn_info(struct mgmt *mgmt, uint16_t index,
optind = 0;
if (argc < 1) {
- conn_info_usage();
+ cmd_usage(cmd);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -3530,11 +3477,6 @@ static void io_cap_rsp(uint8_t status, uint16_t len, const void *param,
noninteractive_quit(EXIT_SUCCESS);
}
-static void io_cap_usage(void)
-{
- print("Usage: io-cap <cap>");
-}
-
static void cmd_io_cap(struct mgmt *mgmt, uint16_t index,
int argc, char **argv)
{
@@ -3542,7 +3484,7 @@ static void cmd_io_cap(struct mgmt *mgmt, uint16_t index,
uint8_t cap;
if (argc < 2) {
- io_cap_usage();
+ cmd_usage(argv[0]);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -3572,18 +3514,13 @@ static void scan_params_rsp(uint8_t status, uint16_t len, const void *param,
noninteractive_quit(EXIT_SUCCESS);
}
-static void scan_params_usage(void)
-{
- print("Usage: scan-params <interval> <window>");
-}
-
static void cmd_scan_params(struct mgmt *mgmt, uint16_t index,
int argc, char **argv)
{
struct mgmt_cp_set_scan_params cp;
if (argc < 3) {
- scan_params_usage();
+ cmd_usage(argv[0]);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -3652,11 +3589,6 @@ static void add_device_rsp(uint8_t status, uint16_t len, const void *param,
noninteractive_quit(EXIT_SUCCESS);
}
-static void add_device_usage(void)
-{
- print("Usage: add-device [-a action] [-t type] <address>");
-}
-
static struct option add_device_options[] = {
{ "help", 0, 0, 'h' },
{ "action", 1, 0, 'a' },
@@ -3672,6 +3604,7 @@ static void cmd_add_device(struct mgmt *mgmt, uint16_t index,
uint8_t type = BDADDR_BREDR;
char addr[18];
int opt;
+ char *cmd = argv[0];
while ((opt = getopt_long(argc, argv, "+a:t:h", add_device_options,
NULL)) != -1) {
@@ -3683,11 +3616,11 @@ static void cmd_add_device(struct mgmt *mgmt, uint16_t index,
type = strtol(optarg, NULL, 0);
break;
case 'h':
- add_device_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_SUCCESS);
default:
- add_device_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_FAILURE);
}
@@ -3698,7 +3631,7 @@ static void cmd_add_device(struct mgmt *mgmt, uint16_t index,
optind = 0;
if (argc < 1) {
- add_device_usage();
+ cmd_usage(cmd);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -3729,11 +3662,6 @@ static void remove_device_rsp(uint8_t status, uint16_t len, const void *param,
noninteractive_quit(EXIT_SUCCESS);
}
-static void del_device_usage(void)
-{
- print("Usage: del-device [-t type] <address>");
-}
-
static struct option del_device_options[] = {
{ "help", 0, 0, 'h' },
{ "type", 1, 0, 't' },
@@ -3747,6 +3675,7 @@ static void cmd_del_device(struct mgmt *mgmt, uint16_t index,
uint8_t type = BDADDR_BREDR;
char addr[18];
int opt;
+ char *cmd = argv[0];
while ((opt = getopt_long(argc, argv, "+t:h", del_device_options,
NULL)) != -1) {
@@ -3755,11 +3684,11 @@ static void cmd_del_device(struct mgmt *mgmt, uint16_t index,
type = strtol(optarg, NULL, 0);
break;
case 'h':
- del_device_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_SUCCESS);
default:
- del_device_usage();
+ cmd_usage(cmd);
optind = 0;
return noninteractive_quit(EXIT_FAILURE);
}
@@ -3770,7 +3699,7 @@ static void cmd_del_device(struct mgmt *mgmt, uint16_t index,
optind = 0;
if (argc < 1) {
- del_device_usage();
+ cmd_usage(cmd);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -3969,7 +3898,8 @@ static void adv_size_info_rsp(uint8_t status, uint16_t len, const void *param,
static void advsize_usage(void)
{
- print("Usage: advsize [options] <instance_id>\nOptions:\n"
+ cmd_usage("advsize");
+ print("Options:\n"
"\t -c, --connectable \"connectable\" flag\n"
"\t -g, --general-discov \"general-discoverable\" flag\n"
"\t -l, --limited-discov \"limited-discoverable\" flag\n"
@@ -4079,7 +4009,8 @@ static void add_adv_rsp(uint8_t status, uint16_t len, const void *param,
static void add_adv_usage(void)
{
- print("Usage: add-adv [options] <instance_id>\nOptions:\n"
+ cmd_usage("add-adv");
+ print("Options:\n"
"\t -u, --uuid <uuid> Service UUID\n"
"\t -d, --adv-data <data> Advertising Data bytes\n"
"\t -s, --scan-rsp <data> Scan Response Data bytes\n"
@@ -4342,18 +4273,13 @@ static void rm_adv_rsp(uint8_t status, uint16_t len, const void *param,
return noninteractive_quit(EXIT_SUCCESS);
}
-static void rm_adv_usage(void)
-{
- print("Usage: rm-adv <instance_id>");
-}
-
static void cmd_rm_adv(struct mgmt *mgmt, uint16_t index, int argc, char **argv)
{
struct mgmt_cp_remove_advertising cp;
uint8_t instance;
if (argc != 2) {
- rm_adv_usage();
+ cmd_usage(argv[0]);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -4399,7 +4325,7 @@ static void cmd_appearance(struct mgmt *mgmt, uint16_t index, int argc,
struct mgmt_cp_set_appearance cp;
if (argc < 2) {
- print("Usage: appearance <appearance>");
+ cmd_usage(argv[0]);
return noninteractive_quit(EXIT_FAILURE);
}
@@ -4718,6 +4644,21 @@ static struct cmd_info *find_cmd(const char *cmd, struct cmd_info table[],
return NULL;
}
+static void cmd_usage(char *cmd)
+{
+ struct cmd_info *c;
+
+ if (!cmd)
+ return;
+
+ c = find_cmd(cmd, all_cmd, NELEM(all_cmd));
+ if (!c)
+ return;
+
+ print("Usage: %s %s", cmd, c->arg ? : "");
+
+}
+
static void rl_handler(char *input)
{
struct cmd_info *c;