]> git.donarmstrong.com Git - tmk_firmware.git/blob - keyboard/hhkb_rn42/main.c
b6a8456f7fa1ce9fc0169981c6092b3ca27abc8f
[tmk_firmware.git] / keyboard / hhkb_rn42 / main.c
1 #include <avr/io.h>
2 #include <avr/power.h>
3 #include <avr/wdt.h>
4 #include "lufa.h"
5 #include "print.h"
6 #include "sendchar.h"
7
8
9 static void SetupHardware(void)
10 {
11     /* Disable watchdog if enabled by bootloader/fuses */
12     MCUSR &= ~(1 << WDRF);
13     wdt_disable();
14
15     /* Disable clock division */
16     clock_prescale_set(clock_div_1);
17
18     // Leonardo needs. Without this USB device is not recognized.
19     USB_Disable();
20
21     USB_Init();
22
23     // for Console_Task
24     USB_Device_EnableSOFEvents();
25     print_set_sendchar(sendchar);
26 }
27
28 int main(void)  __attribute__ ((weak));
29 int main(void)
30 {
31     SetupHardware();
32     sei();
33
34     /* wait for USB startup & debug output */
35     while (USB_DeviceState != DEVICE_STATE_Configured) {
36 #if defined(INTERRUPT_CONTROL_ENDPOINT)
37         ;
38 #else
39         USB_USBTask();
40 #endif
41     }
42     print("USB configured.\n");
43
44     /* init modules */
45     keyboard_init();
46     host_set_driver(&lufa_driver);
47 #ifdef SLEEP_LED_ENABLE
48     sleep_led_init();
49 #endif
50
51     print("Keyboard start.\n");
52     while (1) {
53         while (USB_DeviceState == DEVICE_STATE_Suspended) {
54             suspend_power_down();
55             if (USB_Device_RemoteWakeupEnabled && suspend_wakeup_condition()) {
56                     USB_Device_SendRemoteWakeup();
57             }
58         }
59
60         keyboard_task();
61
62 #if !defined(INTERRUPT_CONTROL_ENDPOINT)
63         USB_USBTask();
64 #endif
65     }
66 }
67