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)
This commit is contained in:
103
quantum/oryx.h
103
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);
|
||||
|
||||
Reference in New Issue
Block a user