[uart_mux] Use the apply helpers for select_local, select_bridge and is_local (#19671)

This commit is contained in:
J. Nick Koston
2026-09-25 15:41:18 -04:00
committed by GitHub
parent aef3a586de
commit 0ef68c17fd
2 changed files with 10 additions and 40 deletions
+10 -12
View File
@@ -20,9 +20,6 @@ ROUTE_LOCAL = "local"
uart_mux_ns = cg.esphome_ns.namespace("uart_mux")
UARTMux = uart_mux_ns.class_("UARTMux", uart.UARTComponent, cg.Component)
SelectLocalAction = uart_mux_ns.class_("SelectLocalAction", automation.Action)
SelectBridgeAction = uart_mux_ns.class_("SelectBridgeAction", automation.Action)
IsLocalCondition = uart_mux_ns.class_("IsLocalCondition", automation.Condition)
CONFIG_SCHEMA = cv.All(
cv.Schema(
@@ -70,15 +67,16 @@ UART_MUX_ACTION_SCHEMA = automation.maybe_simple_id(
)
automation.register_simple_action(
"uart_mux.select_local", SelectLocalAction, UART_MUX_ACTION_SCHEMA, synchronous=True
)
automation.register_simple_action(
"uart_mux.select_bridge",
SelectBridgeAction,
automation.register_apply_action(
"uart_mux.select_local",
UART_MUX_ACTION_SCHEMA,
synchronous=True,
automation.ApplyCall("select_local()"),
)
automation.register_simple_condition(
"uart_mux.is_local", IsLocalCondition, UART_MUX_ACTION_SCHEMA
automation.register_apply_action(
"uart_mux.select_bridge",
UART_MUX_ACTION_SCHEMA,
automation.ApplyCall("select_bridge()"),
)
automation.register_apply_condition(
"uart_mux.is_local", UART_MUX_ACTION_SCHEMA, "is_local()"
)
-28
View File
@@ -3,7 +3,6 @@
#include "esphome/components/uart/uart_component.h"
#include "esphome/components/uart/uart_component_esp_idf.h"
#include "esphome/components/cdc_acm_uart/bridge/cdc_acm_uart_bridge.h"
#include "esphome/core/automation.h"
#include "esphome/core/component.h"
namespace esphome::uart_mux {
@@ -77,32 +76,5 @@ class UARTMux final : public uart::UARTComponent, public Component {
bool load_settings_warned_{false};
};
template<typename... Ts> class SelectLocalAction final : public Action<Ts...> {
public:
explicit SelectLocalAction(UARTMux *parent) : parent_(parent) {}
void play(const Ts &...) override { this->parent_->select_local(); }
protected:
UARTMux *parent_;
};
template<typename... Ts> class SelectBridgeAction final : public Action<Ts...> {
public:
explicit SelectBridgeAction(UARTMux *parent) : parent_(parent) {}
void play(const Ts &...) override { this->parent_->select_bridge(); }
protected:
UARTMux *parent_;
};
template<typename... Ts> class IsLocalCondition final : public Condition<Ts...> {
public:
explicit IsLocalCondition(UARTMux *parent) : parent_(parent) {}
bool check(const Ts &...) override { return this->parent_->is_local(); }
protected:
UARTMux *parent_;
};
} // namespace esphome::uart_mux
#endif