ble nano hid over gatt

Dependencies:   BLE_API mbed-dev nRF51822

Revision:
47:5bf2ae8cc710
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test_keymap.txt	Mon Aug 29 12:38:32 2016 +0000
@@ -0,0 +1,77 @@
+//#!clang++ -O2 -std=c++1y test_keymap.txt -o /tmp/a.out && /tmp/a.out ; ;:
+
+#include <stdio.h>
+#include <stdint.h>
+#include <iostream>
+static unsigned tap_n = 0;
+template <class T, class U>
+void is(T got, U expected, const char* desc = "") {
+    if (tap_n++ == 0) {
+        std::atexit([]{
+            std::cout << "1.." << tap_n << std::endl;
+        });
+    }
+
+    if (got == expected) {
+        std::cout << "ok " << tap_n;
+        if (desc[0]) std::cout << " - " << desc;
+        std::cout << std::endl;
+    } else {
+        std::cout << "not ok " << tap_n;
+        if (desc[0]) std::cout << " - " << desc;
+        std::cout << std::endl;
+        std::cout << "# got:" << got << " expected:" << expected << std::endl;
+    }
+}
+
+static uint8_t lastAppendKey;
+static uint8_t lastDeleteKey;
+class HIDController {
+public:
+    static void appendReportData(uint8_t key) {
+        lastAppendKey = key;
+    }
+
+    static void deleteReportData(uint8_t key) {
+        lastDeleteKey = key;
+    }
+};
+
+#define DEBUG_PRINTF_KEYEVENT(...) printf(__VA_ARGS__)
+
+#include "keymap.h"
+
+int main() {
+    printf("test\n");
+
+    Keymap keymap = new Keymap();
+
+    keymap->execute(1, 1, true);
+    is(lastAppendKey, _1);
+    keymap->execute(1, 1, false);
+    is(lastDeleteKey, _1);
+    keymap->execute(1, 0, true);
+    is(lastAppendKey, _esc);
+
+    keymap->execute(2, 14, true);
+    is((int)lastAppendKey, _bracketL);
+    keymap->execute(2, 14, false);
+
+    // Fn
+    keymap->execute(5, 14, true);
+    keymap->execute(2, 14, true);
+    is((int)lastAppendKey, _arrowU);
+    // 先に Fn を離す
+    keymap->execute(5, 14, false);
+    keymap->execute(2, 14, false);
+    is((int)lastDeleteKey, _arrowU);
+
+    return 0;
+}
+
+
+// レイヤーの仕様
+//
+// 切替えキー (例: Fn) はそのあと押したキーにしか効かない
+// 切替えキーが途中で離されても、押されたキーが離されるまでそのまま
+//