void stateWait() { displayCurrentTime(); makeAnAction(ACTION_TICK); } void makeAnAction(int newAction) { action = newAction; } void changeState(int newState) { currentState = newState; } void executeStateAction(){ switch(currentState) { case STATE_WAIT: stateWait(); break; case STATE_SET_TIME: stateSetTime(); break; case STATE_SET_HOUR: stateSetHour(); break; case STATE_CHANGE_HOUR: stateChangeHour(); break; case STATE_INCREASE_HOUR: stateIncreaseHour(); break; case STATE_DECREASE_HOUR: stateDecreaseHour(); break; case STATE_SET_MINUTES: stateSetMinutes(); break; case STATE_CHANGE_MINUTES: stateChangeMinutes(); break; case STATE_INCREASE_MINUTES: stateIncreaseMinutes(); break; case STATE_DECREASE_MINUTES: stateDecreaseMinutes(); break; case STATE_SET_SECONDS: stateSetSeconds(); break; case STATE_CHANGE_SECONDS: stateChangeSeconds(); break; case STATE_INCREASE_SECONDS: stateIncreaseSeconds(); break; case STATE_DECREASE_SECONDS: stateDecreaseSeconds(); break; case STATE_SET_ALARM: stateSetAlarm(); break; case STATE_SET_ALARM_HOUR: stateSetAlarmHour(); break; case STATE_CHANGE_ALARM_HOUR: stateChangeAlarmHour(); break; case STATE_INCREASE_ALARM_HOUR: stateIncreaseAlarmHour(); break; case STATE_DECREASE_ALARM_HOUR: stateDecreaseAlarmHour(); break; case STATE_SET_ALARM_MINUTES: stateSetAlarmMinutes(); break; case STATE_CHANGE_ALARM_MINUTES: stateChangeAlarmMinutes(); break; case STATE_INCREASE_ALARM_MINUTES: stateIncreaseAlarmMinutes(); break; case STATE_DECREASE_ALARM_MINUTES: stateDecreaseAlarmMinutes(); break; case STATE_ALARM_ON_OFF: stateAlarmOnOff(); break; case STATE_ALARM_ON: stateAlarmOn(); break; case STATE_ALARM_OFF: stateAlarmOff(); break; case STATE_ALARM_TURN_ON: stateAlarmTurnOn(); break; case STATE_ALARM_TURN_OFF: stateAlarmTurnOff(); break; } } void stateMachine(){ byte i; //while(true) { if(action != ACTION_NONE){ lastAction = action; makeAnAction(ACTION_NONE); for(i=0; i