Beispiel #1
0
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;
    }
}