ECE3872 HW/SW Project Code

Dependencies:   mbed Servo mbed-rtos 4DGL-uLCD-SE PinDetect X_NUCLEO_53L0A1

Revision:
13:3ae48dd67009
Parent:
12:0528ef6978ec
Child:
14:7e81f2cd4b4b
--- a/main.cpp	Sat Apr 11 19:34:47 2020 +0000
+++ b/main.cpp	Sat Apr 11 19:47:56 2020 +0000
@@ -92,67 +92,60 @@
         pc.printf("P: %d\n",P);
         pc.printf("E: %d\n",E);
         pc.printf("Current State %d\n",curr_state);
-        // Implementing state machine logical transitions based on what states can exit to other states
-        if(X){
-            if(E){
-                curr_state = 5;
-                X = 0;
-            }else if(S){
-                curr_state = 2;
-                X = 0;
-            }
-        }else if(S){
-            if(X){
-                curr_state = 1;
-                S = 0;
-            }else if(R){
-                curr_state = 3;
-                S = 0;
-            }else if(P){
-                curr_state = 4;
-                S = 0;
-            }
-        }else if(R){
-            if(X){
-                curr_state = 1;
-                R = 0;
-            }else if(S){
-                curr_state = 2;
-                R = 0;
-            }
-        }else if(P){
-            if(X){
-                curr_state = 1;
-                P = 0;
-            }else if(S){
-                curr_state = 2;
-                P = 0;
-            }
-        }else if(E){
-            if(X){
-                curr_state = 1;
-                E = 0;
-            }
-        }
         switch(curr_state){
             case 1:
 //                pc.printf("RESET\n");
+                if(E){
+                    curr_state = 5;
+                    X = 0;
+                }else if(S){
+                    curr_state = 2;
+                    X = 0;
+                }
                 reset();
                 break;
             case 2:
 //                pc.printf("STOP\n");
+                if(X){
+                    curr_state = 1;
+                    S = 0;
+                }else if(R){
+                    curr_state = 3;
+                    S = 0;
+                }else if(P){
+                    curr_state = 4;
+                    S = 0;
+                }
                 stop();
                 break;
             case 3:
 //                pc.printf("RECORD\n");
+                if(X){
+                    curr_state = 1;
+                    R = 0;
+                }else if(S){
+                    curr_state = 2;
+                    R = 0;
+                }
                 record();
                 break;
             case 4:
 //                pc.printf("PLAY\n");
+                if(X){
+                    curr_state = 1;
+                    P = 0;
+                }else if(S){
+                    curr_state = 2;
+                    P = 0;
+                }
                 play();
                 break;
             case 5:
 //                pc.printf("ERASE\n");
+                if(X){
+                    curr_state = 1;
+                    E = 0;
+                }
                 erase();
                 break;
         }