diff options
Diffstat (limited to 'tmk_core/common')
-rw-r--r-- | tmk_core/common/webusb.c | 19 | ||||
-rw-r--r-- | tmk_core/common/webusb.h | 4 |
2 files changed, 21 insertions, 2 deletions
diff --git a/tmk_core/common/webusb.c b/tmk_core/common/webusb.c index e11e63a9da..2488e75de7 100644 --- a/tmk_core/common/webusb.c +++ b/tmk_core/common/webusb.c @@ -1,3 +1,4 @@ +#include QMK_KEYBOARD_H #include <string.h> #include "webusb.h" #include "wait.h" @@ -41,13 +42,29 @@ void webusb_receive(uint8_t *data, uint8_t length) { if(webusb_state.paired == true) { switch(command) { - //Handle commands in here + //Handle commands in here + case WEBUSB_GET_LAYER: + webusb_layer_event(); + break; + default: + break; } } else { webusb_error(WEBUSB_STATUS_NOT_PAIRED); } }; +void webusb_layer_event() { + uint8_t layer; + uint8_t event[4]; + layer = biton32(layer_state); + event[0] = WEBUSB_STATUS_OK; + event[1] = WEBUSB_EVT_LAYER; + event[2] = layer; + event[3] = WEBUSB_STOP_BIT; + webusb_send(event, sizeof(event)); +} + void webusb_error(uint8_t code) { uint8_t buffer[1]; buffer[0] = code; diff --git a/tmk_core/common/webusb.h b/tmk_core/common/webusb.h index 561a1f52dd..18e884f1ab 100644 --- a/tmk_core/common/webusb.h +++ b/tmk_core/common/webusb.h @@ -12,6 +12,7 @@ void webusb_receive(uint8_t *data, uint8_t length); void webusb_send(uint8_t *data, uint8_t length); +void webusb_layer_event(void); void webusb_error(uint8_t); void webusb_set_pairing_state(void); @@ -30,7 +31,8 @@ enum Webusb_Status_Code { enum Webusb_Command_Code { WEBUSB_CMD_PAIR, - WEBUSB_GET_FW_VERSION + WEBUSB_GET_FW_VERSION, + WEBUSB_GET_LAYER }; enum Webusb_Event_Code { |