mirror of
https://github.com/esphome/esphome.git
synced 2025-04-13 14:20:29 +01:00
[nrf52, core] unified way how all platforms handle SplitDefault (#7715)
Co-authored-by: Tomasz Duda <tomaszduda23@gmai.com> Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
parent
476f1b701b
commit
aed5020a83
@ -1641,140 +1641,39 @@ class GenerateID(Optional):
|
||||
super().__init__(key, default=lambda: None)
|
||||
|
||||
|
||||
def _get_priority_default(*args):
|
||||
for arg in args:
|
||||
if arg is not vol.UNDEFINED:
|
||||
return arg
|
||||
return vol.UNDEFINED
|
||||
def _get_default_key(*args):
|
||||
return ["_".join([CORE.target_platform] + list(args))]
|
||||
|
||||
|
||||
class SplitDefault(Optional):
|
||||
"""Mark this key to have a split default for ESP8266/ESP32."""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
key,
|
||||
esp8266=vol.UNDEFINED,
|
||||
esp32=vol.UNDEFINED,
|
||||
esp32_arduino=vol.UNDEFINED,
|
||||
esp32_idf=vol.UNDEFINED,
|
||||
esp32_s2=vol.UNDEFINED,
|
||||
esp32_s2_arduino=vol.UNDEFINED,
|
||||
esp32_s2_idf=vol.UNDEFINED,
|
||||
esp32_s3=vol.UNDEFINED,
|
||||
esp32_s3_arduino=vol.UNDEFINED,
|
||||
esp32_s3_idf=vol.UNDEFINED,
|
||||
esp32_c3=vol.UNDEFINED,
|
||||
esp32_c3_arduino=vol.UNDEFINED,
|
||||
esp32_c3_idf=vol.UNDEFINED,
|
||||
esp32_c6=vol.UNDEFINED,
|
||||
esp32_c6_arduino=vol.UNDEFINED,
|
||||
esp32_c6_idf=vol.UNDEFINED,
|
||||
esp32_h2=vol.UNDEFINED,
|
||||
esp32_h2_arduino=vol.UNDEFINED,
|
||||
esp32_h2_idf=vol.UNDEFINED,
|
||||
rp2040=vol.UNDEFINED,
|
||||
bk72xx=vol.UNDEFINED,
|
||||
rtl87xx=vol.UNDEFINED,
|
||||
host=vol.UNDEFINED,
|
||||
):
|
||||
def __init__(self, key, **kwargs):
|
||||
super().__init__(key)
|
||||
self._esp8266_default = vol.default_factory(esp8266)
|
||||
self._esp32_arduino_default = vol.default_factory(
|
||||
_get_priority_default(esp32_arduino, esp32)
|
||||
)
|
||||
self._esp32_idf_default = vol.default_factory(
|
||||
_get_priority_default(esp32_idf, esp32)
|
||||
)
|
||||
self._esp32_s2_arduino_default = vol.default_factory(
|
||||
_get_priority_default(esp32_s2_arduino, esp32_s2, esp32_arduino, esp32)
|
||||
)
|
||||
self._esp32_s2_idf_default = vol.default_factory(
|
||||
_get_priority_default(esp32_s2_idf, esp32_s2, esp32_idf, esp32)
|
||||
)
|
||||
self._esp32_s3_arduino_default = vol.default_factory(
|
||||
_get_priority_default(esp32_s3_arduino, esp32_s3, esp32_arduino, esp32)
|
||||
)
|
||||
self._esp32_s3_idf_default = vol.default_factory(
|
||||
_get_priority_default(esp32_s3_idf, esp32_s3, esp32_idf, esp32)
|
||||
)
|
||||
self._esp32_c3_arduino_default = vol.default_factory(
|
||||
_get_priority_default(esp32_c3_arduino, esp32_c3, esp32_arduino, esp32)
|
||||
)
|
||||
self._esp32_c3_idf_default = vol.default_factory(
|
||||
_get_priority_default(esp32_c3_idf, esp32_c3, esp32_idf, esp32)
|
||||
)
|
||||
self._esp32_c6_arduino_default = vol.default_factory(
|
||||
_get_priority_default(esp32_c6_arduino, esp32_c6, esp32_arduino, esp32)
|
||||
)
|
||||
self._esp32_c6_idf_default = vol.default_factory(
|
||||
_get_priority_default(esp32_c6_idf, esp32_c6, esp32_idf, esp32)
|
||||
)
|
||||
self._esp32_h2_arduino_default = vol.default_factory(
|
||||
_get_priority_default(esp32_h2_arduino, esp32_h2, esp32_arduino, esp32)
|
||||
)
|
||||
self._esp32_h2_idf_default = vol.default_factory(
|
||||
_get_priority_default(esp32_h2_idf, esp32_h2, esp32_idf, esp32)
|
||||
)
|
||||
self._rp2040_default = vol.default_factory(rp2040)
|
||||
self._bk72xx_default = vol.default_factory(bk72xx)
|
||||
self._rtl87xx_default = vol.default_factory(rtl87xx)
|
||||
self._host_default = vol.default_factory(host)
|
||||
|
||||
self._defaults = {}
|
||||
|
||||
for platform_key, value in kwargs.items():
|
||||
self._defaults[platform_key] = vol.default_factory(value)
|
||||
|
||||
@property
|
||||
def default(self):
|
||||
if CORE.is_esp8266:
|
||||
return self._esp8266_default
|
||||
keys = []
|
||||
if CORE.is_esp32:
|
||||
from esphome.components.esp32 import get_esp32_variant
|
||||
from esphome.components.esp32.const import (
|
||||
VARIANT_ESP32C3,
|
||||
VARIANT_ESP32C6,
|
||||
VARIANT_ESP32H2,
|
||||
VARIANT_ESP32S2,
|
||||
VARIANT_ESP32S3,
|
||||
)
|
||||
from esphome.components.esp32.const import VARIANT_ESP32
|
||||
|
||||
variant = get_esp32_variant()
|
||||
if variant == VARIANT_ESP32S2:
|
||||
if CORE.using_arduino:
|
||||
return self._esp32_s2_arduino_default
|
||||
if CORE.using_esp_idf:
|
||||
return self._esp32_s2_idf_default
|
||||
elif variant == VARIANT_ESP32S3:
|
||||
if CORE.using_arduino:
|
||||
return self._esp32_s3_arduino_default
|
||||
if CORE.using_esp_idf:
|
||||
return self._esp32_s3_idf_default
|
||||
elif variant == VARIANT_ESP32C3:
|
||||
if CORE.using_arduino:
|
||||
return self._esp32_c3_arduino_default
|
||||
if CORE.using_esp_idf:
|
||||
return self._esp32_c3_idf_default
|
||||
elif variant == VARIANT_ESP32C6:
|
||||
if CORE.using_arduino:
|
||||
return self._esp32_c6_arduino_default
|
||||
if CORE.using_esp_idf:
|
||||
return self._esp32_c6_idf_default
|
||||
elif variant == VARIANT_ESP32H2:
|
||||
if CORE.using_arduino:
|
||||
return self._esp32_h2_arduino_default
|
||||
if CORE.using_esp_idf:
|
||||
return self._esp32_h2_idf_default
|
||||
else:
|
||||
if CORE.using_arduino:
|
||||
return self._esp32_arduino_default
|
||||
if CORE.using_esp_idf:
|
||||
return self._esp32_idf_default
|
||||
if CORE.is_rp2040:
|
||||
return self._rp2040_default
|
||||
if CORE.is_bk72xx:
|
||||
return self._bk72xx_default
|
||||
if CORE.is_rtl87xx:
|
||||
return self._rtl87xx_default
|
||||
if CORE.is_host:
|
||||
return self._host_default
|
||||
raise NotImplementedError
|
||||
variant = get_esp32_variant().replace(VARIANT_ESP32, "").lower()
|
||||
framework = CORE.target_framework.replace("esp-", "")
|
||||
if variant:
|
||||
keys += _get_default_key(variant, framework)
|
||||
keys += _get_default_key(variant)
|
||||
keys += _get_default_key(framework)
|
||||
keys += _get_default_key()
|
||||
for key in keys:
|
||||
if self._defaults.get(key) is not None:
|
||||
return self._defaults[key]
|
||||
return vol.default_factory(vol.UNDEFINED)
|
||||
|
||||
@default.setter
|
||||
def default(self, value):
|
||||
|
Loading…
x
Reference in New Issue
Block a user