diff options
author | tmk <nobody@nowhere> | 2014-06-25 06:57:36 +0200 |
---|---|---|
committer | tmk <nobody@nowhere> | 2014-07-30 07:38:25 +0200 |
commit | 4069776c022502f117b83b66c5a71700135acfbc (patch) | |
tree | d1259941dc233d6fe553edeeee7cce24cbf2b647 /keyboard/hhkb_rn42/main.c | |
parent | ea60dae6e69bd3b120f2f702aeea691cb6d3d790 (diff) | |
download | qmk_firmware-4069776c022502f117b83b66c5a71700135acfbc.tar.gz qmk_firmware-4069776c022502f117b83b66c5a71700135acfbc.tar.xz |
Add initial files for RN-42
Diffstat (limited to 'keyboard/hhkb_rn42/main.c')
-rw-r--r-- | keyboard/hhkb_rn42/main.c | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/keyboard/hhkb_rn42/main.c b/keyboard/hhkb_rn42/main.c new file mode 100644 index 000000000..b6a8456f7 --- /dev/null +++ b/keyboard/hhkb_rn42/main.c @@ -0,0 +1,67 @@ +#include <avr/io.h> +#include <avr/power.h> +#include <avr/wdt.h> +#include "lufa.h" +#include "print.h" +#include "sendchar.h" + + +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(); + print_set_sendchar(sendchar); +} + +int main(void) __attribute__ ((weak)); +int main(void) +{ + SetupHardware(); + sei(); + + /* wait for USB startup & debug output */ + while (USB_DeviceState != DEVICE_STATE_Configured) { +#if defined(INTERRUPT_CONTROL_ENDPOINT) + ; +#else + USB_USBTask(); +#endif + } + print("USB configured.\n"); + + /* init modules */ + keyboard_init(); + host_set_driver(&lufa_driver); +#ifdef SLEEP_LED_ENABLE + sleep_led_init(); +#endif + + print("Keyboard start.\n"); + while (1) { + while (USB_DeviceState == DEVICE_STATE_Suspended) { + suspend_power_down(); + if (USB_Device_RemoteWakeupEnabled && suspend_wakeup_condition()) { + USB_Device_SendRemoteWakeup(); + } + } + + keyboard_task(); + +#if !defined(INTERRUPT_CONTROL_ENDPOINT) + USB_USBTask(); +#endif + } +} + |