mirror of
https://github.com/esphome/esphome.git
synced 2025-07-28 14:16:40 +00:00
[api] Fix missing ifdef guards for AreaInfo and DeviceInfo messages (#9730)
This commit is contained in:
parent
0aabdaa0c7
commit
acca629c5c
@ -57,6 +57,7 @@ void ConnectResponse::encode(ProtoWriteBuffer buffer) const { buffer.encode_bool
|
||||
void ConnectResponse::calculate_size(uint32_t &total_size) const {
|
||||
ProtoSize::add_bool_field(total_size, 1, this->invalid_password);
|
||||
}
|
||||
#ifdef USE_AREAS
|
||||
void AreaInfo::encode(ProtoWriteBuffer buffer) const {
|
||||
buffer.encode_uint32(1, this->area_id);
|
||||
buffer.encode_string(2, this->name);
|
||||
@ -65,6 +66,8 @@ void AreaInfo::calculate_size(uint32_t &total_size) const {
|
||||
ProtoSize::add_uint32_field(total_size, 1, this->area_id);
|
||||
ProtoSize::add_string_field(total_size, 1, this->name);
|
||||
}
|
||||
#endif
|
||||
#ifdef USE_DEVICES
|
||||
void DeviceInfo::encode(ProtoWriteBuffer buffer) const {
|
||||
buffer.encode_uint32(1, this->device_id);
|
||||
buffer.encode_string(2, this->name);
|
||||
@ -75,6 +78,7 @@ void DeviceInfo::calculate_size(uint32_t &total_size) const {
|
||||
ProtoSize::add_string_field(total_size, 1, this->name);
|
||||
ProtoSize::add_uint32_field(total_size, 1, this->area_id);
|
||||
}
|
||||
#endif
|
||||
void DeviceInfoResponse::encode(ProtoWriteBuffer buffer) const {
|
||||
buffer.encode_bool(1, this->uses_password);
|
||||
buffer.encode_string(2, this->name);
|
||||
|
@ -438,6 +438,7 @@ class DeviceInfoRequest : public ProtoDecodableMessage {
|
||||
|
||||
protected:
|
||||
};
|
||||
#ifdef USE_AREAS
|
||||
class AreaInfo : public ProtoMessage {
|
||||
public:
|
||||
uint32_t area_id{0};
|
||||
@ -450,6 +451,8 @@ class AreaInfo : public ProtoMessage {
|
||||
|
||||
protected:
|
||||
};
|
||||
#endif
|
||||
#ifdef USE_DEVICES
|
||||
class DeviceInfo : public ProtoMessage {
|
||||
public:
|
||||
uint32_t device_id{0};
|
||||
@ -463,6 +466,7 @@ class DeviceInfo : public ProtoMessage {
|
||||
|
||||
protected:
|
||||
};
|
||||
#endif
|
||||
class DeviceInfoResponse : public ProtoMessage {
|
||||
public:
|
||||
static constexpr uint8_t MESSAGE_TYPE = 10;
|
||||
|
@ -609,6 +609,7 @@ void DisconnectResponse::dump_to(std::string &out) const { out.append("Disconnec
|
||||
void PingRequest::dump_to(std::string &out) const { out.append("PingRequest {}"); }
|
||||
void PingResponse::dump_to(std::string &out) const { out.append("PingResponse {}"); }
|
||||
void DeviceInfoRequest::dump_to(std::string &out) const { out.append("DeviceInfoRequest {}"); }
|
||||
#ifdef USE_AREAS
|
||||
void AreaInfo::dump_to(std::string &out) const {
|
||||
__attribute__((unused)) char buffer[64];
|
||||
out.append("AreaInfo {\n");
|
||||
@ -622,6 +623,8 @@ void AreaInfo::dump_to(std::string &out) const {
|
||||
out.append("\n");
|
||||
out.append("}");
|
||||
}
|
||||
#endif
|
||||
#ifdef USE_DEVICES
|
||||
void DeviceInfo::dump_to(std::string &out) const {
|
||||
__attribute__((unused)) char buffer[64];
|
||||
out.append("DeviceInfo {\n");
|
||||
@ -640,6 +643,7 @@ void DeviceInfo::dump_to(std::string &out) const {
|
||||
out.append("\n");
|
||||
out.append("}");
|
||||
}
|
||||
#endif
|
||||
void DeviceInfoResponse::dump_to(std::string &out) const {
|
||||
__attribute__((unused)) char buffer[64];
|
||||
out.append("DeviceInfoResponse {\n");
|
||||
|
@ -996,6 +996,11 @@ def build_type_usage_map(
|
||||
}
|
||||
|
||||
# Analyze field usage
|
||||
# Also track field_ifdef for message types
|
||||
message_field_ifdefs: dict[
|
||||
str, set[str | None]
|
||||
] = {} # message_name -> set of field_ifdefs that use it
|
||||
|
||||
for message in file_desc.message_type:
|
||||
# Skip deprecated messages entirely
|
||||
if message.options.deprecated:
|
||||
@ -1016,6 +1021,9 @@ def build_type_usage_map(
|
||||
# Track message usage
|
||||
elif field.type == 11: # TYPE_MESSAGE
|
||||
message_usage.setdefault(type_name, set()).add(message.name)
|
||||
# Also track the field_ifdef if present
|
||||
field_ifdef = get_field_opt(field, pb.field_ifdef)
|
||||
message_field_ifdefs.setdefault(type_name, set()).add(field_ifdef)
|
||||
used_messages.add(type_name)
|
||||
|
||||
# Helper to get unique ifdef from a set of messages
|
||||
@ -1042,9 +1050,16 @@ def build_type_usage_map(
|
||||
message_ifdef_map[message.name] = explicit_ifdef
|
||||
elif message.name in message_usage:
|
||||
# Inherit ifdef if all parent messages have the same one
|
||||
message_ifdef_map[message.name] = get_unique_ifdef(
|
||||
message_usage[message.name]
|
||||
)
|
||||
if parent_ifdef := get_unique_ifdef(message_usage[message.name]):
|
||||
message_ifdef_map[message.name] = parent_ifdef
|
||||
elif message.name in message_field_ifdefs:
|
||||
# If no parent message ifdef, check if all fields using this message have the same field_ifdef
|
||||
field_ifdefs = message_field_ifdefs[message.name] - {None}
|
||||
message_ifdef_map[message.name] = (
|
||||
field_ifdefs.pop() if len(field_ifdefs) == 1 else None
|
||||
)
|
||||
else:
|
||||
message_ifdef_map[message.name] = None
|
||||
else:
|
||||
message_ifdef_map[message.name] = None
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user