libDaisy
Hardware Library for Daisy
Loading...
Searching...
No Matches
uart.h
Go to the documentation of this file.
1/*
2TODO
3- Overflow handling, etc. for Rx Queue.
4*/
5
6#pragma once
7#ifndef DSY_UART_H
8#define DSY_UART_H
9#include "daisy_core.h"
10
11
12namespace daisy
13{
24{
25 public:
26 struct Config
27 {
28 enum class Peripheral
29 {
30 USART_1,
31 USART_2,
32 USART_3,
33 UART_4,
34 UART_5,
35 USART_6,
36 UART_7,
37 UART_8,
39 };
40
41 enum class StopBits
42 {
44 BITS_1,
46 BITS_2,
47 };
48
49 enum class Parity
50 {
51 NONE,
52 EVEN,
53 ODD,
54 };
55
56 enum class Mode
57 {
58 RX,
59 TX,
60 TX_RX,
61 };
62
63 enum class WordLength
64 {
65 BITS_7,
66 BITS_8,
67 BITS_9,
68 };
69
70 struct
71 {
77 {
78 // user must init periph, pin_config, and mode
82 baudrate = 31250;
83 }
84
91 };
92
93
94 UartHandler() : pimpl_(nullptr) {}
95 UartHandler(const UartHandler& other) = default;
97
99 enum class Result
100 {
101 OK,
102 ERR
103 };
104
105 enum class DmaDirection
106 {
107 RX,
108 TX
109 };
110
113
115 const Config& GetConfig() const;
116
118 typedef void (*StartCallbackFunctionPtr)(void* context);
120 typedef void (*EndCallbackFunctionPtr)(void* context, Result result);
121
134 size_t size,
135 void* context,
136 Result result);
137
145
152 Result
154
166 size_t size,
169 void* callback_context);
170
182 size_t size,
185 void* callback_context);
186
202 size_t size,
204 void* callback_context);
205
208
210 bool IsListening() const;
211
214
216 int PollReceive(uint8_t* buff, size_t size, uint32_t timeout);
217
220
221 class Impl;
223 private:
224 Impl* pimpl_;
225};
226
227extern "C"
228{
231};
232
234} // namespace daisy
235
236#endif
Definition leddriver.h:33
Definition uart.h:24
void(* EndCallbackFunctionPtr)(void *context, Result result)
Definition uart.h:120
Result BlockingTransmit(uint8_t *buff, size_t size, uint32_t timeout=100)
Result DmaTransmit(uint8_t *buff, size_t size, UartHandler::StartCallbackFunctionPtr start_callback, UartHandler::EndCallbackFunctionPtr end_callback, void *callback_context)
bool IsListening() const
Result DmaListenStart(uint8_t *buff, size_t size, CircularRxCallbackFunctionPtr cb, void *callback_context)
const Config & GetConfig() const
UartHandler(const UartHandler &other)=default
void(* StartCallbackFunctionPtr)(void *context)
Definition uart.h:118
Result PollTx(uint8_t *buff, size_t size)
void(* CircularRxCallbackFunctionPtr)(uint8_t *data, size_t size, void *context, Result result)
Definition uart.h:133
int PollReceive(uint8_t *buff, size_t size, uint32_t timeout)
Result Init(const Config &config)
Result BlockingReceive(uint8_t *buffer, uint16_t size, uint32_t timeout=100)
Result DmaListenStop()
Result
Definition uart.h:100
UartHandler()
Definition uart.h:94
DmaDirection
Definition uart.h:106
UartHandler & operator=(const UartHandler &other)=default
Result DmaReceive(uint8_t *buff, size_t size, UartHandler::StartCallbackFunctionPtr start_callback, UartHandler::EndCallbackFunctionPtr end_callback, void *callback_context)
void dsy_uart_global_init()
Hardware defines and helpers for daisy field platform.
Definition index.h:2
Definition uart.h:27
StopBits
Definition uart.h:42
Mode mode
Definition uart.h:88
StopBits stopbits
Definition uart.h:86
WordLength wordlength
Definition uart.h:89
Peripheral periph
Definition uart.h:85
Parity
Definition uart.h:50
Config()
Definition uart.h:76
struct daisy::UartHandler::Config::@18 pin_config
uint32_t baudrate
Definition uart.h:90
WordLength
Definition uart.h:64
Parity parity
Definition uart.h:87
Peripheral
Definition uart.h:29
dsy_gpio_pin rx
Definition uart.h:73
Mode
Definition uart.h:57
dsy_gpio_pin tx
Definition uart.h:72
Definition daisy_core.h:205