From 5ed3ecdd73913ee484777ab33840f3ece5d3571f Mon Sep 17 00:00:00 2001 From: Drashna Jael're Date: Tue, 14 Jan 2020 17:48:23 -0800 Subject: Add toggle for live training --- keyboards/ergodox_ez/ergodox_ez.c | 12 ++++++------ keyboards/planck/ez/ez.c | 12 ++++++------ quantum/oryx.c | 33 ++++++++++++++++++++++++++++++--- quantum/oryx.h | 11 ++++++++--- tmk_core/common/webusb.h | 5 +---- 5 files changed, 51 insertions(+), 22 deletions(-) diff --git a/keyboards/ergodox_ez/ergodox_ez.c b/keyboards/ergodox_ez/ergodox_ez.c index 5d121133aa..bd4a6fa78d 100644 --- a/keyboards/ergodox_ez/ergodox_ez.c +++ b/keyboards/ergodox_ez/ergodox_ez.c @@ -336,11 +336,11 @@ void keyboard_post_init_kb(void) { bool process_record_kb(uint16_t keycode, keyrecord_t *record) { -#ifdef WEBUSB_ENABLE - if(webusb_state.paired == true) { +#ifdef ORYX_ENABLE + if(is_oryx_live_training_enabled()) { uint8_t event[5]; event[0] = WEBUSB_STATUS_OK; - event[1] = record->event.pressed ? WEBUSB_EVT_KEYDOWN : WEBUSB_EVT_KEYUP; + event[1] = record->event.pressed ? ORYX_EVT_KEYDOWN : ORYX_EVT_KEYUP; event[2] = record->event.key.col; event[3] = record->event.key.row; event[4] = WEBUSB_STOP_BIT; @@ -399,7 +399,7 @@ void eeconfig_init_kb(void) { // EEPROM is getting reset! eeconfig_init_user(); } -#ifdef WEBUSB_ENABLE +#ifdef ORYX_ENABLE static uint16_t loops = 0; static bool is_on = false; @@ -436,10 +436,10 @@ void matrix_scan_kb(void) { uint32_t layer_state_set_kb(uint32_t state) { state = layer_state_set_user(state); uint8_t layer = biton32(state); - if(webusb_state.paired == true) { + if(is_oryx_live_training_enabled()) { uint8_t event[4]; event[0] = WEBUSB_STATUS_OK; - event[1] = WEBUSB_EVT_LAYER; + event[1] = ORYX_EVT_LAYER; event[2] = layer; event[3] = WEBUSB_STOP_BIT; webusb_send(event, sizeof(event)); diff --git a/keyboards/planck/ez/ez.c b/keyboards/planck/ez/ez.c index fdb470b2e2..1e8a9d4e12 100644 --- a/keyboards/planck/ez/ez.c +++ b/keyboards/planck/ez/ez.c @@ -247,11 +247,11 @@ uint32_t layer_state_set_kb(uint32_t state) { planck_ez_right_led_off(); state = layer_state_set_user(state); uint8_t layer = biton32(state); -#ifdef WEBUSB_ENABLE - if(webusb_state.paired == true) { +#ifdef ORXY_ENABLE + if(is_oryx_live_training_enabled()) { uint8_t event[4]; event[0] = WEBUSB_STATUS_OK; - event[1] = WEBUSB_EVT_LAYER; + event[1] = ORYX_EVT_LAYER; event[2] = layer; event[3] = WEBUSB_STOP_BIT; webusb_send(event, sizeof(event)); @@ -275,11 +275,11 @@ uint32_t layer_state_set_kb(uint32_t state) { } bool process_record_kb(uint16_t keycode, keyrecord_t *record) { -#ifdef WEBUSB_ENABLE - if(webusb_state.paired == true) { +#ifdef ORYX_ENABLE + if(is_oryx_live_training_enabled()) { uint8_t event[5]; event[0] = WEBUSB_STATUS_OK; - event[1] = record->event.pressed ? WEBUSB_EVT_KEYDOWN : WEBUSB_EVT_KEYUP; + event[1] = record->event.pressed ? ORYX_EVT_KEYDOWN : ORYX_EVT_KEYUP; event[2] = record->event.key.col; event[3] = record->event.key.row; event[4] = WEBUSB_STOP_BIT; diff --git a/quantum/oryx.c b/quantum/oryx.c index 93ee50e935..7f0b60a797 100644 --- a/quantum/oryx.c +++ b/quantum/oryx.c @@ -1,18 +1,41 @@ #include "oryx.h" -bool webusb_state_live_training_enabled; +bool oryx_state_live_training_enabled; bool webusb_receive_oryx(uint8_t *data, uint8_t length) { uint8_t command = data[0]; + uint8_t param = data[1]; switch (command) { case ORYX_GET_LAYER: oryx_layer_event(); return true; break; + case ORYX_CMD_LIVE_TRAINING: { + uint8_t event[4]; + switch (param) { // 0 for state, 1 for off, 2 for on + case 0: + break; + case 1: + oryx_state_live_training_enabled = false; + break; + case 2: + oryx_state_live_training_enabled = true; + break; + default: + webusb_error(WEBUSB_STATUS_UNKNOWN_COMMAND); + return true; + } + event[0] = WEBUSB_STATUS_OK; + event[1] = WEBUSB_EVT_PAIRED; + event[2] = oryx_state_live_training_enabled; + event[3] = WEBUSB_STOP_BIT; + webusb_send(event, sizeof(event)); + return true; + } + default: + return webusb_receive_kb(data, length); } - - return false; } @@ -28,3 +51,7 @@ void oryx_layer_event(void) { webusb_send(event, sizeof(event)); #endif } + +bool is_oryx_live_training_enabled(void) { + return oryx_state_live_training_enabled; +} diff --git a/quantum/oryx.h b/quantum/oryx.h index eaef5bd335..13ef72d548 100644 --- a/quantum/oryx.h +++ b/quantum/oryx.h @@ -8,12 +8,16 @@ #endif #ifndef DYNAMIC_KEYMAP_ENABLE -# error "Dynamic Keymaps are not enabled. It must be aenbled " +# error "Dynamic Keymaps are not enabled. It must be enabled" #endif +// enum Oryx_Status_code { +// PLACEHOLDER = WEBUSB_STATUS_SAFE_RANGE, +// } enum Oryx_Command_Code { ORYX_GET_LAYER = WEBUSB_CMD_SAFE_RANGE, + ORYX_CMD_LIVE_TRAINING, }; @@ -21,14 +25,15 @@ enum Oryx_Event_Code { ORYX_EVT_KEYDOWN = WEBUSB_EVT_SAFE_RANGE, ORYX_EVT_KEYUP, ORYX_EVT_LAYER, + ORYX_EVT_LIVE_TRAINING }; -extern bool webusb_state_live_training_enabled; +extern bool oryx_state_live_training_enabled; bool webusb_receive_oryx(uint8_t *data, uint8_t length); void oryx_layer_event(void); - +bool is_oryx_live_training_enabled(void); void keyboard_pre_init_oryx(void); diff --git a/tmk_core/common/webusb.h b/tmk_core/common/webusb.h index 7958cb4586..7bec7c50e1 100644 --- a/tmk_core/common/webusb.h +++ b/tmk_core/common/webusb.h @@ -28,6 +28,7 @@ enum Webusb_Status_Code { WEBUSB_STATUS_NOT_PAIRED = -1, WEBUSB_STATUS_OK, WEBUSB_STATUS_UNKNOWN_COMMAND, + WEBUSB_STATUS_SAFE_RANGE, }; enum Webusb_Command_Code { @@ -35,7 +36,6 @@ enum Webusb_Command_Code { WEBUSB_CMD_GET_FW_VERSION, WEBUSB_CMD_SAFE_RANGE, - WEBUSB_GET_LAYER, }; enum Webusb_Event_Code { @@ -43,7 +43,4 @@ enum Webusb_Event_Code { WEBUSB_EVT_FW_VERSION, WEBUSB_EVT_SAFE_RANGE, - WEBUSB_EVT_KEYDOWN, - WEBUSB_EVT_KEYUP, - WEBUSB_EVT_LAYER, }; -- cgit v1.2.3