diff options
| -rw-r--r-- | keyboards/mode/m256ws/config.h | 2 | ||||
| -rw-r--r-- | keyboards/mode/m256ws/keymaps/via/config.h | 20 | ||||
| -rw-r--r-- | keyboards/mode/m256ws/keymaps/via/keymap.c | 132 | ||||
| -rw-r--r-- | keyboards/mode/m256ws/m256ws.c | 153 | 
4 files changed, 152 insertions, 155 deletions
| diff --git a/keyboards/mode/m256ws/config.h b/keyboards/mode/m256ws/config.h index 06f1658ea5..5bb3d6d1f3 100644 --- a/keyboards/mode/m256ws/config.h +++ b/keyboards/mode/m256ws/config.h @@ -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) diff --git a/keyboards/mode/m256ws/keymaps/via/config.h b/keyboards/mode/m256ws/keymaps/via/config.h new file mode 100644 index 0000000000..31dfebf49a --- /dev/null +++ b/keyboards/mode/m256ws/keymaps/via/config.h @@ -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) diff --git a/keyboards/mode/m256ws/keymaps/via/keymap.c b/keyboards/mode/m256ws/keymaps/via/keymap.c index ab77f7af20..6766852f78 100644 --- a/keyboards/mode/m256ws/keymaps/via/keymap.c +++ b/keyboards/mode/m256ws/keymaps/via/keymap.c @@ -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 +} diff --git a/keyboards/mode/m256ws/m256ws.c b/keyboards/mode/m256ws/m256ws.c deleted file mode 100644 index 5603de7b01..0000000000 --- a/keyboards/mode/m256ws/m256ws.c +++ /dev/null @@ -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 | 
