ESPHome 2026.6.0-dev
Loading...
Searching...
No Matches
sm10bit_base.h
Go to the documentation of this file.
1#pragma once
2
4#include "esphome/core/hal.h"
6#include <vector>
7
8namespace esphome::sm10bit_base {
9
10class Sm10BitBase : public Component {
11 public:
12 class Channel;
13
14 void set_model(uint8_t model_id) { model_id_ = model_id; }
15 void set_data_pin(GPIOPin *data_pin) { data_pin_ = data_pin; }
16 void set_clock_pin(GPIOPin *clock_pin) { clock_pin_ = clock_pin; }
17 void set_max_power_color_channels(uint8_t max_power_color_channels) {
18 max_power_color_channels_ = max_power_color_channels;
19 }
20 void set_max_power_white_channels(uint8_t max_power_white_channels) {
21 max_power_white_channels_ = max_power_white_channels;
22 }
23
24 float get_setup_priority() const override { return setup_priority::HARDWARE; }
25
26 void setup() override;
27 void dump_config() override;
28 void loop() override;
29
31 public:
32 void set_parent(Sm10BitBase *parent) { parent_ = parent; }
33 void set_channel(uint8_t channel) { channel_ = channel; }
34
35 protected:
36 void write_state(float state) override {
37 auto amount = static_cast<uint16_t>(state * 0x3FF);
38 this->parent_->set_channel_value_(this->channel_, amount);
39 }
40
42 uint8_t channel_;
43 };
44
45 protected:
46 void set_channel_value_(uint8_t channel, uint16_t value);
47 void write_bit_(bool value);
48 void write_byte_(uint8_t data);
49 void write_buffer_(uint8_t *buffer, uint8_t size);
50
53 uint8_t model_id_;
57 std::vector<uint16_t> pwm_amounts_;
58 bool update_{true};
59};
60
61} // namespace esphome::sm10bit_base
Base class for all output components that can output a variable level, like PWM.
void write_state(float state) override
void write_buffer_(uint8_t *buffer, uint8_t size)
std::vector< uint16_t > pwm_amounts_
void set_model(uint8_t model_id)
void set_clock_pin(GPIOPin *clock_pin)
void set_max_power_white_channels(uint8_t max_power_white_channels)
void set_channel_value_(uint8_t channel, uint16_t value)
float get_setup_priority() const override
void set_data_pin(GPIOPin *data_pin)
void set_max_power_color_channels(uint8_t max_power_color_channels)
bool state
Definition fan.h:2
constexpr float HARDWARE
For components that deal with hardware and are very important like GPIO switch.
Definition component.h:41
uint16_t size
Definition helpers.cpp:25