aboutsummaryrefslogtreecommitdiff
path: root/tmk_core
diff options
context:
space:
mode:
authorRyan <fauxpark@gmail.com>2020-04-21 08:38:34 +1000
committerGitHub <noreply@github.com>2020-04-20 15:38:34 -0700
commit99f7fe6bd4ab7bc332fcbe35ef741a4142a73b1f (patch)
tree53b41f59ccaef201012b619ca49393e4429ee3f5 /tmk_core
parentd0c3a4c8d58c1b8c60426ea2f1572fe1fe3bcd01 (diff)
downloadqmk_firmware-99f7fe6bd4ab7bc332fcbe35ef741a4142a73b1f.tar.gz
qmk_firmware-99f7fe6bd4ab7bc332fcbe35ef741a4142a73b1f.zip
Clean up ATSAM ifdefs (#8808)
Diffstat (limited to 'tmk_core')
-rw-r--r--tmk_core/protocol/arm_atsam/usb/conf_usb.h20
-rw-r--r--tmk_core/protocol/arm_atsam/usb/main_usb.c15
-rw-r--r--tmk_core/protocol/arm_atsam/usb/udi_cdc.c2
-rw-r--r--tmk_core/protocol/arm_atsam/usb/udi_cdc.h6
-rw-r--r--tmk_core/protocol/arm_atsam/usb/udi_device_conf.h479
-rw-r--r--tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.c24
-rw-r--r--tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.h22
-rw-r--r--tmk_core/protocol/arm_atsam/usb/udi_hid_kbd_desc.c28
-rw-r--r--tmk_core/protocol/arm_atsam/usb/usb_main.h22
-rw-r--r--tmk_core/protocol/arm_atsam/usb/usb_protocol_cdc.h2
10 files changed, 418 insertions, 202 deletions
diff --git a/tmk_core/protocol/arm_atsam/usb/conf_usb.h b/tmk_core/protocol/arm_atsam/usb/conf_usb.h
index f236427ca..184a2e81d 100644
--- a/tmk_core/protocol/arm_atsam/usb/conf_usb.h
+++ b/tmk_core/protocol/arm_atsam/usb/conf_usb.h
@@ -116,34 +116,32 @@
116 * @{ 116 * @{
117 */ 117 */
118//! Interface callback definition 118//! Interface callback definition
119#ifdef KBD 119#define UDI_HID_KBD_ENABLE_EXT() main_kbd_enable()
120# define UDI_HID_KBD_ENABLE_EXT() main_kbd_enable() 120#define UDI_HID_KBD_DISABLE_EXT() main_kbd_disable()
121# define UDI_HID_KBD_DISABLE_EXT() main_kbd_disable() 121//#define UDI_HID_KBD_CHANGE_LED(value) ui_kbd_led(value)
122//#define UDI_HID_KBD_CHANGE_LED(value) ui_kbd_led(value)
123#endif
124 122
125#ifdef NKRO 123#ifdef NKRO_ENABLE
126# define UDI_HID_NKRO_ENABLE_EXT() main_nkro_enable() 124# define UDI_HID_NKRO_ENABLE_EXT() main_nkro_enable()
127# define UDI_HID_NKRO_DISABLE_EXT() main_nkro_disable() 125# define UDI_HID_NKRO_DISABLE_EXT() main_nkro_disable()
128//#define UDI_HID_NKRO_CHANGE_LED(value) ui_kbd_led(value) 126//#define UDI_HID_NKRO_CHANGE_LED(value) ui_kbd_led(value)
129#endif 127#endif
130 128
131#ifdef EXK 129#ifdef EXTRAKEY_ENABLE
132# define UDI_HID_EXK_ENABLE_EXT() main_exk_enable() 130# define UDI_HID_EXK_ENABLE_EXT() main_exk_enable()
133# define UDI_HID_EXK_DISABLE_EXT() main_exk_disable() 131# define UDI_HID_EXK_DISABLE_EXT() main_exk_disable()
134#endif 132#endif
135 133
136#ifdef CON 134#ifdef CONSOLE_ENABLE
137# define UDI_HID_CON_ENABLE_EXT() main_con_enable() 135# define UDI_HID_CON_ENABLE_EXT() main_con_enable()
138# define UDI_HID_CON_DISABLE_EXT() main_con_disable() 136# define UDI_HID_CON_DISABLE_EXT() main_con_disable()
139#endif 137#endif
140 138
141#ifdef MOU 139#ifdef MOUSE_ENABLE
142# define UDI_HID_MOU_ENABLE_EXT() main_mou_enable() 140# define UDI_HID_MOU_ENABLE_EXT() main_mou_enable()
143# define UDI_HID_MOU_DISABLE_EXT() main_mou_disable() 141# define UDI_HID_MOU_DISABLE_EXT() main_mou_disable()
144#endif 142#endif
145 143
146#ifdef RAW 144#ifdef RAW_ENABLE
147# define UDI_HID_RAW_ENABLE_EXT() main_raw_enable() 145# define UDI_HID_RAW_ENABLE_EXT() main_raw_enable()
148# define UDI_HID_RAW_DISABLE_EXT() main_raw_disable() 146# define UDI_HID_RAW_DISABLE_EXT() main_raw_disable()
149# define UDI_HID_RAW_RECEIVE(buffer, len) main_raw_receive(buffer, len) 147# define UDI_HID_RAW_RECEIVE(buffer, len) main_raw_receive(buffer, len)
diff --git a/tmk_core/protocol/arm_atsam/usb/main_usb.c b/tmk_core/protocol/arm_atsam/usb/main_usb.c
index 3809e1fd0..5fcb9a9c6 100644
--- a/tmk_core/protocol/arm_atsam/usb/main_usb.c
+++ b/tmk_core/protocol/arm_atsam/usb/main_usb.c
@@ -18,7 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
18#include "samd51j18a.h" 18#include "samd51j18a.h"
19#include "conf_usb.h" 19#include "conf_usb.h"
20#include "udd.h" 20#include "udd.h"
21#ifdef RAW 21
22#ifdef RAW_ENABLE
22# include "raw_hid.h" 23# include "raw_hid.h"
23#endif 24#endif
24 25
@@ -34,7 +35,6 @@ void main_remotewakeup_enable(void) { ui_wakeup_enable(); }
34 35
35void main_remotewakeup_disable(void) { ui_wakeup_disable(); } 36void main_remotewakeup_disable(void) { ui_wakeup_disable(); }
36 37
37#ifdef KBD
38volatile bool main_b_kbd_enable = false; 38volatile bool main_b_kbd_enable = false;
39bool main_kbd_enable(void) { 39bool main_kbd_enable(void) {
40 main_b_kbd_enable = true; 40 main_b_kbd_enable = true;
@@ -42,9 +42,8 @@ bool main_kbd_enable(void) {
42} 42}
43 43
44void main_kbd_disable(void) { main_b_kbd_enable = false; } 44void main_kbd_disable(void) { main_b_kbd_enable = false; }
45#endif
46 45
47#ifdef NKRO 46#ifdef NKRO_ENABLE
48volatile bool main_b_nkro_enable = false; 47volatile bool main_b_nkro_enable = false;
49bool main_nkro_enable(void) { 48bool main_nkro_enable(void) {
50 main_b_nkro_enable = true; 49 main_b_nkro_enable = true;
@@ -54,7 +53,7 @@ bool main_nkro_enable(void) {
54void main_nkro_disable(void) { main_b_nkro_enable = false; } 53void main_nkro_disable(void) { main_b_nkro_enable = false; }
55#endif 54#endif
56 55
57#ifdef EXK 56#ifdef EXTRAKEY_ENABLE
58volatile bool main_b_exk_enable = false; 57volatile bool main_b_exk_enable = false;
59bool main_exk_enable(void) { 58bool main_exk_enable(void) {
60 main_b_exk_enable = true; 59 main_b_exk_enable = true;
@@ -64,7 +63,7 @@ bool main_exk_enable(void) {
64void main_exk_disable(void) { main_b_exk_enable = false; } 63void main_exk_disable(void) { main_b_exk_enable = false; }
65#endif 64#endif
66 65
67#ifdef CON 66#ifdef CONSOLE_ENABLE
68volatile bool main_b_con_enable = false; 67volatile bool main_b_con_enable = false;
69bool main_con_enable(void) { 68bool main_con_enable(void) {
70 main_b_con_enable = true; 69 main_b_con_enable = true;
@@ -74,7 +73,7 @@ bool main_con_enable(void) {
74void main_con_disable(void) { main_b_con_enable = false; } 73void main_con_disable(void) { main_b_con_enable = false; }
75#endif 74#endif
76 75
77#ifdef MOU 76#ifdef MOUSE_ENABLE
78volatile bool main_b_mou_enable = false; 77volatile bool main_b_mou_enable = false;
79bool main_mou_enable(void) { 78bool main_mou_enable(void) {
80 main_b_mou_enable = true; 79 main_b_mou_enable = true;
@@ -84,7 +83,7 @@ bool main_mou_enable(void) {
84void main_mou_disable(void) { main_b_mou_enable = false; } 83void main_mou_disable(void) { main_b_mou_enable = false; }
85#endif 84#endif
86 85
87#ifdef RAW 86#ifdef RAW_ENABLE
88volatile bool main_b_raw_enable = false; 87volatile bool main_b_raw_enable = false;
89bool main_raw_enable(void) { 88bool main_raw_enable(void) {
90 main_b_raw_enable = true; 89 main_b_raw_enable = true;
diff --git a/tmk_core/protocol/arm_atsam/usb/udi_cdc.c b/tmk_core/protocol/arm_atsam/usb/udi_cdc.c
index 8271f3b97..27db4017c 100644
--- a/tmk_core/protocol/arm_atsam/usb/udi_cdc.c
+++ b/tmk_core/protocol/arm_atsam/usb/udi_cdc.c
@@ -57,7 +57,7 @@
57#include "stdarg.h" 57#include "stdarg.h"
58#include "tmk_core/protocol/arm_atsam/clks.h" 58#include "tmk_core/protocol/arm_atsam/clks.h"
59 59
60#ifdef CDC 60#ifdef VIRTSER_ENABLE
61 61
62# ifdef UDI_CDC_LOW_RATE 62# ifdef UDI_CDC_LOW_RATE
63# ifdef USB_DEVICE_HS_SUPPORT 63# ifdef USB_DEVICE_HS_SUPPORT
diff --git a/tmk_core/protocol/arm_atsam/usb/udi_cdc.h b/tmk_core/protocol/arm_atsam/usb/udi_cdc.h
index 9135bab54..406023980 100644
--- a/tmk_core/protocol/arm_atsam/usb/udi_cdc.h
+++ b/tmk_core/protocol/arm_atsam/usb/udi_cdc.h
@@ -47,7 +47,7 @@
47#ifndef _UDI_CDC_H_ 47#ifndef _UDI_CDC_H_
48#define _UDI_CDC_H_ 48#define _UDI_CDC_H_
49 49
50#ifdef CDC 50#ifdef VIRTSER_ENABLE
51 51
52# include "conf_usb.h" 52# include "conf_usb.h"
53# include "usb_protocol.h" 53# include "usb_protocol.h"
@@ -346,7 +346,7 @@ typedef struct {
346 char buf[CDC_INBUF_SIZE]; 346 char buf[CDC_INBUF_SIZE];
347} inbuf_t; 347} inbuf_t;
348 348
349#else // CDC 349#else // VIRTSER_ENABLE
350 350
351// keep these to accommodate calls if remaining 351// keep these to accommodate calls if remaining
352# define CDC_PRINTBUF_SIZE 1 352# define CDC_PRINTBUF_SIZE 1
@@ -362,7 +362,7 @@ typedef struct {
362 362
363extern inbuf_t inbuf; 363extern inbuf_t inbuf;
364 364
365#endif // CDC 365#endif // VIRTSER_ENABLE
366 366
367uint32_t CDC_print(char* printbuf); 367uint32_t CDC_print(char* printbuf);
368int CDC_printf(const char* _Format, ...); 368int CDC_printf(const char* _Format, ...);
diff --git a/tmk_core/protocol/arm_atsam/usb/udi_device_conf.h b/tmk_core/protocol/arm_atsam/usb/udi_device_conf.h
index 80556205f..505db47b0 100644
--- a/tmk_core/protocol/arm_atsam/usb/udi_device_conf.h
+++ b/tmk_core/protocol/arm_atsam/usb/udi_device_conf.h
@@ -23,77 +23,36 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
23#include "compiler.h" 23#include "compiler.h"
24#include "usb_protocol_hid.h" 24#include "usb_protocol_hid.h"
25 25
26#define DEVICE_CLASS 0
27#define DEVICE_SUBCLASS 0
28#define DEVICE_PROTOCOL 0
29
30#define KBD
31
32//#define MOUSE_ENABLE //rules.mk
33#ifdef MOUSE_ENABLE
34# define MOU
35#endif
36
37//#define EXTRAKEY_ENABLE //rules.mk
38#ifdef EXTRAKEY_ENABLE
39# define EXK
40#endif
41
42//#define RAW_ENABLE //rules.mk
43#ifdef RAW_ENABLE
44# define RAW
45#endif
46
47//#define CONSOLE_ENABLE //rules.mk
48#ifdef CONSOLE_ENABLE
49# define CON
50#endif
51
52//#define NKRO_ENABLE //rules.mk
53#ifdef NKRO_ENABLE
54# define NKRO
55#endif
56
57//#define MIDI_ENABLE //deferred implementation
58//#ifdef MIDI_ENABLE
59//#define MIDI
60//#endif
61
62//#define VIRTSER_ENABLE //rules.mk
63#ifdef VIRTSER_ENABLE 26#ifdef VIRTSER_ENABLE
64# define CDC
65// because CDC uses IAD (interface association descriptor 27// because CDC uses IAD (interface association descriptor
66// per USB Interface Association Descriptor Device Class Code and Use Model 7/23/2003 Rev 1.0) 28// per USB Interface Association Descriptor Device Class Code and Use Model 7/23/2003 Rev 1.0)
67# undef DEVICE_CLASS
68# define DEVICE_CLASS 0xEF 29# define DEVICE_CLASS 0xEF
69# undef DEVICE_SUBCLASS
70# define DEVICE_SUBCLASS 0x02 30# define DEVICE_SUBCLASS 0x02
71# undef DEVICE_PROTOCOL
72# define DEVICE_PROTOCOL 0x01 31# define DEVICE_PROTOCOL 0x01
32#else
33# define DEVICE_CLASS 0x00
34# define DEVICE_SUBCLASS 0x00
35# define DEVICE_PROTOCOL 0x00
73#endif 36#endif
74 37
75/* number of interfaces */ 38/* number of interfaces */
76#define NEXT_INTERFACE_0 0 39#define NEXT_INTERFACE_0 0
77 40
78#ifdef KBD 41#define KEYBOARD_INTERFACE NEXT_INTERFACE_0
79# define KEYBOARD_INTERFACE NEXT_INTERFACE_0 42#define NEXT_INTERFACE_1 (KEYBOARD_INTERFACE + 1)
80# define NEXT_INTERFACE_1 (KEYBOARD_INTERFACE + 1) 43#define UDI_HID_KBD_IFACE_NUMBER KEYBOARD_INTERFACE
81# define UDI_HID_KBD_IFACE_NUMBER KEYBOARD_INTERFACE
82#else
83# define NEXT_INTERFACE_1 NEXT_INTERFACE_0
84#endif
85 44
86// It is important that the Raw HID interface is at a constant 45// It is important that the Raw HID interface is at a constant
87// interface number, to support Linux/OSX platforms and chrome.hid 46// interface number, to support Linux/OSX platforms and chrome.hid
88// If Raw HID is enabled, let it be always 1. 47// If Raw HID is enabled, let it be always 1.
89#ifdef RAW 48#ifdef RAW_ENABLE
90# define RAW_INTERFACE NEXT_INTERFACE_1 49# define RAW_INTERFACE NEXT_INTERFACE_1
91# define NEXT_INTERFACE_2 (RAW_INTERFACE + 1) 50# define NEXT_INTERFACE_2 (RAW_INTERFACE + 1)
92#else 51#else
93# define NEXT_INTERFACE_2 NEXT_INTERFACE_1 52# define NEXT_INTERFACE_2 NEXT_INTERFACE_1
94#endif 53#endif
95 54
96#ifdef MOU 55#ifdef MOUSE_ENABLE
97# define MOUSE_INTERFACE NEXT_INTERFACE_2 56# define MOUSE_INTERFACE NEXT_INTERFACE_2
98# define UDI_HID_MOU_IFACE_NUMBER MOUSE_INTERFACE 57# define UDI_HID_MOU_IFACE_NUMBER MOUSE_INTERFACE
99# define NEXT_INTERFACE_3 (MOUSE_INTERFACE + 1) 58# define NEXT_INTERFACE_3 (MOUSE_INTERFACE + 1)
@@ -101,7 +60,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
101# define NEXT_INTERFACE_3 NEXT_INTERFACE_2 60# define NEXT_INTERFACE_3 NEXT_INTERFACE_2
102#endif 61#endif
103 62
104#ifdef EXK 63#ifdef EXTRAKEY_ENABLE
105# define EXTRAKEY_INTERFACE NEXT_INTERFACE_3 64# define EXTRAKEY_INTERFACE NEXT_INTERFACE_3
106# define NEXT_INTERFACE_4 (EXTRAKEY_INTERFACE + 1) 65# define NEXT_INTERFACE_4 (EXTRAKEY_INTERFACE + 1)
107# define UDI_HID_EXK_IFACE_NUMBER EXTRAKEY_INTERFACE 66# define UDI_HID_EXK_IFACE_NUMBER EXTRAKEY_INTERFACE
@@ -109,7 +68,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
109# define NEXT_INTERFACE_4 NEXT_INTERFACE_3 68# define NEXT_INTERFACE_4 NEXT_INTERFACE_3
110#endif 69#endif
111 70
112#ifdef CON 71#ifdef CONSOLE_ENABLE
113# define CON_INTERFACE NEXT_INTERFACE_4 72# define CON_INTERFACE NEXT_INTERFACE_4
114# define NEXT_INTERFACE_5 (CON_INTERFACE + 1) 73# define NEXT_INTERFACE_5 (CON_INTERFACE + 1)
115# define UDI_HID_CON_IFACE_NUMBER CON_INTERFACE 74# define UDI_HID_CON_IFACE_NUMBER CON_INTERFACE
@@ -117,7 +76,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
117# define NEXT_INTERFACE_5 NEXT_INTERFACE_4 76# define NEXT_INTERFACE_5 NEXT_INTERFACE_4
118#endif 77#endif
119 78
120#ifdef NKRO 79#ifdef NKRO_ENABLE
121# define NKRO_INTERFACE NEXT_INTERFACE_5 80# define NKRO_INTERFACE NEXT_INTERFACE_5
122# define NEXT_INTERFACE_6 (NKRO_INTERFACE + 1) 81# define NEXT_INTERFACE_6 (NKRO_INTERFACE + 1)
123# define UDI_HID_NKRO_IFACE_NUMBER NKRO_INTERFACE 82# define UDI_HID_NKRO_IFACE_NUMBER NKRO_INTERFACE
@@ -125,7 +84,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
125# define NEXT_INTERFACE_6 NEXT_INTERFACE_5 84# define NEXT_INTERFACE_6 NEXT_INTERFACE_5
126#endif 85#endif
127 86
128#ifdef MIDI 87#ifdef MIDI_ENABLE
129# define AC_INTERFACE NEXT_INTERFACE_6 88# define AC_INTERFACE NEXT_INTERFACE_6
130# define AS_INTERFACE (AC_INTERFACE + 1) 89# define AS_INTERFACE (AC_INTERFACE + 1)
131# define NEXT_INTERFACE_7 (AS_INTERFACE + 1) 90# define NEXT_INTERFACE_7 (AS_INTERFACE + 1)
@@ -133,7 +92,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
133# define NEXT_INTERFACE_7 NEXT_INTERFACE_6 92# define NEXT_INTERFACE_7 NEXT_INTERFACE_6
134#endif 93#endif
135 94
136#ifdef CDC 95#ifdef VIRTSER_ENABLE
137# define CCI_INTERFACE NEXT_INTERFACE_7 96# define CCI_INTERFACE NEXT_INTERFACE_7
138# define CDI_INTERFACE (CCI_INTERFACE + 1) 97# define CDI_INTERFACE (CCI_INTERFACE + 1)
139# define NEXT_INTERFACE_8 (CDI_INTERFACE + 1) 98# define NEXT_INTERFACE_8 (CDI_INTERFACE + 1)
@@ -155,20 +114,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
155#define NEXT_IN_EPNUM_0 1 114#define NEXT_IN_EPNUM_0 1
156#define NEXT_OUT_EPNUM_0 1 115#define NEXT_OUT_EPNUM_0 1
157 116
158#ifdef KBD 117#define KEYBOARD_IN_EPNUM NEXT_IN_EPNUM_0
159# define KEYBOARD_IN_EPNUM NEXT_IN_EPNUM_0 118#define UDI_HID_KBD_EP_IN KEYBOARD_IN_EPNUM
160# define UDI_HID_KBD_EP_IN KEYBOARD_IN_EPNUM 119#define NEXT_IN_EPNUM_1 (KEYBOARD_IN_EPNUM + 1)
161# define NEXT_IN_EPNUM_1 (KEYBOARD_IN_EPNUM + 1) 120#define UDI_HID_KBD_EP_SIZE KEYBOARD_EPSIZE
162# define UDI_HID_KBD_EP_SIZE KEYBOARD_EPSIZE 121#define KBD_POLLING_INTERVAL 10
163# define KBD_POLLING_INTERVAL 10 122#ifndef UDI_HID_KBD_STRING_ID
164# ifndef UDI_HID_KBD_STRING_ID 123# define UDI_HID_KBD_STRING_ID 0
165# define UDI_HID_KBD_STRING_ID 0
166# endif
167#else
168# define NEXT_IN_EPNUM_1 NEXT_IN_EPNUM_0
169#endif 124#endif
170 125
171#ifdef MOU 126#ifdef MOUSE_ENABLE
172# define MOUSE_IN_EPNUM NEXT_IN_EPNUM_1 127# define MOUSE_IN_EPNUM NEXT_IN_EPNUM_1
173# define NEXT_IN_EPNUM_2 (MOUSE_IN_EPNUM + 1) 128# define NEXT_IN_EPNUM_2 (MOUSE_IN_EPNUM + 1)
174# define UDI_HID_MOU_EP_IN MOUSE_IN_EPNUM 129# define UDI_HID_MOU_EP_IN MOUSE_IN_EPNUM
@@ -181,7 +136,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
181# define NEXT_IN_EPNUM_2 NEXT_IN_EPNUM_1 136# define NEXT_IN_EPNUM_2 NEXT_IN_EPNUM_1
182#endif 137#endif
183 138
184#ifdef EXK 139#ifdef EXTRAKEY_ENABLE
185# define EXTRAKEY_IN_EPNUM NEXT_IN_EPNUM_2 140# define EXTRAKEY_IN_EPNUM NEXT_IN_EPNUM_2
186# define UDI_HID_EXK_EP_IN EXTRAKEY_IN_EPNUM 141# define UDI_HID_EXK_EP_IN EXTRAKEY_IN_EPNUM
187# define NEXT_IN_EPNUM_3 (EXTRAKEY_IN_EPNUM + 1) 142# define NEXT_IN_EPNUM_3 (EXTRAKEY_IN_EPNUM + 1)
@@ -194,7 +149,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
194# define NEXT_IN_EPNUM_3 NEXT_IN_EPNUM_2 149# define NEXT_IN_EPNUM_3 NEXT_IN_EPNUM_2
195#endif 150#endif
196 151
197#ifdef RAW 152#ifdef RAW_ENABLE
198# define RAW_IN_EPNUM NEXT_IN_EPNUM_3 153# define RAW_IN_EPNUM NEXT_IN_EPNUM_3
199# define UDI_HID_RAW_EP_IN RAW_IN_EPNUM 154# define UDI_HID_RAW_EP_IN RAW_IN_EPNUM
200# define NEXT_IN_EPNUM_4 (RAW_IN_EPNUM + 1) 155# define NEXT_IN_EPNUM_4 (RAW_IN_EPNUM + 1)
@@ -210,7 +165,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
210# define NEXT_OUT_EPNUM_1 NEXT_OUT_EPNUM_0 165# define NEXT_OUT_EPNUM_1 NEXT_OUT_EPNUM_0
211#endif 166#endif
212 167
213#ifdef CON 168#ifdef CONSOLE_ENABLE
214# define CON_IN_EPNUM NEXT_IN_EPNUM_4 169# define CON_IN_EPNUM NEXT_IN_EPNUM_4
215# define UDI_HID_CON_EP_IN CON_IN_EPNUM 170# define UDI_HID_CON_EP_IN CON_IN_EPNUM
216# define NEXT_IN_EPNUM_5 (CON_IN_EPNUM + 1) 171# define NEXT_IN_EPNUM_5 (CON_IN_EPNUM + 1)
@@ -226,7 +181,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
226# define NEXT_OUT_EPNUM_2 NEXT_OUT_EPNUM_1 181# define NEXT_OUT_EPNUM_2 NEXT_OUT_EPNUM_1
227#endif 182#endif
228 183
229#ifdef NKRO 184#ifdef NKRO_ENABLE
230# define NKRO_IN_EPNUM NEXT_IN_EPNUM_5 185# define NKRO_IN_EPNUM NEXT_IN_EPNUM_5
231# define UDI_HID_NKRO_EP_IN NKRO_IN_EPNUM 186# define UDI_HID_NKRO_EP_IN NKRO_IN_EPNUM
232# define NEXT_IN_EPNUM_6 (NKRO_IN_EPNUM + 1) 187# define NEXT_IN_EPNUM_6 (NKRO_IN_EPNUM + 1)
@@ -239,7 +194,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
239# define NEXT_IN_EPNUM_6 NEXT_IN_EPNUM_5 194# define NEXT_IN_EPNUM_6 NEXT_IN_EPNUM_5
240#endif 195#endif
241 196
242#ifdef MIDI 197#ifdef MIDI_ENABLE
243# define MIDI_STREAM_IN_EPNUM NEXT_IN_EPNUM_6 198# define MIDI_STREAM_IN_EPNUM NEXT_IN_EPNUM_6
244# define NEXT_IN_EPNUM_7 (MIDI_STREAM_IN_EPNUM + 1) 199# define NEXT_IN_EPNUM_7 (MIDI_STREAM_IN_EPNUM + 1)
245# define MIDI_STREAM_OUT_EPNUM NEXT_OUT_EPNUM_2 200# define MIDI_STREAM_OUT_EPNUM NEXT_OUT_EPNUM_2
@@ -250,7 +205,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
250# define NEXT_OUT_EPNUM_3 NEXT_OUT_EPNUM_2 205# define NEXT_OUT_EPNUM_3 NEXT_OUT_EPNUM_2
251#endif 206#endif
252 207
253#ifdef CDC 208#ifdef VIRTSER_ENABLE
254# define CDC_NOTIFICATION_EPNUM NEXT_IN_EPNUM_7 209# define CDC_NOTIFICATION_EPNUM NEXT_IN_EPNUM_7
255# define CDC_ACM_ENDPOINT CDC_NOTIFICATION_EPNUM 210# define CDC_ACM_ENDPOINT CDC_NOTIFICATION_EPNUM
256# define CDC_TX_ENDPOINT (CDC_NOTIFICATION_EPNUM + 1) 211# define CDC_TX_ENDPOINT (CDC_NOTIFICATION_EPNUM + 1)
@@ -285,8 +240,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
285// ********************************************************************** 240// **********************************************************************
286// KBD Descriptor structure and content 241// KBD Descriptor structure and content
287// ********************************************************************** 242// **********************************************************************
288#ifdef KBD
289
290COMPILER_PACK_SET(1) 243COMPILER_PACK_SET(1)
291 244
292typedef struct { 245typedef struct {
@@ -299,8 +252,40 @@ typedef struct {
299 uint8_t array[59]; 252 uint8_t array[59];
300} udi_hid_kbd_report_desc_t; 253} udi_hid_kbd_report_desc_t;
301 254
302# define UDI_HID_KBD_DESC \ 255// clang-format off
303 { .iface.bLength = sizeof(usb_iface_desc_t), .iface.bDescriptorType = USB_DT_INTERFACE, .iface.bInterfaceNumber = UDI_HID_KBD_IFACE_NUMBER, .iface.bAlternateSetting = 0, .iface.bNumEndpoints = 1, .iface.bInterfaceClass = HID_CLASS, .iface.bInterfaceSubClass = HID_SUB_CLASS_BOOT, .iface.bInterfaceProtocol = HID_PROTOCOL_KEYBOARD, .iface.iInterface = UDI_HID_KBD_STRING_ID, .hid.bLength = sizeof(usb_hid_descriptor_t), .hid.bDescriptorType = USB_DT_HID, .hid.bcdHID = LE16(USB_HID_BDC_V1_11), .hid.bCountryCode = USB_HID_NO_COUNTRY_CODE, .hid.bNumDescriptors = USB_HID_NUM_DESC, .hid.bRDescriptorType = USB_DT_HID_REPORT, .hid.wDescriptorLength = LE16(sizeof(udi_hid_kbd_report_desc_t)), .ep.bLength = sizeof(usb_ep_desc_t), .ep.bDescriptorType = USB_DT_ENDPOINT, .ep.bEndpointAddress = UDI_HID_KBD_EP_IN | USB_EP_DIR_IN, .ep.bmAttributes = USB_EP_TYPE_INTERRUPT, .ep.wMaxPacketSize = LE16(UDI_HID_KBD_EP_SIZE), .ep.bInterval = KBD_POLLING_INTERVAL, } 256
257# define UDI_HID_KBD_DESC { \
258 .iface = { \
259 .bLength = sizeof(usb_iface_desc_t), \
260 .bDescriptorType = USB_DT_INTERFACE, \
261 .bInterfaceNumber = UDI_HID_KBD_IFACE_NUMBER, \
262 .bAlternateSetting = 0, \
263 .bNumEndpoints = 1, \
264 .bInterfaceClass = HID_CLASS, \
265 .bInterfaceSubClass = HID_SUB_CLASS_BOOT, \
266 .bInterfaceProtocol = HID_PROTOCOL_KEYBOARD, \
267 .iInterface = UDI_HID_KBD_STRING_ID, \
268 }, \
269 .hid = { \
270 .bLength = sizeof(usb_hid_descriptor_t), \
271 .bDescriptorType = USB_DT_HID, \
272 .bcdHID = LE16(USB_HID_BDC_V1_11), \
273 .bCountryCode = USB_HID_NO_COUNTRY_CODE, \
274 .bNumDescriptors = USB_HID_NUM_DESC, \
275 .bRDescriptorType = USB_DT_HID_REPORT, \
276 .wDescriptorLength = LE16(sizeof(udi_hid_kbd_report_desc_t)), \
277 }, \
278 .ep = { \
279 .bLength = sizeof(usb_ep_desc_t), \
280 .bDescriptorType = USB_DT_ENDPOINT, \
281 .bEndpointAddress = UDI_HID_KBD_EP_IN | USB_EP_DIR_IN, \
282 .bmAttributes = USB_EP_TYPE_INTERRUPT, \
283 .wMaxPacketSize = LE16(UDI_HID_KBD_EP_SIZE), \
284 .bInterval = KBD_POLLING_INTERVAL \
285 } \
286}
287
288// clang-format on
304 289
305// set report buffer (from host) 290// set report buffer (from host)
306extern uint8_t udi_hid_kbd_report_set; 291extern uint8_t udi_hid_kbd_report_set;
@@ -311,12 +296,10 @@ extern uint8_t udi_hid_kbd_report[UDI_HID_KBD_REPORT_SIZE];
311 296
312COMPILER_PACK_RESET() 297COMPILER_PACK_RESET()
313 298
314#endif // KBD
315
316// ********************************************************************** 299// **********************************************************************
317// EXK Descriptor structure and content 300// EXK Descriptor structure and content
318// ********************************************************************** 301// **********************************************************************
319#ifdef EXK 302#ifdef EXTRAKEY_ENABLE
320 303
321COMPILER_PACK_SET(1) 304COMPILER_PACK_SET(1)
322 305
@@ -330,8 +313,40 @@ typedef struct {
330 uint8_t array[50]; 313 uint8_t array[50];
331} udi_hid_exk_report_desc_t; 314} udi_hid_exk_report_desc_t;
332 315
333# define UDI_HID_EXK_DESC \ 316// clang-format off
334 { .iface.bLength = sizeof(usb_iface_desc_t), .iface.bDescriptorType = USB_DT_INTERFACE, .iface.bInterfaceNumber = UDI_HID_EXK_IFACE_NUMBER, .iface.bAlternateSetting = 0, .iface.bNumEndpoints = 1, .iface.bInterfaceClass = HID_CLASS, .iface.bInterfaceSubClass = HID_SUB_CLASS_BOOT, .iface.bInterfaceProtocol = HID_PROTOCOL_GENERIC, .iface.iInterface = UDI_HID_EXK_STRING_ID, .hid.bLength = sizeof(usb_hid_descriptor_t), .hid.bDescriptorType = USB_DT_HID, .hid.bcdHID = LE16(USB_HID_BDC_V1_11), .hid.bCountryCode = USB_HID_NO_COUNTRY_CODE, .hid.bNumDescriptors = USB_HID_NUM_DESC, .hid.bRDescriptorType = USB_DT_HID_REPORT, .hid.wDescriptorLength = LE16(sizeof(udi_hid_exk_report_desc_t)), .ep.bLength = sizeof(usb_ep_desc_t), .ep.bDescriptorType = USB_DT_ENDPOINT, .ep.bEndpointAddress = UDI_HID_EXK_EP_IN | USB_EP_DIR_IN, .ep.bmAttributes = USB_EP_TYPE_INTERRUPT, .ep.wMaxPacketSize = LE16(UDI_HID_EXK_EP_SIZE), .ep.bInterval = EXTRAKEY_POLLING_INTERVAL, } 317
318# define UDI_HID_EXK_DESC { \
319 .iface = { \
320 .bLength = sizeof(usb_iface_desc_t), \
321 .bDescriptorType = USB_DT_INTERFACE, \
322 .bInterfaceNumber = UDI_HID_EXK_IFACE_NUMBER, \
323 .bAlternateSetting = 0, \
324 .bNumEndpoints = 1, \
325 .bInterfaceClass = HID_CLASS, \
326 .bInterfaceSubClass = HID_SUB_CLASS_BOOT, \
327 .bInterfaceProtocol = HID_PROTOCOL_GENERIC, \
328 .iInterface = UDI_HID_EXK_STRING_ID \
329 }, \
330 .hid = { \
331 .bLength = sizeof(usb_hid_descriptor_t), \
332 .bDescriptorType = USB_DT_HID, \
333 .bcdHID = LE16(USB_HID_BDC_V1_11), \
334 .bCountryCode = USB_HID_NO_COUNTRY_CODE, \
335 .bNumDescriptors = USB_HID_NUM_DESC, \
336 .bRDescriptorType = USB_DT_HID_REPORT, \
337 .wDescriptorLength = LE16(sizeof(udi_hid_exk_report_desc_t)) \
338 }, \
339 .ep = { \
340 .bLength = sizeof(usb_ep_desc_t), \
341 .bDescriptorType = USB_DT_ENDPOINT, \
342 .bEndpointAddress = UDI_HID_EXK_EP_IN | USB_EP_DIR_IN, \
343 .bmAttributes = USB_EP_TYPE_INTERRUPT, \
344 .wMaxPacketSize = LE16(UDI_HID_EXK_EP_SIZE), \
345 .bInterval = EXTRAKEY_POLLING_INTERVAL \
346 } \
347}
348
349// clang-format on
335 350
336// set report buffer (from host) 351// set report buffer (from host)
337extern uint8_t udi_hid_exk_report_set; 352extern uint8_t udi_hid_exk_report_set;
@@ -351,12 +366,12 @@ extern udi_hid_exk_report_t udi_hid_exk_report;
351 366
352COMPILER_PACK_RESET() 367COMPILER_PACK_RESET()
353 368
354#endif // EXK 369#endif // EXTRAKEY_ENABLE
355 370
356// ********************************************************************** 371// **********************************************************************
357// NKRO Descriptor structure and content 372// NKRO Descriptor structure and content
358// ********************************************************************** 373// **********************************************************************
359#ifdef NKRO 374#ifdef NKRO_ENABLE
360 375
361COMPILER_PACK_SET(1) 376COMPILER_PACK_SET(1)
362 377
@@ -370,8 +385,40 @@ typedef struct {
370 uint8_t array[57]; 385 uint8_t array[57];
371} udi_hid_nkro_report_desc_t; 386} udi_hid_nkro_report_desc_t;
372 387
373# define UDI_HID_NKRO_DESC \ 388// clang-format off
374 { .iface.bLength = sizeof(usb_iface_desc_t), .iface.bDescriptorType = USB_DT_INTERFACE, .iface.bInterfaceNumber = UDI_HID_NKRO_IFACE_NUMBER, .iface.bAlternateSetting = 0, .iface.bNumEndpoints = 1, .iface.bInterfaceClass = HID_CLASS, .iface.bInterfaceSubClass = HID_SUB_CLASS_NOBOOT, .iface.bInterfaceProtocol = HID_PROTOCOL_KEYBOARD, .iface.iInterface = UDI_HID_NKRO_STRING_ID, .hid.bLength = sizeof(usb_hid_descriptor_t), .hid.bDescriptorType = USB_DT_HID, .hid.bcdHID = LE16(USB_HID_BDC_V1_11), .hid.bCountryCode = USB_HID_NO_COUNTRY_CODE, .hid.bNumDescriptors = USB_HID_NUM_DESC, .hid.bRDescriptorType = USB_DT_HID_REPORT, .hid.wDescriptorLength = LE16(sizeof(udi_hid_nkro_report_desc_t)), .ep.bLength = sizeof(usb_ep_desc_t), .ep.bDescriptorType = USB_DT_ENDPOINT, .ep.bEndpointAddress = UDI_HID_NKRO_EP_IN | USB_EP_DIR_IN, .ep.bmAttributes = USB_EP_TYPE_INTERRUPT, .ep.wMaxPacketSize = LE16(UDI_HID_NKRO_EP_SIZE), .ep.bInterval = NKRO_POLLING_INTERVAL, } 389
390# define UDI_HID_NKRO_DESC { \
391 .iface = { \
392 .bLength = sizeof(usb_iface_desc_t), \
393 .bDescriptorType = USB_DT_INTERFACE, \
394 .bInterfaceNumber = UDI_HID_NKRO_IFACE_NUMBER, \
395 .bAlternateSetting = 0, \
396 .bNumEndpoints = 1, \
397 .bInterfaceClass = HID_CLASS, \
398 .bInterfaceSubClass = HID_SUB_CLASS_NOBOOT, \
399 .bInterfaceProtocol = HID_PROTOCOL_KEYBOARD, \
400 .iInterface = UDI_HID_NKRO_STRING_ID \
401 }, \
402 .hid = { \
403 .bLength = sizeof(usb_hid_descriptor_t), \
404 .bDescriptorType = USB_DT_HID, \
405 .bcdHID = LE16(USB_HID_BDC_V1_11), \
406 .bCountryCode = USB_HID_NO_COUNTRY_CODE, \
407 .bNumDescriptors = USB_HID_NUM_DESC, \
408 .bRDescriptorType = USB_DT_HID_REPORT, \
409 .wDescriptorLength = LE16(sizeof(udi_hid_nkro_report_desc_t)) \
410 }, \
411 .ep = { \
412 .bLength = sizeof(usb_ep_desc_t), \
413 .bDescriptorType = USB_DT_ENDPOINT, \
414 .bEndpointAddress = UDI_HID_NKRO_EP_IN | USB_EP_DIR_IN, \
415 .bmAttributes = USB_EP_TYPE_INTERRUPT, \
416 .wMaxPacketSize = LE16(UDI_HID_NKRO_EP_SIZE), \
417 .bInterval = NKRO_POLLING_INTERVAL \
418 } \
419}
420
421// clang-format on
375 422
376// set report buffer 423// set report buffer
377extern uint8_t udi_hid_nkro_report_set; 424extern uint8_t udi_hid_nkro_report_set;
@@ -382,12 +429,12 @@ extern uint8_t udi_hid_nkro_report[UDI_HID_NKRO_REPORT_SIZE];
382 429
383COMPILER_PACK_RESET() 430COMPILER_PACK_RESET()
384 431
385#endif // NKRO 432#endif // NKRO_ENABLE
386 433
387// ********************************************************************** 434// **********************************************************************
388// MOU Descriptor structure and content 435// MOU Descriptor structure and content
389// ********************************************************************** 436// **********************************************************************
390#ifdef MOU 437#ifdef MOUSE_ENABLE
391 438
392COMPILER_PACK_SET(1) 439COMPILER_PACK_SET(1)
393 440
@@ -401,10 +448,40 @@ typedef struct {
401 uint8_t array[77]; // MOU PDS 448 uint8_t array[77]; // MOU PDS
402} udi_hid_mou_report_desc_t; 449} udi_hid_mou_report_desc_t;
403 450
404# define UDI_HID_MOU_DESC \ 451// clang-format off
405 { .iface.bLength = sizeof(usb_iface_desc_t), .iface.bDescriptorType = USB_DT_INTERFACE, .iface.bInterfaceNumber = MOUSE_INTERFACE, .iface.bAlternateSetting = 0, .iface.bNumEndpoints = 1, .iface.bInterfaceClass = HID_CLASS, .iface.bInterfaceSubClass = HID_SUB_CLASS_BOOT, .iface.bInterfaceProtocol = HID_PROTOCOL_MOUSE, .iface.iInterface = UDI_HID_MOU_STRING_ID, .hid.bLength = sizeof(usb_hid_descriptor_t), .hid.bDescriptorType = USB_DT_HID, .hid.bcdHID = LE16(USB_HID_BDC_V1_11), .hid.bCountryCode = USB_HID_NO_COUNTRY_CODE, .hid.bNumDescriptors = USB_HID_NUM_DESC, .hid.bRDescriptorType = USB_DT_HID_REPORT, .hid.wDescriptorLength = LE16(sizeof(udi_hid_mou_report_desc_t)), .ep.bLength = sizeof(usb_ep_desc_t), .ep.bDescriptorType = USB_DT_ENDPOINT, .ep.bEndpointAddress = UDI_HID_MOU_EP_IN | USB_EP_DIR_IN, .ep.bmAttributes = USB_EP_TYPE_INTERRUPT, .ep.wMaxPacketSize = LE16(UDI_HID_MOU_EP_SIZE), .ep.bInterval = MOU_POLLING_INTERVAL, } 452
406 453# define UDI_HID_MOU_DESC { \
407// no set report buffer 454 .iface = { \
455 .bLength = sizeof(usb_iface_desc_t), \
456 .bDescriptorType = USB_DT_INTERFACE, \
457 .bInterfaceNumber = MOUSE_INTERFACE, \
458 .bAlternateSetting = 0, \
459 .bNumEndpoints = 1, \
460 .bInterfaceClass = HID_CLASS, \
461 .bInterfaceSubClass = HID_SUB_CLASS_BOOT, \
462 .bInterfaceProtocol = HID_PROTOCOL_MOUSE, \
463 .iInterface = UDI_HID_MOU_STRING_ID \
464 }, \
465 .hid = { \
466 .bLength = sizeof(usb_hid_descriptor_t), \
467 .bDescriptorType = USB_DT_HID, \
468 .bcdHID = LE16(USB_HID_BDC_V1_11), \
469 .bCountryCode = USB_HID_NO_COUNTRY_CODE, \
470 .bNumDescriptors = USB_HID_NUM_DESC, \
471 .bRDescriptorType = USB_DT_HID_REPORT, \
472 .wDescriptorLength = LE16(sizeof(udi_hid_mou_report_desc_t)) \
473 }, \
474 .ep = { \
475 .bLength = sizeof(usb_ep_desc_t), \
476 .bDescriptorType = USB_DT_ENDPOINT, \
477 .bEndpointAddress = UDI_HID_MOU_EP_IN | USB_EP_DIR_IN, \
478 .bmAttributes = USB_EP_TYPE_INTERRUPT, \
479 .wMaxPacketSize = LE16(UDI_HID_MOU_EP_SIZE), \
480 .bInterval = MOU_POLLING_INTERVAL \
481 } \
482}
483
484// clang-format on
408 485
409// report buffer 486// report buffer
410# define UDI_HID_MOU_REPORT_SIZE 5 // MOU PDS 487# define UDI_HID_MOU_REPORT_SIZE 5 // MOU PDS
@@ -412,12 +489,12 @@ extern uint8_t udi_hid_mou_report[UDI_HID_MOU_REPORT_SIZE];
412 489
413COMPILER_PACK_RESET() 490COMPILER_PACK_RESET()
414 491
415#endif // MOU 492#endif // MOUSE_ENABLE
416 493
417// ********************************************************************** 494// **********************************************************************
418// RAW Descriptor structure and content 495// RAW Descriptor structure and content
419// ********************************************************************** 496// **********************************************************************
420#ifdef RAW 497#ifdef RAW_ENABLE
421 498
422COMPILER_PACK_SET(1) 499COMPILER_PACK_SET(1)
423 500
@@ -432,11 +509,48 @@ typedef struct {
432 uint8_t array[26]; 509 uint8_t array[26];
433} udi_hid_raw_report_desc_t; 510} udi_hid_raw_report_desc_t;
434 511
435# define UDI_HID_RAW_DESC \ 512// clang-format off
436 { \ 513
437 .iface.bLength = sizeof(usb_iface_desc_t), .iface.bDescriptorType = USB_DT_INTERFACE, .iface.bInterfaceNumber = RAW_INTERFACE, .iface.bAlternateSetting = 0, .iface.bNumEndpoints = 2, .iface.bInterfaceClass = HID_CLASS, .iface.bInterfaceSubClass = HID_SUB_CLASS_NOBOOT, .iface.bInterfaceProtocol = HID_SUB_CLASS_NOBOOT, .iface.iInterface = UDI_HID_RAW_STRING_ID, .hid.bLength = sizeof(usb_hid_descriptor_t), .hid.bDescriptorType = USB_DT_HID, .hid.bcdHID = LE16(USB_HID_BDC_V1_11), .hid.bCountryCode = USB_HID_NO_COUNTRY_CODE, .hid.bNumDescriptors = USB_HID_NUM_DESC, .hid.bRDescriptorType = USB_DT_HID_REPORT, .hid.wDescriptorLength = LE16(sizeof(udi_hid_raw_report_desc_t)), .ep_out.bLength = sizeof(usb_ep_desc_t), .ep_out.bDescriptorType = USB_DT_ENDPOINT, .ep_out.bEndpointAddress = UDI_HID_RAW_EP_OUT | USB_EP_DIR_OUT, .ep_out.bmAttributes = USB_EP_TYPE_INTERRUPT, .ep_out.wMaxPacketSize = LE16(RAW_EPSIZE), .ep_out.bInterval = RAW_POLLING_INTERVAL, \ 514# define UDI_HID_RAW_DESC { \
438 .ep_in.bLength = sizeof(usb_ep_desc_t), .ep_in.bDescriptorType = USB_DT_ENDPOINT, .ep_in.bEndpointAddress = UDI_HID_RAW_EP_IN | USB_EP_DIR_IN, .ep_in.bmAttributes = USB_EP_TYPE_INTERRUPT, .ep_in.wMaxPacketSize = LE16(RAW_EPSIZE), .ep_in.bInterval = RAW_POLLING_INTERVAL, \ 515 .iface = { \
439 } 516 .bLength = sizeof(usb_iface_desc_t), \
517 .bDescriptorType = USB_DT_INTERFACE, \
518 .bInterfaceNumber = RAW_INTERFACE, \
519 .bAlternateSetting = 0, \
520 .bNumEndpoints = 2, \
521 .bInterfaceClass = HID_CLASS, \
522 .bInterfaceSubClass = HID_SUB_CLASS_NOBOOT, \
523 .bInterfaceProtocol = HID_SUB_CLASS_NOBOOT, \
524 .iInterface = UDI_HID_RAW_STRING_ID \
525 }, \
526 .hid = { \
527 .bLength = sizeof(usb_hid_descriptor_t), \
528 .bDescriptorType = USB_DT_HID, \
529 .bcdHID = LE16(USB_HID_BDC_V1_11), \
530 .bCountryCode = USB_HID_NO_COUNTRY_CODE, \
531 .bNumDescriptors = USB_HID_NUM_DESC, \
532 .bRDescriptorType = USB_DT_HID_REPORT, \
533 .wDescriptorLength = LE16(sizeof(udi_hid_raw_report_desc_t)) \
534 }, \
535 .ep_out = { \
536 .bLength = sizeof(usb_ep_desc_t), \
537 .bDescriptorType = USB_DT_ENDPOINT, \
538 .bEndpointAddress = UDI_HID_RAW_EP_OUT | USB_EP_DIR_OUT, \
539 .bmAttributes = USB_EP_TYPE_INTERRUPT, \
540 .wMaxPacketSize = LE16(RAW_EPSIZE), \
541 .bInterval = RAW_POLLING_INTERVAL \
542 }, \
543 .ep_in = { \
544 .bLength = sizeof(usb_ep_desc_t), \
545 .bDescriptorType = USB_DT_ENDPOINT, \
546 .bEndpointAddress = UDI_HID_RAW_EP_IN | USB_EP_DIR_IN, \
547 .bmAttributes = USB_EP_TYPE_INTERRUPT, \
548 .wMaxPacketSize = LE16(RAW_EPSIZE), \
549 .bInterval = RAW_POLLING_INTERVAL \
550 } \
551}
552
553// clang-format on
440 554
441# define UDI_HID_RAW_REPORT_SIZE RAW_EPSIZE 555# define UDI_HID_RAW_REPORT_SIZE RAW_EPSIZE
442 556
@@ -447,12 +561,12 @@ extern uint8_t udi_hid_raw_report[UDI_HID_RAW_REPORT_SIZE];
447 561
448COMPILER_PACK_RESET() 562COMPILER_PACK_RESET()
449 563
450#endif // RAW 564#endif // RAW_ENABLE
451 565
452// ********************************************************************** 566// **********************************************************************
453// CON Descriptor structure and content 567// CON Descriptor structure and content
454// ********************************************************************** 568// **********************************************************************
455#ifdef CON 569#ifdef CONSOLE_ENABLE
456 570
457COMPILER_PACK_SET(1) 571COMPILER_PACK_SET(1)
458 572
@@ -467,11 +581,48 @@ typedef struct {
467 uint8_t array[34]; 581 uint8_t array[34];
468} udi_hid_con_report_desc_t; 582} udi_hid_con_report_desc_t;
469 583
470# define UDI_HID_CON_DESC \ 584// clang-format off
471 { \ 585
472 .iface.bLength = sizeof(usb_iface_desc_t), .iface.bDescriptorType = USB_DT_INTERFACE, .iface.bInterfaceNumber = UDI_HID_CON_IFACE_NUMBER, .iface.bAlternateSetting = 0, .iface.bNumEndpoints = 2, .iface.bInterfaceClass = HID_CLASS, .iface.bInterfaceSubClass = HID_SUB_CLASS_NOBOOT, .iface.bInterfaceProtocol = HID_SUB_CLASS_NOBOOT, .iface.iInterface = UDI_HID_CON_STRING_ID, .hid.bLength = sizeof(usb_hid_descriptor_t), .hid.bDescriptorType = USB_DT_HID, .hid.bcdHID = LE16(USB_HID_BDC_V1_11), .hid.bCountryCode = USB_HID_NO_COUNTRY_CODE, .hid.bNumDescriptors = USB_HID_NUM_DESC, .hid.bRDescriptorType = USB_DT_HID_REPORT, .hid.wDescriptorLength = LE16(sizeof(udi_hid_con_report_desc_t)), .ep_out.bLength = sizeof(usb_ep_desc_t), .ep_out.bDescriptorType = USB_DT_ENDPOINT, .ep_out.bEndpointAddress = UDI_HID_CON_EP_OUT | USB_EP_DIR_OUT, .ep_out.bmAttributes = USB_EP_TYPE_INTERRUPT, .ep_out.wMaxPacketSize = LE16(CONSOLE_EPSIZE), .ep_out.bInterval = CON_POLLING_INTERVAL, \ 586# define UDI_HID_CON_DESC { \
473 .ep_in.bLength = sizeof(usb_ep_desc_t), .ep_in.bDescriptorType = USB_DT_ENDPOINT, .ep_in.bEndpointAddress = UDI_HID_CON_EP_IN | USB_EP_DIR_IN, .ep_in.bmAttributes = USB_EP_TYPE_INTERRUPT, .ep_in.wMaxPacketSize = LE16(CONSOLE_EPSIZE), .ep_in.bInterval = CON_POLLING_INTERVAL, \ 587 .iface = { \
474 } 588 .bLength = sizeof(usb_iface_desc_t), \
589 .bDescriptorType = USB_DT_INTERFACE, \
590 .bInterfaceNumber = UDI_HID_CON_IFACE_NUMBER, \
591 .bAlternateSetting = 0, \
592 .bNumEndpoints = 2, \
593 .bInterfaceClass = HID_CLASS, \
594 .bInterfaceSubClass = HID_SUB_CLASS_NOBOOT, \
595 .bInterfaceProtocol = HID_SUB_CLASS_NOBOOT, \
596 .iInterface = UDI_HID_CON_STRING_ID \
597 }, \
598 .hid = { \
599 .bLength = sizeof(usb_hid_descriptor_t), \
600 .bDescriptorType = USB_DT_HID, \
601 .bcdHID = LE16(USB_HID_BDC_V1_11), \
602 .bCountryCode = USB_HID_NO_COUNTRY_CODE, \
603 .bNumDescriptors = USB_HID_NUM_DESC, \
604 .bRDescriptorType = USB_DT_HID_REPORT, \
605 .wDescriptorLength = LE16(sizeof(udi_hid_con_report_desc_t)) \
606 }, \
607 .ep_out = { \
608 .bLength = sizeof(usb_ep_desc_t), \
609 .bDescriptorType = USB_DT_ENDPOINT, \
610 .bEndpointAddress = UDI_HID_CON_EP_OUT | USB_EP_DIR_OUT, \
611 .bmAttributes = USB_EP_TYPE_INTERRUPT, \
612 .wMaxPacketSize = LE16(CONSOLE_EPSIZE), \
613 .bInterval = CON_POLLING_INTERVAL \
614 }, \
615 .ep_in = { \
616 .bLength = sizeof(usb_ep_desc_t), \
617 .bDescriptorType = USB_DT_ENDPOINT, \
618 .bEndpointAddress = UDI_HID_CON_EP_IN | USB_EP_DIR_IN, \
619 .bmAttributes = USB_EP_TYPE_INTERRUPT, \
620 .wMaxPacketSize = LE16(CONSOLE_EPSIZE), \
621 .bInterval = CON_POLLING_INTERVAL \
622 } \
623}
624
625// clang-format on
475 626
476# define UDI_HID_CON_REPORT_SIZE CONSOLE_EPSIZE 627# define UDI_HID_CON_REPORT_SIZE CONSOLE_EPSIZE
477 628
@@ -482,12 +633,12 @@ extern uint8_t udi_hid_con_report[UDI_HID_CON_REPORT_SIZE];
482 633
483COMPILER_PACK_RESET() 634COMPILER_PACK_RESET()
484 635
485#endif // CON 636#endif // CONSOLE_ENABLE
486 637
487// ********************************************************************** 638// **********************************************************************
488// CDC Descriptor structure and content 639// CDC Descriptor structure and content
489// ********************************************************************** 640// **********************************************************************
490#ifdef CDC 641#ifdef VIRTSER_ENABLE
491 642
492COMPILER_PACK_SET(1) 643COMPILER_PACK_SET(1)
493 644
@@ -534,16 +685,98 @@ typedef struct {
534 usb_ep_desc_t ep_rx; 685 usb_ep_desc_t ep_rx;
535} udi_cdc_desc_t; 686} udi_cdc_desc_t;
536 687
537# define CDC_DESCRIPTOR \ 688// clang-format off
538 { \ 689
539 .iaface.bLength = sizeof(usb_association_desc_t), .iaface.bDescriptorType = USB_DT_IAD, .iaface.bFirstInterface = CDC_STATUS_INTERFACE, .iaface.bInterfaceCount = 2, .iaface.bFunctionClass = CDC_CLASS_DEVICE, .iaface.bFunctionSubClass = CDC_SUBCLASS_ACM, .iaface.bFunctionProtocol = CDC_PROTOCOL_V25TER, .iaface.iFunction = 0, .iface_c.bLength = sizeof(usb_iface_desc_t), .iface_c.bDescriptorType = USB_DT_INTERFACE, .iface_c.bInterfaceNumber = CDC_STATUS_INTERFACE, .iface_c.bAlternateSetting = 0, .iface_c.bNumEndpoints = 1, .iface_c.bInterfaceClass = 0x02, .iface_c.bInterfaceSubClass = 0x02, .iface_c.bInterfaceProtocol = CDC_PROTOCOL_V25TER, .iface_c.iInterface = 0, .fd.bFunctionLength = sizeof(usb_cdc_hdr_desc_t), .fd.bDescriptorType = CDC_CS_INTERFACE, .fd.bDescriptorSubtype = CDC_SCS_HEADER, .fd.bcdCDC = 0x0110, .mfd.bFunctionLength = sizeof(usb_cdc_call_mgmt_desc_t), .mfd.bDescriptorType = CDC_CS_INTERFACE, .mfd.bDescriptorSubtype = CDC_SCS_CALL_MGMT, \ 690# define CDC_DESCRIPTOR { \
540 .mfd.bmCapabilities = CDC_CALL_MGMT_SUPPORTED, .mfd.bDataInterface = CDC_DATA_INTERFACE, .acmd.bFunctionLength = sizeof(usb_cdc_acm_desc_t), .acmd.bDescriptorType = CDC_CS_INTERFACE, .acmd.bDescriptorSubtype = CDC_SCS_ACM, .acmd.bmCapabilities = CDC_ACM_SUPPORT_LINE_REQUESTS, .ufd.bFunctionLength = sizeof(usb_cdc_union_desc_t), .ufd.bDescriptorType = CDC_CS_INTERFACE, .ufd.bDescriptorSubtype = CDC_SCS_UNION, .ufd.bMasterInterface = CDC_STATUS_INTERFACE, .ufd.bSlaveInterface0 = CDC_DATA_INTERFACE, .ep_c.bLength = sizeof(usb_ep_desc_t), .ep_c.bDescriptorType = USB_DT_ENDPOINT, .ep_c.bEndpointAddress = CDC_ACM_ENDPOINT | USB_EP_DIR_IN, .ep_c.bmAttributes = USB_EP_TYPE_INTERRUPT, .ep_c.wMaxPacketSize = LE16(CDC_ACM_SIZE), .ep_c.bInterval = CDC_EP_INTERVAL_STATUS, .iface_d.bLength = sizeof(usb_iface_desc_t), .iface_d.bDescriptorType = USB_DT_INTERFACE, .iface_d.bInterfaceNumber = CDC_DATA_INTERFACE, .iface_d.bAlternateSetting = 0, .iface_d.bNumEndpoints = 2, \ 691 .iaface = { \
541 .iface_d.bInterfaceClass = CDC_CLASS_DATA, .iface_d.bInterfaceSubClass = 0, .iface_d.bInterfaceProtocol = 0, .iface_d.iInterface = 0, .ep_rx.bLength = sizeof(usb_ep_desc_t), .ep_rx.bDescriptorType = USB_DT_ENDPOINT, .ep_rx.bEndpointAddress = CDC_RX_ENDPOINT | USB_EP_DIR_OUT, .ep_rx.bmAttributes = USB_EP_TYPE_BULK, .ep_rx.wMaxPacketSize = LE16(CDC_RX_SIZE), .ep_rx.bInterval = CDC_EP_INTERVAL_DATA, .ep_tx.bLength = sizeof(usb_ep_desc_t), .ep_tx.bDescriptorType = USB_DT_ENDPOINT, .ep_tx.bEndpointAddress = CDC_TX_ENDPOINT | USB_EP_DIR_IN, .ep_tx.bmAttributes = USB_EP_TYPE_BULK, .ep_tx.wMaxPacketSize = LE16(CDC_TX_SIZE), .ep_tx.bInterval = CDC_EP_INTERVAL_DATA, \ 692 .bLength = sizeof(usb_association_desc_t), \
542 } 693 .bDescriptorType = USB_DT_IAD, \
694 .bFirstInterface = CDC_STATUS_INTERFACE, \
695 .bInterfaceCount = 2, \
696 .bFunctionClass = CDC_CLASS_DEVICE, \
697 .bFunctionSubClass = CDC_SUBCLASS_ACM, \
698 .bFunctionProtocol = CDC_PROTOCOL_V25TER, \
699 .iFunction = 0 \
700 }, \
701 .iface_c = { \
702 .bLength = sizeof(usb_iface_desc_t), \
703 .bDescriptorType = USB_DT_INTERFACE, \
704 .bInterfaceNumber = CDC_STATUS_INTERFACE, \
705 .bAlternateSetting = 0, \
706 .bNumEndpoints = 1, \
707 .bInterfaceClass = 0x02, \
708 .bInterfaceSubClass = 0x02, \
709 .bInterfaceProtocol = CDC_PROTOCOL_V25TER, \
710 .iInterface = 0 \
711 }, \
712 .fd = { \
713 .bFunctionLength = sizeof(usb_cdc_hdr_desc_t), \
714 .bDescriptorType = CDC_CS_INTERFACE, \
715 .bDescriptorSubtype = CDC_SCS_HEADER, \
716 .bcdCDC = 0x0110 \
717 }, \
718 .mfd = { \
719 .bFunctionLength = sizeof(usb_cdc_call_mgmt_desc_t), \
720 .bDescriptorType = CDC_CS_INTERFACE, \
721 .bDescriptorSubtype = CDC_SCS_CALL_MGMT, \
722 .bmCapabilities = CDC_CALL_MGMT_SUPPORTED, \
723 .bDataInterface = CDC_DATA_INTERFACE \
724 }, \
725 .acmd = { \
726 .bFunctionLength = sizeof(usb_cdc_acm_desc_t), \
727 .bDescriptorType = CDC_CS_INTERFACE, \
728 .bDescriptorSubtype = CDC_SCS_ACM, \
729 .bmCapabilities = CDC_ACM_SUPPORT_LINE_REQUESTS \
730 }, \
731 .ufd = { \
732 .bFunctionLength = sizeof(usb_cdc_union_desc_t), \
733 .bDescriptorType = CDC_CS_INTERFACE, \
734 .bDescriptorSubtype = CDC_SCS_UNION, \
735 .bMasterInterface = CDC_STATUS_INTERFACE, \
736 .bSlaveInterface0 = CDC_DATA_INTERFACE \
737 }, \
738 .ep_c = { \
739 .bLength = sizeof(usb_ep_desc_t), \
740 .bDescriptorType = USB_DT_ENDPOINT, \
741 .bEndpointAddress = CDC_ACM_ENDPOINT | USB_EP_DIR_IN, \
742 .bmAttributes = USB_EP_TYPE_INTERRUPT, \
743 .wMaxPacketSize = LE16(CDC_ACM_SIZE), \
744 .bInterval = CDC_EP_INTERVAL_STATUS \
745 }, \
746 .iface_d = { \
747 .bLength = sizeof(usb_iface_desc_t), \
748 .bDescriptorType = USB_DT_INTERFACE, \
749 .bInterfaceNumber = CDC_DATA_INTERFACE, \
750 .bAlternateSetting = 0, \
751 .bNumEndpoints = 2, \
752 .bInterfaceClass = CDC_CLASS_DATA, \
753 .bInterfaceSubClass = 0, \
754 .bInterfaceProtocol = 0, \
755 .iInterface = 0 \
756 }, \
757 .ep_rx = { \
758 .bLength = sizeof(usb_ep_desc_t), \
759 .bDescriptorType = USB_DT_ENDPOINT, \
760 .bEndpointAddress = CDC_RX_ENDPOINT | USB_EP_DIR_OUT, \
761 .bmAttributes = USB_EP_TYPE_BULK, \
762 .wMaxPacketSize = LE16(CDC_RX_SIZE), \
763 .bInterval = CDC_EP_INTERVAL_DATA \
764 }, \
765 .ep_tx = { \
766 .bLength = sizeof(usb_ep_desc_t), \
767 .bDescriptorType = USB_DT_ENDPOINT, \
768 .bEndpointAddress = CDC_TX_ENDPOINT | USB_EP_DIR_IN, \
769 .bmAttributes = USB_EP_TYPE_BULK, \
770 .wMaxPacketSize = LE16(CDC_TX_SIZE), \
771 .bInterval = CDC_EP_INTERVAL_DATA \
772 } \
773}
774
775// clang-format on
543 776
544COMPILER_PACK_RESET() 777COMPILER_PACK_RESET()
545 778
546#endif // CDC 779#endif // VIRTSER_ENABLE
547 780
548// ********************************************************************** 781// **********************************************************************
549// CONFIGURATION Descriptor structure and content 782// CONFIGURATION Descriptor structure and content
@@ -552,28 +785,26 @@ COMPILER_PACK_SET(1)
552 785
553typedef struct { 786typedef struct {
554 usb_conf_desc_t conf; 787 usb_conf_desc_t conf;
555#ifdef KBD
556 udi_hid_kbd_desc_t hid_kbd; 788 udi_hid_kbd_desc_t hid_kbd;
557#endif 789#ifdef MOUSE_ENABLE
558#ifdef MOU
559 udi_hid_mou_desc_t hid_mou; 790 udi_hid_mou_desc_t hid_mou;
560#endif 791#endif
561#ifdef EXK 792#ifdef EXTRAKEY_ENABLE
562 udi_hid_exk_desc_t hid_exk; 793 udi_hid_exk_desc_t hid_exk;
563#endif 794#endif
564#ifdef RAW 795#ifdef RAW_ENABLE
565 udi_hid_raw_desc_t hid_raw; 796 udi_hid_raw_desc_t hid_raw;
566#endif 797#endif
567#ifdef CON 798#ifdef CONSOLE_ENABLE
568 udi_hid_con_desc_t hid_con; 799 udi_hid_con_desc_t hid_con;
569#endif 800#endif
570#ifdef NKRO 801#ifdef NKRO_ENABLE
571 udi_hid_nkro_desc_t hid_nkro; 802 udi_hid_nkro_desc_t hid_nkro;
572#endif 803#endif
573#ifdef MIDI 804#ifdef MIDI_ENABLE
574 udi_hid_midi_desc_t hid_midi; 805 udi_hid_midi_desc_t hid_midi;
575#endif 806#endif
576#ifdef CDC 807#ifdef VIRTSER_ENABLE
577 udi_cdc_desc_t cdc_serial; 808 udi_cdc_desc_t cdc_serial;
578#endif 809#endif
579} udc_desc_t; 810} udc_desc_t;
diff --git a/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.c b/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.c
index 8142f297d..3e9fbfdbe 100644
--- a/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.c
+++ b/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.c
@@ -59,8 +59,6 @@
59//*************************************************************************** 59//***************************************************************************
60// KBD 60// KBD
61//*************************************************************************** 61//***************************************************************************
62#ifdef KBD
63
64bool udi_hid_kbd_enable(void); 62bool udi_hid_kbd_enable(void);
65void udi_hid_kbd_disable(void); 63void udi_hid_kbd_disable(void);
66bool udi_hid_kbd_setup(void); 64bool udi_hid_kbd_setup(void);
@@ -196,12 +194,10 @@ static void udi_hid_kbd_setreport_valid(void) {
196 // UDI_HID_KBD_CHANGE_LED(udi_hid_kbd_report_set); 194 // UDI_HID_KBD_CHANGE_LED(udi_hid_kbd_report_set);
197} 195}
198 196
199#endif // KBD
200
201//******************************************************************************************** 197//********************************************************************************************
202// NKRO Keyboard 198// NKRO Keyboard
203//******************************************************************************************** 199//********************************************************************************************
204#ifdef NKRO 200#ifdef NKRO_ENABLE
205 201
206bool udi_hid_nkro_enable(void); 202bool udi_hid_nkro_enable(void);
207void udi_hid_nkro_disable(void); 203void udi_hid_nkro_disable(void);
@@ -336,12 +332,12 @@ static void udi_hid_nkro_setreport_valid(void) {
336 // UDI_HID_NKRO_CHANGE_LED(udi_hid_nkro_report_set); 332 // UDI_HID_NKRO_CHANGE_LED(udi_hid_nkro_report_set);
337} 333}
338 334
339#endif // NKRO 335#endif // NKRO_ENABLE
340 336
341//******************************************************************************************** 337//********************************************************************************************
342// EXK (extra-keys) SYS-CTRL Keyboard 338// EXK (extra-keys) SYS-CTRL Keyboard
343//******************************************************************************************** 339//********************************************************************************************
344#ifdef EXK 340#ifdef EXTRAKEY_ENABLE
345 341
346bool udi_hid_exk_enable(void); 342bool udi_hid_exk_enable(void);
347void udi_hid_exk_disable(void); 343void udi_hid_exk_disable(void);
@@ -467,12 +463,12 @@ static void udi_hid_exk_report_sent(udd_ep_status_t status, iram_size_t nb_sent,
467 463
468static void udi_hid_exk_setreport_valid(void) {} 464static void udi_hid_exk_setreport_valid(void) {}
469 465
470#endif // EXK 466#endif // EXTRAKEY_ENABLE
471 467
472//******************************************************************************************** 468//********************************************************************************************
473// MOU Mouse 469// MOU Mouse
474//******************************************************************************************** 470//********************************************************************************************
475#ifdef MOU 471#ifdef MOUSE_ENABLE
476 472
477bool udi_hid_mou_enable(void); 473bool udi_hid_mou_enable(void);
478void udi_hid_mou_disable(void); 474void udi_hid_mou_disable(void);
@@ -601,12 +597,12 @@ static void udi_hid_mou_report_sent(udd_ep_status_t status, iram_size_t nb_sent,
601 } 597 }
602} 598}
603 599
604#endif // MOU 600#endif // MOUSE_ENABLE
605 601
606//******************************************************************************************** 602//********************************************************************************************
607// RAW 603// RAW
608//******************************************************************************************** 604//********************************************************************************************
609#ifdef RAW 605#ifdef RAW_ENABLE
610 606
611bool udi_hid_raw_enable(void); 607bool udi_hid_raw_enable(void);
612void udi_hid_raw_disable(void); 608void udi_hid_raw_disable(void);
@@ -746,12 +742,12 @@ static void udi_hid_raw_report_rcvd(udd_ep_status_t status, iram_size_t nb_rcvd,
746 } 742 }
747} 743}
748 744
749#endif //RAW 745#endif // RAW_ENABLE
750 746
751//******************************************************************************************** 747//********************************************************************************************
752// CON 748// CON
753//******************************************************************************************** 749//********************************************************************************************
754#ifdef CON 750#ifdef CONSOLE_ENABLE
755 751
756bool udi_hid_con_enable(void); 752bool udi_hid_con_enable(void);
757void udi_hid_con_disable(void); 753void udi_hid_con_disable(void);
@@ -866,4 +862,4 @@ static void udi_hid_con_report_sent(udd_ep_status_t status, iram_size_t nb_sent,
866 862
867static void udi_hid_con_setreport_valid(void) {} 863static void udi_hid_con_setreport_valid(void) {}
868 864
869#endif // CON 865#endif // CONSOLE_ENABLE
diff --git a/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.h b/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.h
index 6dc1fed3e..a2d228162 100644
--- a/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.h
+++ b/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.h
@@ -57,62 +57,60 @@ extern "C" {
57//****************************************************************************** 57//******************************************************************************
58// Keyboard interface definitions 58// Keyboard interface definitions
59//****************************************************************************** 59//******************************************************************************
60#ifdef KBD
61extern UDC_DESC_STORAGE udi_api_t udi_api_hid_kbd; 60extern UDC_DESC_STORAGE udi_api_t udi_api_hid_kbd;
62extern bool udi_hid_kbd_b_report_valid; 61extern bool udi_hid_kbd_b_report_valid;
63extern volatile bool udi_hid_kbd_b_report_trans_ongoing; 62extern volatile bool udi_hid_kbd_b_report_trans_ongoing;
64extern uint8_t udi_hid_kbd_report_set; 63extern uint8_t udi_hid_kbd_report_set;
65bool udi_hid_kbd_send_report(void); 64bool udi_hid_kbd_send_report(void);
66#endif // KBD
67 65
68//******************************************************************************************** 66//********************************************************************************************
69// NKRO Keyboard 67// NKRO Keyboard
70//******************************************************************************************** 68//********************************************************************************************
71#ifdef NKRO 69#ifdef NKRO_ENABLE
72extern UDC_DESC_STORAGE udi_api_t udi_api_hid_nkro; 70extern UDC_DESC_STORAGE udi_api_t udi_api_hid_nkro;
73extern bool udi_hid_nkro_b_report_valid; 71extern bool udi_hid_nkro_b_report_valid;
74extern volatile bool udi_hid_nkro_b_report_trans_ongoing; 72extern volatile bool udi_hid_nkro_b_report_trans_ongoing;
75bool udi_hid_nkro_send_report(void); 73bool udi_hid_nkro_send_report(void);
76#endif // NKRO 74#endif // NKRO_ENABLE
77 75
78//******************************************************************************************** 76//********************************************************************************************
79// SYS-CTRL interface 77// SYS-CTRL interface
80//******************************************************************************************** 78//********************************************************************************************
81#ifdef EXK 79#ifdef EXTRAKEY_ENABLE
82extern UDC_DESC_STORAGE udi_api_t udi_api_hid_exk; 80extern UDC_DESC_STORAGE udi_api_t udi_api_hid_exk;
83extern bool udi_hid_exk_b_report_valid; 81extern bool udi_hid_exk_b_report_valid;
84extern uint8_t udi_hid_exk_report_set; 82extern uint8_t udi_hid_exk_report_set;
85bool udi_hid_exk_send_report(void); 83bool udi_hid_exk_send_report(void);
86#endif // EXK 84#endif // EXTRAKEY_ENABLE
87 85
88//******************************************************************************************** 86//********************************************************************************************
89// CON Console 87// CON Console
90//******************************************************************************************** 88//********************************************************************************************
91#ifdef CON 89#ifdef CONSOLE_ENABLE
92extern UDC_DESC_STORAGE udi_api_t udi_api_hid_con; 90extern UDC_DESC_STORAGE udi_api_t udi_api_hid_con;
93extern bool udi_hid_con_b_report_valid; 91extern bool udi_hid_con_b_report_valid;
94extern uint8_t udi_hid_con_report_set[UDI_HID_CON_REPORT_SIZE]; 92extern uint8_t udi_hid_con_report_set[UDI_HID_CON_REPORT_SIZE];
95extern volatile bool udi_hid_con_b_report_trans_ongoing; 93extern volatile bool udi_hid_con_b_report_trans_ongoing;
96bool udi_hid_con_send_report(void); 94bool udi_hid_con_send_report(void);
97#endif // CON 95#endif // CONSOLE_ENABLE
98 96
99//******************************************************************************************** 97//********************************************************************************************
100// MOU Mouse 98// MOU Mouse
101//******************************************************************************************** 99//********************************************************************************************
102#ifdef MOU 100#ifdef MOUSE_ENABLE
103extern UDC_DESC_STORAGE udi_api_t udi_api_hid_mou; 101extern UDC_DESC_STORAGE udi_api_t udi_api_hid_mou;
104extern bool udi_hid_mou_b_report_valid; 102extern bool udi_hid_mou_b_report_valid;
105bool udi_hid_mou_send_report(void); 103bool udi_hid_mou_send_report(void);
106#endif // MOU 104#endif // MOUSE_ENABLE
107 105
108//******************************************************************************************** 106//********************************************************************************************
109// RAW Raw 107// RAW Raw
110//******************************************************************************************** 108//********************************************************************************************
111#ifdef RAW 109#ifdef RAW_ENABLE
112extern UDC_DESC_STORAGE udi_api_t udi_api_hid_raw; 110extern UDC_DESC_STORAGE udi_api_t udi_api_hid_raw;
113bool udi_hid_raw_send_report(void); 111bool udi_hid_raw_send_report(void);
114bool udi_hid_raw_receive_report(void); 112bool udi_hid_raw_receive_report(void);
115#endif // RAW 113#endif // RAW_ENABLE
116 114
117//@} 115//@}
118 116
diff --git a/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd_desc.c b/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd_desc.c
index 4e7deaaa3..a3fb46a3d 100644
--- a/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd_desc.c
+++ b/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd_desc.c
@@ -120,49 +120,45 @@ UDC_DESC_STORAGE udc_desc_t udc_desc = {
120 .conf.iConfiguration = 0, 120 .conf.iConfiguration = 0,
121 .conf.bmAttributes = /* USB_CONFIG_ATTR_MUST_SET | */ USB_DEVICE_ATTR, 121 .conf.bmAttributes = /* USB_CONFIG_ATTR_MUST_SET | */ USB_DEVICE_ATTR,
122 .conf.bMaxPower = USB_CONFIG_MAX_POWER(USB_DEVICE_POWER), 122 .conf.bMaxPower = USB_CONFIG_MAX_POWER(USB_DEVICE_POWER),
123#ifdef KBD
124 .hid_kbd = UDI_HID_KBD_DESC, 123 .hid_kbd = UDI_HID_KBD_DESC,
125#endif 124#ifdef RAW_ENABLE
126#ifdef RAW
127 .hid_raw = UDI_HID_RAW_DESC, 125 .hid_raw = UDI_HID_RAW_DESC,
128#endif 126#endif
129#ifdef MOU 127#ifdef MOUSE_ENABLE
130 .hid_mou = UDI_HID_MOU_DESC, 128 .hid_mou = UDI_HID_MOU_DESC,
131#endif 129#endif
132#ifdef EXK 130#ifdef EXTRAKEY_ENABLE
133 .hid_exk = UDI_HID_EXK_DESC, 131 .hid_exk = UDI_HID_EXK_DESC,
134#endif 132#endif
135#ifdef CON 133#ifdef CONSOLE_ENABLE
136 .hid_con = UDI_HID_CON_DESC, 134 .hid_con = UDI_HID_CON_DESC,
137#endif 135#endif
138#ifdef NKRO 136#ifdef NKRO_ENABLE
139 .hid_nkro = UDI_HID_NKRO_DESC, 137 .hid_nkro = UDI_HID_NKRO_DESC,
140#endif 138#endif
141#ifdef CDC 139#ifdef VIRTSER_ENABLE
142 .cdc_serial = CDC_DESCRIPTOR, 140 .cdc_serial = CDC_DESCRIPTOR,
143#endif 141#endif
144}; 142};
145 143
146UDC_DESC_STORAGE udi_api_t *udi_apis[USB_DEVICE_NB_INTERFACE] = { 144UDC_DESC_STORAGE udi_api_t *udi_apis[USB_DEVICE_NB_INTERFACE] = {
147#ifdef KBD
148 &udi_api_hid_kbd, 145 &udi_api_hid_kbd,
149#endif 146#ifdef RAW_ENABLE
150#ifdef RAW
151 &udi_api_hid_raw, 147 &udi_api_hid_raw,
152#endif 148#endif
153#ifdef MOU 149#ifdef MOUSE_ENABLE
154 &udi_api_hid_mou, 150 &udi_api_hid_mou,
155#endif 151#endif
156#ifdef EXK 152#ifdef EXTRAKEY_ENABLE
157 &udi_api_hid_exk, 153 &udi_api_hid_exk,
158#endif 154#endif
159#ifdef CON 155#ifdef CONSOLE_ENABLE
160 &udi_api_hid_con, 156 &udi_api_hid_con,
161#endif 157#endif
162#ifdef NKRO 158#ifdef NKRO_ENABLE
163 &udi_api_hid_nkro, 159 &udi_api_hid_nkro,
164#endif 160#endif
165#ifdef CDC 161#ifdef VIRTSER_ENABLE
166 &udi_api_cdc_comm, &udi_api_cdc_data, 162 &udi_api_cdc_comm, &udi_api_cdc_data,
167#endif 163#endif
168}; 164};
diff --git a/tmk_core/protocol/arm_atsam/usb/usb_main.h b/tmk_core/protocol/arm_atsam/usb/usb_main.h
index 3191b2fc1..d8461c6c9 100644
--- a/tmk_core/protocol/arm_atsam/usb/usb_main.h
+++ b/tmk_core/protocol/arm_atsam/usb/usb_main.h
@@ -63,41 +63,39 @@ void main_remotewakeup_enable(void);
63// Called by UDC when USB Host request to disable remote wakeup 63// Called by UDC when USB Host request to disable remote wakeup
64void main_remotewakeup_disable(void); 64void main_remotewakeup_disable(void);
65 65
66#ifdef KBD
67extern volatile bool main_b_kbd_enable; 66extern volatile bool main_b_kbd_enable;
68bool main_kbd_enable(void); 67bool main_kbd_enable(void);
69void main_kbd_disable(void); 68void main_kbd_disable(void);
70#endif // KBD
71 69
72#ifdef NKRO 70#ifdef NKRO_ENABLE
73extern volatile bool main_b_nkro_enable; 71extern volatile bool main_b_nkro_enable;
74bool main_nkro_enable(void); 72bool main_nkro_enable(void);
75void main_nkro_disable(void); 73void main_nkro_disable(void);
76#endif // NKRO 74#endif // NKRO_ENABLE
77 75
78#ifdef EXK 76#ifdef EXTRAKEY_ENABLE
79extern volatile bool main_b_exk_enable; 77extern volatile bool main_b_exk_enable;
80bool main_exk_enable(void); 78bool main_exk_enable(void);
81void main_exk_disable(void); 79void main_exk_disable(void);
82#endif // EXK 80#endif // EXTRAKEY_ENABLE
83 81
84#ifdef CON 82#ifdef CONSOLE_ENABLE
85extern volatile bool main_b_con_enable; 83extern volatile bool main_b_con_enable;
86bool main_con_enable(void); 84bool main_con_enable(void);
87void main_con_disable(void); 85void main_con_disable(void);
88#endif // CON 86#endif // CONSOLE_ENABLE
89 87
90#ifdef MOU 88#ifdef MOUSE_ENABLE
91extern volatile bool main_b_mou_enable; 89extern volatile bool main_b_mou_enable;
92bool main_mou_enable(void); 90bool main_mou_enable(void);
93void main_mou_disable(void); 91void main_mou_disable(void);
94#endif // MOU 92#endif // MOUSE_ENABLE
95 93
96#ifdef RAW 94#ifdef RAW_ENABLE
97extern volatile bool main_b_raw_enable; 95extern volatile bool main_b_raw_enable;
98bool main_raw_enable(void); 96bool main_raw_enable(void);
99void main_raw_disable(void); 97void main_raw_disable(void);
100void main_raw_receive(uint8_t *buffer, uint8_t len); 98void main_raw_receive(uint8_t *buffer, uint8_t len);
101#endif // RAW 99#endif // RAW_ENABLE
102 100
103#endif // _MAIN_H_ 101#endif // _MAIN_H_
diff --git a/tmk_core/protocol/arm_atsam/usb/usb_protocol_cdc.h b/tmk_core/protocol/arm_atsam/usb/usb_protocol_cdc.h
index aa639a6e5..f35503a3b 100644
--- a/tmk_core/protocol/arm_atsam/usb/usb_protocol_cdc.h
+++ b/tmk_core/protocol/arm_atsam/usb/usb_protocol_cdc.h
@@ -48,7 +48,7 @@
48 48
49#include "compiler.h" 49#include "compiler.h"
50 50
51#ifdef CDC 51#ifdef VIRTSER_ENABLE
52 52
53# define CDC_CLASS_DEVICE 0x02 //!< USB Communication Device Class 53# define CDC_CLASS_DEVICE 0x02 //!< USB Communication Device Class
54# define CDC_CLASS_COMM 0x02 //!< CDC Communication Class Interface 54# define CDC_CLASS_COMM 0x02 //!< CDC Communication Class Interface