From 4e5ff2e06d32a91356996f70ca4d73ec36eb391a Mon Sep 17 00:00:00 2001 From: Tomasz Duda Date: Sun, 12 May 2024 14:05:42 +0200 Subject: [PATCH] generate zephyr,user during configuration --- esphome/components/adc/sensor.py | 10 ++-------- esphome/components/zephyr/__init__.py | 24 ++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/esphome/components/adc/sensor.py b/esphome/components/adc/sensor.py index 1008706a8c..8d4c45427a 100644 --- a/esphome/components/adc/sensor.py +++ b/esphome/components/adc/sensor.py @@ -25,6 +25,7 @@ from . import ( from esphome.components.zephyr import ( zephyr_add_overlay, zephyr_add_prj_conf, + zephyr_add_user, ) AUTO_LOAD = ["voltage_sampler"] @@ -105,14 +106,7 @@ async def to_code(config): adc = cg.new_Pvariable(nrf_saadc, rhs) cg.add(var.set_adc_channel(adc)) gain = "ADC_GAIN_1_6" - zephyr_add_overlay( - """ -/ { - zephyr,user { - io-channels = <&adc 0>, <&adc 1>, <&adc 2>; - }; -};""" - ) + zephyr_add_user("io-channels", f"<&adc {channel_id}>") zephyr_add_overlay( f""" &adc {{ diff --git a/esphome/components/zephyr/__init__.py b/esphome/components/zephyr/__init__.py index c1e8e7c6e4..a637f1541c 100644 --- a/esphome/components/zephyr/__init__.py +++ b/esphome/components/zephyr/__init__.py @@ -25,12 +25,15 @@ from .const import ( AUTO_LOAD = ["preferences"] KEY_BOARD = "board" +KEY_USER = "user" + def zephyr_set_core_data(config): CORE.data[KEY_ZEPHYR] = {} CORE.data[KEY_ZEPHYR][KEY_BOARD] = config[CONF_BOARD] CORE.data[KEY_ZEPHYR][KEY_PRJ_CONF] = {} CORE.data[KEY_ZEPHYR][KEY_OVERLAY] = "" + CORE.data[KEY_ZEPHYR][KEY_USER] = {} CORE.data[KEY_ZEPHYR][KEY_BOOTLOADER] = config[KEY_BOOTLOADER] CORE.data[KEY_ZEPHYR][KEY_EXTRA_BUILD_FILES] = {} return config @@ -55,6 +58,12 @@ def zephyr_add_prj_conf(name: str, value: PrjConfValueType, required: bool = Tru CORE.data[KEY_ZEPHYR][KEY_PRJ_CONF][name] = (value, required) +def zephyr_add_user(key, value): + if key not in CORE.data[KEY_ZEPHYR][KEY_USER]: + CORE.data[KEY_ZEPHYR][KEY_USER][key] = [] + CORE.data[KEY_ZEPHYR][KEY_USER][key] += [value] + + def zephyr_add_overlay(content): CORE.data[KEY_ZEPHYR][KEY_OVERLAY] += content @@ -143,7 +152,8 @@ def zephyr_add_cdc_acm(config): # Called by writer.py def copy_files(): want_opts = CORE.data[KEY_ZEPHYR][KEY_PRJ_CONF] - contents = ( + + prj_conf = ( "\n".join( f"{name}={_format_prj_conf_val(value[0])}" for name, value in sorted(want_opts.items()) @@ -151,7 +161,17 @@ def copy_files(): + "\n" ) - write_file_if_changed(CORE.relative_build_path("zephyr/prj.conf"), contents) + write_file_if_changed(CORE.relative_build_path("zephyr/prj.conf"), prj_conf) + + zephyr_add_overlay( + f""" +/ {{ + zephyr,user {{ + {[f"{key} = {', '.join(value)};" for key, value in CORE.data[KEY_ZEPHYR][KEY_USER].items()][0]} +}}; +}};""" + ) + write_file_if_changed( CORE.relative_build_path("zephyr/app.overlay"), CORE.data[KEY_ZEPHYR][KEY_OVERLAY],