Add Transport-Neutral Serial Session Broker

This commit is contained in:
2026-08-23 00:01:50 +02:00
parent 535c27350d
commit 2524f43fac
11 changed files with 1407 additions and 102 deletions
+9 -3
View File
@@ -625,7 +625,9 @@ size_t serial_service_read(uint8_t *data, size_t size)
return 0;
}
xSemaphoreTake(s_state_mutex, portMAX_DELAY);
if (xSemaphoreTake(s_state_mutex, 0) != pdTRUE) {
return 0;
}
size_t received = 0;
if (s_running && !s_stop_requested) {
received = xStreamBufferReceive(s_rx_stream, data, size, 0);
@@ -640,7 +642,9 @@ size_t serial_service_write(const uint8_t *data, size_t size)
return 0;
}
xSemaphoreTake(s_state_mutex, portMAX_DELAY);
if (xSemaphoreTake(s_state_mutex, 0) != pdTRUE) {
return 0;
}
size_t accepted = 0;
if (s_running && !s_stop_requested) {
accepted = xStreamBufferSend(s_tx_stream, data, size, 0);
@@ -683,11 +687,13 @@ esp_err_t serial_service_set_session_active(bool active)
}
xSemaphoreTake(s_state_mutex, portMAX_DELAY);
s_session_active = active;
esp_err_t result = ESP_OK;
if (s_running && s_config.dtr_behavior == SERIAL_CONFIG_DTR_ON_CONNECT) {
result = gpio_set_level(RS232_DTR_GPIO, active ? 0 : 1);
}
if (result == ESP_OK) {
s_session_active = active;
}
xSemaphoreGive(s_state_mutex);
return result;
}