Functional prototype!
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// Created by nano on 8/23/26.
|
||||
//
|
||||
|
||||
#include "uart_serial.h"
|
||||
|
||||
#include "esp_err.h"
|
||||
#include "driver/uart.h"
|
||||
|
||||
void uart_serial::init() {
|
||||
ESP_ERROR_CHECK(uart_driver_install(uart_num, buffer_size * 2, buffer_size * 2, 10, &uart_queue, 0));
|
||||
ESP_ERROR_CHECK(uart_param_config(uart_num, &uart_config));
|
||||
|
||||
ESP_ERROR_CHECK(
|
||||
uart_set_pin(uart_num, tx_pin_num, rx_pin_num, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE,
|
||||
UART_PIN_NO_CHANGE));
|
||||
uart_flush(uart_num);
|
||||
}
|
||||
|
||||
void uart_serial::write(const char* data, int len) {
|
||||
uart_write_bytes(uart_num, data, len);
|
||||
ESP_ERROR_CHECK(uart_wait_tx_done(uart_num, 100));
|
||||
}
|
||||
void uart_serial::write_byte(const char* data) {
|
||||
uart_write_bytes(uart_num, data, 1);
|
||||
ESP_ERROR_CHECK(uart_wait_tx_done(uart_num, 100));
|
||||
}
|
||||
|
||||
int uart_serial::read(char* data, int size) {
|
||||
int length = 0;
|
||||
ESP_ERROR_CHECK(uart_get_buffered_data_len(uart_num,(size_t *) &length));
|
||||
if (length > size) {
|
||||
uart_read_bytes(uart_num,data,size,100);
|
||||
return size;
|
||||
}
|
||||
uart_read_bytes(uart_num,data,length,100);
|
||||
return length;
|
||||
}
|
||||
|
||||
/*int uart_serial::read_byte(char* data) {
|
||||
int length = 0;
|
||||
ESP_LOGI("sanity check","uart num: %d",uart_num);
|
||||
ESP_ERROR_CHECK(uart_get_buffered_data_len(uart_num,(size_t *) &length));
|
||||
if (length) {
|
||||
uart_read_bytes(uart_num,data,1,100);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}*/
|
||||
|
||||
int uart_serial::read_byte(char* data) {
|
||||
size_t length = 0;
|
||||
esp_err_t err = uart_get_buffered_data_len(this->uart_num, &length);
|
||||
if (err != ESP_OK) {
|
||||
ESP_LOGE("uart_serial", "get_buffered_data_len failed on port %d: %s",
|
||||
uart_num, esp_err_to_name(err));
|
||||
return 0;
|
||||
}
|
||||
if (length > 0) {
|
||||
int n = uart_read_bytes(uart_num, data, 1, pdMS_TO_TICKS(100));
|
||||
return (n == 1) ? 1 : 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user