void *test8_thread4(void* ptr) { printf("Task 4: I am going to force some interrupts\n"); printf("Task4: Registering ISR's for INT0, INT1, INT2 and INT3\n"); Pr_IRQManager::Install(test8_handler, INT0); Pr_IRQManager::Install(test8_handler, INT1); Pr_IRQManager::Install(test8_handler, INT2); Pr_IRQManager::Install(test8_handler, INT3); printf("Task 4: forcing the INT0 at 2.0 time\n"); Pr_DelayAt(Pr_Time(2.0f) += Test8.start_time); Pr_IRQManager::Force((INT0 - 0x10)); printf("Task 4: forcing the INT1 at 4.0 time\n"); Pr_DelayAt(Pr_Time(4.0f) += Test8.start_time); Pr_IRQManager::Force((INT1 - 0x10)); printf("Task 4: forcing the INT2 at 6.5 time\n"); Pr_DelayAt(Pr_Time(6.5f) += Test8.start_time); Pr_IRQManager::Force((INT2 - 0x10)); printf("Task 4: forcing the INT3 at 7.0 time\n"); Pr_DelayAt(Pr_Time(7.0f) += Test8.start_time); Pr_IRQManager::Force((INT3 - 0x10)); printf("Task 4: End\n"); Pr_IRQManager::Restore(INT0); Pr_IRQManager::Restore(INT1); Pr_IRQManager::Restore(INT2); Pr_IRQManager::Restore(INT3); return NULL; }
void *test1_thread1(void *ptr){ printf("Task 2: Begin\n"); printf("Task 2: Delay at 2.5\n"); Pr_DelayAt(Pr_Time(2.5) += Test1.start_time); printf("Task 2: This must be the message 3\n"); semrec[0]->Wait(); printf("Task 2: This must be the Message 4\n"); task[1]->SetMaxPrioMsg(EDROOMprioHigh); task[0]->SetMaxPrioMsg(EDROOMprioVeryHigh); semrec[0]->Signal(); printf("Task 2: This must be the Message 6\n"); semrec[0]->Wait(); task[1]->RestorePrioMsg(); semrec[0]->Signal(); printf("Task 2: This must be the Message 8\n"); return NULL; }
void *test1_thread2(void *ptr){ printf("Task 3: Begin\n"); printf("Task 3: Delay at 2.0\n"); Pr_DelayAt(Pr_Time(2.0) += Test1.start_time); printf("Task 3: Waits the semaphore\n"); semrec[0]->Wait(); printf("Task 3: This must be the message 2\n"); printf("Task 3: Decrease my priority\n"); task[2]->SetPriority(EDROOMprioVeryLow); printf("Task 3: Signals the semaphore\n"); semrec[0]->Signal(); printf("Task 3: This must be the last message\n"); Test1.End(); return NULL; }
void *test1_thread0(void *ptr){ printf("Task 1: Begin\n"); semrec[0]->Wait(); printf("Task 1: Delay at 2.5\n"); Pr_DelayAt(Pr_Time(2.5) += Test1.start_time); printf("Task 1: This must be the Message 1\n"); semrec[0]->Signal(); printf("Task 1: This must be the Message 5\n"); semrec[0]->Wait(); task[1]->SetMaxPrioTmp(EDROOMprioURGENT); semrec[0]->Signal(); printf("Task 1: This must be the Message 7\n"); return NULL; }
void CCAvoidObstacles::EDROOMTopContext::FProgNextDetection() { //Define interval Pr_Time interval; interval=Pr_Time(0,500000); //Program relative timer Timer.InformIn( interval ); }