mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	fix
This commit is contained in:
		| @@ -1923,8 +1923,10 @@ void BluetoothLERawAdvertisement::calculate_size(uint32_t &total_size) const { | |||||||
|   ProtoSize::add_uint64_field(total_size, 1, this->address); |   ProtoSize::add_uint64_field(total_size, 1, this->address); | ||||||
|   ProtoSize::add_sint32_field(total_size, 1, this->rssi); |   ProtoSize::add_sint32_field(total_size, 1, this->rssi); | ||||||
|   ProtoSize::add_uint32_field(total_size, 1, this->address_type); |   ProtoSize::add_uint32_field(total_size, 1, this->address_type); | ||||||
|  |   if (this->data_len != 0) { | ||||||
|     total_size += 1 + ProtoSize::varint(static_cast<uint32_t>(this->data_len)) + this->data_len; |     total_size += 1 + ProtoSize::varint(static_cast<uint32_t>(this->data_len)) + this->data_len; | ||||||
|   } |   } | ||||||
|  | } | ||||||
| void BluetoothLERawAdvertisementsResponse::encode(ProtoWriteBuffer buffer) const { | void BluetoothLERawAdvertisementsResponse::encode(ProtoWriteBuffer buffer) const { | ||||||
|   for (auto &it : this->advertisements) { |   for (auto &it : this->advertisements) { | ||||||
|     buffer.encode_message(1, it, true); |     buffer.encode_message(1, it, true); | ||||||
|   | |||||||
| @@ -663,9 +663,18 @@ class FixedArrayBytesType(TypeInfo): | |||||||
|     def get_size_calculation(self, name: str, force: bool = False) -> str: |     def get_size_calculation(self, name: str, force: bool = False) -> str: | ||||||
|         # Use the actual length stored in the _len field |         # Use the actual length stored in the _len field | ||||||
|         length_field = f"this->{self.field_name}_len" |         length_field = f"this->{self.field_name}_len" | ||||||
|         # Size = field_id_size + varint(length) + actual_data_bytes |  | ||||||
|         field_id_size = self.calculate_field_id_size() |         field_id_size = self.calculate_field_id_size() | ||||||
|         return f"  total_size += {field_id_size} + ProtoSize::varint(static_cast<uint32_t>({length_field})) + {length_field};\n" |  | ||||||
|  |         if force: | ||||||
|  |             # For repeated fields, always calculate size | ||||||
|  |             return f"total_size += {field_id_size} + ProtoSize::varint(static_cast<uint32_t>({length_field})) + {length_field};" | ||||||
|  |         else: | ||||||
|  |             # For non-repeated fields, skip if length is 0 (matching encode_string behavior) | ||||||
|  |             return ( | ||||||
|  |                 f"if ({length_field} != 0) {{\n" | ||||||
|  |                 f"  total_size += {field_id_size} + ProtoSize::varint(static_cast<uint32_t>({length_field})) + {length_field};\n" | ||||||
|  |                 f"}}" | ||||||
|  |             ) | ||||||
|  |  | ||||||
|     def get_estimated_size(self) -> int: |     def get_estimated_size(self) -> int: | ||||||
|         # Estimate based on typical BLE advertisement size |         # Estimate based on typical BLE advertisement size | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user