Added MS/TP tweak to improve byte reception and processing at higher baud rates and larger packet sizes. Thank you Peter Mc Shane!

This commit is contained in:
skarg
2012-03-12 21:26:53 +00:00
parent 9eb0066764
commit 2a51a1db7c
4 changed files with 23 additions and 9 deletions
+11 -5
View File
@@ -1504,11 +1504,17 @@ uint16_t dlmstp_receive(
if (Receive_State == MSTP_RECEIVE_STATE_IDLE) {
transmitting = MSTP_Transmit_FSM();
}
/* only do receive state machine while we don't have a frame */
if ((MSTP_Flag.ReceivedValidFrame == false) &&
(MSTP_Flag.ReceivedValidFrameNotForUs == false) &&
(MSTP_Flag.ReceivedInvalidFrame == false) && (transmitting == false)) {
MSTP_Receive_Frame_FSM();
if (transmitting == false) {
while ((MSTP_Flag.ReceivedValidFrame == false) &&
(MSTP_Flag.ReceivedValidFrameNotForUs == false) &&
(MSTP_Flag.ReceivedInvalidFrame == false)) {
/* only do receive state machine while we don't have a frame */
MSTP_Receive_Frame_FSM();
/* process another byte, if available */
if (!rs485_byte_available(NULL)) {
break;
}
}
}
/* only do master state machine while rx is idle */
if ((Receive_State == MSTP_RECEIVE_STATE_IDLE) && (transmitting == false)) {