int main(void) { int light_level = 0; Roach_Init(); printf("Welcome to the Roach Test\r\n"); printf("Bump states and light levels will be printed to the terminal every .1 seconds while also controlling the motor speed\r\n"); InitTimer(0, 2000); while (!IsTimerExpired(0)); while (1) { light_level = LightLevel() / 100; if (ReadFrontLeftBumper()) { LeftMtrSpeed(light_level); } if (ReadFrontRightBumper()) { RightMtrSpeed(light_level); } if (ReadRearLeftBumper()) { LeftMtrSpeed(light_level*-1); } if (ReadRearRightBumper()) { RightMtrSpeed(light_level*-1); } if(IsTimerExpired(0)==TIMER_EXPIRED){ printf("%d\t%d\t%d\t%d\t%d", ReadFrontLeftBumper(), ReadFrontRightBumper(), ReadRearLeftBumper(), ReadRearRightBumper(), LightLevel()); InitTimer(0, 100); } } return 0; }
int main(void) { int i = 0; SERIAL_Init(); TIMERS_Init(); INTEnableSystemMultiVectoredInt(); printf("\r\nUno Timers Test Harness\r\n"); printf("Setting each timer for one second longer than the last and waiting for all to expire. There are %d available timers\r\n", TIMERS_IN_TEST); for (i = 0; i <= TIMERS_IN_TEST; i++) { InitTimer(i, (i + 1)*1000); //for second scale } while (IsTimerActive(TIMERS_IN_TEST - 1) == TIMER_ACTIVE) { for (i = 0; i <= TIMERS_IN_TEST; i++) { if (IsTimerExpired(i) == TIMER_EXPIRED) { printf("Timer %d has expired and the free running counter is at %d\r\n", i, GetTime()); ClearTimerExpired(i); } } } printf("All timers have ended\r\n"); printf("Setting and starting 1st timer to 2 seconds using alternative method. \r\n"); SetTimer(0, 2000); StartTimer(0); while (IsTimerExpired(0) != TIMER_EXPIRED); printf("2 seconds should have elapsed\r\n"); printf("Starting 1st timer for 8 seconds but also starting 2nd timer for 4 second\r\n"); InitTimer(0, 8000); InitTimer(1, 4000); while (IsTimerExpired(1) != TIMER_EXPIRED); printf("4 seconds have passed and now stopping 1st timer\r\n"); StopTimer(0); printf("Waiting 6 seconds to verifiy that 1st timer has indeed stopped\r\n"); InitTimer(1, 3000); i = 0; while (IsTimerActive(1) == TIMER_ACTIVE) { if (IsTimerExpired(0) == TIMER_EXPIRED) { i++; ClearTimerExpired(0); } } if (i == 0) { printf("Timer did not expire, module working correctly\r\n"); } else { printf("Timer did expire, module not working correctly\r\n"); } return 0; }
void CItemSpawn::OnTick(bool fExec) { ADDTOCALLSTACK("CitemSpawn:OnTick"); INT64 iMinutes; if ( m_itSpawnChar.m_TimeHiMin <= 0 ) iMinutes = Calc_GetRandLLVal(30) + 1; else iMinutes = minimum(m_itSpawnChar.m_TimeHiMin, m_itSpawnChar.m_TimeLoMin) + Calc_GetRandLLVal(abs(m_itSpawnChar.m_TimeHiMin - m_itSpawnChar.m_TimeLoMin)); if ( iMinutes <= 0 ) iMinutes = 1; if ( !fExec || IsTimerExpired() ) SetTimeout(iMinutes * 60 * TICK_PER_SEC); // set time to check again. if ( !fExec || m_currentSpawned >= GetAmount() ) return; CResourceDef *pDef = FixDef(); if ( !pDef ) { RESOURCE_ID_BASE rid = IsType(IT_SPAWN_ITEM) ? m_itSpawnItem.m_ItemID : m_itSpawnChar.m_CharID; DEBUG_ERR(("Bad Spawn point uid=0%lx, id=%s\n", (DWORD)GetUID(), g_Cfg.ResourceGetName(rid))); return; } if ( IsType(IT_SPAWN_ITEM) ) GenerateItem(pDef); else GenerateChar(pDef); }
char IR_Update() { // Check main sensor #ifdef USE_SAMPLING if (IsTimerExpired(TIMER_IR)) { /* char result = IsMainTriggered(); #ifdef USE_LEDS if (result) LED_OnBank(LED_BANK3, 0x1); else LED_OffBank(LED_BANK3, 0x1); #endif irState[IR_MAIN_I] = result; // Check angle sensor result = IsAngleTriggered(); #ifdef USE_LEDS if (result) LED_OnBank(LED_BANK3, 0x8); else LED_OffBank(LED_BANK3, 0x8); #endif irState[IR_ANGLE_I] = result; */ UpdateCounters(); InitTimer(TIMER_IR, UPDATE_DELAY); } #endif return TRUE; }
MainEvent_t RunEventHandler (void) { MainEvent_t returnEvent = NO_EVENT; uint8_t currentButtonStatus = 0; //BT Receive Message EVENT //MPU-9250 Event Handler if (GetMPU_9250FlagStatus() == NEW_DATA) { ClearMPU_9250InterruptFlag(); intrruptCount++; if (AddEventToQueue(MPU_9250_DATA_READY) != ADDED_TO_QUEUE) returnEvent = QUEUE_FULL; } //Joystick Event Handler if (IsTimerExpired(JOYSTICK_SAMPLE_TIMER)) { ClearTimerExpiredFlag(JOYSTICK_SAMPLE_TIMER); InitTimer(JOYSTICK_SAMPLE_TIMER, TIME_JOYSTICK_SAMPLE); if(AddEventToQueue(SAMPLE_TIMER) != ADDED_TO_QUEUE) returnEvent = QUEUE_FULL; } //Button Event Handler currentButtonStatus = ReadAllButtons(); if (currentButtonStatus != lastButtonStatus) { if(AddEventToQueue(BUTTON_PRESSED) != ADDED_TO_QUEUE) returnEvent = QUEUE_FULL; lastButtonStatus = currentButtonStatus; } //Send BT Data Event Handler if (IsTimerExpired(SEND_BT_TIMER)) { ClearTimerExpiredFlag(SEND_BT_TIMER); InitTimer(SEND_BT_TIMER, TIME_BT_SEND); if(AddEventToQueue(SEND_TIMER) != ADDED_TO_QUEUE) returnEvent = QUEUE_FULL; } returnEvent = GetEventFromQueue(); return returnEvent; }
void main(void) { (void)puts("\r\nIn test harness for timer.c \r\n"); InitTimer(); EnableInterrupts; StartTimer(1, 2000); while(1) { if(IsTimerExpired(1)) { (void)printf("Egg is Cooked!\r\n"); } } }
void CItem::Spawn_OnTick( bool fExec ) { int iMinutes; if ( m_itSpawnChar.m_TimeHiMin <= 0 ) { iMinutes = Calc_GetRandVal(30) + 1; } else { iMinutes = min( m_itSpawnChar.m_TimeHiMin, m_itSpawnChar.m_TimeLoMin ) + Calc_GetRandVal( abs( m_itSpawnChar.m_TimeHiMin - m_itSpawnChar.m_TimeLoMin )); } if ( iMinutes <= 0 ) iMinutes = 1; if ( !fExec || IsTimerExpired() ) { SetTimeout( iMinutes * 60 * TICK_PER_SEC ); // set time to check again. } if ( ! fExec ) return; CResourceDef * pDef = Spawn_FixDef(); if ( pDef == NULL ) { RESOURCE_ID_BASE rid; if ( IsType(IT_SPAWN_ITEM)) { rid = m_itSpawnItem.m_ItemID; } else { rid = m_itSpawnChar.m_CharID; } DEBUG_ERR(( "Bad Spawn point uid=0%lx, id=%s\n", (DWORD) GetUID(), g_Cfg.ResourceGetName(rid) )); return; } if ( IsType(IT_SPAWN_ITEM)) { Spawn_GenerateItem(pDef); } else { Spawn_GenerateChar(pDef); } }
/** * @Function RunTimerService(ES_Event ThisEvent) * @param ES_Event - the event to process * @return ES_NO_EVENT or ES_ERROR * @brief accepts the timer events and updates the state arrays * @author Max Dunne 2013.01.04 */ ES_Event RunTimerService(ES_Event ThisEvent) { ES_Event ReturnEvent; ReturnEvent.EventType = ES_NO_EVENT; // assume no errors switch (ThisEvent.EventType) { case ES_INIT: break; case ES_TIMEOUT: case ES_TIMERACTIVE: case ES_TIMERSTOPPED: UserTimerStates[ThisEvent.EventParam] = ThisEvent.EventType; break; default: //ReturnEvent.EventType = ES_ERROR; break; } #ifdef TIMER_SERVICE_TEST { uint8_t i; switch (timerServiceTestingState) { case init: if (ThisEvent.EventType == ES_INIT) { printf("Timer Module INITED succesfully\r\n"); break; } printf("Timer %d had event %d at time %d\r\n", ThisEvent.EventParam, ThisEvent.EventType, ES_Timer_GetTime()); if ((ThisEvent.EventParam == (TIMERS_USED - 1)) && (ThisEvent.EventType == ES_TIMERACTIVE)) { timerServiceTestingState = expired; printf("Testing timer user functions [expired][stopped][active]{state}\r\n"); } break; case expired: for (i = 0; i < TIMERS_USED; i++) { printf("(%d):[%d,%d,%d]{%d} ", i, IsTimerExpired(i), IsTimerStopped(i), IsTimerActive(i), GetUserTimerState(i)); } printf("\r\n"); if ((ThisEvent.EventParam == (TIMERS_USED - 1)) && (ThisEvent.EventType == ES_TIMEOUT)) { timerServiceTestingState = runstop; ES_Timer_InitTimer(0, 500); for (i = 1; i < TIMERS_USED; i++) { ES_Timer_SetTimer(i, 1000); ES_Timer_StartTimer(i); } } break; case runstop: printf("Timer %d had event %d at time %d\r\n", ThisEvent.EventParam, ThisEvent.EventType, ES_Timer_GetTime()); if ((ThisEvent.EventParam == (0)) && (ThisEvent.EventType == ES_TIMEOUT)) { for (i = 1; i < TIMERS_USED; i++) { ES_Timer_StopTimer(i); } } if ((ThisEvent.EventParam == (TIMERS_USED - 1)) && (ThisEvent.EventType == ES_TIMERSTOPPED)) { printf("Testing of User Timer Functions is complete.\r\n"); } break; default: ReturnEvent.EventType = ES_ERROR; break; } } #endif //ES_Tail(); return ReturnEvent; }