hhkb: Integrate RN-42 support, remove hhkb_rn42
This commit is contained in:
parent
ce66988650
commit
099701dd31
32 changed files with 69 additions and 1004 deletions
111
keyboard/hhkb/rn42/main.c
Normal file
111
keyboard/hhkb/rn42/main.c
Normal file
|
@ -0,0 +1,111 @@
|
|||
#include <avr/io.h>
|
||||
#include <avr/power.h>
|
||||
#include <avr/wdt.h>
|
||||
#include "lufa.h"
|
||||
#include "print.h"
|
||||
#include "sendchar.h"
|
||||
#include "rn42.h"
|
||||
#include "rn42_task.h"
|
||||
#include "serial.h"
|
||||
#include "keyboard.h"
|
||||
#include "keycode.h"
|
||||
#include "action.h"
|
||||
#include "action_util.h"
|
||||
#include "wait.h"
|
||||
#include "suart.h"
|
||||
#include "suspend.h"
|
||||
|
||||
static int8_t sendchar_func(uint8_t c)
|
||||
{
|
||||
xmit(c); // SUART
|
||||
sendchar(c); // LUFA
|
||||
return 0;
|
||||
}
|
||||
|
||||
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_func);
|
||||
|
||||
// SUART PD0:output, PD1:input
|
||||
DDRD |= (1<<0);
|
||||
PORTD |= (1<<0);
|
||||
DDRD &= ~(1<<1);
|
||||
PORTD |= (1<<1);
|
||||
}
|
||||
|
||||
int main(void) __attribute__ ((weak));
|
||||
int main(void)
|
||||
{
|
||||
SetupHardware();
|
||||
sei();
|
||||
|
||||
/* wait for USB startup to get ready for debug output */
|
||||
uint8_t timeout = 255; // timeout when USB is not available(Bluetooth)
|
||||
while (timeout-- && USB_DeviceState != DEVICE_STATE_Configured) {
|
||||
wait_ms(4);
|
||||
#if defined(INTERRUPT_CONTROL_ENDPOINT)
|
||||
;
|
||||
#else
|
||||
USB_USBTask();
|
||||
#endif
|
||||
}
|
||||
print("\nUSB init\n");
|
||||
|
||||
rn42_init();
|
||||
rn42_task_init();
|
||||
print("RN-42 init\n");
|
||||
|
||||
/* init modules */
|
||||
keyboard_init();
|
||||
|
||||
if (!rn42_rts()) {
|
||||
host_set_driver(&rn42_driver);
|
||||
} else {
|
||||
host_set_driver(&lufa_driver);
|
||||
}
|
||||
|
||||
#ifdef SLEEP_LED_ENABLE
|
||||
sleep_led_init();
|
||||
#endif
|
||||
|
||||
print("Keyboard start\n");
|
||||
while (1) {
|
||||
while (rn42_rts() && // RN42 is off
|
||||
USB_DeviceState == DEVICE_STATE_Suspended) {
|
||||
print("[s]");
|
||||
matrix_power_down();
|
||||
suspend_power_down();
|
||||
suspend_power_down();
|
||||
suspend_power_down();
|
||||
suspend_power_down();
|
||||
suspend_power_down();
|
||||
suspend_power_down();
|
||||
suspend_power_down();
|
||||
if (USB_Device_RemoteWakeupEnabled && suspend_wakeup_condition()) {
|
||||
USB_Device_SendRemoteWakeup();
|
||||
}
|
||||
}
|
||||
|
||||
keyboard_task();
|
||||
|
||||
#if !defined(INTERRUPT_CONTROL_ENDPOINT)
|
||||
USB_USBTask();
|
||||
#endif
|
||||
|
||||
rn42_task();
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue