mirror of
https://github.com/esphome/esphome.git
synced 2025-10-27 13:13:50 +00:00
[binary_sensor] Optimize MultiClickTrigger with FixedVector (#11453)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
@@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
#include <cinttypes>
|
#include <cinttypes>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
#include "esphome/core/component.h"
|
#include "esphome/core/component.h"
|
||||||
#include "esphome/core/automation.h"
|
#include "esphome/core/automation.h"
|
||||||
#include "esphome/core/hal.h"
|
#include "esphome/core/hal.h"
|
||||||
|
#include "esphome/core/helpers.h"
|
||||||
#include "esphome/components/binary_sensor/binary_sensor.h"
|
#include "esphome/components/binary_sensor/binary_sensor.h"
|
||||||
|
|
||||||
namespace esphome {
|
namespace esphome {
|
||||||
@@ -92,8 +92,8 @@ class DoubleClickTrigger : public Trigger<> {
|
|||||||
|
|
||||||
class MultiClickTrigger : public Trigger<>, public Component {
|
class MultiClickTrigger : public Trigger<>, public Component {
|
||||||
public:
|
public:
|
||||||
explicit MultiClickTrigger(BinarySensor *parent, std::vector<MultiClickTriggerEvent> timing)
|
explicit MultiClickTrigger(BinarySensor *parent, std::initializer_list<MultiClickTriggerEvent> timing)
|
||||||
: parent_(parent), timing_(std::move(timing)) {}
|
: parent_(parent), timing_(timing) {}
|
||||||
|
|
||||||
void setup() override {
|
void setup() override {
|
||||||
this->last_state_ = this->parent_->get_state_default(false);
|
this->last_state_ = this->parent_->get_state_default(false);
|
||||||
@@ -115,7 +115,7 @@ class MultiClickTrigger : public Trigger<>, public Component {
|
|||||||
void trigger_();
|
void trigger_();
|
||||||
|
|
||||||
BinarySensor *parent_;
|
BinarySensor *parent_;
|
||||||
std::vector<MultiClickTriggerEvent> timing_;
|
FixedVector<MultiClickTriggerEvent> timing_;
|
||||||
uint32_t invalid_cooldown_{1000};
|
uint32_t invalid_cooldown_{1000};
|
||||||
optional<size_t> at_index_{};
|
optional<size_t> at_index_{};
|
||||||
bool last_state_{false};
|
bool last_state_{false};
|
||||||
|
|||||||
Reference in New Issue
Block a user