From fd2f33b522a77b990179f359e4447ecf5da211c8 Mon Sep 17 00:00:00 2001 From: Nandkishor Biradar Date: Fri, 19 Jul 2024 18:23:16 +0530 Subject: [PATCH] Fixed MS/TP that was not working in ports/win32 (#694) --- ports/win32/dlmstp.c | 2 +- ports/win32/rs485.c | 2 +- src/bacnet/datalink/mstp.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ports/win32/dlmstp.c b/ports/win32/dlmstp.c index f6293ed3..8f7a38b5 100644 --- a/ports/win32/dlmstp.c +++ b/ports/win32/dlmstp.c @@ -203,7 +203,7 @@ static void dlmstp_master_fsm_task(void *pArg) } if (dwMilliseconds) WaitForSingleObject(Received_Frame_Flag, dwMilliseconds); - MSTP_Master_Node_FSM(&MSTP_Port); + while (MSTP_Master_Node_FSM(&MSTP_Port)); } } diff --git a/ports/win32/rs485.c b/ports/win32/rs485.c index 28855f33..5710c4bb 100644 --- a/ports/win32/rs485.c +++ b/ports/win32/rs485.c @@ -217,7 +217,7 @@ static void RS485_Configure_Status(void) /* configure the COM port timeout values */ ctNew.ReadIntervalTimeout = MAXDWORD; ctNew.ReadTotalTimeoutMultiplier = MAXDWORD; - ctNew.ReadTotalTimeoutConstant = 1000; + ctNew.ReadTotalTimeoutConstant = 1; ctNew.WriteTotalTimeoutMultiplier = 0; ctNew.WriteTotalTimeoutConstant = 0; if (!SetCommTimeouts(RS485_Handle, &ctNew)) { diff --git a/src/bacnet/datalink/mstp.c b/src/bacnet/datalink/mstp.c index af26b5b3..a40b990f 100644 --- a/src/bacnet/datalink/mstp.c +++ b/src/bacnet/datalink/mstp.c @@ -1672,7 +1672,7 @@ void MSTP_Init(struct mstp_port_struct_t *mstp_port) if ((mstp_port->Tframe_abort < 6) || (mstp_port->Tframe_abort > 100)) { mstp_port->Tframe_abort = DEFAULT_Tframe_abort; } - if (mstp_port->Treply_delay > 250) { + if ((mstp_port->Treply_delay == 0) || mstp_port->Treply_delay > 250) { mstp_port->Treply_delay = DEFAULT_Treply_delay; } if ((mstp_port->Treply_timeout < 20) ||