diff options
author | Enochen <darakath1128@gmail.com> | 2018-07-09 21:12:59 -0400 |
---|---|---|
committer | Drashna Jaelre <drashna@live.com> | 2018-07-09 18:12:59 -0700 |
commit | 5477bf39bfc01468ea8c09f025cf9c5ee3efd1b7 (patch) | |
tree | 06d8c55b03a5ae89353f137e939a531b39d6d43c /keyboards/hhkb/rn42/main.c | |
parent | a345458fa9ce98b1e69e6a02dbc611fb5a0fe78d (diff) |
add hhkb bluetooth functionality (rn42) (#2693)
* add hhkb bluetooth functionality (rn42)
pretty much straight from tmk
some minor changes to make things work
* hhkb jp personal keymap
* Revert "hhkb jp personal keymap"
This reverts commit 886713d8bb98572f03110f285706a8140a083892.
Diffstat (limited to 'keyboards/hhkb/rn42/main.c')
-rw-r--r-- | keyboards/hhkb/rn42/main.c | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/keyboards/hhkb/rn42/main.c b/keyboards/hhkb/rn42/main.c new file mode 100644 index 0000000000..8ec9220a27 --- /dev/null +++ b/keyboards/hhkb/rn42/main.c @@ -0,0 +1,106 @@ +#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" +#include "matrix.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(); + +#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(); + } +}
\ No newline at end of file |