2 * (c) 2015 flabberast <s3+flabbergast@sdfeu.org>
4 * Based on the following work:
5 * - Guillaume Duc's raw hid example (MIT License)
6 * https://github.com/guiduc/usb-hid-chibios-example
7 * - PJRC Teensy examples (MIT License)
8 * https://www.pjrc.com/teensy/usb_keyboard.html
9 * - hasu's TMK keyboard code (GPL v2 and some code Modified BSD)
10 * https://github.com/tmk/tmk_keyboard/
11 * - ChibiOS demo code (Apache 2.0 License)
12 * http://www.chibios.org
14 * Since some GPL'd code is used, this work is licensed under
23 // extern uint8_t blinkLed;
28 /* -------------------------
29 * General USB driver header
30 * -------------------------
33 /* The USB driver to use */
34 #define USB_DRIVER USBD1
36 /* Initialize the USB driver and bus */
37 void init_usb_driver(USBDriver *usbp);
44 /* main keyboard (6kro) */
45 #define KBD_INTERFACE 0
46 #define KBD_ENDPOINT 1
48 #define KBD_REPORT_KEYS (KBD_EPSIZE - 2)
50 /* secondary keyboard */
52 #define NKRO_INTERFACE 4
53 #define NKRO_ENDPOINT 5
54 #define NKRO_EPSIZE 16
55 #define NKRO_REPORT_KEYS (NKRO_EPSIZE - 1)
58 /* extern report_keyboard_t keyboard_report_sent; */
60 /* keyboard IN request callback handler */
61 void kbd_in_cb(USBDriver *usbp, usbep_t ep);
63 /* start-of-frame handler */
64 void kbd_sof_cb(USBDriver *usbp);
67 /* nkro IN callback hander */
68 void nkro_in_cb(USBDriver *usbp, usbep_t ep);
69 #endif /* NKRO_ENABLE */
78 #define MOUSE_INTERFACE 1
79 #define MOUSE_ENDPOINT 2
80 #define MOUSE_EPSIZE 8
82 /* mouse IN request callback handler */
83 void mouse_in_cb(USBDriver *usbp, usbep_t ep);
84 #endif /* MOUSE_ENABLE */
91 #ifdef EXTRAKEY_ENABLE
93 #define EXTRA_INTERFACE 3
94 #define EXTRA_ENDPOINT 4
95 #define EXTRA_EPSIZE 8
97 /* extrakey IN request callback handler */
98 void extra_in_cb(USBDriver *usbp, usbep_t ep);
100 /* extra report structure */
104 } __attribute__ ((packed)) report_extra_t;
105 #endif /* EXTRAKEY_ENABLE */
112 #ifdef CONSOLE_ENABLE
114 #define CONSOLE_INTERFACE 2
115 #define CONSOLE_ENDPOINT 3
116 #define CONSOLE_EPSIZE 16
118 /* Number of IN reports that can be stored inside the output queue */
119 #define CONSOLE_QUEUE_CAPACITY 4
121 /* Console flush time */
122 #define CONSOLE_FLUSH_MS 50
124 /* Putchar over the USB console */
125 int8_t sendchar(uint8_t c);
127 /* Flush output (send everything immediately) */
128 void console_flush_output(void);
130 /* console IN request callback handler */
131 void console_in_cb(USBDriver *usbp, usbep_t ep);
132 #endif /* CONSOLE_ENABLE */
134 void sendchar_pf(void *p, char c);
136 #endif /* _USB_MAIN_H_ */