JongYong Park / Mbed 2 deprecated NUCLEO-F767_LIFI_4CH_os2_v2

Dependencies:   mbed

Revision:
17:847e9b792c72
Parent:
16:c551ee1092f5
Child:
18:2f7b820324c3
--- a/lifiReceiver.cpp	Mon Apr 08 09:37:14 2019 +0900
+++ b/lifiReceiver.cpp	Mon Apr 08 01:14:04 2019 +0000
@@ -339,8 +339,9 @@
 
 			(*frame_state) = LENGTH_MSB_STATE;
 			rx_vars[channel].length = rx_vars[channel].length + (data << 8);
+			rx_vars[channel].received_data_count = 0;
 #if RX_DEBUG_FRAME
-			printf("%dLENGTH_MSB(%d) length=%d",channel+1,data, rx_vars[channel].length);
+			printf("%dLENGTH_MSB(%d) length=%d ",channel+1,data, rx_vars[channel].length);
 #endif
 
 		} else if ((*frame_state) == LENGTH_MSB_STATE) {
@@ -349,33 +350,33 @@
 			printf("%dD=%c[%x] ",channel+1,data,data);
 #endif
 			(*frame_state) = DATA_STATE;
-			rx_vars[channel].received_data_count = 1;
+			rx_vars[channel].received_data_count++;
 
 		} else if ((*frame_state) == DATA_STATE) {
 
-#if RX_DEBUG_FRAME
-			printf("%dD=%c[%x] ",channel+1,data,data);
-#endif
-//            (*frame_state) = DATA_STATE ;
 			rx_vars[channel].received_data_count++;
 
+			// when ETX
 			if (rx_vars[channel].received_data_count
-					>= rx_vars[channel].length) {
-				(*frame_state) = END_STATE;
-			}
-		} else if ((*frame_state) == END_STATE) {
-			if (data == ETX) {
+					> rx_vars[channel].length) {
+				if (data == ETX) {
 #if RX_DEBUG_FRAME
-				printf("%dEND IDLE ",channel+1);
+					printf("%dEND IDLE ",channel+1);
 #endif
-				(*rx_frame_size) = (*rx_frame_index);
-				(*rx_frame_index) = -1;
-				(*frame_state) = IDLE_STATE;
-
-				return 1;
-			} else {
-				printf("\n Error # got wrong data (%d). it should be ETX",data);
-				return 1;
+					(*rx_frame_size) = (*rx_frame_index);
+					(*rx_frame_index) = -1;
+					(*frame_state) = IDLE_STATE;
+	
+					return 1;
+				} else {
+					printf("\n Error # got wrong data (%d). it should be ETX",data);
+					return 1;
+				}
+			}
+			else{
+#if RX_DEBUG_FRAME
+				printf("%dD=%c[%x] ",channel+1,data,data);
+#endif
 			}
 		} else if ((*rx_frame_index) >= FRAME_BUFFER_SIZE) { //frame is larger than max size of frame ...
 #if RX_DEBUG_FRAME