diff options
Diffstat (limited to 'quantum/via.h')
| -rw-r--r-- | quantum/via.h | 61 |
1 files changed, 27 insertions, 34 deletions
diff --git a/quantum/via.h b/quantum/via.h index f9a8017b2..98f8dea8c 100644 --- a/quantum/via.h +++ b/quantum/via.h | |||
| @@ -16,7 +16,7 @@ | |||
| 16 | 16 | ||
| 17 | #pragma once | 17 | #pragma once |
| 18 | 18 | ||
| 19 | #include <tmk_core/common/eeconfig.h> // for EECONFIG_SIZE | 19 | #include <tmk_core/common/eeconfig.h> // for EECONFIG_SIZE |
| 20 | 20 | ||
| 21 | // Keyboard level code can change where VIA stores the magic. | 21 | // Keyboard level code can change where VIA stores the magic. |
| 22 | // The magic is the build date YYMMDD encoded as BCD in 3 bytes, | 22 | // The magic is the build date YYMMDD encoded as BCD in 3 bytes, |
| @@ -25,34 +25,33 @@ | |||
| 25 | // The only reason this is important is in case EEPROM usage changes | 25 | // The only reason this is important is in case EEPROM usage changes |
| 26 | // and the EEPROM was not explicitly reset by bootmagic lite. | 26 | // and the EEPROM was not explicitly reset by bootmagic lite. |
| 27 | #ifndef VIA_EEPROM_MAGIC_ADDR | 27 | #ifndef VIA_EEPROM_MAGIC_ADDR |
| 28 | # define VIA_EEPROM_MAGIC_ADDR (EECONFIG_SIZE) | 28 | # define VIA_EEPROM_MAGIC_ADDR (EECONFIG_SIZE) |
| 29 | #endif | 29 | #endif |
| 30 | 30 | ||
| 31 | #define VIA_EEPROM_LAYOUT_OPTIONS_ADDR (VIA_EEPROM_MAGIC_ADDR+3) | 31 | #define VIA_EEPROM_LAYOUT_OPTIONS_ADDR (VIA_EEPROM_MAGIC_ADDR + 3) |
| 32 | 32 | ||
| 33 | // Changing the layout options size after release will invalidate EEPROM, | 33 | // Changing the layout options size after release will invalidate EEPROM, |
| 34 | // but this is something that should be set correctly on initial implementation. | 34 | // but this is something that should be set correctly on initial implementation. |
| 35 | // 1 byte is enough for most uses (i.e. 8 binary states, or 6 binary + 1 ternary/quaternary ) | 35 | // 1 byte is enough for most uses (i.e. 8 binary states, or 6 binary + 1 ternary/quaternary ) |
| 36 | #ifndef VIA_EEPROM_LAYOUT_OPTIONS_SIZE | 36 | #ifndef VIA_EEPROM_LAYOUT_OPTIONS_SIZE |
| 37 | # define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 1 | 37 | # define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 1 |
| 38 | #endif | 38 | #endif |
| 39 | 39 | ||
| 40 | // The end of the EEPROM memory used by VIA | 40 | // The end of the EEPROM memory used by VIA |
| 41 | // By default, dynamic keymaps will start at this if there is no | 41 | // By default, dynamic keymaps will start at this if there is no |
| 42 | // custom config | 42 | // custom config |
| 43 | #define VIA_EEPROM_CUSTOM_CONFIG_ADDR (VIA_EEPROM_LAYOUT_OPTIONS_ADDR+VIA_EEPROM_LAYOUT_OPTIONS_SIZE) | 43 | #define VIA_EEPROM_CUSTOM_CONFIG_ADDR (VIA_EEPROM_LAYOUT_OPTIONS_ADDR + VIA_EEPROM_LAYOUT_OPTIONS_SIZE) |
| 44 | 44 | ||
| 45 | #ifndef VIA_EEPROM_CUSTOM_CONFIG_SIZE | 45 | #ifndef VIA_EEPROM_CUSTOM_CONFIG_SIZE |
| 46 | # define VIA_EEPROM_CUSTOM_CONFIG_SIZE 0 | 46 | # define VIA_EEPROM_CUSTOM_CONFIG_SIZE 0 |
| 47 | #endif | 47 | #endif |
| 48 | 48 | ||
| 49 | // This is changed only when the command IDs change, | 49 | // This is changed only when the command IDs change, |
| 50 | // so VIA Configurator can detect compatible firmware. | 50 | // so VIA Configurator can detect compatible firmware. |
| 51 | #define VIA_PROTOCOL_VERSION 0x0009 | 51 | #define VIA_PROTOCOL_VERSION 0x0009 |
| 52 | 52 | ||
| 53 | enum via_command_id | 53 | enum via_command_id { |
| 54 | { | 54 | id_get_protocol_version = 0x01, // always 0x01 |
| 55 | id_get_protocol_version = 0x01, // always 0x01 | ||
| 56 | id_get_keyboard_value, | 55 | id_get_keyboard_value, |
| 57 | id_set_keyboard_value, | 56 | id_set_keyboard_value, |
| 58 | id_dynamic_keymap_get_keycode, | 57 | id_dynamic_keymap_get_keycode, |
| @@ -74,12 +73,7 @@ enum via_command_id | |||
| 74 | id_unhandled = 0xFF, | 73 | id_unhandled = 0xFF, |
| 75 | }; | 74 | }; |
| 76 | 75 | ||
| 77 | enum via_keyboard_value_id | 76 | enum via_keyboard_value_id { id_uptime = 0x01, id_layout_options, id_switch_matrix_state }; |
| 78 | { | ||
| 79 | id_uptime = 0x01, | ||
| 80 | id_layout_options, | ||
| 81 | id_switch_matrix_state | ||
| 82 | }; | ||
| 83 | 77 | ||
| 84 | // Can't use SAFE_RANGE here, it might change if someone adds | 78 | // Can't use SAFE_RANGE here, it might change if someone adds |
| 85 | // new values to enum quantum_keycodes. | 79 | // new values to enum quantum_keycodes. |
| @@ -108,22 +102,22 @@ enum via_keycodes { | |||
| 108 | }; | 102 | }; |
| 109 | 103 | ||
| 110 | enum user_keycodes { | 104 | enum user_keycodes { |
| 111 | USER00 = 0x5F80, | 105 | USER00 = 0x5F80, |
| 112 | USER01, | 106 | USER01, |
| 113 | USER02, | 107 | USER02, |
| 114 | USER03, | 108 | USER03, |
| 115 | USER04, | 109 | USER04, |
| 116 | USER05, | 110 | USER05, |
| 117 | USER06, | 111 | USER06, |
| 118 | USER07, | 112 | USER07, |
| 119 | USER08, | 113 | USER08, |
| 120 | USER09, | 114 | USER09, |
| 121 | USER10, | 115 | USER10, |
| 122 | USER11, | 116 | USER11, |
| 123 | USER12, | 117 | USER12, |
| 124 | USER13, | 118 | USER13, |
| 125 | USER14, | 119 | USER14, |
| 126 | USER15, | 120 | USER15, |
| 127 | }; | 121 | }; |
| 128 | 122 | ||
| 129 | // Can be called in an overriding via_init_kb() to test if keyboard level code usage of | 123 | // Can be called in an overriding via_init_kb() to test if keyboard level code usage of |
| @@ -144,8 +138,7 @@ void via_init(void); | |||
| 144 | 138 | ||
| 145 | // Used by VIA to store and retrieve the layout options. | 139 | // Used by VIA to store and retrieve the layout options. |
| 146 | uint32_t via_get_layout_options(void); | 140 | uint32_t via_get_layout_options(void); |
| 147 | void via_set_layout_options(uint32_t value); | 141 | void via_set_layout_options(uint32_t value); |
| 148 | 142 | ||
| 149 | // Called by QMK core to process VIA-specific keycodes. | 143 | // Called by QMK core to process VIA-specific keycodes. |
| 150 | bool process_record_via(uint16_t keycode, keyrecord_t *record); | 144 | bool process_record_via(uint16_t keycode, keyrecord_t *record); |
| 151 | |||
