mirror of
https://github.com/esphome/esphome.git
synced 2026-09-03 19:46:02 +00:00
Merge remote-tracking branch 'upstream-ssh/light-control-action-bitmask' into integration
This commit is contained in:
@@ -84,6 +84,7 @@ template<uint16_t Fields, typename... Ts> class LightControlAction : public Acti
|
||||
#undef LIGHT_FIELD_APPLY_
|
||||
#undef LIGHT_FIELD_SETTER_
|
||||
};
|
||||
#undef LIGHT_CONTROL_FIELDS
|
||||
|
||||
template<bool HasTransitionLength, typename... Ts> class DimRelativeAction : public Action<Ts...> {
|
||||
public:
|
||||
|
||||
@@ -199,6 +199,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