mirror of
https://github.com/esphome/esphome.git
synced 2026-09-28 23:40:25 +00:00
[max7219digit] Use register_apply_action for the seven max7219digit actions (#19641)
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user