From 7531fd42401fc0fb55991e7268f71c5cac72d9fe Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 20 Oct 2026 03:55:10 -1000 Subject: [PATCH] Move the entity, socket and sensor conversions to their own PR --- esphome/components/ds248x/ds248x_one_wire_bus.cpp | 6 +++++- esphome/components/htu21d/htu21d.cpp | 6 +++++- esphome/components/light/light_call.h | 8 +++++++- esphome/components/media_player/media_player.cpp | 13 ++++++++++--- esphome/components/mpr121/mpr121.cpp | 6 +++++- esphome/components/provisioning/provisioning.h | 6 +++++- esphome/components/rx8111/rx8111.cpp | 6 +++++- esphome/components/socket/bsd_sockets_impl.cpp | 6 +++++- esphome/components/socket/lwip_sockets_impl.cpp | 6 +++++- esphome/components/uart/uart_component_host.cpp | 6 +++++- esphome/components/ufire_ec/ufire_ec.cpp | 7 +++++-- esphome/components/ufire_ise/ufire_ise.cpp | 7 +++++-- esphome/components/water_heater/water_heater.cpp | 12 ++++++++++-- esphome/components/water_heater/water_heater.h | 8 +++++++- 14 files changed, 84 insertions(+), 19 deletions(-) diff --git a/esphome/components/ds248x/ds248x_one_wire_bus.cpp b/esphome/components/ds248x/ds248x_one_wire_bus.cpp index 3fcdb565ee8..201261d4bf6 100644 --- a/esphome/components/ds248x/ds248x_one_wire_bus.cpp +++ b/esphome/components/ds248x/ds248x_one_wire_bus.cpp @@ -151,7 +151,11 @@ uint64_t DS248xOneWireBus::search_int() { } // Update address based on direction taken - assign_bits(address, bit_mask, dir_taken); + if (dir_taken) { + address |= bit_mask; + } else { + address &= ~bit_mask; + } } // Search successful diff --git a/esphome/components/htu21d/htu21d.cpp b/esphome/components/htu21d/htu21d.cpp index ea241dc3cef..4fe502f2a5c 100644 --- a/esphome/components/htu21d/htu21d.cpp +++ b/esphome/components/htu21d/htu21d.cpp @@ -112,7 +112,11 @@ void HTU21DComponent::set_heater(bool status) { this->status_set_warning(); return; } - assign_bits(raw_heater, 1 << HTU21D_REG_HTRE_BIT, status); + if (status) { + raw_heater |= (1 << HTU21D_REG_HTRE_BIT); + } else { + raw_heater &= ~(1 << HTU21D_REG_HTRE_BIT); + } if (this->write_register(HTU21D_WRITERHT_REG_CMD, &raw_heater, 1) != i2c::ERROR_OK) { this->status_set_warning(); return; diff --git a/esphome/components/light/light_call.h b/esphome/components/light/light_call.h index dd11022b69c..a226690853e 100644 --- a/esphome/components/light/light_call.h +++ b/esphome/components/light/light_call.h @@ -226,7 +226,13 @@ class LightCall { inline bool get_save_() { return (this->flags_ & FLAG_SAVE) != 0; } // Helper to set flag - defaults to true for common case - void set_flag_(FieldFlags flag, bool value = true) ESPHOME_ALWAYS_INLINE { assign_bits(this->flags_, flag, value); } + void set_flag_(FieldFlags flag, bool value = true) ESPHOME_ALWAYS_INLINE { + if (value) { + this->flags_ |= flag; + } else { + this->flags_ &= ~flag; + } + } // Helper to clear flag - reduces code size for common case void clear_flag_(FieldFlags flag) ESPHOME_ALWAYS_INLINE { this->flags_ &= ~flag; } diff --git a/esphome/components/media_player/media_player.cpp b/esphome/components/media_player/media_player.cpp index 51067d17ea4..423832dd2ff 100644 --- a/esphome/components/media_player/media_player.cpp +++ b/esphome/components/media_player/media_player.cpp @@ -77,12 +77,19 @@ const char *media_player_command_to_string(MediaPlayerCommand command) { } void MediaPlayerTraits::set_supports_pause(bool supports_pause) { - assign_bits(this->feature_flags_, MediaPlayerEntityFeature::PAUSE | MediaPlayerEntityFeature::PLAY, supports_pause); + if (supports_pause) { + this->feature_flags_ |= MediaPlayerEntityFeature::PAUSE | MediaPlayerEntityFeature::PLAY; + } else { + this->feature_flags_ &= ~(MediaPlayerEntityFeature::PAUSE | MediaPlayerEntityFeature::PLAY); + } } void MediaPlayerTraits::set_supports_turn_off_on(bool supports_turn_off_on) { - assign_bits(this->feature_flags_, MediaPlayerEntityFeature::TURN_OFF | MediaPlayerEntityFeature::TURN_ON, - supports_turn_off_on); + if (supports_turn_off_on) { + this->feature_flags_ |= MediaPlayerEntityFeature::TURN_OFF | MediaPlayerEntityFeature::TURN_ON; + } else { + this->feature_flags_ &= ~(MediaPlayerEntityFeature::TURN_OFF | MediaPlayerEntityFeature::TURN_ON); + } } void MediaPlayerCall::validate_() { diff --git a/esphome/components/mpr121/mpr121.cpp b/esphome/components/mpr121/mpr121.cpp index 8df54e6b5b1..2dd8614a323 100644 --- a/esphome/components/mpr121/mpr121.cpp +++ b/esphome/components/mpr121/mpr121.cpp @@ -84,7 +84,11 @@ bool MPR121Component::digital_read(uint8_t pin) { return (this->gpio_input_ & (1 void MPR121Component::digital_write(uint8_t pin, bool value) { const uint8_t ionum = pin - 4; - assign_bits(this->gpio_output_, 1 << ionum, value); + if (value) { + this->gpio_output_ |= (1 << ionum); + } else { + this->gpio_output_ &= ~(1 << ionum); + } this->flush_gpio_(); } diff --git a/esphome/components/provisioning/provisioning.h b/esphome/components/provisioning/provisioning.h index b7d2711f9ed..e21b8f3ef09 100644 --- a/esphome/components/provisioning/provisioning.h +++ b/esphome/components/provisioning/provisioning.h @@ -46,7 +46,11 @@ class ProvisioningManager : public Component { void set_source_provisioned(uint8_t source, bool provisioned) { if (source >= MAX_SOURCES) return; - assign_bits(this->provisioned_mask_, 1UL << source, provisioned); + if (provisioned) { + this->provisioned_mask_ |= (1UL << source); + } else { + this->provisioned_mask_ &= ~(1UL << source); + } } // True once every registered source is provisioned. Config validation guarantees diff --git a/esphome/components/rx8111/rx8111.cpp b/esphome/components/rx8111/rx8111.cpp index 59b0785cfaa..62923482c7e 100644 --- a/esphome/components/rx8111/rx8111.cpp +++ b/esphome/components/rx8111/rx8111.cpp @@ -106,7 +106,11 @@ bool RX8111Component::set_stop_bit_(bool stop) { uint8_t control; if (!this->read_byte(RX8111_REG_CONTROL, &control)) return false; - assign_bits(control, RX8111_CTRL_STOP, stop); + if (stop) { + control |= RX8111_CTRL_STOP; + } else { + control &= ~RX8111_CTRL_STOP; + } return this->write_byte(RX8111_REG_CONTROL, control); } diff --git a/esphome/components/socket/bsd_sockets_impl.cpp b/esphome/components/socket/bsd_sockets_impl.cpp index 41c41ff419a..cec3b3498a7 100644 --- a/esphome/components/socket/bsd_sockets_impl.cpp +++ b/esphome/components/socket/bsd_sockets_impl.cpp @@ -62,7 +62,11 @@ int BSDSocketImpl::setblocking(bool blocking) { if (fl < 0) { return fl; } - assign_bits(fl, O_NONBLOCK, !blocking); + if (blocking) { + fl &= ~O_NONBLOCK; + } else { + fl |= O_NONBLOCK; + } return ::fcntl(this->fd_, F_SETFL, fl); } diff --git a/esphome/components/socket/lwip_sockets_impl.cpp b/esphome/components/socket/lwip_sockets_impl.cpp index 955a12748c1..f87c5377e4e 100644 --- a/esphome/components/socket/lwip_sockets_impl.cpp +++ b/esphome/components/socket/lwip_sockets_impl.cpp @@ -52,7 +52,11 @@ int LwIPSocketImpl::setblocking(bool blocking) { if (fl < 0) { return fl; } - assign_bits(fl, O_NONBLOCK, !blocking); + if (blocking) { + fl &= ~O_NONBLOCK; + } else { + fl |= O_NONBLOCK; + } return lwip_fcntl(this->fd_, F_SETFL, fl); } diff --git a/esphome/components/uart/uart_component_host.cpp b/esphome/components/uart/uart_component_host.cpp index bc6ff63aed2..2cb9d497241 100644 --- a/esphome/components/uart/uart_component_host.cpp +++ b/esphome/components/uart/uart_component_host.cpp @@ -162,7 +162,11 @@ void HostUartComponent::setup() { break; }; // Set stop bits - assign_bits(options.c_cflag, CSTOPB, this->stop_bits_ == 2); + if (this->stop_bits_ == 2) { + options.c_cflag |= CSTOPB; + } else { + options.c_cflag &= ~CSTOPB; + } cfsetispeed(&options, baud); cfsetospeed(&options, baud); tcsetattr(this->file_descriptor_, TCSANOW, &options); diff --git a/esphome/components/ufire_ec/ufire_ec.cpp b/esphome/components/ufire_ec/ufire_ec.cpp index a06ed9a06fc..1bb12229417 100644 --- a/esphome/components/ufire_ec/ufire_ec.cpp +++ b/esphome/components/ufire_ec/ufire_ec.cpp @@ -19,8 +19,11 @@ void UFireECComponent::setup() { // Write option for temperature adjustments uint8_t config; this->read_byte(REGISTER_CONFIG, &config); - assign_bits(config, CONFIG_TEMP_COMPENSATION, - !(this->temperature_sensor_ == nullptr && this->temperature_sensor_external_ == nullptr)); + if (this->temperature_sensor_ == nullptr && this->temperature_sensor_external_ == nullptr) { + config &= ~CONFIG_TEMP_COMPENSATION; + } else { + config |= CONFIG_TEMP_COMPENSATION; + } this->write_byte(REGISTER_CONFIG, config); // Update temperature compensation diff --git a/esphome/components/ufire_ise/ufire_ise.cpp b/esphome/components/ufire_ise/ufire_ise.cpp index 89dbb4faf36..aa899968e44 100644 --- a/esphome/components/ufire_ise/ufire_ise.cpp +++ b/esphome/components/ufire_ise/ufire_ise.cpp @@ -20,8 +20,11 @@ void UFireISEComponent::setup() { // Write option for temperature adjustments uint8_t config; this->read_byte(REGISTER_CONFIG, &config); - assign_bits(config, CONFIG_TEMP_COMPENSATION, - !(this->temperature_sensor_ == nullptr && this->temperature_sensor_external_ == nullptr)); + if (this->temperature_sensor_ == nullptr && this->temperature_sensor_external_ == nullptr) { + config &= ~CONFIG_TEMP_COMPENSATION; + } else { + config |= CONFIG_TEMP_COMPENSATION; + } this->write_byte(REGISTER_CONFIG, config); } diff --git a/esphome/components/water_heater/water_heater.cpp b/esphome/components/water_heater/water_heater.cpp index 845da228ed9..e5236a04916 100644 --- a/esphome/components/water_heater/water_heater.cpp +++ b/esphome/components/water_heater/water_heater.cpp @@ -65,13 +65,21 @@ WaterHeaterCall &WaterHeaterCall::set_target_temperature_high(float temperature) } WaterHeaterCall &WaterHeaterCall::set_away(bool away) { - assign_bits(this->state_, WATER_HEATER_STATE_AWAY, away); + if (away) { + this->state_ |= WATER_HEATER_STATE_AWAY; + } else { + this->state_ &= ~WATER_HEATER_STATE_AWAY; + } this->state_mask_ |= WATER_HEATER_STATE_AWAY; return *this; } WaterHeaterCall &WaterHeaterCall::set_on(bool on) { - assign_bits(this->state_, WATER_HEATER_STATE_ON, on); + if (on) { + this->state_ |= WATER_HEATER_STATE_ON; + } else { + this->state_ &= ~WATER_HEATER_STATE_ON; + } this->state_mask_ |= WATER_HEATER_STATE_ON; return *this; } diff --git a/esphome/components/water_heater/water_heater.h b/esphome/components/water_heater/water_heater.h index 8bede1ac479..1255a685957 100644 --- a/esphome/components/water_heater/water_heater.h +++ b/esphome/components/water_heater/water_heater.h @@ -253,7 +253,13 @@ class WaterHeater : public EntityBase { /// Set the state flags. Should only be called from control(). void set_state_(uint32_t state) { this->state_ = state; } /// Set or clear a state flag. Should only be called from control(). - void set_state_flag_(uint32_t flag, bool value) { assign_bits(this->state_, flag, value); } + void set_state_flag_(uint32_t flag, bool value) { + if (value) { + this->state_ |= flag; + } else { + this->state_ &= ~flag; + } + } WaterHeaterMode mode_{WATER_HEATER_MODE_OFF}; float current_temperature_{NAN};