From eb78fada061f58e4189707eba6bc4158d30cb49e Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Mon, 12 Aug 2024 14:07:46 +0200 Subject: [PATCH] btstack_hid_parser: move tracking of active record up --- src/btstack_hid_parser.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/btstack_hid_parser.c b/src/btstack_hid_parser.c index 74187c17c..fac1b53be 100644 --- a/src/btstack_hid_parser.c +++ b/src/btstack_hid_parser.c @@ -203,9 +203,6 @@ static void btstack_hid_handle_global_item(btstack_hid_parser_t * parser, hid_de parser->global_report_size = item->item_value; break; case ReportID: - if (parser->active_record && (parser->global_report_id != item->item_value)){ - parser->active_record = 0; - } parser->global_report_id = item->item_value; break; case ReportCount: @@ -274,6 +271,7 @@ static void hid_find_next_usage(btstack_hid_parser_t * parser){ static void hid_process_item(btstack_hid_parser_t * parser, hid_descriptor_item_t * item){ hid_pretty_print_item(parser, item); int valid_field = 0; + uint16_t report_id_before; switch ((TagType)item->item_type){ case Main: switch ((MainItemTag)item->item_tag){ @@ -291,7 +289,14 @@ static void hid_process_item(btstack_hid_parser_t * parser, hid_descriptor_item_ } break; case Global: + report_id_before = parser->global_report_id; btstack_hid_handle_global_item(parser, item); + // track record id for report handling + if ((GlobalItemTag)item->item_tag == ReportID){ + if (parser->active_record && (report_id_before != item->item_value)){ + parser->active_record = 0; + } + } break; case Local: case Reserved: