J. Nick Koston 5c4527905c [api] Optimize plaintext varint encoding and devirtualize write_protobuf_packet
- Replace ProtoSize::varint() call for message_type with inline
  ternary using named constants, avoiding the noinline varint_slow
  call overhead in the write_protobuf_messages loop (-32 bytes on
  ESP8266 Xtensa).

- Add named varint threshold constants (VARINT_MAX_1_BYTE, etc.)
  to ProtoSize class, used by both varint() and varint_wide().

- Devirtualize write_protobuf_packet by moving it to the base class
  as a non-virtual inline method. The plaintext and noise
  implementations only differed in footer handling, which is now
  unified via a conditional resize based on frame_footer_size_.
  This eliminates one vtable slot and allows the compiler to fully
  inline the thin wrapper into callers (-192 bytes total flash on
  ESP8266).

- Include proto.h from api_frame_helper.h (no circular dependency)
  to support the inline definition, replacing the forward declaration
  of ProtoWriteBuffer.
2026-03-12 22:15:36 -10:00
2023-06-12 17:00:34 +12:00
2022-09-06 15:48:01 +12:00
2025-12-21 09:26:03 -05:00
2024-03-28 10:20:51 +13:00
2025-07-17 22:40:28 +12:00
2025-12-08 14:37:45 -05:00
2026-03-12 07:34:53 +13:00
2025-07-17 22:40:28 +12:00
2025-12-05 08:48:04 -05:00
S
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 546 MiB
Languages
C++ 60.1%
Python 39.3%
C 0.3%
JavaScript 0.2%