mirror of
https://github.com/esphome/esphome.git
synced 2026-05-30 15:28:34 +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.GenerateID(CONF_BP1658CJ_ID): cv.use_id(BP1658CJ),
|
||||||
cv.Required(CONF_ID): cv.declare_id(Channel),
|
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)
|
).extend(cv.COMPONENT_SCHEMA)
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ CONFIG_SCHEMA = (
|
|||||||
.extend(
|
.extend(
|
||||||
{
|
{
|
||||||
cv.GenerateID(CONF_MCP3008_ID): cv.use_id(MCP3008),
|
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,
|
cv.Optional(CONF_REFERENCE_VOLTAGE, default="3.3V"): cv.voltage,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -81,9 +81,9 @@ void MY9231OutputComponent::loop() {
|
|||||||
}
|
}
|
||||||
this->update_ = false;
|
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);
|
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) {
|
if (this->pwm_amounts_[index] != value) {
|
||||||
this->update_ = true;
|
this->update_ = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ class MY9231OutputComponent : public Component {
|
|||||||
class Channel : public output::FloatOutput {
|
class Channel : public output::FloatOutput {
|
||||||
public:
|
public:
|
||||||
void set_parent(MY9231OutputComponent *parent) { parent_ = parent; }
|
void set_parent(MY9231OutputComponent *parent) { parent_ = parent; }
|
||||||
void set_channel(uint8_t channel) { channel_ = channel; }
|
void set_channel(uint16_t channel) { channel_ = channel; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void write_state(float state) override {
|
void write_state(float state) override {
|
||||||
@@ -39,13 +39,13 @@ class MY9231OutputComponent : public Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
MY9231OutputComponent *parent_;
|
MY9231OutputComponent *parent_;
|
||||||
uint8_t channel_;
|
uint16_t channel_;
|
||||||
};
|
};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
uint16_t get_max_amount_() const { return (uint32_t(1) << this->bit_depth_) - 1; }
|
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 init_chips_(uint8_t command);
|
||||||
void write_word_(uint16_t value, uint8_t bits);
|
void write_word_(uint16_t value, uint8_t bits);
|
||||||
void send_di_pulses_(uint8_t count);
|
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.GenerateID(CONF_SM16716_ID): cv.use_id(SM16716),
|
||||||
cv.Required(CONF_ID): cv.declare_id(Channel),
|
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)
|
).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.GenerateID(CONF_SM2135_ID): cv.use_id(SM2135),
|
||||||
cv.Required(CONF_ID): cv.declare_id(Channel),
|
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)
|
).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.GenerateID(CONF_SM2235_ID): cv.use_id(SM2235),
|
||||||
cv.Required(CONF_ID): cv.declare_id(Channel),
|
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)
|
).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.GenerateID(CONF_SM2335_ID): cv.use_id(SM2335),
|
||||||
cv.Required(CONF_ID): cv.declare_id(Channel),
|
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)
|
).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.GenerateID(CONF_TLC5947_ID): cv.use_id(TLC5947),
|
||||||
cv.Required(CONF_ID): cv.declare_id(TLC5947Channel),
|
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)
|
).extend(cv.COMPONENT_SCHEMA)
|
||||||
|
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ namespace tlc5947 {
|
|||||||
|
|
||||||
class TLC5947Channel : public output::FloatOutput, public Parented<TLC5947> {
|
class TLC5947Channel : public output::FloatOutput, public Parented<TLC5947> {
|
||||||
public:
|
public:
|
||||||
void set_channel(uint8_t channel) { this->channel_ = channel; }
|
void set_channel(uint16_t channel) { this->channel_ = channel; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void write_state(float state) override;
|
void write_state(float state) override;
|
||||||
uint8_t channel_;
|
uint16_t channel_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace tlc5947
|
} // namespace tlc5947
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ CONFIG_SCHEMA = output.FLOAT_OUTPUT_SCHEMA.extend(
|
|||||||
{
|
{
|
||||||
cv.GenerateID(CONF_TLC5971_ID): cv.use_id(TLC5971),
|
cv.GenerateID(CONF_TLC5971_ID): cv.use_id(TLC5971),
|
||||||
cv.Required(CONF_ID): cv.declare_id(TLC5971Channel),
|
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)
|
).extend(cv.COMPONENT_SCHEMA)
|
||||||
|
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ namespace tlc5971 {
|
|||||||
|
|
||||||
class TLC5971Channel : public output::FloatOutput, public Parented<TLC5971> {
|
class TLC5971Channel : public output::FloatOutput, public Parented<TLC5971> {
|
||||||
public:
|
public:
|
||||||
void set_channel(uint8_t channel) { this->channel_ = channel; }
|
void set_channel(uint16_t channel) { this->channel_ = channel; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void write_state(float state) override;
|
void write_state(float state) override;
|
||||||
uint8_t channel_;
|
uint16_t channel_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace tlc5971
|
} // namespace tlc5971
|
||||||
|
|||||||
Reference in New Issue
Block a user