aboutsummaryrefslogtreecommitdiff
path: root/tmk_core/protocol/chibios/usb_endpoints.h
blob: a4e5ed88fce3deee5c0518d96536b588bef40010 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
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;