diff --git a/esphome/components/ch422g/ch422g.h b/esphome/components/ch422g/ch422g.h index 30780e09ad..1193a3db27 100644 --- a/esphome/components/ch422g/ch422g.h +++ b/esphome/components/ch422g/ch422g.h @@ -57,6 +57,8 @@ class CH422GGPIOPin : public GPIOPin { void set_inverted(bool inverted) { inverted_ = inverted; } void set_flags(gpio::Flags flags); + gpio::Flags get_flags() const override { return this->flags_; } + protected: CH422GComponent *parent_{}; uint8_t pin_{}; diff --git a/esphome/components/max6956/max6956.h b/esphome/components/max6956/max6956.h index 759fa45b07..0a1fd5e4b5 100644 --- a/esphome/components/max6956/max6956.h +++ b/esphome/components/max6956/max6956.h @@ -83,6 +83,8 @@ class MAX6956GPIOPin : public GPIOPin { void set_inverted(bool inverted) { inverted_ = inverted; } void set_flags(gpio::Flags flags) { flags_ = flags; } + gpio::Flags get_flags() const override { return this->flags_; } + protected: MAX6956 *parent_; uint8_t pin_; diff --git a/esphome/components/mcp23016/mcp23016.h b/esphome/components/mcp23016/mcp23016.h index a4890b4120..e4ed47a3b2 100644 --- a/esphome/components/mcp23016/mcp23016.h +++ b/esphome/components/mcp23016/mcp23016.h @@ -61,6 +61,8 @@ class MCP23016GPIOPin : public GPIOPin { void set_inverted(bool inverted) { inverted_ = inverted; } void set_flags(gpio::Flags flags) { flags_ = flags; } + gpio::Flags get_flags() const override { return this->flags_; } + protected: MCP23016 *parent_; uint8_t pin_; diff --git a/esphome/components/mcp23xxx_base/mcp23xxx_base.h b/esphome/components/mcp23xxx_base/mcp23xxx_base.h index a522ea28c5..9686c9fd33 100644 --- a/esphome/components/mcp23xxx_base/mcp23xxx_base.h +++ b/esphome/components/mcp23xxx_base/mcp23xxx_base.h @@ -43,6 +43,8 @@ class MCP23XXXGPIOPin : public GPIOPin { void set_flags(gpio::Flags flags) { flags_ = flags; } void set_interrupt_mode(MCP23XXXInterruptMode interrupt_mode) { interrupt_mode_ = interrupt_mode; } + gpio::Flags get_flags() const override { return this->flags_; } + protected: MCP23XXXBase *parent_; uint8_t pin_; diff --git a/esphome/components/mpr121/mpr121.h b/esphome/components/mpr121/mpr121.h index f2dc2fe9c9..eb2e2edc57 100644 --- a/esphome/components/mpr121/mpr121.h +++ b/esphome/components/mpr121/mpr121.h @@ -117,6 +117,8 @@ class MPR121GPIOPin : public GPIOPin { void set_inverted(bool inverted) { this->inverted_ = inverted; } void set_flags(gpio::Flags flags) { this->flags_ = flags; } + gpio::Flags get_flags() const override { return this->flags_; } + protected: MPR121Component *parent_; uint8_t pin_; diff --git a/esphome/components/pca6416a/pca6416a.h b/esphome/components/pca6416a/pca6416a.h index 247f443e87..1e8015c40a 100644 --- a/esphome/components/pca6416a/pca6416a.h +++ b/esphome/components/pca6416a/pca6416a.h @@ -52,6 +52,8 @@ class PCA6416AGPIOPin : public GPIOPin { void set_inverted(bool inverted) { inverted_ = inverted; } void set_flags(gpio::Flags flags) { flags_ = flags; } + gpio::Flags get_flags() const override { return this->flags_; } + protected: PCA6416AComponent *parent_; uint8_t pin_; diff --git a/esphome/components/pca9554/pca9554.h b/esphome/components/pca9554/pca9554.h index c548bec619..efeec4d306 100644 --- a/esphome/components/pca9554/pca9554.h +++ b/esphome/components/pca9554/pca9554.h @@ -65,6 +65,8 @@ class PCA9554GPIOPin : public GPIOPin { void set_inverted(bool inverted) { inverted_ = inverted; } void set_flags(gpio::Flags flags) { flags_ = flags; } + gpio::Flags get_flags() const override { return this->flags_; } + protected: PCA9554Component *parent_; uint8_t pin_; diff --git a/esphome/components/pcf8574/pcf8574.h b/esphome/components/pcf8574/pcf8574.h index c201e0615f..6edc67fc96 100644 --- a/esphome/components/pcf8574/pcf8574.h +++ b/esphome/components/pcf8574/pcf8574.h @@ -54,6 +54,8 @@ class PCF8574GPIOPin : public GPIOPin { void set_inverted(bool inverted) { inverted_ = inverted; } void set_flags(gpio::Flags flags) { flags_ = flags; } + gpio::Flags get_flags() const override { return this->flags_; } + protected: PCF8574Component *parent_; uint8_t pin_; diff --git a/esphome/components/sn74hc165/sn74hc165.h b/esphome/components/sn74hc165/sn74hc165.h index c349d079ae..4684844687 100644 --- a/esphome/components/sn74hc165/sn74hc165.h +++ b/esphome/components/sn74hc165/sn74hc165.h @@ -52,6 +52,9 @@ class SN74HC165GPIOPin : public GPIOPin, public Parented { void set_pin(uint16_t pin) { pin_ = pin; } void set_inverted(bool inverted) { inverted_ = inverted; } + /// Always returns `gpio::Flags::FLAG_INPUT`. + gpio::Flags get_flags() const override { return gpio::Flags::FLAG_INPUT; } + protected: uint16_t pin_; bool inverted_; diff --git a/esphome/components/sn74hc595/sn74hc595.h b/esphome/components/sn74hc595/sn74hc595.h index cb9d7bf140..181015b1e6 100644 --- a/esphome/components/sn74hc595/sn74hc595.h +++ b/esphome/components/sn74hc595/sn74hc595.h @@ -59,6 +59,9 @@ class SN74HC595GPIOPin : public GPIOPin, public Parented { void set_pin(uint16_t pin) { pin_ = pin; } void set_inverted(bool inverted) { inverted_ = inverted; } + /// Always returns `gpio::Flags::FLAG_OUTPUT`. + gpio::Flags get_flags() const override { return gpio::Flags::FLAG_OUTPUT; } + protected: uint16_t pin_; bool inverted_; diff --git a/esphome/components/spi/spi.h b/esphome/components/spi/spi.h index f581dc3f56..64463747a2 100644 --- a/esphome/components/spi/spi.h +++ b/esphome/components/spi/spi.h @@ -114,6 +114,8 @@ class NullPin : public GPIOPin { void pin_mode(gpio::Flags flags) override {} + gpio::Flags get_flags() const override { return gpio::Flags::FLAG_NONE; } + bool digital_read() override { return false; } void digital_write(bool value) override {} diff --git a/esphome/components/sx1509/sx1509_gpio_pin.h b/esphome/components/sx1509/sx1509_gpio_pin.h index 1cfa341ee7..eb9207e882 100644 --- a/esphome/components/sx1509/sx1509_gpio_pin.h +++ b/esphome/components/sx1509/sx1509_gpio_pin.h @@ -20,6 +20,8 @@ class SX1509GPIOPin : public GPIOPin { void set_inverted(bool inverted) { this->inverted_ = inverted; } void set_flags(gpio::Flags flags) { this->flags_ = flags; } + gpio::Flags get_flags() const override { return this->flags_; } + protected: SX1509Component *parent_; uint8_t pin_; diff --git a/esphome/components/tca9555/tca9555.h b/esphome/components/tca9555/tca9555.h index ea464db043..0c236ae4e3 100644 --- a/esphome/components/tca9555/tca9555.h +++ b/esphome/components/tca9555/tca9555.h @@ -54,6 +54,8 @@ class TCA9555GPIOPin : public GPIOPin, public Parented { void set_inverted(bool inverted) { this->inverted_ = inverted; } void set_flags(gpio::Flags flags) { this->flags_ = flags; } + gpio::Flags get_flags() const override { return this->flags_; } + protected: uint8_t pin_; bool inverted_; diff --git a/esphome/components/weikai/weikai.h b/esphome/components/weikai/weikai.h index 175a067b27..987278213a 100644 --- a/esphome/components/weikai/weikai.h +++ b/esphome/components/weikai/weikai.h @@ -275,6 +275,8 @@ class WeikaiGPIOPin : public GPIOPin { void set_inverted(bool inverted) { this->inverted_ = inverted; } void set_flags(gpio::Flags flags) { this->flags_ = flags; } + gpio::Flags get_flags() const override { return this->flags_; } + void setup() override; std::string dump_summary() const override; void pin_mode(gpio::Flags flags) override { this->parent_->set_pin_direction_(this->pin_, flags); } diff --git a/esphome/components/xl9535/xl9535.h b/esphome/components/xl9535/xl9535.h index dd67990fa8..3b511fd9b3 100644 --- a/esphome/components/xl9535/xl9535.h +++ b/esphome/components/xl9535/xl9535.h @@ -36,6 +36,8 @@ class XL9535GPIOPin : public GPIOPin { void set_inverted(bool inverted) { this->inverted_ = inverted; } void set_flags(gpio::Flags flags) { this->flags_ = flags; } + gpio::Flags get_flags() const override { return this->flags_; } + void setup() override; std::string dump_summary() const override; void pin_mode(gpio::Flags flags) override; diff --git a/esphome/core/gpio.h b/esphome/core/gpio.h index 19d57a0af8..dd6f14fef9 100644 --- a/esphome/core/gpio.h +++ b/esphome/core/gpio.h @@ -56,12 +56,9 @@ class GPIOPin { /** * @brief Retrieve GPIO pin flags. * - * @note This is currently optional to limit changes but will be mandatory in a future update. - * It is primarily applied to internal pins for now. - * - * @return The GPIO flags describing the pin mode and properties. Returns `gpio::Flags::FLAG_NONE` if not overridden. + * @return The GPIO flags describing the pin mode and properties. */ - virtual gpio::Flags get_flags() const { return gpio::Flags::FLAG_NONE; } + virtual gpio::Flags get_flags() const = 0; virtual bool digital_read() = 0;