modem: backend: uart_async: improve logging on UART_TX_ABORTED
Only log if the abort is not self-triggered, and also print the number of bytes sent. Signed-off-by: Tomi Fontanilles <tomi.fontanilles@nordicsemi.no>
This commit is contained in:
parent
11f22bf702
commit
bc64c91d62
1 changed files with 21 additions and 7 deletions
|
|
@ -12,12 +12,15 @@ LOG_MODULE_DECLARE(modem_backend_uart, CONFIG_MODEM_MODULES_LOG_LEVEL);
|
||||||
#include <zephyr/kernel.h>
|
#include <zephyr/kernel.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#define MODEM_BACKEND_UART_ASYNC_STATE_TRANSMITTING_BIT (0)
|
enum {
|
||||||
#define MODEM_BACKEND_UART_ASYNC_STATE_RECEIVING_BIT (1)
|
MODEM_BACKEND_UART_ASYNC_STATE_TRANSMITTING_BIT,
|
||||||
#define MODEM_BACKEND_UART_ASYNC_STATE_RX_BUF0_USED_BIT (2)
|
MODEM_BACKEND_UART_ASYNC_STATE_RECEIVING_BIT,
|
||||||
#define MODEM_BACKEND_UART_ASYNC_STATE_RX_BUF1_USED_BIT (3)
|
MODEM_BACKEND_UART_ASYNC_STATE_RX_BUF0_USED_BIT,
|
||||||
|
MODEM_BACKEND_UART_ASYNC_STATE_RX_BUF1_USED_BIT,
|
||||||
|
MODEM_BACKEND_UART_ASYNC_STATE_OPEN_BIT,
|
||||||
|
};
|
||||||
|
|
||||||
static bool modem_backend_uart_async_is_closed(struct modem_backend_uart *backend)
|
static bool modem_backend_uart_async_is_uart_stopped(struct modem_backend_uart *backend)
|
||||||
{
|
{
|
||||||
if (!atomic_test_bit(&backend->async.state,
|
if (!atomic_test_bit(&backend->async.state,
|
||||||
MODEM_BACKEND_UART_ASYNC_STATE_TRANSMITTING_BIT) &&
|
MODEM_BACKEND_UART_ASYNC_STATE_TRANSMITTING_BIT) &&
|
||||||
|
|
@ -33,6 +36,12 @@ static bool modem_backend_uart_async_is_closed(struct modem_backend_uart *backen
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool modem_backend_uart_async_is_open(struct modem_backend_uart *backend)
|
||||||
|
{
|
||||||
|
return atomic_test_bit(&backend->async.state,
|
||||||
|
MODEM_BACKEND_UART_ASYNC_STATE_OPEN_BIT);
|
||||||
|
}
|
||||||
|
|
||||||
static void modem_backend_uart_async_event_handler(const struct device *dev,
|
static void modem_backend_uart_async_event_handler(const struct device *dev,
|
||||||
struct uart_event *evt, void *user_data)
|
struct uart_event *evt, void *user_data)
|
||||||
{
|
{
|
||||||
|
|
@ -49,7 +58,9 @@ static void modem_backend_uart_async_event_handler(const struct device *dev,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case UART_TX_ABORTED:
|
case UART_TX_ABORTED:
|
||||||
LOG_WRN("Transmit aborted");
|
if (modem_backend_uart_async_is_open(backend)) {
|
||||||
|
LOG_WRN("Transmit aborted (%zu sent)", evt->data.tx.len);
|
||||||
|
}
|
||||||
atomic_clear_bit(&backend->async.state,
|
atomic_clear_bit(&backend->async.state,
|
||||||
MODEM_BACKEND_UART_ASYNC_STATE_TRANSMITTING_BIT);
|
MODEM_BACKEND_UART_ASYNC_STATE_TRANSMITTING_BIT);
|
||||||
k_work_submit(&backend->transmit_idle_work);
|
k_work_submit(&backend->transmit_idle_work);
|
||||||
|
|
@ -124,7 +135,7 @@ static void modem_backend_uart_async_event_handler(const struct device *dev,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (modem_backend_uart_async_is_closed(backend)) {
|
if (modem_backend_uart_async_is_uart_stopped(backend)) {
|
||||||
k_work_submit(&backend->async.rx_disabled_work);
|
k_work_submit(&backend->async.rx_disabled_work);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -155,6 +166,8 @@ static int modem_backend_uart_async_open(void *data)
|
||||||
|
|
||||||
atomic_set_bit(&backend->async.state,
|
atomic_set_bit(&backend->async.state,
|
||||||
MODEM_BACKEND_UART_ASYNC_STATE_RECEIVING_BIT);
|
MODEM_BACKEND_UART_ASYNC_STATE_RECEIVING_BIT);
|
||||||
|
atomic_set_bit(&backend->async.state,
|
||||||
|
MODEM_BACKEND_UART_ASYNC_STATE_OPEN_BIT);
|
||||||
|
|
||||||
modem_pipe_notify_opened(&backend->pipe);
|
modem_pipe_notify_opened(&backend->pipe);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -217,6 +230,7 @@ static int modem_backend_uart_async_close(void *data)
|
||||||
{
|
{
|
||||||
struct modem_backend_uart *backend = (struct modem_backend_uart *)data;
|
struct modem_backend_uart *backend = (struct modem_backend_uart *)data;
|
||||||
|
|
||||||
|
atomic_clear_bit(&backend->async.state, MODEM_BACKEND_UART_ASYNC_STATE_OPEN_BIT);
|
||||||
uart_tx_abort(backend->uart);
|
uart_tx_abort(backend->uart);
|
||||||
uart_rx_disable(backend->uart);
|
uart_rx_disable(backend->uart);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue