138 lines
3.4 KiB
C
138 lines
3.4 KiB
C
|
// 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;
|