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  bool operator==(const Config& other) const
40  {
41  return baudrate == other.baudrate && format == other.format;
42  }
43  };
44 
45  virtual ~Serial()
46  {
47  close();
48  }
49 
53  ErrorCode open(uint8_t uart_nr, uint8_t txPin = UART_PIN_DEFAULT, uint8_t rxPin = UART_PIN_DEFAULT);
54 
58  void close();
59 
69  bool resizeBuffers(size_t rxSize, size_t txSize);
70 
71  void setCallback(smg_uart_callback_t callback, void* param)
72  {
73  smg_uart_set_callback(uart, callback, param);
74  }
75 
76  void setBreak(bool state)
77  {
78  smg_uart_set_break(uart, state);
79  }
80 
81  size_t available() const
82  {
83  return smg_uart_rx_available(uart);
84  }
85 
86  size_t read(void* buffer, size_t size)
87  {
88  return smg_uart_read(uart, buffer, size);
89  }
90 
91  size_t write(const void* data, size_t len)
92  {
93  return smg_uart_write(uart, data, len);
94  }
95 
96  void swap(uint8_t txPin = 1)
97  {
98  smg_uart_swap(uart, txPin);
99  }
100 
101  void clear(smg_uart_mode_t mode = UART_FULL)
102  {
103  smg_uart_flush(uart, mode);
104  }
105 
106  const Config& getConfig() const
107  {
108  return activeConfig;
109  }
110 
111  void setConfig(const Config& cfg);
112 
113 private:
114  Config activeConfig{9600, UART_8N1};
115  smg_uart_t* uart{nullptr};
116 };
117 
118 } // namespace IO
Definition: Libraries/IOControl/include/IO/Serial.h:35
uint32_t baudrate
Definition: Libraries/IOControl/include/IO/Serial.h:36
ErrorCode open(uint8_t uart_nr, uint8_t txPin=UART_PIN_DEFAULT, uint8_t rxPin=UART_PIN_DEFAULT)
Initialise the serial port with a default configuration.
int16_t ErrorCode
Definition: Libraries/IOControl/include/IO/Error.h:27
void close()
Close the port.
smg_uart_format_t format
Definition: Libraries/IOControl/include/IO/Serial.h:37
size_t write(const void *data, size_t len)
Definition: Libraries/IOControl/include/IO/Serial.h:91
Wrapper class for the UART driver.
Definition: Libraries/IOControl/include/IO/Serial.h:32
size_t available() const
Definition: Libraries/IOControl/include/IO/Serial.h:81
Definition: IOControl/include/IO/Controller.h:25
size_t read(void *buffer, size_t size)
Definition: Libraries/IOControl/include/IO/Serial.h:86
virtual ~Serial()
Definition: Libraries/IOControl/include/IO/Serial.h:45
void setBreak(bool state)
Definition: Libraries/IOControl/include/IO/Serial.h:76
void clear(smg_uart_mode_t mode=UART_FULL)
Definition: Libraries/IOControl/include/IO/Serial.h:101
void setConfig(const Config &cfg)
void swap(uint8_t txPin=1)
Definition: Libraries/IOControl/include/IO/Serial.h:96
const Config & getConfig() const
Definition: Libraries/IOControl/include/IO/Serial.h:106
bool operator==(const Config &other) const
Definition: Libraries/IOControl/include/IO/Serial.h:39
bool resizeBuffers(size_t rxSize, size_t txSize)
Set required buffer sizes.
void setCallback(smg_uart_callback_t callback, void *param)
Definition: Libraries/IOControl/include/IO/Serial.h:71