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.
This commit is contained in:
parent
a345458fa9
commit
5477bf39bf
14 changed files with 2040 additions and 0 deletions
106
keyboards/hhkb/rn42/main.c
Normal file
106
keyboards/hhkb/rn42/main.c
Normal file
|
@ -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();
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue