From 5688fb7319c922afd3a8e0ae942aa4d2e6d431f5 Mon Sep 17 00:00:00 2001 From: Will Xyen Date: Sat, 1 May 2021 10:42:55 -0700 Subject: [PATCH] aciodrv: refactor aciodrv_device_init function --- src/main/aciodrv/device.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/aciodrv/device.c b/src/main/aciodrv/device.c index e9dd2ff..de62c40 100644 --- a/src/main/aciodrv/device.c +++ b/src/main/aciodrv/device.c @@ -23,11 +23,9 @@ struct aciodrv_device_ctx { uint8_t node_count; }; -static bool aciodrv_device_init(struct aciodrv_device_ctx *device) +static bool aciodrv_device_reset(struct aciodrv_device_ctx *device) { uint8_t reset_seq[525] = {0}; - uint8_t init_seq[1] = {AC_IO_SOF}; - uint8_t read_buff[1] = {0}; /* init/reset the device by sending 525 NULL bytes */ log_info("Resetting device"); @@ -46,6 +44,14 @@ static bool aciodrv_device_init(struct aciodrv_device_ctx *device) aciodrv_port_read(device->fd, reset_seq, sizeof(reset_seq)); } + return true; +} + +static bool aciodrv_device_sof_flush(struct aciodrv_device_ctx *device) +{ + uint8_t init_seq[1] = {AC_IO_SOF}; + uint8_t read_buff[1] = {0}; + /* wait for reset to finish */ int read = 0; do { @@ -71,6 +77,15 @@ static bool aciodrv_device_init(struct aciodrv_device_ctx *device) } } +static bool aciodrv_device_init(struct aciodrv_device_ctx *device) +{ + if (!aciodrv_device_reset(device)) { + log_warning("Reset failed"); + return false; + } + return aciodrv_device_sof_flush(device); +} + #ifdef AC_IO_MSG_LOG static void aciodrv_device_log_buffer(struct aciodrv_device_ctx *device, const char *msg, const uint8_t *buffer, int length)