/* *------------------------------------------------------------------------------ * void APP-task(void) *------------------------------------------------------------------------------ */ void APP_task(void) { UINT8 i,*ptr, data; UINT32 addr; UINT8 resetBuzzer = TRUE; ias.curAppTime = GetAppTime(); //Fetches the application time from timer driver if(ias.preAppTime != ias.curAppTime) { ias.preAppTime = ias.curAppTime; for(i = 0; i <MAX_ISSUES; i++) //check for timeout of issues raised { if(ias.issues[i].state == ISSUE_RAISED ) { ias.issues[i].timeout -= 1; ptr = (UINT8*)&ias.issues[i].timeout; data = *ptr; addr = (i*ISSUE_ENTRY_SIZE)+ISSUE_TIMEOUT; Write_b_eep((i*ISSUE_ENTRY_SIZE)+ISSUE_TIMEOUT, *ptr); Busy_eep(); ClrWdt(); data=*(ptr+1); addr = (i*ISSUE_ENTRY_SIZE)+ISSUE_TIMEOUT+1; Write_b_eep((i*ISSUE_ENTRY_SIZE)+ISSUE_TIMEOUT+1, *(ptr+1)); Busy_eep(); ClrWdt(); } } if(update_timeouts() == TRUE) { LAMP_RED = 1; if( ias.issues_raised == 0 ) { LAMP_YELLOW = 0; LAMP_GREEN = 0; } } if(ias.updateCount >= 5) { ias.updateCount = 0; update(); } } ++ias.updateCount; }
/* Always called with interrupts disabled */ static void timer_overflow(void) { uint32_t new_val; timer_cycles ++; new_val = (uint32_t) timer_cycles << 16; if (new_val >= last_sec + F_CPU || unlikely(new_val < last_sec)) { last_sec += F_CPU; seconds ++; } update_timeouts(); }