Paparazzi UAS
v5.12_stable-4-g9b43e9b
Paparazzi is a free software Unmanned Aircraft System.
|
UART/Serial driver implementation for ChibiOS arch. More...
#include "mcu_periph/uart_arch.h"
#include <ch.h>
#include <hal.h>
#include "mcu_periph/gpio.h"
#include <BOARD_CONFIG>
Go to the source code of this file.
Data Structures | |
struct | SerialInit |
Functions | |
static void | handle_uart_rx (struct uart_periph *p) |
RX handler. More... | |
static void | handle_uart_tx (struct uart_periph *p) |
TX handler. More... | |
uint8_t | uart_getch (struct uart_periph *p) |
void | uart_periph_set_baudrate (struct uart_periph *p, uint32_t baud) |
Set baudrate. More... | |
void | uart_periph_set_mode (struct uart_periph *p, bool tx_enabled, bool rx_enabled, bool hw_flow_control) |
Set mode (not necessary, or can be set by SerialConfig) More... | |
void | uart_periph_set_bits_stop_parity (struct uart_periph *p, uint8_t bits, uint8_t stop, uint8_t parity) |
Set parity and stop bits. More... | |
bool | uart_check_free_space (struct uart_periph *p, long *fd, uint16_t len) |
void | uart_put_byte (struct uart_periph *p, long fd, uint8_t data) |
Uart transmit implementation. More... | |
void | uart_put_buffer (struct uart_periph *p, long fd, const uint8_t *data, uint16_t len) |
Uart transmit buffer implementation. More... | |
void | uart_send_message (struct uart_periph *p, long fd) |
UART/Serial driver implementation for ChibiOS arch.
ChibiOS has a high level Serial Driver, for Paparazzi it is more convenient than pure UART driver (which needs callbacks etc.). This implementation is asynchronous and the RX thread has to use event flags. See ChibiOS documen- tation.
Definition in file uart_arch.c.
struct SerialInit |
Definition at line 43 of file uart_arch.c.
Data Fields | ||
---|---|---|
SerialConfig * | conf | |
mutex_t * | rx_mtx | |
semaphore_t * | rx_sem | |
mutex_t * | tx_mtx | |
semaphore_t * | tx_sem |
|
static |
RX handler.
Definition at line 54 of file uart_arch.c.
References uart_periph::init_struct, uart_periph::reg_addr, uart_periph::rx_buf, uart_periph::rx_extract_idx, uart_periph::rx_insert_idx, SerialInit::rx_mtx, SerialInit::rx_sem, and UART_RX_BUFFER_SIZE.
|
static |
TX handler.
Definition at line 75 of file uart_arch.c.
References uart_periph::init_struct, uart_periph::reg_addr, uart_periph::tx_buf, uart_periph::tx_extract_idx, uart_periph::tx_insert_idx, SerialInit::tx_mtx, uart_periph::tx_running, SerialInit::tx_sem, and UART_TX_BUFFER_SIZE.
bool uart_check_free_space | ( | struct uart_periph * | p, |
long * | fd, | ||
uint16_t | len | ||
) |
Definition at line 949 of file uart_arch.c.
Referenced by sdlogger_spi_direct_periodic(), send_buffer_to_uart(), and tunnel_event().
uint8_t uart_getch | ( | struct uart_periph * | p | ) |
Definition at line 840 of file uart_arch.c.
Referenced by airspeed_uADC_event(), dw1000_arduino_event(), esc32_event(), gps_piksi_read(), high_speed_logger_direct_memory_periodic(), hott_check_serial_data(), hott_common_decode_event(), hott_send_telemetry_data(), imu_um6_event(), periodic_switch_uart(), ReadGX3Buffer(), sbus_common_decode_event(), tunnel_event(), and vn200_read_buffer().
void uart_periph_set_baudrate | ( | struct uart_periph * | p, |
uint32_t | baud | ||
) |
Set baudrate.
Definition at line 856 of file uart_arch.c.
Referenced by actuators_sbus_init(), gps_ubx_ucenter_autobaud(), gps_ubx_ucenter_configure(), hott_common_init(), px4flash_event(), sbus_common_init(), and uart_periph_init().
void uart_periph_set_bits_stop_parity | ( | struct uart_periph * | p, |
uint8_t | bits, | ||
uint8_t | stop, | ||
uint8_t | parity | ||
) |
Set parity and stop bits.
Definition at line 885 of file uart_arch.c.
Referenced by actuators_sbus_init(), high_speed_logger_direct_memory_init(), hott_common_init(), and sbus_common_init().
void uart_periph_set_mode | ( | struct uart_periph * | p, |
bool | tx_enabled, | ||
bool | rx_enabled, | ||
bool | hw_flow_control | ||
) |
Set mode (not necessary, or can be set by SerialConfig)
Definition at line 871 of file uart_arch.c.
Referenced by hott_enable_receiver(), and hott_enable_transmitter().
void uart_put_buffer | ( | struct uart_periph * | p, |
long | fd, | ||
const uint8_t * | data, | ||
uint16_t | len | ||
) |
Uart transmit buffer implementation.
Definition at line 995 of file uart_arch.c.
void uart_put_byte | ( | struct uart_periph * | p, |
long | fd, | ||
uint8_t | data | ||
) |
Uart transmit implementation.
Definition at line 967 of file uart_arch.c.
Referenced by ahrs_gx3_align(), direct_memory_logger_periodic(), drop_ball(), esc32_periodic(), esc32_send(), gps_piksi_write(), hott_send_telemetry_data(), imu_gx3_init(), sdlogger_spi_direct_periodic(), send_buffer_to_uart(), tunnel_event(), uart_periph_init(), uart_put_buffer(), and UM6_send_packet().
void uart_send_message | ( | struct uart_periph * | p, |
long | fd | ||
) |
Definition at line 1025 of file uart_arch.c.