ECE3872 HW/SW Project Code
Dependencies: mbed Servo mbed-rtos 4DGL-uLCD-SE PinDetect X_NUCLEO_53L0A1
Diff: main.cpp
- Revision:
- 11:299f2c8a4092
- Parent:
- 10:f10105ec435f
- Child:
- 12:0528ef6978ec
--- a/main.cpp Thu Apr 09 17:01:39 2020 +0000 +++ b/main.cpp Sat Apr 11 03:18:24 2020 +0000 @@ -4,7 +4,7 @@ #include "PinDetect.h" #include "uLCD_4DGL.h" DigitalOut myled(LED1); -Serial mac(USBTX,USBRX); +//Serial mac(USBTX,USBRX); // States #define sRESET 1 @@ -70,65 +70,91 @@ void state_machine_mgr(){ - mac.printf("SM\n"); - int curr_state = 1; + pc.printf("SM\n"); + char curr_state = 1; + X = 1; + S = 0; + R = 0; + P = 0; + E = 0; while(1) { + if (pc.readable()) { // if they have pressed a key + curr_state = pc.getc(); + if('1') X=!X; //toggle reset + if('2') S=!S; //toggle stop + if('3') R=!R; //toogle record + if('4') P=!P; //toggle play + if('5') E=!E; //toggle erase + } + + // Implementing state machine logical transitions based on what states can exit to other states + if(X){ + if(E){ + curr_state = 5; + X = !X; + }else if(S){ + curr_state = 2; + X = !X; + } + }else if(S){ + if(X){ + curr_state = 1; + S = !S; + }else if(R){ + curr_state = 3; + S = !S; + }else if(P){ + curr_state = 4; + S = !S; + } + }else if(R){ + if(X){ + curr_state = 1; + R = !R; + }else if(S){ + curr_state = 2; + R = !R; + } + }else if(P){ + if(X){ + curr_state = 1; + P = !P; + }else if(S){ + curr_state = 2; + P = !P; + } + }else if(E){ + if(X){ + curr_state = 1; + E = !E; + } + } switch(curr_state){ case 1: - S,R,P,E = 0; - mac.printf("RESET\n"); + pc.printf("RESET\n"); reset(); - if(S) curr_state = sSTOP; break; case 2: - X,R,P,E = 0; - mac.printf("STOP\n"); + pc.printf("STOP\n"); stop(); - if(X){ - curr_state = sRESET; - }else if(S&R){ - curr_state = sRECORD; - }else if(S&P){ - curr_state = sPLAY; - } break; case 3: - S,X,P,E = 0; - mac.printf("RECORD\n"); + pc.printf("RECORD\n"); record(); - if(X){ - curr_state = sRESET; - }else if(R&S){ - curr_state = sSTOP; - }else if(R&P){ - curr_state = sPLAY; - } break; case 4: - S,R,X,E = 0; - mac.printf("PLAY\n"); + pc.printf("PLAY\n"); play(); - if(X){ - curr_state = sRESET; - }else if(P&S){ - curr_state = sSTOP; - }else if(P&R){ - curr_state = sPLAY; - } break; case 5: - mac.printf("ERASE\n"); + pc.printf("ERASE\n"); erase(); - S,R,X,P = 0; - if(X){ - curr_state = sRESET; - } + break; } - curr_state = mac.getc(); } } int main() { - mac.printf("MAIN\n"); + pc.printf("MAIN\n"); state_machine_mgr(); }