mirror of
https://github.com/esphome/esphome.git
synced 2025-11-16 06:45:48 +00:00
* Add "stop" trait to Cover * Add `supports_stop` to Cover protobuf msg * Run `script/api_protobuf/api_protobuf.py` ... followed by `script/clang-format -i` * Add `has_stop` field to template Cover * Set `has_stop` during Cover codegen * Set `supports_stop` trait on all other Cover types * Bump APIVersion to 1.8 --------- Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
52 lines
1.6 KiB
C++
52 lines
1.6 KiB
C++
#include "copy_cover.h"
|
|
#include "esphome/core/log.h"
|
|
|
|
namespace esphome {
|
|
namespace copy {
|
|
|
|
static const char *const TAG = "copy.cover";
|
|
|
|
void CopyCover::setup() {
|
|
source_->add_on_state_callback([this]() {
|
|
this->current_operation = this->source_->current_operation;
|
|
this->position = this->source_->position;
|
|
this->tilt = this->source_->tilt;
|
|
this->publish_state();
|
|
});
|
|
|
|
this->current_operation = this->source_->current_operation;
|
|
this->position = this->source_->position;
|
|
this->tilt = this->source_->tilt;
|
|
this->publish_state();
|
|
}
|
|
|
|
void CopyCover::dump_config() { LOG_COVER("", "Copy Cover", this); }
|
|
|
|
cover::CoverTraits CopyCover::get_traits() {
|
|
auto base = source_->get_traits();
|
|
cover::CoverTraits traits{};
|
|
// copy traits manually so it doesn't break when new options are added
|
|
// but the control() method hasn't implemented them yet.
|
|
traits.set_is_assumed_state(base.get_is_assumed_state());
|
|
traits.set_supports_stop(base.get_supports_stop());
|
|
traits.set_supports_position(base.get_supports_position());
|
|
traits.set_supports_tilt(base.get_supports_tilt());
|
|
traits.set_supports_toggle(base.get_supports_toggle());
|
|
return traits;
|
|
}
|
|
|
|
void CopyCover::control(const cover::CoverCall &call) {
|
|
auto call2 = source_->make_call();
|
|
call2.set_stop(call.get_stop());
|
|
if (call.get_tilt().has_value())
|
|
call2.set_tilt(*call.get_tilt());
|
|
if (call.get_position().has_value())
|
|
call2.set_position(*call.get_position());
|
|
if (call.get_tilt().has_value())
|
|
call2.set_tilt(*call.get_tilt());
|
|
call2.perform();
|
|
}
|
|
|
|
} // namespace copy
|
|
} // namespace esphome
|