Lamp-Da 0.1
A compact lantern project
Loading...
Searching...
No Matches
mode_type.hpp
Go to the documentation of this file.
1#ifndef MODE_TYPE_H
2#define MODE_TYPE_H
3
9#include <cstdint>
10
12namespace lampda::modes {
13
53{
55 static constexpr bool isModeManager = false;
56 static constexpr bool isGroupManager = false;
57
59 struct StateTy
60 {
61 };
62
71 static void loop(auto& ctx) { return; }
72
77 static void on_enter_mode(auto& ctx) { return; }
78
83 static void on_exit_mode(auto& ctx) { return; }
84
86 static constexpr bool hasSunsetAnimation = false;
87
95 static void sunset_update(auto& ctx, float progress) { return; }
96
98 static constexpr bool hasBrightCallback = false;
99
109 static void brightness_update(auto& ctx, brightness_t brightness) { return; }
110
115 static constexpr bool hasCustomRamp = false;
116
127 static void custom_ramp_update(auto& ctx, uint8_t rampValue) { return; }
128
130 static uint8_t get_custom_ramp_default_value(auto& ctx) { return 128; }
131
133 static constexpr bool hasButtonCustomUI = false;
134
143 static bool custom_click(auto& ctx, uint8_t nbClick) { return false; }
144
156 static bool custom_hold(auto& ctx, uint8_t nbClickAndHold, bool isEndOfHoldEvent, uint32_t holdDuration)
157 {
158 return false;
159 }
160
173 static constexpr bool hasSystemCallbacks = false;
174
182 static void power_on_sequence(auto& ctx) { return; }
183
191 static void power_off_sequence(auto& ctx) { return; }
192
199 static void read_parameters(auto& ctx) { return; }
200
207 static void write_parameters(auto& ctx) { return; }
208
214 static constexpr bool requireUserThread = false;
215
224 static void user_thread(auto& ctx) { return; }
225
268 static constexpr uint32_t storeId = 0;
269
270 // modes shall not implement any constructors
271 BasicMode() = delete;
272 BasicMode(const BasicMode&) = delete;
273 BasicMode& operator=(const BasicMode&) = delete;
274
275 // polyfill (to be ignored in this context)
276 static constexpr bool everySunsetCallback = false;
277 static constexpr bool everyBrightCallback = false;
278 static constexpr bool everySystemCallbacks = false;
279 static constexpr bool everyRequireUserThread = false;
280 static constexpr bool everyCustomRamp = false;
281 static constexpr bool everyButtonCustomUI = false;
282};
283
284} // namespace lampda::modes
285
286#endif
Contains basic interface types to implement custom user modes.
Definition: control_fixed_modes.hpp:12
uint16_t brightness_t
Define the type of the brightness parameters.
Definition: constants.h:147
Mode custom static state, made available through context (optional)
Definition: mode_type.hpp:60
Parent object for all custom user modes.
Definition: mode_type.hpp:53
static void read_parameters(auto &ctx)
Custom callback to read parameters from filesystem (optional)
Definition: mode_type.hpp:199
static constexpr bool hasSystemCallbacks
Toggles advanced system callbacks, see list here .
Definition: mode_type.hpp:173
static void write_parameters(auto &ctx)
Custom callback to write parameters to filesystem (optional)
Definition: mode_type.hpp:207
static bool custom_click(auto &ctx, uint8_t nbClick)
Custom "usermode" button UI for "click" action (optional)
Definition: mode_type.hpp:143
static void user_thread(auto &ctx)
Custom secondary loop, executed in another thread (optional)
Definition: mode_type.hpp:224
static void on_exit_mode(auto &ctx)
Custom callback when mode goes outside of focus (optional)
Definition: mode_type.hpp:83
static constexpr bool hasCustomRamp
Toggles the use of custom ramps & BasicMode::custom_ramp_update()
Definition: mode_type.hpp:115
static uint8_t get_custom_ramp_default_value(auto &ctx)
Return the custom ramp default value, in case no preset is used.
Definition: mode_type.hpp:130
static constexpr uint32_t storeId
Store identifier for persistent storage (optional)
Definition: mode_type.hpp:268
static void brightness_update(auto &ctx, brightness_t brightness)
Custom callback when brightness changes (optional)
Definition: mode_type.hpp:109
static constexpr bool hasButtonCustomUI
Toggles "usermode" button UI custom_click() and custom_hold()
Definition: mode_type.hpp:133
static void on_enter_mode(auto &ctx)
Custom callback when mode gains focus (optional)
Definition: mode_type.hpp:77
static constexpr bool hasSunsetAnimation
Toggles the use of custom BasicMode::sunset_update() callback.
Definition: mode_type.hpp:86
static void loop(auto &ctx)
Custom user mode loop function (default)
Definition: mode_type.hpp:71
static constexpr bool hasBrightCallback
Toggles the use of custom BasicMode::brightness_update() callback.
Definition: mode_type.hpp:98
static constexpr bool requireUserThread
Toggles the use of custom BasicMode::user_thread() callback.
Definition: mode_type.hpp:214
static void power_off_sequence(auto &ctx)
Custom callback when the system powers off (optional)
Definition: mode_type.hpp:191
static void power_on_sequence(auto &ctx)
Custom callback when the system powers on (optional)
Definition: mode_type.hpp:182
static bool custom_hold(auto &ctx, uint8_t nbClickAndHold, bool isEndOfHoldEvent, uint32_t holdDuration)
Custom "usermode" button UI for "click+hold" action (optional)
Definition: mode_type.hpp:156
static void sunset_update(auto &ctx, float progress)
Custom callback when sunset mode is updated (optional)
Definition: mode_type.hpp:95
static void custom_ramp_update(auto &ctx, uint8_t rampValue)
Custom callback when system sets user ramp (optional)
Definition: mode_type.hpp:127