modified for NuMaker_PFM series

Dependents:   NuMaker-mbed-modbus-sample NuMaker_NuWicam_Lite NuMaker-mbed-modbus-sample

Fork of Modbus by Wayne Lin

Revision:
3:419ee4c5e10f
Parent:
2:6ee56c002f64
--- a/mbrtu.cpp	Thu Aug 18 08:24:37 2016 +0000
+++ b/mbrtu.cpp	Tue Sep 20 06:10:32 2016 +0000
@@ -155,9 +155,9 @@
 
     ENTER_CRITICAL_SECTION(  );
     //assert( usRcvBufferPos < MB_SER_PDU_SIZE_MAX ); //Wayne's workaround
-    if ( usRcvBufferPos >= MB_SER_PDU_SIZE_MAX )
+    if ( usRcvBufferPos > MB_SER_PDU_SIZE_MAX )
     {
-        //printf("usRcvBufferPos < MB_SER_PDU_SIZE_MAX - %d %d \r\n", usRcvBufferPos, MB_SER_PDU_SIZE_MAX );
+        printf("usRcvBufferPos < MB_SER_PDU_SIZE_MAX - %d %d \r\n", usRcvBufferPos, MB_SER_PDU_SIZE_MAX );
         eStatus = MB_EIO;
         usRcvBufferPos = 0;
         return eStatus;
@@ -189,6 +189,10 @@
     }
     else
     {
+        //FIXME: Get CRC error.
+        //The receiving buffer position pointer can't reseet.
+        //printf("CRC error!!\r\n");
+        usRcvBufferPos = 0;
         eStatus = MB_EIO;
     }
 
@@ -241,6 +245,9 @@
     BOOL            xTaskNeedSwitch = FALSE;
     UCHAR           ucByte;
 
+    if ( eSndState != STATE_TX_IDLE )
+        printf("assert eSndState == STATE_TX_IDLE\r\n");
+        
     assert( eSndState == STATE_TX_IDLE );
 
     /* Always read the character. */
@@ -299,6 +306,9 @@
 {
     BOOL            xNeedPoll = FALSE;
 
+    if ( eRcvState != STATE_RX_IDLE )
+        printf(" assert eRcvState == STATE_RX_IDLE \r\n");
+
     assert( eRcvState == STATE_RX_IDLE );
     switch ( eSndState )
     {
@@ -355,6 +365,8 @@
 
         /* Function called in an illegal state. */
     default:
+        printf(" Function called in an illegal state. \r\n");
+
         assert( ( eRcvState == STATE_RX_INIT ) ||
                 ( eRcvState == STATE_RX_RCV ) || ( eRcvState == STATE_RX_ERROR ) );
     }