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_DMA_STREAM STM32_DMA2_STREAM5 | ||||
| #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 | ||||
| ) | ||||
| }; | ||||
| 
 | ||||
| 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