mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	Merge branch 'integration' into memory_api
This commit is contained in:
		| @@ -56,26 +56,6 @@ void ConnectResponse::encode(ProtoWriteBuffer buffer) const { buffer.encode_bool | |||||||
| void ConnectResponse::calculate_size(uint32_t &total_size) const { | void ConnectResponse::calculate_size(uint32_t &total_size) const { | ||||||
|   ProtoSize::add_bool_field(total_size, 1, this->invalid_password); |   ProtoSize::add_bool_field(total_size, 1, this->invalid_password); | ||||||
| } | } | ||||||
| bool AreaInfo::decode_varint(uint32_t field_id, ProtoVarInt value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 1: |  | ||||||
|       this->area_id = value.as_uint32(); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| bool AreaInfo::decode_length(uint32_t field_id, ProtoLengthDelimited value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 2: |  | ||||||
|       this->name = value.as_string(); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| void AreaInfo::encode(ProtoWriteBuffer buffer) const { | void AreaInfo::encode(ProtoWriteBuffer buffer) const { | ||||||
|   buffer.encode_uint32(1, this->area_id); |   buffer.encode_uint32(1, this->area_id); | ||||||
|   buffer.encode_string(2, this->name); |   buffer.encode_string(2, this->name); | ||||||
| @@ -84,29 +64,6 @@ void AreaInfo::calculate_size(uint32_t &total_size) const { | |||||||
|   ProtoSize::add_uint32_field(total_size, 1, this->area_id); |   ProtoSize::add_uint32_field(total_size, 1, this->area_id); | ||||||
|   ProtoSize::add_string_field(total_size, 1, this->name); |   ProtoSize::add_string_field(total_size, 1, this->name); | ||||||
| } | } | ||||||
| bool DeviceInfo::decode_varint(uint32_t field_id, ProtoVarInt value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 1: |  | ||||||
|       this->device_id = value.as_uint32(); |  | ||||||
|       break; |  | ||||||
|     case 3: |  | ||||||
|       this->area_id = value.as_uint32(); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| bool DeviceInfo::decode_length(uint32_t field_id, ProtoLengthDelimited value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 2: |  | ||||||
|       this->name = value.as_string(); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| void DeviceInfo::encode(ProtoWriteBuffer buffer) const { | void DeviceInfo::encode(ProtoWriteBuffer buffer) const { | ||||||
|   buffer.encode_uint32(1, this->device_id); |   buffer.encode_uint32(1, this->device_id); | ||||||
|   buffer.encode_string(2, this->name); |   buffer.encode_string(2, this->name); | ||||||
| @@ -918,19 +875,6 @@ void NoiseEncryptionSetKeyResponse::calculate_size(uint32_t &total_size) const { | |||||||
|   ProtoSize::add_bool_field(total_size, 1, this->success); |   ProtoSize::add_bool_field(total_size, 1, this->success); | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
| bool HomeassistantServiceMap::decode_length(uint32_t field_id, ProtoLengthDelimited value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 1: |  | ||||||
|       this->key = value.as_string(); |  | ||||||
|       break; |  | ||||||
|     case 2: |  | ||||||
|       this->value = value.as_string(); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| void HomeassistantServiceMap::encode(ProtoWriteBuffer buffer) const { | void HomeassistantServiceMap::encode(ProtoWriteBuffer buffer) const { | ||||||
|   buffer.encode_string(1, this->key); |   buffer.encode_string(1, this->key); | ||||||
|   buffer.encode_string(2, this->value); |   buffer.encode_string(2, this->value); | ||||||
| @@ -1000,26 +944,6 @@ void GetTimeResponse::calculate_size(uint32_t &total_size) const { | |||||||
|   ProtoSize::add_fixed32_field(total_size, 1, this->epoch_seconds); |   ProtoSize::add_fixed32_field(total_size, 1, this->epoch_seconds); | ||||||
| } | } | ||||||
| #ifdef USE_API_SERVICES | #ifdef USE_API_SERVICES | ||||||
| bool ListEntitiesServicesArgument::decode_varint(uint32_t field_id, ProtoVarInt value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 2: |  | ||||||
|       this->type = static_cast<enums::ServiceArgType>(value.as_uint32()); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| bool ListEntitiesServicesArgument::decode_length(uint32_t field_id, ProtoLengthDelimited value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 1: |  | ||||||
|       this->name = value.as_string(); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| void ListEntitiesServicesArgument::encode(ProtoWriteBuffer buffer) const { | void ListEntitiesServicesArgument::encode(ProtoWriteBuffer buffer) const { | ||||||
|   buffer.encode_string(1, this->name); |   buffer.encode_string(1, this->name); | ||||||
|   buffer.encode_uint32(2, static_cast<uint32_t>(this->type)); |   buffer.encode_uint32(2, static_cast<uint32_t>(this->type)); | ||||||
| @@ -1088,50 +1012,6 @@ bool ExecuteServiceArgument::decode_32bit(uint32_t field_id, Proto32Bit value) { | |||||||
|   } |   } | ||||||
|   return true; |   return true; | ||||||
| } | } | ||||||
| void ExecuteServiceArgument::encode(ProtoWriteBuffer buffer) const { |  | ||||||
|   buffer.encode_bool(1, this->bool_); |  | ||||||
|   buffer.encode_int32(2, this->legacy_int); |  | ||||||
|   buffer.encode_float(3, this->float_); |  | ||||||
|   buffer.encode_string(4, this->string_); |  | ||||||
|   buffer.encode_sint32(5, this->int_); |  | ||||||
|   for (auto it : this->bool_array) { |  | ||||||
|     buffer.encode_bool(6, it, true); |  | ||||||
|   } |  | ||||||
|   for (auto &it : this->int_array) { |  | ||||||
|     buffer.encode_sint32(7, it, true); |  | ||||||
|   } |  | ||||||
|   for (auto &it : this->float_array) { |  | ||||||
|     buffer.encode_float(8, it, true); |  | ||||||
|   } |  | ||||||
|   for (auto &it : this->string_array) { |  | ||||||
|     buffer.encode_string(9, it, true); |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| void ExecuteServiceArgument::calculate_size(uint32_t &total_size) const { |  | ||||||
|   ProtoSize::add_bool_field(total_size, 1, this->bool_); |  | ||||||
|   ProtoSize::add_int32_field(total_size, 1, this->legacy_int); |  | ||||||
|   ProtoSize::add_float_field(total_size, 1, this->float_); |  | ||||||
|   ProtoSize::add_string_field(total_size, 1, this->string_); |  | ||||||
|   ProtoSize::add_sint32_field(total_size, 1, this->int_); |  | ||||||
|   if (!this->bool_array.empty()) { |  | ||||||
|     for (const auto it : this->bool_array) { |  | ||||||
|       ProtoSize::add_bool_field_repeated(total_size, 1, it); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   if (!this->int_array.empty()) { |  | ||||||
|     for (const auto &it : this->int_array) { |  | ||||||
|       ProtoSize::add_sint32_field_repeated(total_size, 1, it); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   if (!this->float_array.empty()) { |  | ||||||
|     total_size += this->float_array.size() * 5; |  | ||||||
|   } |  | ||||||
|   if (!this->string_array.empty()) { |  | ||||||
|     for (const auto &it : this->string_array) { |  | ||||||
|       ProtoSize::add_string_field_repeated(total_size, 1, it); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| bool ExecuteServiceRequest::decode_length(uint32_t field_id, ProtoLengthDelimited value) { | bool ExecuteServiceRequest::decode_length(uint32_t field_id, ProtoLengthDelimited value) { | ||||||
|   switch (field_id) { |   switch (field_id) { | ||||||
|     case 2: |     case 2: | ||||||
| @@ -1859,35 +1739,6 @@ bool ButtonCommandRequest::decode_32bit(uint32_t field_id, Proto32Bit value) { | |||||||
| } | } | ||||||
| #endif | #endif | ||||||
| #ifdef USE_MEDIA_PLAYER | #ifdef USE_MEDIA_PLAYER | ||||||
| bool MediaPlayerSupportedFormat::decode_varint(uint32_t field_id, ProtoVarInt value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 2: |  | ||||||
|       this->sample_rate = value.as_uint32(); |  | ||||||
|       break; |  | ||||||
|     case 3: |  | ||||||
|       this->num_channels = value.as_uint32(); |  | ||||||
|       break; |  | ||||||
|     case 4: |  | ||||||
|       this->purpose = static_cast<enums::MediaPlayerFormatPurpose>(value.as_uint32()); |  | ||||||
|       break; |  | ||||||
|     case 5: |  | ||||||
|       this->sample_bytes = value.as_uint32(); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| bool MediaPlayerSupportedFormat::decode_length(uint32_t field_id, ProtoLengthDelimited value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 1: |  | ||||||
|       this->format = value.as_string(); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| void MediaPlayerSupportedFormat::encode(ProtoWriteBuffer buffer) const { | void MediaPlayerSupportedFormat::encode(ProtoWriteBuffer buffer) const { | ||||||
|   buffer.encode_string(1, this->format); |   buffer.encode_string(1, this->format); | ||||||
|   buffer.encode_uint32(2, this->sample_rate); |   buffer.encode_uint32(2, this->sample_rate); | ||||||
| @@ -2017,29 +1868,6 @@ bool SubscribeBluetoothLEAdvertisementsRequest::decode_varint(uint32_t field_id, | |||||||
|   } |   } | ||||||
|   return true; |   return true; | ||||||
| } | } | ||||||
| bool BluetoothServiceData::decode_varint(uint32_t field_id, ProtoVarInt value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 2: |  | ||||||
|       this->legacy_data.push_back(value.as_uint32()); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| bool BluetoothServiceData::decode_length(uint32_t field_id, ProtoLengthDelimited value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 1: |  | ||||||
|       this->uuid = value.as_string(); |  | ||||||
|       break; |  | ||||||
|     case 3: |  | ||||||
|       this->data = value.as_string(); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| void BluetoothServiceData::encode(ProtoWriteBuffer buffer) const { | void BluetoothServiceData::encode(ProtoWriteBuffer buffer) const { | ||||||
|   buffer.encode_string(1, this->uuid); |   buffer.encode_string(1, this->uuid); | ||||||
|   for (auto &it : this->legacy_data) { |   for (auto &it : this->legacy_data) { | ||||||
| @@ -2084,32 +1912,6 @@ void BluetoothLEAdvertisementResponse::calculate_size(uint32_t &total_size) cons | |||||||
|   ProtoSize::add_repeated_message(total_size, 1, this->manufacturer_data); |   ProtoSize::add_repeated_message(total_size, 1, this->manufacturer_data); | ||||||
|   ProtoSize::add_uint32_field(total_size, 1, this->address_type); |   ProtoSize::add_uint32_field(total_size, 1, this->address_type); | ||||||
| } | } | ||||||
| bool BluetoothLERawAdvertisement::decode_varint(uint32_t field_id, ProtoVarInt value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 1: |  | ||||||
|       this->address = value.as_uint64(); |  | ||||||
|       break; |  | ||||||
|     case 2: |  | ||||||
|       this->rssi = value.as_sint32(); |  | ||||||
|       break; |  | ||||||
|     case 3: |  | ||||||
|       this->address_type = value.as_uint32(); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| bool BluetoothLERawAdvertisement::decode_length(uint32_t field_id, ProtoLengthDelimited value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 4: |  | ||||||
|       this->data = value.as_string(); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| void BluetoothLERawAdvertisement::encode(ProtoWriteBuffer buffer) const { | void BluetoothLERawAdvertisement::encode(ProtoWriteBuffer buffer) const { | ||||||
|   buffer.encode_uint64(1, this->address); |   buffer.encode_uint64(1, this->address); | ||||||
|   buffer.encode_sint32(2, this->rssi); |   buffer.encode_sint32(2, this->rssi); | ||||||
| @@ -2171,19 +1973,6 @@ bool BluetoothGATTGetServicesRequest::decode_varint(uint32_t field_id, ProtoVarI | |||||||
|   } |   } | ||||||
|   return true; |   return true; | ||||||
| } | } | ||||||
| bool BluetoothGATTDescriptor::decode_varint(uint32_t field_id, ProtoVarInt value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 1: |  | ||||||
|       this->uuid.push_back(value.as_uint64()); |  | ||||||
|       break; |  | ||||||
|     case 2: |  | ||||||
|       this->handle = value.as_uint32(); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| void BluetoothGATTDescriptor::encode(ProtoWriteBuffer buffer) const { | void BluetoothGATTDescriptor::encode(ProtoWriteBuffer buffer) const { | ||||||
|   for (auto &it : this->uuid) { |   for (auto &it : this->uuid) { | ||||||
|     buffer.encode_uint64(1, it, true); |     buffer.encode_uint64(1, it, true); | ||||||
| @@ -2198,33 +1987,6 @@ void BluetoothGATTDescriptor::calculate_size(uint32_t &total_size) const { | |||||||
|   } |   } | ||||||
|   ProtoSize::add_uint32_field(total_size, 1, this->handle); |   ProtoSize::add_uint32_field(total_size, 1, this->handle); | ||||||
| } | } | ||||||
| bool BluetoothGATTCharacteristic::decode_varint(uint32_t field_id, ProtoVarInt value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 1: |  | ||||||
|       this->uuid.push_back(value.as_uint64()); |  | ||||||
|       break; |  | ||||||
|     case 2: |  | ||||||
|       this->handle = value.as_uint32(); |  | ||||||
|       break; |  | ||||||
|     case 3: |  | ||||||
|       this->properties = value.as_uint32(); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| bool BluetoothGATTCharacteristic::decode_length(uint32_t field_id, ProtoLengthDelimited value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 4: |  | ||||||
|       this->descriptors.emplace_back(); |  | ||||||
|       value.decode_to_message(this->descriptors.back()); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| void BluetoothGATTCharacteristic::encode(ProtoWriteBuffer buffer) const { | void BluetoothGATTCharacteristic::encode(ProtoWriteBuffer buffer) const { | ||||||
|   for (auto &it : this->uuid) { |   for (auto &it : this->uuid) { | ||||||
|     buffer.encode_uint64(1, it, true); |     buffer.encode_uint64(1, it, true); | ||||||
| @@ -2245,30 +2007,6 @@ void BluetoothGATTCharacteristic::calculate_size(uint32_t &total_size) const { | |||||||
|   ProtoSize::add_uint32_field(total_size, 1, this->properties); |   ProtoSize::add_uint32_field(total_size, 1, this->properties); | ||||||
|   ProtoSize::add_repeated_message(total_size, 1, this->descriptors); |   ProtoSize::add_repeated_message(total_size, 1, this->descriptors); | ||||||
| } | } | ||||||
| bool BluetoothGATTService::decode_varint(uint32_t field_id, ProtoVarInt value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 1: |  | ||||||
|       this->uuid.push_back(value.as_uint64()); |  | ||||||
|       break; |  | ||||||
|     case 2: |  | ||||||
|       this->handle = value.as_uint32(); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| bool BluetoothGATTService::decode_length(uint32_t field_id, ProtoLengthDelimited value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 3: |  | ||||||
|       this->characteristics.emplace_back(); |  | ||||||
|       value.decode_to_message(this->characteristics.back()); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| void BluetoothGATTService::encode(ProtoWriteBuffer buffer) const { | void BluetoothGATTService::encode(ProtoWriteBuffer buffer) const { | ||||||
|   for (auto &it : this->uuid) { |   for (auto &it : this->uuid) { | ||||||
|     buffer.encode_uint64(1, it, true); |     buffer.encode_uint64(1, it, true); | ||||||
| @@ -2519,29 +2257,6 @@ bool SubscribeVoiceAssistantRequest::decode_varint(uint32_t field_id, ProtoVarIn | |||||||
|   } |   } | ||||||
|   return true; |   return true; | ||||||
| } | } | ||||||
| bool VoiceAssistantAudioSettings::decode_varint(uint32_t field_id, ProtoVarInt value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 1: |  | ||||||
|       this->noise_suppression_level = value.as_uint32(); |  | ||||||
|       break; |  | ||||||
|     case 2: |  | ||||||
|       this->auto_gain = value.as_uint32(); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| bool VoiceAssistantAudioSettings::decode_32bit(uint32_t field_id, Proto32Bit value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 3: |  | ||||||
|       this->volume_multiplier = value.as_float(); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| void VoiceAssistantAudioSettings::encode(ProtoWriteBuffer buffer) const { | void VoiceAssistantAudioSettings::encode(ProtoWriteBuffer buffer) const { | ||||||
|   buffer.encode_uint32(1, this->noise_suppression_level); |   buffer.encode_uint32(1, this->noise_suppression_level); | ||||||
|   buffer.encode_uint32(2, this->auto_gain); |   buffer.encode_uint32(2, this->auto_gain); | ||||||
| @@ -2592,14 +2307,6 @@ bool VoiceAssistantEventData::decode_length(uint32_t field_id, ProtoLengthDelimi | |||||||
|   } |   } | ||||||
|   return true; |   return true; | ||||||
| } | } | ||||||
| void VoiceAssistantEventData::encode(ProtoWriteBuffer buffer) const { |  | ||||||
|   buffer.encode_string(1, this->name); |  | ||||||
|   buffer.encode_string(2, this->value); |  | ||||||
| } |  | ||||||
| void VoiceAssistantEventData::calculate_size(uint32_t &total_size) const { |  | ||||||
|   ProtoSize::add_string_field(total_size, 1, this->name); |  | ||||||
|   ProtoSize::add_string_field(total_size, 1, this->value); |  | ||||||
| } |  | ||||||
| bool VoiceAssistantEventResponse::decode_varint(uint32_t field_id, ProtoVarInt value) { | bool VoiceAssistantEventResponse::decode_varint(uint32_t field_id, ProtoVarInt value) { | ||||||
|   switch (field_id) { |   switch (field_id) { | ||||||
|     case 1: |     case 1: | ||||||
| @@ -2711,22 +2418,6 @@ void VoiceAssistantAnnounceFinished::encode(ProtoWriteBuffer buffer) const { buf | |||||||
| void VoiceAssistantAnnounceFinished::calculate_size(uint32_t &total_size) const { | void VoiceAssistantAnnounceFinished::calculate_size(uint32_t &total_size) const { | ||||||
|   ProtoSize::add_bool_field(total_size, 1, this->success); |   ProtoSize::add_bool_field(total_size, 1, this->success); | ||||||
| } | } | ||||||
| bool VoiceAssistantWakeWord::decode_length(uint32_t field_id, ProtoLengthDelimited value) { |  | ||||||
|   switch (field_id) { |  | ||||||
|     case 1: |  | ||||||
|       this->id = value.as_string(); |  | ||||||
|       break; |  | ||||||
|     case 2: |  | ||||||
|       this->wake_word = value.as_string(); |  | ||||||
|       break; |  | ||||||
|     case 3: |  | ||||||
|       this->trained_languages.push_back(value.as_string()); |  | ||||||
|       break; |  | ||||||
|     default: |  | ||||||
|       return false; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| void VoiceAssistantWakeWord::encode(ProtoWriteBuffer buffer) const { | void VoiceAssistantWakeWord::encode(ProtoWriteBuffer buffer) const { | ||||||
|   buffer.encode_string(1, this->id); |   buffer.encode_string(1, this->id); | ||||||
|   buffer.encode_string(2, this->wake_word); |   buffer.encode_string(2, this->wake_word); | ||||||
|   | |||||||
| @@ -308,7 +308,7 @@ class StateResponseProtoMessage : public ProtoMessage { | |||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class CommandProtoMessage : public ProtoMessage { | class CommandProtoMessage : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   ~CommandProtoMessage() override = default; |   ~CommandProtoMessage() override = default; | ||||||
|   uint32_t key{0}; |   uint32_t key{0}; | ||||||
| @@ -316,7 +316,7 @@ class CommandProtoMessage : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class HelloRequest : public ProtoMessage { | class HelloRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 1; |   static constexpr uint8_t MESSAGE_TYPE = 1; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 17; |   static constexpr uint8_t ESTIMATED_SIZE = 17; | ||||||
| @@ -353,7 +353,7 @@ class HelloResponse : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class ConnectRequest : public ProtoMessage { | class ConnectRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 3; |   static constexpr uint8_t MESSAGE_TYPE = 3; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 9; |   static constexpr uint8_t ESTIMATED_SIZE = 9; | ||||||
| @@ -384,7 +384,7 @@ class ConnectResponse : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class DisconnectRequest : public ProtoMessage { | class DisconnectRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 5; |   static constexpr uint8_t MESSAGE_TYPE = 5; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 0; |   static constexpr uint8_t ESTIMATED_SIZE = 0; | ||||||
| @@ -397,7 +397,7 @@ class DisconnectRequest : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class DisconnectResponse : public ProtoMessage { | class DisconnectResponse : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 6; |   static constexpr uint8_t MESSAGE_TYPE = 6; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 0; |   static constexpr uint8_t ESTIMATED_SIZE = 0; | ||||||
| @@ -410,7 +410,7 @@ class DisconnectResponse : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class PingRequest : public ProtoMessage { | class PingRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 7; |   static constexpr uint8_t MESSAGE_TYPE = 7; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 0; |   static constexpr uint8_t ESTIMATED_SIZE = 0; | ||||||
| @@ -423,7 +423,7 @@ class PingRequest : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class PingResponse : public ProtoMessage { | class PingResponse : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 8; |   static constexpr uint8_t MESSAGE_TYPE = 8; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 0; |   static constexpr uint8_t ESTIMATED_SIZE = 0; | ||||||
| @@ -436,7 +436,7 @@ class PingResponse : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class DeviceInfoRequest : public ProtoMessage { | class DeviceInfoRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 9; |   static constexpr uint8_t MESSAGE_TYPE = 9; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 0; |   static constexpr uint8_t ESTIMATED_SIZE = 0; | ||||||
| @@ -460,8 +460,6 @@ class AreaInfo : public ProtoMessage { | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; |  | ||||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; |  | ||||||
| }; | }; | ||||||
| class DeviceInfo : public ProtoMessage { | class DeviceInfo : public ProtoMessage { | ||||||
|  public: |  public: | ||||||
| @@ -475,8 +473,6 @@ class DeviceInfo : public ProtoMessage { | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; |  | ||||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; |  | ||||||
| }; | }; | ||||||
| class DeviceInfoResponse : public ProtoMessage { | class DeviceInfoResponse : public ProtoMessage { | ||||||
|  public: |  public: | ||||||
| @@ -543,7 +539,7 @@ class DeviceInfoResponse : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class ListEntitiesRequest : public ProtoMessage { | class ListEntitiesRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 11; |   static constexpr uint8_t MESSAGE_TYPE = 11; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 0; |   static constexpr uint8_t ESTIMATED_SIZE = 0; | ||||||
| @@ -569,7 +565,7 @@ class ListEntitiesDoneResponse : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class SubscribeStatesRequest : public ProtoMessage { | class SubscribeStatesRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 20; |   static constexpr uint8_t MESSAGE_TYPE = 20; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 0; |   static constexpr uint8_t ESTIMATED_SIZE = 0; | ||||||
| @@ -972,7 +968,7 @@ class TextSensorStateResponse : public StateResponseProtoMessage { | |||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| #endif | #endif | ||||||
| class SubscribeLogsRequest : public ProtoMessage { | class SubscribeLogsRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 28; |   static constexpr uint8_t MESSAGE_TYPE = 28; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 4; |   static constexpr uint8_t ESTIMATED_SIZE = 4; | ||||||
| @@ -1007,7 +1003,7 @@ class SubscribeLogsResponse : public ProtoMessage { | |||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| #ifdef USE_API_NOISE | #ifdef USE_API_NOISE | ||||||
| class NoiseEncryptionSetKeyRequest : public ProtoMessage { | class NoiseEncryptionSetKeyRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 124; |   static constexpr uint8_t MESSAGE_TYPE = 124; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 9; |   static constexpr uint8_t ESTIMATED_SIZE = 9; | ||||||
| @@ -1039,7 +1035,7 @@ class NoiseEncryptionSetKeyResponse : public ProtoMessage { | |||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| #endif | #endif | ||||||
| class SubscribeHomeassistantServicesRequest : public ProtoMessage { | class SubscribeHomeassistantServicesRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 34; |   static constexpr uint8_t MESSAGE_TYPE = 34; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 0; |   static constexpr uint8_t ESTIMATED_SIZE = 0; | ||||||
| @@ -1063,7 +1059,6 @@ class HomeassistantServiceMap : public ProtoMessage { | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; |  | ||||||
| }; | }; | ||||||
| class HomeassistantServiceResponse : public ProtoMessage { | class HomeassistantServiceResponse : public ProtoMessage { | ||||||
|  public: |  public: | ||||||
| @@ -1085,7 +1080,7 @@ class HomeassistantServiceResponse : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class SubscribeHomeAssistantStatesRequest : public ProtoMessage { | class SubscribeHomeAssistantStatesRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 38; |   static constexpr uint8_t MESSAGE_TYPE = 38; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 0; |   static constexpr uint8_t ESTIMATED_SIZE = 0; | ||||||
| @@ -1116,7 +1111,7 @@ class SubscribeHomeAssistantStateResponse : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class HomeAssistantStateResponse : public ProtoMessage { | class HomeAssistantStateResponse : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 40; |   static constexpr uint8_t MESSAGE_TYPE = 40; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 27; |   static constexpr uint8_t ESTIMATED_SIZE = 27; | ||||||
| @@ -1133,7 +1128,7 @@ class HomeAssistantStateResponse : public ProtoMessage { | |||||||
|  protected: |  protected: | ||||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; |   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||||
| }; | }; | ||||||
| class GetTimeRequest : public ProtoMessage { | class GetTimeRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 36; |   static constexpr uint8_t MESSAGE_TYPE = 36; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 0; |   static constexpr uint8_t ESTIMATED_SIZE = 0; | ||||||
| @@ -1146,7 +1141,7 @@ class GetTimeRequest : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class GetTimeResponse : public ProtoMessage { | class GetTimeResponse : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 37; |   static constexpr uint8_t MESSAGE_TYPE = 37; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 5; |   static constexpr uint8_t ESTIMATED_SIZE = 5; | ||||||
| @@ -1175,8 +1170,6 @@ class ListEntitiesServicesArgument : public ProtoMessage { | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; |  | ||||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; |  | ||||||
| }; | }; | ||||||
| class ListEntitiesServicesResponse : public ProtoMessage { | class ListEntitiesServicesResponse : public ProtoMessage { | ||||||
|  public: |  public: | ||||||
| @@ -1196,7 +1189,7 @@ class ListEntitiesServicesResponse : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class ExecuteServiceArgument : public ProtoMessage { | class ExecuteServiceArgument : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   bool bool_{false}; |   bool bool_{false}; | ||||||
|   int32_t legacy_int{0}; |   int32_t legacy_int{0}; | ||||||
| @@ -1207,8 +1200,6 @@ class ExecuteServiceArgument : public ProtoMessage { | |||||||
|   std::vector<int32_t> int_array{}; |   std::vector<int32_t> int_array{}; | ||||||
|   std::vector<float> float_array{}; |   std::vector<float> float_array{}; | ||||||
|   std::vector<std::string> string_array{}; |   std::vector<std::string> string_array{}; | ||||||
|   void encode(ProtoWriteBuffer buffer) const override; |  | ||||||
|   void calculate_size(uint32_t &total_size) const override; |  | ||||||
| #ifdef HAS_PROTO_MESSAGE_DUMP | #ifdef HAS_PROTO_MESSAGE_DUMP | ||||||
|   void dump_to(std::string &out) const override; |   void dump_to(std::string &out) const override; | ||||||
| #endif | #endif | ||||||
| @@ -1218,7 +1209,7 @@ class ExecuteServiceArgument : public ProtoMessage { | |||||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; |   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; |   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||||
| }; | }; | ||||||
| class ExecuteServiceRequest : public ProtoMessage { | class ExecuteServiceRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 42; |   static constexpr uint8_t MESSAGE_TYPE = 42; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 39; |   static constexpr uint8_t ESTIMATED_SIZE = 39; | ||||||
| @@ -1269,7 +1260,7 @@ class CameraImageResponse : public StateResponseProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class CameraImageRequest : public ProtoMessage { | class CameraImageRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 45; |   static constexpr uint8_t MESSAGE_TYPE = 45; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 4; |   static constexpr uint8_t ESTIMATED_SIZE = 4; | ||||||
| @@ -1660,8 +1651,6 @@ class MediaPlayerSupportedFormat : public ProtoMessage { | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; |  | ||||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; |  | ||||||
| }; | }; | ||||||
| class ListEntitiesMediaPlayerResponse : public InfoResponseProtoMessage { | class ListEntitiesMediaPlayerResponse : public InfoResponseProtoMessage { | ||||||
|  public: |  public: | ||||||
| @@ -1724,7 +1713,7 @@ class MediaPlayerCommandRequest : public CommandProtoMessage { | |||||||
| }; | }; | ||||||
| #endif | #endif | ||||||
| #ifdef USE_BLUETOOTH_PROXY | #ifdef USE_BLUETOOTH_PROXY | ||||||
| class SubscribeBluetoothLEAdvertisementsRequest : public ProtoMessage { | class SubscribeBluetoothLEAdvertisementsRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 66; |   static constexpr uint8_t MESSAGE_TYPE = 66; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 4; |   static constexpr uint8_t ESTIMATED_SIZE = 4; | ||||||
| @@ -1751,8 +1740,6 @@ class BluetoothServiceData : public ProtoMessage { | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; |  | ||||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; |  | ||||||
| }; | }; | ||||||
| class BluetoothLEAdvertisementResponse : public ProtoMessage { | class BluetoothLEAdvertisementResponse : public ProtoMessage { | ||||||
|  public: |  public: | ||||||
| @@ -1789,8 +1776,6 @@ class BluetoothLERawAdvertisement : public ProtoMessage { | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; |  | ||||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; |  | ||||||
| }; | }; | ||||||
| class BluetoothLERawAdvertisementsResponse : public ProtoMessage { | class BluetoothLERawAdvertisementsResponse : public ProtoMessage { | ||||||
|  public: |  public: | ||||||
| @@ -1808,7 +1793,7 @@ class BluetoothLERawAdvertisementsResponse : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class BluetoothDeviceRequest : public ProtoMessage { | class BluetoothDeviceRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 68; |   static constexpr uint8_t MESSAGE_TYPE = 68; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 12; |   static constexpr uint8_t ESTIMATED_SIZE = 12; | ||||||
| @@ -1845,7 +1830,7 @@ class BluetoothDeviceConnectionResponse : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class BluetoothGATTGetServicesRequest : public ProtoMessage { | class BluetoothGATTGetServicesRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 70; |   static constexpr uint8_t MESSAGE_TYPE = 70; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 4; |   static constexpr uint8_t ESTIMATED_SIZE = 4; | ||||||
| @@ -1871,7 +1856,6 @@ class BluetoothGATTDescriptor : public ProtoMessage { | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; |  | ||||||
| }; | }; | ||||||
| class BluetoothGATTCharacteristic : public ProtoMessage { | class BluetoothGATTCharacteristic : public ProtoMessage { | ||||||
|  public: |  public: | ||||||
| @@ -1886,8 +1870,6 @@ class BluetoothGATTCharacteristic : public ProtoMessage { | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; |  | ||||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; |  | ||||||
| }; | }; | ||||||
| class BluetoothGATTService : public ProtoMessage { | class BluetoothGATTService : public ProtoMessage { | ||||||
|  public: |  public: | ||||||
| @@ -1901,8 +1883,6 @@ class BluetoothGATTService : public ProtoMessage { | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; |  | ||||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; |  | ||||||
| }; | }; | ||||||
| class BluetoothGATTGetServicesResponse : public ProtoMessage { | class BluetoothGATTGetServicesResponse : public ProtoMessage { | ||||||
|  public: |  public: | ||||||
| @@ -1937,7 +1917,7 @@ class BluetoothGATTGetServicesDoneResponse : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class BluetoothGATTReadRequest : public ProtoMessage { | class BluetoothGATTReadRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 73; |   static constexpr uint8_t MESSAGE_TYPE = 73; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 8; |   static constexpr uint8_t ESTIMATED_SIZE = 8; | ||||||
| @@ -1971,7 +1951,7 @@ class BluetoothGATTReadResponse : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class BluetoothGATTWriteRequest : public ProtoMessage { | class BluetoothGATTWriteRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 75; |   static constexpr uint8_t MESSAGE_TYPE = 75; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 19; |   static constexpr uint8_t ESTIMATED_SIZE = 19; | ||||||
| @@ -1990,7 +1970,7 @@ class BluetoothGATTWriteRequest : public ProtoMessage { | |||||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; |   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; |   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||||
| }; | }; | ||||||
| class BluetoothGATTReadDescriptorRequest : public ProtoMessage { | class BluetoothGATTReadDescriptorRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 76; |   static constexpr uint8_t MESSAGE_TYPE = 76; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 8; |   static constexpr uint8_t ESTIMATED_SIZE = 8; | ||||||
| @@ -2006,7 +1986,7 @@ class BluetoothGATTReadDescriptorRequest : public ProtoMessage { | |||||||
|  protected: |  protected: | ||||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; |   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||||
| }; | }; | ||||||
| class BluetoothGATTWriteDescriptorRequest : public ProtoMessage { | class BluetoothGATTWriteDescriptorRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 77; |   static constexpr uint8_t MESSAGE_TYPE = 77; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 17; |   static constexpr uint8_t ESTIMATED_SIZE = 17; | ||||||
| @@ -2024,7 +2004,7 @@ class BluetoothGATTWriteDescriptorRequest : public ProtoMessage { | |||||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; |   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; |   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||||
| }; | }; | ||||||
| class BluetoothGATTNotifyRequest : public ProtoMessage { | class BluetoothGATTNotifyRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 78; |   static constexpr uint8_t MESSAGE_TYPE = 78; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 10; |   static constexpr uint8_t ESTIMATED_SIZE = 10; | ||||||
| @@ -2059,7 +2039,7 @@ class BluetoothGATTNotifyDataResponse : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class SubscribeBluetoothConnectionsFreeRequest : public ProtoMessage { | class SubscribeBluetoothConnectionsFreeRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 80; |   static constexpr uint8_t MESSAGE_TYPE = 80; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 0; |   static constexpr uint8_t ESTIMATED_SIZE = 0; | ||||||
| @@ -2178,7 +2158,7 @@ class BluetoothDeviceUnpairingResponse : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class UnsubscribeBluetoothLEAdvertisementsRequest : public ProtoMessage { | class UnsubscribeBluetoothLEAdvertisementsRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 87; |   static constexpr uint8_t MESSAGE_TYPE = 87; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 0; |   static constexpr uint8_t ESTIMATED_SIZE = 0; | ||||||
| @@ -2226,7 +2206,7 @@ class BluetoothScannerStateResponse : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class BluetoothScannerSetModeRequest : public ProtoMessage { | class BluetoothScannerSetModeRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 127; |   static constexpr uint8_t MESSAGE_TYPE = 127; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 2; |   static constexpr uint8_t ESTIMATED_SIZE = 2; | ||||||
| @@ -2243,7 +2223,7 @@ class BluetoothScannerSetModeRequest : public ProtoMessage { | |||||||
| }; | }; | ||||||
| #endif | #endif | ||||||
| #ifdef USE_VOICE_ASSISTANT | #ifdef USE_VOICE_ASSISTANT | ||||||
| class SubscribeVoiceAssistantRequest : public ProtoMessage { | class SubscribeVoiceAssistantRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 89; |   static constexpr uint8_t MESSAGE_TYPE = 89; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 6; |   static constexpr uint8_t ESTIMATED_SIZE = 6; | ||||||
| @@ -2271,8 +2251,6 @@ class VoiceAssistantAudioSettings : public ProtoMessage { | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
|   bool decode_32bit(uint32_t field_id, Proto32Bit value) override; |  | ||||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; |  | ||||||
| }; | }; | ||||||
| class VoiceAssistantRequest : public ProtoMessage { | class VoiceAssistantRequest : public ProtoMessage { | ||||||
|  public: |  public: | ||||||
| @@ -2294,7 +2272,7 @@ class VoiceAssistantRequest : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class VoiceAssistantResponse : public ProtoMessage { | class VoiceAssistantResponse : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 91; |   static constexpr uint8_t MESSAGE_TYPE = 91; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 6; |   static constexpr uint8_t ESTIMATED_SIZE = 6; | ||||||
| @@ -2310,12 +2288,10 @@ class VoiceAssistantResponse : public ProtoMessage { | |||||||
|  protected: |  protected: | ||||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; |   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||||
| }; | }; | ||||||
| class VoiceAssistantEventData : public ProtoMessage { | class VoiceAssistantEventData : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   std::string name{}; |   std::string name{}; | ||||||
|   std::string value{}; |   std::string value{}; | ||||||
|   void encode(ProtoWriteBuffer buffer) const override; |  | ||||||
|   void calculate_size(uint32_t &total_size) const override; |  | ||||||
| #ifdef HAS_PROTO_MESSAGE_DUMP | #ifdef HAS_PROTO_MESSAGE_DUMP | ||||||
|   void dump_to(std::string &out) const override; |   void dump_to(std::string &out) const override; | ||||||
| #endif | #endif | ||||||
| @@ -2323,7 +2299,7 @@ class VoiceAssistantEventData : public ProtoMessage { | |||||||
|  protected: |  protected: | ||||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; |   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||||
| }; | }; | ||||||
| class VoiceAssistantEventResponse : public ProtoMessage { | class VoiceAssistantEventResponse : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 92; |   static constexpr uint8_t MESSAGE_TYPE = 92; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 36; |   static constexpr uint8_t ESTIMATED_SIZE = 36; | ||||||
| @@ -2340,7 +2316,7 @@ class VoiceAssistantEventResponse : public ProtoMessage { | |||||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; |   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; |   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||||
| }; | }; | ||||||
| class VoiceAssistantAudio : public ProtoMessage { | class VoiceAssistantAudio : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 106; |   static constexpr uint8_t MESSAGE_TYPE = 106; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 11; |   static constexpr uint8_t ESTIMATED_SIZE = 11; | ||||||
| @@ -2359,7 +2335,7 @@ class VoiceAssistantAudio : public ProtoMessage { | |||||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; |   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; |   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||||
| }; | }; | ||||||
| class VoiceAssistantTimerEventResponse : public ProtoMessage { | class VoiceAssistantTimerEventResponse : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 115; |   static constexpr uint8_t MESSAGE_TYPE = 115; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 30; |   static constexpr uint8_t ESTIMATED_SIZE = 30; | ||||||
| @@ -2380,7 +2356,7 @@ class VoiceAssistantTimerEventResponse : public ProtoMessage { | |||||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; |   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; |   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||||
| }; | }; | ||||||
| class VoiceAssistantAnnounceRequest : public ProtoMessage { | class VoiceAssistantAnnounceRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 119; |   static constexpr uint8_t MESSAGE_TYPE = 119; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 29; |   static constexpr uint8_t ESTIMATED_SIZE = 29; | ||||||
| @@ -2427,9 +2403,8 @@ class VoiceAssistantWakeWord : public ProtoMessage { | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; |  | ||||||
| }; | }; | ||||||
| class VoiceAssistantConfigurationRequest : public ProtoMessage { | class VoiceAssistantConfigurationRequest : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 121; |   static constexpr uint8_t MESSAGE_TYPE = 121; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 0; |   static constexpr uint8_t ESTIMATED_SIZE = 0; | ||||||
| @@ -2460,7 +2435,7 @@ class VoiceAssistantConfigurationResponse : public ProtoMessage { | |||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
| }; | }; | ||||||
| class VoiceAssistantSetConfiguration : public ProtoMessage { | class VoiceAssistantSetConfiguration : public ProtoDecodableMessage { | ||||||
|  public: |  public: | ||||||
|   static constexpr uint8_t MESSAGE_TYPE = 123; |   static constexpr uint8_t MESSAGE_TYPE = 123; | ||||||
|   static constexpr uint8_t ESTIMATED_SIZE = 18; |   static constexpr uint8_t ESTIMATED_SIZE = 18; | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ namespace api { | |||||||
|  |  | ||||||
| static const char *const TAG = "api.proto"; | static const char *const TAG = "api.proto"; | ||||||
|  |  | ||||||
| void ProtoMessage::decode(const uint8_t *buffer, size_t length) { | void ProtoDecodableMessage::decode(const uint8_t *buffer, size_t length) { | ||||||
|   uint32_t i = 0; |   uint32_t i = 0; | ||||||
|   bool error = false; |   bool error = false; | ||||||
|   while (i < length) { |   while (i < length) { | ||||||
|   | |||||||
| @@ -135,6 +135,7 @@ class ProtoVarInt { | |||||||
|  |  | ||||||
| // Forward declaration for decode_to_message and encode_to_writer | // Forward declaration for decode_to_message and encode_to_writer | ||||||
| class ProtoMessage; | class ProtoMessage; | ||||||
|  | class ProtoDecodableMessage; | ||||||
|  |  | ||||||
| class ProtoLengthDelimited { | class ProtoLengthDelimited { | ||||||
|  public: |  public: | ||||||
| @@ -142,15 +143,15 @@ class ProtoLengthDelimited { | |||||||
|   std::string as_string() const { return std::string(reinterpret_cast<const char *>(this->value_), this->length_); } |   std::string as_string() const { return std::string(reinterpret_cast<const char *>(this->value_), this->length_); } | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * Decode the length-delimited data into an existing ProtoMessage instance. |    * Decode the length-delimited data into an existing ProtoDecodableMessage instance. | ||||||
|    * |    * | ||||||
|    * This method allows decoding without templates, enabling use in contexts |    * This method allows decoding without templates, enabling use in contexts | ||||||
|    * where the message type is not known at compile time. The ProtoMessage's |    * where the message type is not known at compile time. The ProtoDecodableMessage's | ||||||
|    * decode() method will be called with the raw data and length. |    * decode() method will be called with the raw data and length. | ||||||
|    * |    * | ||||||
|    * @param msg The ProtoMessage instance to decode into |    * @param msg The ProtoDecodableMessage instance to decode into | ||||||
|    */ |    */ | ||||||
|   void decode_to_message(ProtoMessage &msg) const; |   void decode_to_message(ProtoDecodableMessage &msg) const; | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
|   const uint8_t *const value_; |   const uint8_t *const value_; | ||||||
| @@ -298,7 +299,6 @@ class ProtoMessage { | |||||||
|   virtual ~ProtoMessage() = default; |   virtual ~ProtoMessage() = default; | ||||||
|   // Default implementation for messages with no fields |   // Default implementation for messages with no fields | ||||||
|   virtual void encode(ProtoWriteBuffer buffer) const {} |   virtual void encode(ProtoWriteBuffer buffer) const {} | ||||||
|   void decode(const uint8_t *buffer, size_t length); |  | ||||||
|   // Default implementation for messages with no fields |   // Default implementation for messages with no fields | ||||||
|   virtual void calculate_size(uint32_t &total_size) const {} |   virtual void calculate_size(uint32_t &total_size) const {} | ||||||
| #ifdef HAS_PROTO_MESSAGE_DUMP | #ifdef HAS_PROTO_MESSAGE_DUMP | ||||||
| @@ -306,6 +306,12 @@ class ProtoMessage { | |||||||
|   virtual void dump_to(std::string &out) const = 0; |   virtual void dump_to(std::string &out) const = 0; | ||||||
|   virtual const char *message_name() const { return "unknown"; } |   virtual const char *message_name() const { return "unknown"; } | ||||||
| #endif | #endif | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | // Base class for messages that support decoding | ||||||
|  | class ProtoDecodableMessage : public ProtoMessage { | ||||||
|  |  public: | ||||||
|  |   void decode(const uint8_t *buffer, size_t length); | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
|   virtual bool decode_varint(uint32_t field_id, ProtoVarInt value) { return false; } |   virtual bool decode_varint(uint32_t field_id, ProtoVarInt value) { return false; } | ||||||
| @@ -808,8 +814,8 @@ inline void ProtoWriteBuffer::encode_message(uint32_t field_id, const ProtoMessa | |||||||
|   assert(this->buffer_->size() == begin + varint_length_bytes + msg_length_bytes); |   assert(this->buffer_->size() == begin + varint_length_bytes + msg_length_bytes); | ||||||
| } | } | ||||||
|  |  | ||||||
| // Implementation of decode_to_message - must be after ProtoMessage is defined | // Implementation of decode_to_message - must be after ProtoDecodableMessage is defined | ||||||
| inline void ProtoLengthDelimited::decode_to_message(ProtoMessage &msg) const { | inline void ProtoLengthDelimited::decode_to_message(ProtoDecodableMessage &msg) const { | ||||||
|   msg.decode(this->value_, this->length_); |   msg.decode(this->value_, this->length_); | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -264,7 +264,7 @@ class MeterType(WidgetType): | |||||||
|                                 color_start, |                                 color_start, | ||||||
|                                 color_end, |                                 color_end, | ||||||
|                                 v[CONF_LOCAL], |                                 v[CONF_LOCAL], | ||||||
|                                 size.process(v[CONF_WIDTH]), |                                 await size.process(v[CONF_WIDTH]), | ||||||
|                             ), |                             ), | ||||||
|                         ) |                         ) | ||||||
|                     if t == CONF_IMAGE: |                     if t == CONF_IMAGE: | ||||||
|   | |||||||
| @@ -877,14 +877,15 @@ class RepeatedTypeInfo(TypeInfo): | |||||||
|  |  | ||||||
| def build_type_usage_map( | def build_type_usage_map( | ||||||
|     file_desc: descriptor.FileDescriptorProto, |     file_desc: descriptor.FileDescriptorProto, | ||||||
| ) -> tuple[dict[str, str | None], dict[str, str | None]]: | ) -> tuple[dict[str, str | None], dict[str, str | None], dict[str, int]]: | ||||||
|     """Build mappings for both enums and messages to their ifdefs based on usage. |     """Build mappings for both enums and messages to their ifdefs based on usage. | ||||||
|  |  | ||||||
|     Returns: |     Returns: | ||||||
|         tuple: (enum_ifdef_map, message_ifdef_map) |         tuple: (enum_ifdef_map, message_ifdef_map, message_source_map) | ||||||
|     """ |     """ | ||||||
|     enum_ifdef_map: dict[str, str | None] = {} |     enum_ifdef_map: dict[str, str | None] = {} | ||||||
|     message_ifdef_map: dict[str, str | None] = {} |     message_ifdef_map: dict[str, str | None] = {} | ||||||
|  |     message_source_map: dict[str, int] = {} | ||||||
|  |  | ||||||
|     # Build maps of which types are used by which messages |     # Build maps of which types are used by which messages | ||||||
|     enum_usage: dict[ |     enum_usage: dict[ | ||||||
| @@ -971,7 +972,44 @@ def build_type_usage_map( | |||||||
|                 message_ifdef_map[message.name] = parent_ifdefs.pop() |                 message_ifdef_map[message.name] = parent_ifdefs.pop() | ||||||
|                 changed = True |                 changed = True | ||||||
|  |  | ||||||
|     return enum_ifdef_map, message_ifdef_map |     # Build message source map | ||||||
|  |     # First pass: Get explicit sources for messages with source option or id | ||||||
|  |     for msg in file_desc.message_type: | ||||||
|  |         if msg.options.HasExtension(pb.source): | ||||||
|  |             # Explicit source option takes precedence | ||||||
|  |             message_source_map[msg.name] = get_opt(msg, pb.source, SOURCE_BOTH) | ||||||
|  |         elif msg.options.HasExtension(pb.id): | ||||||
|  |             # Service messages (with id) default to SOURCE_BOTH | ||||||
|  |             message_source_map[msg.name] = SOURCE_BOTH | ||||||
|  |  | ||||||
|  |     # Second pass: Determine sources for embedded messages based on their usage | ||||||
|  |     for msg in file_desc.message_type: | ||||||
|  |         if msg.name in message_source_map: | ||||||
|  |             continue  # Already has explicit source | ||||||
|  |  | ||||||
|  |         if msg.name in message_usage: | ||||||
|  |             # Get sources from all parent messages that use this one | ||||||
|  |             parent_sources = { | ||||||
|  |                 message_source_map[parent] | ||||||
|  |                 for parent in message_usage[msg.name] | ||||||
|  |                 if parent in message_source_map | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             # Combine parent sources | ||||||
|  |             if not parent_sources: | ||||||
|  |                 # No parent has explicit source, default to encode-only | ||||||
|  |                 message_source_map[msg.name] = SOURCE_SERVER | ||||||
|  |             elif len(parent_sources) > 1: | ||||||
|  |                 # Multiple different sources or SOURCE_BOTH present | ||||||
|  |                 message_source_map[msg.name] = SOURCE_BOTH | ||||||
|  |             else: | ||||||
|  |                 # Inherit single parent source | ||||||
|  |                 message_source_map[msg.name] = parent_sources.pop() | ||||||
|  |         else: | ||||||
|  |             # Not used by any message and no explicit source - default to encode-only | ||||||
|  |             message_source_map[msg.name] = SOURCE_SERVER | ||||||
|  |  | ||||||
|  |     return enum_ifdef_map, message_ifdef_map, message_source_map | ||||||
|  |  | ||||||
|  |  | ||||||
| def build_enum_type(desc, enum_ifdef_map) -> tuple[str, str, str]: | def build_enum_type(desc, enum_ifdef_map) -> tuple[str, str, str]: | ||||||
| @@ -1023,7 +1061,8 @@ def calculate_message_estimated_size(desc: descriptor.DescriptorProto) -> int: | |||||||
|  |  | ||||||
| def build_message_type( | def build_message_type( | ||||||
|     desc: descriptor.DescriptorProto, |     desc: descriptor.DescriptorProto, | ||||||
|     base_class_fields: dict[str, list[descriptor.FieldDescriptorProto]] = None, |     base_class_fields: dict[str, list[descriptor.FieldDescriptorProto]], | ||||||
|  |     message_source_map: dict[str, int], | ||||||
| ) -> tuple[str, str, str]: | ) -> tuple[str, str, str]: | ||||||
|     public_content: list[str] = [] |     public_content: list[str] = [] | ||||||
|     protected_content: list[str] = [] |     protected_content: list[str] = [] | ||||||
| @@ -1045,7 +1084,7 @@ def build_message_type( | |||||||
|     message_id: int | None = get_opt(desc, pb.id) |     message_id: int | None = get_opt(desc, pb.id) | ||||||
|  |  | ||||||
|     # Get source direction to determine if we need decode/encode methods |     # Get source direction to determine if we need decode/encode methods | ||||||
|     source: int = get_opt(desc, pb.source, SOURCE_BOTH) |     source = message_source_map[desc.name] | ||||||
|     needs_decode = source in (SOURCE_BOTH, SOURCE_CLIENT) |     needs_decode = source in (SOURCE_BOTH, SOURCE_CLIENT) | ||||||
|     needs_encode = source in (SOURCE_BOTH, SOURCE_SERVER) |     needs_encode = source in (SOURCE_BOTH, SOURCE_SERVER) | ||||||
|  |  | ||||||
| @@ -1250,7 +1289,9 @@ def build_message_type( | |||||||
|     if base_class: |     if base_class: | ||||||
|         out = f"class {desc.name} : public {base_class} {{\n" |         out = f"class {desc.name} : public {base_class} {{\n" | ||||||
|     else: |     else: | ||||||
|         out = f"class {desc.name} : public ProtoMessage {{\n" |         # Determine inheritance based on whether the message needs decoding | ||||||
|  |         base_class = "ProtoDecodableMessage" if needs_decode else "ProtoMessage" | ||||||
|  |         out = f"class {desc.name} : public {base_class} {{\n" | ||||||
|     out += " public:\n" |     out += " public:\n" | ||||||
|     out += indent("\n".join(public_content)) + "\n" |     out += indent("\n".join(public_content)) + "\n" | ||||||
|     out += "\n" |     out += "\n" | ||||||
| @@ -1351,6 +1392,7 @@ def find_common_fields( | |||||||
| def build_base_class( | def build_base_class( | ||||||
|     base_class_name: str, |     base_class_name: str, | ||||||
|     common_fields: list[descriptor.FieldDescriptorProto], |     common_fields: list[descriptor.FieldDescriptorProto], | ||||||
|  |     messages: list[descriptor.DescriptorProto], | ||||||
| ) -> tuple[str, str, str]: | ) -> tuple[str, str, str]: | ||||||
|     """Build the base class definition and implementation.""" |     """Build the base class definition and implementation.""" | ||||||
|     public_content = [] |     public_content = [] | ||||||
| @@ -1365,8 +1407,15 @@ def build_base_class( | |||||||
|         protected_content.extend(ti.protected_content) |         protected_content.extend(ti.protected_content) | ||||||
|         public_content.extend(ti.public_content) |         public_content.extend(ti.public_content) | ||||||
|  |  | ||||||
|  |     # Determine if any message using this base class needs decoding | ||||||
|  |     needs_decode = any( | ||||||
|  |         get_opt(msg, pb.source, SOURCE_BOTH) in (SOURCE_BOTH, SOURCE_CLIENT) | ||||||
|  |         for msg in messages | ||||||
|  |     ) | ||||||
|  |  | ||||||
|     # Build header |     # Build header | ||||||
|     out = f"class {base_class_name} : public ProtoMessage {{\n" |     parent_class = "ProtoDecodableMessage" if needs_decode else "ProtoMessage" | ||||||
|  |     out = f"class {base_class_name} : public {parent_class} {{\n" | ||||||
|     out += " public:\n" |     out += " public:\n" | ||||||
|  |  | ||||||
|     # Add destructor with override |     # Add destructor with override | ||||||
| @@ -1404,7 +1453,9 @@ def generate_base_classes( | |||||||
|  |  | ||||||
|         if common_fields: |         if common_fields: | ||||||
|             # Generate base class |             # Generate base class | ||||||
|             header, cpp, dump_cpp = build_base_class(base_class_name, common_fields) |             header, cpp, dump_cpp = build_base_class( | ||||||
|  |                 base_class_name, common_fields, messages | ||||||
|  |             ) | ||||||
|             all_headers.append(header) |             all_headers.append(header) | ||||||
|             all_cpp.append(cpp) |             all_cpp.append(cpp) | ||||||
|             all_dump_cpp.append(dump_cpp) |             all_dump_cpp.append(dump_cpp) | ||||||
| @@ -1516,7 +1567,7 @@ namespace api { | |||||||
|     content += "namespace enums {\n\n" |     content += "namespace enums {\n\n" | ||||||
|  |  | ||||||
|     # Build dynamic ifdef mappings for both enums and messages |     # Build dynamic ifdef mappings for both enums and messages | ||||||
|     enum_ifdef_map, message_ifdef_map = build_type_usage_map(file) |     enum_ifdef_map, message_ifdef_map, message_source_map = build_type_usage_map(file) | ||||||
|  |  | ||||||
|     # Simple grouping of enums by ifdef |     # Simple grouping of enums by ifdef | ||||||
|     current_ifdef = None |     current_ifdef = None | ||||||
| @@ -1570,7 +1621,7 @@ namespace api { | |||||||
|     current_ifdef = None |     current_ifdef = None | ||||||
|  |  | ||||||
|     for m in mt: |     for m in mt: | ||||||
|         s, c, dc = build_message_type(m, base_class_fields) |         s, c, dc = build_message_type(m, base_class_fields, message_source_map) | ||||||
|         msg_ifdef = message_ifdef_map.get(m.name) |         msg_ifdef = message_ifdef_map.get(m.name) | ||||||
|  |  | ||||||
|         # Handle ifdef changes |         # Handle ifdef changes | ||||||
|   | |||||||
| @@ -928,6 +928,12 @@ lvgl: | |||||||
|                           angle_range: 360 |                           angle_range: 360 | ||||||
|                           rotation: !lambda return 2700; |                           rotation: !lambda return 2700; | ||||||
|                           indicators: |                           indicators: | ||||||
|  |                             - tick_style: | ||||||
|  |                                 start_value: 0 | ||||||
|  |                                 end_value: 60 | ||||||
|  |                                 color_start: 0x0000bd | ||||||
|  |                                 color_end: 0xbd0000 | ||||||
|  |                                 width: !lambda return 1; | ||||||
|                             - line: |                             - line: | ||||||
|                                 opa: 50% |                                 opa: 50% | ||||||
|                                 id: minute_hand |                                 id: minute_hand | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user