mirror of
https://github.com/esphome/esphome.git
synced 2026-07-10 17:05:36 +00:00
[light] Undef LIGHT_CONTROL_FIELDS macro and assert <=16 fields
This commit is contained in:
@@ -77,6 +77,7 @@ template<uint16_t Fields, typename... Ts> class LightControlAction : public Acti
|
||||
#undef LIGHT_FIELD_APPLY_
|
||||
#undef LIGHT_FIELD_SETTER_
|
||||
};
|
||||
#undef LIGHT_CONTROL_FIELDS
|
||||
|
||||
template<typename... Ts> class DimRelativeAction : public Action<Ts...> {
|
||||
public:
|
||||
|
||||
@@ -197,6 +197,8 @@ async def light_control_to_code(config, action_id, template_arg, args):
|
||||
(CONF_WARM_WHITE, "set_warm_white", cg.float_),
|
||||
(CONF_EFFECT, None, cg.uint32),
|
||||
)
|
||||
# Bitmask is passed as uint16_t in C++ — must stay within 16 bits.
|
||||
assert len(FIELDS) <= 16, "LightControlAction Fields bitmask exceeds uint16_t"
|
||||
|
||||
field_mask = sum(1 << i for i, (k, _, _) in enumerate(FIELDS) if k in config)
|
||||
control_template_arg = cg.TemplateArguments(
|
||||
|
||||
Reference in New Issue
Block a user