summaryrefslogtreecommitdiff
path: root/protocol/lufa
diff options
context:
space:
mode:
authortmk <nobody@nowhere>2012-09-04 14:24:52 +0900
committertmk <nobody@nowhere>2012-09-04 14:24:52 +0900
commitdc79a8521946a3a2e5b86945b8043b87a8b8d78c (patch)
tree737827112555c00a7f2ebbb88e61079c460be71a /protocol/lufa
parent7350b7c6aa300a234244c264b10d1732803c27df (diff)
parent232ab308e358e41f3253d66fa009c1ebca0951a2 (diff)
Merge branch 'usb_hid'
Diffstat (limited to 'protocol/lufa')
-rw-r--r--protocol/lufa/lufa.c96
-rw-r--r--protocol/lufa/lufa.h11
2 files changed, 63 insertions, 44 deletions
diff --git a/protocol/lufa/lufa.c b/protocol/lufa/lufa.c
index b7ecb8488d..81409ce9ed 100644
--- a/protocol/lufa/lufa.c
+++ b/protocol/lufa/lufa.c
@@ -59,7 +59,7 @@ static void send_keyboard(report_keyboard_t *report);
static void send_mouse(report_mouse_t *report);
static void send_system(uint16_t data);
static void send_consumer(uint16_t data);
-static host_driver_t lufa_driver = {
+host_driver_t lufa_driver = {
keyboard_leds,
send_keyboard,
send_mouse,
@@ -68,49 +68,9 @@ static host_driver_t lufa_driver = {
};
-static void SetupHardware(void);
-static void Console_Task(void);
-
-int main(void)
-{
- SetupHardware();
- sei();
-
- print_enable = true;
- debug_enable = true;
- debug_matrix = true;
- debug_keyboard = true;
- debug_mouse = true;
-
- // TODO: can't print here
- debug("LUFA init\n");
-
- keyboard_init();
- host_set_driver(&lufa_driver);
- while (1) {
- keyboard_proc();
-
-#if !defined(INTERRUPT_CONTROL_ENDPOINT)
- USB_USBTask();
-#endif
- }
-}
-
-void SetupHardware(void)
-{
- /* Disable watchdog if enabled by bootloader/fuses */
- MCUSR &= ~(1 << WDRF);
- wdt_disable();
-
- /* Disable clock division */
- clock_prescale_set(clock_div_1);
-
- USB_Init();
-
- // for Console_Task
- USB_Device_EnableSOFEvents();
-}
-
+/*******************************************************************************
+ * Console
+ ******************************************************************************/
#ifdef CONSOLE_ENABLE
static void Console_Task(void)
{
@@ -446,3 +406,51 @@ int8_t sendchar(uint8_t c)
return 0;
}
#endif
+
+
+/*******************************************************************************
+ * main
+ ******************************************************************************/
+static void SetupHardware(void)
+{
+ /* Disable watchdog if enabled by bootloader/fuses */
+ MCUSR &= ~(1 << WDRF);
+ wdt_disable();
+
+ /* Disable clock division */
+ clock_prescale_set(clock_div_1);
+
+ // Leonardo needs. Without this USB device is not recognized.
+ USB_Disable();
+
+ USB_Init();
+
+ // for Console_Task
+ USB_Device_EnableSOFEvents();
+}
+
+int main(void) __attribute__ ((weak));
+int main(void)
+{
+ SetupHardware();
+ sei();
+
+ print_enable = true;
+ debug_enable = true;
+ debug_matrix = true;
+ debug_keyboard = true;
+ debug_mouse = true;
+
+ // TODO: can't print here
+ debug("LUFA init\n");
+
+ keyboard_init();
+ host_set_driver(&lufa_driver);
+ while (1) {
+ keyboard_proc();
+
+#if !defined(INTERRUPT_CONTROL_ENDPOINT)
+ USB_USBTask();
+#endif
+ }
+}
diff --git a/protocol/lufa/lufa.h b/protocol/lufa/lufa.h
index 71c279b0dc..bcee060d67 100644
--- a/protocol/lufa/lufa.h
+++ b/protocol/lufa/lufa.h
@@ -47,8 +47,19 @@
#include <string.h>
#include <LUFA/Version.h>
#include <LUFA/Drivers/USB/USB.h>
+#include "host.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern host_driver_t lufa_driver;
+
+#ifdef __cplusplus
+}
+#endif
+
/* extra report structure */
typedef struct {
uint8_t report_id;