Merge ChibiOS and LUFA descriptor support (#2362)
* Move lufa descriptor to protocol/usb_descriptor * Try to compile usb_descriptor on ChibiOS * Add lufa_utils for ChibiOS Lufa USB descriptors for ChibiOS * More lufa_util compatibility fixes * First compiling version of shared USB descriptor * Send the usb descriptors * Fix the CONSOLE output on ChibiOS * Add errors for unsupported interfaces * Enable support for vitual serial port USB descriptors * Implement virtual serial port for ChibiOS * Cleanup the lufa_utils Use the default lufa header files * Add raw hid support for ChibiOS This is completely untested * Enable midi compilation on ChibiOS * Move midi functionality out of lufa.c * Don't register sysex callback when not needed * ChibiOS compilation fixes * Update ChibiOS submodule * Fix the Midi USB descriptor It didn't work properly when both Midi and Virtual serial port was enabled. * Add MIDI support for ChibiOS * Fix USB descriptor strings on ChibiOS * Use serial usb driver for raw hid * Generalize the ChibiOS stream like drivers This makes the initialization much more simple and eliminates a lot of the code duplication. * Convert console output to chibios stream driver * Fixes for ChibiOS update * Update the ChibiOS contrib submodule To include the usb data toggle synchronization fixes * Fix duplicate reset enumeration on ChibiOS * Add missing include * Add number of endpoints check for ChibiOS * Enable serial USB driver on all keyboards * Add missing includes when API is enabled withot midi * Add another missing inlcude
This commit is contained in:
parent
63c16f4b63
commit
53ff8a31b6
38 changed files with 761 additions and 1237 deletions
42
tmk_core/protocol/chibios/lufa_utils/LUFA/Drivers/USB/USB.h
Normal file
42
tmk_core/protocol/chibios/lufa_utils/LUFA/Drivers/USB/USB.h
Normal file
|
@ -0,0 +1,42 @@
|
|||
#include "progmem.h"
|
||||
#include "stddef.h"
|
||||
#include "inttypes.h"
|
||||
|
||||
#define ATTR_PACKED __attribute__ ((packed))
|
||||
/** Concatenates the given input into a single token, via the C Preprocessor.
|
||||
*
|
||||
* \param[in] x First item to concatenate.
|
||||
* \param[in] y Second item to concatenate.
|
||||
*
|
||||
* \return Concatenated version of the input.
|
||||
*/
|
||||
#define CONCAT(x, y) x ## y
|
||||
|
||||
/** CConcatenates the given input into a single token after macro expansion, via the C Preprocessor.
|
||||
*
|
||||
* \param[in] x First item to concatenate.
|
||||
* \param[in] y Second item to concatenate.
|
||||
*
|
||||
* \return Concatenated version of the expanded input.
|
||||
*/
|
||||
#define CONCAT_EXPANDED(x, y) CONCAT(x, y)
|
||||
#define CPU_TO_LE16(x) (x)
|
||||
|
||||
// We don't need anything from the following files, or we have defined it already
|
||||
#define __LUFA_COMMON_H__
|
||||
#define __USBMODE_H__
|
||||
#define __USBEVENTS_H__
|
||||
#define __HIDPARSER_H__
|
||||
#define __USBCONTROLLER_AVR8_H__
|
||||
|
||||
#define __INCLUDE_FROM_USB_DRIVER
|
||||
#define __INCLUDE_FROM_HID_DRIVER
|
||||
#define __INCLUDE_FROM_CDC_DRIVER
|
||||
#define __INCLUDE_FROM_AUDIO_DRIVER
|
||||
#define __INCLUDE_FROM_MIDI_DRIVER
|
||||
#include "lib/lufa/LUFA/Drivers/USB/Class/Common/HIDClassCommon.h"
|
||||
#include "lib/lufa/LUFA/Drivers/USB/Class/Common/HIDReportData.h"
|
||||
#include "lib/lufa/LUFA/Drivers/USB/Class/Common/CDCClassCommon.h"
|
||||
#include "lib/lufa/LUFA/Drivers/USB/Class/Common/AudioClassCommon.h"
|
||||
#include "lib/lufa/LUFA/Drivers/USB/Class/Common/MIDIClassCommon.h"
|
||||
#include "lib/lufa/LUFA/Drivers/USB/Core/USBController.h"
|
|
@ -41,6 +41,9 @@
|
|||
#ifdef VISUALIZER_ENABLE
|
||||
#include "visualizer/visualizer.h"
|
||||
#endif
|
||||
#ifdef MIDI_ENABLE
|
||||
#include "qmk_midi.h"
|
||||
#endif
|
||||
#include "suspend.h"
|
||||
#include "wait.h"
|
||||
|
||||
|
@ -65,6 +68,17 @@ host_driver_t chibios_driver = {
|
|||
send_consumer
|
||||
};
|
||||
|
||||
#ifdef VIRTSER_ENABLE
|
||||
void virtser_task(void);
|
||||
#endif
|
||||
|
||||
#ifdef RAW_HID_ENABLE
|
||||
void raw_hid_task(void);
|
||||
#endif
|
||||
|
||||
#ifdef CONSOLE_ENABLE
|
||||
void console_task(void);
|
||||
#endif
|
||||
|
||||
/* TESTING
|
||||
* Amber LED blinker thread, times are in milliseconds.
|
||||
|
@ -104,6 +118,10 @@ int main(void) {
|
|||
/* init printf */
|
||||
init_printf(NULL,sendchar_pf);
|
||||
|
||||
#ifdef MIDI_ENABLE
|
||||
setup_midi();
|
||||
#endif
|
||||
|
||||
#ifdef SERIAL_LINK_ENABLE
|
||||
init_serial_link();
|
||||
#endif
|
||||
|
@ -182,5 +200,14 @@ int main(void) {
|
|||
}
|
||||
|
||||
keyboard_task();
|
||||
#ifdef CONSOLE_ENABLE
|
||||
console_task();
|
||||
#endif
|
||||
#ifdef VIRTSER_ENABLE
|
||||
virtser_task();
|
||||
#endif
|
||||
#ifdef RAW_HID_ENABLE
|
||||
raw_hid_task();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -41,20 +41,6 @@ void init_usb_driver(USBDriver *usbp);
|
|||
* ---------------
|
||||
*/
|
||||
|
||||
/* main keyboard (6kro) */
|
||||
#define KBD_INTERFACE 0
|
||||
#define KBD_ENDPOINT 1
|
||||
#define KBD_EPSIZE 8
|
||||
#define KBD_REPORT_KEYS (KBD_EPSIZE - 2)
|
||||
|
||||
/* secondary keyboard */
|
||||
#ifdef NKRO_ENABLE
|
||||
#define NKRO_INTERFACE 4
|
||||
#define NKRO_ENDPOINT 5
|
||||
#define NKRO_EPSIZE 16
|
||||
#define NKRO_REPORT_KEYS (NKRO_EPSIZE - 1)
|
||||
#endif
|
||||
|
||||
/* extern report_keyboard_t keyboard_report_sent; */
|
||||
|
||||
/* keyboard IN request callback handler */
|
||||
|
@ -75,10 +61,6 @@ void nkro_in_cb(USBDriver *usbp, usbep_t ep);
|
|||
|
||||
#ifdef MOUSE_ENABLE
|
||||
|
||||
#define MOUSE_INTERFACE 1
|
||||
#define MOUSE_ENDPOINT 2
|
||||
#define MOUSE_EPSIZE 8
|
||||
|
||||
/* mouse IN request callback handler */
|
||||
void mouse_in_cb(USBDriver *usbp, usbep_t ep);
|
||||
#endif /* MOUSE_ENABLE */
|
||||
|
@ -90,10 +72,6 @@ void mouse_in_cb(USBDriver *usbp, usbep_t ep);
|
|||
|
||||
#ifdef EXTRAKEY_ENABLE
|
||||
|
||||
#define EXTRA_INTERFACE 3
|
||||
#define EXTRA_ENDPOINT 4
|
||||
#define EXTRA_EPSIZE 8
|
||||
|
||||
/* extrakey IN request callback handler */
|
||||
void extra_in_cb(USBDriver *usbp, usbep_t ep);
|
||||
|
||||
|
@ -111,24 +89,12 @@ typedef struct {
|
|||
|
||||
#ifdef CONSOLE_ENABLE
|
||||
|
||||
#define CONSOLE_INTERFACE 2
|
||||
#define CONSOLE_ENDPOINT 3
|
||||
#define CONSOLE_EPSIZE 16
|
||||
|
||||
/* Number of IN reports that can be stored inside the output queue */
|
||||
#define CONSOLE_QUEUE_CAPACITY 4
|
||||
|
||||
/* Console flush time */
|
||||
#define CONSOLE_FLUSH_MS 50
|
||||
|
||||
/* Putchar over the USB console */
|
||||
int8_t sendchar(uint8_t c);
|
||||
|
||||
/* Flush output (send everything immediately) */
|
||||
void console_flush_output(void);
|
||||
|
||||
/* console IN request callback handler */
|
||||
void console_in_cb(USBDriver *usbp, usbep_t ep);
|
||||
#endif /* CONSOLE_ENABLE */
|
||||
|
||||
void sendchar_pf(void *p, char c);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue