10000 improve usb hid · sparkfun/circuitpython@fd661c1 · GitHub
[go: up one dir, main page]

Skip to content

Commit fd661c1

Browse files
committed
improve usb hid
1 parent 27b2a9f commit fd661c1

File tree

3 files changed

+55
-24
lines changed

3 files changed

+55
-24
lines changed

ports/nrf/common-hal/usb_hid/Device.h

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,33 @@
3636
extern "C" {
3737
#endif
3838

39-
#define USB_HID_NUM_DEVICES 2
39+
// 1 to enable device, 0 to disable
40+
#define USB_HID_DEVICE_KEYBOARD 1
41+
#define USB_HID_DEVICE_MOUSE 1
42+
#define USB_HID_DEVICE_CONSUMER 0
43+
#define USB_HID_DEVICE_GAMEPAD 0
4044

41-
#define USB_HID_REPORT_ID_KEYBOARD 1
42-
#define USB_HID_REPORT_ID_MOUSE 2
43-
//#define USB_HID_REPORT_ID_CONSUMER 3
45+
enum {
46+
USB_HID_REPORT_ID_UNUSED = 0,
47+
48+
#if USB_HID_DEVICE_KEYBOARD
49+
USB_HID_REPORT_ID_KEYBOARD,
50+
#endif
51+
52+
#if USB_HID_DEVICE_MOUSE
53+
USB_HID_REPORT_ID_MOUSE,
54+
#endif
55+
56+
#if USB_HID_DEVICE_CONSUMER
57+
USB_HID_REPORT_ID_CONSUMER,
58+
#endif
59+
60+
#if USB_HID_DEVICE_GAMEPAD
61+
USB_HID_REPORT_ID_GAMEPAD,
62+
#endif
63+
};
64+
65+
#define USB_HID_NUM_DEVICES (USB_HID_DEVICE_KEYBOARD + USB_HID_DEVICE_MOUSE + USB_HID_DEVICE_CONSUMER + USB_HID_DEVICE_GAMEPAD )
4466

4567
typedef struct {
4668
mp_obj_base_t base;

ports/nrf/common-hal/usb_hid/__init__.c

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -31,53 +31,58 @@
3131
#include "common-hal/usb_hid/Device.h"
3232
#include "shared-bindings/usb_hid/Device.h"
3333

34-
#define USB_HID_REPORT_LENGTH_KEYBOARD 8
35-
#define USB_HID_REPORT_LENGTH_MOUSE 4
34+
#define USB_HID_REPORT_LENGTH_KEYBOARD 8
35+
#define USB_HID_REPORT_LENGTH_MOUSE 4
36+
#define USB_HID_REPORT_LENGTH_CONSUMER 2
3637

37-
// Buffers are report size + 1 to include the Report ID prefix byte if needed.
38-
#ifdef USB_HID_REPORT_ID_KEYBOARD
39-
static uint8_t keyboard_report_buffer[USB_HID_REPORT_LENGTH_KEYBOARD + 1];
38+
#if USB_HID_DEVICE_KEYBOARD
39+
static uint8_t keyboard_report_buffer[USB_HID_REPORT_LENGTH_KEYBOARD];
4040
#endif
41-
#ifdef USB_HID_REPORT_ID_MOUSE
42-
static uint8_t mouse_report_buffer[USB_HID_REPORT_LENGTH_MOUSE + 1];
41+
42+
#if USB_HID_DEVICE_MOUSE
43+
static uint8_t mouse_report_buffer[USB_HID_REPORT_LENGTH_MOUSE];
4344
#endif
44-
#ifdef USB_HID_REPORT_ID_CONSUMER
45-
static uint8_t consumer_report_buffer[USB_HID_REPORT_LENGTH_CONSUMER + 1];
45+
46+
#if USB_HID_DEVICE_CONSUMER
47+
static uint8_t consumer_report_buffer[USB_HID_REPORT_LENGTH_CONSUMER];
4648
#endif
49+
4750
#ifdef USB_HID_REPORT_ID_SYS_CONTROL
48-
static uint8_t sys_control_report_buffer[USB_HID_REPORT_LENGTH_SYS_CONTROL + 1];
51+
static uint8_t sys_control_report_buffer[USB_HID_REPORT_LENGTH_SYS_CONTROL];
4952
#endif
53+
5054
#ifdef USB_HID_REPORT_ID_GAMEPAD
51-
static uint8_t gamepad_report_buffer[USB_HID_REPORT_LENGTH_GAMEPAD + 1];
55+
static uint8_t gamepad_report_buffer[USB_HID_REPORT_LENGTH_GAMEPAD];
5256
#endif
57+
5358
#ifdef USB_HID_REPORT_ID_DIGITIZER
54-
static uint8_t digitizer_report_buffer[USB_HID_REPORT_LENGTH_DIGITIZER + 1];
59+
static uint8_t digitizer_report_buffer[USB_HID_REPORT_LENGTH_DIGITIZER];
5560
#endif
5661

5762
usb_hid_device_obj_t usb_hid_devices[USB_HID_NUM_DEVICES] = {
58-
#ifdef USB_HID_REPORT_ID_KEYBOARD
63+
#if USB_HID_DEVICE_KEYBOARD
5964
{
6065
.base = { .type = &usb_hid_device_type },
6166
.report_buffer = keyboard_report_buffer,
62-
// .endpoint = USB_HID_ENDPOINT_IN,
6367
.report_id = USB_HID_REPORT_ID_KEYBOARD,
6468
.report_length = USB_HID_REPORT_LENGTH_KEYBOARD,
6569
.usage_page = 0x01,
6670
.usage = 0x06,
6771
},
6872
#endif
69-
#ifdef USB_HID_REPORT_ID_MOUSE
73+
74+
#if USB_HID_DEVICE_MOUSE
7075
{
7176
.base = { .type = &usb_hid_device_type },
7277
.report_buffer = mouse_report_buffer,
73-
// .endpoint = USB_HID_ENDPOINT_IN,
7478
.report_id = USB_HID_REPORT_ID_MOUSE,
7579
.report_length = USB_HID_REPORT_LENGTH_MOUSE,
7680
.usage_page = 0x01,
7781
.usage = 0x02,
7882
},
7983
#endif
80-
#ifdef USB_HID_REPORT_ID_CONSUMER
84+
85+
#if USB_HID_DEVICE_CONSUMER
8186
{
8287
.base = { .type = &usb_hid_device_type },
8388
.report_buffer = consumer_report_buffer,
@@ -88,6 +93,7 @@ usb_hid_device_obj_t usb_hid_devices[USB_HID_NUM_DEVICES] = {
8893
.usage = 0x01,
8994
},
9095
#endif
96+
9197
#ifdef USB_HID_REPORT_ID_SYS_CONTROL
9298
{
9399
.base = { .type = &usb_hid_device_type },

ports/nrf/usb/usb_desc.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,14 +141,17 @@ tusb_desc_device_t const usb_desc_dev =
141141

142142
uint8_t const usb_desc_hid_generic_report[] =
143143
{
144-
#if USB_HID_REPORT_ID_KEYBOARD
144+
#if USB_HID_DEVICE_KEYBOARD
145145
HID_REPORT_DESC_KEYBOARD( HID_REPORT_ID(USB_HID_REPORT_ID_KEYBOARD), ),
146146
#endif
147147

148-
#if USB_HID_REPORT_ID_MOUSE
149-
HID_REPORT_DESC_MOUSE( HID_REPORT_ID(USB_HID_REPORT_ID_MOUSE), )
148+
#if USB_HID_DEVICE_MOUSE
149+
HID_REPORT_DESC_MOUSE( HID_REPORT_ID(USB_HID_REPORT_ID_MOUSE), ),
150150
#endif
151151

152+
#if USB_HID_DEVICE_CONSUMER
153+
HID_REPORT_DESC_MOUSE( HID_REPORT_ID(USB_HID_REPORT_ID_CONSUMER), )
154+
#endif
152155
};
153156

154157

0 commit comments

Comments
 (0)
0