This commit is contained in:
J. Nick Koston 2025-07-10 15:42:48 -10:00
parent 3a94361c64
commit e4ea6c5eee
No known key found for this signature in database
2 changed files with 1 additions and 51 deletions

View File

@ -374,16 +374,7 @@ static bool decode_length_field(ProtoFieldType type, void *field_addr, const Pro
}
}
// ============================================================================
// ProtoMessage Implementation - Simplified with Unified Helpers
// ============================================================================
void ProtoMessage::decode(const uint8_t *buffer, size_t length) {
if (buffer == nullptr && length > 0) {
ESP_LOGW(TAG, "decode called with nullptr buffer but length=%zu", length);
return;
}
uint8_t *base = reinterpret_cast<uint8_t *>(this);
// Get metadata

View File

@ -6,25 +6,6 @@
namespace esphome {
namespace api {
// Template enum field functions (must be in header for instantiation)
template<typename EnumType>
inline void encode_enum_field(ProtoWriteBuffer &buffer, const void *field_ptr, uint8_t field_num) {
const auto *val = static_cast<const EnumType *>(field_ptr);
buffer.encode_enum<EnumType>(field_num, *val);
}
template<typename EnumType>
inline void size_enum_field(uint32_t &total_size, const void *field_ptr, uint8_t precalced_field_id_size, bool force) {
const auto *val = static_cast<const EnumType *>(field_ptr);
ProtoSize::add_enum_field(total_size, precalced_field_id_size, static_cast<uint32_t>(*val), force);
}
template<typename EnumType> inline bool decode_enum_field(void *field_ptr, ProtoVarInt value) {
auto *val = static_cast<EnumType *>(field_ptr);
*val = value.as_enum<EnumType>();
return true;
}
// Template functions for message field handling (regular fields)
template<typename MessageType>
inline void encode_message_field(ProtoWriteBuffer &buffer, const void *field_ptr, uint8_t field_num) {
@ -46,14 +27,6 @@ template<typename MessageType> inline bool decode_message_field(void *field_ptr,
}
// Template repeated field functions (must be in header for instantiation)
template<typename EnumType>
inline void encode_repeated_enum_field(ProtoWriteBuffer &buffer, const void *field_ptr, uint8_t field_num) {
const auto *vec = static_cast<const std::vector<EnumType> *>(field_ptr);
for (const auto &val : *vec) {
buffer.encode_enum<EnumType>(field_num, val, true);
}
}
template<typename MessageType>
inline void encode_repeated_message_field(ProtoWriteBuffer &buffer, const void *field_ptr, uint8_t field_num) {
const auto *vec = static_cast<const std::vector<MessageType> *>(field_ptr);
@ -63,14 +36,6 @@ inline void encode_repeated_message_field(ProtoWriteBuffer &buffer, const void *
}
// Template size functions for repeated fields (must be in header for instantiation)
template<typename EnumType>
inline void size_repeated_enum_field(uint32_t &total_size, const void *field_ptr, uint8_t precalced_field_id_size) {
const auto *vec = static_cast<const std::vector<EnumType> *>(field_ptr);
for (const auto &val : *vec) {
ProtoSize::add_enum_field(total_size, precalced_field_id_size, static_cast<uint32_t>(val), true);
}
}
template<typename MessageType>
inline void size_repeated_message_field(uint32_t &total_size, const void *field_ptr, uint8_t precalced_field_id_size) {
const auto *vec = static_cast<const std::vector<MessageType> *>(field_ptr);
@ -78,12 +43,6 @@ inline void size_repeated_message_field(uint32_t &total_size, const void *field_
}
// Template decode functions for repeated fields
template<typename EnumType> inline bool decode_repeated_enum_field(void *field_ptr, ProtoVarInt value) {
auto *vec = static_cast<std::vector<EnumType> *>(field_ptr);
vec->push_back(value.as_enum<EnumType>());
return true;
}
template<typename MessageType> inline bool decode_repeated_message_field(void *field_ptr, ProtoLengthDelimited value) {
auto *vec = static_cast<std::vector<MessageType> *>(field_ptr);
vec->push_back(value.as_message<MessageType>());
@ -91,4 +50,4 @@ template<typename MessageType> inline bool decode_repeated_message_field(void *f
}
} // namespace api
} // namespace esphome
} // namespace esphome