mirror of
https://github.com/zsa/qmk_firmware.git
synced 2026-04-26 17:36:19 +00:00
chore: remove pairing code (#378)
This commit is contained in:
@@ -389,11 +389,6 @@ void eeconfig_init_kb(void) { // EEPROM is getting reset!
|
||||
eeconfig_init_user();
|
||||
}
|
||||
|
||||
#ifdef ORYX_ENABLE
|
||||
static uint16_t loops = 0;
|
||||
static bool is_on = false;
|
||||
#endif
|
||||
|
||||
#ifdef DYNAMIC_MACRO_ENABLE
|
||||
static bool is_dynamic_recording = false;
|
||||
static uint16_t dynamic_loop_timer;
|
||||
@@ -411,33 +406,6 @@ void dynamic_macro_record_end_user(int8_t direction) {
|
||||
#endif
|
||||
|
||||
void matrix_scan_kb(void) {
|
||||
#ifdef ORYX_ENABLE
|
||||
if(rawhid_state.pairing == true) {
|
||||
if(loops == 0) {
|
||||
ergodox_right_led_1_off();
|
||||
ergodox_right_led_2_off();
|
||||
ergodox_right_led_3_off();
|
||||
}
|
||||
if(loops % PAIRING_BLINK_STEPS == 0) {
|
||||
if(is_on) {
|
||||
ergodox_right_led_2_off();
|
||||
} else {
|
||||
ergodox_right_led_2_on();
|
||||
}
|
||||
is_on ^= 1;
|
||||
}
|
||||
if(loops > PAIRING_BLINK_END) {
|
||||
rawhid_state.pairing = false;
|
||||
layer_state_set_user(layer_state);
|
||||
loops = 0;
|
||||
}
|
||||
loops++;
|
||||
} else if(loops > 0) {
|
||||
loops = 0;
|
||||
layer_state_set_user(layer_state);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef DYNAMIC_MACRO_ENABLE
|
||||
if (is_dynamic_recording) {
|
||||
ergodox_right_led_1_off();
|
||||
|
||||
@@ -308,11 +308,6 @@ bool music_mask_kb(uint16_t keycode) {
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ORYX_ENABLE
|
||||
static uint16_t loops = 0;
|
||||
static bool is_on = false;
|
||||
#endif
|
||||
|
||||
#ifdef DYNAMIC_MACRO_ENABLE
|
||||
static bool is_dynamic_recording = false;
|
||||
static uint16_t dynamic_loop_timer;
|
||||
@@ -330,36 +325,6 @@ void dynamic_macro_record_end_user(int8_t direction) {
|
||||
#endif
|
||||
|
||||
void matrix_scan_kb(void) {
|
||||
#ifdef ORYX_ENABLE
|
||||
if(rawhid_state.pairing == true) {
|
||||
if(loops == 0) {
|
||||
//lights off
|
||||
}
|
||||
if(loops % PAIRING_BLINK_STEPS == 0) {
|
||||
if(is_on) {
|
||||
planck_ez_left_led_on();
|
||||
planck_ez_right_led_off();
|
||||
}
|
||||
else {
|
||||
planck_ez_left_led_off();
|
||||
planck_ez_right_led_on();
|
||||
}
|
||||
is_on ^= 1;
|
||||
}
|
||||
if(loops > PAIRING_BLINK_END * 2) {
|
||||
rawhid_state.pairing = false;
|
||||
loops = 0;
|
||||
planck_ez_left_led_off();
|
||||
planck_ez_right_led_off();
|
||||
}
|
||||
loops++;
|
||||
}
|
||||
else if(loops > 0) {
|
||||
loops = 0;
|
||||
planck_ez_left_led_off();
|
||||
planck_ez_right_led_off();
|
||||
}
|
||||
#endif
|
||||
#ifdef DYNAMIC_MACRO_ENABLE
|
||||
if (is_dynamic_recording) {
|
||||
if (timer_elapsed(dynamic_loop_timer) > 1)
|
||||
|
||||
121
quantum/oryx.c
121
quantum/oryx.c
@@ -4,7 +4,7 @@
|
||||
# include "voyager.h"
|
||||
#endif
|
||||
|
||||
rawhid_state_t rawhid_state = {.pairing = false, .paired = false};
|
||||
rawhid_state_t rawhid_state = {.paired = false, .rgb_control = false};
|
||||
|
||||
uint8_t pairing_input_index = 0;
|
||||
|
||||
@@ -15,50 +15,6 @@ void oryx_error(uint8_t code) {
|
||||
raw_hid_send(event, RAW_EPSIZE);
|
||||
}
|
||||
|
||||
void get_pairing_code(keypos_t positions[], int size) {
|
||||
const char *version = FIRMWARE_VERSION;
|
||||
|
||||
// Initialize all positions to {1, 1}
|
||||
for (int i = 0; i < size; ++i) {
|
||||
positions[i].col = 1;
|
||||
positions[i].row = 1;
|
||||
}
|
||||
|
||||
// Find the position of '/'
|
||||
const char *slash_pos = strchr(version, '/');
|
||||
int max_index = (slash_pos != NULL) ? (slash_pos - version) : strlen(version);
|
||||
max_index = (max_index / 2 < size) ? max_index / 2 : size;
|
||||
|
||||
for (int i = 0; i < max_index; ++i) {
|
||||
positions[i].col = version[i * 2] % ORYX_PAIRING_MAX_INDEX + 1;
|
||||
positions[i].row = version[i * 2 + 1] % ORYX_PAIRING_MAX_INDEX + 1;
|
||||
}
|
||||
}
|
||||
|
||||
void pairing_init_handler(void) {
|
||||
uint8_t event[RAW_EPSIZE];
|
||||
uint8_t event_index = 0;
|
||||
|
||||
keypos_t positions[PAIRING_SEQUENCE_SIZE];
|
||||
get_pairing_code(positions, PAIRING_SEQUENCE_SIZE);
|
||||
|
||||
event[event_index++] = ORYX_EVT_PAIRING_INPUT;
|
||||
for (uint8_t i = 0; i < PAIRING_SEQUENCE_SIZE; i++) {
|
||||
event[event_index++] = positions[i].col;
|
||||
event[event_index++] = positions[i].row;
|
||||
}
|
||||
event[event_index++] = ORYX_STOP_BIT;
|
||||
|
||||
rawhid_state.pairing = true;
|
||||
raw_hid_send(event, RAW_EPSIZE);
|
||||
}
|
||||
|
||||
void pairing_key_input_event(void) {
|
||||
uint8_t event[RAW_EPSIZE];
|
||||
event[0] = ORYX_EVT_PAIRING_KEY_INPUT;
|
||||
raw_hid_send(event, sizeof(event));
|
||||
}
|
||||
|
||||
void oryx_layer_event(void) {
|
||||
uint8_t layer;
|
||||
uint8_t event[RAW_EPSIZE];
|
||||
@@ -70,6 +26,7 @@ void oryx_layer_event(void) {
|
||||
}
|
||||
|
||||
void pairing_failed_event(void) {
|
||||
rawhid_state.paired = false;
|
||||
uint8_t event[RAW_EPSIZE];
|
||||
event[0] = ORYX_EVT_PAIRING_FAILED;
|
||||
event[1] = ORYX_STOP_BIT;
|
||||
@@ -77,52 +34,13 @@ void pairing_failed_event(void) {
|
||||
}
|
||||
|
||||
void pairing_success_event(void) {
|
||||
rawhid_state.paired = true;
|
||||
uint8_t event[RAW_EPSIZE];
|
||||
event[0] = ORYX_EVT_PAIRING_SUCCESS;
|
||||
event[1] = ORYX_STOP_BIT;
|
||||
raw_hid_send(event, sizeof(event));
|
||||
}
|
||||
|
||||
bool pairing_key_input_handler(keypos_t pos) {
|
||||
keypos_t positions[PAIRING_SEQUENCE_SIZE];
|
||||
get_pairing_code(positions, PAIRING_SEQUENCE_SIZE);
|
||||
keypos_t key = positions[pairing_input_index];
|
||||
|
||||
if (pos.col != key.col || pos.row != key.row) {
|
||||
rawhid_state.pairing = false;
|
||||
pairing_input_index = 0;
|
||||
pairing_failed_event();
|
||||
return false;
|
||||
} else {
|
||||
pairing_input_index++;
|
||||
pairing_key_input_event();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
void pairing_validate_handler(uint8_t *param) {
|
||||
bool valid = true;
|
||||
uint8_t cmd_index = 0;
|
||||
keypos_t positions[PAIRING_SEQUENCE_SIZE];
|
||||
get_pairing_code(positions, PAIRING_SEQUENCE_SIZE);
|
||||
for (uint8_t i = 0; i < PAIRING_SEQUENCE_SIZE; i++) {
|
||||
keypos_t pos;
|
||||
pos.col = param[cmd_index++];
|
||||
pos.row = param[cmd_index++];
|
||||
if (pos.col != positions[i].col || pos.row != positions[i].row) {
|
||||
rawhid_state.pairing = false;
|
||||
pairing_failed_event();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (valid) {
|
||||
rawhid_state.pairing = false;
|
||||
rawhid_state.paired = true;
|
||||
pairing_input_index = 0;
|
||||
pairing_success_event();
|
||||
}
|
||||
}
|
||||
|
||||
void raw_hid_receive(uint8_t *data, uint8_t length) {
|
||||
uint8_t command = data[0];
|
||||
uint8_t *param = &data[1];
|
||||
@@ -144,11 +62,17 @@ void raw_hid_receive(uint8_t *data, uint8_t length) {
|
||||
}
|
||||
|
||||
case ORYX_CMD_PAIRING_INIT:
|
||||
pairing_init_handler();
|
||||
if (rawhid_state.paired == true)
|
||||
pairing_failed_event();
|
||||
else
|
||||
pairing_success_event();
|
||||
break;
|
||||
|
||||
case ORYX_CMD_PAIRING_VALIDATE:
|
||||
pairing_validate_handler(param);
|
||||
if (rawhid_state.paired == true)
|
||||
pairing_failed_event();
|
||||
else
|
||||
pairing_success_event();
|
||||
break;
|
||||
|
||||
case ORYX_SET_LAYER:
|
||||
@@ -234,7 +158,7 @@ void raw_hid_receive(uint8_t *data, uint8_t length) {
|
||||
}
|
||||
break;
|
||||
case ORYX_UPDATE_BRIGHTNESS:
|
||||
#if defined(RGB_MATRIX_ENABLE) && !defined(KEYBOARD_ergodox_ez_glow)
|
||||
#if defined(RGB_MATRIX_ENABLE) && !defined(PROTOCOL_LUFA)
|
||||
if (param[0]) {
|
||||
rgb_matrix_increase_val_noeeprom();
|
||||
} else {
|
||||
@@ -251,25 +175,6 @@ void raw_hid_receive(uint8_t *data, uint8_t length) {
|
||||
|
||||
|
||||
bool process_record_oryx(uint16_t keycode, keyrecord_t *record) {
|
||||
// In pairing mode, key events are absorbed, and the host pairing sequence is filled.
|
||||
// Once filled, the keyboard and host sequence are compaired, pairing state set to false
|
||||
// and the proper pairing validation event is sent to the host
|
||||
if (rawhid_state.pairing == true) {
|
||||
// The host pairing sequence is filled on key up only
|
||||
if (!record->event.pressed) {
|
||||
if (pairing_input_index < PAIRING_SEQUENCE_SIZE) {
|
||||
pairing_key_input_handler(record->event.key);
|
||||
}
|
||||
wait_ms(1000);
|
||||
if (pairing_input_index == PAIRING_SEQUENCE_SIZE) {
|
||||
rawhid_state.pairing = false;
|
||||
rawhid_state.paired = true;
|
||||
pairing_input_index = 0;
|
||||
pairing_success_event();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
// While paired, the keyboard sends keystrokes positions to the host
|
||||
if (rawhid_state.paired == true) {
|
||||
uint8_t event[RAW_EPSIZE];
|
||||
@@ -284,7 +189,9 @@ bool process_record_oryx(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
void layer_state_set_oryx(layer_state_t state) {
|
||||
if (rawhid_state.paired) {
|
||||
#ifdef PROTOCOL_LUFA
|
||||
wait_ms(50);
|
||||
#endif
|
||||
uint8_t event[RAW_EPSIZE];
|
||||
event[0] = ORYX_EVT_LAYER;
|
||||
event[1] = get_highest_layer(state);
|
||||
|
||||
@@ -21,14 +21,8 @@ Once the host has paired, it can freely use the commands define in the Oryx_Comm
|
||||
# define RAW_EPSIZE 32
|
||||
#endif
|
||||
|
||||
#define ORYX_PROTOCOL_VERSION = 0x01
|
||||
#define ORYX_PROTOCOL_VERSION = 0x02
|
||||
#define ORYX_STOP_BIT -2
|
||||
#define ORYX_PAIRING_MAX_INDEX 3
|
||||
#define PAIRING_BLINK_STEPS 512
|
||||
#define PAIRING_BLINK_END PAIRING_BLINK_STEPS * 60
|
||||
#define PAIRING_SEQUENCE_SIZE 3
|
||||
#define PAIRING_SEQUENCE_NUM_STORED 3
|
||||
#define PAIRING_STORAGE_SIZE PAIRING_SEQUENCE_SIZE* PAIRING_SEQUENCE_NUM_STORED * sizeof(uint16_t)
|
||||
|
||||
enum Oryx_Command_Code {
|
||||
ORYX_CMD_GET_FW_VERSION,
|
||||
@@ -70,7 +64,6 @@ enum Oryx_Error_Code {
|
||||
extern bool oryx_state_live_training_enabled;
|
||||
|
||||
typedef struct {
|
||||
bool pairing;
|
||||
bool paired;
|
||||
bool rgb_control;
|
||||
} rawhid_state_t;
|
||||
@@ -78,11 +71,6 @@ typedef struct {
|
||||
extern rawhid_state_t rawhid_state;
|
||||
|
||||
void oryx_error(uint8_t code);
|
||||
bool pairing_key_input_handler(keypos_t pos);
|
||||
void get_pairing_code(keypos_t positions[], int size);
|
||||
void pairing_init_handler(void);
|
||||
void pairing_validate_handler(uint8_t *param);
|
||||
void pairing_key_input_event(void);
|
||||
void pairing_failed_event(void);
|
||||
void pairing_succesful_event(void);
|
||||
|
||||
|
||||
@@ -1012,7 +1012,6 @@ void raw_hid_send(uint8_t *data, uint8_t length) {
|
||||
|
||||
# ifdef ORYX_ENABLE
|
||||
if (chnWriteTimeout(&drivers.raw_driver.driver, data, length, TIME_IMMEDIATE) != length) {
|
||||
rawhid_state.pairing = false;
|
||||
rawhid_state.paired = false;
|
||||
}
|
||||
# else
|
||||
|
||||
@@ -160,7 +160,6 @@ void raw_hid_send(uint8_t *data, uint8_t length) {
|
||||
if (Endpoint_IsINReady()) {
|
||||
// Write data
|
||||
if (Endpoint_Write_Stream_LE(data, RAW_EPSIZE, NULL)) {
|
||||
rawhid_state.pairing = false;
|
||||
rawhid_state.paired = false;
|
||||
}
|
||||
// Finalize the stream transfer to send the last packet
|
||||
|
||||
Reference in New Issue
Block a user