Implement core communication

This commit is contained in:
Drashna Jael're
2020-01-15 02:14:48 -08:00
committed by Florian Didron
parent 5c1c41462a
commit 3b71e1e819
11 changed files with 73 additions and 58 deletions

View File

@@ -354,6 +354,7 @@ ifeq ($(strip $(ORYX_ENABLE)), yes)
WEBUSB_ENABLE := yes WEBUSB_ENABLE := yes
SRC += $(QUANTUM_DIR)/oryx.c SRC += $(QUANTUM_DIR)/oryx.c
OPT_DEFS += -DORYX_ENABLE OPT_DEFS += -DORYX_ENABLE
OPT_DEFS += -DLAYER_STATE_8BIT
endif endif
ifeq ($(strip $(VIA_ENABLE)), yes) ifeq ($(strip $(VIA_ENABLE)), yes)

View File

@@ -336,17 +336,6 @@ void keyboard_post_init_kb(void) {
bool process_record_kb(uint16_t keycode, keyrecord_t *record) { bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
#ifdef ORYX_ENABLE
if(is_oryx_live_training_enabled()) {
uint8_t event[5];
event[0] = WEBUSB_STATUS_OK;
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;
webusb_send(event, sizeof(event));
}
#endif
switch (keycode) { switch (keycode) {
case LED_LEVEL: case LED_LEVEL:
if (record->event.pressed) { if (record->event.pressed) {
@@ -433,17 +422,4 @@ void matrix_scan_kb(void) {
matrix_scan_user(); matrix_scan_user();
} }
uint32_t layer_state_set_kb(uint32_t state) {
state = layer_state_set_user(state);
uint8_t layer = biton32(state);
if(is_oryx_live_training_enabled()) {
uint8_t event[4];
event[0] = WEBUSB_STATUS_OK;
event[1] = ORYX_EVT_LAYER;
event[2] = layer;
event[3] = WEBUSB_STOP_BIT;
webusb_send(event, sizeof(event));
}
return state;
}
#endif #endif

View File

@@ -104,7 +104,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true; return true;
} }
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
uint8_t layer = biton32(state); uint8_t layer = biton32(state);

View File

@@ -104,9 +104,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true; return true;
} }
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
uint8_t layer = biton32(state); uint8_t layer = get_highest_layer(state);
ergodox_board_led_off(); ergodox_board_led_off();
ergodox_right_led_1_off(); ergodox_right_led_1_off();

View File

@@ -242,21 +242,11 @@ void eeconfig_init_kb(void) { // EEPROM is getting reset!
} }
uint32_t layer_state_set_kb(uint32_t state) { layer_state_t layer_state_set_kb(layer_state_t state) {
planck_ez_left_led_off(); planck_ez_left_led_off();
planck_ez_right_led_off(); planck_ez_right_led_off();
state = layer_state_set_user(state); state = layer_state_set_user(state);
uint8_t layer = biton32(state); uint8_t layer = biton32(state);
#ifdef ORXY_ENABLE
if(is_oryx_live_training_enabled()) {
uint8_t event[4];
event[0] = WEBUSB_STATUS_OK;
event[1] = ORYX_EVT_LAYER;
event[2] = layer;
event[3] = WEBUSB_STOP_BIT;
webusb_send(event, sizeof(event));
}
#endif
switch (layer) { switch (layer) {
case 1: case 1:
planck_ez_left_led_on(); planck_ez_left_led_on();
@@ -275,17 +265,6 @@ uint32_t layer_state_set_kb(uint32_t state) {
} }
bool process_record_kb(uint16_t keycode, keyrecord_t *record) { bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
#ifdef ORYX_ENABLE
if(is_oryx_live_training_enabled()) {
uint8_t event[5];
event[0] = WEBUSB_STATUS_OK;
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;
webusb_send(event, sizeof(event));
}
#endif
switch (keycode) { switch (keycode) {
case LED_LEVEL: case LED_LEVEL:
if (record->event.pressed) { if (record->event.pressed) {

View File

@@ -129,6 +129,6 @@ bool music_mask_user(uint16_t keycode) {
return true; return true;
} }
} }
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }

View File

@@ -131,6 +131,6 @@ bool music_mask_user(uint16_t keycode) {
} }
#endif #endif
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }

View File

@@ -191,3 +191,40 @@ void oryx_layer_event(void) {
} }
bool is_oryx_live_training_enabled(void) { return oryx_state_live_training_enabled; } bool is_oryx_live_training_enabled(void) { return oryx_state_live_training_enabled; }
bool process_record_oryx(uint16_t keycode, keyrecord_t *record) {
if(is_oryx_live_training_enabled()) {
uint8_t event[5];
event[0] = WEBUSB_STATUS_OK;
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;
webusb_send(event, sizeof(event));
}
switch (keycode) {
case WEBUSB_PAIR:
if (record->event.pressed) {
webusb_state.pairing = true;
}
return false;
case MACRO00 ... MACRO15:
if (record->event.pressed) {
dynamic_keymap_macro_send(keycode - MACRO00);
}
return false;
}
return true;
}
void layer_state_set_oryx(layer_state_t state) {
if(is_oryx_live_training_enabled()) {
uint8_t event[4];
event[0] = WEBUSB_STATUS_OK;
event[1] = ORYX_EVT_LAYER;
event[2] = get_highest_layer(state);
event[3] = WEBUSB_STOP_BIT;
webusb_send(event, sizeof(event));
}
}

View File

@@ -54,6 +54,24 @@ enum Oryx_Event_Code {
ORYX_EVT_KEYUP, ORYX_EVT_KEYUP,
}; };
enum dynamic_macros_keycodes {
MACRO00 = 0x5F12,
MACRO01,
MACRO02,
MACRO03,
MACRO04,
MACRO05,
MACRO06,
MACRO07,
MACRO08,
MACRO09,
MACRO10,
MACRO11,
MACRO12,
MACRO13,
MACRO14,
MACRO15,
};
extern bool oryx_state_live_training_enabled; extern bool oryx_state_live_training_enabled;
@@ -61,5 +79,6 @@ extern bool oryx_state_live_training_enabled;
bool webusb_receive_oryx(uint8_t *data, uint8_t length); bool webusb_receive_oryx(uint8_t *data, uint8_t length);
void oryx_layer_event(void); void oryx_layer_event(void);
bool is_oryx_live_training_enabled(void); bool is_oryx_live_training_enabled(void);
bool process_record_oryx(uint16_t keycode, keyrecord_t *record);
void layer_state_set_oryx(layer_state_t state);
void keyboard_pre_init_oryx(void); void keyboard_pre_init_oryx(void);

View File

@@ -210,6 +210,9 @@ bool process_record_quantum(keyrecord_t *record) {
#if defined(RGB_MATRIX_ENABLE) #if defined(RGB_MATRIX_ENABLE)
process_rgb_matrix(keycode, record) && process_rgb_matrix(keycode, record) &&
#endif #endif
#ifdef ORYX_ENABLE
process_record_oryx(keycode, record) &&
#endif
#if defined(VIA_ENABLE) #if defined(VIA_ENABLE)
process_record_via(keycode, record) && process_record_via(keycode, record) &&
#endif #endif
@@ -309,11 +312,6 @@ bool process_record_quantum(keyrecord_t *record) {
case BL_BRTG: case BL_BRTG:
backlight_toggle_breathing(); backlight_toggle_breathing();
return false; return false;
#endif
#ifdef WEBUSB_ENABLE
case WEBUSB_PAIR:
webusb_state.pairing = true;
return false;
#endif #endif
} }
} }

View File

@@ -3,7 +3,9 @@
#include "action.h" #include "action.h"
#include "util.h" #include "util.h"
#include "action_layer.h" #include "action_layer.h"
#ifdef ORYX_ENABLE
# include "oryx.h"
#endif
#ifdef DEBUG_ACTION #ifdef DEBUG_ACTION
# include "debug.h" # include "debug.h"
#else #else
@@ -97,6 +99,9 @@ __attribute__((weak)) layer_state_t layer_state_set_kb(layer_state_t state) { re
* Sets the layer to match the specifed state (a bitmask) * Sets the layer to match the specifed state (a bitmask)
*/ */
void layer_state_set(layer_state_t state) { void layer_state_set(layer_state_t state) {
#ifdef ORYX_ENABLE
layer_state_set_oryx(state);
#endif
state = layer_state_set_kb(state); state = layer_state_set_kb(state);
dprint("layer_state: "); dprint("layer_state: ");
layer_debug(); layer_debug();