monitor: Fix Create BIG PDU
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Sat, 5 Mar 2022 01:22:18 +0000 (17:22 -0800)
committerAyush Garg <ayush.garg@samsung.com>
Mon, 15 May 2023 09:25:53 +0000 (14:55 +0530)
The PDU of Create BIG is actually fixed size as the num_bis is
related to the number of indexes to be connected and not the BIS
parameters.

Signed-off-by: Manika Shrivastava <manika.sh@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
emulator/btdev.c
monitor/bt.h
monitor/packet.c

index 3786740..9189e80 100755 (executable)
@@ -5692,10 +5692,10 @@ static int cmd_create_big_complete(struct btdev *dev, const void *data,
                                                        uint8_t len)
 {
        const struct bt_hci_cmd_le_create_big *cmd = data;
+       const struct bt_hci_bis *bis = &cmd->bis;
        int i;
 
        for (i = 0; i < cmd->num_bis; i++) {
-               const struct bt_hci_bis *bis = &cmd->bis[i];
                struct btdev_conn *conn;
                struct {
                        struct bt_hci_evt_le_big_complete evt;
index 7a61d26..de2cf1c 100755 (executable)
@@ -2757,7 +2757,7 @@ struct bt_hci_cmd_le_create_big {
        uint8_t  handle;
        uint8_t  adv_handle;
        uint8_t  num_bis;
-       struct bt_hci_bis bis[0];
+       struct bt_hci_bis bis;
 } __attribute__ ((packed));
 
 #define BT_HCI_CMD_LE_CREATE_BIG_TEST          0x2069
index 3782434..45b5476 100755 (executable)
@@ -8194,10 +8194,8 @@ static void le_reject_cis_req_cmd(const void *data, uint8_t size)
        print_reason(cmd->reason);
 }
 
-static void print_bis(const void *data, int i)
+static void print_bis(const struct bt_hci_bis *bis)
 {
-       const struct bt_hci_bis *bis = data;
-
        print_usec_interval("SDU Interval", bis->sdu_interval);
        print_field("Maximum SDU size: %u", le16_to_cpu(bis->sdu));
        print_field("Maximum Latency: %u ms (0x%4.4x)",
@@ -8217,10 +8215,7 @@ static void le_create_big_cmd(const void *data, uint8_t size)
        print_field("Handle: 0x%2.2x", cmd->handle);
        print_field("Advertising Handle: 0x%2.2x", cmd->adv_handle);
        print_field("Number of BIS: %u", cmd->num_bis);
-
-       size -= sizeof(*cmd);
-
-       print_list(cmd->bis, size, cmd->num_bis, sizeof(*cmd->bis), print_bis);
+       print_bis(&cmd->bis);
 }
 
 static void print_bis_test(const void *data, int i)