mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
fix(esp_hid): Loose the check of input report length to be more compatible
Closes https://github.com/espressif/esp-idf/issues/14259
This commit is contained in:
parent
6d79a72d62
commit
4d4d4b8abc
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2017-2022 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2017-2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@ -492,7 +492,7 @@ esp_err_t esp_hidh_dev_report_maps_get(esp_hidh_dev_t *dev, size_t *num_maps, es
|
||||
* */
|
||||
|
||||
/**
|
||||
* `lock_devices()` only protect the devices list, this mutex protect the single deivce instance.
|
||||
* `lock_devices()` only protect the devices list, this mutex protect the single device instance.
|
||||
*/
|
||||
inline void esp_hidh_dev_lock(esp_hidh_dev_t *dev)
|
||||
{
|
||||
@ -611,8 +611,13 @@ esp_hidh_dev_report_t *esp_hidh_dev_get_input_report_by_proto_and_data(esp_hidh_
|
||||
}
|
||||
r = dev->reports;
|
||||
while (r) {
|
||||
if (r->value_len == len - 1 && r->report_id == *data && (r->report_type & ESP_HID_REPORT_TYPE_INPUT) &&
|
||||
r->protocol_mode == protocol_mode) {
|
||||
/**
|
||||
* @note For some HID device, the input report length may exceed the length which is declared in HID
|
||||
* descriptor, like Logitech K380 keyboard. So loose the check condition from `r->value_len == len - 1` to
|
||||
* `r->value_len <= len - 1`.
|
||||
*/
|
||||
if (r->value_len <= len - 1 && r->report_id == *data && (r->report_type & ESP_HID_REPORT_TYPE_INPUT) &&
|
||||
r->protocol_mode == protocol_mode) {
|
||||
*has_report_id = true;
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user