Add Transport-Neutral Serial Session Broker
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user