monitor: Add support for decoding Broadcom high priority connection
authorMarcel Holtmann <marcel@holtmann.org>
Sat, 16 Jun 2018 20:17:40 +0000 (22:17 +0200)
committerhimanshu <h.himanshu@samsung.com>
Tue, 14 Jan 2020 08:53:35 +0000 (14:23 +0530)
Change-Id: I6c335959231197ed76fbb17590dbe1506e2f5e39
Signed-off-by: himanshu <h.himanshu@samsung.com>
monitor/broadcom.c
monitor/packet.c
monitor/packet.h

index b001608..abc3db1 100644 (file)
@@ -48,6 +48,11 @@ static void print_status(uint8_t status)
        packet_print_error("Status", status);
 }
 
+static void print_handle(uint16_t handle)
+{
+       packet_print_handle(handle);
+}
+
 static void print_sco_routing(uint8_t routing)
 {
        const char *str;
@@ -1000,6 +1005,29 @@ static void read_vid_pid_rsp(const void *data, uint8_t size)
        print_field("Product: %4.4x:%4.4x", vid, pid);
 }
 
+static void write_high_priority_connection_cmd(const void *data, uint8_t size)
+{
+       uint16_t handle = get_le16(data);
+       uint8_t priority = get_u8(data + 2);
+       const char *str;
+
+       print_handle(handle);
+
+       switch (priority) {
+       case 0x00:
+               str = "Low";
+               break;
+       case 0x01:
+               str = "High";
+               break;
+       default:
+               str = "Reserved";
+               break;
+       }
+
+       print_field("Priority: %s (0x%2.2x)", str, priority);
+}
+
 static const struct {
        uint8_t bit;
        const char *str;
@@ -1212,7 +1240,9 @@ static const struct vendor_ocf vendor_ocf_table[] = {
        { 0x05a, "Read VID PID",
                        null_cmd, 0, true,
                        read_vid_pid_rsp, 5, true },
-       { 0x057, "Write High Priority Connection" },
+       { 0x057, "Write High Priority Connection",
+                       write_high_priority_connection_cmd, 3, true,
+                       status_rsp, 1, true },
        { 0x06d, "Write I2SPCM Interface Param" },
        { 0x06e, "Read Controller Features",
                        null_cmd, 0, true,
index 6eedcc5..e3b9185 100755 (executable)
@@ -735,9 +735,14 @@ static void print_lt_addr(uint8_t lt_addr)
        print_field("LT address: %d", lt_addr);
 }
 
+static void print_handle_native(uint16_t handle)
+{
+       print_field("Handle: %d", handle);
+}
+
 static void print_handle(uint16_t handle)
 {
-       print_field("Handle: %d", le16_to_cpu(handle));
+       print_handle_native(le16_to_cpu(handle));
 }
 
 static void print_phy_handle(uint8_t phy_handle)
@@ -3872,6 +3877,11 @@ void packet_print_addr(const char *label, const void *data, bool random)
        print_addr(label ? : "Address", data, random ? 0x01 : 0x00);
 }
 
+void packet_print_handle(uint16_t handle)
+{
+       print_handle_native(handle);
+}
+
 void packet_print_ad(const void *data, uint8_t size)
 {
        print_eir(data, size, true);
index 6918f2f..573cde7 100755 (executable)
@@ -50,6 +50,7 @@ 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);
 void packet_print_addr(const char *label, const void *data, bool random);
+void packet_print_handle(uint16_t handle);
 void packet_print_ad(const void *data, uint8_t size);
 void packet_print_features_lmp(const uint8_t *features, uint8_t page);
 void packet_print_features_ll(const uint8_t *features);