Skip to content

Commit 4b0f80f

Browse files
committed
Enable support for extended HID usage page and usage. Related to Support HID Usage Pages and Usages >255 #5529
1 parent 87e59a4 commit 4b0f80f

File tree

5 files changed

+14
-12
lines changed

5 files changed

+14
-12
lines changed

mpy-cross/mpy-cross.mk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ INC += -I$(BUILD)
2929
# compiler settings
3030
CWARN = -Wall -Werror
3131
CWARN += -Wpointer-arith -Wuninitialized
32+
# Disable errors for array-bounds warnings on "sp[-MP_OBJ_ITER_BUF_NSLOTS + 2]" access
33+
CWARN += -Wno-array-bounds
3234
CFLAGS = $(INC) $(CWARN) -std=gnu99 $(CFLAGS_MOD) $(COPT) $(CFLAGS_EXTRA)
3335
CFLAGS += -fdata-sections -ffunction-sections -fno-asynchronous-unwind-tables
3436

shared-bindings/usb_hid/Device.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,12 @@ STATIC mp_obj_t usb_hid_device_make_new(const mp_obj_type_t *type, size_t n_args
103103
mp_obj_t descriptor = mp_obj_new_bytearray(descriptor_bufinfo.len, descriptor_bufinfo.buf);
104104

105105
const mp_int_t usage_page_arg = args[ARG_usage_page].u_int;
106-
mp_arg_validate_int_range(usage_page_arg, 1, 255, MP_QSTR_usage_page);
107-
const uint8_t usage_page = usage_page_arg;
106+
mp_arg_validate_int_range(usage_page_arg, 1, 0xFFFF, MP_QSTR_usage_page);
107+
const uint16_t usage_page = usage_page_arg;
108108

109109
const mp_int_t usage_arg = args[ARG_usage].u_int;
110-
mp_arg_validate_int_range(usage_arg, 1, 255, MP_QSTR_usage_page);
111-
const uint8_t usage = usage_arg;
110+
mp_arg_validate_int_range(usage_arg, 1, 0xFFFF, MP_QSTR_usage_page);
111+
const uint16_t usage = usage_arg;
112112

113113
mp_obj_t report_ids = args[ARG_report_ids].u_obj;
114114
mp_obj_t in_report_lengths = args[ARG_in_report_lengths].u_obj;

shared-bindings/usb_hid/Device.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@
3333

3434
extern const mp_obj_type_t usb_hid_device_type;
3535

36-
void common_hal_usb_hid_device_construct(usb_hid_device_obj_t *self, mp_obj_t report_descriptor, uint8_t usage_page, uint8_t usage, size_t report_ids_count,uint8_t *report_ids, uint8_t *in_report_lengths, uint8_t *out_report_lengths);
36+
void common_hal_usb_hid_device_construct(usb_hid_device_obj_t *self, mp_obj_t report_descriptor, uint16_t usage_page, uint16_t usage, size_t report_ids_count,uint8_t *report_ids, uint8_t *in_report_lengths, uint8_t *out_report_lengths);
3737
void common_hal_usb_hid_device_send_report(usb_hid_device_obj_t *self, uint8_t *report, uint8_t len, uint8_t report_id);
3838
mp_obj_t common_hal_usb_hid_device_get_last_received_report(usb_hid_device_obj_t *self, uint8_t report_id);
39-
uint8_t common_hal_usb_hid_device_get_usage_page(usb_hid_device_obj_t *self);
40-
uint8_t common_hal_usb_hid_device_get_usage(usb_hid_device_obj_t *self);
39+
uint16_t common_hal_usb_hid_device_get_usage_page(usb_hid_device_obj_t *self);
40+
uint16_t common_hal_usb_hid_device_get_usage(usb_hid_device_obj_t *self);
4141
uint8_t common_hal_usb_hid_device_validate_report_id(usb_hid_device_obj_t *self, mp_int_t report_id);
4242

4343
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_USB_HID_DEVICE_H

shared-module/usb_hid/Device.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ uint8_t common_hal_usb_hid_device_validate_report_id(usb_hid_device_obj_t *self,
186186
return (uint8_t)report_id_arg;
187187
}
188188

189-
void common_hal_usb_hid_device_construct(usb_hid_device_obj_t *self, mp_obj_t report_descriptor, uint8_t usage_page, uint8_t usage, size_t num_report_ids, uint8_t *report_ids, uint8_t *in_report_lengths, uint8_t *out_report_lengths) {
189+
void common_hal_usb_hid_device_construct(usb_hid_device_obj_t *self, mp_obj_t report_descriptor, uint16_t usage_page, uint16_t usage, size_t num_report_ids, uint8_t *report_ids, uint8_t *in_report_lengths, uint8_t *out_report_lengths) {
190190
if (num_report_ids > CIRCUITPY_USB_HID_MAX_REPORT_IDS_PER_DESCRIPTOR) {
191191
mp_raise_ValueError_varg(translate("More than %d report ids not supported"),
192192
CIRCUITPY_USB_HID_MAX_REPORT_IDS_PER_DESCRIPTOR);
@@ -211,11 +211,11 @@ void common_hal_usb_hid_device_construct(usb_hid_device_obj_t *self, mp_obj_t re
211211
memcpy(self->out_report_lengths, out_report_lengths, num_report_ids);
212212
}
213213

214-
uint8_t common_hal_usb_hid_device_get_usage_page(usb_hid_device_obj_t *self) {
214+
uint16_t common_hal_usb_hid_device_get_usage_page(usb_hid_device_obj_t *self) {
215215
return self->usage_page;
216216
}
217217

218-
uint8_t common_hal_usb_hid_device_get_usage(usb_hid_device_obj_t *self) {
218+
uint16_t common_hal_usb_hid_device_get_usage(usb_hid_device_obj_t *self) {
219219
return self->usage;
220220
}
221221

shared-module/usb_hid/Device.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ typedef struct {
4242
uint8_t report_ids[CIRCUITPY_USB_HID_MAX_REPORT_IDS_PER_DESCRIPTOR];
4343
uint8_t in_report_lengths[CIRCUITPY_USB_HID_MAX_REPORT_IDS_PER_DESCRIPTOR];
4444
uint8_t out_report_lengths[CIRCUITPY_USB_HID_MAX_REPORT_IDS_PER_DESCRIPTOR];
45-
uint8_t usage_page;
46-
uint8_t usage;
45+
uint16_t usage_page;
46+
uint16_t usage;
4747
uint8_t num_report_ids;
4848
} usb_hid_device_obj_t;
4949

0 commit comments

Comments
 (0)