J. Nick Koston
cda628e1d0
Merge branch 'dev' into api_varint_split_32_64
2026-02-20 21:41:13 -06:00
J. Nick Koston
f77da803c9
[api] Write protobuf encode output to pre-sized buffer directly ( #14018 )
2026-02-20 21:39:18 -06:00
Jonathan Swoboda
9ce01fc369
[esp32] Add engineering_sample option for ESP32-P4 ( #14139 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-20 11:20:05 -05:00
J. Nick Koston
21b9a4139a
Address review feedback: fix unconditional guard bug, add ifndef guard, clarify comment
...
- Fix get_varint64_ifdef() to return unconditional guard when any 64-bit
varint field has no ifdef (None in ifdefs set)
- Wrap USE_API_VARINT64 define with #ifndef to avoid redefinition warnings
when esphome/core/defines.h also defines it (test/IDE builds)
- Clarify proto.h comment about uint32_t shift behavior at byte 4
- Add namespace to generated api_pb2_defines.h for linter compliance
2026-02-19 20:23:17 -06:00
J. Nick Koston
4e3b2abd5f
Fix ODR violation: generate api_pb2_defines.h for consistent ProtoVarInt layout
...
USE_API_VARINT64 was only defined in api_pb2.h, but proto.cpp (where
decode() and parse_wide() live) includes proto.h directly. This caused:
1. parse_wide() not compiled in proto.cpp (guarded by #ifdef)
2. decode() used 32-bit-only parse(), returning {} for varints > 5 bytes
3. ODR violation: ProtoVarInt was 4 bytes in proto.cpp but 8 bytes in
api_pb2*.cpp translation units
For bluetooth_proxy, 48-bit BLE addresses encode as 7-byte varints.
The failed parse caused decode() to return early, leaving request_type
at its default value of 0 (BLUETOOTH_DEVICE_REQUEST_TYPE_CONNECT),
producing spurious "V1 connections removed" errors.
Fix: Generate api_pb2_defines.h with the USE_API_VARINT64 define and
include it from proto.h, ensuring all translation units see a consistent
ProtoVarInt layout.
2026-02-19 20:08:29 -06:00
J. Nick Koston
b5a8e1c94c
[ci] Update lint message to recommend constexpr over static const ( #14099 )
2026-02-19 09:06:46 -06:00
J. Nick Koston
bd6048faf8
Merge origin/dev into api_varint_split_32_64
2026-02-17 18:56:11 -06:00
J. Nick Koston
3989236154
[api] Split ProtoVarInt::parse into 32-bit and 64-bit phases
...
On 32-bit platforms (ESP32 Xtensa), 64-bit shifts in varint parsing
compile to __ashldi3 library calls. Since the vast majority of protobuf
varint fields (message types, sizes, enum values, sensor readings) fit
in 4 bytes, the 64-bit arithmetic is unnecessary overhead on the common
path.
Split parse() into two phases:
- Bytes 0-3: uint32_t loop with native 32-bit shifts (0, 7, 14, 21)
- Bytes 4-9: noinline parse_wide_() with uint64_t, only for BLE
addresses and other 64-bit fields
The code generator auto-detects which proto messages use int64/uint64/
sint64 fields and emits USE_API_VARINT64 conditionally. On non-BLE
configs, parse_wide_() and the 64-bit accessors (as_uint64, as_int64,
as_sint64) are compiled out entirely.
Saves ~40 bytes flash on non-BLE configs. Benchmark shows 25-50%
faster parsing for 1-4 byte varints (the common case).
2026-02-17 18:54:25 -06:00
Guillermo Ruffino
7b251dcc31
[schema-gen] fix Windows: ensure UTF-8 encoding when reading component files ( #13952 )
2026-02-12 11:23:59 -05:00
J. Nick Koston
6c6da8a3cd
[api] Skip class generation for empty SOURCE_CLIENT protobuf messages ( #13880 )
2026-02-09 18:45:24 +00:00
J. Nick Koston
e4ea016d1e
[ci] Block new std::to_string() usage, suggest snprintf alternatives ( #13369 )
2026-02-09 12:26:19 -06:00
J. Nick Koston
c658d7b57f
[api] Merge auth check into base read_message, eliminate APIServerConnection ( #13873 )
2026-02-09 12:02:02 -06:00
J. Nick Koston
3cde3daceb
[api] Collapse APIServerConnection intermediary layer ( #13872 )
2026-02-09 08:45:33 -06:00
J. Nick Koston
140ec0639c
[api] Elide empty message construction in protobuf dispatch ( #13871 )
2026-02-09 03:24:45 -06:00
J. Nick Koston
55ef8393af
[api] Remove is_single parameter and fix batch buffer preparation ( #13773 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-02-05 15:19:03 +01:00
J. Nick Koston
f4e410f47f
[ci] Block new scanf() usage to prevent ~9.8KB flash bloat ( #13657 )
2026-02-06 02:56:43 +13:00
dependabot[bot]
4d05cd3059
Bump ruff from 0.14.14 to 0.15.0 ( #13752 )
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-02-04 09:24:05 +00:00
J. Nick Koston
8d0ce49eb4
[api] Eliminate intermediate buffers in protobuf dump helpers ( #13742 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-02-03 16:34:15 +01:00
J. Nick Koston
a7fbecb25c
[ci] Soft-deprecate str_sprintf/str_snprintf to prevent hidden heap allocations ( #13227 )
2026-01-26 17:28:07 -10:00
J. Nick Koston
fc16ad806a
[ci] Block sprintf/vsprintf usage, suggest snprintf alternatives ( #13305 )
2026-01-20 17:53:36 -10:00
J. Nick Koston
ea0fac96cb
[core][mqtt] Add str_sanitize_to(), soft-deprecate str_sanitize() ( #13233 )
2026-01-18 18:42:04 -10:00
J. Nick Koston
3f892711c7
[core][opentherm] Add format_bin_to(), soft-deprecate format_bin() ( #13232 )
2026-01-17 11:09:42 -10:00
J. Nick Koston
42491569c8
[analyze_memory] Add nRF52/Zephyr platform support for memory analysis ( #13249 )
2026-01-15 17:53:53 -10:00
J. Nick Koston
00cc9e44b6
[analyze_memory] Fix ELF section mapping for RTL87xx and LN882X platforms ( #13213 )
2026-01-15 10:38:24 -10:00
J. Nick Koston
7fed9144a6
[api] Use stack buffer for VERY_VERBOSE proto message dumps ( #13176 )
2026-01-13 08:04:48 -10:00
J. Nick Koston
6c043be4d3
[ci] Add format_hex_pretty to heap-allocating helper lint check ( #13178 )
2026-01-12 20:55:23 -10:00
J. Nick Koston
889886909b
[core] Soft deprecate heap-allocating string helpers to prevent fragmentation patterns ( #13156 )
2026-01-12 12:48:54 -10:00
J. Nick Koston
7ea6bcef88
[api] Use stack buffer for bytes field dumping in proto message logs ( #13162 )
2026-01-12 07:37:58 -10:00
J. Nick Koston
912f94d1e8
[api] Use StringRef for HomeassistantServiceMap.value to eliminate heap allocations ( #13154 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-01-11 17:54:06 -10:00
J. Nick Koston
45c0796e40
[ci] Add RP2040 to memory impact analysis ( #13134 )
2026-01-11 17:19:00 -10:00
Keith Burzinski
f2eb61a767
[api] Proto code generator changes for #12985 ( #13100 )
...
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-01-10 15:43:27 -10:00
J. Nick Koston
546cdbde0d
[api] Simplify string handling by removing bifurcated client/server storage ( #12822 )
2026-01-07 08:23:28 -10:00
J. Nick Koston
5b9be7c169
[ci] Add lint check to prevent usage of deprecated CORE.using_esp_idf ( #13029 )
2026-01-06 17:54:04 -10:00
David Woodhouse
94bedd83be
async_tcp: Add AsyncClient for ESP-IDF and host ( #12337 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
Co-authored-by: J. Nick Koston <nick+github@koston.org >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-01-05 23:37:38 +00:00
J. Nick Koston
6aaaae5d0e
[ci] Add LibreTiny (BK72XX) to memory impact analysis ( #12983 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-01-05 07:40:49 -10:00
tomaszduda23
12027569d3
[nrf52,zigbee] add support for binary_input ( #11535 )
...
Co-authored-by: J. Nick Koston <nick@koston.org >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: J. Nick Koston <nick+github@koston.org >
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-01-04 21:11:14 -05:00
J. Nick Koston
00fd4f2fdd
[esp8266] Exclude unused waveform code to save ~596 bytes RAM ( #12690 )
2026-01-02 19:51:07 -10:00
J. Nick Koston
2a5be725c8
[api] Enable zero-copy bytes SOURCE_BOTH messages ( #12816 )
2026-01-02 19:50:30 -10:00
J. Nick Koston
e7001c5eea
[api] Auto-generate zero-copy pointer access for incoming API bytes fields ( #12654 )
2026-01-02 14:05:37 -10:00
J. Nick Koston
6d4f4d8d23
[api] Auto-generate StringRef for incoming API string fields ( #12648 )
2026-01-02 08:17:05 -10:00
J. Nick Koston
b47b7d43fd
[api] Remove unused force parameter from encode_message ( #12551 )
2025-12-18 09:06:16 -07:00
Jonathan Swoboda
3d673ac55e
[ci] Check changed headers in clang-tidy when using --changed ( #12540 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2025-12-17 11:13:18 -10:00
J. Nick Koston
608f834eaa
[ci] Isolate usb_cdc_acm in component tests due to tinyusb/usb_host conflict ( #12392 )
2025-12-10 00:49:29 +01:00
J. Nick Koston
5919355d18
[ci] Allow memory impact target branch build to fail without blocking CI ( #12381 )
2025-12-10 00:26:24 +01:00
Clyde Stubbs
3c7d6b7fc6
[ci-custom] Fix after switch from string to path ( #12314 )
2025-12-06 07:49:23 -06:00
Keith Burzinski
d4bd282bb4
[helpers] Fix unit tests following #12135 ( #12237 )
2025-12-01 22:08:49 +00:00
J. Nick Koston
fb82362e9c
[api] Eliminate rx_buf heap churn and release buffers after initial sync ( #12133 )
2025-11-28 12:13:29 -06:00
Jonathan Swoboda
61cef0a75c
[api] Fix format warnings in dump ( #11999 )
2025-11-19 12:58:47 -05:00
J. Nick Koston
82692d7053
[tests] Migrate components to shared packages and fix ID ambiguity ( #11819 )
2025-11-10 19:00:54 -06:00
J. Nick Koston
a5bf55b6ac
[ci] Fix component batching for beta/release branches (3-4 → 40 per batch) ( #11759 )
2025-11-07 20:19:45 +13:00