summaryrefslogtreecommitdiff
path: root/quantum/oryx.h
diff options
context:
space:
mode:
authorFlorian Didron <fdidron@users.noreply.github.com>2022-05-31 19:03:21 +0900
committerGitHub <noreply@github.com>2022-05-31 19:03:21 +0900
commitfc773ff0cf9c528773fa81be0fc8880ca5153d81 (patch)
treee917ed871290cc78cff818ee896b838d12ccc654 /quantum/oryx.h
parent1fbd91aa106a4beb6ab84614dde14165a43f009a (diff)
Reimplements Oryx's live training over raw hid (#345)
* feat: initial commit, random pairing sequence generation, host - board pairing handshakes * feat: reimplements ory's live training over raw hid * feat: adds planck / ergodox support * chore: some code styling fixes * fix: build smoke tests * fix: code lint * fix: disable console / command on moonlander, fixes build ci test * fix: code lint * fix: remove unused define(MATRIX_SIZE)
Diffstat (limited to 'quantum/oryx.h')
-rw-r--r--quantum/oryx.h103
1 files changed, 41 insertions, 62 deletions
diff --git a/quantum/oryx.h b/quantum/oryx.h
index b1fe78a061..5f6581235c 100644
--- a/quantum/oryx.h
+++ b/quantum/oryx.h
@@ -1,82 +1,61 @@
#pragma once
#include "quantum.h"
-#include "webusb.h"
+#include "raw_hid.h"
-#ifndef WEBUSB_ENABLE
-# error "WebUSB needs to be enabled, please enable it!"
+#ifndef RAW_ENABLE
+# error "Raw hid needs to be enabled, please enable it!"
+#endif
+#ifndef RAW_EPSIZE
+# define RAW_EPSIZE 32
#endif
-// enum Oryx_Status_code {
-// PLACEHOLDER = WEBUSB_STATUS_SAFE_RANGE,
-// }
+#define ORYX_STOP_BIT -2
+#define PAIRING_BLINK_STEPS 512
+#define PAIRING_BLINK_END PAIRING_BLINK_STEPS * 60
+#define PAIRING_SEQUENCE_SIZE 3
+#define PAIRING_SEQUENCE_NUM_STORED 5
+#define PAIRING_STORAGE_SIZE PAIRING_SEQUENCE_SIZE* PAIRING_SEQUENCE_NUM_STORED * sizeof(uint16_t)
enum Oryx_Command_Code {
- ORYX_GET_LAYER = WEBUSB_CMD_SAFE_RANGE,
- ORYX_CMD_LIVE_TRAINING,
- ORYX_CMD_LIVE_UPDATE_GET_KEYCODE,
- ORYX_CMD_LIVE_UPDATE_SET_KEYCODE,
- ORYX_CMD_LIVE_UPDATE_KEYMAP_RESET,
- ORYX_CMD_LIVE_UPDATE_GET_BUFFER,
- ORYX_CMD_LIVE_UPDATE_SET_BUFFER,
- ORYX_CMD_LIVE_UPDATE_GET_LAYER_COUNT,
- ORYX_CMD_LIVE_UPDATE_GET_MACRO_COUNT,
- ORYX_CMD_LIVE_UPDATE_GET_MACRO_BUFFER_SIZE,
- ORYX_CMD_LIVE_UPDATE_GET_MACRO_BUFFER,
- ORYX_CMD_LIVE_UPDATE_SET_MACRO_BUFFER,
- ORYX_CMD_LIVE_UPDATE_MACRO_RESET,
- ORYX_CMD_LIVE_UPDATE_EEPROM_RESET,
- ORYX_CMD_LIVE_UPDATE_KEYBOARD_RESET,
-
+ ORYX_CMD_GET_FW_VERSION,
+ ORYX_CMD_PAIRING_INIT,
+ ORYX_CMD_PAIRING_VALIDATE,
+ ORYX_CMD_DISCONNECT,
+ ORYX_GET_LAYER,
};
enum Oryx_Event_Code {
- ORYX_EVT_LAYER = WEBUSB_EVT_SAFE_RANGE,
- ORYX_EVT_LIVE_TRAINING,
- ORYX_EVT_LIVE_UPDATE_GET_KEYCODE,
- ORYX_EVT_LIVE_UPDATE_SET_KEYCODE,
- ORYX_EVT_LIVE_UPDATE_KEYMAP_RESET,
- ORYX_EVT_LIVE_UPDATE_GET_BUFFER,
- ORYX_EVT_LIVE_UPDATE_SET_BUFFER,
- ORYX_EVT_LIVE_UPDATE_GET_LAYER_COUNT,
- ORYX_EVT_LIVE_UPDATE_GET_MACRO_COUNT,
- ORYX_EVT_LIVE_UPDATE_GET_MACRO_BUFFER_SIZE,
- ORYX_EVT_LIVE_UPDATE_GET_MACRO_BUFFER,
- ORYX_EVT_LIVE_UPDATE_SET_MACRO_BUFFER,
- ORYX_EVT_LIVE_UPDATE_MACRO_RESET,
- ORYX_EVT_LIVE_UPDATE_EEPROM_RESET,
- ORYX_EVT_LIVE_UPDATE_KEYBOARD_RESET,
+ ORYX_EVT_GET_FW_VERSION,
+ ORYX_EVT_PAIRING_INPUT,
+ ORYX_EVT_PAIRING_KEY_INPUT,
+ ORYX_EVT_PAIRING_FAILED,
+ ORYX_EVT_PAIRING_SUCCESS,
+ ORYX_EVT_LAYER,
ORYX_EVT_KEYDOWN,
ORYX_EVT_KEYUP,
};
-#ifdef DYNAMIC_KEYMAP_ENABLE
-enum dynamic_macros_keycodes {
- MACRO00 = 0x5F12,
- MACRO01,
- MACRO02,
- MACRO03,
- MACRO04,
- MACRO05,
- MACRO06,
- MACRO07,
- MACRO08,
- MACRO09,
- MACRO10,
- MACRO11,
- MACRO12,
- MACRO13,
- MACRO14,
- MACRO15,
-};
-#endif
-
extern bool oryx_state_live_training_enabled;
-bool webusb_receive_oryx(uint8_t *data, uint8_t length);
+typedef struct {
+ bool pairing;
+ bool paired;
+} rawhid_state_t;
+
+extern rawhid_state_t rawhid_state;
+
+void create_pairing_code(void);
+bool store_pairing_sequence(keypos_t* pairing_sequence);
+keypos_t get_random_keypos(void);
+void pairing_init_handler(void);
+void pairing_validate_handler(void);
+void pairing_init_event(void);
+void pairing_key_input_event(void);
+void pairing_failed_event(void);
+void pairing_succesful_event(void);
+
void oryx_layer_event(void);
bool is_oryx_live_training_enabled(void);
-bool process_record_oryx(uint16_t keycode, keyrecord_t *record);
+bool process_record_oryx(uint16_t keycode, keyrecord_t* record);
void layer_state_set_oryx(layer_state_t state);
-void eeconfig_init_oryx(void);
-void matrix_init_oryx(void);