From fc773ff0cf9c528773fa81be0fc8880ca5153d81 Mon Sep 17 00:00:00 2001 From: Florian Didron Date: Tue, 31 May 2022 19:03:21 +0900 Subject: 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) --- quantum/oryx.h | 103 +++++++++++++++++++++++---------------------------------- 1 file changed, 41 insertions(+), 62 deletions(-) (limited to 'quantum/oryx.h') 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); -- cgit v1.2.3