mirror of
https://github.com/esphome/esphome.git
synced 2025-04-01 16:38:19 +01:00
let user select uart for serial ota
This commit is contained in:
parent
738b167c91
commit
61a25cf1c4
@ -311,7 +311,7 @@ async def to_code(config):
|
||||
zephyr_add_overlay("""&uart1 { status = "okay";};""")
|
||||
if config[CONF_HARDWARE_UART] == USB_CDC:
|
||||
zephyr_add_prj_conf("UART_LINE_CTRL", True)
|
||||
zephyr_add_cdc_acm(config)
|
||||
zephyr_add_cdc_acm(config, 0)
|
||||
|
||||
# Register at end for safe mode
|
||||
await cg.register_component(log, config)
|
||||
|
@ -135,7 +135,7 @@ def _format_prj_conf_val(value: PrjConfValueType) -> str:
|
||||
raise ValueError
|
||||
|
||||
|
||||
def zephyr_add_cdc_acm(config):
|
||||
def zephyr_add_cdc_acm(config, id):
|
||||
zephyr_add_prj_conf("USB_DEVICE_STACK", True)
|
||||
zephyr_add_prj_conf("USB_CDC_ACM", True)
|
||||
# prevent device to go to susspend, without this communication stop working in python
|
||||
@ -144,12 +144,12 @@ def zephyr_add_cdc_acm(config):
|
||||
# prevent logging when buffer is full
|
||||
zephyr_add_prj_conf("USB_CDC_ACM_LOG_LEVEL_WRN", True)
|
||||
zephyr_add_overlay(
|
||||
"""
|
||||
&zephyr_udc0 {
|
||||
cdc_acm_uart0: cdc_acm_uart0 {
|
||||
f"""
|
||||
&zephyr_udc0 {{
|
||||
cdc_acm_uart{id}: cdc_acm_uart{id} {{
|
||||
compatible = "zephyr,cdc-acm-uart";
|
||||
};
|
||||
};
|
||||
}};
|
||||
}};
|
||||
"""
|
||||
)
|
||||
|
||||
|
@ -6,6 +6,7 @@ from esphome.const import (
|
||||
CONF_NUM_ATTEMPTS,
|
||||
CONF_OTA,
|
||||
CONF_REBOOT_TIMEOUT,
|
||||
CONF_HARDWARE_UART,
|
||||
)
|
||||
from esphome.core import CORE, coroutine_with_priority
|
||||
import esphome.final_validate as fv
|
||||
@ -24,17 +25,23 @@ ZephyrMcumgrOTAComponent = cg.esphome_ns.namespace("zephyr_mcumgr").class_(
|
||||
)
|
||||
|
||||
CONF_BLE = "ble"
|
||||
CONF_USB_CDC = "usb_cdc"
|
||||
|
||||
|
||||
def _validate_transport(conf):
|
||||
if conf[CONF_BLE] or conf[CONF_USB_CDC]:
|
||||
if conf[CONF_BLE] or conf[CONF_HARDWARE_UART]:
|
||||
return conf
|
||||
raise cv.Invalid(
|
||||
f"At least one trasnport protocol has to be enabled. Set '{CONF_BLE}' or '{CONF_USB_CDC}'"
|
||||
f"At least one trasnport protocol has to be enabled. Set '{CONF_BLE}' or '{CONF_HARDWARE_UART}'"
|
||||
)
|
||||
|
||||
|
||||
UARTS = {
|
||||
"cdc": ("cdc_acm_uart0", 0),
|
||||
"cdc1": ("cdc_acm_uart1", 1),
|
||||
"uart0": ("uart0", -1),
|
||||
"uart1": ("uart1", -1),
|
||||
}
|
||||
|
||||
CONFIG_SCHEMA = cv.All(
|
||||
cv.Schema(
|
||||
{
|
||||
@ -44,7 +51,9 @@ CONFIG_SCHEMA = cv.All(
|
||||
): cv.positive_time_period_milliseconds,
|
||||
cv.Optional(CONF_NUM_ATTEMPTS, default="10"): cv.positive_not_null_int,
|
||||
cv.Optional(CONF_BLE, default=True): cv.boolean,
|
||||
cv.Optional(CONF_USB_CDC, default=False): cv.boolean,
|
||||
cv.Optional(
|
||||
CONF_HARDWARE_UART,
|
||||
): cv.one_of(*UARTS, lower=True),
|
||||
}
|
||||
)
|
||||
.extend(BASE_OTA_SCHEMA)
|
||||
@ -117,17 +126,19 @@ async def to_code(config):
|
||||
zephyr_add_prj_conf("MCUMGR_GRP_OS_MCUMGR_PARAMS", True)
|
||||
|
||||
zephyr_add_prj_conf("NCS_SAMPLE_MCUMGR_BT_OTA_DFU_SPEEDUP", True)
|
||||
if config[CONF_USB_CDC]:
|
||||
zephyr_add_cdc_acm(config)
|
||||
if config[CONF_HARDWARE_UART]:
|
||||
cdc_id = UARTS[config[CONF_HARDWARE_UART]][1]
|
||||
if cdc_id >= 0:
|
||||
zephyr_add_cdc_acm(config, cdc_id)
|
||||
zephyr_add_prj_conf("MCUMGR_TRANSPORT_UART", True)
|
||||
zephyr_add_prj_conf("BASE64", True)
|
||||
zephyr_add_prj_conf("CONSOLE", True)
|
||||
zephyr_add_overlay(
|
||||
"""
|
||||
/ {
|
||||
chosen {
|
||||
zephyr,uart-mcumgr = &cdc_acm_uart0;
|
||||
};
|
||||
};
|
||||
f"""
|
||||
/ {{
|
||||
chosen {{
|
||||
zephyr,uart-mcumgr = &{UARTS[config[CONF_HARDWARE_UART]][0]};
|
||||
}};
|
||||
}};
|
||||
"""
|
||||
)
|
||||
|
@ -2,6 +2,7 @@ zephyr_ble_server:
|
||||
|
||||
ota:
|
||||
- platform: zephyr_mcumgr
|
||||
hardware_uart: cdc
|
||||
on_begin:
|
||||
then:
|
||||
- logger.log: "OTA start"
|
||||
|
@ -52,7 +52,7 @@ dfu_mode:
|
||||
|
||||
ota:
|
||||
- platform: zephyr_mcumgr
|
||||
usb_cdc: True
|
||||
hardware_uart: cdc1
|
||||
on_begin:
|
||||
then:
|
||||
- logger.log: "OTA start"
|
||||
|
Loading…
x
Reference in New Issue
Block a user