mirror of
https://github.com/esphome/esphome.git
synced 2025-08-03 08:57:47 +00:00
preen
This commit is contained in:
parent
3a94361c64
commit
e4ea6c5eee
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user