[max7219digit] Use register_apply_action for the seven max7219digit actions (#19641)

This commit is contained in:
J. Nick Koston
2026-09-25 13:45:38 -04:00
committed by GitHub
parent 23c317f163
commit 0cb421f793
2 changed files with 13 additions and 147 deletions
@@ -1,50 +0,0 @@
#pragma once
#include "esphome/core/automation.h"
#include "esphome/core/helpers.h"
#include "max7219digit.h"
namespace esphome::max7219digit {
template<typename... Ts> class DisplayInvertAction final : public Action<Ts...>, public Parented<MAX7219Component> {
public:
TEMPLATABLE_VALUE(bool, state)
void play(const Ts &...x) override {
bool state = this->state_.value(x...);
this->parent_->invert_on_off(state);
}
};
template<typename... Ts> class DisplayVisibilityAction final : public Action<Ts...>, public Parented<MAX7219Component> {
public:
TEMPLATABLE_VALUE(bool, state)
void play(const Ts &...x) override {
bool state = this->state_.value(x...);
this->parent_->turn_on_off(state);
}
};
template<typename... Ts> class DisplayReverseAction final : public Action<Ts...>, public Parented<MAX7219Component> {
public:
TEMPLATABLE_VALUE(bool, state)
void play(const Ts &...x) override {
bool state = this->state_.value(x...);
this->parent_->set_reverse(state);
}
};
template<typename... Ts> class DisplayIntensityAction final : public Action<Ts...>, public Parented<MAX7219Component> {
public:
TEMPLATABLE_VALUE(uint8_t, state)
void play(const Ts &...x) override {
uint8_t state = this->state_.value(x...);
this->parent_->set_intensity(state);
}
};
} // namespace esphome::max7219digit
+13 -97
View File
@@ -10,8 +10,6 @@ from esphome.const import (
CONF_NUM_CHIPS,
CONF_STATE,
)
from esphome.core import ID
from esphome.cpp_generator import MockObj, TemplateArgsType
from esphome.types import ConfigType
CODEOWNERS = ["@rspaargaren"]
@@ -112,14 +110,6 @@ async def to_code(config: ConfigType) -> None:
cg.add(var.set_writer(lambda_))
DisplayInvertAction = max7219_ns.class_("DisplayInvertAction", automation.Action)
DisplayVisibilityAction = max7219_ns.class_(
"DisplayVisibilityAction", automation.Action
)
DisplayReverseAction = max7219_ns.class_("DisplayReverseAction", automation.Action)
DisplayIntensityAction = max7219_ns.class_("DisplayIntensityAction", automation.Action)
MAX7219_OFF_ACTION_SCHEMA = automation.maybe_simple_id(
{
cv.GenerateID(): cv.use_id(MAX7219Component),
@@ -135,79 +125,17 @@ MAX7219_ON_ACTION_SCHEMA = automation.maybe_simple_id(
)
@automation.register_action(
"max7219digit.invert_off",
DisplayInvertAction,
MAX7219_OFF_ACTION_SCHEMA,
synchronous=True,
)
@automation.register_action(
"max7219digit.invert_on",
DisplayInvertAction,
MAX7219_ON_ACTION_SCHEMA,
synchronous=True,
)
async def max7219digit_invert_to_code(
config: ConfigType,
action_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
var = cg.new_Pvariable(action_id, template_arg)
await cg.register_parented(var, config[CONF_ID])
template_ = await cg.templatable(config[CONF_STATE], args, cg.bool_)
cg.add(var.set_state(template_))
return var
@automation.register_action(
"max7219digit.turn_off",
DisplayVisibilityAction,
MAX7219_OFF_ACTION_SCHEMA,
synchronous=True,
)
@automation.register_action(
"max7219digit.turn_on",
DisplayVisibilityAction,
MAX7219_ON_ACTION_SCHEMA,
synchronous=True,
)
async def max7219digit_visible_to_code(
config: ConfigType,
action_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
var = cg.new_Pvariable(action_id, template_arg)
await cg.register_parented(var, config[CONF_ID])
template_ = await cg.templatable(config[CONF_STATE], args, cg.bool_)
cg.add(var.set_state(template_))
return var
@automation.register_action(
"max7219digit.reverse_off",
DisplayReverseAction,
MAX7219_OFF_ACTION_SCHEMA,
synchronous=True,
)
@automation.register_action(
"max7219digit.reverse_on",
DisplayReverseAction,
MAX7219_ON_ACTION_SCHEMA,
synchronous=True,
)
async def max7219digit_reverse_to_code(
config: ConfigType,
action_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
var = cg.new_Pvariable(action_id, template_arg)
await cg.register_parented(var, config[CONF_ID])
template_ = await cg.templatable(config[CONF_STATE], args, cg.bool_)
cg.add(var.set_state(template_))
return var
for _name, _schema, _method in (
("max7219digit.invert_off", MAX7219_OFF_ACTION_SCHEMA, "invert_on_off"),
("max7219digit.invert_on", MAX7219_ON_ACTION_SCHEMA, "invert_on_off"),
("max7219digit.turn_off", MAX7219_OFF_ACTION_SCHEMA, "turn_on_off"),
("max7219digit.turn_on", MAX7219_ON_ACTION_SCHEMA, "turn_on_off"),
("max7219digit.reverse_off", MAX7219_OFF_ACTION_SCHEMA, "set_reverse"),
("max7219digit.reverse_on", MAX7219_ON_ACTION_SCHEMA, "set_reverse"),
):
automation.register_apply_action(
_name, _schema, automation.ApplyField(CONF_STATE, _method, cg.bool_)
)
MAX7219_INTENSITY_SCHEMA = cv.maybe_simple_value(
@@ -221,20 +149,8 @@ MAX7219_INTENSITY_SCHEMA = cv.maybe_simple_value(
)
@automation.register_action(
automation.register_apply_action(
"max7219digit.intensity",
DisplayIntensityAction,
MAX7219_INTENSITY_SCHEMA,
synchronous=True,
automation.ApplyField(CONF_INTENSITY, "set_intensity", cg.uint8),
)
async def max7219digit_intensity_to_code(
config: ConfigType,
action_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
var = cg.new_Pvariable(action_id, template_arg)
await cg.register_parented(var, config[CONF_ID])
template_ = await cg.templatable(config[CONF_INTENSITY], args, cg.uint8)
cg.add(var.set_state(template_))
return var