btstack_hid_parser: move tracking of active record up

This commit is contained in:
Matthias Ringwald 2024-08-12 14:07:46 +02:00
parent 491c2cbcf9
commit eb78fada06

View File

@ -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; parser->global_report_size = item->item_value;
break; break;
case ReportID: case ReportID:
if (parser->active_record && (parser->global_report_id != item->item_value)){
parser->active_record = 0;
}
parser->global_report_id = item->item_value; parser->global_report_id = item->item_value;
break; break;
case ReportCount: 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){ static void hid_process_item(btstack_hid_parser_t * parser, hid_descriptor_item_t * item){
hid_pretty_print_item(parser, item); hid_pretty_print_item(parser, item);
int valid_field = 0; int valid_field = 0;
uint16_t report_id_before;
switch ((TagType)item->item_type){ switch ((TagType)item->item_type){
case Main: case Main:
switch ((MainItemTag)item->item_tag){ switch ((MainItemTag)item->item_tag){
@ -291,7 +289,14 @@ static void hid_process_item(btstack_hid_parser_t * parser, hid_descriptor_item_
} }
break; break;
case Global: case Global:
report_id_before = parser->global_report_id;
btstack_hid_handle_global_item(parser, item); 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; break;
case Local: case Local:
case Reserved: case Reserved: