mirror of
https://github.com/esphome/esphome.git
synced 2025-09-06 21:32:21 +01:00
[esp32] Add config option to execute from PSRAM (#9907)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
@@ -329,6 +329,28 @@ class ConfigValidationStep(abc.ABC):
|
||||
def run(self, result: Config) -> None: ... # noqa: E704
|
||||
|
||||
|
||||
class LoadTargetPlatformValidationStep(ConfigValidationStep):
|
||||
"""Load target platform step."""
|
||||
|
||||
def __init__(self, domain: str, conf: ConfigType):
|
||||
self.domain = domain
|
||||
self.conf = conf
|
||||
|
||||
def run(self, result: Config) -> None:
|
||||
if self.conf is None:
|
||||
result[self.domain] = self.conf = {}
|
||||
result.add_output_path([self.domain], self.domain)
|
||||
component = get_component(self.domain)
|
||||
|
||||
result[self.domain] = self.conf
|
||||
path = [self.domain]
|
||||
CORE.loaded_integrations.add(self.domain)
|
||||
|
||||
result.add_validation_step(
|
||||
SchemaValidationStep(self.domain, path, self.conf, component)
|
||||
)
|
||||
|
||||
|
||||
class LoadValidationStep(ConfigValidationStep):
|
||||
"""Load step, this step is called once for each domain config fragment.
|
||||
|
||||
@@ -582,16 +604,18 @@ class MetadataValidationStep(ConfigValidationStep):
|
||||
)
|
||||
return
|
||||
for i, part_conf in enumerate(self.conf):
|
||||
path = self.path + [i]
|
||||
result.add_validation_step(
|
||||
SchemaValidationStep(
|
||||
self.domain, self.path + [i], part_conf, self.comp
|
||||
)
|
||||
SchemaValidationStep(self.domain, path, part_conf, self.comp)
|
||||
)
|
||||
result.add_validation_step(FinalValidateValidationStep(path, self.comp))
|
||||
|
||||
return
|
||||
|
||||
result.add_validation_step(
|
||||
SchemaValidationStep(self.domain, self.path, self.conf, self.comp)
|
||||
)
|
||||
result.add_validation_step(FinalValidateValidationStep(self.path, self.comp))
|
||||
|
||||
|
||||
class SchemaValidationStep(ConfigValidationStep):
|
||||
@@ -628,7 +652,6 @@ class SchemaValidationStep(ConfigValidationStep):
|
||||
result.set_by_path(self.path, validated)
|
||||
|
||||
path_context.reset(token)
|
||||
result.add_validation_step(FinalValidateValidationStep(self.path, self.comp))
|
||||
|
||||
|
||||
class IDPassValidationStep(ConfigValidationStep):
|
||||
@@ -909,7 +932,7 @@ def validate_config(
|
||||
|
||||
# First run platform validation steps
|
||||
result.add_validation_step(
|
||||
LoadValidationStep(target_platform, config[target_platform])
|
||||
LoadTargetPlatformValidationStep(target_platform, config[target_platform])
|
||||
)
|
||||
result.run_validation_steps()
|
||||
|
||||
|
Reference in New Issue
Block a user