homework 7
Dependencies: mbed-rtos mbed C12832_lcd LM75B
Diff: main.cpp
- Revision:
- 73:44739860198b
- Parent:
- 72:b4d0c0aa3c26
- Child:
- 74:4debb8f2e21d
--- a/main.cpp Wed Sep 11 23:06:09 2013 +0000 +++ b/main.cpp Wed Sep 11 23:12:35 2013 +0000 @@ -333,38 +333,48 @@ while(1) // thread loop. { - if (dFSMstate == FSM_IDLE) // idle state. + + switch (dFSMstate) { -// pc.printf("\n\r FSM_IDLE"); + case FSM_IDLE : // IDLE. + { + if (dButtonStart & !dDoorOpen & dTimeRemaining) dFSMstate = FSM_COOK; - } - else - if (dFSMstate == FSM_COOK) // cook state. - { - pc.printf("\n\r FSM_COOK"); - if (dDoorOpen & dTimeRemaining) dFSMstate = FSM_PAUSE; + break; + } + case FSM_COOK : // COOK. + { + + if (dDoorOpen & dTimeRemaining) dFSMstate = FSM_PAUSE; + break; + } + case FSM_PAUSE : // PAUSE. + { + if (dButtonStart & !dDoorOpen & dTimeRemaining) dFSMstate = FSM_DONE; + if (dButtonStop) dFSMstate = FSM_COOK; + + break; + } + case FSM_DONE : // DONE. + { + dFSMstate = FSM_IDLE; + + break; + } + + default : {dFSMstate = FSM_IDLE; break;} + + + + } - else - if (dFSMstate == FSM_PAUSE) // pause state. - { - pc.printf("\n\r FSM_PAUSE"); - if (dButtonStart & !dDoorOpen & dTimeRemaining) dFSMstate = FSM_DONE; - if (dButtonStop) dFSMstate = FSM_COOK; - } - else - if (dFSMstate == FSM_DONE) // incomplete. - { - pc.printf("\n\r FSM_DONE"); - // timerFSMdone.reset(); // reset the timer. - dFSMstate = FSM_IDLE; // end of beep. - } + + if (dFSMstate != dFSMstateLast) // if just changed state. { - // tell cookRemainingTime the new state. - queueFSMnewState.put((int* )dFSMstate,1); - + }