From f4664526eade9710f2fdb08fc26b817c31d1d0b9 Mon Sep 17 00:00:00 2001 From: puddly <32534428+puddly@users.noreply.github.com> Date: Mon, 20 Nov 2023 12:05:33 -0500 Subject: [PATCH] Fix CLI (#596) --- bellows/cli/main.py | 7 +++--- bellows/cli/opts.py | 3 +-- bellows/cli/util.py | 56 ++++++++++++++++----------------------------- 3 files changed, 24 insertions(+), 42 deletions(-) diff --git a/bellows/cli/main.py b/bellows/cli/main.py index b5ab63c2..acbae65e 100644 --- a/bellows/cli/main.py +++ b/bellows/cli/main.py @@ -2,7 +2,6 @@ import click import click_log -import zigpy.config from . import opts @@ -15,9 +14,9 @@ @click.pass_context def main(ctx, device, baudrate, flow_control): ctx.obj = { - zigpy.config.CONF_DEVICE_PATH: device, - zigpy.config.CONF_DEVICE_BAUDRATE: baudrate, - zigpy.config.CONF_DEVICE_FLOW_CONTROL: flow_control, + "device": device, + "baudrate": baudrate, + "flow_control": flow_control, } click_log.basic_config() diff --git a/bellows/cli/opts.py b/bellows/cli/opts.py index 4010fd33..22f77970 100644 --- a/bellows/cli/opts.py +++ b/bellows/cli/opts.py @@ -1,7 +1,6 @@ import os import click -from zigpy.config import CONF_DEVICE_FLOW_CONTROL from . import util @@ -61,7 +60,7 @@ flow_control = click.option( "--flow-control", default="software", - type=click.Choice(CONF_DEVICE_FLOW_CONTROL), + type=click.Choice(["hardware", "software", "None"]), envvar="EZSP_FLOW_CONTROL", help="use hardware flow control", ) diff --git a/bellows/cli/util.py b/bellows/cli/util.py index f917bc03..fdf89e62 100644 --- a/bellows/cli/util.py +++ b/bellows/cli/util.py @@ -6,7 +6,6 @@ import click import zigpy.config as zigpy_conf -import bellows.config as config import bellows.ezsp import bellows.types as t @@ -50,10 +49,10 @@ async def async_inner(ctx, *args, **kwargs): nonlocal database_file nonlocal application app_config = { - config.CONF_DEVICE: { - config.CONF_DEVICE_PATH: ctx.obj[config.CONF_DEVICE], - config.CONF_DEVICE_BAUDRATE: ctx.obj[config.CONF_DEVICE_BAUDRATE], - config.CONF_FLOW_CONTROL: ctx.obj[config.CONF_FLOW_CONTROL], + zigpy_conf.CONF_DEVICE: { + zigpy_conf.CONF_DEVICE_PATH: ctx.obj["device"], + zigpy_conf.CONF_DEVICE_BAUDRATE: ctx.obj["baudrate"], + zigpy_conf.CONF_FLOW_CONTROL: ctx.obj["flow_control"], }, zigpy_conf.CONF_DATABASE: ctx.obj["database_file"], } @@ -100,38 +99,23 @@ def channel_mask(channels): async def setup(dev, baudrate, cbh=None, configure=True): - device_config = { - config.CONF_DEVICE_PATH: dev, - config.CONF_DEVICE_BAUDRATE: baudrate, - config.CONF_FLOW_CONTROL: config.CONF_FLOW_CONTROL_DEFAULT, - } - s = bellows.ezsp.EZSP(device_config) + app_config = bellows.zigbee.application.ControllerApplication.SCHEMA( + { + zigpy_conf.CONF_DEVICE: { + zigpy_conf.CONF_DEVICE_PATH: dev, + zigpy_conf.CONF_DEVICE_BAUDRATE: baudrate, + zigpy_conf.CONF_DEVICE_FLOW_CONTROL: zigpy_conf.CONF_DEVICE_FLOW_CONTROL_DEFAULT, + } + } + ) + + app = bellows.zigbee.application.ControllerApplication(app_config) + await app.connect() + if cbh: - s.add_callback(cbh) - try: - await s.connect() - await s.startup_reset() - except Exception as e: - LOGGER.error(e) - s.close() - raise click.Abort() - LOGGER.debug("Connected") - await s.version() - - async def cfg(config_id, value): - v = await s.setConfigurationValue(config_id, value) - check(v[0], f"Setting config {config_id} to {value}: {v[0]}") - - c = s.types.EzspConfigId - - if configure: - LOGGER.debug("Configuring...") - await cfg(c.CONFIG_STACK_PROFILE, 2) - await cfg(c.CONFIG_SECURITY_LEVEL, 5) - await cfg(c.CONFIG_SUPPORTED_NETWORKS, 1) - await cfg(c.CONFIG_PACKET_BUFFER_COUNT, 64) - - return s + app._ezsp.add_callback(cbh) + + return app._ezsp async def setup_application(app_config, startup=True):