From 4f121de7ad7782cde7d9d5c04adb3ef2561c5eaf Mon Sep 17 00:00:00 2001 From: tmk Date: Sun, 11 Jan 2015 02:39:32 +0900 Subject: rn42: Add rn42_getc and rn42_gets --- keyboard/hhkb_rn42/rn42/rn42.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'keyboard/hhkb_rn42/rn42/rn42.c') diff --git a/keyboard/hhkb_rn42/rn42/rn42.c b/keyboard/hhkb_rn42/rn42/rn42.c index 1565b4cf14..aa6015cbf2 100644 --- a/keyboard/hhkb_rn42/rn42/rn42.c +++ b/keyboard/hhkb_rn42/rn42/rn42.c @@ -4,6 +4,7 @@ #include "serial.h" #include "rn42.h" #include "print.h" +#include "timer.h" #include "wait.h" @@ -47,11 +48,39 @@ void rn42_init(void) serial_init(); } +int16_t rn42_getc(void) +{ + return serial_recv2(); +} + +char *rn42_gets(uint16_t timeout) +{ + static char s[16]; + uint16_t t = timer_read(); + uint8_t i = 0; + int16_t c; + while (i < 15 && timer_elapsed(t) < timeout) { + if ((c = rn42_getc()) != -1) { + if ((char)c == '\r') continue; + if ((char)c == '\n') break; + s[i++] = c; + } + } + s[i] = '\0'; + return s; +} + void rn42_putc(uint8_t c) { serial_send(c); } +void rn42_puts(char *s) +{ + while (*s) + serial_send(*s++); +} + bool rn42_autoconnecting(void) { // GPIO6 for control connection(high: auto connect, low: disconnect) -- cgit v1.2.3 From 3b3af3bae0deac7831c85847bae7729b0e281b8d Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 12 Jan 2015 04:32:53 +0900 Subject: Increase buffer of rn42_gets() and change rn42_linked() --- keyboard/hhkb_rn42/rn42/rn42.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'keyboard/hhkb_rn42/rn42/rn42.c') diff --git a/keyboard/hhkb_rn42/rn42/rn42.c b/keyboard/hhkb_rn42/rn42/rn42.c index aa6015cbf2..756285d7bb 100644 --- a/keyboard/hhkb_rn42/rn42/rn42.c +++ b/keyboard/hhkb_rn42/rn42/rn42.c @@ -53,14 +53,14 @@ int16_t rn42_getc(void) return serial_recv2(); } -char *rn42_gets(uint16_t timeout) +const char *rn42_gets(uint16_t timeout) { - static char s[16]; + static char s[24]; uint16_t t = timer_read(); uint8_t i = 0; int16_t c; - while (i < 15 && timer_elapsed(t) < timeout) { - if ((c = rn42_getc()) != -1) { + while (i < 23 && timer_elapsed(t) < timeout) { + if ((c = rn42_getc()) != -1) { if ((char)c == '\r') continue; if ((char)c == '\n') break; s[i++] = c; @@ -126,7 +126,7 @@ bool rn42_linked(void) // Hi-Z: Not powered // High: Linked // Low: Connecting - return !rn42_rts() && PINF&(1<<6); + return PINF&(1<<6); } -- cgit v1.2.3 From 099701dd3130d433244b3a4102f36f547aec25ae Mon Sep 17 00:00:00 2001 From: tmk Date: Fri, 16 Jan 2015 10:21:18 +0900 Subject: hhkb: Integrate RN-42 support, remove hhkb_rn42 --- keyboard/hhkb_rn42/rn42/rn42.c | 237 ----------------------------------------- 1 file changed, 237 deletions(-) delete mode 100644 keyboard/hhkb_rn42/rn42/rn42.c (limited to 'keyboard/hhkb_rn42/rn42/rn42.c') diff --git a/keyboard/hhkb_rn42/rn42/rn42.c b/keyboard/hhkb_rn42/rn42/rn42.c deleted file mode 100644 index 756285d7bb..0000000000 --- a/keyboard/hhkb_rn42/rn42/rn42.c +++ /dev/null @@ -1,237 +0,0 @@ -#include -#include "host.h" -#include "host_driver.h" -#include "serial.h" -#include "rn42.h" -#include "print.h" -#include "timer.h" -#include "wait.h" - - -/* Host driver */ -static uint8_t keyboard_leds(void); -static void send_keyboard(report_keyboard_t *report); -static void send_mouse(report_mouse_t *report); -static void send_system(uint16_t data); -static void send_consumer(uint16_t data); - -host_driver_t rn42_driver = { - keyboard_leds, - send_keyboard, - send_mouse, - send_system, - send_consumer -}; - - -void rn42_init(void) -{ - // JTAG disable for PORT F. write JTD bit twice within four cycles. - MCUCR |= (1<mods); - serial_send(0x00); - serial_send(report->keys[0]); - serial_send(report->keys[1]); - serial_send(report->keys[2]); - serial_send(report->keys[3]); - serial_send(report->keys[4]); - serial_send(report->keys[5]); -} - -static void send_mouse(report_mouse_t *report) -{ - // wake from deep sleep -/* - PORTD |= (1<<5); // high - wait_ms(5); - PORTD &= ~(1<<5); // low -*/ - - serial_send(0xFD); // Raw report mode - serial_send(5); // length - serial_send(2); // descriptor type - serial_send(report->buttons); - serial_send(report->x); - serial_send(report->y); - serial_send(report->v); -} - -static void send_system(uint16_t data) -{ - // Table 5-6 of RN-BT-DATA-UB - // 81,82,83 scan codes can be used? -} - - -static uint16_t usage2bits(uint16_t usage) -{ - switch (usage) { - case AC_HOME: return 0x01; - case AL_EMAIL: return 0x02; - case AC_SEARCH: return 0x04; - //case AL_KBD_LAYOUT: return 0x08; // Apple virtual keybaord toggle - case AUDIO_VOL_UP: return 0x10; - case AUDIO_VOL_DOWN: return 0x20; - case AUDIO_MUTE: return 0x40; - case TRANSPORT_PLAY_PAUSE: return 0x80; - case TRANSPORT_NEXT_TRACK: return 0x100; - case TRANSPORT_PREV_TRACK: return 0x200; - case TRANSPORT_STOP: return 0x400; - case TRANSPORT_STOP_EJECT: return 0x800; - //case return 0x1000; // Fast forward - //case return 0x2000; // Rewind - //case return 0x4000; // Stop/eject - //case return 0x8000; // Internet browser - }; - return 0; -} - -static void send_consumer(uint16_t data) -{ - uint16_t bits = usage2bits(data); - serial_send(0xFD); // Raw report mode - serial_send(3); // length - serial_send(3); // descriptor type - serial_send(bits&0xFF); - serial_send((bits>>8)&0xFF); -} - - -/* Null driver for config_mode */ -static uint8_t config_keyboard_leds(void); -static void config_send_keyboard(report_keyboard_t *report); -static void config_send_mouse(report_mouse_t *report); -static void config_send_system(uint16_t data); -static void config_send_consumer(uint16_t data); - -host_driver_t rn42_config_driver = { - config_keyboard_leds, - config_send_keyboard, - config_send_mouse, - config_send_system, - config_send_consumer -}; - -static uint8_t config_keyboard_leds(void) { return leds; } -static void config_send_keyboard(report_keyboard_t *report) {} -static void config_send_mouse(report_mouse_t *report) {} -static void config_send_system(uint16_t data) {} -static void config_send_consumer(uint16_t data) {} -- cgit v1.2.3