OSDN Git Service

monitor: Print descriptive LMP and LL error codes
authorMarcel Holtmann <marcel@holtmann.org>
Wed, 8 Jan 2014 09:06:59 +0000 (01:06 -0800)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 8 Jan 2014 09:06:59 +0000 (01:06 -0800)
monitor/bt.h
monitor/ll.c
monitor/lmp.c
monitor/packet.c
monitor/packet.h

index 1758880..5bf37bb 100644 (file)
@@ -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;
index 1a66572..25a1b7d 100644 (file)
@@ -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 {
index e9cff73..325b712 100644 (file)
@@ -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" },
index a324a82..b8a9801 100644 (file)
@@ -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)
 {
index 7d18342..eed417f 100644 (file)
@@ -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);