ESPHome 2026.10.0-dev
Loading...
Searching...
No Matches
defines.h
Go to the documentation of this file.
1#pragma once
2
3// This file is not used by the runtime, instead, a version is generated during
4// compilation with only the relevant feature flags for the current build.
5//
6// This file is only used by static analyzers and IDEs.
7
9
10// Informative flags
11#define ESPHOME_BOARD "dummy_board"
12#define ESPHOME_PROJECT_NAME "dummy project"
13#define ESPHOME_PROJECT_VERSION "v2"
14#define ESPHOME_PROJECT_VERSION_30 "v2"
15#define ESPHOME_VARIANT "ESP32"
16#define ESPHOME_SNAPSHOT_DIR "."
17#define ESPHOME_NAME_ADD_MAC_SUFFIX
18#define ESPHOME_DEBUG_SCHEDULER
19#define ESPHOME_DEBUG_API
20
21// Threading model for static analysis. Match what the real codegen picks per
22// platform (see esphome/components/<platform>/__init__.py ThreadModel.*):
23// USE_ESP8266 / USE_RP2 / USE_NRF52 → SINGLE
24// USE_BK72XX (ARMv5TE, no LDREX/STREX) → MULTI_NO_ATOMICS
25// everything else (ESP32, host, RTL87XX, LN882X) → MULTI_ATOMICS
26// Without this the clang-tidy envs end up with USE_<single-threaded platform>
27// + MULTI_ATOMICS simultaneously, a combination that can never occur in a
28// real build.
29#if defined(USE_ESP8266) || defined(USE_RP2) || defined(USE_NRF52)
30#define ESPHOME_THREAD_SINGLE
31#elif defined(USE_BK72XX)
32#define ESPHOME_THREAD_MULTI_NO_ATOMICS
33#else
34#define ESPHOME_THREAD_MULTI_ATOMICS
35#endif
36
37// logger
38#define ESPHOME_LOG_LEVEL ESPHOME_LOG_LEVEL_VERY_VERBOSE
39#define ESPHOME_LOGGER_TX_BUFFER_SIZE 512
40#define USE_LOG_LISTENERS
41#define ESPHOME_LOG_MAX_LISTENERS 8
42
43// Feature flags
44#define USE_ALARM_CONTROL_PANEL
45#define USE_AREAS
46#define USE_BINARY_SENSOR
47#define USE_BINARY_SENSOR_CLICK_TRIGGER
48#define USE_BINARY_SENSOR_FILTER
49#define USE_BINARY_SENSOR_MULTI_CLICK_TRIGGER
50#define USE_BLE_DEVICE_IRK
51#define USE_BUTTON
52#define USE_CAMERA
53#define USE_CLIMATE
54#define USE_CLIMATE_VISUAL_OVERRIDES
55#define USE_CONTROLLER_REGISTRY
56#define USE_COVER
57#define USE_DATETIME
58#define USE_DATETIME_DATE
59#define USE_DATETIME_DATETIME
60#define USE_DATETIME_TIME
61#define USE_DEBUG
62#define USE_DEEP_SLEEP
63#define USE_DEEP_SLEEP_ON_WAKE
64#define USE_DEVICES
65#define USE_DISPLAY
66#define USE_ENTITY_DEVICE_CLASS
67#define USE_ENTITY_ICON
68#define USE_ENTITY_UNIT_OF_MEASUREMENT
69#define USE_ESP32_BLE_PSRAM
70#define USE_ESP32_CAMERA_JPEG_CONVERSION
71#define USE_ESP32_HOSTED
72#define USE_ESP32_HOSTED_HTTP_UPDATE
73#define USE_ESP32_IMPROV_STATE_CALLBACK
74#define USE_ESP_NOW_HOSTED
75#define USE_EVENT
76#define USE_FAN
77#define USE_GPIO_BINARY_SENSOR_INTERRUPT
78#define USE_GPIO_SWITCH_INTERLOCK
79#define USE_GRAPH
80#define USE_GRAPHICAL_DISPLAY_MENU
81#define USE_HOMEASSISTANT_TIME
82#define USE_HOMEASSISTANT_TIMEZONE
83#define USE_HTTP_REQUEST_OTA_WATCHDOG_TIMEOUT 8000 // NOLINT
84#define USE_I2S_AUDIO_SPDIF_MODE
85#define USE_IMAGE
86#define USE_INFRARED
87#define USE_IR_RF
88#define USE_JSON
89#define USE_RADIO_FREQUENCY
90#define USE_LIGHT
91#define USE_LIGHT_GAMMA_LUT
92#define USE_LOCK
93#define USE_LOGGER
94#define USE_LOGGER_LEVEL_LISTENERS
95#define USE_LOGGER_RUNTIME_TAG_LEVELS
96#define USE_LVGL
97#define USE_LVGL_ANIMATION
98#define USE_LVGL_ANIMIMG
99#define USE_LVGL_ARC
100#define USE_LVGL_BINARY_SENSOR
101#define USE_LVGL_BUTTON
102#define USE_LVGL_BUTTONMATRIX
103#define USE_LVGL_CANVAS
104#define USE_LVGL_CHART
105#define USE_LVGL_CHECKBOX
106#define USE_LVGL_DROPDOWN
107#define USE_LVGL_FONT
108#define USE_LVGL_GRADIENT
109#define USE_LVGL_IMAGE
110#define USE_LVGL_IMAGEBUTTON
111#define USE_LVGL_KEY_LISTENER
112#define USE_LVGL_KEYBOARD
113#define USE_LVGL_LABEL
114#define USE_LVGL_LINE
115#define USE_LVGL_LIST
116#define USE_LVGL_MENU
117#define USE_LVGL_METER
118#define USE_LVGL_MSGBOX
119#define USE_LVGL_ROLLER
120#define USE_LVGL_ROTARY_ENCODER
121#define USE_LVGL_SCALE
122#define USE_LVGL_SLIDER
123#define USE_LVGL_SPAN
124#define USE_LVGL_SPINBOX
125#define USE_LVGL_SPINNER
126#define USE_LVGL_SWITCH
127#define USE_LVGL_TABLE
128#define USE_LVGL_TABVIEW
129#define USE_LVGL_TEXTAREA
130#define USE_LVGL_TILEVIEW
131#define USE_LVGL_TOUCHSCREEN
132#define USE_MDNS
133#define USE_MDNS_STORE_SERVICES
134#define MDNS_SERVICE_COUNT 3
135#define USE_MDNS_DYNAMIC_TXT
136#define MDNS_DYNAMIC_TXT_COUNT 2
137#define MICRONOVA_LISTENER_COUNT 1
138#define USE_MICRONOVA_WRITER
139#define MK2PVROUTER_LISTENER_COUNT 1
140#define SERIAL_PROXY_COUNT 2
141#define SNTP_SERVER_COUNT 3
142#define USE_MEDIA_PLAYER
143#define USE_MEDIA_SOURCE
144#define USE_NETWORK
145#define USE_NETWORK_DEFAULT_ROUTE
146#define USE_NETWORK_PRIMARY_INTERFACE_WIFI
147#define USE_NEXTION_COMMAND_SPACING
148#define USE_NEXTION_CONF_START_UP_PAGE
149#define USE_NEXTION_CONFIG_EXIT_REPARSE_ON_START
150#define USE_NEXTION_CONFIG_SKIP_CONNECTION_HANDSHAKE
151#define USE_NEXTION_MAX_COMMANDS_PER_LOOP
152#define USE_NEXTION_MAX_QUEUE_SIZE
153#define USE_NEXTION_TFT_UPLOAD
154#define USE_NEXTION_TRIGGER_CUSTOM_BINARY_SENSOR
155#define USE_NEXTION_TRIGGER_CUSTOM_SENSOR
156#define USE_NEXTION_TRIGGER_CUSTOM_SWITCH
157#define USE_NEXTION_TRIGGER_CUSTOM_TEXT_SENSOR
158#define USE_NEXTION_WAVEFORM
159#define USE_NUMBER
160#define USE_OTA_STATE_LISTENER
161#define USE_OUTPUT
162#define USE_OUTPUT_FLOAT_POWER_SCALING
163#define USE_POWER_SUPPLY
164// Only defined by key-lookup preference backends; the slot-based platforms
165// (esp8266, rp2040) never set it in generated builds, and their preferences
166// managers do not provide load_from_key(), so the PreferencesKeyLookupContract
167// assert would fail their clang-tidy environments. Written as a deny-list so
168// the no-platform analysis configuration (whose Preferences stub provides
169// load_from_key()) keeps covering the key-lookup code paths, and so a future
170// slot-based platform fails the assert loudly instead of silently losing
171// analysis coverage.
172#if !defined(USE_ESP8266) && !defined(USE_RP2)
173#define USE_PREFERENCE_KEY_LOOKUP
174#endif
175#define USE_PROVISIONING
176#define USE_QR_CODE
177#define USE_SAFE_MODE_BOOT_IS_GOOD_ON_SHUTDOWN
178#define USE_SAFE_MODE_CALLBACK
179#define ESPHOME_SAFE_MODE_CALLBACK_COUNT 1
180#define USE_SELECT
181#define USE_SENSOR
182#define USE_SENSOR_FILTER
183#define USE_SERIAL_PROXY
184#define USE_SETUP_PRIORITY_OVERRIDE
185#define USE_STATUS_LED
186#define USE_STATUS_SENSOR
187#define USE_SWITCH
188#define USE_TEXT
189#define USE_TEXT_SENSOR
190#define USE_TEXT_SENSOR_FILTER
191#define USE_TIME
192#define USE_TIME_TRIGGERS
193#define USE_TOUCHSCREEN
194#define USE_UART_DEBUGGER
195#define USE_UART_WAKE_LOOP_ON_RX
196#define USE_UPDATE
197#define USE_UPTIME_TIMESTAMP
198#define USE_VALVE
199#define USE_WATER_HEATER
200#define USE_WATER_HEATER_VISUAL_OVERRIDES
201#define USE_ZWAVE_PROXY
202
203// Feature flags which do not work for zephyr
204#ifndef USE_ZEPHYR
205#define AUDIO_FILE_MAX_FILES 4
206#define USE_AUDIO_DAC
207#define USE_AUDIO_FLAC_SUPPORT
208#define USE_AUDIO_MP3_SUPPORT
209#define USE_AUDIO_OPUS_SUPPORT
210#define USE_AUDIO_WAV_SUPPORT
211#define USE_API
212#define USE_API_CLIENT_CONNECTED_TRIGGER
213#define USE_API_CLIENT_DISCONNECTED_TRIGGER
214#define USE_API_HOMEASSISTANT_ACTION_RESPONSES
215#define USE_API_HOMEASSISTANT_ACTION_RESPONSES_JSON
216#define USE_API_HOMEASSISTANT_SERVICES
217#define USE_API_HOMEASSISTANT_STATES
218#define USE_API_NOISE
219#define USE_API_VARINT64
220#define USE_API_PLAINTEXT
221#define USE_API_USER_DEFINED_ACTIONS
222#define USE_API_CUSTOM_SERVICES
223#define USE_API_USER_DEFINED_ACTION_METADATA
224#define USE_API_USER_DEFINED_ACTION_RESPONSES
225#define USE_API_USER_DEFINED_ACTION_RESPONSES_JSON
226#define API_MAX_SEND_QUEUE 8
227#define API_USER_ACTION_STRINGS_SCRATCH_SIZE 64
228#define MAX_API_CONNECTIONS 6
229// The Improv library is not in the Zephyr tidy environment
230#define USE_IMPROV_SERIAL
231#define USE_IMPROV_SERIAL_NEXT_URL
232#define USE_MD5
233#define USE_NOISE
234#define USE_SHA256
235#ifndef USE_RP2 // no MQTT backend or esp_wireguard library on RP2
236#define USE_MQTT
237#define USE_MQTT_COVER_JSON
238#define USE_WIREGUARD
239#endif
240#define USE_RTTTL_FINISHED_PLAYBACK_CALLBACK
241#define USE_RUNTIME_IMAGE_BMP
242#define USE_RUNTIME_IMAGE_JPEG
243#define USE_RUNTIME_IMAGE_PNG
244#define USE_RUNTIME_IMAGE_QOI
245#define USE_RUNTIME_STATS
246#define USE_OTA
247#define USE_OTA_ENCRYPTION
248#define USE_OTA_ENCRYPTION_FROM_API
249#define USE_OTA_ENCRYPTION_PROVISIONED
250#define USE_OTA_ENCRYPTION_REQUIRED
251#define USE_OTA_PASSWORD
252#define USE_OTA_VERSION 2
253#define USE_TIME_TIMEZONE
254#define USE_WIFI
255#define USE_WIFI_AP
256#define USE_WIFI_MANUAL_IP
257#endif
258
259// Arduino-specific feature flags
260#ifdef USE_ARDUINO
261#define USE_PROMETHEUS
262#define USE_WIFI_WPA2_EAP
263#endif
264
265// Platforms with native 64-bit time sources (no rollover tracking needed)
266#if defined(USE_ESP32) || defined(USE_HOST) || defined(USE_ZEPHYR) || defined(USE_RP2)
267#define USE_NATIVE_64BIT_TIME
268#endif
269
270// bluetooth_proxy runs on any platform with a BLE hub (advertisement-only off
271// esp32). Declared here per analysis ENVIRONMENT, not per hub platform —
272// USE_LIBRETINY also covers chips with no hub, e.g. rtl87xx (the authoritative
273// gate is _HUB_PLATFORMS in bluetooth_proxy/__init__.py) — so the neutral
274// declarations in bluetooth_proxy.h are parsed under LibreTiny static analysis
275// (the header is included by api_connection.cpp, which the tidy filter selects;
276// the proxy's own .cpp is not a selected translation unit). Not declared for
277// platforms whose API/network types the proxy header cannot assume.
278#if defined(USE_ESP32) || defined(USE_LIBRETINY) || defined(USE_RP2)
279#define USE_BLUETOOTH_PROXY
280// Mirror the codegen values per platform: _to_code_esp32() emits the connection
281// count (default 3) and the scanner-state push slot, _to_code_ble_hub() emits
282// the slot count (3 on rp2, 0 on advertisement-only hubs) — so static analysis
283// checks the same instantiations a real build produces.
284#ifdef USE_ESP32
285#define USE_BLE_SCANNER_STATE_CALLBACK
286#define BLUETOOTH_PROXY_MAX_CONNECTIONS 3
287#define USE_BLUETOOTH_PROXY_CONNECTIONS
288#elif defined(USE_RP2)
289#define BLUETOOTH_PROXY_MAX_CONNECTIONS 3
290#define USE_BLUETOOTH_PROXY_CONNECTIONS
291#else
292#define BLUETOOTH_PROXY_MAX_CONNECTIONS 0
293#endif
294#define BLUETOOTH_PROXY_ADVERTISEMENT_BATCH_SIZE 16
295#endif
296
297// ESP32-specific feature flags
298#ifdef USE_ESP32
299#define USE_ESP32_CRASH_HANDLER
300#define USE_ESP32_INTERNAL_GPIO
301#define USE_MQTT_IDF_ENQUEUE
302#define USE_ESPHOME_TASK_LOG_BUFFER
303#define ESPHOME_TASK_LOG_BUFFER_SIZE 768
304#define USE_OTA_ROLLBACK
305#define USE_OTA_SIGNED_VERIFICATION
306#define USE_OTA_SIGNED_VERIFICATION_MULTI_KEY
307// Stub values for tooling; a real build's codegen emits these from verification_keys.
308#define OTA_TRUSTED_KEY_COUNT 1
309#define OTA_TRUSTED_KEY_DIGESTS \
310 { \
311 { 0 } \
312 }
313#define USE_OTA_DOWNGRADE_PROTECTION
314#define USE_ESP32_MIN_CHIP_REVISION_SET
315#define USE_ESP32_RTC_PREFERENCES
316#define USE_ESP32_SRAM1_AS_IRAM
317#define USE_ESPNOW
318#define USE_ESPNOW_MAX_PAYLOAD_SIZE 1470
319
320#define USE_CAPTIVE_PORTAL
321#define USE_WIFI_SCAN_RESULTS_LOCK
322#define USE_ESP32_BLE
323#define USE_ESP32_BLE_MAX_CONNECTIONS 3
324#define USE_ESP32_BLE_CLIENT
325#define USE_ESP32_BLE_DEVICE
326#define USE_ESP32_BLE_SERVER
327#define USE_ESP32_BLE_UUID
328#define USE_ESP32_BLE_ADVERTISING
329#define USE_ESP32_BLE_SERVER_SET_VALUE_ACTION
330#define USE_ESP32_BLE_SERVER_DESCRIPTOR_SET_VALUE_ACTION
331#define USE_ESP32_BLE_SERVER_NOTIFY_ACTION
332#define USE_ESP32_BLE_SERVER_CHARACTERISTIC_ON_WRITE
333#define USE_ESP32_BLE_SERVER_DESCRIPTOR_ON_WRITE
334#define USE_ESP32_BLE_SERVER_ON_CONNECT
335#define USE_ESP32_BLE_SERVER_ON_DISCONNECT
336#define USE_ESP32_BLE_TRACKER
337#define USE_BLE_GATT_CLIENT
338#define ESPHOME_BLE_GATT_CLIENT_COUNT 1
339#define ESPHOME_ESP32_BLE_TRACKER_LISTENER_COUNT 1
340#define ESPHOME_ESP32_BLE_TRACKER_CLIENT_COUNT 1
341#define ESPHOME_BLE_DEVICE_BASE_LISTENER_COUNT 1
342#define ESPHOME_ESP32_BLE_GAP_EVENT_HANDLER_COUNT 2
343#define ESPHOME_ESP32_BLE_GAP_SCAN_EVENT_HANDLER_COUNT 1
344#define ESPHOME_ESP32_BLE_GATTC_EVENT_HANDLER_COUNT 1
345#define ESPHOME_ESP32_BLE_GATTS_EVENT_HANDLER_COUNT 1
346#define ESPHOME_ESP32_BLE_BLE_STATUS_EVENT_HANDLER_COUNT 2
347#define ESPHOME_ESP32_BLE_EXTENDED_AUTH_PARAMS
348#define ESPHOME_LOOP_TASK_STACK_SIZE 8192
349#define USE_ESP32_CAMERA_JPEG_ENCODER
350#define USE_HTTP_REQUEST_RESPONSE
351#define USE_I2C
352#define USE_IMPROV
353#define USE_ESP32_IMPROV_NEXT_URL
354#define USE_MICROPHONE
355#define USE_PSRAM
356#define USE_SENDSPIN
357#define USE_SENDSPIN_ARTWORK
358#define USE_SENDSPIN_CONTROLLER
359#define USE_SENDSPIN_METADATA
360#define USE_SENDSPIN_PLAYER
361#define USE_SENDSPIN_VISUALIZER
362#define USE_SENDSPIN_PORT 8928 // NOLINT
363#define USE_SOCKET_IMPL_BSD_SOCKETS
364#define USE_LWIP_FAST_SELECT
365
366#define USE_SPEAKER
367#define USE_SPEAKER_MEDIA_PLAYER_ON_OFF
368#define USE_SPI
369#define USE_SPI_PSRAM_DMA
370#define USE_VOICE_ASSISTANT
371#define USE_WEBSERVER
372#define USE_WEBSERVER_AUTH
373#define USE_WEBSERVER_AUTH_DIGEST
374#define USE_WEBSERVER_OTA
375#define USE_WEBSERVER_PORT 80 // NOLINT
376#define USE_WEBSERVER_GZIP
377#define USE_WEBSERVER_SORTING
378#define USE_WEBSERVER_ALLOWED_ORIGINS
379#define WEB_SERVER_DEFAULT_HEADERS_COUNT 1
380#define USE_CAPTIVE_PORTAL_GZIP
381#define USE_WIFI_11KV_SUPPORT
382#define USE_WIFI_FAST_CONNECT
383#define USE_WIFI_FAST_CONNECT_IN_FLASH
384#define USE_WIFI_PHY_MODE
385#define USE_WIFI_IP_STATE_LISTENERS
386#define USE_WIFI_SCAN_RESULTS_LISTENERS
387#define USE_WIFI_CONNECT_STATE_LISTENERS
388#define USE_WIFI_POWER_SAVE_LISTENERS
389#define USE_WIFI_CONNECT_TRIGGER
390#define USE_WIFI_DISCONNECT_TRIGGER
391#define ESPHOME_WIFI_IP_STATE_LISTENERS 2
392#define ESPHOME_WIFI_SCAN_RESULTS_LISTENERS 2
393#define ESPHOME_WIFI_CONNECT_STATE_LISTENERS 2
394#define ESPHOME_WIFI_POWER_SAVE_LISTENERS 2
395#define USE_WIFI_RUNTIME_POWER_SAVE
396#define USE_WIFI_RUNTIME_ROAMING_SUPPRESSION
397#define USB_HOST_MAX_REQUESTS 16
398#define USB_HOST_MAX_PACKET_SIZE 64
399#define USB_UART_OUTPUT_CHUNK_COUNT 5
400
401#ifdef USE_ARDUINO
402#define USE_ARDUINO_VERSION_CODE VERSION_CODE(3, 3, 7)
403#define USE_ETHERNET
404#define USE_ETHERNET_LAN8720
405#define USE_ETHERNET_RTL8201
406#define USE_ETHERNET_DP83848
407#define USE_ETHERNET_IP101
408#define USE_ETHERNET_JL1101
409#define USE_ETHERNET_KSZ8081
410#define USE_ETHERNET_LAN8670
411#define USE_ETHERNET_GENERIC
412#define USE_ETHERNET_YT8531
413#define USE_ETHERNET_SPI
414#define USE_ETHERNET_SPI_POLLING_SUPPORT
415#define USE_ETHERNET_OPENETH
416#define USE_ETHERNET_W5100
417#define USE_ETHERNET_W5500
418#define USE_ETHERNET_W6100
419#define USE_ETHERNET_W6300
420#define USE_ETHERNET_DM9051
421#define USE_ETHERNET_CH390
422#define CONFIG_ETH_SPI_ETHERNET_W5500 1
423#define CONFIG_ETH_SPI_ETHERNET_DM9051 1
424#define CONFIG_ETH_USE_ESP32_EMAC 1
425#define USE_ETHERNET_MANUAL_IP
426#define USE_ETHERNET_IP_STATE_LISTENERS
427#define USE_ETHERNET_CONNECT_TRIGGER
428#define USE_ETHERNET_DISCONNECT_TRIGGER
429#define ESPHOME_ETHERNET_IP_STATE_LISTENERS 2
430#endif
431
432#ifdef USE_ESP32
433#define USE_MICRO_WAKE_WORD
434#define USE_MICRO_WAKE_WORD_VAD
435#if defined(USE_ESP32_VARIANT_ESP32C6) || defined(USE_ESP32_VARIANT_ESP32H2)
436#define USE_OPENTHREAD
437#define USE_ZIGBEE
438#endif
439#endif
440
441#if defined(USE_ESP32_VARIANT_ESP32S2)
442#define USE_LOGGER_USB_CDC
443#define USE_LOGGER_UART_SELECTION_USB_CDC
444#elif defined(USE_ESP32_VARIANT_ESP32H21)
445#define USE_LOGGER_USB_SERIAL_JTAG
446#elif defined(USE_ESP32_VARIANT_ESP32C3) || defined(USE_ESP32_VARIANT_ESP32C5) || \
447 defined(USE_ESP32_VARIANT_ESP32C6) || defined(USE_ESP32_VARIANT_ESP32C61) || defined(USE_ESP32_VARIANT_ESP32H2) || \
448 defined(USE_ESP32_VARIANT_ESP32H21) || defined(USE_ESP32_VARIANT_ESP32H4) || defined(USE_ESP32_VARIANT_ESP32P4) || \
449 defined(USE_ESP32_VARIANT_ESP32S3) || defined(USE_ESP32_VARIANT_ESP32S31)
450#define USE_LOGGER_USB_CDC
451#define USE_LOGGER_UART_SELECTION_USB_CDC
452#define USE_LOGGER_USB_SERIAL_JTAG
453#define USE_LOGGER_UART_SELECTION_USB_SERIAL_JTAG
454#endif
455#endif
456
457// ESP8266-specific feature flags
458#ifdef USE_ESP8266
459#define USE_ADC_SENSOR_VCC
460#define USE_ESP8266_CRASH_HANDLER
461#define USE_ARDUINO_VERSION_CODE VERSION_CODE(3, 1, 2)
462#define USE_CAPTIVE_PORTAL
463#define USE_WIFI_SCAN_RESULTS_LOCK
464#define USE_ESP8266_LOGGER_SERIAL
465#define USE_ESP8266_LOGGER_SERIAL1
466#define USE_ESP8266_PREFERENCES_FLASH
467#define USE_ESP8266_UART_SERIAL
468#define USE_ESP8266_UART_SERIAL1
469#define USE_HTTP_REQUEST_ESP8266_HTTPS
470#define USE_HTTP_REQUEST_RESPONSE
471#define USE_I2C
472#define USE_SOCKET_IMPL_LWIP_TCP
473
474#define USE_SPI
475
476// Dummy firmware payload for shelly_dimmer
477#define USE_SHD_FIRMWARE_MAJOR_VERSION 56
478#define USE_SHD_FIRMWARE_MINOR_VERSION 5
479// clang-format off
480#define USE_SHD_FIRMWARE_DATA \
481 {}
482// clang-format on
483
484#define USE_WEBSERVER
485#define USE_WEBSERVER_AUTH
486#define USE_WEBSERVER_AUTH_DIGEST
487#define USE_WEBSERVER_PORT 80 // NOLINT
488#endif
489
490// USE_RP2 is the canonical platform define for the RP2 chip family. The
491// rp2/__init__.py codegen also defines USE_RP2040 as a back-compat alias
492// for external custom components that may still test for it.
493#ifdef USE_RP2
494#define USE_ARDUINO_VERSION_CODE VERSION_CODE(6, 0, 0)
495#define USE_RP2_CRASH_HANDLER
496#define USE_HTTP_REQUEST_RESPONSE
497#define USE_I2C
498#define USE_LOGGER_USB_CDC
499#define USE_SOCKET_IMPL_LWIP_TCP
500#define USE_RP2040_BLE
501#define USE_RP2_BLE_TRACKER
502#define RP2040_BLE_SCAN_LISTENER_COUNT 1
503#define ESPHOME_BLE_DEVICE_BASE_LISTENER_COUNT 1
504#define USE_BLE_SCAN_RESPONSE_MERGER
505#define USE_BLE_GATT_CLIENT
506#define ESPHOME_BLE_GATT_CLIENT_COUNT 3
507#define USE_RP2040_VARIANT_RP2040
508#define USE_SPI
509#ifndef USE_ETHERNET
510#define USE_ETHERNET
511#endif
512#ifndef USE_ETHERNET_SPI
513#define USE_ETHERNET_SPI
514#endif
515#define USE_ETHERNET_W5500
516#define USE_WIFI_IP_STATE_LISTENERS
517#define ESPHOME_WIFI_IP_STATE_LISTENERS 2
518#define USE_ETHERNET_IP_STATE_LISTENERS
519#define ESPHOME_ETHERNET_IP_STATE_LISTENERS 2
520#endif
521
522#ifdef USE_LIBRETINY
523#define USE_BK72XX_BLE
524#define BK72XX_BLE_SCAN_LISTENER_COUNT 1
525#define USE_LN882H_BLE
526#define LN882H_BLE_SCAN_LISTENER_COUNT 1
527// One tracker arm per build: ln882x gets its real hub; bk72xx also stands in
528// for hub-less LibreTiny chips (rtl87xx) so bluetooth_proxy.h has a BLEHub
529// to parse against.
530#ifdef USE_LN882X
531#define USE_LN882H_BLE_TRACKER
532#else
533#define USE_BK72XX_BLE_TRACKER
534#endif
535#define ESPHOME_BLE_DEVICE_BASE_LISTENER_COUNT 1
536#define USE_BLE_SCAN_RESPONSE_MERGER
537#define USE_CAPTIVE_PORTAL
538#define USE_WIFI_SCAN_RESULTS_LOCK
539#define USE_SOCKET_IMPL_LWIP_SOCKETS
540#define USE_LWIP_FAST_SELECT
541#define USE_WEBSERVER
542#define USE_WEBSERVER_AUTH
543#define USE_WEBSERVER_AUTH_DIGEST
544#define USE_WEBSERVER_PORT 80 // NOLINT
545#define USE_ESPHOME_TASK_LOG_BUFFER
546#define ESPHOME_TASK_LOG_BUFFER_SIZE 768
547#endif
548
549#ifdef USE_HOST
550#define USE_HTTP_REQUEST_RESPONSE
551// Host only: the uart arm would shadow the native logger UART arms in other envs
552#define USE_IMPROV_SERIAL_UART
553#define USE_SOCKET_IMPL_BSD_SOCKETS
554#define USE_ESPHOME_TASK_LOG_BUFFER
555#define ESPHOME_TASK_LOG_BUFFER_SIZE 64
556#endif
557
558#ifdef USE_NRF52
559#define ESPHOME_BLE_NUS_TX_RING_BUFFER_SIZE 512
560#define ESPHOME_BLE_NUS_RX_RING_BUFFER_SIZE 512
561#define USE_ESPHOME_TASK_LOG_BUFFER
562#define ESPHOME_TASK_LOG_BUFFER_SIZE 768
563#define USE_LOGGER_EARLY_MESSAGE
564#define USE_LOGGER_UART_SELECTION_USB_CDC
565#define USE_LOGGER_USB_CDC
566#define USE_LOGGER_WAIT_FOR_CDC
567#define USE_NRF52_DFU
568#define USE_NRF52_REG0_VOUT 5
569#define USE_NRF52_UICR_ERASE
570#define USE_OTA_ROLLBACK
571#define USE_SOFTDEVICE_ID 7
572#define USE_SOFTDEVICE_VERSION 1
573#define USE_ZIGBEE
574#define USE_ZIGBEE_WIPE_ON_BOOT
575#define USE_ZIGBEE_WIPE_ON_BOOT_MAGIC 1
576#define ZIGBEE_ENDPOINTS_COUNT 8
577#endif
578
579// Disabled feature flags
580// #define USE_BSEC // Requires a library with proprietary license
581// #define USE_BSEC2 // Requires a library with proprietary license
582
583#define USE_DASHBOARD_IMPORT
584
585// Default counts for static analysis
586#define CONTROLLER_REGISTRY_MAX 2
587#define ESPHOME_AREA_COUNT 10
588#define ESPHOME_COMPONENT_COUNT 50
589#define ESPHOME_DEVICE_COUNT 10
590#define ESPHOME_ENTITY_ALARM_CONTROL_PANEL_COUNT 1
591#define ESPHOME_ENTITY_BINARY_SENSOR_COUNT 1
592#define ESPHOME_ENTITY_BUTTON_COUNT 1
593#define ESPHOME_ENTITY_CLIMATE_COUNT 1
594#define ESPHOME_ENTITY_COVER_COUNT 1
595#define ESPHOME_ENTITY_DATE_COUNT 1
596#define ESPHOME_ENTITY_DATETIME_COUNT 1
597#define ESPHOME_ENTITY_EVENT_COUNT 1
598#define ESPHOME_ENTITY_FAN_COUNT 1
599#define ESPHOME_ENTITY_INFRARED_COUNT 1
600#define ESPHOME_ENTITY_LIGHT_COUNT 1
601#define ESPHOME_ENTITY_LOCK_COUNT 1
602#define ESPHOME_ENTITY_MEDIA_PLAYER_COUNT 1
603#define ESPHOME_ENTITY_NUMBER_COUNT 1
604#define ESPHOME_ENTITY_RADIO_FREQUENCY_COUNT 1
605#define ESPHOME_ENTITY_SELECT_COUNT 1
606#define ESPHOME_ENTITY_SENSOR_COUNT 1
607#define ESPHOME_ENTITY_SWITCH_COUNT 1
608#define ESPHOME_ENTITY_TEXT_COUNT 1
609#define ESPHOME_ENTITY_TEXT_SENSOR_COUNT 1
610#define ESPHOME_ENTITY_TIME_COUNT 1
611#define ESPHOME_ENTITY_UPDATE_COUNT 1
612#define ESPHOME_ENTITY_VALVE_COUNT 1
613#define ESPHOME_ENTITY_WATER_HEATER_COUNT 1
614#define ESPHOME_MAX_USB_CDC_INSTANCES 1