This commit is contained in:
J. Nick Koston 2025-07-26 14:49:43 -10:00
parent e94f5bffa3
commit d98a3fca96
No known key found for this signature in database
3 changed files with 152 additions and 173 deletions

View File

@ -39,8 +39,8 @@ void HelloResponse::encode(ProtoWriteBuffer buffer) const {
void HelloResponse::calculate_size(ProtoSize &size) const {
size.add_uint32(1, this->api_version_major);
size.add_uint32(1, this->api_version_minor);
size.add_string(1, this->server_info_ref_.size());
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->server_info_ref_.size());
size.add_length(1, this->name_ref_.size());
}
bool ConnectRequest::decode_length(uint32_t field_id, ProtoLengthDelimited value) {
switch (field_id) {
@ -61,7 +61,7 @@ void AreaInfo::encode(ProtoWriteBuffer buffer) const {
}
void AreaInfo::calculate_size(ProtoSize &size) const {
size.add_uint32(1, this->area_id);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
}
#endif
#ifdef USE_DEVICES
@ -72,7 +72,7 @@ void DeviceInfo::encode(ProtoWriteBuffer buffer) const {
}
void DeviceInfo::calculate_size(ProtoSize &size) const {
size.add_uint32(1, this->device_id);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
size.add_uint32(1, this->area_id);
}
#endif
@ -132,19 +132,19 @@ void DeviceInfoResponse::calculate_size(ProtoSize &size) const {
#ifdef USE_API_PASSWORD
size.add_bool(1, this->uses_password);
#endif
size.add_string(1, this->name_ref_.size());
size.add_string(1, this->mac_address_ref_.size());
size.add_string(1, this->esphome_version_ref_.size());
size.add_string(1, this->compilation_time_ref_.size());
size.add_string(1, this->model_ref_.size());
size.add_length(1, this->name_ref_.size());
size.add_length(1, this->mac_address_ref_.size());
size.add_length(1, this->esphome_version_ref_.size());
size.add_length(1, this->compilation_time_ref_.size());
size.add_length(1, this->model_ref_.size());
#ifdef USE_DEEP_SLEEP
size.add_bool(1, this->has_deep_sleep);
#endif
#ifdef ESPHOME_PROJECT_NAME
size.add_string(1, this->project_name_ref_.size());
size.add_length(1, this->project_name_ref_.size());
#endif
#ifdef ESPHOME_PROJECT_NAME
size.add_string(1, this->project_version_ref_.size());
size.add_length(1, this->project_version_ref_.size());
#endif
#ifdef USE_WEBSERVER
size.add_uint32(1, this->webserver_port);
@ -152,16 +152,16 @@ void DeviceInfoResponse::calculate_size(ProtoSize &size) const {
#ifdef USE_BLUETOOTH_PROXY
size.add_uint32(1, this->bluetooth_proxy_feature_flags);
#endif
size.add_string(1, this->manufacturer_ref_.size());
size.add_string(1, this->friendly_name_ref_.size());
size.add_length(1, this->manufacturer_ref_.size());
size.add_length(1, this->friendly_name_ref_.size());
#ifdef USE_VOICE_ASSISTANT
size.add_uint32(2, this->voice_assistant_feature_flags);
#endif
#ifdef USE_AREAS
size.add_string(2, this->suggested_area_ref_.size());
size.add_length(2, this->suggested_area_ref_.size());
#endif
#ifdef USE_BLUETOOTH_PROXY
size.add_string(2, this->bluetooth_mac_address_ref_.size());
size.add_length(2, this->bluetooth_mac_address_ref_.size());
#endif
#ifdef USE_API_NOISE
size.add_bool(2, this->api_encryption_supported);
@ -193,14 +193,14 @@ void ListEntitiesBinarySensorResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesBinarySensorResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_string(1, this->device_class_ref_.size());
size.add_length(1, this->name_ref_.size());
size.add_length(1, this->device_class_ref_.size());
size.add_bool(1, this->is_status_binary_sensor);
size.add_bool(1, this->disabled_by_default);
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
#ifdef USE_DEVICES
@ -244,16 +244,16 @@ void ListEntitiesCoverResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesCoverResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
size.add_bool(1, this->assumed_state);
size.add_bool(1, this->supports_position);
size.add_bool(1, this->supports_tilt);
size.add_string(1, this->device_class_ref_.size());
size.add_length(1, this->device_class_ref_.size());
size.add_bool(1, this->disabled_by_default);
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
size.add_bool(1, this->supports_stop);
@ -339,21 +339,21 @@ void ListEntitiesFanResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesFanResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
size.add_bool(1, this->supports_oscillation);
size.add_bool(1, this->supports_speed);
size.add_bool(1, this->supports_direction);
size.add_int32(1, this->supported_speed_count);
size.add_bool(1, this->disabled_by_default);
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
if (!this->supported_preset_modes.empty()) {
for (const auto &it : this->supported_preset_modes) {
size.add_string_repeated(1, it);
size.add_length_repeated(1, it.size());
}
}
#ifdef USE_DEVICES
@ -377,7 +377,7 @@ void FanStateResponse::calculate_size(ProtoSize &size) const {
size.add_bool(1, this->oscillating);
size.add_uint32(1, static_cast<uint32_t>(this->direction));
size.add_int32(1, this->speed_level);
size.add_string(1, this->preset_mode_ref_.size());
size.add_length(1, this->preset_mode_ref_.size());
#ifdef USE_DEVICES
size.add_uint32(1, this->device_id);
#endif
@ -465,9 +465,9 @@ void ListEntitiesLightResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesLightResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
if (!this->supported_color_modes.empty()) {
for (const auto &it : this->supported_color_modes) {
size.add_uint32_repeated(1, static_cast<uint32_t>(it));
@ -477,12 +477,12 @@ void ListEntitiesLightResponse::calculate_size(ProtoSize &size) const {
size.add_float(1, this->max_mireds);
if (!this->effects.empty()) {
for (const auto &it : this->effects) {
size.add_string_repeated(1, it);
size.add_length_repeated(1, it.size());
}
}
size.add_bool(1, this->disabled_by_default);
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
#ifdef USE_DEVICES
@ -520,7 +520,7 @@ void LightStateResponse::calculate_size(ProtoSize &size) const {
size.add_float(1, this->color_temperature);
size.add_float(1, this->cold_white);
size.add_float(1, this->warm_white);
size.add_string(1, this->effect_ref_.size());
size.add_length(1, this->effect_ref_.size());
#ifdef USE_DEVICES
size.add_uint32(1, this->device_id);
#endif
@ -653,16 +653,16 @@ void ListEntitiesSensorResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesSensorResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_string(1, this->unit_of_measurement_ref_.size());
size.add_length(1, this->unit_of_measurement_ref_.size());
size.add_int32(1, this->accuracy_decimals);
size.add_bool(1, this->force_update);
size.add_string(1, this->device_class_ref_.size());
size.add_length(1, this->device_class_ref_.size());
size.add_uint32(1, static_cast<uint32_t>(this->state_class));
size.add_bool(1, this->disabled_by_default);
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
@ -704,16 +704,16 @@ void ListEntitiesSwitchResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesSwitchResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_bool(1, this->assumed_state);
size.add_bool(1, this->disabled_by_default);
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
size.add_string(1, this->device_class_ref_.size());
size.add_length(1, this->device_class_ref_.size());
#ifdef USE_DEVICES
size.add_uint32(1, this->device_id);
#endif
@ -774,15 +774,15 @@ void ListEntitiesTextSensorResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesTextSensorResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_bool(1, this->disabled_by_default);
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
size.add_string(1, this->device_class_ref_.size());
size.add_length(1, this->device_class_ref_.size());
#ifdef USE_DEVICES
size.add_uint32(1, this->device_id);
#endif
@ -797,7 +797,7 @@ void TextSensorStateResponse::encode(ProtoWriteBuffer buffer) const {
}
void TextSensorStateResponse::calculate_size(ProtoSize &size) const {
size.add_fixed32(1, this->key);
size.add_string(1, this->state_ref_.size());
size.add_length(1, this->state_ref_.size());
size.add_bool(1, this->missing_state);
#ifdef USE_DEVICES
size.add_uint32(1, this->device_id);
@ -823,7 +823,7 @@ void SubscribeLogsResponse::encode(ProtoWriteBuffer buffer) const {
}
void SubscribeLogsResponse::calculate_size(ProtoSize &size) const {
size.add_uint32(1, static_cast<uint32_t>(this->level));
size.add_bytes(1, this->message_len_);
size.add_length(1, this->message_len_);
}
#ifdef USE_API_NOISE
bool NoiseEncryptionSetKeyRequest::decode_length(uint32_t field_id, ProtoLengthDelimited value) {
@ -844,8 +844,8 @@ void HomeassistantServiceMap::encode(ProtoWriteBuffer buffer) const {
buffer.encode_string(2, this->value_ref_);
}
void HomeassistantServiceMap::calculate_size(ProtoSize &size) const {
size.add_string(1, this->key_ref_.size());
size.add_string(1, this->value_ref_.size());
size.add_length(1, this->key_ref_.size());
size.add_length(1, this->value_ref_.size());
}
void HomeassistantServiceResponse::encode(ProtoWriteBuffer buffer) const {
buffer.encode_string(1, this->service_ref_);
@ -861,7 +861,7 @@ void HomeassistantServiceResponse::encode(ProtoWriteBuffer buffer) const {
buffer.encode_bool(5, this->is_event);
}
void HomeassistantServiceResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->service_ref_.size());
size.add_length(1, this->service_ref_.size());
size.add_repeated_message(1, this->data);
size.add_repeated_message(1, this->data_template);
size.add_repeated_message(1, this->variables);
@ -874,8 +874,8 @@ void SubscribeHomeAssistantStateResponse::encode(ProtoWriteBuffer buffer) const
buffer.encode_bool(3, this->once);
}
void SubscribeHomeAssistantStateResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->entity_id_ref_.size());
size.add_string(1, this->attribute_ref_.size());
size.add_length(1, this->entity_id_ref_.size());
size.add_length(1, this->attribute_ref_.size());
size.add_bool(1, this->once);
}
bool HomeAssistantStateResponse::decode_length(uint32_t field_id, ProtoLengthDelimited value) {
@ -913,7 +913,7 @@ void ListEntitiesServicesArgument::encode(ProtoWriteBuffer buffer) const {
buffer.encode_uint32(2, static_cast<uint32_t>(this->type));
}
void ListEntitiesServicesArgument::calculate_size(ProtoSize &size) const {
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
size.add_uint32(1, static_cast<uint32_t>(this->type));
}
void ListEntitiesServicesResponse::encode(ProtoWriteBuffer buffer) const {
@ -924,7 +924,7 @@ void ListEntitiesServicesResponse::encode(ProtoWriteBuffer buffer) const {
}
}
void ListEntitiesServicesResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
size.add_fixed32(1, this->key);
size.add_repeated_message(1, this->args);
}
@ -1013,12 +1013,12 @@ void ListEntitiesCameraResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesCameraResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
size.add_bool(1, this->disabled_by_default);
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
#ifdef USE_DEVICES
@ -1035,7 +1035,7 @@ void CameraImageResponse::encode(ProtoWriteBuffer buffer) const {
}
void CameraImageResponse::calculate_size(ProtoSize &size) const {
size.add_fixed32(1, this->key);
size.add_bytes(1, this->data_len_);
size.add_length(1, this->data_len_);
size.add_bool(1, this->done);
#ifdef USE_DEVICES
size.add_uint32(1, this->device_id);
@ -1099,9 +1099,9 @@ void ListEntitiesClimateResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesClimateResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
size.add_bool(1, this->supports_current_temperature);
size.add_bool(1, this->supports_two_point_target_temperature);
if (!this->supported_modes.empty()) {
@ -1125,7 +1125,7 @@ void ListEntitiesClimateResponse::calculate_size(ProtoSize &size) const {
}
if (!this->supported_custom_fan_modes.empty()) {
for (const auto &it : this->supported_custom_fan_modes) {
size.add_string_repeated(1, it);
size.add_length_repeated(1, it.size());
}
}
if (!this->supported_presets.empty()) {
@ -1135,12 +1135,12 @@ void ListEntitiesClimateResponse::calculate_size(ProtoSize &size) const {
}
if (!this->supported_custom_presets.empty()) {
for (const auto &it : this->supported_custom_presets) {
size.add_string_repeated(2, it);
size.add_length_repeated(2, it.size());
}
}
size.add_bool(2, this->disabled_by_default);
#ifdef USE_ENTITY_ICON
size.add_string(2, this->icon_ref_.size());
size.add_length(2, this->icon_ref_.size());
#endif
size.add_uint32(2, static_cast<uint32_t>(this->entity_category));
size.add_float(2, this->visual_current_temperature_step);
@ -1181,9 +1181,9 @@ void ClimateStateResponse::calculate_size(ProtoSize &size) const {
size.add_uint32(1, static_cast<uint32_t>(this->action));
size.add_uint32(1, static_cast<uint32_t>(this->fan_mode));
size.add_uint32(1, static_cast<uint32_t>(this->swing_mode));
size.add_string(1, this->custom_fan_mode_ref_.size());
size.add_length(1, this->custom_fan_mode_ref_.size());
size.add_uint32(1, static_cast<uint32_t>(this->preset));
size.add_string(1, this->custom_preset_ref_.size());
size.add_length(1, this->custom_preset_ref_.size());
size.add_float(1, this->current_humidity);
size.add_float(1, this->target_humidity);
#ifdef USE_DEVICES
@ -1301,20 +1301,20 @@ void ListEntitiesNumberResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesNumberResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_float(1, this->min_value);
size.add_float(1, this->max_value);
size.add_float(1, this->step);
size.add_bool(1, this->disabled_by_default);
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
size.add_string(1, this->unit_of_measurement_ref_.size());
size.add_length(1, this->unit_of_measurement_ref_.size());
size.add_uint32(1, static_cast<uint32_t>(this->mode));
size.add_string(1, this->device_class_ref_.size());
size.add_length(1, this->device_class_ref_.size());
#ifdef USE_DEVICES
size.add_uint32(1, this->device_id);
#endif
@ -1379,15 +1379,15 @@ void ListEntitiesSelectResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesSelectResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
if (!this->options.empty()) {
for (const auto &it : this->options) {
size.add_string_repeated(1, it);
size.add_length_repeated(1, it.size());
}
}
size.add_bool(1, this->disabled_by_default);
@ -1406,7 +1406,7 @@ void SelectStateResponse::encode(ProtoWriteBuffer buffer) const {
}
void SelectStateResponse::calculate_size(ProtoSize &size) const {
size.add_fixed32(1, this->key);
size.add_string(1, this->state_ref_.size());
size.add_length(1, this->state_ref_.size());
size.add_bool(1, this->missing_state);
#ifdef USE_DEVICES
size.add_uint32(1, this->device_id);
@ -1465,16 +1465,16 @@ void ListEntitiesSirenResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesSirenResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_bool(1, this->disabled_by_default);
if (!this->tones.empty()) {
for (const auto &it : this->tones) {
size.add_string_repeated(1, it);
size.add_length_repeated(1, it.size());
}
}
size.add_bool(1, this->supports_duration);
@ -1571,18 +1571,18 @@ void ListEntitiesLockResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesLockResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_bool(1, this->disabled_by_default);
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
size.add_bool(1, this->assumed_state);
size.add_bool(1, this->supports_open);
size.add_bool(1, this->requires_code);
size.add_string(1, this->code_format_ref_.size());
size.add_length(1, this->code_format_ref_.size());
#ifdef USE_DEVICES
size.add_uint32(1, this->device_id);
#endif
@ -1656,15 +1656,15 @@ void ListEntitiesButtonResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesButtonResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_bool(1, this->disabled_by_default);
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
size.add_string(1, this->device_class_ref_.size());
size.add_length(1, this->device_class_ref_.size());
#ifdef USE_DEVICES
size.add_uint32(1, this->device_id);
#endif
@ -1701,7 +1701,7 @@ void MediaPlayerSupportedFormat::encode(ProtoWriteBuffer buffer) const {
buffer.encode_uint32(5, this->sample_bytes);
}
void MediaPlayerSupportedFormat::calculate_size(ProtoSize &size) const {
size.add_string(1, this->format_ref_.size());
size.add_length(1, this->format_ref_.size());
size.add_uint32(1, this->sample_rate);
size.add_uint32(1, this->num_channels);
size.add_uint32(1, static_cast<uint32_t>(this->purpose));
@ -1725,11 +1725,11 @@ void ListEntitiesMediaPlayerResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesMediaPlayerResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_bool(1, this->disabled_by_default);
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
@ -1832,7 +1832,7 @@ void BluetoothLERawAdvertisement::calculate_size(ProtoSize &size) const {
size.add_uint64(1, this->address);
size.add_sint32(1, this->rssi);
size.add_uint32(1, this->address_type);
size.add_bytes(1, this->data_len);
size.add_length(1, this->data_len);
}
void BluetoothLERawAdvertisementsResponse::encode(ProtoWriteBuffer buffer) const {
for (auto &it : this->advertisements) {
@ -1956,7 +1956,7 @@ void BluetoothGATTReadResponse::encode(ProtoWriteBuffer buffer) const {
void BluetoothGATTReadResponse::calculate_size(ProtoSize &size) const {
size.add_uint64(1, this->address);
size.add_uint32(1, this->handle);
size.add_bytes(1, this->data_len_);
size.add_length(1, this->data_len_);
}
bool BluetoothGATTWriteRequest::decode_varint(uint32_t field_id, ProtoVarInt value) {
switch (field_id) {
@ -2044,7 +2044,7 @@ void BluetoothGATTNotifyDataResponse::encode(ProtoWriteBuffer buffer) const {
void BluetoothGATTNotifyDataResponse::calculate_size(ProtoSize &size) const {
size.add_uint64(1, this->address);
size.add_uint32(1, this->handle);
size.add_bytes(1, this->data_len_);
size.add_length(1, this->data_len_);
}
void BluetoothConnectionsFreeResponse::encode(ProtoWriteBuffer buffer) const {
buffer.encode_uint32(1, this->free);
@ -2170,10 +2170,10 @@ void VoiceAssistantRequest::encode(ProtoWriteBuffer buffer) const {
}
void VoiceAssistantRequest::calculate_size(ProtoSize &size) const {
size.add_bool(1, this->start);
size.add_string(1, this->conversation_id_ref_.size());
size.add_length(1, this->conversation_id_ref_.size());
size.add_uint32(1, this->flags);
size.add_message_object(1, this->audio_settings);
size.add_string(1, this->wake_word_phrase_ref_.size());
size.add_length(1, this->wake_word_phrase_ref_.size());
}
bool VoiceAssistantResponse::decode_varint(uint32_t field_id, ProtoVarInt value) {
switch (field_id) {
@ -2247,7 +2247,7 @@ void VoiceAssistantAudio::encode(ProtoWriteBuffer buffer) const {
buffer.encode_bool(2, this->end);
}
void VoiceAssistantAudio::calculate_size(ProtoSize &size) const {
size.add_bytes(1, this->data_len_);
size.add_length(1, this->data_len_);
size.add_bool(1, this->end);
}
bool VoiceAssistantTimerEventResponse::decode_varint(uint32_t field_id, ProtoVarInt value) {
@ -2318,11 +2318,11 @@ void VoiceAssistantWakeWord::encode(ProtoWriteBuffer buffer) const {
}
}
void VoiceAssistantWakeWord::calculate_size(ProtoSize &size) const {
size.add_string(1, this->id_ref_.size());
size.add_string(1, this->wake_word_ref_.size());
size.add_length(1, this->id_ref_.size());
size.add_length(1, this->wake_word_ref_.size());
if (!this->trained_languages.empty()) {
for (const auto &it : this->trained_languages) {
size.add_string_repeated(1, it);
size.add_length_repeated(1, it.size());
}
}
}
@ -2339,7 +2339,7 @@ void VoiceAssistantConfigurationResponse::calculate_size(ProtoSize &size) const
size.add_repeated_message(1, this->available_wake_words);
if (!this->active_wake_words.empty()) {
for (const auto &it : this->active_wake_words) {
size.add_string_repeated(1, it);
size.add_length_repeated(1, it.size());
}
}
size.add_uint32(1, this->max_active_wake_words);
@ -2373,11 +2373,11 @@ void ListEntitiesAlarmControlPanelResponse::encode(ProtoWriteBuffer buffer) cons
#endif
}
void ListEntitiesAlarmControlPanelResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_bool(1, this->disabled_by_default);
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
@ -2457,17 +2457,17 @@ void ListEntitiesTextResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesTextResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_bool(1, this->disabled_by_default);
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
size.add_uint32(1, this->min_length);
size.add_uint32(1, this->max_length);
size.add_string(1, this->pattern_ref_.size());
size.add_length(1, this->pattern_ref_.size());
size.add_uint32(1, static_cast<uint32_t>(this->mode));
#ifdef USE_DEVICES
size.add_uint32(1, this->device_id);
@ -2483,7 +2483,7 @@ void TextStateResponse::encode(ProtoWriteBuffer buffer) const {
}
void TextStateResponse::calculate_size(ProtoSize &size) const {
size.add_fixed32(1, this->key);
size.add_string(1, this->state_ref_.size());
size.add_length(1, this->state_ref_.size());
size.add_bool(1, this->missing_state);
#ifdef USE_DEVICES
size.add_uint32(1, this->device_id);
@ -2537,11 +2537,11 @@ void ListEntitiesDateResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesDateResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_bool(1, this->disabled_by_default);
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
@ -2616,11 +2616,11 @@ void ListEntitiesTimeResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesTimeResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_bool(1, this->disabled_by_default);
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
@ -2699,18 +2699,18 @@ void ListEntitiesEventResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesEventResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_bool(1, this->disabled_by_default);
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
size.add_string(1, this->device_class_ref_.size());
size.add_length(1, this->device_class_ref_.size());
if (!this->event_types.empty()) {
for (const auto &it : this->event_types) {
size.add_string_repeated(1, it);
size.add_length_repeated(1, it.size());
}
}
#ifdef USE_DEVICES
@ -2726,7 +2726,7 @@ void EventResponse::encode(ProtoWriteBuffer buffer) const {
}
void EventResponse::calculate_size(ProtoSize &size) const {
size.add_fixed32(1, this->key);
size.add_string(1, this->event_type_ref_.size());
size.add_length(1, this->event_type_ref_.size());
#ifdef USE_DEVICES
size.add_uint32(1, this->device_id);
#endif
@ -2751,15 +2751,15 @@ void ListEntitiesValveResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesValveResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_bool(1, this->disabled_by_default);
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
size.add_string(1, this->device_class_ref_.size());
size.add_length(1, this->device_class_ref_.size());
size.add_bool(1, this->assumed_state);
size.add_bool(1, this->supports_position);
size.add_bool(1, this->supports_stop);
@ -2830,11 +2830,11 @@ void ListEntitiesDateTimeResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesDateTimeResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_bool(1, this->disabled_by_default);
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
@ -2900,15 +2900,15 @@ void ListEntitiesUpdateResponse::encode(ProtoWriteBuffer buffer) const {
#endif
}
void ListEntitiesUpdateResponse::calculate_size(ProtoSize &size) const {
size.add_string(1, this->object_id_ref_.size());
size.add_length(1, this->object_id_ref_.size());
size.add_fixed32(1, this->key);
size.add_string(1, this->name_ref_.size());
size.add_length(1, this->name_ref_.size());
#ifdef USE_ENTITY_ICON
size.add_string(1, this->icon_ref_.size());
size.add_length(1, this->icon_ref_.size());
#endif
size.add_bool(1, this->disabled_by_default);
size.add_uint32(1, static_cast<uint32_t>(this->entity_category));
size.add_string(1, this->device_class_ref_.size());
size.add_length(1, this->device_class_ref_.size());
#ifdef USE_DEVICES
size.add_uint32(1, this->device_id);
#endif
@ -2934,11 +2934,11 @@ void UpdateStateResponse::calculate_size(ProtoSize &size) const {
size.add_bool(1, this->in_progress);
size.add_bool(1, this->has_progress);
size.add_float(1, this->progress);
size.add_string(1, this->current_version_ref_.size());
size.add_string(1, this->latest_version_ref_.size());
size.add_string(1, this->title_ref_.size());
size.add_string(1, this->release_summary_ref_.size());
size.add_string(1, this->release_url_ref_.size());
size.add_length(1, this->current_version_ref_.size());
size.add_length(1, this->latest_version_ref_.size());
size.add_length(1, this->title_ref_.size());
size.add_length(1, this->release_summary_ref_.size());
size.add_length(1, this->release_url_ref_.size());
#ifdef USE_DEVICES
size.add_uint32(1, this->device_id);
#endif

View File

@ -686,32 +686,10 @@ class ProtoSize {
// sint64 type is not supported by ESPHome API to reduce overhead on embedded systems
/**
* @brief Calculates and adds the size of a string field using length
* @brief Calculates and adds the size of a length-delimited field (string/bytes) to the total message size
*/
inline void add_string(uint32_t field_id_size, size_t len) {
// Skip calculation if string is empty
if (len == 0) {
return; // No need to update total_size_
}
// Field ID + length varint + string bytes
total_size_ += field_id_size + varint(static_cast<uint32_t>(len)) + static_cast<uint32_t>(len);
}
/**
* @brief Calculates and adds the size of a string/bytes field to the total message size (repeated field version)
*/
inline void add_string_repeated(uint32_t field_id_size, const std::string &str) {
// Always calculate size for repeated fields
const uint32_t str_size = static_cast<uint32_t>(str.size());
total_size_ += field_id_size + varint(str_size) + str_size;
}
/**
* @brief Calculates and adds the size of a bytes field to the total message size
*/
inline void add_bytes(uint32_t field_id_size, size_t len) {
// Skip calculation if bytes is empty
inline void add_length(uint32_t field_id_size, size_t len) {
// Skip calculation if length is zero
if (len == 0) {
return; // No need to update total_size_
}
@ -721,9 +699,10 @@ class ProtoSize {
}
/**
* @brief Calculates and adds the size of a bytes field to the total message size (repeated field version)
* @brief Calculates and adds the size of a length-delimited field (string/bytes) to the total message size (repeated
* field version)
*/
inline void add_bytes_repeated(uint32_t field_id_size, size_t len) {
inline void add_length_repeated(uint32_t field_id_size, size_t len) {
// Always calculate size for repeated fields
// Field ID + length varint + data bytes
total_size_ += field_id_size + varint(static_cast<uint32_t>(len)) + static_cast<uint32_t>(len);

View File

@ -624,18 +624,18 @@ class StringType(TypeInfo):
def get_size_calculation(self, name: str, force: bool = False) -> str:
# For SOURCE_CLIENT only messages, use the string field directly
if not self._needs_encode:
return self._get_simple_size_calculation(name, force, "add_string")
return self._get_simple_size_calculation(name, force, "add_length")
# Check if this is being called from a repeated field context
# In that case, 'name' will be 'it' and we need to use the repeated version
if name == "it":
# For repeated fields, we need to use add_string_repeated which includes field ID
# For repeated fields, we need to use add_length_repeated which includes field ID
field_id_size = self.calculate_field_id_size()
return f"size.add_string_repeated({field_id_size}, it);"
return f"size.add_length_repeated({field_id_size}, it.size());"
# For messages that need encoding, use the StringRef size
field_id_size = self.calculate_field_id_size()
return f"size.add_string({field_id_size}, this->{self.field_name}_ref_.size());"
return f"size.add_length({field_id_size}, this->{self.field_name}_ref_.size());"
def get_estimated_size(self) -> int:
return self.calculate_field_id_size() + 8 # field ID + 8 bytes typical string
@ -770,7 +770,7 @@ class BytesType(TypeInfo):
return o
def get_size_calculation(self, name: str, force: bool = False) -> str:
return f"size.add_bytes({self.calculate_field_id_size()}, this->{self.field_name}_len_);"
return f"size.add_length({self.calculate_field_id_size()}, this->{self.field_name}_len_);"
def get_estimated_size(self) -> int:
return self.calculate_field_id_size() + 8 # field ID + 8 bytes typical bytes
@ -846,10 +846,10 @@ class FixedArrayBytesType(TypeInfo):
if force:
# For repeated fields, always calculate size (no zero check)
return f"size.add_bytes_repeated({field_id_size}, {length_field});"
return f"size.add_length_repeated({field_id_size}, {length_field});"
else:
# For non-repeated fields, add_bytes already checks for zero
return f"size.add_bytes({field_id_size}, {length_field});"
# For non-repeated fields, add_length already checks for zero
return f"size.add_length({field_id_size}, {length_field});"
def get_estimated_size(self) -> int:
# Estimate based on typical BLE advertisement size