Tool Libs
UMIT-TIROL Institute of Automation and Control Engineering library collection
 
Loading...
Searching...
No Matches
uart.h
Go to the documentation of this file.
1
5#pragma once
6#include <utils/deadline.h>
7#include <utils/queue.h>
8#include <core/kern.h>
9
10#include "gpio.h"
11#include "registry.h"
12
13namespace UART {
32struct HW : public Sink<Buffer<uint8_t>>, public Source<Buffer<uint8_t>> {
34 struct Default {
35 USART_TypeDef *uart;
36 AFIO rx, tx;
37 uint32_t baudrate;
38 };
40 struct Manual {
41 USART_TypeDef *uart;
42 AFIO rx, tx;
43 UART_InitTypeDef init;
44 };
46 HW(const Default &conf);
48 HW(const Manual &conf);
49 bool full() override;
51 void push(Buffer<uint8_t> &&tx) override;
54 Buffer<uint8_t> pop() override;
56 bool empty() override;
61 void irqHandler();
65 struct RX {
67 Buffer<uint8_t> buf = 512;
68 } rx{};
70 struct TX {
72 Deadline deadline;
73 bool active;
74 } tx{};
75
77 UART_HandleTypeDef handle{};
78};
79}
Wrapper class for pins in alternate configuration mode.
Definition gpio.h:60
simple Buffer backed queue implementation
Definition queue.h:12
registry that maps classes to HAL handles
Definition registry.h:13
Copyright (c) 2023 IACE.
Copyright (c) 2020 IACE.
Copyright (c) 2023 IACE.
Copyright (c) 2023 IACE.
Copyright (c) 2023 IACE.
dynamically allocated, but fixed-size buffer template
Definition buffer.h:18
simple solution for keeping track of timeouts
Definition deadline.h:15
generic object sink, i.e.
Definition streams.h:15
generic object source, i.e.
Definition streams.h:40
Character Buffer Sink & Source wrapping UART Peripheral.
Definition uart.h:32
UART_InitTypeDef init
HAL Init configuration.
Definition uart.h:43
void irqHandler()
interrupt handler
Definition uart.cpp:190
USART_TypeDef * uart
UART peripheral.
Definition uart.h:41
void push(Buffer< uint8_t > &&tx) override
push bytebuffer into sending queue
Definition uart.cpp:200
static Registry< HW, UART_HandleTypeDef, 8 > reg
stm glue registry for internal use
Definition uart.h:63
bool full() override
check if sink is full
Definition uart.cpp:197
UART_HandleTypeDef handle
HAL handle for use with unwrapped UART capabilities.
Definition uart.h:77
Buffer< uint8_t > pop() override
pull buffer from receiving queue
Definition uart.cpp:207
USART_TypeDef * uart
UART peripheral.
Definition uart.h:35
AFIO tx
alternate function initialized pins
Definition uart.h:42
AFIO tx
alternate function initialized pins
Definition uart.h:36
uint32_t baudrate
baudrate
Definition uart.h:37
bool empty() override
check if receiving queue is empty
Definition uart.cpp:204
default init struct
Definition uart.h:34
init struct with full control over UART settings
Definition uart.h:40
rx state
Definition uart.h:65
tx state
Definition uart.h:70