예제 #1
0
// *************************************************************************************************
// @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--;
	}
    }
    
}
예제 #2
0
// *************************************************************************************************
// @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();
}
예제 #3
0
// *************************************************************************************************
// @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);
}