Paparazzi UAS  v5.15_devel-230-gc96ce27
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
uart_arch.c File Reference

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>
+ Include dependency graph for uart_arch.c:

Go to the source code of this file.

Data Structures

struct  SerialInit
 

Macros

#define UART_THREAD_STACK_SIZE   512
 
#define SERIAL_INIT_NULL   { NULL, NULL, NULL, NULL, NULL, 0, 0 }
 

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...
 
int 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)
 

Detailed Description

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.


Data Structure Documentation

struct SerialInit

Definition at line 48 of file uart_arch.c.

Data Fields
SerialConfig * conf
uint16_t cts_pin
ioportid_t cts_port
mutex_t * rx_mtx
semaphore_t * rx_sem
mutex_t * tx_mtx
semaphore_t * tx_sem

Macro Definition Documentation

#define SERIAL_INIT_NULL   { NULL, NULL, NULL, NULL, NULL, 0, 0 }

Definition at line 58 of file uart_arch.c.

#define UART_THREAD_STACK_SIZE   512

Definition at line 45 of file uart_arch.c.

Function Documentation

int uart_check_free_space ( struct uart_periph p,
long *  fd,
uint16_t  len 
)

Definition at line 976 of file uart_arch.c.

Referenced by sdlogger_spi_direct_periodic(), send_buffer_to_uart(), and tunnel_event().

+ Here is the caller graph for this function:

void uart_periph_set_baudrate ( struct uart_periph p,
uint32_t  baud 
)

Set baudrate.

Definition at line 883 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().

+ Here is the caller graph for this function:

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 912 of file uart_arch.c.

Referenced by actuators_sbus_init(), high_speed_logger_direct_memory_init(), hott_common_init(), and sbus_common_init().

+ Here is the caller graph for this function:

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 898 of file uart_arch.c.

Referenced by hott_enable_receiver(), and hott_enable_transmitter().

+ Here is the caller graph for this function:

void uart_put_buffer ( struct uart_periph p,
long  fd,
const uint8_t data,
uint16_t  len 
)

Uart transmit buffer implementation.

Definition at line 1021 of file uart_arch.c.

Referenced by actuators_ostrich_periodic(), e_identification_fr_periodic(), and send_message().

+ Here is the caller graph for this function:

void uart_put_byte ( struct uart_periph p,
long  fd,
uint8_t  data 
)
void uart_send_message ( struct uart_periph p,
long  fd 
)

Definition at line 1051 of file uart_arch.c.