mirror of
https://github.com/esphome/esphome.git
synced 2026-07-11 01:15:33 +00:00
b8de93aabe6396bb0871be42c0c700fce879034b
Move the api_is_connected() definition from util.cpp to util.h and mark it ESPHOME_ALWAYS_INLINE. The body is trivial — a nullptr check on global_api_server plus APIServer::is_connected() (which is !clients_.empty()) — so the out-of-line call8 was pure overhead for hot paths that check connectivity every loop tick (e.g. zwave_proxy::loop, serial_proxy::loop). With USE_API disabled the function collapses to "return false" at compile time and folds away entirely. util.h now pulls in api_server.h under USE_API. Only 25 .cpp files include util.h and all of them are on USE_API builds in practice (wifi, safe_mode, nextion, web_server, etc.), so the additional transitive include is essentially free on the platforms that matter. Measured on ESP32-S3: the call8 in ZWaveProxy::loop() is replaced by 5 inline Xtensa instructions (load global_api_server, deref, null check, clients_ start/finish compare) — no call overhead, no stack frame.
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
549 MiB
Languages
C++
60.1%
Python
39.3%
C
0.3%
JavaScript
0.2%
