#pragma once #include "esphome/core/component.h" #include "esphome/core/hal.h" #include "esphome/core/helpers.h" #include "esphome/components/switch/switch.h" namespace esphome { namespace gpio { class GPIOSwitch final : public switch_::Switch, public Component { public: void set_pin(GPIOPin *pin) { pin_ = pin; } // ========== INTERNAL METHODS ========== // (In most use cases you won't need these) float get_setup_priority() const override; void setup() override; void dump_config() override; #ifdef USE_GPIO_SWITCH_INTERLOCK void set_interlock(const std::initializer_list &interlock); void set_interlock_wait_time(uint32_t interlock_wait_time) { interlock_wait_time_ = interlock_wait_time; } #endif protected: void write_state(bool state) override; GPIOPin *pin_; #ifdef USE_GPIO_SWITCH_INTERLOCK FixedVector interlock_; uint32_t interlock_wait_time_{0}; #endif }; } // namespace gpio } // namespace esphome