41 lines
1.2 KiB
C
41 lines
1.2 KiB
C
#define EXISTING_TIMERS 7
|
|
|
|
|
|
START_TEST (test_timers)
|
|
{
|
|
uint32_t T[128];
|
|
int i;
|
|
struct pico_timer_ref *tref;
|
|
pico_stack_init();
|
|
for (i = 0; i < 128; i++) {
|
|
pico_time expire = (pico_time)(999999 + i);
|
|
void (*timer)(pico_time, void *) =(void (*)(pico_time, void *))0xff00 + i;
|
|
void *arg = ((void*)0xaa00 + i);
|
|
|
|
T[i] = pico_timer_add(expire, timer, arg);
|
|
printf("New timer %u\n", T[i]);
|
|
}
|
|
for (i = 0; i < 128; i++) {
|
|
void (*timer)(pico_time, void *) =(void (*)(pico_time, void *))0xff00 + i;
|
|
void *arg = ((void*)0xaa00 + i);
|
|
|
|
fail_if((uint32_t)(i + 1) > Timers->n);
|
|
tref = heap_get_element(Timers, (uint32_t)i + EXISTING_TIMERS);
|
|
fail_unless(tref->id == T[i]);
|
|
fail_unless(tref->tmr->timer == timer);
|
|
fail_unless(tref->tmr->arg == arg);
|
|
}
|
|
for (i = 127; i >= 0; i--) {
|
|
printf("Deleting timer %d \n", i );
|
|
pico_timer_cancel(T[i]);
|
|
printf("Deleted timer %d \n", i );
|
|
tref = heap_get_element(Timers, (uint32_t)i + EXISTING_TIMERS);
|
|
fail_unless(tref->tmr == NULL);
|
|
}
|
|
pico_stack_tick();
|
|
pico_stack_tick();
|
|
pico_stack_tick();
|
|
pico_stack_tick();
|
|
}
|
|
END_TEST
|