Lamp-Da 0.1
A compact lantern project
Loading...
Searching...
No Matches
Classes | Static Public Member Functions | Static Public Attributes | List of all members
lampda::modes::fixed::PalettePapiMode Struct Reference

Special colored palette step mode. Ideal to set a target prefered color. More...

#include <fixed_modes.hpp>

Inheritance diagram for lampda::modes::fixed::PalettePapiMode:
lampda::modes::fixed::PaletteMode< true > lampda::modes::BasicMode

Classes

struct  StateTy
 

Static Public Member Functions

static void on_enter_mode (auto &ctx)
 
static void loop (auto &ctx)
 
static void sunset_update (auto &ctx, float progress)
 Sunset timer will drop pixels downward, and never display them again.
 
static void on_exit_mode (auto &ctx)
 Custom callback when mode goes outside of focus (optional)
 
static void brightness_update (auto &ctx, brightness_t brightness)
 Custom callback when brightness changes (optional)
 
static void custom_ramp_update (auto &ctx, uint8_t rampValue)
 Custom callback when system sets user ramp (optional)
 
static bool custom_click (auto &ctx, uint8_t nbClick)
 Custom "usermode" button UI for "click" action (optional)
 
static bool custom_hold (auto &ctx, uint8_t nbClickAndHold, bool isEndOfHoldEvent, uint32_t holdDuration)
 Custom "usermode" button UI for "click+hold" action (optional)
 
static void power_on_sequence (auto &ctx)
 Custom callback when the system powers on (optional)
 
static void power_off_sequence (auto &ctx)
 Custom callback when the system powers off (optional)
 
static void read_parameters (auto &ctx)
 Custom callback to read parameters from filesystem (optional)
 
static void write_parameters (auto &ctx)
 Custom callback to write parameters to filesystem (optional)
 
static void user_thread (auto &ctx)
 Custom secondary loop, executed in another thread (optional)
 

Static Public Attributes

static constexpr uint8_t dissolveBufferId
 
static anims::fadeout::GravityDissolve< dissolveBufferId > sunsetAnimation
 
static constexpr bool hasCustomRamp
 hint manager to save our custom ramp
 
static constexpr bool hasSunsetAnimation
 sunset animation on the fixed modes
 
static constexpr bool isGroupManager = false
 
static constexpr bool hasBrightCallback = false
 Toggles the use of custom BasicMode::brightness_update() callback.
 
static constexpr bool hasButtonCustomUI = false
 Toggles "usermode" button UI custom_click() and custom_hold()
 
static constexpr bool hasSystemCallbacks = false
 Toggles advanced system callbacks, see list here .
 
static constexpr bool requireUserThread = false
 Toggles the use of custom BasicMode::user_thread() callback.
 
static constexpr uint32_t storeId = 0
 Store identifier for persistent storage (optional)
 

Detailed Description

Special colored palette step mode. Ideal to set a target prefered color.

Member Function Documentation

◆ brightness_update()

static void lampda::modes::BasicMode::brightness_update ( auto &  ctx,
brightness_t  brightness 
)
inlinestaticinherited

Custom callback when brightness changes (optional)

Callback active only if BasicMode::hasBrightCallback is True

Parameters
[in]ctxThe current context
[in]brightnessThe brightness value set by the system
Remarks
Use update_brightness() to change brightness in order for this callback to be correctly handled at runtime

◆ custom_click()

static bool lampda::modes::BasicMode::custom_click ( auto &  ctx,
uint8_t  nbClick 
)
inlinestaticinherited

Custom "usermode" button UI for "click" action (optional)

Callback active only if BasicMode::hasButtonCustomUI is True

Parameters
[in]ctxThe current context
[in]nbClickThe number of clicks made by the user
Returns
Returns True if default UI action should be prevented

◆ custom_hold()

static bool lampda::modes::BasicMode::custom_hold ( auto &  ctx,
uint8_t  nbClickAndHold,
bool  isEndOfHoldEvent,
uint32_t  holdDuration 
)
inlinestaticinherited

Custom "usermode" button UI for "click+hold" action (optional)

Callback active only if BasicMode::hasButtonCustomUI is True

Parameters
[in]ctxThe current context
[in]nbClickAndHoldThe number of clicks made by the user
[in]isEndOfHoldEventTrue if the user just released the button
[in]holdDurationThe duration of the on-going hold event
Returns
Returns True if default action must be prevented
Remarks
When isEndOfHoldEvent is True, then holdDuration is zero

◆ custom_ramp_update()

static void lampda::modes::BasicMode::custom_ramp_update ( auto &  ctx,
uint8_t  rampValue 
)
inlinestaticinherited

Custom callback when system sets user ramp (optional)

This can be used to make a mode configurable through the 3H click+hold user action, which will cycle through the 0-255 values in a ~2s ramp

Parameters
[in]ctxThe current context
[in]rampValueThe custom value set by the user
Remarks
This behavior is in user::button_hold_default() and may be prevented if custom "usermode UI" via custom_hold() is enabled

◆ on_exit_mode()

static void lampda::modes::BasicMode::on_exit_mode ( auto &  ctx)
inlinestaticinherited

Custom callback when mode goes outside of focus (optional)

Parameters
[in]ctxThe current context

◆ power_off_sequence()

static void lampda::modes::BasicMode::power_off_sequence ( auto &  ctx)
inlinestaticinherited

Custom callback when the system powers off (optional)

Callback active only if BasicMode::hasSystemCallbacks is True

Parameters
[in]ctxThe current context
Remarks
This must be a non-blocking function

◆ power_on_sequence()

static void lampda::modes::BasicMode::power_on_sequence ( auto &  ctx)
inlinestaticinherited

Custom callback when the system powers on (optional)

Callback active only if BasicMode::hasSystemCallbacks is True

Parameters
[in]ctxThe current context
Remarks
This must be a non-blocking function

◆ read_parameters()

static void lampda::modes::BasicMode::read_parameters ( auto &  ctx)
inlinestaticinherited

Custom callback to read parameters from filesystem (optional)

Callback active only if BasicMode::hasSystemCallbacks is True

Parameters
[in]ctxThe current context

◆ user_thread()

static void lampda::modes::BasicMode::user_thread ( auto &  ctx)
inlinestaticinherited

Custom secondary loop, executed in another thread (optional)

Called only if BasicMode::requireUserThread is True

Parameters
[in]ctxThe current context
Remarks
This is executed as prologue of user::user_thread() and hence must complete quickly in order to keep the lamp responsive

◆ write_parameters()

static void lampda::modes::BasicMode::write_parameters ( auto &  ctx)
inlinestaticinherited

Custom callback to write parameters to filesystem (optional)

Callback active only if BasicMode::hasSystemCallbacks is True

Parameters
[in]ctxThe current context

Member Data Documentation

◆ hasSystemCallbacks

constexpr bool lampda::modes::BasicMode::hasSystemCallbacks = false
staticconstexprinherited

Toggles advanced system callbacks, see list here .

Required to use any of the following:

Remarks
By default, these callbacks are called for all modes (not only the active one) and thus should be kept minimal

◆ requireUserThread

constexpr bool lampda::modes::BasicMode::requireUserThread = false
staticconstexprinherited

Toggles the use of custom BasicMode::user_thread() callback.

Remarks
When this is enabled, default is to call hardware::LampTy's show() in user::user_thread() after the BasicMode::user_thread() callback

◆ storeId

constexpr uint32_t lampda::modes::BasicMode::storeId = 0
staticconstexprinherited

Store identifier for persistent storage (optional)

By default, all modes are reset upon a shutdown, providing no persistence of their state across several on/off cycles. To expose to the user a way to configure your mode in a persistent fashion, you can use:

static void loop(auto& ctx) {
uint8_t rampValue = ctx.get_active_custom_ramp();
// ... (use rampValue to pick a color or something) ...
}
static constexpr bool hasCustomRamp = true; // required
static constexpr bool hasCustomRamp
hint manager to save our custom ramp
Definition: fixed_modes.hpp:66

This value is configurable through user interaction with the button. If you need a persistent value, private to your mode, you can use:

static void loop(auto& ctx) {
uint8_t indexValue = ctx.get_active_custom_index();
// ... (use indexValue to change how something works) ...
// at some point, indexValue is modified:
indexValue += 1;
ctx.set_active_custom_index(indexValue);
// next time mode is enabled, or saved as favorite, both custom
// values (rampValue, indexValue) are remembered by default
}
static constexpr bool hasCustomRamp = true; // also required

These are the two always-available persistent state that a mode can configure by default. However, for more advanced modes (like games, with a list of high-scores, for example) more flexibility can be required.

If you need such extended storage, see ContextTy::KeyProxy for usage.

If you don't need these capabilities, just ignore this identifier :)


The documentation for this struct was generated from the following file: