summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 f236427ca1..184a2e81dc 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 @@
* @{
*/
//! Interface callback definition
-#ifdef KBD
-# define UDI_HID_KBD_ENABLE_EXT() main_kbd_enable()
-# define UDI_HID_KBD_DISABLE_EXT() main_kbd_disable()
-//#define UDI_HID_KBD_CHANGE_LED(value) ui_kbd_led(value)
-#endif
+#define UDI_HID_KBD_ENABLE_EXT() main_kbd_enable()
+#define UDI_HID_KBD_DISABLE_EXT() main_kbd_disable()
+//#define UDI_HID_KBD_CHANGE_LED(value) ui_kbd_led(value)
-#ifdef NKRO
+#ifdef NKRO_ENABLE
# define UDI_HID_NKRO_ENABLE_EXT() main_nkro_enable()
# define UDI_HID_NKRO_DISABLE_EXT() main_nkro_disable()
-//#define UDI_HID_NKRO_CHANGE_LED(value) ui_kbd_led(value)
+//#define UDI_HID_NKRO_CHANGE_LED(value) ui_kbd_led(value)
#endif
-#ifdef EXK
+#ifdef EXTRAKEY_ENABLE
# define UDI_HID_EXK_ENABLE_EXT() main_exk_enable()
# define UDI_HID_EXK_DISABLE_EXT() main_exk_disable()
#endif
-#ifdef CON
+#ifdef CONSOLE_ENABLE
# define UDI_HID_CON_ENABLE_EXT() main_con_enable()
# define UDI_HID_CON_DISABLE_EXT() main_con_disable()
#endif
-#ifdef MOU
+#ifdef MOUSE_ENABLE
# define UDI_HID_MOU_ENABLE_EXT() main_mou_enable()
# define UDI_HID_MOU_DISABLE_EXT() main_mou_disable()
#endif
-#ifdef RAW
+#ifdef RAW_ENABLE
# define UDI_HID_RAW_ENABLE_EXT() main_raw_enable()
# define UDI_HID_RAW_DISABLE_EXT() main_raw_disable()
# 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 3809e1fd02..5fcb9a9c61 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/>.
#include "samd51j18a.h"
#include "conf_usb.h"
#include "udd.h"
-#ifdef RAW
+
+#ifdef RAW_ENABLE
# include "raw_hid.h"
#endif
@@ -34,7 +35,6 @@ void main_remotewakeup_enable(void) { ui_wakeup_enable(); }
void main_remotewakeup_disable(void) { ui_wakeup_disable(); }
-#ifdef KBD
volatile bool main_b_kbd_enable = false;
bool main_kbd_enable(void) {
main_b_kbd_enable = true;
@@ -42,9 +42,8 @@ bool main_kbd_enable(void) {
}
void main_kbd_disable(void) { main_b_kbd_enable = false; }
-#endif
-#ifdef NKRO
+#ifdef NKRO_ENABLE
volatile bool main_b_nkro_enable = false;
bool main_nkro_enable(void) {
main_b_nkro_enable = true;
@@ -54,7 +53,7 @@ bool main_nkro_enable(void) {
void main_nkro_disable(void) { main_b_nkro_enable = false; }
#endif
-#ifdef EXK
+#ifdef EXTRAKEY_ENABLE
volatile bool main_b_exk_enable = false;
bool main_exk_enable(void) {
main_b_exk_enable = true;
@@ -64,7 +63,7 @@ bool main_exk_enable(void) {
void main_exk_disable(void) { main_b_exk_enable = false; }
#endif
-#ifdef CON
+#ifdef CONSOLE_ENABLE
volatile bool main_b_con_enable = false;
bool main_con_enable(void) {
main_b_con_enable = true;
@@ -74,7 +73,7 @@ bool main_con_enable(void) {
void main_con_disable(void) { main_b_con_enable = false; }
#endif
-#ifdef MOU
+#ifdef MOUSE_ENABLE
volatile bool main_b_mou_enable = false;
bool main_mou_enable(void) {
main_b_mou_enable = true;
@@ -84,7 +83,7 @@ bool main_mou_enable(void) {
void main_mou_disable(void) { main_b_mou_enable = false; }
#endif
-#ifdef RAW
+#ifdef RAW_ENABLE
volatile bool main_b_raw_enable = false;
bool main_raw_enable(void) {
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 8271f3b97f..27db4017c4 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 @@
#include "stdarg.h"
#include "tmk_core/protocol/arm_atsam/clks.h"
-#ifdef CDC
+#ifdef VIRTSER_ENABLE
# ifdef UDI_CDC_LOW_RATE
# 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 9135bab546..406023980c 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 @@
#ifndef _UDI_CDC_H_
#define _UDI_CDC_H_
-#ifdef CDC
+#ifdef VIRTSER_ENABLE
# include "conf_usb.h"
# include "usb_protocol.h"
@@ -346,7 +346,7 @@ typedef struct {
char buf[CDC_INBUF_SIZE];
} inbuf_t;
-#else // CDC
+#else // VIRTSER_ENABLE
// keep these to accommodate calls if remaining
# define CDC_PRINTBUF_SIZE 1
@@ -362,7 +362,7 @@ typedef struct {
extern inbuf_t inbuf;
-#endif // CDC
+#endif // VIRTSER_ENABLE
uint32_t CDC_print(char* printbuf);
int 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 80556205f2..505db47b06 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/>.
#include "compiler.h"
#include "usb_protocol_hid.h"
-#define DEVICE_CLASS 0
-#define DEVICE_SUBCLASS 0
-#define DEVICE_PROTOCOL 0
-
-#define KBD
-
-//#define MOUSE_ENABLE //rules.mk
-#ifdef MOUSE_ENABLE
-# define MOU
-#endif
-
-//#define EXTRAKEY_ENABLE //rules.mk
-#ifdef EXTRAKEY_ENABLE
-# define EXK
-#endif
-
-//#define RAW_ENABLE //rules.mk
-#ifdef RAW_ENABLE
-# define RAW
-#endif
-
-//#define CONSOLE_ENABLE //rules.mk
-#ifdef CONSOLE_ENABLE
-# define CON
-#endif
-
-//#define NKRO_ENABLE //rules.mk
-#ifdef NKRO_ENABLE
-# define NKRO
-#endif
-
-//#define MIDI_ENABLE //deferred implementation
-//#ifdef MIDI_ENABLE
-//#define MIDI
-//#endif
-
-//#define VIRTSER_ENABLE //rules.mk
#ifdef VIRTSER_ENABLE
-# define CDC
// because CDC uses IAD (interface association descriptor
// per USB Interface Association Descriptor Device Class Code and Use Model 7/23/2003 Rev 1.0)
-# undef DEVICE_CLASS
# define DEVICE_CLASS 0xEF
-# undef DEVICE_SUBCLASS
# define DEVICE_SUBCLASS 0x02
-# undef DEVICE_PROTOCOL
# define DEVICE_PROTOCOL 0x01
+#else
+# define DEVICE_CLASS 0x00
+# define DEVICE_SUBCLASS 0x00
+# define DEVICE_PROTOCOL 0x00
#endif
/* number of interfaces */
#define NEXT_INTERFACE_0 0
-#ifdef KBD
-# define KEYBOARD_INTERFACE NEXT_INTERFACE_0
-# define NEXT_INTERFACE_1 (KEYBOARD_INTERFACE + 1)
-# define UDI_HID_KBD_IFACE_NUMBER KEYBOARD_INTERFACE
-#else
-# define NEXT_INTERFACE_1 NEXT_INTERFACE_0
-#endif
+#define KEYBOARD_INTERFACE NEXT_INTERFACE_0
+#define NEXT_INTERFACE_1 (KEYBOARD_INTERFACE + 1)
+#define UDI_HID_KBD_IFACE_NUMBER KEYBOARD_INTERFACE
// It is important that the Raw HID interface is at a constant
// interface number, to support Linux/OSX platforms and chrome.hid
// If Raw HID is enabled, let it be always 1.
-#ifdef RAW
+#ifdef RAW_ENABLE
# define RAW_INTERFACE NEXT_INTERFACE_1
# define NEXT_INTERFACE_2 (RAW_INTERFACE + 1)
#else
# define NEXT_INTERFACE_2 NEXT_INTERFACE_1
#endif
-#ifdef MOU
+#ifdef MOUSE_ENABLE
# define MOUSE_INTERFACE NEXT_INTERFACE_2
# define UDI_HID_MOU_IFACE_NUMBER MOUSE_INTERFACE
# define NEXT_INTERFACE_3 (MOUSE_INTERFACE + 1)
@@ -101,7 +60,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define NEXT_INTERFACE_3 NEXT_INTERFACE_2
#endif
-#ifdef EXK
+#ifdef EXTRAKEY_ENABLE
# define EXTRAKEY_INTERFACE NEXT_INTERFACE_3
# define NEXT_INTERFACE_4 (EXTRAKEY_INTERFACE + 1)
# define UDI_HID_EXK_IFACE_NUMBER EXTRAKEY_INTERFACE
@@ -109,7 +68,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define NEXT_INTERFACE_4 NEXT_INTERFACE_3
#endif
-#ifdef CON
+#ifdef CONSOLE_ENABLE
# define CON_INTERFACE NEXT_INTERFACE_4
# define NEXT_INTERFACE_5 (CON_INTERFACE + 1)
# define UDI_HID_CON_IFACE_NUMBER CON_INTERFACE
@@ -117,7 +76,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define NEXT_INTERFACE_5 NEXT_INTERFACE_4
#endif
-#ifdef NKRO
+#ifdef NKRO_ENABLE
# define NKRO_INTERFACE NEXT_INTERFACE_5
# define NEXT_INTERFACE_6 (NKRO_INTERFACE + 1)
# define UDI_HID_NKRO_IFACE_NUMBER NKRO_INTERFACE
@@ -125,7 +84,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define NEXT_INTERFACE_6 NEXT_INTERFACE_5
#endif
-#ifdef MIDI
+#ifdef MIDI_ENABLE
# define AC_INTERFACE NEXT_INTERFACE_6
# define AS_INTERFACE (AC_INTERFACE + 1)
# define NEXT_INTERFACE_7 (AS_INTERFACE + 1)
@@ -133,7 +92,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define NEXT_INTERFACE_7 NEXT_INTERFACE_6
#endif
-#ifdef CDC
+#ifdef VIRTSER_ENABLE
# define CCI_INTERFACE NEXT_INTERFACE_7
# define CDI_INTERFACE (CCI_INTERFACE + 1)
# define NEXT_INTERFACE_8 (CDI_INTERFACE + 1)
@@ -155,20 +114,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define NEXT_IN_EPNUM_0 1
#define NEXT_OUT_EPNUM_0 1
-#ifdef KBD
-# define KEYBOARD_IN_EPNUM NEXT_IN_EPNUM_0
-# define UDI_HID_KBD_EP_IN KEYBOARD_IN_EPNUM
-# define NEXT_IN_EPNUM_1 (KEYBOARD_IN_EPNUM + 1)
-# define UDI_HID_KBD_EP_SIZE KEYBOARD_EPSIZE
-# define KBD_POLLING_INTERVAL 10
-# ifndef UDI_HID_KBD_STRING_ID
-# define UDI_HID_KBD_STRING_ID 0
-# endif
-#else
-# define NEXT_IN_EPNUM_1 NEXT_IN_EPNUM_0
+#define KEYBOARD_IN_EPNUM NEXT_IN_EPNUM_0
+#define UDI_HID_KBD_EP_IN KEYBOARD_IN_EPNUM
+#define NEXT_IN_EPNUM_1 (KEYBOARD_IN_EPNUM + 1)
+#define UDI_HID_KBD_EP_SIZE KEYBOARD_EPSIZE
+#define KBD_POLLING_INTERVAL 10
+#ifndef UDI_HID_KBD_STRING_ID
+# define UDI_HID_KBD_STRING_ID 0
#endif
-#ifdef MOU
+#ifdef MOUSE_ENABLE
# define MOUSE_IN_EPNUM NEXT_IN_EPNUM_1
# define NEXT_IN_EPNUM_2 (MOUSE_IN_EPNUM + 1)
# 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/>.
# define NEXT_IN_EPNUM_2 NEXT_IN_EPNUM_1
#endif
-#ifdef EXK
+#ifdef EXTRAKEY_ENABLE
# define EXTRAKEY_IN_EPNUM NEXT_IN_EPNUM_2
# define UDI_HID_EXK_EP_IN EXTRAKEY_IN_EPNUM
# 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/>.
# define NEXT_IN_EPNUM_3 NEXT_IN_EPNUM_2
#endif
-#ifdef RAW
+#ifdef RAW_ENABLE
# define RAW_IN_EPNUM NEXT_IN_EPNUM_3
# define UDI_HID_RAW_EP_IN RAW_IN_EPNUM
# 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/>.
# define NEXT_OUT_EPNUM_1 NEXT_OUT_EPNUM_0
#endif
-#ifdef CON
+#ifdef CONSOLE_ENABLE
# define CON_IN_EPNUM NEXT_IN_EPNUM_4
# define UDI_HID_CON_EP_IN CON_IN_EPNUM
# 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/>.
# define NEXT_OUT_EPNUM_2 NEXT_OUT_EPNUM_1
#endif
-#ifdef NKRO
+#ifdef NKRO_ENABLE
# define NKRO_IN_EPNUM NEXT_IN_EPNUM_5
# define UDI_HID_NKRO_EP_IN NKRO_IN_EPNUM
# 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/>.
# define NEXT_IN_EPNUM_6 NEXT_IN_EPNUM_5
#endif
-#ifdef MIDI
+#ifdef MIDI_ENABLE
# define MIDI_STREAM_IN_EPNUM NEXT_IN_EPNUM_6
# define NEXT_IN_EPNUM_7 (MIDI_STREAM_IN_EPNUM + 1)
# 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/>.
# define NEXT_OUT_EPNUM_3 NEXT_OUT_EPNUM_2
#endif
-#ifdef CDC
+#ifdef VIRTSER_ENABLE
# define CDC_NOTIFICATION_EPNUM NEXT_IN_EPNUM_7
# define CDC_ACM_ENDPOINT CDC_NOTIFICATION_EPNUM
# define CDC_TX_ENDPOINT (CDC_NOTIFICATION_EPNUM + 1)
@@ -285,8 +240,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// **********************************************************************
// KBD Descriptor structure and content
// **********************************************************************
-#ifdef KBD
-
COMPILER_PACK_SET(1)
typedef struct {
@@ -299,8 +252,40 @@ typedef struct {
uint8_t array[59];
} udi_hid_kbd_report_desc_t;
-# define UDI_HID_KBD_DESC \
- { .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, }
+// clang-format off
+
+# define UDI_HID_KBD_DESC { \
+ .iface = { \
+ .bLength = sizeof(usb_iface_desc_t), \
+ .bDescriptorType = USB_DT_INTERFACE, \
+ .bInterfaceNumber = UDI_HID_KBD_IFACE_NUMBER, \
+ .bAlternateSetting = 0, \
+ .bNumEndpoints = 1, \
+ .bInterfaceClass = HID_CLASS, \
+ .bInterfaceSubClass = HID_SUB_CLASS_BOOT, \
+ .bInterfaceProtocol = HID_PROTOCOL_KEYBOARD, \
+ .iInterface = UDI_HID_KBD_STRING_ID, \
+ }, \
+ .hid = { \
+ .bLength = sizeof(usb_hid_descriptor_t), \
+ .bDescriptorType = USB_DT_HID, \
+ .bcdHID = LE16(USB_HID_BDC_V1_11), \
+ .bCountryCode = USB_HID_NO_COUNTRY_CODE, \
+ .bNumDescriptors = USB_HID_NUM_DESC, \
+ .bRDescriptorType = USB_DT_HID_REPORT, \
+ .wDescriptorLength = LE16(sizeof(udi_hid_kbd_report_desc_t)), \
+ }, \
+ .ep = { \
+ .bLength = sizeof(usb_ep_desc_t), \
+ .bDescriptorType = USB_DT_ENDPOINT, \
+ .bEndpointAddress = UDI_HID_KBD_EP_IN | USB_EP_DIR_IN, \
+ .bmAttributes = USB_EP_TYPE_INTERRUPT, \
+ .wMaxPacketSize = LE16(UDI_HID_KBD_EP_SIZE), \
+ .bInterval = KBD_POLLING_INTERVAL \
+ } \
+}
+
+// clang-format on
// set report buffer (from host)
extern uint8_t udi_hid_kbd_report_set;
@@ -311,12 +296,10 @@ extern uint8_t udi_hid_kbd_report[UDI_HID_KBD_REPORT_SIZE];
COMPILER_PACK_RESET()
-#endif // KBD
-
// **********************************************************************
// EXK Descriptor structure and content
// **********************************************************************
-#ifdef EXK
+#ifdef EXTRAKEY_ENABLE
COMPILER_PACK_SET(1)
@@ -330,8 +313,40 @@ typedef struct {
uint8_t array[50];
} udi_hid_exk_report_desc_t;
-# define UDI_HID_EXK_DESC \
- { .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, }
+// clang-format off
+
+# define UDI_HID_EXK_DESC { \
+ .iface = { \
+ .bLength = sizeof(usb_iface_desc_t), \
+ .bDescriptorType = USB_DT_INTERFACE, \
+ .bInterfaceNumber = UDI_HID_EXK_IFACE_NUMBER, \
+ .bAlternateSetting = 0, \
+ .bNumEndpoints = 1, \
+ .bInterfaceClass = HID_CLASS, \
+ .bInterfaceSubClass = HID_SUB_CLASS_BOOT, \
+ .bInterfaceProtocol = HID_PROTOCOL_GENERIC, \
+ .iInterface = UDI_HID_EXK_STRING_ID \
+ }, \
+ .hid = { \
+ .bLength = sizeof(usb_hid_descriptor_t), \
+ .bDescriptorType = USB_DT_HID, \
+ .bcdHID = LE16(USB_HID_BDC_V1_11), \
+ .bCountryCode = USB_HID_NO_COUNTRY_CODE, \
+ .bNumDescriptors = USB_HID_NUM_DESC, \
+ .bRDescriptorType = USB_DT_HID_REPORT, \
+ .wDescriptorLength = LE16(sizeof(udi_hid_exk_report_desc_t)) \
+ }, \
+ .ep = { \
+ .bLength = sizeof(usb_ep_desc_t), \
+ .bDescriptorType = USB_DT_ENDPOINT, \
+ .bEndpointAddress = UDI_HID_EXK_EP_IN | USB_EP_DIR_IN, \
+ .bmAttributes = USB_EP_TYPE_INTERRUPT, \
+ .wMaxPacketSize = LE16(UDI_HID_EXK_EP_SIZE), \
+ .bInterval = EXTRAKEY_POLLING_INTERVAL \
+ } \
+}
+
+// clang-format on
// set report buffer (from host)
extern uint8_t udi_hid_exk_report_set;
@@ -351,12 +366,12 @@ extern udi_hid_exk_report_t udi_hid_exk_report;
COMPILER_PACK_RESET()
-#endif // EXK
+#endif // EXTRAKEY_ENABLE
// **********************************************************************
// NKRO Descriptor structure and content
// **********************************************************************
-#ifdef NKRO
+#ifdef NKRO_ENABLE
COMPILER_PACK_SET(1)
@@ -370,8 +385,40 @@ typedef struct {
uint8_t array[57];
} udi_hid_nkro_report_desc_t;
-# define UDI_HID_NKRO_DESC \
- { .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, }
+// clang-format off
+
+# define UDI_HID_NKRO_DESC { \
+ .iface = { \
+ .bLength = sizeof(usb_iface_desc_t), \
+ .bDescriptorType = USB_DT_INTERFACE, \
+ .bInterfaceNumber = UDI_HID_NKRO_IFACE_NUMBER, \
+ .bAlternateSetting = 0, \
+ .bNumEndpoints = 1, \
+ .bInterfaceClass = HID_CLASS, \
+ .bInterfaceSubClass = HID_SUB_CLASS_NOBOOT, \
+ .bInterfaceProtocol = HID_PROTOCOL_KEYBOARD, \
+ .iInterface = UDI_HID_NKRO_STRING_ID \
+ }, \
+ .hid = { \
+ .bLength = sizeof(usb_hid_descriptor_t), \
+ .bDescriptorType = USB_DT_HID, \
+ .bcdHID = LE16(USB_HID_BDC_V1_11), \
+ .bCountryCode = USB_HID_NO_COUNTRY_CODE, \
+ .bNumDescriptors = USB_HID_NUM_DESC, \
+ .bRDescriptorType = USB_DT_HID_REPORT, \
+ .wDescriptorLength = LE16(sizeof(udi_hid_nkro_report_desc_t)) \
+ }, \
+ .ep = { \
+ .bLength = sizeof(usb_ep_desc_t), \
+ .bDescriptorType = USB_DT_ENDPOINT, \
+ .bEndpointAddress = UDI_HID_NKRO_EP_IN | USB_EP_DIR_IN, \
+ .bmAttributes = USB_EP_TYPE_INTERRUPT, \
+ .wMaxPacketSize = LE16(UDI_HID_NKRO_EP_SIZE), \
+ .bInterval = NKRO_POLLING_INTERVAL \
+ } \
+}
+
+// clang-format on
// set report buffer
extern uint8_t udi_hid_nkro_report_set;
@@ -382,12 +429,12 @@ extern uint8_t udi_hid_nkro_report[UDI_HID_NKRO_REPORT_SIZE];
COMPILER_PACK_RESET()
-#endif // NKRO
+#endif // NKRO_ENABLE
// **********************************************************************
// MOU Descriptor structure and content
// **********************************************************************
-#ifdef MOU
+#ifdef MOUSE_ENABLE
COMPILER_PACK_SET(1)
@@ -401,10 +448,40 @@ typedef struct {
uint8_t array[77]; // MOU PDS
} udi_hid_mou_report_desc_t;
-# define UDI_HID_MOU_DESC \
- { .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, }
-
-// no set report buffer
+// clang-format off
+
+# define UDI_HID_MOU_DESC { \
+ .iface = { \
+ .bLength = sizeof(usb_iface_desc_t), \
+ .bDescriptorType = USB_DT_INTERFACE, \
+ .bInterfaceNumber = MOUSE_INTERFACE, \
+ .bAlternateSetting = 0, \
+ .bNumEndpoints = 1, \
+ .bInterfaceClass = HID_CLASS, \
+ .bInterfaceSubClass = HID_SUB_CLASS_BOOT, \
+ .bInterfaceProtocol = HID_PROTOCOL_MOUSE, \
+ .iInterface = UDI_HID_MOU_STRING_ID \
+ }, \
+ .hid = { \
+ .bLength = sizeof(usb_hid_descriptor_t), \
+ .bDescriptorType = USB_DT_HID, \
+ .bcdHID = LE16(USB_HID_BDC_V1_11), \
+ .bCountryCode = USB_HID_NO_COUNTRY_CODE, \
+ .bNumDescriptors = USB_HID_NUM_DESC, \
+ .bRDescriptorType = USB_DT_HID_REPORT, \
+ .wDescriptorLength = LE16(sizeof(udi_hid_mou_report_desc_t)) \
+ }, \
+ .ep = { \
+ .bLength = sizeof(usb_ep_desc_t), \
+ .bDescriptorType = USB_DT_ENDPOINT, \
+ .bEndpointAddress = UDI_HID_MOU_EP_IN | USB_EP_DIR_IN, \
+ .bmAttributes = USB_EP_TYPE_INTERRUPT, \
+ .wMaxPacketSize = LE16(UDI_HID_MOU_EP_SIZE), \
+ .bInterval = MOU_POLLING_INTERVAL \
+ } \
+}
+
+// clang-format on
// report buffer
# 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];
COMPILER_PACK_RESET()
-#endif // MOU
+#endif // MOUSE_ENABLE
// **********************************************************************
// RAW Descriptor structure and content
// **********************************************************************
-#ifdef RAW
+#ifdef RAW_ENABLE
COMPILER_PACK_SET(1)
@@ -432,11 +509,48 @@ typedef struct {
uint8_t array[26];
} udi_hid_raw_report_desc_t;
-# define UDI_HID_RAW_DESC \
- { \
- .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, \
- .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, \
- }
+// clang-format off
+
+# define UDI_HID_RAW_DESC { \
+ .iface = { \
+ .bLength = sizeof(usb_iface_desc_t), \
+ .bDescriptorType = USB_DT_INTERFACE, \
+ .bInterfaceNumber = RAW_INTERFACE, \
+ .bAlternateSetting = 0, \
+ .bNumEndpoints = 2, \
+ .bInterfaceClass = HID_CLASS, \
+ .bInterfaceSubClass = HID_SUB_CLASS_NOBOOT, \
+ .bInterfaceProtocol = HID_SUB_CLASS_NOBOOT, \
+ .iInterface = UDI_HID_RAW_STRING_ID \
+ }, \
+ .hid = { \
+ .bLength = sizeof(usb_hid_descriptor_t), \
+ .bDescriptorType = USB_DT_HID, \
+ .bcdHID = LE16(USB_HID_BDC_V1_11), \
+ .bCountryCode = USB_HID_NO_COUNTRY_CODE, \
+ .bNumDescriptors = USB_HID_NUM_DESC, \
+ .bRDescriptorType = USB_DT_HID_REPORT, \
+ .wDescriptorLength = LE16(sizeof(udi_hid_raw_report_desc_t)) \
+ }, \
+ .ep_out = { \
+ .bLength = sizeof(usb_ep_desc_t), \
+ .bDescriptorType = USB_DT_ENDPOINT, \
+ .bEndpointAddress = UDI_HID_RAW_EP_OUT | USB_EP_DIR_OUT, \
+ .bmAttributes = USB_EP_TYPE_INTERRUPT, \
+ .wMaxPacketSize = LE16(RAW_EPSIZE), \
+ .bInterval = RAW_POLLING_INTERVAL \
+ }, \
+ .ep_in = { \
+ .bLength = sizeof(usb_ep_desc_t), \
+ .bDescriptorType = USB_DT_ENDPOINT, \
+ .bEndpointAddress = UDI_HID_RAW_EP_IN | USB_EP_DIR_IN, \
+ .bmAttributes = USB_EP_TYPE_INTERRUPT, \
+ .wMaxPacketSize = LE16(RAW_EPSIZE), \
+ .bInterval = RAW_POLLING_INTERVAL \
+ } \
+}
+
+// clang-format on
# define UDI_HID_RAW_REPORT_SIZE RAW_EPSIZE
@@ -447,12 +561,12 @@ extern uint8_t udi_hid_raw_report[UDI_HID_RAW_REPORT_SIZE];
COMPILER_PACK_RESET()
-#endif // RAW
+#endif // RAW_ENABLE
// **********************************************************************
// CON Descriptor structure and content
// **********************************************************************
-#ifdef CON
+#ifdef CONSOLE_ENABLE
COMPILER_PACK_SET(1)
@@ -467,11 +581,48 @@ typedef struct {
uint8_t array[34];
} udi_hid_con_report_desc_t;
-# define UDI_HID_CON_DESC \
- { \
- .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, \
- .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, \
- }
+// clang-format off
+
+# define UDI_HID_CON_DESC { \
+ .iface = { \
+ .bLength = sizeof(usb_iface_desc_t), \
+ .bDescriptorType = USB_DT_INTERFACE, \
+ .bInterfaceNumber = UDI_HID_CON_IFACE_NUMBER, \
+ .bAlternateSetting = 0, \
+ .bNumEndpoints = 2, \
+ .bInterfaceClass = HID_CLASS, \
+ .bInterfaceSubClass = HID_SUB_CLASS_NOBOOT, \
+ .bInterfaceProtocol = HID_SUB_CLASS_NOBOOT, \
+ .iInterface = UDI_HID_CON_STRING_ID \
+ }, \
+ .hid = { \
+ .bLength = sizeof(usb_hid_descriptor_t), \
+ .bDescriptorType = USB_DT_HID, \
+ .bcdHID = LE16(USB_HID_BDC_V1_11), \
+ .bCountryCode = USB_HID_NO_COUNTRY_CODE, \
+ .bNumDescriptors = USB_HID_NUM_DESC, \
+ .bRDescriptorType = USB_DT_HID_REPORT, \
+ .wDescriptorLength = LE16(sizeof(udi_hid_con_report_desc_t)) \
+ }, \
+ .ep_out = { \
+ .bLength = sizeof(usb_ep_desc_t), \
+ .bDescriptorType = USB_DT_ENDPOINT, \
+ .bEndpointAddress = UDI_HID_CON_EP_OUT | USB_EP_DIR_OUT, \
+ .bmAttributes = USB_EP_TYPE_INTERRUPT, \
+ .wMaxPacketSize = LE16(CONSOLE_EPSIZE), \
+ .bInterval = CON_POLLING_INTERVAL \
+ }, \
+ .ep_in = { \
+ .bLength = sizeof(usb_ep_desc_t), \
+ .bDescriptorType = USB_DT_ENDPOINT, \
+ .bEndpointAddress = UDI_HID_CON_EP_IN | USB_EP_DIR_IN, \
+ .bmAttributes = USB_EP_TYPE_INTERRUPT, \
+ .wMaxPacketSize = LE16(CONSOLE_EPSIZE), \
+ .bInterval = CON_POLLING_INTERVAL \
+ } \
+}
+
+// clang-format on
# define UDI_HID_CON_REPORT_SIZE CONSOLE_EPSIZE
@@ -482,12 +633,12 @@ extern uint8_t udi_hid_con_report[UDI_HID_CON_REPORT_SIZE];
COMPILER_PACK_RESET()
-#endif // CON
+#endif // CONSOLE_ENABLE
// **********************************************************************
// CDC Descriptor structure and content
// **********************************************************************
-#ifdef CDC
+#ifdef VIRTSER_ENABLE
COMPILER_PACK_SET(1)
@@ -534,16 +685,98 @@ typedef struct {
usb_ep_desc_t ep_rx;
} udi_cdc_desc_t;
-# define CDC_DESCRIPTOR \
- { \
- .iaface.bLength