// ************************************************************************************************* // @fn eggtimer_tick // @brief To be called every second; decreases eggtimer counter and sets display update flag. // @param none // @return none // ************************************************************************************************* void eggtimer_tick(void) //gibbons: This function could benefit from an alarm queue... { if (sEggtimer.state != EGGTIMER_RUN) return; //sEggtimer.drawFlag == 1 --> seconds changed //sEggtimer.drawFlag == 2 --> minutes also changed //sEggtimer.drawFlag == 3 --> hours also changed sEggtimer.drawFlag = 1; display.flag.update_eggtimer = 1; // gibbons: Is it possible to merge the if and else if blocks into one? if ((sEggtimer.hours == 0) && (sEggtimer.minutes == 0) && (sEggtimer.seconds == 1)) { // Die Zeit ist um! Time's up! sEggtimer.state = EGGTIMER_ALARM; set_eggtimer_to_defaults(); // Set values to defaults, so user can see what time duration just timed out } else if (sEggtimer.seconds-- == 0) { // NOTE: intentionally sEggtimer.seconds--, and not --sEggtimer.seconds sEggtimer.seconds = 59; sEggtimer.drawFlag++; // Subtract a minute from the remaining time if (sEggtimer.minutes-- == 0) { sEggtimer.minutes = 59; sEggtimer.drawFlag++; // Subtract an hour from the remaining time sEggtimer.hours--; } } }
// ************************************************************************************************* // @fn init_eggtimer // @brief Initialize eggtimer; intended to be called once, on firmware restart // @param none // @return none // ************************************************************************************************* void init_eggtimer() { sEggtimer.state = EGGTIMER_STOP; sEggtimer.duration = EGGTIMER_ALARM_DURATION; // Set eggtimer default to 1 minute sEggtimer.default_hours = 0; sEggtimer.default_minutes = 1; sEggtimer.default_seconds = 0; set_eggtimer_to_defaults(); }
// ************************************************************************************************* // @fn mx_eggtimer // @brief eggtimer set routine. Mx stops eggtimer and resets count. // @param u8 line LINE2 // @return none // ************************************************************************************************* void mx_eggtimer(u8 line) { // Stop eggtimer stop_eggtimer(); // Reset eggtimer count to default values set_eggtimer_to_defaults(); // Set eggtimer set_eggtimer(); // Display eggtimer time display_eggtimer(line, DISPLAY_LINE_UPDATE_FULL); }