mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	[esp32] Dynamically set default framework based on variant (#9060)
This commit is contained in:
		| @@ -94,6 +94,13 @@ COMPILER_OPTIMIZATIONS = { | ||||
|     "SIZE": "CONFIG_COMPILER_OPTIMIZATION_SIZE", | ||||
| } | ||||
|  | ||||
| ARDUINO_ALLOWED_VARIANTS = [ | ||||
|     VARIANT_ESP32, | ||||
|     VARIANT_ESP32C3, | ||||
|     VARIANT_ESP32S2, | ||||
|     VARIANT_ESP32S3, | ||||
| ] | ||||
|  | ||||
|  | ||||
| def get_cpu_frequencies(*frequencies): | ||||
|     return [str(x) + "MHZ" for x in frequencies] | ||||
| @@ -143,12 +150,17 @@ def set_core_data(config): | ||||
|         CORE.data[KEY_ESP32][KEY_COMPONENTS] = {} | ||||
|     elif conf[CONF_TYPE] == FRAMEWORK_ARDUINO: | ||||
|         CORE.data[KEY_CORE][KEY_TARGET_FRAMEWORK] = "arduino" | ||||
|         if variant not in ARDUINO_ALLOWED_VARIANTS: | ||||
|             raise cv.Invalid( | ||||
|                 f"ESPHome does not support using the Arduino framework for the {variant}. Please use the ESP-IDF framework instead.", | ||||
|                 path=[CONF_FRAMEWORK, CONF_TYPE], | ||||
|             ) | ||||
|     CORE.data[KEY_CORE][KEY_FRAMEWORK_VERSION] = cv.Version.parse( | ||||
|         config[CONF_FRAMEWORK][CONF_VERSION] | ||||
|     ) | ||||
|  | ||||
|     CORE.data[KEY_ESP32][KEY_BOARD] = config[CONF_BOARD] | ||||
|     CORE.data[KEY_ESP32][KEY_VARIANT] = config[CONF_VARIANT] | ||||
|     CORE.data[KEY_ESP32][KEY_VARIANT] = variant | ||||
|     CORE.data[KEY_ESP32][KEY_EXTRA_BUILD_FILES] = {} | ||||
|  | ||||
|     return config | ||||
| @@ -618,6 +630,21 @@ ESP_IDF_FRAMEWORK_SCHEMA = cv.All( | ||||
| ) | ||||
|  | ||||
|  | ||||
| def _set_default_framework(config): | ||||
|     if CONF_FRAMEWORK not in config: | ||||
|         config = config.copy() | ||||
|  | ||||
|         variant = config[CONF_VARIANT] | ||||
|         if variant in ARDUINO_ALLOWED_VARIANTS: | ||||
|             config[CONF_FRAMEWORK] = ARDUINO_FRAMEWORK_SCHEMA({}) | ||||
|             config[CONF_FRAMEWORK][CONF_TYPE] = FRAMEWORK_ARDUINO | ||||
|         else: | ||||
|             config[CONF_FRAMEWORK] = ESP_IDF_FRAMEWORK_SCHEMA({}) | ||||
|             config[CONF_FRAMEWORK][CONF_TYPE] = FRAMEWORK_ESP_IDF | ||||
|  | ||||
|     return config | ||||
|  | ||||
|  | ||||
| FRAMEWORK_ESP_IDF = "esp-idf" | ||||
| FRAMEWORK_ARDUINO = "arduino" | ||||
| FRAMEWORK_SCHEMA = cv.typed_schema( | ||||
| @@ -627,7 +654,6 @@ FRAMEWORK_SCHEMA = cv.typed_schema( | ||||
|     }, | ||||
|     lower=True, | ||||
|     space="-", | ||||
|     default_type=FRAMEWORK_ARDUINO, | ||||
| ) | ||||
|  | ||||
|  | ||||
| @@ -654,10 +680,11 @@ CONFIG_SCHEMA = cv.All( | ||||
|             ), | ||||
|             cv.Optional(CONF_PARTITIONS): cv.file_, | ||||
|             cv.Optional(CONF_VARIANT): cv.one_of(*VARIANTS, upper=True), | ||||
|             cv.Optional(CONF_FRAMEWORK, default={}): FRAMEWORK_SCHEMA, | ||||
|             cv.Optional(CONF_FRAMEWORK): FRAMEWORK_SCHEMA, | ||||
|         } | ||||
|     ), | ||||
|     _detect_variant, | ||||
|     _set_default_framework, | ||||
|     set_core_data, | ||||
| ) | ||||
|  | ||||
|   | ||||
| @@ -67,20 +67,6 @@ esp8266: | ||||
| """ | ||||
|  | ||||
| ESP32_CONFIG = """ | ||||
| esp32: | ||||
|   board: {board} | ||||
|   framework: | ||||
|     type: arduino | ||||
| """ | ||||
|  | ||||
| ESP32S2_CONFIG = """ | ||||
| esp32: | ||||
|   board: {board} | ||||
|   framework: | ||||
|     type: esp-idf | ||||
| """ | ||||
|  | ||||
| ESP32C3_CONFIG = """ | ||||
| esp32: | ||||
|   board: {board} | ||||
|   framework: | ||||
| @@ -105,8 +91,6 @@ rtl87xx: | ||||
| HARDWARE_BASE_CONFIGS = { | ||||
|     "ESP8266": ESP8266_CONFIG, | ||||
|     "ESP32": ESP32_CONFIG, | ||||
|     "ESP32S2": ESP32S2_CONFIG, | ||||
|     "ESP32C3": ESP32C3_CONFIG, | ||||
|     "RP2040": RP2040_CONFIG, | ||||
|     "BK72XX": BK72XX_CONFIG, | ||||
|     "RTL87XX": RTL87XX_CONFIG, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user