diff options
Diffstat (limited to 'protocol/lufa')
| -rw-r--r-- | protocol/lufa/lufa.c | 96 | ||||
| -rw-r--r-- | protocol/lufa/lufa.h | 11 | 
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; | 
