Merge branch 'bugfix/fix_transport_master_slave_destroy_sequence' into 'main'

fix transport master-slave destroy sequence

See merge request idf/esp-modbus!119
This commit is contained in:
Alex Lisitsyn
2025-06-06 07:14:07 +01:00
17 changed files with 45 additions and 15 deletions

View File

@@ -5,3 +5,5 @@ CONFIG_FMB_MASTER_DELAY_MS_CONVERT=200
CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND=400
CONFIG_FMB_TIMER_USE_ISR_DISPATCH_METHOD=y
CONFIG_FMB_EXT_TYPE_SUPPORT=y
CONFIG_HEAP_POISONING_COMPREHENSIVE=y
CONFIG_HEAP_TRACING_OFF=y

View File

@@ -5,3 +5,5 @@ CONFIG_FMB_MASTER_DELAY_MS_CONVERT=200
CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND=400
CONFIG_FMB_TIMER_USE_ISR_DISPATCH_METHOD=y
CONFIG_FMB_EXT_TYPE_SUPPORT=y
CONFIG_HEAP_POISONING_COMPREHENSIVE=y
CONFIG_HEAP_TRACING_OFF=y

View File

@@ -3,4 +3,6 @@ CONFIG_MB_COMM_MODE_RTU=n
CONFIG_MB_SLAVE_ADDR=1
CONFIG_MB_UART_BAUD_RATE=115200
CONFIG_FMB_TIMER_USE_ISR_DISPATCH_METHOD=y
CONFIG_FMB_EXT_TYPE_SUPPORT=y
CONFIG_FMB_EXT_TYPE_SUPPORT=y
CONFIG_HEAP_POISONING_COMPREHENSIVE=y
CONFIG_HEAP_TRACING_OFF=y

View File

@@ -4,3 +4,5 @@ CONFIG_MB_SLAVE_ADDR=1
CONFIG_MB_UART_BAUD_RATE=115200
CONFIG_FMB_TIMER_USE_ISR_DISPATCH_METHOD=y
CONFIG_FMB_EXT_TYPE_SUPPORT=y
CONFIG_HEAP_POISONING_COMPREHENSIVE=y
CONFIG_HEAP_TRACING_OFF=y

View File

@@ -6,3 +6,5 @@ CONFIG_MB_SLAVE_ADDR=1
CONFIG_MB_UART_BAUD_RATE=115200
CONFIG_FMB_TIMER_USE_ISR_DISPATCH_METHOD=y
CONFIG_FMB_EXT_TYPE_SUPPORT=y
CONFIG_HEAP_POISONING_COMPREHENSIVE=y
CONFIG_HEAP_TRACING_OFF=y

View File

@@ -31,3 +31,6 @@ CONFIG_ETH_ENABLED=y
CONFIG_ETH_USE_ESP32_EMAC=y
CONFIG_ETH_PHY_INTERFACE_RMII=y
CONFIG_ETH_USE_SPI_ETHERNET=n
CONFIG_HEAP_POISONING_COMPREHENSIVE=y
CONFIG_HEAP_TRACING_OFF=y

View File

@@ -18,3 +18,6 @@ CONFIG_EXAMPLE_CONNECT_ETHERNET=n
CONFIG_EXAMPLE_CONNECT_WIFI=y
CONFIG_EXAMPLE_WIFI_SSID="${CI_WIFI_SSID}"
CONFIG_EXAMPLE_WIFI_PASSWORD="${CI_WIFI_PASSW}"
CONFIG_HEAP_POISONING_COMPREHENSIVE=y
CONFIG_HEAP_TRACING_OFF=y

View File

@@ -30,3 +30,6 @@ CONFIG_ETH_ENABLED=y
CONFIG_ETH_USE_ESP32_EMAC=y
CONFIG_ETH_PHY_INTERFACE_RMII=y
CONFIG_ETH_USE_SPI_ETHERNET=n
CONFIG_HEAP_POISONING_COMPREHENSIVE=y
CONFIG_HEAP_TRACING_OFF=y

View File

@@ -17,3 +17,6 @@ CONFIG_EXAMPLE_CONNECT_ETHERNET=n
CONFIG_EXAMPLE_CONNECT_WIFI=y
CONFIG_EXAMPLE_WIFI_SSID="${CI_WIFI_SSID}"
CONFIG_EXAMPLE_WIFI_PASSWORD="${CI_WIFI_PASSW}"
CONFIG_HEAP_POISONING_COMPREHENSIVE=y
CONFIG_HEAP_TRACING_OFF=y

View File

@@ -185,7 +185,6 @@ void mbs_port_tcp_delete(mb_port_base_t *inst)
mbs_port_tcp_unregister_handlers(port_obj->pdriver);
}
(void)mb_drv_unregister(port_obj->pdriver);
CRITICAL_SECTION_CLOSE(port_obj->base.lock);
}
CRITICAL_SECTION_CLOSE(inst->lock);
free(port_obj);

View File

@@ -97,10 +97,12 @@ error:
bool mbm_ascii_transp_delete(mb_trans_base_t *inst)
{
mbm_ascii_trasp_t *trans = __containerof(inst, mbm_ascii_trasp_t, base);
mb_port_timer_delete(trans->base.port_obj);
mb_port_event_delete(trans->base.port_obj);
mb_port_ser_delete(trans->base.port_obj);
free((void *)trans->pascii_puf);
CRITICAL_SECTION(inst->lock) {
mb_port_timer_delete(trans->base.port_obj);
mb_port_event_delete(trans->base.port_obj);
mb_port_ser_delete(trans->base.port_obj);
free((void *)trans->pascii_puf);
}
CRITICAL_SECTION_CLOSE(inst->lock);
free(trans);
return true;

View File

@@ -94,9 +94,11 @@ error:
bool mbs_ascii_transp_delete(mb_trans_base_t *inst)
{
mbs_ascii_trasp_t *transp = __containerof(inst, mbs_ascii_trasp_t, base);
mb_port_timer_delete(transp->base.port_obj);
mb_port_event_delete(transp->base.port_obj);
mb_port_ser_delete(transp->base.port_obj);
CRITICAL_SECTION(inst->lock) {
mb_port_timer_delete(transp->base.port_obj);
mb_port_event_delete(transp->base.port_obj);
mb_port_ser_delete(transp->base.port_obj);
}
free(transp->pascii_puf);
CRITICAL_SECTION_CLOSE(inst->lock);
free(transp);

View File

@@ -104,9 +104,11 @@ error:
bool mbm_rtu_transp_delete(mb_trans_base_t *inst)
{
mbm_rtu_transp_t *transp = __containerof(inst, mbm_rtu_transp_t, base);
mb_port_ser_delete(transp->base.port_obj);
mb_port_timer_delete(transp->base.port_obj);
mb_port_event_delete(transp->base.port_obj);
CRITICAL_SECTION(inst->lock) {
mb_port_timer_delete(transp->base.port_obj);
mb_port_event_delete(transp->base.port_obj);
mb_port_ser_delete(transp->base.port_obj);
}
CRITICAL_SECTION_CLOSE(inst->lock);
free(transp);
return true;

View File

@@ -93,9 +93,9 @@ bool mbs_rtu_transp_delete(mb_trans_base_t *inst)
{
mbs_rtu_transp_t *transp = __containerof(inst, mbs_rtu_transp_t, base);
CRITICAL_SECTION(inst->lock) {
mb_port_ser_delete(transp->base.port_obj);
mb_port_timer_delete(transp->base.port_obj);
mb_port_event_delete(transp->base.port_obj);
mb_port_ser_delete(transp->base.port_obj);
}
CRITICAL_SECTION_CLOSE(inst->lock);
free(transp);

View File

@@ -93,9 +93,9 @@ bool mbm_tcp_transp_delete(mb_trans_base_t *inst)
mbm_tcp_transp_t *transp = __containerof(inst, mbm_tcp_transp_t, base);
// destroy method of port tcp master is here
CRITICAL_SECTION(inst->lock) {
mbm_port_tcp_delete(inst->port_obj);
mb_port_timer_delete(inst->port_obj);
mb_port_event_delete(inst->port_obj);
mbm_port_tcp_delete(inst->port_obj);
}
CRITICAL_SECTION_CLOSE(inst->lock);
free(transp);

View File

@@ -91,9 +91,9 @@ bool mbs_tcp_transp_delete(mb_trans_base_t *inst)
mbs_tcp_transp_t *transp = __containerof(inst, mbs_tcp_transp_t, base);
// destroy method of port tcp slave is here
CRITICAL_SECTION(inst->lock) {
mbs_port_tcp_delete(inst->port_obj);
mb_port_timer_delete(inst->port_obj);
mb_port_event_delete(inst->port_obj);
mbs_port_tcp_delete(inst->port_obj);
}
CRITICAL_SECTION_CLOSE(inst->lock);
free(transp);

View File

@@ -0,0 +1,3 @@
# General options for test
CONFIG_HEAP_POISONING_COMPREHENSIVE=y
CONFIG_HEAP_TRACING_OFF=y