Mark user-configurable classes as final (part 13/21)

Add the C++ `final` specifier to leaf, user-configurable component classes and
automation action/trigger/condition primitives so that classes meant to be
terminal cannot be subclassed by external components. Only classes never used as
a base anywhere in the tree are marked. Part 13 of 21, split alphabetically by
component (pmsa003i .. rc522).
This commit is contained in:
Jesse Hills
2026-06-15 13:21:17 +12:00
parent a25ac28ae5
commit b9338ea791
35 changed files with 68 additions and 68 deletions

View File

@@ -26,7 +26,7 @@ struct PM25AQIData {
uint16_t checksum; ///< Packet checksum uint16_t checksum; ///< Packet checksum
}; };
class PMSA003IComponent : public PollingComponent, public i2c::I2CDevice { class PMSA003IComponent final : public PollingComponent, public i2c::I2CDevice {
public: public:
void setup() override; void setup() override;
void dump_config() override; void dump_config() override;

View File

@@ -29,7 +29,7 @@ enum class State : uint8_t {
WAITING, WAITING,
}; };
class PMSX003Component : public uart::UARTDevice, public Component { class PMSX003Component final : public uart::UARTDevice, public Component {
public: public:
PMSX003Component() = default; PMSX003Component() = default;
void setup() override; void setup() override;

View File

@@ -9,7 +9,7 @@
namespace esphome::pmwcs3 { namespace esphome::pmwcs3 {
class PMWCS3Component : public PollingComponent, public i2c::I2CDevice { class PMWCS3Component final : public PollingComponent, public i2c::I2CDevice {
public: public:
void update() override; void update() override;
void dump_config() override; void dump_config() override;
@@ -32,7 +32,7 @@ class PMWCS3Component : public PollingComponent, public i2c::I2CDevice {
sensor::Sensor *vwc_sensor_{nullptr}; sensor::Sensor *vwc_sensor_{nullptr};
}; };
template<typename... Ts> class PMWCS3AirCalibrationAction : public Action<Ts...> { template<typename... Ts> class PMWCS3AirCalibrationAction final : public Action<Ts...> {
public: public:
PMWCS3AirCalibrationAction(PMWCS3Component *parent) : parent_(parent) {} PMWCS3AirCalibrationAction(PMWCS3Component *parent) : parent_(parent) {}
@@ -42,7 +42,7 @@ template<typename... Ts> class PMWCS3AirCalibrationAction : public Action<Ts...>
PMWCS3Component *parent_; PMWCS3Component *parent_;
}; };
template<typename... Ts> class PMWCS3WaterCalibrationAction : public Action<Ts...> { template<typename... Ts> class PMWCS3WaterCalibrationAction final : public Action<Ts...> {
public: public:
PMWCS3WaterCalibrationAction(PMWCS3Component *parent) : parent_(parent) {} PMWCS3WaterCalibrationAction(PMWCS3Component *parent) : parent_(parent) {}
@@ -52,7 +52,7 @@ template<typename... Ts> class PMWCS3WaterCalibrationAction : public Action<Ts..
PMWCS3Component *parent_; PMWCS3Component *parent_;
}; };
template<typename... Ts> class PMWCS3NewI2cAddressAction : public Action<Ts...> { template<typename... Ts> class PMWCS3NewI2cAddressAction final : public Action<Ts...> {
public: public:
PMWCS3NewI2cAddressAction(PMWCS3Component *parent) : parent_(parent) {} PMWCS3NewI2cAddressAction(PMWCS3Component *parent) : parent_(parent) {}
TEMPLATABLE_VALUE(int, new_address) TEMPLATABLE_VALUE(int, new_address)

View File

@@ -114,7 +114,7 @@ class PN532 : public PollingComponent {
CallbackManager<void()> on_finished_write_callback_; CallbackManager<void()> on_finished_write_callback_;
}; };
class PN532BinarySensor : public binary_sensor::BinarySensor { class PN532BinarySensor final : public binary_sensor::BinarySensor {
public: public:
void set_uid(const nfc::NfcTagUid &uid) { uid_ = uid; } void set_uid(const nfc::NfcTagUid &uid) { uid_ = uid; }
@@ -132,7 +132,7 @@ class PN532BinarySensor : public binary_sensor::BinarySensor {
bool found_{false}; bool found_{false};
}; };
template<typename... Ts> class PN532IsWritingCondition : public Condition<Ts...>, public Parented<PN532> { template<typename... Ts> class PN532IsWritingCondition final : public Condition<Ts...>, public Parented<PN532> {
public: public:
bool check(const Ts &...x) override { return this->parent_->is_writing(); } bool check(const Ts &...x) override { return this->parent_->is_writing(); }
}; };

View File

@@ -8,7 +8,7 @@
namespace esphome::pn532_i2c { namespace esphome::pn532_i2c {
class PN532I2C : public pn532::PN532, public i2c::I2CDevice { class PN532I2C final : public pn532::PN532, public i2c::I2CDevice {
public: public:
void dump_config() override; void dump_config() override;

View File

@@ -8,9 +8,9 @@
namespace esphome::pn532_spi { namespace esphome::pn532_spi {
class PN532Spi : public pn532::PN532, class PN532Spi final : public pn532::PN532,
public spi::SPIDevice<spi::BIT_ORDER_LSB_FIRST, spi::CLOCK_POLARITY_LOW, spi::CLOCK_PHASE_LEADING, public spi::SPIDevice<spi::BIT_ORDER_LSB_FIRST, spi::CLOCK_POLARITY_LOW,
spi::DATA_RATE_1MHZ> { spi::CLOCK_PHASE_LEADING, spi::DATA_RATE_1MHZ> {
public: public:
void setup() override; void setup() override;

View File

@@ -6,40 +6,40 @@
namespace esphome::pn7150 { namespace esphome::pn7150 {
template<typename... Ts> class PN7150IsWritingCondition : public Condition<Ts...>, public Parented<PN7150> { template<typename... Ts> class PN7150IsWritingCondition final : public Condition<Ts...>, public Parented<PN7150> {
public: public:
bool check(const Ts &...x) override { return this->parent_->is_writing(); } bool check(const Ts &...x) override { return this->parent_->is_writing(); }
}; };
template<typename... Ts> class EmulationOffAction : public Action<Ts...>, public Parented<PN7150> { template<typename... Ts> class EmulationOffAction final : public Action<Ts...>, public Parented<PN7150> {
void play(const Ts &...x) override { this->parent_->set_tag_emulation_off(); } void play(const Ts &...x) override { this->parent_->set_tag_emulation_off(); }
}; };
template<typename... Ts> class EmulationOnAction : public Action<Ts...>, public Parented<PN7150> { template<typename... Ts> class EmulationOnAction final : public Action<Ts...>, public Parented<PN7150> {
void play(const Ts &...x) override { this->parent_->set_tag_emulation_on(); } void play(const Ts &...x) override { this->parent_->set_tag_emulation_on(); }
}; };
template<typename... Ts> class PollingOffAction : public Action<Ts...>, public Parented<PN7150> { template<typename... Ts> class PollingOffAction final : public Action<Ts...>, public Parented<PN7150> {
void play(const Ts &...x) override { this->parent_->set_polling_off(); } void play(const Ts &...x) override { this->parent_->set_polling_off(); }
}; };
template<typename... Ts> class PollingOnAction : public Action<Ts...>, public Parented<PN7150> { template<typename... Ts> class PollingOnAction final : public Action<Ts...>, public Parented<PN7150> {
void play(const Ts &...x) override { this->parent_->set_polling_on(); } void play(const Ts &...x) override { this->parent_->set_polling_on(); }
}; };
template<typename... Ts> class SetCleanModeAction : public Action<Ts...>, public Parented<PN7150> { template<typename... Ts> class SetCleanModeAction final : public Action<Ts...>, public Parented<PN7150> {
void play(const Ts &...x) override { this->parent_->clean_mode(); } void play(const Ts &...x) override { this->parent_->clean_mode(); }
}; };
template<typename... Ts> class SetFormatModeAction : public Action<Ts...>, public Parented<PN7150> { template<typename... Ts> class SetFormatModeAction final : public Action<Ts...>, public Parented<PN7150> {
void play(const Ts &...x) override { this->parent_->format_mode(); } void play(const Ts &...x) override { this->parent_->format_mode(); }
}; };
template<typename... Ts> class SetReadModeAction : public Action<Ts...>, public Parented<PN7150> { template<typename... Ts> class SetReadModeAction final : public Action<Ts...>, public Parented<PN7150> {
void play(const Ts &...x) override { this->parent_->read_mode(); } void play(const Ts &...x) override { this->parent_->read_mode(); }
}; };
template<typename... Ts> class SetEmulationMessageAction : public Action<Ts...>, public Parented<PN7150> { template<typename... Ts> class SetEmulationMessageAction final : public Action<Ts...>, public Parented<PN7150> {
TEMPLATABLE_VALUE(std::string, message) TEMPLATABLE_VALUE(std::string, message)
TEMPLATABLE_VALUE(bool, include_android_app_record) TEMPLATABLE_VALUE(bool, include_android_app_record)
@@ -49,7 +49,7 @@ template<typename... Ts> class SetEmulationMessageAction : public Action<Ts...>,
} }
}; };
template<typename... Ts> class SetWriteMessageAction : public Action<Ts...>, public Parented<PN7150> { template<typename... Ts> class SetWriteMessageAction final : public Action<Ts...>, public Parented<PN7150> {
TEMPLATABLE_VALUE(std::string, message) TEMPLATABLE_VALUE(std::string, message)
TEMPLATABLE_VALUE(bool, include_android_app_record) TEMPLATABLE_VALUE(bool, include_android_app_record)
@@ -59,7 +59,7 @@ template<typename... Ts> class SetWriteMessageAction : public Action<Ts...>, pub
} }
}; };
template<typename... Ts> class SetWriteModeAction : public Action<Ts...>, public Parented<PN7150> { template<typename... Ts> class SetWriteModeAction final : public Action<Ts...>, public Parented<PN7150> {
void play(const Ts &...x) override { this->parent_->write_mode(); } void play(const Ts &...x) override { this->parent_->write_mode(); }
}; };

View File

@@ -8,7 +8,7 @@
namespace esphome::pn7150_i2c { namespace esphome::pn7150_i2c {
class PN7150I2C : public pn7150::PN7150, public i2c::I2CDevice { class PN7150I2C final : public pn7150::PN7150, public i2c::I2CDevice {
public: public:
void dump_config() override; void dump_config() override;

View File

@@ -6,40 +6,40 @@
namespace esphome::pn7160 { namespace esphome::pn7160 {
template<typename... Ts> class PN7160IsWritingCondition : public Condition<Ts...>, public Parented<PN7160> { template<typename... Ts> class PN7160IsWritingCondition final : public Condition<Ts...>, public Parented<PN7160> {
public: public:
bool check(const Ts &...x) override { return this->parent_->is_writing(); } bool check(const Ts &...x) override { return this->parent_->is_writing(); }
}; };
template<typename... Ts> class EmulationOffAction : public Action<Ts...>, public Parented<PN7160> { template<typename... Ts> class EmulationOffAction final : public Action<Ts...>, public Parented<PN7160> {
void play(const Ts &...x) override { this->parent_->set_tag_emulation_off(); } void play(const Ts &...x) override { this->parent_->set_tag_emulation_off(); }
}; };
template<typename... Ts> class EmulationOnAction : public Action<Ts...>, public Parented<PN7160> { template<typename... Ts> class EmulationOnAction final : public Action<Ts...>, public Parented<PN7160> {
void play(const Ts &...x) override { this->parent_->set_tag_emulation_on(); } void play(const Ts &...x) override { this->parent_->set_tag_emulation_on(); }
}; };
template<typename... Ts> class PollingOffAction : public Action<Ts...>, public Parented<PN7160> { template<typename... Ts> class PollingOffAction final : public Action<Ts...>, public Parented<PN7160> {
void play(const Ts &...x) override { this->parent_->set_polling_off(); } void play(const Ts &...x) override { this->parent_->set_polling_off(); }
}; };
template<typename... Ts> class PollingOnAction : public Action<Ts...>, public Parented<PN7160> { template<typename... Ts> class PollingOnAction final : public Action<Ts...>, public Parented<PN7160> {
void play(const Ts &...x) override { this->parent_->set_polling_on(); } void play(const Ts &...x) override { this->parent_->set_polling_on(); }
}; };
template<typename... Ts> class SetCleanModeAction : public Action<Ts...>, public Parented<PN7160> { template<typename... Ts> class SetCleanModeAction final : public Action<Ts...>, public Parented<PN7160> {
void play(const Ts &...x) override { this->parent_->clean_mode(); } void play(const Ts &...x) override { this->parent_->clean_mode(); }
}; };
template<typename... Ts> class SetFormatModeAction : public Action<Ts...>, public Parented<PN7160> { template<typename... Ts> class SetFormatModeAction final : public Action<Ts...>, public Parented<PN7160> {
void play(const Ts &...x) override { this->parent_->format_mode(); } void play(const Ts &...x) override { this->parent_->format_mode(); }
}; };
template<typename... Ts> class SetReadModeAction : public Action<Ts...>, public Parented<PN7160> { template<typename... Ts> class SetReadModeAction final : public Action<Ts...>, public Parented<PN7160> {
void play(const Ts &...x) override { this->parent_->read_mode(); } void play(const Ts &...x) override { this->parent_->read_mode(); }
}; };
template<typename... Ts> class SetEmulationMessageAction : public Action<Ts...>, public Parented<PN7160> { template<typename... Ts> class SetEmulationMessageAction final : public Action<Ts...>, public Parented<PN7160> {
TEMPLATABLE_VALUE(std::string, message) TEMPLATABLE_VALUE(std::string, message)
TEMPLATABLE_VALUE(bool, include_android_app_record) TEMPLATABLE_VALUE(bool, include_android_app_record)
@@ -49,7 +49,7 @@ template<typename... Ts> class SetEmulationMessageAction : public Action<Ts...>,
} }
}; };
template<typename... Ts> class SetWriteMessageAction : public Action<Ts...>, public Parented<PN7160> { template<typename... Ts> class SetWriteMessageAction final : public Action<Ts...>, public Parented<PN7160> {
TEMPLATABLE_VALUE(std::string, message) TEMPLATABLE_VALUE(std::string, message)
TEMPLATABLE_VALUE(bool, include_android_app_record) TEMPLATABLE_VALUE(bool, include_android_app_record)
@@ -59,7 +59,7 @@ template<typename... Ts> class SetWriteMessageAction : public Action<Ts...>, pub
} }
}; };
template<typename... Ts> class SetWriteModeAction : public Action<Ts...>, public Parented<PN7160> { template<typename... Ts> class SetWriteModeAction final : public Action<Ts...>, public Parented<PN7160> {
void play(const Ts &...x) override { this->parent_->write_mode(); } void play(const Ts &...x) override { this->parent_->write_mode(); }
}; };

View File

@@ -8,7 +8,7 @@
namespace esphome::pn7160_i2c { namespace esphome::pn7160_i2c {
class PN7160I2C : public pn7160::PN7160, public i2c::I2CDevice { class PN7160I2C final : public pn7160::PN7160, public i2c::I2CDevice {
public: public:
void dump_config() override; void dump_config() override;

View File

@@ -12,9 +12,9 @@ namespace esphome::pn7160_spi {
static constexpr uint8_t TDD_SPI_READ = 0xFF; static constexpr uint8_t TDD_SPI_READ = 0xFF;
static constexpr uint8_t TDD_SPI_WRITE = 0x0A; static constexpr uint8_t TDD_SPI_WRITE = 0x0A;
class PN7160Spi : public pn7160::PN7160, class PN7160Spi final : public pn7160::PN7160,
public spi::SPIDevice<spi::BIT_ORDER_MSB_FIRST, spi::CLOCK_POLARITY_LOW, spi::CLOCK_PHASE_LEADING, public spi::SPIDevice<spi::BIT_ORDER_MSB_FIRST, spi::CLOCK_POLARITY_LOW,
spi::DATA_RATE_4MHZ> { spi::CLOCK_PHASE_LEADING, spi::DATA_RATE_4MHZ> {
public: public:
void setup() override; void setup() override;

View File

@@ -7,7 +7,7 @@
namespace esphome::power_supply { namespace esphome::power_supply {
class PowerSupply : public Component { class PowerSupply final : public Component {
public: public:
void set_pin(GPIOPin *pin) { pin_ = pin; } void set_pin(GPIOPin *pin) { pin_ = pin; }
void set_enable_time(uint32_t enable_time) { enable_time_ = enable_time; } void set_enable_time(uint32_t enable_time) { enable_time_ = enable_time; }

View File

@@ -14,7 +14,7 @@
namespace esphome::prometheus { namespace esphome::prometheus {
class PrometheusHandler : public AsyncWebHandler, public Component { class PrometheusHandler final : public AsyncWebHandler, public Component {
public: public:
PrometheusHandler(web_server_base::WebServerBase *base) : base_(base) {} PrometheusHandler(web_server_base::WebServerBase *base) : base_(base) {}

View File

@@ -6,7 +6,7 @@
namespace esphome::psram { namespace esphome::psram {
class PsramComponent : public Component { class PsramComponent final : public Component {
void dump_config() override; void dump_config() override;
}; };

View File

@@ -6,7 +6,7 @@
namespace esphome::pulse_counter { namespace esphome::pulse_counter {
template<typename... Ts> class SetTotalPulsesAction : public Action<Ts...> { template<typename... Ts> class SetTotalPulsesAction final : public Action<Ts...> {
public: public:
SetTotalPulsesAction(PulseCounterSensor *pulse_counter) : pulse_counter_(pulse_counter) {} SetTotalPulsesAction(PulseCounterSensor *pulse_counter) : pulse_counter_(pulse_counter) {}

View File

@@ -59,7 +59,7 @@ struct HwPulseCounterStorage : public PulseCounterStorageBase {
PulseCounterStorageBase *get_storage(bool hw_pcnt = false); PulseCounterStorageBase *get_storage(bool hw_pcnt = false);
class PulseCounterSensor : public sensor::Sensor, public PollingComponent { class PulseCounterSensor final : public sensor::Sensor, public PollingComponent {
public: public:
explicit PulseCounterSensor(bool hw_pcnt = false) : storage_(*get_storage(hw_pcnt)) {} explicit PulseCounterSensor(bool hw_pcnt = false) : storage_(*get_storage(hw_pcnt)) {}

View File

@@ -6,7 +6,7 @@
namespace esphome::pulse_meter { namespace esphome::pulse_meter {
template<typename... Ts> class SetTotalPulsesAction : public Action<Ts...> { template<typename... Ts> class SetTotalPulsesAction final : public Action<Ts...> {
public: public:
SetTotalPulsesAction(PulseMeterSensor *pulse_meter) : pulse_meter_(pulse_meter) {} SetTotalPulsesAction(PulseMeterSensor *pulse_meter) : pulse_meter_(pulse_meter) {}

View File

@@ -9,7 +9,7 @@
namespace esphome::pulse_meter { namespace esphome::pulse_meter {
class PulseMeterSensor : public sensor::Sensor, public Component { class PulseMeterSensor final : public sensor::Sensor, public Component {
public: public:
enum InternalFilterMode { enum InternalFilterMode {
FILTER_EDGE = 0, FILTER_EDGE = 0,

View File

@@ -26,7 +26,7 @@ class PulseWidthSensorStore {
volatile uint32_t last_rise_{0}; volatile uint32_t last_rise_{0};
}; };
class PulseWidthSensor : public sensor::Sensor, public PollingComponent { class PulseWidthSensor final : public sensor::Sensor, public PollingComponent {
public: public:
void set_pin(InternalGPIOPin *pin) { pin_ = pin; } void set_pin(InternalGPIOPin *pin) { pin_ = pin; }
void setup() override { this->store_.setup(this->pin_); } void setup() override { this->store_.setup(this->pin_); }

View File

@@ -31,7 +31,7 @@ enum UNIT {
using pvvx_writer_t = display::DisplayWriter<PVVXDisplay>; using pvvx_writer_t = display::DisplayWriter<PVVXDisplay>;
class PVVXDisplay : public ble_client::BLEClientNode, public PollingComponent { class PVVXDisplay final : public ble_client::BLEClientNode, public PollingComponent {
public: public:
void set_writer(pvvx_writer_t &&writer) { this->writer_ = writer; } void set_writer(pvvx_writer_t &&writer) { this->writer_ = writer; }
void set_auto_clear(bool auto_clear_enabled) { this->auto_clear_enabled_ = auto_clear_enabled; } void set_auto_clear(bool auto_clear_enabled) { this->auto_clear_enabled_ = auto_clear_enabled; }

View File

@@ -18,7 +18,7 @@ struct ParseResult {
int raw_offset; int raw_offset;
}; };
class PVVXMiThermometer : public Component, public esp32_ble_tracker::ESPBTDeviceListener { class PVVXMiThermometer final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
public: public:
void set_address(uint64_t address) { address_ = address; }; void set_address(uint64_t address) { address_ = address; };

View File

@@ -21,7 +21,7 @@ class PylontechListener {
virtual void dump_config(); virtual void dump_config();
}; };
class PylontechComponent : public PollingComponent, public uart::UARTDevice { class PylontechComponent final : public PollingComponent, public uart::UARTDevice {
public: public:
PylontechComponent(); PylontechComponent();

View File

@@ -5,7 +5,7 @@
namespace esphome::pylontech { namespace esphome::pylontech {
class PylontechSensor : public PylontechListener { class PylontechSensor final : public PylontechListener {
public: public:
PylontechSensor(int8_t bat_num); PylontechSensor(int8_t bat_num);
void dump_config() override; void dump_config() override;

View File

@@ -5,7 +5,7 @@
namespace esphome::pylontech { namespace esphome::pylontech {
class PylontechTextSensor : public PylontechListener { class PylontechTextSensor final : public PylontechListener {
public: public:
PylontechTextSensor(int8_t bat_num); PylontechTextSensor(int8_t bat_num);
void dump_config() override; void dump_config() override;

View File

@@ -6,7 +6,7 @@
namespace esphome::pzem004t { namespace esphome::pzem004t {
class PZEM004T : public PollingComponent, public uart::UARTDevice { class PZEM004T final : public PollingComponent, public uart::UARTDevice {
public: public:
void set_voltage_sensor(sensor::Sensor *voltage_sensor) { voltage_sensor_ = voltage_sensor; } void set_voltage_sensor(sensor::Sensor *voltage_sensor) { voltage_sensor_ = voltage_sensor; }
void set_current_sensor(sensor::Sensor *current_sensor) { current_sensor_ = current_sensor; } void set_current_sensor(sensor::Sensor *current_sensor) { current_sensor_ = current_sensor; }

View File

@@ -11,7 +11,7 @@ namespace esphome::pzemac {
template<typename... Ts> class ResetEnergyAction; template<typename... Ts> class ResetEnergyAction;
class PZEMAC : public PollingComponent, public modbus::ModbusDevice { class PZEMAC final : public PollingComponent, public modbus::ModbusDevice {
public: public:
void set_voltage_sensor(sensor::Sensor *voltage_sensor) { voltage_sensor_ = voltage_sensor; } void set_voltage_sensor(sensor::Sensor *voltage_sensor) { voltage_sensor_ = voltage_sensor; }
void set_current_sensor(sensor::Sensor *current_sensor) { current_sensor_ = current_sensor; } void set_current_sensor(sensor::Sensor *current_sensor) { current_sensor_ = current_sensor; }
@@ -38,7 +38,7 @@ class PZEMAC : public PollingComponent, public modbus::ModbusDevice {
void reset_energy_(); void reset_energy_();
}; };
template<typename... Ts> class ResetEnergyAction : public Action<Ts...> { template<typename... Ts> class ResetEnergyAction final : public Action<Ts...> {
public: public:
ResetEnergyAction(PZEMAC *pzemac) : pzemac_(pzemac) {} ResetEnergyAction(PZEMAC *pzemac) : pzemac_(pzemac) {}

View File

@@ -9,7 +9,7 @@
namespace esphome::pzemdc { namespace esphome::pzemdc {
class PZEMDC : public PollingComponent, public modbus::ModbusDevice { class PZEMDC final : public PollingComponent, public modbus::ModbusDevice {
public: public:
void set_voltage_sensor(sensor::Sensor *voltage_sensor) { voltage_sensor_ = voltage_sensor; } void set_voltage_sensor(sensor::Sensor *voltage_sensor) { voltage_sensor_ = voltage_sensor; }
void set_current_sensor(sensor::Sensor *current_sensor) { current_sensor_ = current_sensor; } void set_current_sensor(sensor::Sensor *current_sensor) { current_sensor_ = current_sensor; }
@@ -31,7 +31,7 @@ class PZEMDC : public PollingComponent, public modbus::ModbusDevice {
sensor::Sensor *energy_sensor_{nullptr}; sensor::Sensor *energy_sensor_{nullptr};
}; };
template<typename... Ts> class ResetEnergyAction : public Action<Ts...> { template<typename... Ts> class ResetEnergyAction final : public Action<Ts...> {
public: public:
ResetEnergyAction(PZEMDC *pzemdc) : pzemdc_(pzemdc) {} ResetEnergyAction(PZEMDC *pzemdc) : pzemdc_(pzemdc) {}

View File

@@ -26,7 +26,7 @@ enum QMC5883LOversampling {
QMC5883L_SAMPLING_64 = 0b11, QMC5883L_SAMPLING_64 = 0b11,
}; };
class QMC5883LComponent : public PollingComponent, public i2c::I2CDevice { class QMC5883LComponent final : public PollingComponent, public i2c::I2CDevice {
public: public:
void setup() override; void setup() override;
void dump_config() override; void dump_config() override;

View File

@@ -67,7 +67,7 @@ using qmp6988_data_t = struct Qmp6988Data {
qmp6988_ik_data_t ik; qmp6988_ik_data_t ik;
}; };
class QMP6988Component : public PollingComponent, public i2c::I2CDevice { class QMP6988Component final : public PollingComponent, public i2c::I2CDevice {
public: public:
void set_temperature_sensor(sensor::Sensor *temperature_sensor) { this->temperature_sensor_ = temperature_sensor; } void set_temperature_sensor(sensor::Sensor *temperature_sensor) { this->temperature_sensor_ = temperature_sensor; }
void set_pressure_sensor(sensor::Sensor *pressure_sensor) { this->pressure_sensor_ = pressure_sensor; } void set_pressure_sensor(sensor::Sensor *pressure_sensor) { this->pressure_sensor_ = pressure_sensor; }

View File

@@ -13,7 +13,7 @@ class Display;
} // namespace display } // namespace display
namespace qr_code { namespace qr_code {
class QrCode : public Component { class QrCode final : public Component {
public: public:
void draw(display::Display *buff, uint16_t x_offset, uint16_t y_offset, Color color, int scale); void draw(display::Display *buff, uint16_t x_offset, uint16_t y_offset, Color color, int scale);

View File

@@ -53,7 +53,7 @@ enum Model {
RM67162, RM67162,
}; };
class QspiDbi : public display::DisplayBuffer, class QspiDbi final : public display::DisplayBuffer,
public spi::SPIDevice<spi::BIT_ORDER_MSB_FIRST, spi::CLOCK_POLARITY_LOW, spi::CLOCK_PHASE_LEADING, public spi::SPIDevice<spi::BIT_ORDER_MSB_FIRST, spi::CLOCK_POLARITY_LOW, spi::CLOCK_PHASE_LEADING,
spi::DATA_RATE_1MHZ> { spi::DATA_RATE_1MHZ> {
public: public:

View File

@@ -29,7 +29,7 @@ enum DebounceMode {
static const uint8_t QWIIC_PIR_DEVICE_ID = 0x72; static const uint8_t QWIIC_PIR_DEVICE_ID = 0x72;
class QwiicPIRComponent : public Component, public i2c::I2CDevice, public binary_sensor::BinarySensor { class QwiicPIRComponent final : public Component, public i2c::I2CDevice, public binary_sensor::BinarySensor {
public: public:
void setup() override; void setup() override;
void loop() override; void loop() override;

View File

@@ -7,7 +7,7 @@
namespace esphome::radon_eye_ble { namespace esphome::radon_eye_ble {
class RadonEyeListener : public esp32_ble_tracker::ESPBTDeviceListener { class RadonEyeListener final : public esp32_ble_tracker::ESPBTDeviceListener {
public: public:
bool parse_device(const esp32_ble_tracker::ESPBTDevice &device) override; bool parse_device(const esp32_ble_tracker::ESPBTDevice &device) override;
}; };

View File

@@ -13,7 +13,7 @@
namespace esphome::radon_eye_rd200 { namespace esphome::radon_eye_rd200 {
class RadonEyeRD200 : public PollingComponent, public ble_client::BLEClientNode { class RadonEyeRD200 final : public PollingComponent, public ble_client::BLEClientNode {
public: public:
RadonEyeRD200(); RadonEyeRD200();

View File

@@ -251,7 +251,7 @@ class RC522 : public PollingComponent {
} error_code_{NONE}; } error_code_{NONE};
}; };
class RC522BinarySensor : public binary_sensor::BinarySensor { class RC522BinarySensor final : public binary_sensor::BinarySensor {
public: public:
void set_uid(const std::vector<uint8_t> &uid) { uid_ = uid; } void set_uid(const std::vector<uint8_t> &uid) { uid_ = uid; }
@@ -269,7 +269,7 @@ class RC522BinarySensor : public binary_sensor::BinarySensor {
bool found_{false}; bool found_{false};
}; };
class RC522Trigger : public Trigger<std::string> { class RC522Trigger final : public Trigger<std::string> {
public: public:
void process(std::vector<uint8_t> &data); void process(std::vector<uint8_t> &data);
}; };