Relocate m256ws VIA logic (#24009)
This commit is contained in:
		
							parent
							
								
									9ca1f35333
								
							
						
					
					
						commit
						7bc53b8baa
					
				| @ -23,5 +23,3 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
| #define WS2812_PWM_PAL_MODE 1 | #define WS2812_PWM_PAL_MODE 1 | ||||||
| #define WS2812_PWM_DMA_STREAM STM32_DMA2_STREAM5 | #define WS2812_PWM_DMA_STREAM STM32_DMA2_STREAM5 | ||||||
| #define WS2812_PWM_DMA_CHANNEL 6 | #define WS2812_PWM_DMA_CHANNEL 6 | ||||||
| 
 |  | ||||||
| #define EECONFIG_KB_DATA_SIZE (1) |  | ||||||
|  | |||||||
							
								
								
									
										20
									
								
								keyboards/mode/m256ws/keymaps/via/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								keyboards/mode/m256ws/keymaps/via/config.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | |||||||
|  | /*
 | ||||||
|  | Copyright 2022 Gondolindrim | ||||||
|  | 
 | ||||||
|  | This program is free software: you can redistribute it and/or modify | ||||||
|  | it under the terms of the GNU General Public License as published by | ||||||
|  | the Free Software Foundation, either version 2 of the License, or | ||||||
|  | (at your option) any later version. | ||||||
|  | 
 | ||||||
|  | This program is distributed in the hope that it will be useful, | ||||||
|  | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | GNU General Public License for more details. | ||||||
|  | 
 | ||||||
|  | You should have received a copy of the GNU General Public License | ||||||
|  | along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #define EECONFIG_USER_DATA_SIZE (1) | ||||||
| @ -31,3 +31,135 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
|     KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS |     KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS | ||||||
| ) | ) | ||||||
| }; | }; | ||||||
|  | 
 | ||||||
|  | bool is_second_rgb_row_active; | ||||||
|  | 
 | ||||||
|  | enum via_secondrow_enable { | ||||||
|  |     id_is_second_rgb_row_active = 0 | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // Sets the second RGB row on or off; done by setting effect range.
 | ||||||
|  | void set_second_rgb_row(bool is_active) { | ||||||
|  |     rgblight_disable_noeeprom(); | ||||||
|  |     switch (is_active) | ||||||
|  |     { | ||||||
|  |         case true: | ||||||
|  |         { | ||||||
|  |             rgblight_set_effect_range(0,30); | ||||||
|  |             break; | ||||||
|  |         } | ||||||
|  |         case false: | ||||||
|  |         { | ||||||
|  |             rgblight_set_effect_range(0,15); | ||||||
|  |             break; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     rgblight_enable_noeeprom(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // At the keyboard start, retrieves PMEM stored configs
 | ||||||
|  | void keyboard_post_init_user(void) { | ||||||
|  |     rgblight_disable_noeeprom(); | ||||||
|  |     wait_ms(20); | ||||||
|  |     eeconfig_read_user_datablock(&is_second_rgb_row_active); | ||||||
|  |     set_second_rgb_row(is_second_rgb_row_active); | ||||||
|  |     rgblight_reload_from_eeprom(); | ||||||
|  |     rgblight_set(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void eeconfig_init_user(void) {  // EEPROM is getting reset!
 | ||||||
|  |     // rgblight_disable(); // Enable RGB by default
 | ||||||
|  |     // Define the defualt value and write it to EEPROM
 | ||||||
|  |     is_second_rgb_row_active = true; | ||||||
|  |     set_second_rgb_row(is_second_rgb_row_active); | ||||||
|  |     eeconfig_update_user_datablock(&is_second_rgb_row_active); | ||||||
|  | 
 | ||||||
|  |     // Disable rgblight by default on EEPROM initialization
 | ||||||
|  |     rgblight_disable(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void secondrow_config_set_value( uint8_t *data ) | ||||||
|  | { | ||||||
|  |     // data = [ value_id, value_data ]
 | ||||||
|  |     uint8_t *value_id   = &(data[0]); | ||||||
|  |     uint8_t *value_data = &(data[1]); | ||||||
|  | 
 | ||||||
|  |     switch ( *value_id ) | ||||||
|  |     { | ||||||
|  |         case id_is_second_rgb_row_active: | ||||||
|  |         { | ||||||
|  |             is_second_rgb_row_active = (bool) *value_data; | ||||||
|  |             break; | ||||||
|  |         } | ||||||
|  |         default: | ||||||
|  |         { | ||||||
|  |             is_second_rgb_row_active = true; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     set_second_rgb_row(is_second_rgb_row_active); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void secondrow_config_get_value( uint8_t *data ) | ||||||
|  | { | ||||||
|  |     // data = [ value_id, value_data ]
 | ||||||
|  |     uint8_t *value_id   = &(data[0]); | ||||||
|  |     uint8_t *value_data = &(data[1]); | ||||||
|  | 
 | ||||||
|  |     switch ( *value_id ) | ||||||
|  |     { | ||||||
|  |          case id_is_second_rgb_row_active: | ||||||
|  |          { | ||||||
|  |              *value_data = is_second_rgb_row_active; | ||||||
|  |               break; | ||||||
|  |          } | ||||||
|  |          default: | ||||||
|  |          { | ||||||
|  |              *value_data = false; | ||||||
|  |          } | ||||||
|  |      } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void secondrow_config_save(void) | ||||||
|  | { | ||||||
|  |     eeconfig_update_user_datablock(&is_second_rgb_row_active); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void via_custom_value_command_kb(uint8_t *data, uint8_t length) { | ||||||
|  |     // data = [ command_id, channel_id, value_id, value_data ]
 | ||||||
|  |     uint8_t *command_id        = &(data[0]); | ||||||
|  |     uint8_t *channel_id        = &(data[1]); | ||||||
|  |     uint8_t *value_id_and_data = &(data[2]); | ||||||
|  | 
 | ||||||
|  |     if ( *channel_id == id_custom_channel ) { | ||||||
|  |         switch ( *command_id ) | ||||||
|  |         { | ||||||
|  |             case id_custom_set_value: | ||||||
|  |             { | ||||||
|  |                 secondrow_config_set_value(value_id_and_data); | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |             case id_custom_get_value: | ||||||
|  |             { | ||||||
|  |                 secondrow_config_get_value(value_id_and_data); | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |             case id_custom_save: | ||||||
|  |             { | ||||||
|  |                 secondrow_config_save(); | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |             default: | ||||||
|  |             { | ||||||
|  |                 // Unhandled message.
 | ||||||
|  |                 *command_id = id_unhandled; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // Return the unhandled state
 | ||||||
|  |     *command_id = id_unhandled; | ||||||
|  | 
 | ||||||
|  |     // DO NOT call raw_hid_send(data,length) here, let caller do this
 | ||||||
|  | } | ||||||
|  | |||||||
| @ -1,153 +0,0 @@ | |||||||
| /* Copyright 2022 Gondolindrim
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #include "quantum.h" |  | ||||||
| 
 |  | ||||||
| #ifdef VIA_ENABLE |  | ||||||
| bool is_second_rgb_row_active; |  | ||||||
| enum via_secondrow_enable { |  | ||||||
|     id_is_second_rgb_row_active = 0 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| // Sets the second RGB row on or off; done by setting effect range.
 |  | ||||||
| void set_second_rgb_row(bool is_active) { |  | ||||||
|     rgblight_disable_noeeprom(); |  | ||||||
|     switch (is_active) |  | ||||||
|     { |  | ||||||
|         case true: |  | ||||||
|         { |  | ||||||
|             rgblight_set_effect_range(0,30); |  | ||||||
|             break; |  | ||||||
|         } |  | ||||||
|         case false: |  | ||||||
|         { |  | ||||||
|             rgblight_set_effect_range(0,15); |  | ||||||
|             break; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     rgblight_enable_noeeprom(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // At the keyboard start, retrieves PMEM stored configs
 |  | ||||||
| void keyboard_post_init_kb(void) { |  | ||||||
|     rgblight_disable_noeeprom(); |  | ||||||
|     wait_ms(20); |  | ||||||
|     eeconfig_read_kb_datablock(&is_second_rgb_row_active); |  | ||||||
|     set_second_rgb_row(is_second_rgb_row_active); |  | ||||||
|     rgblight_reload_from_eeprom(); |  | ||||||
|     rgblight_set(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void eeconfig_init_kb(void) {  // EEPROM is getting reset!
 |  | ||||||
|     // rgblight_disable(); // Enable RGB by default
 |  | ||||||
|     // Define the defualt value and write it to EEPROM
 |  | ||||||
|     is_second_rgb_row_active = true; |  | ||||||
|     set_second_rgb_row(is_second_rgb_row_active); |  | ||||||
|     eeconfig_update_kb_datablock(&is_second_rgb_row_active); |  | ||||||
| 
 |  | ||||||
|     // Disable rgblight by default on EEPROM initialization
 |  | ||||||
|     rgblight_disable(); |  | ||||||
| 
 |  | ||||||
|     // Run user code, if any
 |  | ||||||
|     eeconfig_init_user(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void secondrow_config_set_value( uint8_t *data ) |  | ||||||
| { |  | ||||||
|     // data = [ value_id, value_data ]
 |  | ||||||
|     uint8_t *value_id   = &(data[0]); |  | ||||||
|     uint8_t *value_data = &(data[1]); |  | ||||||
| 
 |  | ||||||
|     switch ( *value_id ) |  | ||||||
|     { |  | ||||||
|         case id_is_second_rgb_row_active: |  | ||||||
|         { |  | ||||||
|             is_second_rgb_row_active = (bool) *value_data; |  | ||||||
|             break; |  | ||||||
|         } |  | ||||||
|         default: |  | ||||||
|         { |  | ||||||
|             is_second_rgb_row_active = true; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     set_second_rgb_row(is_second_rgb_row_active); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void secondrow_config_get_value( uint8_t *data ) |  | ||||||
| { |  | ||||||
|     // data = [ value_id, value_data ]
 |  | ||||||
|     uint8_t *value_id   = &(data[0]); |  | ||||||
|     uint8_t *value_data = &(data[1]); |  | ||||||
| 
 |  | ||||||
|     switch ( *value_id ) |  | ||||||
|     { |  | ||||||
|          case id_is_second_rgb_row_active: |  | ||||||
|          { |  | ||||||
|              *value_data = is_second_rgb_row_active; |  | ||||||
|               break; |  | ||||||
|          } |  | ||||||
|          default: |  | ||||||
|          { |  | ||||||
|              *value_data = false; |  | ||||||
|          } |  | ||||||
|      } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void secondrow_config_save(void) |  | ||||||
| { |  | ||||||
| 
 |  | ||||||
|     eeconfig_update_kb_datablock(&is_second_rgb_row_active); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void via_custom_value_command_kb(uint8_t *data, uint8_t length) { |  | ||||||
|     // data = [ command_id, channel_id, value_id, value_data ]
 |  | ||||||
|     uint8_t *command_id        = &(data[0]); |  | ||||||
|     uint8_t *channel_id        = &(data[1]); |  | ||||||
|     uint8_t *value_id_and_data = &(data[2]); |  | ||||||
| 
 |  | ||||||
|     if ( *channel_id == id_custom_channel ) { |  | ||||||
|         switch ( *command_id ) |  | ||||||
|         { |  | ||||||
|             case id_custom_set_value: |  | ||||||
|             { |  | ||||||
|                 secondrow_config_set_value(value_id_and_data); |  | ||||||
|                 break; |  | ||||||
|             } |  | ||||||
|             case id_custom_get_value: |  | ||||||
|             { |  | ||||||
|                 secondrow_config_get_value(value_id_and_data); |  | ||||||
|                 break; |  | ||||||
|             } |  | ||||||
|             case id_custom_save: |  | ||||||
|             { |  | ||||||
|                 secondrow_config_save(); |  | ||||||
|                 break; |  | ||||||
|             } |  | ||||||
|             default: |  | ||||||
|             { |  | ||||||
|                 // Unhandled message.
 |  | ||||||
|                 *command_id = id_unhandled; |  | ||||||
|                 break; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         return; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     // Return the unhandled state
 |  | ||||||
|     *command_id = id_unhandled; |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
| #endif // VIA ENABLE
 |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user