mirror of
https://github.com/esphome/esphome.git
synced 2026-07-10 08:55:36 +00:00
a7100beb6f428529d3c3f8b051ba76e5dc25dfcd
Replace encode_message with encode_sub_message for protobuf submessage encoding. For repeated submessage fields, encode_sub_message uses a backpatch approach: writes field tag, reserves 1 byte for length varint, encodes the body, then backpatches the actual length. For bodies >= 128 bytes, shifts the body forward to make room for a multi-byte varint. This eliminates 2 of 3 calculate_size() calls per repeated submessage element. For singular submessage fields, encode_sub_message uses calculate_size() upfront to skip empty submessages without writing to the buffer, preserving the debug size check. For the BLE advertisement proxy hot path (16 advertisements per batch), this reduces calculate_size() calls from 48 to 16 per flush.
Description
ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems.
Readme
Multiple Licenses
545 MiB
Languages
C++
60.1%
Python
39.3%
C
0.3%
JavaScript
0.2%
