mirror of
https://github.com/esphome/esphome.git
synced 2026-05-24 09:45:31 +08:00
[multiple] Fix channel/pin range validation and widen channel types (#15529)
This commit is contained in:
@@ -14,7 +14,7 @@ CONFIG_SCHEMA = output.FLOAT_OUTPUT_SCHEMA.extend(
|
||||
{
|
||||
cv.GenerateID(CONF_BP1658CJ_ID): cv.use_id(BP1658CJ),
|
||||
cv.Required(CONF_ID): cv.declare_id(Channel),
|
||||
cv.Required(CONF_CHANNEL): cv.int_range(min=0, max=65535),
|
||||
cv.Required(CONF_CHANNEL): cv.int_range(min=0, max=4),
|
||||
}
|
||||
).extend(cv.COMPONENT_SCHEMA)
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ CONFIG_SCHEMA = (
|
||||
.extend(
|
||||
{
|
||||
cv.GenerateID(CONF_MCP3008_ID): cv.use_id(MCP3008),
|
||||
cv.Required(CONF_NUMBER): cv.int_,
|
||||
cv.Required(CONF_NUMBER): cv.int_range(min=0, max=7),
|
||||
cv.Optional(CONF_REFERENCE_VOLTAGE, default="3.3V"): cv.voltage,
|
||||
}
|
||||
)
|
||||
|
||||
@@ -81,9 +81,9 @@ void MY9231OutputComponent::loop() {
|
||||
}
|
||||
this->update_ = false;
|
||||
}
|
||||
void MY9231OutputComponent::set_channel_value_(uint8_t channel, uint16_t value) {
|
||||
void MY9231OutputComponent::set_channel_value_(uint16_t channel, uint16_t value) {
|
||||
ESP_LOGV(TAG, "set channels %u to %u", channel, value);
|
||||
uint8_t index = this->num_channels_ - channel - 1;
|
||||
uint16_t index = this->num_channels_ - channel - 1;
|
||||
if (this->pwm_amounts_[index] != value) {
|
||||
this->update_ = true;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ class MY9231OutputComponent : public Component {
|
||||
class Channel : public output::FloatOutput {
|
||||
public:
|
||||
void set_parent(MY9231OutputComponent *parent) { parent_ = parent; }
|
||||
void set_channel(uint8_t channel) { channel_ = channel; }
|
||||
void set_channel(uint16_t channel) { channel_ = channel; }
|
||||
|
||||
protected:
|
||||
void write_state(float state) override {
|
||||
@@ -39,13 +39,13 @@ class MY9231OutputComponent : public Component {
|
||||
}
|
||||
|
||||
MY9231OutputComponent *parent_;
|
||||
uint8_t channel_;
|
||||
uint16_t channel_;
|
||||
};
|
||||
|
||||
protected:
|
||||
uint16_t get_max_amount_() const { return (uint32_t(1) << this->bit_depth_) - 1; }
|
||||
|
||||
void set_channel_value_(uint8_t channel, uint16_t value);
|
||||
void set_channel_value_(uint16_t channel, uint16_t value);
|
||||
void init_chips_(uint8_t command);
|
||||
void write_word_(uint16_t value, uint8_t bits);
|
||||
void send_di_pulses_(uint8_t count);
|
||||
|
||||
@@ -14,7 +14,7 @@ CONFIG_SCHEMA = output.FLOAT_OUTPUT_SCHEMA.extend(
|
||||
{
|
||||
cv.GenerateID(CONF_SM16716_ID): cv.use_id(SM16716),
|
||||
cv.Required(CONF_ID): cv.declare_id(Channel),
|
||||
cv.Required(CONF_CHANNEL): cv.int_range(min=0, max=65535),
|
||||
cv.Required(CONF_CHANNEL): cv.int_range(min=0, max=254),
|
||||
}
|
||||
).extend(cv.COMPONENT_SCHEMA)
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ CONFIG_SCHEMA = output.FLOAT_OUTPUT_SCHEMA.extend(
|
||||
{
|
||||
cv.GenerateID(CONF_SM2135_ID): cv.use_id(SM2135),
|
||||
cv.Required(CONF_ID): cv.declare_id(Channel),
|
||||
cv.Required(CONF_CHANNEL): cv.int_range(min=0, max=65535),
|
||||
cv.Required(CONF_CHANNEL): cv.int_range(min=0, max=4),
|
||||
}
|
||||
).extend(cv.COMPONENT_SCHEMA)
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ CONFIG_SCHEMA = output.FLOAT_OUTPUT_SCHEMA.extend(
|
||||
{
|
||||
cv.GenerateID(CONF_SM2235_ID): cv.use_id(SM2235),
|
||||
cv.Required(CONF_ID): cv.declare_id(Channel),
|
||||
cv.Required(CONF_CHANNEL): cv.int_range(min=0, max=65535),
|
||||
cv.Required(CONF_CHANNEL): cv.int_range(min=0, max=4),
|
||||
}
|
||||
).extend(cv.COMPONENT_SCHEMA)
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ CONFIG_SCHEMA = output.FLOAT_OUTPUT_SCHEMA.extend(
|
||||
{
|
||||
cv.GenerateID(CONF_SM2335_ID): cv.use_id(SM2335),
|
||||
cv.Required(CONF_ID): cv.declare_id(Channel),
|
||||
cv.Required(CONF_CHANNEL): cv.int_range(min=0, max=65535),
|
||||
cv.Required(CONF_CHANNEL): cv.int_range(min=0, max=4),
|
||||
}
|
||||
).extend(cv.COMPONENT_SCHEMA)
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ CONFIG_SCHEMA = output.FLOAT_OUTPUT_SCHEMA.extend(
|
||||
{
|
||||
cv.GenerateID(CONF_TLC5947_ID): cv.use_id(TLC5947),
|
||||
cv.Required(CONF_ID): cv.declare_id(TLC5947Channel),
|
||||
cv.Required(CONF_CHANNEL): cv.int_range(min=0, max=65535),
|
||||
cv.Required(CONF_CHANNEL): cv.uint16_t,
|
||||
}
|
||||
).extend(cv.COMPONENT_SCHEMA)
|
||||
|
||||
|
||||
@@ -11,11 +11,11 @@ namespace tlc5947 {
|
||||
|
||||
class TLC5947Channel : public output::FloatOutput, public Parented<TLC5947> {
|
||||
public:
|
||||
void set_channel(uint8_t channel) { this->channel_ = channel; }
|
||||
void set_channel(uint16_t channel) { this->channel_ = channel; }
|
||||
|
||||
protected:
|
||||
void write_state(float state) override;
|
||||
uint8_t channel_;
|
||||
uint16_t channel_;
|
||||
};
|
||||
|
||||
} // namespace tlc5947
|
||||
|
||||
@@ -16,7 +16,7 @@ CONFIG_SCHEMA = output.FLOAT_OUTPUT_SCHEMA.extend(
|
||||
{
|
||||
cv.GenerateID(CONF_TLC5971_ID): cv.use_id(TLC5971),
|
||||
cv.Required(CONF_ID): cv.declare_id(TLC5971Channel),
|
||||
cv.Required(CONF_CHANNEL): cv.int_range(min=0, max=65535),
|
||||
cv.Required(CONF_CHANNEL): cv.uint16_t,
|
||||
}
|
||||
).extend(cv.COMPONENT_SCHEMA)
|
||||
|
||||
|
||||
@@ -11,11 +11,11 @@ namespace tlc5971 {
|
||||
|
||||
class TLC5971Channel : public output::FloatOutput, public Parented<TLC5971> {
|
||||
public:
|
||||
void set_channel(uint8_t channel) { this->channel_ = channel; }
|
||||
void set_channel(uint16_t channel) { this->channel_ = channel; }
|
||||
|
||||
protected:
|
||||
void write_state(float state) override;
|
||||
uint8_t channel_;
|
||||
uint16_t channel_;
|
||||
};
|
||||
|
||||
} // namespace tlc5971
|
||||
|
||||
Reference in New Issue
Block a user