diff options
Diffstat (limited to 'quantum/via.h')
| -rw-r--r-- | quantum/via.h | 105 | 
1 files changed, 83 insertions, 22 deletions
diff --git a/quantum/via.h b/quantum/via.h index 558ae95de4..eca0733525 100644 --- a/quantum/via.h +++ b/quantum/via.h @@ -58,7 +58,17 @@  // This is changed only when the command IDs change,  // so VIA Configurator can detect compatible firmware. -#define VIA_PROTOCOL_VERSION 0x000A +#define VIA_PROTOCOL_VERSION 0x000B + +// This is a version number for the firmware for the keyboard. +// It can be used to ensure the VIA keyboard definition and the firmware +// have the same version, especially if there are changes to custom values. +// Define this in config.h to override and bump this number. +// This is *not* required if the keyboard is only using basic functionality +// and not using custom values for lighting, rotary encoders, etc. +#ifndef VIA_FIRMWARE_VERSION +#    define VIA_FIRMWARE_VERSION 0x00000000 +#endif  enum via_command_id {      id_get_protocol_version                 = 0x01, // always 0x01 @@ -67,9 +77,9 @@ enum via_command_id {      id_dynamic_keymap_get_keycode           = 0x04,      id_dynamic_keymap_set_keycode           = 0x05,      id_dynamic_keymap_reset                 = 0x06, -    id_lighting_set_value                   = 0x07, -    id_lighting_get_value                   = 0x08, -    id_lighting_save                        = 0x09, +    id_custom_set_value                     = 0x07, +    id_custom_get_value                     = 0x08, +    id_custom_save                          = 0x09,      id_eeprom_reset                         = 0x0A,      id_bootloader_jump                      = 0x0B,      id_dynamic_keymap_macro_get_count       = 0x0C, @@ -86,30 +96,47 @@ enum via_command_id {  };  enum via_keyboard_value_id { -    id_uptime              = 0x01, // +    id_uptime              = 0x01,      id_layout_options      = 0x02, -    id_switch_matrix_state = 0x03 +    id_switch_matrix_state = 0x03, +    id_firmware_version    = 0x04, +    id_device_indication   = 0x05, +}; + +enum via_channel_id { +    id_custom_channel         = 0, +    id_qmk_backlight_channel  = 1, +    id_qmk_rgblight_channel   = 2, +    id_qmk_rgb_matrix_channel = 3, +    id_qmk_audio_channel      = 4, +}; + +enum via_qmk_backlight_value { +    id_qmk_backlight_brightness = 1, +    id_qmk_backlight_effect     = 2, +}; + +enum via_qmk_rgblight_value { +    id_qmk_rgblight_brightness   = 1, +    id_qmk_rgblight_effect       = 2, +    id_qmk_rgblight_effect_speed = 3, +    id_qmk_rgblight_color        = 4,  }; -enum via_lighting_value { -    // QMK BACKLIGHT -    id_qmk_backlight_brightness = 0x09, -    id_qmk_backlight_effect     = 0x0A, +enum via_qmk_rgb_matrix_value { +    id_qmk_rgb_matrix_brightness   = 1, +    id_qmk_rgb_matrix_effect       = 2, +    id_qmk_rgb_matrix_effect_speed = 3, +    id_qmk_rgb_matrix_color        = 4, +}; -    // QMK RGBLIGHT -    id_qmk_rgblight_brightness   = 0x80, -    id_qmk_rgblight_effect       = 0x81, -    id_qmk_rgblight_effect_speed = 0x82, -    id_qmk_rgblight_color        = 0x83, +enum via_qmk_audio_value { +    id_qmk_audio_enable        = 1, +    id_qmk_audio_clicky_enable = 2,  }; -// Can't use SAFE_RANGE here, it might change if someone adds -// new values to enum quantum_keycodes. -// Need to keep checking 0x5F10 is still in the safe range. -// TODO: merge this into quantum_keycodes -// Backlight keycodes are in range 0x5F00-0x5F0F  enum via_keycodes { -    FN_MO13 = 0x5F10, +    FN_MO13 = QK_MACRO,      FN_MO23,      MACRO00,      MACRO01, @@ -130,7 +157,7 @@ enum via_keycodes {  };  enum user_keycodes { -    USER00 = 0x5F80, +    USER00 = QK_USER,      USER01,      USER02,      USER03, @@ -165,5 +192,39 @@ uint32_t via_get_layout_options(void);  void     via_set_layout_options(uint32_t value);  void     via_set_layout_options_kb(uint32_t value); +// Used by VIA to tell a device to flash LEDs (or do something else) when that +// device becomes the active device being configured, on startup or switching +// between devices. +void via_set_device_indication(uint8_t value); +  // Called by QMK core to process VIA-specific keycodes.  bool process_record_via(uint16_t keycode, keyrecord_t *record); + +// These are made external so that keyboard level custom value handlers can use them. +#if defined(BACKLIGHT_ENABLE) +void via_qmk_backlight_command(uint8_t *data, uint8_t length); +void via_qmk_backlight_set_value(uint8_t *data); +void via_qmk_backlight_get_value(uint8_t *data); +void via_qmk_backlight_save(void); +#endif + +#if defined(RGBLIGHT_ENABLE) +void via_qmk_rgblight_command(uint8_t *data, uint8_t length); +void via_qmk_rgblight_set_value(uint8_t *data); +void via_qmk_rgblight_get_value(uint8_t *data); +void via_qmk_rgblight_save(void); +#endif + +#if defined(RGB_MATRIX_ENABLE) +void via_qmk_rgb_matrix_command(uint8_t *data, uint8_t length); +void via_qmk_rgb_matrix_set_value(uint8_t *data); +void via_qmk_rgb_matrix_get_value(uint8_t *data); +void via_qmk_rgb_matrix_save(void); +#endif + +#if defined(AUDIO_ENABLE) +void via_qmk_audio_command(uint8_t *data, uint8_t length); +void via_qmk_audio_set_value(uint8_t *data); +void via_qmk_audio_get_value(uint8_t *data); +void via_qmk_audio_save(void); +#endif
\ No newline at end of file  | 
