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 constexpr bool hasButtonCustomUI = false;
131
140 static bool custom_click(auto& ctx, uint8_t nbClick) { return false; }
141
153 static bool custom_hold(auto& ctx, uint8_t nbClickAndHold, bool isEndOfHoldEvent, uint32_t holdDuration)
154 {
155 return false;
156 }
157
170 static constexpr bool hasSystemCallbacks = false;
171
179 static void power_on_sequence(auto& ctx) { return; }
180
188 static void power_off_sequence(auto& ctx) { return; }
189
196 static void read_parameters(auto& ctx) { return; }
197
204 static void write_parameters(auto& ctx) { return; }
205
211 static constexpr bool requireUserThread = false;
212
221 static void user_thread(auto& ctx) { return; }
222
265 static constexpr uint32_t storeId = 0;
266
267 // modes shall not implement any constructors
268 BasicMode() = delete;
269 BasicMode(const BasicMode&) = delete;
270 BasicMode& operator=(const BasicMode&) = delete;
271
272 // polyfill (to be ignored in this context)
273 static constexpr bool everySunsetCallback = false;
274 static constexpr bool everyBrightCallback = false;
275 static constexpr bool everySystemCallbacks = false;
276 static constexpr bool everyRequireUserThread = false;
277 static constexpr bool everyCustomRamp = false;
278 static constexpr bool everyButtonCustomUI = false;
279};
280
281} // namespace lampda::modes
282
283#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:196
static constexpr bool hasSystemCallbacks
Toggles advanced system callbacks, see list here .
Definition: mode_type.hpp:170
static void write_parameters(auto &ctx)
Custom callback to write parameters to filesystem (optional)
Definition: mode_type.hpp:204
static bool custom_click(auto &ctx, uint8_t nbClick)
Custom "usermode" button UI for "click" action (optional)
Definition: mode_type.hpp:140
static void user_thread(auto &ctx)
Custom secondary loop, executed in another thread (optional)
Definition: mode_type.hpp:221
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 constexpr uint32_t storeId
Store identifier for persistent storage (optional)
Definition: mode_type.hpp:265
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:130
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:211
static void power_off_sequence(auto &ctx)
Custom callback when the system powers off (optional)
Definition: mode_type.hpp:188
static void power_on_sequence(auto &ctx)
Custom callback when the system powers on (optional)
Definition: mode_type.hpp:179
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:153
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