18#include <zephyr/kernel.h>
19#include <zephyr/sys/util.h>
101 const void *data,
size_t length,
size_t *cnt);
115 size_t length,
size_t *cnt);
178#define ARES_SERIAL_TRX_BUF_SIZE \
179 MAX(SERIAL_BACKEND_TX_RINGBUF_SIZE, SERIAL_BACKEND_RX_RINGBUF_SIZE)
300#define ARES_SERIAL_DEFINE(_name, _transport) \
301 static struct ares_serial_ctx UTIL_CAT(_name, _ctx); \
302 static K_KERNEL_STACK_DEFINE(UTIL_CAT(_name, _stack), \
303 CONFIG_ARES_SERIAL_STACK_SIZE); \
304 static struct k_thread UTIL_CAT(_name, _thread); \
305 static const struct ares_serial _name = {.iface = (_transport), \
306 .ctx = &UTIL_CAT(_name, _ctx), \
307 .name = STRINGIFY(_name), \
309 &UTIL_CAT(_name, _thread), \
310 .stack = UTIL_CAT(_name, _stack)}
322 const void *transport_config);
359 k_timeout_t timeout);
ares_frame_type
Frame types.
Definition frame.h:71
int set_wait_usb_host(const struct ares_serial *serial, bool block)
Function to configure the transport layer to block transmissions if no host is connected.
ares_serial_signal
Signals for the serial interface.
Definition serial.h:167
@ ARES_SIGNAL_RXRDY
Rx data ready.
Definition serial.h:168
@ ARES_SIGNAL_TXDONE
Definition serial.h:169
@ ARES_SIGNALS
Last enumerator.
Definition serial.h:172
int ares_serial_write_frame(const struct ares_serial *serial, const struct ares_frame *frame)
Function to write a frame to the serial transfer layer.
#define ARES_SERIAL_TRX_BUF_SIZE
Definition serial.h:178
void ares_serial_flush_out(const struct ares_serial *serial, k_timeout_t timeout)
Function to flush the serial transfer layer transmit buffer.
int ares_serial_init(const struct ares_serial *serial, const void *transport_config)
Function for initiating a transport layer and internal serial state.
bool ares_serial_check_rx_error(const struct ares_serial *serial)
Function to check if there was a reception error in the transfer layer.
int wait_serial_ready(const struct ares_serial *serial)
Block current thread execution until a connection is established with a host.
void(* serial_transport_handler_t)(enum serial_transport_evt evt, void *ctx)
Serial transport event handler prototype.
Definition serial.h:36
serial_transport_evt
Serial transport events.
Definition serial.h:25
@ SERIAL_TRANSPORT_EVT_TX_RDY
Tx ready.
Definition serial.h:27
@ SERIAL_TRANSPORT_EVT_RX_RDY
Rx ready.
Definition serial.h:26
int ares_serial_register_command_callbacks(const struct ares_serial *serial, const struct ares_serial_command *commands, size_t num_commands)
Function for registering frame handlers.
Serial transport layer header.
Unified buffer structure for serial.
Definition serial.h:185
uint8_t buf[ARES_SERIAL_TRX_BUF_SIZE]
Definition serial.h:189
size_t len
Definition serial.h:194
Structured representation of an ares frame.
Definition frame.h:94
Ares frame handler descriptor.
Definition serial.h:201
void(* callback)(const struct ares_serial *serial, struct ares_frame *frame)
Definition serial.h:213
enum ares_frame_type command
Definition serial.h:205
Ares serial instance context.
Definition serial.h:221
k_tid_t tid
Definition serial.h:260
struct k_poll_event events[ARES_SIGNALS]
Definition serial.h:240
struct k_poll_signal signals[ARES_SIGNALS]
Definition serial.h:235
struct k_mutex wr_mtx
Definition serial.h:255
struct ares_buf rx_buf
Definition serial.h:225
struct ares_buf tx_buf
Definition serial.h:230
const struct ares_serial_command * commands
Definition serial.h:245
size_t num_commands
Definition serial.h:250
Unified serial transport interface.
Definition serial.h:48
int(* write)(const struct ares_serial_transport *transport, const void *data, size_t length, size_t *cnt)
Function for writing data to the transfer interface.
Definition serial.h:100
void(* block_no_usb_host)(const struct ares_serial_transport *transport, bool block)
Function that configures the transport to operate in blocking/non-blocking mode while waiting for a h...
Definition serial.h:143
int(* read)(const struct ares_serial_transport *transport, void *data, size_t length, size_t *cnt)
Function for reading data from the transfer interface.
Definition serial.h:114
int(* init)(const struct ares_serial_transport *transport, const void *config, serial_transport_handler_t evt_handler, void *context)
Function for initializing the serial transport interface.
Definition serial.h:60
int(* uninit)(const struct ares_serial_transport *transport)
Function for uninitializing the serial transport interface.
Definition serial.h:72
int(* enable)(const struct ares_serial_transport *transport, bool blocking_tx)
Function for enabling transport in given TX mode.
Definition serial.h:86
void(* wait_dtr)(const struct ares_serial_transport *transport)
Function that blocks execution of the thread until the DTR control line is asserted.
Definition serial.h:123
bool(* rx_error)(const struct ares_serial_transport *transport)
Function that checks if there is a reception error.
Definition serial.h:133
Transfer interface.
Definition serial.h:151
const struct ares_serial_transport_api * api
Definition serial.h:155
void * ctx
Definition serial.h:160
Ares serial internals.
Definition serial.h:267
const struct ares_serial_transport * iface
Definition serial.h:271
const char * name
Definition serial.h:281
struct ares_serial_ctx * ctx
Definition serial.h:276
k_thread_stack_t * stack
Definition serial.h:291
struct k_thread * thread
Definition serial.h:286