monitor: Store MSFT extension event prefix
authorMarcel Holtmann <marcel@holtmann.org>
Mon, 16 Aug 2021 15:35:18 +0000 (17:35 +0200)
committerAyush Garg <ayush.garg@samsung.com>
Fri, 11 Mar 2022 13:38:36 +0000 (19:08 +0530)
Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
monitor/msft.c
monitor/packet.c
monitor/packet.h

index 8d1cede..bec1074 100644 (file)
@@ -56,6 +56,8 @@ static void read_supported_features_rsp(const void *data, uint16_t size)
        packet_print_features_msft(data);
        print_field("Event prefix length: %u", evt_prefix_len);
        packet_hexdump(data + 9, size - 9);
+
+       packet_set_msft_evt_prefix(data + 9, evt_prefix_len);
 }
 
 static void le_monitor_advertisement_cmd(const void *data, uint16_t size)
index 0cba314..07a6cc1 100755 (executable)
@@ -265,6 +265,8 @@ struct index_data {
        uint8_t  bdaddr[6];
        uint16_t manufacturer;
        uint16_t msft_opcode;
+       uint8_t  msft_evt_prefix[8];
+       uint8_t  msft_evt_len;
        size_t   frame;
 };
 
@@ -280,6 +282,12 @@ void packet_set_fallback_manufacturer(uint16_t manufacturer)
        fallback_manufacturer = manufacturer;
 }
 
+void packet_set_msft_evt_prefix(const uint8_t *prefix, uint8_t len)
+{
+       if (index_current < MAX_INDEX && len < 8)
+               memcpy(index_list[index_current].msft_evt_prefix, prefix, len);
+}
+
 static void print_packet(struct timeval *tv, struct ucred *cred, char ident,
                                        uint16_t index, const char *channel,
                                        const char *color, const char *label,
index 224095f..259946d 100755 (executable)
@@ -31,6 +31,7 @@ void packet_del_filter(unsigned long filter);
 void packet_set_priority(const char *priority);
 void packet_select_index(uint16_t index);
 void packet_set_fallback_manufacturer(uint16_t manufacturer);
+void packet_set_msft_evt_prefix(const uint8_t *prefix, uint8_t len);
 
 void packet_hexdump(const unsigned char *buf, uint16_t len);
 void packet_print_error(const char *label, uint8_t error);