mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-09 09:19:51 +03:00
uart check break first
This commit is contained in:
@@ -47,20 +47,18 @@ void EMSuart::uart_event_task(void * pvParameters) {
|
|||||||
while (1) {
|
while (1) {
|
||||||
//Waiting for UART event.
|
//Waiting for UART event.
|
||||||
if (xQueueReceive(uart_queue, (void *)&event, portMAX_DELAY)) {
|
if (xQueueReceive(uart_queue, (void *)&event, portMAX_DELAY)) {
|
||||||
if (event.type == UART_DATA) {
|
if (event.type == UART_BREAK) {
|
||||||
length += event.size;
|
length += event.size ? event.size - 1 : 0;
|
||||||
} else if (event.type == UART_BREAK) {
|
|
||||||
if (length == 2 || (length >= 6 && length <= EMS_MAXBUFFERSIZE)) {
|
if (length == 2 || (length >= 6 && length <= EMS_MAXBUFFERSIZE)) {
|
||||||
uart_read_bytes(EMSUART_NUM, telegram, length, portMAX_DELAY);
|
uart_read_bytes(EMSUART_NUM, telegram, length, portMAX_DELAY);
|
||||||
// if (telegram[0] && !telegram[length - 1]) {
|
|
||||||
EMSESP::incoming_telegram(telegram, (uint8_t)(length - 1));
|
EMSESP::incoming_telegram(telegram, (uint8_t)(length - 1));
|
||||||
// }
|
} else { // flush buffer up to break
|
||||||
} else {
|
|
||||||
// flush buffer up to break
|
|
||||||
uint8_t buf[length];
|
uint8_t buf[length];
|
||||||
uart_read_bytes(EMSUART_NUM, buf, length, portMAX_DELAY);
|
uart_read_bytes(EMSUART_NUM, buf, length, portMAX_DELAY);
|
||||||
}
|
}
|
||||||
length = 0;
|
length = 0;
|
||||||
|
} else if (event.type == UART_DATA) {
|
||||||
|
length += event.size;
|
||||||
} else if (event.type == UART_BUFFER_FULL) {
|
} else if (event.type == UART_BUFFER_FULL) {
|
||||||
uart_flush_input(EMSUART_NUM);
|
uart_flush_input(EMSUART_NUM);
|
||||||
length = 0;
|
length = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user