]> git.donarmstrong.com Git - tmk_firmware.git/blobdiff - protocol/iwrap/main.c
Fix rn42.h API
[tmk_firmware.git] / protocol / iwrap / main.c
index 5c42a2c6add6590d5dcf6960ba4afd4c449653a1..3abdce8dfc90a6e3e471e3d064d5c4535d8e8248 100644 (file)
@@ -25,8 +25,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "keyboard.h"
 #include "matrix.h"
 #include "host.h"
+#include "action.h"
 #include "iwrap.h"
-#ifdef HOST_VUSB
+#ifdef PROTOCOL_VUSB
 #   include "vusb.h"
 #   include "usbdrv.h"
 #endif
@@ -34,13 +35,13 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "suart.h"
 #include "timer.h"
 #include "debug.h"
-#include "usb_keycodes.h"
+#include "keycode.h"
 #include "command.h"
 
 
 static void sleep(uint8_t term);
 static bool console(void);
-static uint8_t console_command(uint8_t c);
+static bool console_command(uint8_t c);
 static uint8_t key2asc(uint8_t key);
 
 
@@ -78,7 +79,7 @@ static void pullup_pins(void)
 */
 
 
-#ifdef HOST_VUSB
+#ifdef PROTOCOL_VUSB
 static void disable_vusb(void)
 {
     // disable interrupt & disconnect to prevent host from enumerating
@@ -108,10 +109,13 @@ static void init_vusb(void)
 
 void change_driver(host_driver_t *driver)
 {
+    /*
     host_clear_keyboard_report();
     host_swap_keyboard_report();
     host_clear_keyboard_report();
     host_send_keyboard_report();
+    */
+    clear_keyboard();
     _delay_ms(1000);
     host_set_driver(driver);
 }
@@ -131,10 +135,7 @@ int main(void)
     //pullup_pins();
     //set_prr();
 
-    print_enable = true;
-    debug_enable = false;
-
-#ifdef HOST_VUSB
+#ifdef PROTOCOL_VUSB
     disable_vusb();
 #endif
     uart_init(115200);
@@ -162,15 +163,16 @@ int main(void)
 
     last_timer = timer_read();
     while (true) {
-#ifdef HOST_VUSB
+#ifdef PROTOCOL_VUSB
         if (host_get_driver() == vusb_driver())
             usbPoll();
 #endif
         keyboard_task();
-#ifdef HOST_VUSB
+#ifdef PROTOCOL_VUSB
         if (host_get_driver() == vusb_driver())
             vusb_transfer_keyboard();
 #endif
+        // TODO: depricated
         if (matrix_is_modified() || console()) {
             last_timer = timer_read();
             sleeping = false;
@@ -179,6 +181,7 @@ int main(void)
             iwrap_check_connection();
         }
 
+        // TODO: suspend.h
         if (host_get_driver() == iwrap_driver()) {
             if (sleeping && !insomniac) {
                 _delay_ms(1);   // wait for UART to send
@@ -204,11 +207,6 @@ static void sleep(uint8_t term)
     WD_SET(WD_OFF);
 }
 
-ISR(WDT_vect)
-{
-    // wake up
-}
-
 static bool console(void)
 {
         // Send to Bluetoot module WT12
@@ -247,12 +245,12 @@ static bool console(void)
         }
 }
 
-uint8_t command_extra()
+bool command_extra(uint8_t code)
 {
-    return console_command(key2asc(host_get_first_key()));
+    return console_command(key2asc(code));
 }
 
-static uint8_t console_command(uint8_t c)
+static bool console_command(uint8_t c)
 {
     switch (c) {
         case 'h':
@@ -261,7 +259,7 @@ static uint8_t console_command(uint8_t c)
             print("r: reset. software reset by watchdog\n");
             print("i: insomniac. prevent KB from sleeping\n");
             print("c: iwrap_call. CALL for BT connection.\n");
-#ifdef HOST_VUSB
+#ifdef PROTOCOL_VUSB
             print("u: USB mode. switch to USB.\n");
             print("w: BT mode. switch to Bluetooth.\n");
 #endif
@@ -284,7 +282,7 @@ static uint8_t console_command(uint8_t c)
             print("iwrap_call()\n");
             iwrap_call();
             return 1;
-#ifdef HOST_VUSB
+#ifdef PROTOCOL_VUSB
         case 'u':
             print("USB mode\n");
             init_vusb();
@@ -320,59 +318,59 @@ static uint8_t console_command(uint8_t c)
 static uint8_t key2asc(uint8_t key)
 {
     switch (key) {
-        case KB_A: return 'a';
-        case KB_B: return 'b';
-        case KB_C: return 'c';
-        case KB_D: return 'd';
-        case KB_E: return 'e';
-        case KB_F: return 'f';
-        case KB_G: return 'g';
-        case KB_H: return 'h';
-        case KB_I: return 'i';
-        case KB_J: return 'j';
-        case KB_K: return 'k';
-        case KB_L: return 'l';
-        case KB_M: return 'm';
-        case KB_N: return 'n';
-        case KB_O: return 'o';
-        case KB_P: return 'p';
-        case KB_Q: return 'q';
-        case KB_R: return 'r';
-        case KB_S: return 's';
-        case KB_T: return 't';
-        case KB_U: return 'u';
-        case KB_V: return 'v';
-        case KB_W: return 'w';
-        case KB_X: return 'x';
-        case KB_Y: return 'y';
-        case KB_Z: return 'z';
-        case KB_1: return '1';
-        case KB_2: return '2';
-        case KB_3: return '3';
-        case KB_4: return '4';
-        case KB_5: return '5';
-        case KB_6: return '6';
-        case KB_7: return '7';
-        case KB_8: return '8';
-        case KB_9: return '9';
-        case KB_0: return '0';
-        case KB_ENTER: return '\n';
-        case KB_ESCAPE: return 0x1B;
-        case KB_BSPACE: return '\b';
-        case KB_TAB: return '\t';
-        case KB_SPACE: return ' ';
-        case KB_MINUS: return '-';
-        case KB_EQUAL: return '=';
-        case KB_LBRACKET: return '[';
-        case KB_RBRACKET: return ']';
-        case KB_BSLASH: return '\\';
-        case KB_NONUS_HASH: return '\\';
-        case KB_SCOLON: return ';';
-        case KB_QUOTE: return '\'';
-        case KB_GRAVE: return '`';
-        case KB_COMMA: return ',';
-        case KB_DOT: return '.';
-        case KB_SLASH: return '/';
+        case KC_A: return 'a';
+        case KC_B: return 'b';
+        case KC_C: return 'c';
+        case KC_D: return 'd';
+        case KC_E: return 'e';
+        case KC_F: return 'f';
+        case KC_G: return 'g';
+        case KC_H: return 'h';
+        case KC_I: return 'i';
+        case KC_J: return 'j';
+        case KC_K: return 'k';
+        case KC_L: return 'l';
+        case KC_M: return 'm';
+        case KC_N: return 'n';
+        case KC_O: return 'o';
+        case KC_P: return 'p';
+        case KC_Q: return 'q';
+        case KC_R: return 'r';
+        case KC_S: return 's';
+        case KC_T: return 't';
+        case KC_U: return 'u';
+        case KC_V: return 'v';
+        case KC_W: return 'w';
+        case KC_X: return 'x';
+        case KC_Y: return 'y';
+        case KC_Z: return 'z';
+        case KC_1: return '1';
+        case KC_2: return '2';
+        case KC_3: return '3';
+        case KC_4: return '4';
+        case KC_5: return '5';
+        case KC_6: return '6';
+        case KC_7: return '7';
+        case KC_8: return '8';
+        case KC_9: return '9';
+        case KC_0: return '0';
+        case KC_ENTER: return '\n';
+        case KC_ESCAPE: return 0x1B;
+        case KC_BSPACE: return '\b';
+        case KC_TAB: return '\t';
+        case KC_SPACE: return ' ';
+        case KC_MINUS: return '-';
+        case KC_EQUAL: return '=';
+        case KC_LBRACKET: return '[';
+        case KC_RBRACKET: return ']';
+        case KC_BSLASH: return '\\';
+        case KC_NONUS_HASH: return '\\';
+        case KC_SCOLON: return ';';
+        case KC_QUOTE: return '\'';
+        case KC_GRAVE: return '`';
+        case KC_COMMA: return ',';
+        case KC_DOT: return '.';
+        case KC_SLASH: return '/';
         default: return 0x00;
     }
 }