Libraries/IOControl/include/IO/Serial.h
Go to the documentation of this file.
1 
20 #pragma once
21 
22 #include "Error.h"
23 #include <driver/uart.h>
24 
25 namespace IO
26 {
32 class Serial
33 {
34 public:
35  struct Config {
36  uint32_t baudrate;
37  smg_uart_format_t format;
38  };
39 
40  virtual ~Serial()
41  {
42  close();
43  }
44 
48  ErrorCode open(uint8_t uart_nr);
49 
53  void close();
54 
64  bool resizeBuffers(size_t rxSize, size_t txSize);
65 
66  void setCallback(smg_uart_callback_t callback, void* param)
67  {
68  smg_uart_set_callback(uart, callback, param);
69  }
70 
71  void setBreak(bool state)
72  {
73  smg_uart_set_break(uart, state);
74  }
75 
76  size_t read(void* buffer, size_t size)
77  {
78  return smg_uart_read(uart, buffer, size);
79  }
80 
81  size_t write(const void* data, size_t len)
82  {
83  return smg_uart_write(uart, data, len);
84  }
85 
86  void swap(uint8_t txPin = 1)
87  {
88  smg_uart_swap(uart, txPin);
89  }
90 
91  void clear(smg_uart_mode_t mode = UART_FULL)
92  {
93  smg_uart_flush(uart, mode);
94  }
95 
96  const Config& getConfig() const
97  {
98  return activeConfig;
99  }
100 
101  void setConfig(const Config& cfg);
102 
103 private:
104  Config activeConfig{9600, UART_8N1};
105  smg_uart_t* uart{nullptr};
106 };
107 
108 } // namespace IO
size_t read(void *buffer, size_t size)
Definition: Libraries/IOControl/include/IO/Serial.h:76
void close()
Close the port.
void clear(smg_uart_mode_t mode=UART_FULL)
Definition: Libraries/IOControl/include/IO/Serial.h:91
ErrorCode open(uint8_t uart_nr)
Initialise the serial port with a default configuration.
Definition: IOControl/include/IO/Controller.h:25
void setConfig(const Config &cfg)
bool resizeBuffers(size_t rxSize, size_t txSize)
Set required buffer sizes.
uint32_t baudrate
Definition: Libraries/IOControl/include/IO/Serial.h:36
smg_uart_format_t format
Definition: Libraries/IOControl/include/IO/Serial.h:37
void setCallback(smg_uart_callback_t callback, void *param)
Definition: Libraries/IOControl/include/IO/Serial.h:66
Definition: Libraries/IOControl/include/IO/Serial.h:35
int16_t ErrorCode
Definition: Libraries/IOControl/include/IO/Error.h:27
Wrapper class for the UART driver.
Definition: Libraries/IOControl/include/IO/Serial.h:32
size_t write(const void *data, size_t len)
Definition: Libraries/IOControl/include/IO/Serial.h:81
void setBreak(bool state)
Definition: Libraries/IOControl/include/IO/Serial.h:71
virtual ~Serial()
Definition: Libraries/IOControl/include/IO/Serial.h:40
void swap(uint8_t txPin=1)
Definition: Libraries/IOControl/include/IO/Serial.h:86
const Config & getConfig() const
Definition: Libraries/IOControl/include/IO/Serial.h:96