mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	fixed
This commit is contained in:
		| @@ -425,7 +425,7 @@ message ListEntitiesFanResponse { | |||||||
|   bool disabled_by_default = 9; |   bool disabled_by_default = 9; | ||||||
|   string icon = 10 [(field_ifdef) = "USE_ENTITY_ICON"]; |   string icon = 10 [(field_ifdef) = "USE_ENTITY_ICON"]; | ||||||
|   EntityCategory entity_category = 11; |   EntityCategory entity_category = 11; | ||||||
|   repeated string supported_preset_modes = 12 [(container_pointer) = "std::vector"]; |   repeated string supported_preset_modes = 12 [(container_pointer) = "FixedVector"]; | ||||||
|   uint32 device_id = 13 [(field_ifdef) = "USE_DEVICES"]; |   uint32 device_id = 13 [(field_ifdef) = "USE_DEVICES"]; | ||||||
| } | } | ||||||
| // Deprecated in API version 1.6 - only used in deprecated fields | // Deprecated in API version 1.6 - only used in deprecated fields | ||||||
|   | |||||||
| @@ -725,7 +725,7 @@ class ListEntitiesFanResponse final : public InfoResponseProtoMessage { | |||||||
|   bool supports_speed{false}; |   bool supports_speed{false}; | ||||||
|   bool supports_direction{false}; |   bool supports_direction{false}; | ||||||
|   int32_t supported_speed_count{0}; |   int32_t supported_speed_count{0}; | ||||||
|   const std::vector<std::string> *supported_preset_modes{}; |   const FixedVector<std::string> *supported_preset_modes{}; | ||||||
|   void encode(ProtoWriteBuffer buffer) const override; |   void encode(ProtoWriteBuffer buffer) const override; | ||||||
|   void calculate_size(ProtoSize &size) const override; |   void calculate_size(ProtoSize &size) const override; | ||||||
| #ifdef HAS_PROTO_MESSAGE_DUMP | #ifdef HAS_PROTO_MESSAGE_DUMP | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| #include <utility> | #include <utility> | ||||||
| #include <vector> | #include "esphome/core/helpers.h" | ||||||
|  |  | ||||||
| #pragma once | #pragma once | ||||||
|  |  | ||||||
| @@ -36,9 +36,14 @@ class FanTraits { | |||||||
|   /// Set whether this fan supports changing direction |   /// Set whether this fan supports changing direction | ||||||
|   void set_direction(bool direction) { this->direction_ = direction; } |   void set_direction(bool direction) { this->direction_ = direction; } | ||||||
|   /// Return the preset modes supported by the fan. |   /// Return the preset modes supported by the fan. | ||||||
|   const std::vector<std::string> &supported_preset_modes() const { return this->preset_modes_; } |   const FixedVector<std::string> &supported_preset_modes() const { return this->preset_modes_; } | ||||||
|   /// Set the preset modes supported by the fan. |   /// Set the preset modes supported by the fan. | ||||||
|   void set_supported_preset_modes(const std::vector<std::string> &preset_modes) { this->preset_modes_ = preset_modes; } |   template<typename T> void set_supported_preset_modes(const T &preset_modes) { | ||||||
|  |     this->preset_modes_.init(preset_modes.size()); | ||||||
|  |     for (const auto &mode : preset_modes) { | ||||||
|  |       this->preset_modes_.push_back(mode); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|   /// Return if preset modes are supported |   /// Return if preset modes are supported | ||||||
|   bool supports_preset_modes() const { return !this->preset_modes_.empty(); } |   bool supports_preset_modes() const { return !this->preset_modes_.empty(); } | ||||||
|  |  | ||||||
| @@ -50,13 +55,13 @@ class FanTraits { | |||||||
|   // It is used by the API to avoid copying data when encoding messages. |   // It is used by the API to avoid copying data when encoding messages. | ||||||
|   // Warning: Do not use this method outside of the API connection code. |   // Warning: Do not use this method outside of the API connection code. | ||||||
|   // It returns a reference to internal data that can be invalidated. |   // It returns a reference to internal data that can be invalidated. | ||||||
|   const std::vector<std::string> &supported_preset_modes_for_api_() const { return this->preset_modes_; } |   const FixedVector<std::string> &supported_preset_modes_for_api_() const { return this->preset_modes_; } | ||||||
| #endif | #endif | ||||||
|   bool oscillation_{false}; |   bool oscillation_{false}; | ||||||
|   bool speed_{false}; |   bool speed_{false}; | ||||||
|   bool direction_{false}; |   bool direction_{false}; | ||||||
|   int speed_count_{}; |   int speed_count_{}; | ||||||
|   std::vector<std::string> preset_modes_{}; |   FixedVector<std::string> preset_modes_{}; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| }  // namespace fan | }  // namespace fan | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ class HBridgeFan : public Component, public fan::Fan { | |||||||
|   void set_pin_a(output::FloatOutput *pin_a) { pin_a_ = pin_a; } |   void set_pin_a(output::FloatOutput *pin_a) { pin_a_ = pin_a; } | ||||||
|   void set_pin_b(output::FloatOutput *pin_b) { pin_b_ = pin_b; } |   void set_pin_b(output::FloatOutput *pin_b) { pin_b_ = pin_b; } | ||||||
|   void set_enable_pin(output::FloatOutput *enable) { enable_ = enable; } |   void set_enable_pin(output::FloatOutput *enable) { enable_ = enable; } | ||||||
|   void set_preset_modes(const std::vector<std::string> &presets) { preset_modes_ = presets; } |   void set_preset_modes(const FixedVector<std::string> &presets) { preset_modes_ = presets; } | ||||||
|  |  | ||||||
|   void setup() override; |   void setup() override; | ||||||
|   void dump_config() override; |   void dump_config() override; | ||||||
| @@ -37,7 +37,7 @@ class HBridgeFan : public Component, public fan::Fan { | |||||||
|   int speed_count_{}; |   int speed_count_{}; | ||||||
|   DecayMode decay_mode_{DECAY_MODE_SLOW}; |   DecayMode decay_mode_{DECAY_MODE_SLOW}; | ||||||
|   fan::FanTraits traits_; |   fan::FanTraits traits_; | ||||||
|   std::vector<std::string> preset_modes_{}; |   FixedVector<std::string> preset_modes_{}; | ||||||
|  |  | ||||||
|   void control(const fan::FanCall &call) override; |   void control(const fan::FanCall &call) override; | ||||||
|   void write_state_(); |   void write_state_(); | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ class SpeedFan : public Component, public fan::Fan { | |||||||
|   void set_output(output::FloatOutput *output) { this->output_ = output; } |   void set_output(output::FloatOutput *output) { this->output_ = output; } | ||||||
|   void set_oscillating(output::BinaryOutput *oscillating) { this->oscillating_ = oscillating; } |   void set_oscillating(output::BinaryOutput *oscillating) { this->oscillating_ = oscillating; } | ||||||
|   void set_direction(output::BinaryOutput *direction) { this->direction_ = direction; } |   void set_direction(output::BinaryOutput *direction) { this->direction_ = direction; } | ||||||
|   void set_preset_modes(const std::vector<std::string> &presets) { this->preset_modes_ = presets; } |   void set_preset_modes(const FixedVector<std::string> &presets) { this->preset_modes_ = presets; } | ||||||
|   fan::FanTraits get_traits() override { return this->traits_; } |   fan::FanTraits get_traits() override { return this->traits_; } | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| @@ -29,7 +29,7 @@ class SpeedFan : public Component, public fan::Fan { | |||||||
|   output::BinaryOutput *direction_{nullptr}; |   output::BinaryOutput *direction_{nullptr}; | ||||||
|   int speed_count_{}; |   int speed_count_{}; | ||||||
|   fan::FanTraits traits_; |   fan::FanTraits traits_; | ||||||
|   std::vector<std::string> preset_modes_{}; |   FixedVector<std::string> preset_modes_{}; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| }  // namespace speed | }  // namespace speed | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ class TemplateFan : public Component, public fan::Fan { | |||||||
|   void set_has_direction(bool has_direction) { this->has_direction_ = has_direction; } |   void set_has_direction(bool has_direction) { this->has_direction_ = has_direction; } | ||||||
|   void set_has_oscillating(bool has_oscillating) { this->has_oscillating_ = has_oscillating; } |   void set_has_oscillating(bool has_oscillating) { this->has_oscillating_ = has_oscillating; } | ||||||
|   void set_speed_count(int count) { this->speed_count_ = count; } |   void set_speed_count(int count) { this->speed_count_ = count; } | ||||||
|   void set_preset_modes(const std::vector<std::string> &presets) { this->preset_modes_ = presets; } |   void set_preset_modes(const FixedVector<std::string> &presets) { this->preset_modes_ = presets; } | ||||||
|   fan::FanTraits get_traits() override { return this->traits_; } |   fan::FanTraits get_traits() override { return this->traits_; } | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| @@ -25,7 +25,7 @@ class TemplateFan : public Component, public fan::Fan { | |||||||
|   bool has_direction_{false}; |   bool has_direction_{false}; | ||||||
|   int speed_count_{0}; |   int speed_count_{0}; | ||||||
|   fan::FanTraits traits_; |   fan::FanTraits traits_; | ||||||
|   std::vector<std::string> preset_modes_{}; |   FixedVector<std::string> preset_modes_{}; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| }  // namespace template_ | }  // namespace template_ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user