mirror of
https://github.com/espressif/esp-modbus.git
synced 2026-08-03 20:24:09 +02:00
Merge branch 'bugfix/fix_mbm_resource_release_timeout_on_delete' into 'main'
fix mbm resource release timeout on delete See merge request idf/esp-modbus!144
This commit is contained in:
@@ -31,6 +31,7 @@ extern "C" {
|
||||
// Set the maximum resource waiting time, the actual time of resource release
|
||||
// will be dependent on response time set by timer + conversion time if the command is received
|
||||
#define MB_MAX_RESP_DELAY_MS (3000)
|
||||
#define MB_MIN_RESP_DELAY_MS (300)
|
||||
|
||||
/**
|
||||
* @brief Modbus controller handler structure
|
||||
|
||||
@@ -116,6 +116,9 @@ static esp_err_t mbc_serial_master_delete(void *ctx)
|
||||
mbm_opts->task_handle = NULL;
|
||||
vEventGroupDelete(mbm_opts->event_group_handle);
|
||||
mbm_opts->event_group_handle = NULL;
|
||||
if (xSemaphoreTake(mbm_opts->mbm_sema, pdMS_TO_TICKS(MB_MIN_RESP_DELAY_MS)) == pdTRUE) {
|
||||
(void)xSemaphoreGive(mbm_opts->mbm_sema);
|
||||
}
|
||||
vSemaphoreDelete(mbm_opts->mbm_sema);
|
||||
mbm_opts->mbm_sema = NULL;
|
||||
// delete mb_base instance and all its allocations
|
||||
|
||||
@@ -573,6 +573,9 @@ static esp_err_t mbc_tcp_master_delete(void *ctx)
|
||||
mbm_opts->task_handle = NULL;
|
||||
vEventGroupDelete(mbm_opts->event_group_handle);
|
||||
mbm_opts->event_group_handle = NULL;
|
||||
if (xSemaphoreTake(mbm_opts->mbm_sema, pdMS_TO_TICKS(MB_MIN_RESP_DELAY_MS)) == pdTRUE) {
|
||||
(void)xSemaphoreGive(mbm_opts->mbm_sema);
|
||||
}
|
||||
vSemaphoreDelete(mbm_opts->mbm_sema);
|
||||
mbm_opts->mbm_sema = NULL;
|
||||
mb_error = mbm_iface->mb_base->delete (mbm_iface->mb_base);
|
||||
|
||||
Reference in New Issue
Block a user