libosmocore 1.9.0.67-be3c3.202311292026
Osmocom core library
|
Software UART implementation. More...
Go to the source code of this file.
Data Structures | |
struct | osmo_soft_uart_cfg |
Enumerations | |
enum | osmo_soft_uart_parity_mode { OSMO_SUART_PARITY_NONE , OSMO_SUART_PARITY_EVEN , OSMO_SUART_PARITY_ODD , OSMO_SUART_PARITY_MARK , OSMO_SUART_PARITY_SPACE , _OSMO_SUART_PARITY_NUM } |
enum | osmo_soft_uart_flags { OSMO_SUART_F_FRAMING_ERROR = (1 << 0) , OSMO_SUART_F_PARITY_ERROR = (1 << 1) , OSMO_SUART_F_BREAK = (1 << 2) } |
Functions | |
struct osmo_soft_uart * | osmo_soft_uart_alloc (void *ctx, const char *name, const struct osmo_soft_uart_cfg *cfg) |
Allocate a soft-UART instance. More... | |
void | osmo_soft_uart_free (struct osmo_soft_uart *suart) |
Release memory taken by the given soft-UART. More... | |
int | osmo_soft_uart_configure (struct osmo_soft_uart *suart, const struct osmo_soft_uart_cfg *cfg) |
Change soft-UART configuration to the user-provided config. More... | |
int | osmo_soft_uart_set_rx (struct osmo_soft_uart *suart, bool enable) |
Enable/disable receiver of the given soft-UART. More... | |
int | osmo_soft_uart_set_tx (struct osmo_soft_uart *suart, bool enable) |
Enable/disable transmitter of the given soft-UART. More... | |
int | osmo_soft_uart_rx_ubits (struct osmo_soft_uart *suart, const ubit_t *ubits, size_t n_ubits) |
Feed a number of unpacked bits into the soft-UART receiver. More... | |
int | osmo_soft_uart_tx_ubits (struct osmo_soft_uart *suart, ubit_t *ubits, size_t n_ubits) |
Pull a number of unpacked bits out of the soft-UART transmitter. More... | |
int | osmo_soft_uart_set_status (struct osmo_soft_uart *suart, unsigned int status) |
Set the modem status lines of the given soft-UART. More... | |
void | osmo_soft_uart_flush_rx (struct osmo_soft_uart *suart) |
Flush the receive buffer, passing ownership of the msgb to the .rx_cb(). More... | |
Variables | |
const struct osmo_soft_uart_cfg | osmo_soft_uart_default_cfg |
Default soft-UART configuration (8-N-1) More... | |
Software UART implementation.
enum osmo_soft_uart_flags |
struct osmo_soft_uart * osmo_soft_uart_alloc | ( | void * | ctx, |
const char * | name, | ||
const struct osmo_soft_uart_cfg * | cfg | ||
) |
Allocate a soft-UART instance.
[in] | ctx | parent talloc context. |
[in] | name | name of the soft-UART instance. |
[in] | cfg | initial configuration of the soft-UART instance. |
References osmo_soft_uart::cfg, name, osmo_soft_uart::name, and OSMO_ASSERT.
int osmo_soft_uart_configure | ( | struct osmo_soft_uart * | suart, |
const struct osmo_soft_uart_cfg * | cfg | ||
) |
Change soft-UART configuration to the user-provided config.
[in] | suart | soft-UART instance to be re-configured. |
[in] | cfg | the user-provided config to be applied. |
References _OSMO_SUART_PARITY_NUM, osmo_soft_uart::cfg, osmo_soft_uart_cfg::num_data_bits, osmo_soft_uart_cfg::num_stop_bits, osmo_soft_uart_flush_rx(), osmo_timer_setup(), osmo_soft_uart_cfg::parity_mode, osmo_soft_uart::rx, osmo_soft_uart_cfg::rx_buf_size, osmo_soft_uart_cfg::rx_timeout_ms, suart_rx_timer_cb(), and osmo_soft_uart::timer.
void osmo_soft_uart_flush_rx | ( | struct osmo_soft_uart * | suart | ) |
Flush the receive buffer, passing ownership of the msgb to the .rx_cb().
[in] | suart | soft-UART instance holding the receive buffer. |
References osmo_soft_uart::cfg, osmo_soft_uart::flags, osmo_soft_uart::msg, msgb_alloc_c(), msgb_length(), msgb_reset(), osmo_timer_del(), osmo_soft_uart_cfg::priv, osmo_soft_uart::rx, osmo_soft_uart_cfg::rx_buf_size, osmo_soft_uart_cfg::rx_cb, and osmo_soft_uart::timer.
Referenced by osmo_soft_uart_configure(), osmo_soft_uart_set_rx(), suart_rx_ch(), and suart_rx_timer_cb().
void osmo_soft_uart_free | ( | struct osmo_soft_uart * | suart | ) |
Release memory taken by the given soft-UART.
[in] | suart | soft-UART instance to be free()d. |
References osmo_soft_uart::msg, msgb_free(), osmo_soft_uart::name, osmo_timer_del(), osmo_soft_uart::rx, and osmo_soft_uart::timer.
int osmo_soft_uart_rx_ubits | ( | struct osmo_soft_uart * | suart, |
const ubit_t * | ubits, | ||
size_t | n_ubits | ||
) |
Feed a number of unpacked bits into the soft-UART receiver.
[in] | suart | soft-UART instance to feed bits into. |
[in] | ubits | pointer to the unpacked bits. |
[in] | n_ubits | number of unpacked bits to be fed. |
References osmo_uart_rx_bit().
int osmo_soft_uart_set_rx | ( | struct osmo_soft_uart * | suart, |
bool | enable | ||
) |
Enable/disable receiver of the given soft-UART.
[in] | suart | soft-UART instance to be re-configured. |
[in] | enable | enable/disable state of the receiver. |
References osmo_soft_uart::cfg, osmo_soft_uart::flow_state, osmo_soft_uart::msg, msgb_alloc_c(), osmo_soft_uart_flush_rx(), osmo_soft_uart::running, osmo_soft_uart::rx, osmo_soft_uart_cfg::rx_buf_size, and SUART_FLOW_ST_IDLE.
int osmo_soft_uart_set_status | ( | struct osmo_soft_uart * | suart, |
unsigned int | status | ||
) |
Set the modem status lines of the given soft-UART.
[in] | suart | soft-UART instance to update the modem status. |
[in] | status | mask of osmo_soft_uart_status. |
int osmo_soft_uart_set_tx | ( | struct osmo_soft_uart * | suart, |
bool | enable | ||
) |
Enable/disable transmitter of the given soft-UART.
[in] | suart | soft-UART instance to be re-configured. |
[in] | enable | enable/disable state of the transmitter. |
References osmo_soft_uart::flow_state, osmo_soft_uart::running, SUART_FLOW_ST_IDLE, and osmo_soft_uart::tx.
int osmo_soft_uart_tx_ubits | ( | struct osmo_soft_uart * | suart, |
ubit_t * | ubits, | ||
size_t | n_ubits | ||
) |
Pull a number of unpacked bits out of the soft-UART transmitter.
[in] | suart | soft-UART instance to pull the bits from. |
[out] | ubits | pointer to a buffer where to store pulled bits. |
[in] | n_ubits | number of unpacked bits to be pulled. |
References osmo_soft_uart::cfg, osmo_soft_uart::flow_state, msg, msgb_alloc_c(), msgb_free(), osmo_soft_uart_cfg::num_data_bits, osmo_soft_uart_cfg::num_stop_bits, OSMO_ASSERT, OSMO_SUART_PARITY_NONE, osmo_uart_tx_bit(), OSMO_UNLIKELY, osmo_soft_uart_cfg::parity_mode, osmo_soft_uart_cfg::priv, SUART_FLOW_ST_IDLE, osmo_soft_uart::tx, and osmo_soft_uart_cfg::tx_cb.
|
extern |
Default soft-UART configuration (8-N-1)