diff options
| author | Selene ToyKeeper | 2023-07-17 14:24:17 -0600 |
|---|---|---|
| committer | Selene ToyKeeper | 2023-07-17 14:24:17 -0600 |
| commit | a16cf30beee2e5d06ba392c792aece17697b5a5f (patch) | |
| tree | 4c1cb91bc64fb913acbce4aa979419d9482508a0 | |
| parent | @wurkkos-*: raised default temperature limit from 45 C to 50 C, (diff) | |
| download | anduril-a16cf30beee2e5d06ba392c792aece17697b5a5f.tar.gz anduril-a16cf30beee2e5d06ba392c792aece17697b5a5f.tar.bz2 anduril-a16cf30beee2e5d06ba392c792aece17697b5a5f.zip | |
fixed LT1S Pro (using new refactor)
| -rw-r--r-- | hwdef-Sofirn_LT1S-Pro.c | 42 | ||||
| -rw-r--r-- | hwdef-Sofirn_LT1S-Pro.h | 48 |
2 files changed, 53 insertions, 37 deletions
diff --git a/hwdef-Sofirn_LT1S-Pro.c b/hwdef-Sofirn_LT1S-Pro.c index f5af65a..6fe0fef 100644 --- a/hwdef-Sofirn_LT1S-Pro.c +++ b/hwdef-Sofirn_LT1S-Pro.c @@ -4,6 +4,48 @@ #pragma once +void set_level_red(uint8_t level); +void set_level_white_blend(uint8_t level); +void set_level_auto_2ch_blend(uint8_t level); +void set_level_auto_3ch_blend(uint8_t level); +void set_level_red_white_blend(uint8_t level); + +bool gradual_tick_red(uint8_t gt); +bool gradual_tick_white_blend(uint8_t gt); +bool gradual_tick_auto_2ch_blend(uint8_t gt); +bool gradual_tick_auto_3ch_blend(uint8_t gt); +bool gradual_tick_red_white_blend(uint8_t gt); + + +Channel channels[] = { + { // manual blend of warm and cool white + .set_level = set_level_white_blend, + .gradual_tick = gradual_tick_white_blend, + .has_args = 1 + }, + { // auto blend from warm white to cool white + .set_level = set_level_auto_2ch_blend, + .gradual_tick = gradual_tick_auto_2ch_blend, + .has_args = 0 + }, + { // auto blend from red to warm white to cool white + .set_level = set_level_auto_3ch_blend, + .gradual_tick = gradual_tick_auto_3ch_blend, + .has_args = 0 + }, + { // red only + .set_level = set_level_red, + .gradual_tick = gradual_tick_red, + .has_args = 0 + }, + { // manual white blend + adjustable red + .set_level = set_level_red_white_blend, + .gradual_tick = gradual_tick_red_white_blend, + .has_args = 1 + } +}; + + // calculate a 3-channel "auto tint" blend // (like red -> warm white -> cool white) // results are placed in *a, *b, and *c vars diff --git a/hwdef-Sofirn_LT1S-Pro.h b/hwdef-Sofirn_LT1S-Pro.h index a63f906..fa30a09 100644 --- a/hwdef-Sofirn_LT1S-Pro.h +++ b/hwdef-Sofirn_LT1S-Pro.h @@ -13,11 +13,11 @@ * Voltage: VCC */ -#define HWDEF_C_FILE hwdef-Sofirn_LT1S-Pro.c - #define ATTINY 1616 #include <avr/io.h> +#define HWDEF_C_FILE hwdef-Sofirn_LT1S-Pro.c + // channel modes: // * 0. warm/cool white blend // * 1. auto 2ch white blend (warm -> cool by ramp level) @@ -25,37 +25,24 @@ // * 3. red only // * 4. red + white blend #define NUM_CHANNEL_MODES 5 -#define CM_WHITE 0 -#define CM_AUTO2 1 -#define CM_AUTO3 2 -#define CM_RED 3 -#define CM_WHITE_RED 4 +enum channel_modes_e { + CM_WHITE = 0, + CM_AUTO2, + CM_AUTO3, + CM_RED, + CM_WHITE_RED, +}; #define CHANNEL_MODES_ENABLED 0b00011111 -#define CHANNEL_HAS_ARGS 0b00010001 +#define USE_CHANNEL_MODE_ARGS // 128=middle CCT, _, _, _, 255=100% red #define CHANNEL_MODE_ARGS 128,0,0,0,255 -// TODO: blend mode should enable this automatically? -#define USE_CHANNEL_MODES -// TODO: blend mode should enable this automatically? -#define USE_CHANNEL_MODE_ARGS -// TODO: or maybe if args are defined, the USE_ should be auto-set? -#define SET_LEVEL_MODES set_level_white_blend, \ - set_level_auto_2ch_blend, \ - set_level_auto_3ch_blend, \ - set_level_red, \ - set_level_red_white_blend -// gradual ticking for thermal regulation -#define GRADUAL_TICK_MODES gradual_tick_white_blend, \ - gradual_tick_auto_2ch_blend, \ - gradual_tick_auto_3ch_blend, \ - gradual_tick_red, \ - gradual_tick_red_white_blend // can use some of the common handlers #define USE_CALC_2CH_BLEND //#define USE_CALC_AUTO_3CH_BLEND + // TODO: remove this as soon as it's not needed #define PWM_CHANNELS 1 @@ -108,19 +95,6 @@ #define USE_INDICATOR_LED_WHILE_RAMPING -// custom channel modes -void set_level_red(uint8_t level); -void set_level_white_blend(uint8_t level); -void set_level_auto_2ch_blend(uint8_t level); -void set_level_auto_3ch_blend(uint8_t level); -void set_level_red_white_blend(uint8_t level); - -bool gradual_tick_red(uint8_t gt); -bool gradual_tick_white_blend(uint8_t gt); -bool gradual_tick_auto_2ch_blend(uint8_t gt); -bool gradual_tick_auto_3ch_blend(uint8_t gt); -bool gradual_tick_red_white_blend(uint8_t gt); - inline void hwdef_setup() { |
