ESPHome 2026.9.0
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// Kept in the Arduino block so clang-tidy sees both scan storage paths
264#define USE_WIFI_MULTI_SSID
265#endif
266
267// Platforms with native 64-bit time sources (no rollover tracking needed)
268#if defined(USE_ESP32) || defined(USE_HOST) || defined(USE_ZEPHYR) || defined(USE_RP2)
269#define USE_NATIVE_64BIT_TIME
270#endif
271
272// bluetooth_proxy runs on any platform with a BLE hub (advertisement-only off
273// esp32). Declared here per analysis ENVIRONMENT, not per hub platform —
274// USE_LIBRETINY also covers chips with no hub, e.g. rtl87xx (the authoritative
275// gate is _HUB_PLATFORMS in bluetooth_proxy/__init__.py) — so the neutral
276// declarations in bluetooth_proxy.h are parsed under LibreTiny static analysis
277// (the header is included by api_connection.cpp, which the tidy filter selects;
278// the proxy's own .cpp is not a selected translation unit). Not declared for
279// platforms whose API/network types the proxy header cannot assume.
280#if defined(USE_ESP32) || defined(USE_LIBRETINY) || defined(USE_RP2)
281#define USE_BLUETOOTH_PROXY
282// Mirror the codegen values per platform: _to_code_esp32() emits the connection
283// count (default 3) and the scanner-state push slot, _to_code_ble_hub() emits
284// the slot count (3 on rp2, 0 on advertisement-only hubs) — so static analysis
285// checks the same instantiations a real build produces.
286#ifdef USE_ESP32
287#define USE_BLE_SCANNER_STATE_CALLBACK
288#define BLUETOOTH_PROXY_MAX_CONNECTIONS 3
289#define USE_BLUETOOTH_PROXY_CONNECTIONS
290#elif defined(USE_RP2)
291#define BLUETOOTH_PROXY_MAX_CONNECTIONS 3
292#define USE_BLUETOOTH_PROXY_CONNECTIONS
293#else
294#define BLUETOOTH_PROXY_MAX_CONNECTIONS 0
295#endif
296#define BLUETOOTH_PROXY_ADVERTISEMENT_BATCH_SIZE 16
297#endif
298
299// ESP32-specific feature flags
300#ifdef USE_ESP32
301#define USE_ESP32_CRASH_HANDLER
302#define USE_ESP32_INTERNAL_GPIO
303#define USE_MQTT_IDF_ENQUEUE
304#define USE_ESPHOME_TASK_LOG_BUFFER
305#define ESPHOME_TASK_LOG_BUFFER_SIZE 768
306#define USE_OTA_ROLLBACK
307#define USE_OTA_SIGNED_VERIFICATION
308#define USE_OTA_SIGNED_VERIFICATION_MULTI_KEY
309// Stub values for tooling; a real build's codegen emits these from verification_keys.
310#define OTA_TRUSTED_KEY_COUNT 1
311#define OTA_TRUSTED_KEY_DIGESTS \
312 { \
313 { 0 } \
314 }
315#define USE_OTA_DOWNGRADE_PROTECTION
316#define USE_ESP32_MIN_CHIP_REVISION_SET
317#define USE_ESP32_RTC_PREFERENCES
318#define USE_ESP32_SRAM1_AS_IRAM
319#define USE_ESPNOW
320#define USE_ESPNOW_MAX_PAYLOAD_SIZE 1470
321
322#define USE_CAPTIVE_PORTAL
323#define USE_WIFI_SCAN_RESULTS_LOCK
324#define USE_ESP32_BLE
325#define USE_ESP32_BLE_MAX_CONNECTIONS 3
326#define USE_ESP32_BLE_CLIENT
327#define USE_ESP32_BLE_DEVICE
328#define USE_ESP32_BLE_SERVER
329#define USE_ESP32_BLE_UUID
330#define USE_ESP32_BLE_ADVERTISING
331#define USE_ESP32_BLE_SERVER_SET_VALUE_ACTION
332#define USE_ESP32_BLE_SERVER_DESCRIPTOR_SET_VALUE_ACTION
333#define USE_ESP32_BLE_SERVER_NOTIFY_ACTION
334#define USE_ESP32_BLE_SERVER_CHARACTERISTIC_ON_WRITE
335#define USE_ESP32_BLE_SERVER_DESCRIPTOR_ON_WRITE
336#define USE_ESP32_BLE_SERVER_ON_CONNECT
337#define USE_ESP32_BLE_SERVER_ON_DISCONNECT
338#define USE_ESP32_BLE_TRACKER
339#define USE_BLE_GATT_CLIENT
340#define ESPHOME_BLE_GATT_CLIENT_COUNT 1
341#define ESPHOME_ESP32_BLE_TRACKER_LISTENER_COUNT 1
342#define ESPHOME_ESP32_BLE_TRACKER_CLIENT_COUNT 1
343#define ESPHOME_BLE_DEVICE_BASE_LISTENER_COUNT 1
344#define ESPHOME_ESP32_BLE_GAP_EVENT_HANDLER_COUNT 2
345#define ESPHOME_ESP32_BLE_GAP_SCAN_EVENT_HANDLER_COUNT 1
346#define ESPHOME_ESP32_BLE_GATTC_EVENT_HANDLER_COUNT 1
347#define ESPHOME_ESP32_BLE_GATTS_EVENT_HANDLER_COUNT 1
348#define ESPHOME_ESP32_BLE_BLE_STATUS_EVENT_HANDLER_COUNT 2
349#define ESPHOME_ESP32_BLE_EXTENDED_AUTH_PARAMS
350#define ESPHOME_LOOP_TASK_STACK_SIZE 8192
351#define USE_ESP32_CAMERA_JPEG_ENCODER
352#define USE_HTTP_REQUEST_RESPONSE
353#define USE_I2C
354#define USE_IMPROV
355#define USE_ESP32_IMPROV_NEXT_URL
356#define USE_MICROPHONE
357#define USE_PSRAM
358#define USE_SENDSPIN
359#define USE_SENDSPIN_ARTWORK
360#define USE_SENDSPIN_CONTROLLER
361#define USE_SENDSPIN_METADATA
362#define USE_SENDSPIN_PLAYER
363#define USE_SENDSPIN_VISUALIZER
364#define USE_SENDSPIN_PORT 8928 // NOLINT
365#define USE_SOCKET_IMPL_BSD_SOCKETS
366#define USE_LWIP_FAST_SELECT
367
368#define USE_SPEAKER
369#define USE_SPEAKER_MEDIA_PLAYER_ON_OFF
370#define USE_SPI
371#define USE_SPI_PSRAM_DMA
372#define USE_VOICE_ASSISTANT
373#define USE_WEBSERVER
374#define USE_WEBSERVER_AUTH
375#define USE_WEBSERVER_AUTH_DIGEST
376#define USE_WEBSERVER_OTA
377#define USE_WEBSERVER_PORT 80 // NOLINT
378#define USE_WEBSERVER_GZIP
379#define USE_WEBSERVER_SORTING
380#define USE_WEBSERVER_ALLOWED_ORIGINS
381#define WEB_SERVER_DEFAULT_HEADERS_COUNT 1
382#define USE_CAPTIVE_PORTAL_GZIP
383#define USE_WIFI_11KV_SUPPORT
384#define USE_WIFI_FAST_CONNECT
385#define USE_WIFI_FAST_CONNECT_IN_FLASH
386#define USE_WIFI_PHY_MODE
387#define USE_WIFI_IP_STATE_LISTENERS
388#define USE_WIFI_SCAN_RESULTS_LISTENERS
389#define USE_WIFI_CONNECT_STATE_LISTENERS
390#define USE_WIFI_POWER_SAVE_LISTENERS
391#define USE_WIFI_CONNECT_TRIGGER
392#define USE_WIFI_DISCONNECT_TRIGGER
393#define ESPHOME_WIFI_IP_STATE_LISTENERS 2
394#define ESPHOME_WIFI_SCAN_RESULTS_LISTENERS 2
395#define ESPHOME_WIFI_CONNECT_STATE_LISTENERS 2
396#define ESPHOME_WIFI_POWER_SAVE_LISTENERS 2
397#define USE_WIFI_RUNTIME_POWER_SAVE
398#define USE_WIFI_RUNTIME_ROAMING_SUPPRESSION
399#define USB_HOST_MAX_REQUESTS 16
400#define USB_HOST_MAX_PACKET_SIZE 64
401#define USB_UART_OUTPUT_CHUNK_COUNT 5
402
403#ifdef USE_ARDUINO
404#define USE_ARDUINO_VERSION_CODE VERSION_CODE(3, 3, 7)
405#define USE_ETHERNET
406#define USE_ETHERNET_LAN8720
407#define USE_ETHERNET_RTL8201
408#define USE_ETHERNET_DP83848
409#define USE_ETHERNET_IP101
410#define USE_ETHERNET_JL1101
411#define USE_ETHERNET_KSZ8081
412#define USE_ETHERNET_LAN8670
413#define USE_ETHERNET_GENERIC
414#define USE_ETHERNET_YT8531
415#define USE_ETHERNET_SPI
416#define USE_ETHERNET_SPI_POLLING_SUPPORT
417#define USE_ETHERNET_OPENETH
418#define USE_ETHERNET_W5100
419#define USE_ETHERNET_W5500
420#define USE_ETHERNET_W6100
421#define USE_ETHERNET_W6300
422#define USE_ETHERNET_DM9051
423#define USE_ETHERNET_CH390
424#define CONFIG_ETH_SPI_ETHERNET_W5500 1
425#define CONFIG_ETH_SPI_ETHERNET_DM9051 1
426#define CONFIG_ETH_USE_ESP32_EMAC 1
427#define USE_ETHERNET_MANUAL_IP
428#define USE_ETHERNET_IP_STATE_LISTENERS
429#define USE_ETHERNET_CONNECT_TRIGGER
430#define USE_ETHERNET_DISCONNECT_TRIGGER
431#define ESPHOME_ETHERNET_IP_STATE_LISTENERS 2
432#endif
433
434#ifdef USE_ESP32
435#define USE_MICRO_WAKE_WORD
436#define USE_MICRO_WAKE_WORD_VAD
437#if defined(USE_ESP32_VARIANT_ESP32C6) || defined(USE_ESP32_VARIANT_ESP32H2)
438#define USE_OPENTHREAD
439#define USE_ZIGBEE
440#endif
441#endif
442
443#if defined(USE_ESP32_VARIANT_ESP32S2)
444#define USE_LOGGER_USB_CDC
445#define USE_LOGGER_UART_SELECTION_USB_CDC
446#elif defined(USE_ESP32_VARIANT_ESP32H21)
447#define USE_LOGGER_USB_SERIAL_JTAG
448#elif defined(USE_ESP32_VARIANT_ESP32C3) || defined(USE_ESP32_VARIANT_ESP32C5) || \
449 defined(USE_ESP32_VARIANT_ESP32C6) || defined(USE_ESP32_VARIANT_ESP32C61) || defined(USE_ESP32_VARIANT_ESP32H2) || \
450 defined(USE_ESP32_VARIANT_ESP32H21) || defined(USE_ESP32_VARIANT_ESP32H4) || defined(USE_ESP32_VARIANT_ESP32P4) || \
451 defined(USE_ESP32_VARIANT_ESP32S3) || defined(USE_ESP32_VARIANT_ESP32S31)
452#define USE_LOGGER_USB_CDC
453#define USE_LOGGER_UART_SELECTION_USB_CDC
454#define USE_LOGGER_USB_SERIAL_JTAG
455#define USE_LOGGER_UART_SELECTION_USB_SERIAL_JTAG
456#endif
457#endif
458
459// ESP8266-specific feature flags
460#ifdef USE_ESP8266
461#define USE_ADC_SENSOR_VCC
462#define USE_ESP8266_CRASH_HANDLER
463#define USE_ARDUINO_VERSION_CODE VERSION_CODE(3, 1, 2)
464#define USE_CAPTIVE_PORTAL
465#define USE_WIFI_SCAN_RESULTS_LOCK
466#define USE_ESP8266_LOGGER_SERIAL
467#define USE_ESP8266_LOGGER_SERIAL1
468#define USE_ESP8266_PREFERENCES_FLASH
469#define USE_ESP8266_UART_SERIAL
470#define USE_ESP8266_UART_SERIAL1
471#define USE_HTTP_REQUEST_ESP8266_HTTPS
472#define USE_HTTP_REQUEST_RESPONSE
473#define USE_I2C
474#define USE_SOCKET_IMPL_LWIP_TCP
475
476#define USE_SPI
477
478// Dummy firmware payload for shelly_dimmer
479#define USE_SHD_FIRMWARE_MAJOR_VERSION 56
480#define USE_SHD_FIRMWARE_MINOR_VERSION 5
481// clang-format off
482#define USE_SHD_FIRMWARE_DATA \
483 {}
484// clang-format on
485
486#define USE_WEBSERVER
487#define USE_WEBSERVER_AUTH
488#define USE_WEBSERVER_AUTH_DIGEST
489#define USE_WEBSERVER_PORT 80 // NOLINT
490#endif
491
492// USE_RP2 is the canonical platform define for the RP2 chip family. The
493// rp2/__init__.py codegen also defines USE_RP2040 as a back-compat alias
494// for external custom components that may still test for it.
495#ifdef USE_RP2
496#define USE_ARDUINO_VERSION_CODE VERSION_CODE(6, 0, 0)
497#define USE_RP2_CRASH_HANDLER
498#define USE_HTTP_REQUEST_RESPONSE
499#define USE_I2C
500#define USE_LOGGER_USB_CDC
501#define USE_SOCKET_IMPL_LWIP_TCP
502#define USE_RP2040_BLE
503#define USE_RP2_BLE_TRACKER
504#define RP2040_BLE_SCAN_LISTENER_COUNT 1
505#define ESPHOME_BLE_DEVICE_BASE_LISTENER_COUNT 1
506#define USE_BLE_SCAN_RESPONSE_MERGER
507#define USE_BLE_GATT_CLIENT
508#define ESPHOME_BLE_GATT_CLIENT_COUNT 3
509#define USE_RP2040_VARIANT_RP2040
510#define USE_SPI
511#ifndef USE_ETHERNET
512#define USE_ETHERNET
513#endif
514#ifndef USE_ETHERNET_SPI
515#define USE_ETHERNET_SPI
516#endif
517#define USE_ETHERNET_W5500
518#define USE_WIFI_IP_STATE_LISTENERS
519#define ESPHOME_WIFI_IP_STATE_LISTENERS 2
520#define USE_ETHERNET_IP_STATE_LISTENERS
521#define ESPHOME_ETHERNET_IP_STATE_LISTENERS 2
522#endif
523
524#ifdef USE_LIBRETINY
525#define USE_BK72XX_BLE
526#define BK72XX_BLE_SCAN_LISTENER_COUNT 1
527#define USE_LN882H_BLE
528#define LN882H_BLE_SCAN_LISTENER_COUNT 1
529// One tracker arm per build: ln882x gets its real hub; bk72xx also stands in
530// for hub-less LibreTiny chips (rtl87xx) so bluetooth_proxy.h has a BLEHub
531// to parse against.
532#ifdef USE_LN882X
533#define USE_LN882H_BLE_TRACKER
534#else
535#define USE_BK72XX_BLE_TRACKER
536#endif
537#define ESPHOME_BLE_DEVICE_BASE_LISTENER_COUNT 1
538#define USE_BLE_SCAN_RESPONSE_MERGER
539#define USE_CAPTIVE_PORTAL
540#define USE_WIFI_SCAN_RESULTS_LOCK
541#define USE_SOCKET_IMPL_LWIP_SOCKETS
542#define USE_LWIP_FAST_SELECT
543#define USE_WEBSERVER
544#define USE_WEBSERVER_AUTH
545#define USE_WEBSERVER_AUTH_DIGEST
546#define USE_WEBSERVER_PORT 80 // NOLINT
547#define USE_ESPHOME_TASK_LOG_BUFFER
548#define ESPHOME_TASK_LOG_BUFFER_SIZE 768
549#endif
550
551#ifdef USE_HOST
552#define USE_HTTP_REQUEST_RESPONSE
553// Host only: the uart arm would shadow the native logger UART arms in other envs
554#define USE_IMPROV_SERIAL_UART
555#define USE_SOCKET_IMPL_BSD_SOCKETS
556#define USE_ESPHOME_TASK_LOG_BUFFER
557#define ESPHOME_TASK_LOG_BUFFER_SIZE 64
558#endif
559
560#ifdef USE_NRF52
561#define ESPHOME_BLE_NUS_TX_RING_BUFFER_SIZE 512
562#define ESPHOME_BLE_NUS_RX_RING_BUFFER_SIZE 512
563#define USE_ESPHOME_TASK_LOG_BUFFER
564#define ESPHOME_TASK_LOG_BUFFER_SIZE 768
565#define USE_LOGGER_EARLY_MESSAGE
566#define USE_LOGGER_UART_SELECTION_USB_CDC
567#define USE_LOGGER_USB_CDC
568#define USE_LOGGER_WAIT_FOR_CDC
569#define USE_NRF52_DFU
570#define USE_NRF52_REG0_VOUT 5
571#define USE_NRF52_UICR_ERASE
572#define USE_OTA_ROLLBACK
573#define USE_SOFTDEVICE_ID 7
574#define USE_SOFTDEVICE_VERSION 1
575#define USE_ZIGBEE
576#define USE_ZIGBEE_WIPE_ON_BOOT
577#define USE_ZIGBEE_WIPE_ON_BOOT_MAGIC 1
578#define ZIGBEE_ENDPOINTS_COUNT 8
579#endif
580
581// Disabled feature flags
582// #define USE_BSEC // Requires a library with proprietary license
583// #define USE_BSEC2 // Requires a library with proprietary license
584
585#define USE_DASHBOARD_IMPORT
586
587// Default counts for static analysis
588#define CONTROLLER_REGISTRY_MAX 2
589#define ESPHOME_AREA_COUNT 10
590#define ESPHOME_COMPONENT_COUNT 50
591#define ESPHOME_DEVICE_COUNT 10
592#define ESPHOME_ENTITY_ALARM_CONTROL_PANEL_COUNT 1
593#define ESPHOME_ENTITY_BINARY_SENSOR_COUNT 1
594#define ESPHOME_ENTITY_BUTTON_COUNT 1
595#define ESPHOME_ENTITY_CLIMATE_COUNT 1
596#define ESPHOME_ENTITY_COVER_COUNT 1
597#define ESPHOME_ENTITY_DATE_COUNT 1
598#define ESPHOME_ENTITY_DATETIME_COUNT 1
599#define ESPHOME_ENTITY_EVENT_COUNT 1
600#define ESPHOME_ENTITY_FAN_COUNT 1
601#define ESPHOME_ENTITY_INFRARED_COUNT 1
602#define ESPHOME_ENTITY_LIGHT_COUNT 1
603#define ESPHOME_ENTITY_LOCK_COUNT 1
604#define ESPHOME_ENTITY_MEDIA_PLAYER_COUNT 1
605#define ESPHOME_ENTITY_NUMBER_COUNT 1
606#define ESPHOME_ENTITY_RADIO_FREQUENCY_COUNT 1
607#define ESPHOME_ENTITY_SELECT_COUNT 1
608#define ESPHOME_ENTITY_SENSOR_COUNT 1
609#define ESPHOME_ENTITY_SWITCH_COUNT 1
610#define ESPHOME_ENTITY_TEXT_COUNT 1
611#define ESPHOME_ENTITY_TEXT_SENSOR_COUNT 1
612#define ESPHOME_ENTITY_TIME_COUNT 1
613#define ESPHOME_ENTITY_UPDATE_COUNT 1
614#define ESPHOME_ENTITY_VALVE_COUNT 1
615#define ESPHOME_ENTITY_WATER_HEATER_COUNT 1
616#define ESPHOME_MAX_USB_CDC_INSTANCES 1