int main (void) { save_power(); USART0Init(); buttons_init(); tone_init(); int useless_steps = 0; int state = STATE_GO_OFF; while (1) { if (useless_steps >= 1000) { useless_steps = 0; state = STATE_GO_OFF; } if (state == STATE_GO_OFF) { state = STATE_IS_OFF; USART0SendString(""); USART0BacklightOff(); deep_sleep(); } tick(); if (toggle_state() == 0) { useless_steps = 0; USART0BacklightOn(); write_next_chore(); while (toggle_state() == 0) { tick(); } // Wait for button to be released int seconds = 0; int miliseconds = 0; while (1) { if (toggle_state() == 0) { state = STATE_GO_OFF; notone(); break; } if (timer_state() == 0) { miliseconds = 0; seconds = 0; notone(); } miliseconds++; if (miliseconds >= 1000) { seconds++; miliseconds = 0; } if (seconds == TIMER_LENGTH) { tone(4400); } else if (seconds > 1000) { seconds = (TIMER_LENGTH + 1); } tick(); } } else { useless_steps++; } } }
void ClientActionToneMelody::tonePeriod() { if (tone_is_melody) { toneMelodyAction(); } else { if (tone_state) { tone(); } else { notone(); } tone_state = !tone_state; } }