summaryrefslogtreecommitdiffstats
path: root/keyboards/hhkb/rn42/main.c
diff options
context:
space:
mode:
authorEnochen <darakath1128@gmail.com>2018-07-10 03:12:59 +0200
committerDrashna Jaelre <drashna@live.com>2018-07-10 03:12:59 +0200
commit5477bf39bfc01468ea8c09f025cf9c5ee3efd1b7 (patch)
tree06d8c55b03a5ae89353f137e939a531b39d6d43c /keyboards/hhkb/rn42/main.c
parenta345458fa9ce98b1e69e6a02dbc611fb5a0fe78d (diff)
downloadqmk_firmware-5477bf39bfc01468ea8c09f025cf9c5ee3efd1b7.tar.gz
qmk_firmware-5477bf39bfc01468ea8c09f025cf9c5ee3efd1b7.tar.xz
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.c106
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 000000000..8ec9220a2
--- /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