From d6556d05a2727439a3d53c5a783256a074b8a79c Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Fri, 11 Nov 2011 15:54:31 +0200 Subject: [PATCH] btmgmt: Add mgmt status to string conversion function --- mgmt/main.c | 111 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 76 insertions(+), 35 deletions(-) diff --git a/mgmt/main.c b/mgmt/main.c index 14116a18d..ea963f872 100644 --- a/mgmt/main.c +++ b/mgmt/main.c @@ -103,6 +103,25 @@ static const char *mgmt_ev[] = { "Device Unblocked", }; +static const char *mgmt_status[] = { + "Success", + "Unknown Command", + "Not Connected", + "Failed", + "Connect Failed", + "Authentication Failed", + "Not Paired", + "No Resources", + "Timeout", + "Already Connected", + "Busy", + "Rejected", + "Not Supported", + "Invalid Parameters", + "Disconnected", + "Not Powered", +}; + static bool monitor = false; static bool discovery = false; @@ -131,6 +150,13 @@ static const char *mgmt_evstr(uint16_t ev) return mgmt_ev[ev]; } +static const char *mgmt_errstr(uint8_t status) +{ + if (status >= NELEM(mgmt_status)) + return ""; + return mgmt_status[status]; +} + static int mgmt_send_cmd(int mgmt_sk, uint16_t op, uint16_t id, void *data, size_t len, cmd_cb func, void *user_data) { @@ -254,8 +280,8 @@ static int mgmt_cmd_status(int mgmt_sk, uint16_t index, opcode = bt_get_le16(&ev->opcode); if (monitor) - printf("cmd status, opcode 0x%04x status 0x%02x\n", - opcode, ev->status); + printf("cmd status, opcode 0x%04x status 0x%02x (%s)\n", + opcode, ev->status, mgmt_errstr(ev->status)); if (ev->status != 0) mgmt_check_pending(mgmt_sk, opcode, index, ev->status, @@ -378,8 +404,9 @@ static int mgmt_conn_failed(int mgmt_sk, uint16_t index, if (monitor) { char addr[18]; ba2str(&ev->addr.bdaddr, addr); - printf("hci%u %s type %s connect failed (status 0x%02x)\n", - index, addr, typestr(ev->addr.type), ev->status); + printf("hci%u %s type %s connect failed (status 0x%02x, %s)\n", + index, addr, typestr(ev->addr.type), ev->status, + mgmt_errstr(ev->status)); } return 0; @@ -398,8 +425,8 @@ static int mgmt_auth_failed(int mgmt_sk, uint16_t index, if (monitor) { char addr[18]; ba2str(&ev->bdaddr, addr); - printf("hci%u %s auth failed with status 0x%02x\n", - index, addr, ev->status); + printf("hci%u %s auth failed with status 0x%02x (%s)\n", + index, addr, ev->status, mgmt_errstr(ev->status)); } return 0; @@ -465,8 +492,9 @@ static void pin_rsp(int mgmt_sk, uint16_t op, uint16_t id, uint8_t status, void *rsp, uint16_t len, void *user_data) { if (status != 0) { - fprintf(stderr, "hci%u PIN Code reply failed with status %u", - id, status); + fprintf(stderr, + "hci%u PIN Code reply failed with status 0x%02x (%s)", + id, status, mgmt_errstr(status)); exit(EXIT_FAILURE); } @@ -491,8 +519,9 @@ static void pin_neg_rsp(int mgmt_sk, uint16_t op, uint16_t id, uint8_t status, void *rsp, uint16_t len, void *user_data) { if (status != 0) { - fprintf(stderr, "hci%u PIN Neg reply failed with status %u", - id, status); + fprintf(stderr, + "hci%u PIN Neg reply failed with status 0x%02x (%s)", + id, status, mgmt_errstr(status)); exit(EXIT_FAILURE); } @@ -551,8 +580,8 @@ static void confirm_rsp(int mgmt_sk, uint16_t op, uint16_t id, uint8_t status, { if (status != 0) { fprintf(stderr, - "hci%u User Confirm reply failed with status %u", - id, status); + "hci%u User Confirm reply failed. status 0x%02x (%s)", + id, status, mgmt_errstr(status)); exit(EXIT_FAILURE); } @@ -576,8 +605,8 @@ static void confirm_neg_rsp(int mgmt_sk, uint16_t op, uint16_t id, { if (status != 0) { fprintf(stderr, - "hci%u Confirm Negative reply failed with status %u", - id, status); + "hci%u Confirm Neg reply failed. status 0x%02x (%s)", + id, status, mgmt_errstr(status)); exit(EXIT_FAILURE); } @@ -742,8 +771,9 @@ static void info_rsp(int mgmt_sk, uint16_t op, uint16_t id, uint8_t status, char addr[18]; if (status != 0) { - fprintf(stderr, "Reading hci%u info failed with status %u\n", - id, status); + fprintf(stderr, + "Reading hci%u info failed with status 0x%02x (%s)\n", + id, status, mgmt_errstr(status)); exit(EXIT_FAILURE); } @@ -776,8 +806,9 @@ static void index_rsp(int mgmt_sk, uint16_t op, uint16_t id, uint8_t status, unsigned int i; if (status != 0) { - fprintf(stderr, "Reading index list failed with status %u\n", - status); + fprintf(stderr, + "Reading index list failed with status 0x%02x (%s)\n", + status, mgmt_errstr(status)); exit(EXIT_FAILURE); } @@ -851,8 +882,9 @@ static void setting_rsp(int mgmt_sk, uint16_t op, uint16_t id, uint8_t status, struct mgmt_mode *rp = rsp; if (status != 0) { - fprintf(stderr, "%s for hci%u failed with status %u\n", - mgmt_opstr(op), id, status); + fprintf(stderr, + "%s for hci%u failed with status 0x%02x (%s)\n", + mgmt_opstr(op), id, status, mgmt_errstr(status)); exit(EXIT_FAILURE); } @@ -944,8 +976,9 @@ static void class_rsp(int mgmt_sk, uint16_t op, uint16_t id, uint8_t status, void *rsp, uint16_t len, void *user_data) { if (status != 0) { - fprintf(stderr, "Setting hci%u class failed with status %u", - id, status); + fprintf(stderr, + "Setting hci%u class failed with status 0x%02x (%s)", + id, status, mgmt_errstr(status)); exit(EXIT_FAILURE); } @@ -983,7 +1016,8 @@ static void disconnect_rsp(int mgmt_sk, uint16_t op, uint16_t id, char addr[18]; if (status != 0) { - fprintf(stderr, "Disconnect failed with status %u\n", status); + fprintf(stderr, "Disconnect failed with status 0x%02x (%s)\n", + status, mgmt_errstr(status)); exit(EXIT_FAILURE); } @@ -999,8 +1033,9 @@ static void disconnect_rsp(int mgmt_sk, uint16_t op, uint16_t id, printf("%s disconnected\n", addr); exit(EXIT_SUCCESS); } else { - fprintf(stderr, "Disconnecting %s failed with status %u\n", - addr, rp->status); + fprintf(stderr, + "Disconnecting %s failed with status 0x%02x (%s)\n", + addr, rp->status, mgmt_errstr(rp->status)); exit(EXIT_FAILURE); } } @@ -1072,8 +1107,9 @@ static void find_rsp(int mgmt_sk, uint16_t op, uint16_t id, uint8_t status, void *rsp, uint16_t len, void *user_data) { if (status != 0) { - fprintf(stderr, "Unable to start discovery (status %u)\n", - status); + fprintf(stderr, + "Unable to start discovery. status 0x%02x (%s)\n", + status, mgmt_errstr(status)); exit(EXIT_FAILURE); } @@ -1108,8 +1144,8 @@ static void name_rsp(int mgmt_sk, uint16_t op, uint16_t id, uint8_t status, void *rsp, uint16_t len, void *user_data) { if (status != 0) { - fprintf(stderr, "Unable to set local name (status %u)", - status); + fprintf(stderr, "Unable to set local name. status 0x%02x (%s)", + status, mgmt_errstr(status)); exit(EXIT_FAILURE); } @@ -1145,7 +1181,8 @@ static void pair_rsp(int mgmt_sk, uint16_t op, uint16_t id, uint8_t status, char addr[18]; if (status != 0) { - fprintf(stderr, "Pairing failed with status %u\n", status); + fprintf(stderr, "Pairing failed with status 0x%02x (%s)\n", + status, mgmt_errstr(status)); exit(EXIT_FAILURE); } @@ -1157,8 +1194,10 @@ static void pair_rsp(int mgmt_sk, uint16_t op, uint16_t id, uint8_t status, ba2str(&rp->addr.bdaddr, addr); if (rp->status != 0) { - fprintf(stderr, "Pairing with %s (%s) failed with status %u\n", - addr, typestr(rp->addr.type), rp->status); + fprintf(stderr, + "Pairing with %s (%s) failed. status 0x%02x (%s)\n", + addr, typestr(rp->addr.type), rp->status, + mgmt_errstr(rp->status)); exit(EXIT_FAILURE); } @@ -1233,7 +1272,8 @@ static void remove_rsp(int mgmt_sk, uint16_t op, uint16_t id, uint8_t status, char addr[18]; if (status != 0) { - fprintf(stderr, "Remove keys failed with status %u\n", status); + fprintf(stderr, "Remove keys failed with status 0x%02x (%s)\n", + status, mgmt_errstr(status)); exit(EXIT_FAILURE); } @@ -1245,8 +1285,9 @@ static void remove_rsp(int mgmt_sk, uint16_t op, uint16_t id, uint8_t status, ba2str(&rp->bdaddr, addr); if (rp->status != 0) { - fprintf(stderr, "Removing keys for %s failed with status %u\n", - addr, rp->status); + fprintf(stderr, + "Removing keys for %s failed. status 0x%02x (%s)\n", + addr, rp->status, mgmt_errstr(rp->status)); exit(EXIT_FAILURE); } -- 2.47.3