From 50e790bb57337e68e2ee915f7cb6addad7eefdc6 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 8 Jan 2014 01:06:59 -0800 Subject: [PATCH] monitor: Print descriptive LMP and LL error codes --- monitor/bt.h | 7 +++++++ monitor/ll.c | 4 ++-- monitor/lmp.c | 17 ++++++++++++++--- monitor/packet.c | 5 +++++ monitor/packet.h | 1 + 5 files changed, 29 insertions(+), 5 deletions(-) diff --git a/monitor/bt.h b/monitor/bt.h index 175888065..5bf37bbeb 100644 --- a/monitor/bt.h +++ b/monitor/bt.h @@ -112,6 +112,11 @@ struct bt_lmp_not_accepted { uint8_t error; } __attribute__ ((packed)); +#define BT_LMP_DETACH 7 +struct bt_lmp_detach { + uint8_t error; +} __attribute__ ((packed)); + #define BT_LMP_VERSION_REQ 37 struct bt_lmp_version_req { uint8_t version; @@ -136,6 +141,8 @@ struct bt_lmp_features_res { uint8_t features[8]; } __attribute__ ((packed)); +#define BT_LMP_SETUP_COMPLETE 49 + #define BT_LMP_ACCEPTED_EXT LMP_ESC4(1) struct bt_lmp_accepted_ext { uint8_t escape; diff --git a/monitor/ll.c b/monitor/ll.c index 1a66572b5..25a1b7d92 100644 --- a/monitor/ll.c +++ b/monitor/ll.c @@ -399,7 +399,7 @@ static void terminate_ind(const void *data, uint8_t size) { const struct bt_ll_terminate_ind *pdu = data; - print_field("Error code: 0x%2.2x", pdu->error); + packet_print_error("Error code", pdu->error); } static void enc_req(const void *data, uint8_t size) @@ -457,7 +457,7 @@ static void reject_ind(const void *data, uint8_t size) { const struct bt_ll_reject_ind *pdu = data; - print_field("Error code: 0x%2.2x", pdu->error); + packet_print_error("Error code", pdu->error); } struct llcp_data { diff --git a/monitor/lmp.c b/monitor/lmp.c index e9cff734c..325b712ef 100644 --- a/monitor/lmp.c +++ b/monitor/lmp.c @@ -67,7 +67,14 @@ static void not_accepted(const void *data, uint8_t size) const struct bt_lmp_not_accepted *pdu = data; print_opcode(pdu->opcode); - print_field("Error code: %u", pdu->error); + packet_print_error("Error code", pdu->error); +} + +static void detach(const void *data, uint8_t size) +{ + const struct bt_lmp_detach *pdu = data; + + packet_print_error("Error code", pdu->error); } static void version_req(const void *data, uint8_t size) @@ -102,6 +109,10 @@ static void features_res(const void *data, uint8_t size) packet_print_features_lmp(pdu->features, 0x00); } +static void setup_complete(const void *data, uint8_t size) +{ +} + static void accepted_ext(const void *data, uint8_t size) { const struct bt_lmp_accepted_ext *pdu = data; @@ -168,7 +179,7 @@ static const struct lmp_data lmp_table[] = { { 4, "LMP_not_accepted", not_accepted, 2, true }, { 5, "LMP_clkoffset_req" }, { 6, "LMP_clkoffset_res" }, - { 7, "LMP_detach" }, + { 7, "LMP_detach", detach, 1, true }, { 8, "LMP_in_rand" }, { 9, "LMP_comb_key" }, { 10, "LMP_unit_key" }, @@ -210,7 +221,7 @@ static const struct lmp_data lmp_table[] = { { 46, "LMP_max_slot_req" }, { 47, "LMP_timing_accuracy_req" }, { 48, "LMP_timing_accuracy_res" }, - { 49, "LMP_setup_complete" }, + { 49, "LMP_setup_complete", setup_complete, 0, true }, { 50, "LMP_use_semi_permanent_key" }, { 51, "LMP_host_connection_req" }, { 52, "LMP_slot_offset" }, diff --git a/monitor/packet.c b/monitor/packet.c index a324a829f..b8a98012c 100644 --- a/monitor/packet.c +++ b/monitor/packet.c @@ -397,6 +397,11 @@ static void print_reason(uint8_t reason) print_error("Reason", reason); } +void packet_print_error(const char *label, uint8_t error) +{ + print_error(label, error); +} + static void print_addr(const char *label, const uint8_t *addr, uint8_t addr_type) { diff --git a/monitor/packet.h b/monitor/packet.h index 7d18342e6..eed417f62 100644 --- a/monitor/packet.h +++ b/monitor/packet.h @@ -40,6 +40,7 @@ void packet_del_filter(unsigned long filter); void packet_select_index(uint16_t index); void packet_hexdump(const unsigned char *buf, uint16_t len); +void packet_print_error(const char *label, uint8_t error); void packet_print_version(const char *label, uint8_t version, const char *sublabel, uint16_t subversion); void packet_print_company(const char *label, uint16_t company); -- 2.11.0