add usb hid syscontrol
This commit is contained in:
parent
ef58adacd3
commit
2c85f42330
@ -37,10 +37,12 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// 1 to enable device, 0 to disable
|
// 1 to enable device, 0 to disable
|
||||||
#define USB_HID_DEVICE_KEYBOARD 1
|
#define USB_HID_DEVICE_KEYBOARD 1
|
||||||
#define USB_HID_DEVICE_MOUSE 1
|
#define USB_HID_DEVICE_MOUSE 1
|
||||||
#define USB_HID_DEVICE_CONSUMER 1
|
#define USB_HID_DEVICE_CONSUMER 1
|
||||||
#define USB_HID_DEVICE_GAMEPAD 0
|
#define USB_HID_DEVICE_SYS_CONTROL 1
|
||||||
|
#define USB_HID_DEVICE_GAMEPAD 0
|
||||||
|
#define USB_HID_DEVICE_DIGITIZER 0
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
USB_HID_REPORT_ID_UNUSED = 0,
|
USB_HID_REPORT_ID_UNUSED = 0,
|
||||||
@ -57,12 +59,21 @@ enum {
|
|||||||
USB_HID_REPORT_ID_CONSUMER,
|
USB_HID_REPORT_ID_CONSUMER,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if USB_HID_DEVICE_SYS_CONTROL
|
||||||
|
USB_HID_REPORT_ID_SYS_CONTROL,
|
||||||
|
#endif
|
||||||
|
|
||||||
#if USB_HID_DEVICE_GAMEPAD
|
#if USB_HID_DEVICE_GAMEPAD
|
||||||
USB_HID_REPORT_ID_GAMEPAD,
|
USB_HID_REPORT_ID_GAMEPAD,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if USB_HID_DEVICE_DIGITIZER
|
||||||
|
USB_HID_REPORT_ID_DIGITIZER,
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#define USB_HID_NUM_DEVICES (USB_HID_DEVICE_KEYBOARD + USB_HID_DEVICE_MOUSE + USB_HID_DEVICE_CONSUMER + USB_HID_DEVICE_GAMEPAD )
|
#define USB_HID_NUM_DEVICES (USB_HID_DEVICE_KEYBOARD + USB_HID_DEVICE_MOUSE + USB_HID_DEVICE_CONSUMER + \
|
||||||
|
USB_HID_REPORT_ID_SYS_CONTROL + USB_HID_DEVICE_GAMEPAD + USB_HID_DEVICE_DIGITIZER )
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
mp_obj_base_t base;
|
mp_obj_base_t base;
|
||||||
|
@ -32,9 +32,10 @@
|
|||||||
#include "shared-bindings/usb_hid/Device.h"
|
#include "shared-bindings/usb_hid/Device.h"
|
||||||
#include "tusb.h"
|
#include "tusb.h"
|
||||||
|
|
||||||
#define USB_HID_REPORT_LENGTH_KEYBOARD 8
|
#define USB_HID_REPORT_LENGTH_KEYBOARD 8
|
||||||
#define USB_HID_REPORT_LENGTH_MOUSE 4
|
#define USB_HID_REPORT_LENGTH_MOUSE 4
|
||||||
#define USB_HID_REPORT_LENGTH_CONSUMER 2
|
#define USB_HID_REPORT_LENGTH_CONSUMER 2
|
||||||
|
#define USB_HID_REPORT_LENGTH_SYS_CONTROL 1
|
||||||
|
|
||||||
#if USB_HID_DEVICE_KEYBOARD
|
#if USB_HID_DEVICE_KEYBOARD
|
||||||
static uint8_t keyboard_report_buffer[USB_HID_REPORT_LENGTH_KEYBOARD];
|
static uint8_t keyboard_report_buffer[USB_HID_REPORT_LENGTH_KEYBOARD];
|
||||||
@ -48,19 +49,19 @@ static uint8_t mouse_report_buffer[USB_HID_REPORT_LENGTH_MOUSE];
|
|||||||
static uint8_t consumer_report_buffer[USB_HID_REPORT_LENGTH_CONSUMER];
|
static uint8_t consumer_report_buffer[USB_HID_REPORT_LENGTH_CONSUMER];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USB_HID_REPORT_ID_SYS_CONTROL
|
#if USB_HID_DEVICE_SYS_CONTROL
|
||||||
static uint8_t sys_control_report_buffer[USB_HID_REPORT_LENGTH_SYS_CONTROL];
|
static uint8_t sys_control_report_buffer[USB_HID_REPORT_LENGTH_SYS_CONTROL];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USB_HID_REPORT_ID_GAMEPAD
|
#if USB_HID_DEVICE_GAMEPAD
|
||||||
static uint8_t gamepad_report_buffer[USB_HID_REPORT_LENGTH_GAMEPAD];
|
static uint8_t gamepad_report_buffer[USB_HID_REPORT_LENGTH_GAMEPAD];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USB_HID_REPORT_ID_DIGITIZER
|
#if USB_HID_DEVICE_DIGITIZER
|
||||||
static uint8_t digitizer_report_buffer[USB_HID_REPORT_LENGTH_DIGITIZER];
|
static uint8_t digitizer_report_buffer[USB_HID_REPORT_LENGTH_DIGITIZER];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
usb_hid_device_obj_t usb_hid_devices[USB_HID_NUM_DEVICES] = {
|
usb_hid_device_obj_t usb_hid_devices[] = {
|
||||||
#if USB_HID_DEVICE_KEYBOARD
|
#if USB_HID_DEVICE_KEYBOARD
|
||||||
{
|
{
|
||||||
.base = { .type = &usb_hid_device_type },
|
.base = { .type = &usb_hid_device_type },
|
||||||
@ -94,31 +95,32 @@ usb_hid_device_obj_t usb_hid_devices[USB_HID_NUM_DEVICES] = {
|
|||||||
},
|
},
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USB_HID_REPORT_ID_SYS_CONTROL
|
#if USB_HID_DEVICE_SYS_CONTROL
|
||||||
{
|
{
|
||||||
.base = { .type = &usb_hid_device_type },
|
.base = { .type = &usb_hid_device_type },
|
||||||
.report_buffer = sys_control_report_buffer,
|
.report_buffer = sys_control_report_buffer,
|
||||||
.report_id = USB_HID_REPORT_ID_SYS_CONTROL,
|
.report_id = USB_HID_REPORT_ID_SYS_CONTROL,
|
||||||
.report_length = USB_HID_REPORT_LENGTH_SYS_CONTROL,
|
.report_length = USB_HID_REPORT_LENGTH_SYS_CONTROL,
|
||||||
.usage_page = 0x01,
|
.usage_page = HID_USAGE_PAGE_DESKTOP,
|
||||||
.usage = 0x80,
|
.usage = HID_USAGE_DESKTOP_SYSTEM_CONTROL,
|
||||||
},
|
},
|
||||||
#endif
|
#endif
|
||||||
#ifdef USB_HID_REPORT_ID_GAMEPAD
|
|
||||||
|
#if USB_HID_DEVICE_GAMEPAD
|
||||||
{
|
{
|
||||||
.base = { .type = &usb_hid_device_type },
|
.base = { .type = &usb_hid_device_type },
|
||||||
.report_buffer = gamepad_report_buffer,
|
.report_buffer = gamepad_report_buffer,
|
||||||
.report_id = USB_HID_REPORT_ID_GAMEPAD,
|
.report_id = USB_HID_REPORT_ID_GAMEPAD,
|
||||||
.report_length = USB_HID_REPORT_LENGTH_GAMEPAD,
|
.report_length = USB_HID_REPORT_LENGTH_GAMEPAD,
|
||||||
.usage_page = 0x01,
|
.usage_page = HID_USAGE_PAGE_DESKTOP,
|
||||||
.usage = 0x05,
|
.usage = HID_USAGE_DESKTOP_GAMEPAD,
|
||||||
},
|
},
|
||||||
#endif
|
#endif
|
||||||
#ifdef USB_HID_REPORT_ID_DIGITIZER
|
|
||||||
|
#if USB_HID_DEVICE_DIGITIZER
|
||||||
{
|
{
|
||||||
.base = { .type = &usb_hid_device_type },
|
.base = { .type = &usb_hid_device_type },
|
||||||
.report_buffer = digitizer_report_buffer,
|
.report_buffer = digitizer_report_buffer,
|
||||||
.endpoint = USB_HID_ENDPOINT_IN,
|
|
||||||
.report_id = USB_HID_REPORT_ID_DIGITIZER,
|
.report_id = USB_HID_REPORT_ID_DIGITIZER,
|
||||||
.report_length = USB_HID_REPORT_LENGTH_DIGITIZER,
|
.report_length = USB_HID_REPORT_LENGTH_DIGITIZER,
|
||||||
.usage_page = 0x0D,
|
.usage_page = 0x0D,
|
||||||
|
@ -136,9 +136,6 @@ tusb_desc_device_t const usb_desc_dev =
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// HID Report Descriptor
|
// HID Report Descriptor
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// TODO remove const for dynamic descriptors
|
|
||||||
|
|
||||||
|
|
||||||
uint8_t const usb_desc_hid_generic_report[] =
|
uint8_t const usb_desc_hid_generic_report[] =
|
||||||
{
|
{
|
||||||
#if USB_HID_DEVICE_KEYBOARD
|
#if USB_HID_DEVICE_KEYBOARD
|
||||||
@ -150,15 +147,18 @@ uint8_t const usb_desc_hid_generic_report[] =
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if USB_HID_DEVICE_CONSUMER
|
#if USB_HID_DEVICE_CONSUMER
|
||||||
HID_REPORT_DESC_CONSUMER( HID_REPORT_ID(USB_HID_REPORT_ID_CONSUMER), )
|
HID_REPORT_DESC_CONSUMER( HID_REPORT_ID(USB_HID_REPORT_ID_CONSUMER), ),
|
||||||
#endif
|
#endif
|
||||||
};
|
|
||||||
|
|
||||||
|
#if USB_HID_DEVICE_SYS_CONTROL
|
||||||
|
HID_REPORT_DESC_SYSTEM_CONTROL( HID_REPORT_ID(USB_HID_REPORT_ID_SYS_CONTROL ), ),
|
||||||
|
#endif
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// Configuration Descriptor
|
// Configuration Descriptor
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// TODO remove const for dynamic descriptors
|
|
||||||
usb_desc_cfg_t const usb_desc_cfg =
|
usb_desc_cfg_t const usb_desc_cfg =
|
||||||
{
|
{
|
||||||
.config =
|
.config =
|
||||||
|
Loading…
x
Reference in New Issue
Block a user