-
Notifications
You must be signed in to change notification settings - Fork 0
/
Serial.hpp
74 lines (60 loc) · 2.07 KB
/
Serial.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/uart.h"
class Serial {
public:
Serial(uart_port_t uartNum) : uart_num(uartNum) {}
void begin(unsigned long baudrate) {
esp_err_t ret;
// Configuration for the UART
uart_config_t uart_config = {
.baud_rate = baudrate,
.data_bits = UART_DATA_8_BITS,
.parity = UART_PARITY_DISABLE,
.stop_bits = UART_STOP_BITS_1,
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
.rx_flow_ctrl_thresh = 0
};
ret = uart_param_config(uart_num, &uart_config);
assert(ret == ESP_OK);
// Set UART pins (TX, RX)
if (uart_num == UART_NUM_0) {
uart_set_pin(uart_num, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
} else if (uart_num == UART_NUM_1) {
// Modify these pins for UART1 as needed
uart_set_pin(uart_num, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
}
ret = uart_driver_install(uart_num, RX_BUF_SIZE, TX_BUF_SIZE, 0, NULL, 0);
assert(ret == ESP_OK);
}
void print(const char* data) {
uart_write_bytes(uart_num, data, strlen(data));
}
void println(const char* data) {
uart_write_bytes(uart_num, data, strlen(data));
uart_write_bytes(uart_num, "\r\n", 2);
}
int available() {
size_t available_bytes;
uart_get_buffered_data_len(uart_num, &available_bytes);
return available_bytes;
}
char read() {
uint8_t data;
uart_read_bytes(uart_num, &data, 1, portMAX_DELAY);
return data;
}
private:
uart_port_t uart_num;
static const int RX_BUF_SIZE = 256;
static const int TX_BUF_SIZE = 256;
};
Serial Serial(UART_NUM_0); // Create a Serial instance for UART_NUM_0
/*
void setup() {
Serial.begin(115200); // Set the desired baud rate
}
void loop() {
// Your code using Serial functions
}
*/