via/vial: kill all rawhid handling while unlocking

This commit is contained in:
Ilya Zhuravlev 2020-12-29 15:36:12 -05:00
parent 1b670b3fea
commit cc59ab21c5
4 changed files with 21 additions and 13 deletions

View File

@ -218,6 +218,13 @@ __attribute__((weak)) void raw_hid_receive_kb(uint8_t *data, uint8_t length) {
void raw_hid_receive(uint8_t *data, uint8_t length) {
uint8_t *command_id = &(data[0]);
uint8_t *command_data = &(data[1]);
#ifdef VIAL_ENABLE
/* When unlock is in progress, only command we react to is unlock_poll */
if (vial_unlock_in_progress && (data[0] != id_vial_prefix || data[1] != vial_unlock_poll))
goto skip;
#endif
switch (*command_id) {
case id_get_protocol_version: {
command_data[0] = VIA_PROTOCOL_VERSION >> 8;
@ -419,7 +426,7 @@ void raw_hid_receive(uint8_t *data, uint8_t length) {
break;
}
#ifdef VIAL_ENABLE
case 0xFE: {
case id_vial_prefix: {
vial_handle_cmd(data, length);
break;
}

View File

@ -78,6 +78,7 @@ enum via_command_id {
id_dynamic_keymap_get_layer_count = 0x11,
id_dynamic_keymap_get_buffer = 0x12,
id_dynamic_keymap_set_buffer = 0x13,
id_vial_prefix = 0xFE,
id_unhandled = 0xFF,
};

View File

@ -25,18 +25,6 @@
#define VIAL_UNLOCK_COUNTER_MAX 50
enum {
vial_get_keyboard_id = 0x00,
vial_get_size = 0x01,
vial_get_def = 0x02,
vial_get_encoder = 0x03,
vial_set_encoder = 0x04,
vial_get_lock = 0x05,
vial_unlock_start = 0x06,
vial_unlock_poll = 0x07,
vial_lock = 0x08,
};
#ifdef VIAL_INSECURE
#pragma message "Building Vial-enabled firmware in insecure mode."
int vial_unlocked = 1;

View File

@ -29,3 +29,15 @@ void vial_encoder_update(uint8_t index, bool clockwise);
extern int vial_unlocked;
extern int vial_unlock_in_progress;
enum {
vial_get_keyboard_id = 0x00,
vial_get_size = 0x01,
vial_get_def = 0x02,
vial_get_encoder = 0x03,
vial_set_encoder = 0x04,
vial_get_lock = 0x05,
vial_unlock_start = 0x06,
vial_unlock_poll = 0x07,
vial_lock = 0x08,
};