From b269e3b973d3bc94b1dabf628a4e327833c1f7ea Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Thu, 27 Oct 2011 10:43:06 +0200 Subject: [PATCH] Add "power" command to btmgmt --- mgmt/main.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/mgmt/main.c b/mgmt/main.c index cee2b2a52..522e2f86b 100644 --- a/mgmt/main.c +++ b/mgmt/main.c @@ -445,6 +445,46 @@ static void cmd_info(int mgmt_sk, int argc, char **argv) } } +static void power_rsp(int mgmt_sk, uint16_t op, uint16_t id, uint8_t status, + void *rsp, uint16_t len, void *user_data) +{ + struct mgmt_mode *rp = rsp; + + if (status != 0) { + printf("Changing powered state for hci%u " + "failed with status %u\n", id, status); + exit(EXIT_FAILURE); + } + + printf("hci%u powered %s\n", id, rp->val ? "on" : "off"); + + exit(EXIT_SUCCESS); +} + + +static void cmd_power(int mgmt_sk, int argc, char **argv) +{ + uint8_t power; + + if (argc < 2) { + printf("Specify \"on\" or \"off\"\n"); + exit(EXIT_FAILURE); + } + + if (strcasecmp(argv[1], "on") == 0) + power = 1; + else if (strcasecmp(argv[1], "off") == 0) + power = 0; + else + power = atoi(argv[1]); + + if (mgmt_send_cmd(mgmt_sk, MGMT_OP_SET_POWERED, 0, &power, + sizeof(power), power_rsp, NULL) < 0) { + fprintf(stderr, "Unable to send cmd\n"); + exit(EXIT_FAILURE); + } +} + static struct { char *cmd; void (*func)(int mgmt_sk, int argc, char **argv); @@ -452,6 +492,7 @@ static struct { } command[] = { { "monitor", cmd_monitor, "Monitor events" }, { "info", cmd_info, "Show controller info" }, + { "power", cmd_power, "Toggle powered state" }, { NULL, NULL, 0 } }; -- 2.47.3