static void processButton(s_button* button, bool isPressed) { button->pressed <<= 1; if(isPressed) { button->pressed |= 1; if(button->pressed >= BTN_IS_PRESSED) { button->pressedTime = millis(); // this should only be set once! if(!button->funcDone && button->onPress != NULL && button->onPress()) { button->funcDone = true; buzzer_buzz(BTN_PRESS_TONETIME, BTN_PRESS_TONE, VOL_UI); led_flash(LED_GREEN, LED_FLASH_FAST, LED_BRIGHTNESS_MAX); } } } else { button->pressed <<= 1; if(button->pressed <= BTN_NOT_PRESSED) button->funcDone = false; } }
static void hourBeep() { static beep_state_t beep; static byte beepHour; if((timeData.mins == 0 && timeData.secs == 0) || beep != BEEP_0) { switch(beep) { case BEEP_0: if(beepHour != timeData.hours) { beepHour = timeData.hours; pwrmgr_setState(PWR_ACTIVE_HOURBEEP, PWR_STATE_IDLE); buzzer_buzz(100, TONE_2_5KHZ, VOL_HOUR); beep = BEEP_1; } break; case BEEP_1: if(!buzzer_buzzing()) { buzzer_buzz(100, TONE_3_5KHZ, VOL_HOUR); beep = BEEP_2; } break; case BEEP_2: if(!buzzer_buzzing()) { pwrmgr_setState(PWR_ACTIVE_HOURBEEP, PWR_STATE_NONE); beep = BEEP_0; } break; default: break; } } }
int main(void) { init(); sei(); if(wdt_wasReset()) resetError(); buzzer_buzz(200, TONE_4KHZ, VOL_UI); led_flash(LED_GREEN, 50, 255); watchface_setFace(watchface_normal); watchface_loadFace(); /* while(1) { buzzer_buzzb(200,TONE_5KHZ, VOL_UI); buzzer_buzzb(200,TONE_4KHZ, VOL_UI); buzzer_buzzb(200,TONE_2_5KHZ, VOL_UI); buzzer_buzzb(200,TONE_2KHZ, VOL_UI); buzzer_buzzb(200,TONE_4KHZ, VOL_UI); buzzer_buzzb(200,TONE_5KHZ, VOL_UI); buzzer_buzzb(200,TONE_2_5KHZ, VOL_UI); buzzer_buzzb(200,TONE_2KHZ, VOL_UI); buzzer_buzzb(200,TONE_3_5KHZ, VOL_UI); buzzer_buzzb(200,TONE_4KHZ, VOL_UI); buzzer_buzzb(200,TONE_3KHZ, VOL_UI); buzzer_buzzb(250,TONE_2KHZ, VOL_UI); buzzer_buzzb(250,TONE_2KHZ, VOL_UI); buzzer_buzzb(200,TONE_4KHZ, VOL_UI); buzzer_buzzb(200,TONE_4KHZ, VOL_UI); } */ while(1) { bool timeUpt = time_update(); if(pwrmgr_userActive()) { if(timeUpt && timeData.secs == 0) battery_update(); buttons_update(); } buzzer_update(); led_update(); stopwatch_update(); if(pwrmgr_userActive()) { alarm_update(); display_update(); } // freeRAM(); wdt_update(); pwrmgr_update(); } }