diff options
Diffstat (limited to 'tmk_core/protocol/chibios/usb_endpoints.h')
-rw-r--r-- | tmk_core/protocol/chibios/usb_endpoints.h | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/tmk_core/protocol/chibios/usb_endpoints.h b/tmk_core/protocol/chibios/usb_endpoints.h new file mode 100644 index 0000000000..a4e5ed88fc --- /dev/null +++ b/tmk_core/protocol/chibios/usb_endpoints.h @@ -0,0 +1,137 @@ +// Copyright 2023 Stefan Kerkmann (@KarlK90) +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#include "usb_descriptor.h" + +#if !defined(USB_DEFAULT_BUFFER_CAPACITY) +# define USB_DEFAULT_BUFFER_CAPACITY 4 +#endif + +#if !defined(KEYBOARD_IN_CAPACITY) +# define KEYBOARD_IN_CAPACITY USB_DEFAULT_BUFFER_CAPACITY +#endif +#if !defined(SHARED_IN_CAPACITY) +# define SHARED_IN_CAPACITY USB_DEFAULT_BUFFER_CAPACITY +#endif +#if !defined(MOUSE_IN_CAPACITY) +# define MOUSE_IN_CAPACITY USB_DEFAULT_BUFFER_CAPACITY +#endif + +#if !defined(JOYSTICK_IN_CAPACITY) +# define JOYSTICK_IN_CAPACITY USB_DEFAULT_BUFFER_CAPACITY +#endif + +#if !defined(DIGITIZER_IN_CAPACITY) +# define DIGITIZER_IN_CAPACITY USB_DEFAULT_BUFFER_CAPACITY +#endif + +#if !defined(CONSOLE_IN_CAPACITY) +# define CONSOLE_IN_CAPACITY USB_DEFAULT_BUFFER_CAPACITY +#endif + +#if !defined(CONSOLE_OUT_CAPACITY) +# define CONSOLE_OUT_CAPACITY USB_DEFAULT_BUFFER_CAPACITY +#endif + +#if !defined(RAW_IN_CAPACITY) +# define RAW_IN_CAPACITY USB_DEFAULT_BUFFER_CAPACITY +#endif + +#if !defined(RAW_OUT_CAPACITY) +# define RAW_OUT_CAPACITY USB_DEFAULT_BUFFER_CAPACITY +#endif + +#if !defined(MIDI_STREAM_IN_CAPACITY) +# define MIDI_STREAM_IN_CAPACITY USB_DEFAULT_BUFFER_CAPACITY +#endif + +#if !defined(MIDI_STREAM_OUT_CAPACITY) +# define MIDI_STREAM_OUT_CAPACITY USB_DEFAULT_BUFFER_CAPACITY +#endif + +#if !defined(CDC_IN_CAPACITY) +# define CDC_IN_CAPACITY USB_DEFAULT_BUFFER_CAPACITY +#endif + +#if !defined(CDC_OUT_CAPACITY) +# define CDC_OUT_CAPACITY USB_DEFAULT_BUFFER_CAPACITY +#endif + +#define CDC_SIGNALING_DUMMY_CAPACITY 1 + +typedef enum { +#if defined(SHARED_EP_ENABLE) + USB_ENDPOINT_IN_SHARED, +#endif + +#if !defined(KEYBOARD_SHARED_EP) + USB_ENDPOINT_IN_KEYBOARD, +#endif + +#if defined(MOUSE_ENABLE) && !defined(MOUSE_SHARED_EP) + USB_ENDPOINT_IN_MOUSE, +#endif + +#if defined(JOYSTICK_ENABLE) && !defined(JOYSTICK_SHARED_EP) + USB_ENDPOINT_IN_JOYSTICK, +#endif + +#if defined(DIGITIZER_ENABLE) && !defined(DIGITIZER_SHARED_EP) + USB_ENDPOINT_IN_DIGITIZER, +#endif + +#if defined(CONSOLE_ENABLE) + USB_ENDPOINT_IN_CONSOLE, +#endif + +#if defined(RAW_ENABLE) + USB_ENDPOINT_IN_RAW, +#endif + +#if defined(MIDI_ENABLE) + USB_ENDPOINT_IN_MIDI, +#endif + +#if defined(VIRTSER_ENABLE) + USB_ENDPOINT_IN_CDC_DATA, + USB_ENDPOINT_IN_CDC_SIGNALING, +#endif + USB_ENDPOINT_IN_COUNT, +/* All non shared endpoints have to be consequtive numbers starting from 0, so + * that they can be used as array indices. The shared endpoints all point to + * the same endpoint so they have to be defined last to not reset the enum + * counter. */ +#if defined(SHARED_EP_ENABLE) +# if defined(KEYBOARD_SHARED_EP) + USB_ENDPOINT_IN_KEYBOARD = USB_ENDPOINT_IN_SHARED, +# endif +# if defined(MOUSE_SHARED_EP) + USB_ENDPOINT_IN_MOUSE = USB_ENDPOINT_IN_SHARED, +# endif +# if defined(JOYSTICK_SHARED_EP) + USB_ENDPOINT_IN_JOYSTICK = USB_ENDPOINT_IN_SHARED, +# endif +# if defined(DIGITIZER_SHARED_EP) + USB_ENDPOINT_IN_DIGITIZER = USB_ENDPOINT_IN_SHARED, +# endif +#endif +} usb_endpoint_in_lut_t; + +#define IS_VALID_USB_ENDPOINT_IN_LUT(i) ((i) >= 0 && (i) < USB_ENDPOINT_IN_COUNT) + +usb_endpoint_in_lut_t usb_endpoint_interface_lut[TOTAL_INTERFACES]; + +typedef enum { +#if defined(RAW_ENABLE) + USB_ENDPOINT_OUT_RAW, +#endif +#if defined(MIDI_ENABLE) + USB_ENDPOINT_OUT_MIDI, +#endif +#if defined(VIRTSER_ENABLE) + USB_ENDPOINT_OUT_CDC_DATA, +#endif + USB_ENDPOINT_OUT_COUNT, +} usb_endpoint_out_lut_t; |