]> rtime.felk.cvut.cz Git - frescor/fosa.git/blob - src_marte/tests/test_clock_and_timers/test_clock_and_timers.c
Migrating FOSA trunk to d-ac2v2. Phase 1 moving FRSH-FOSA to FOSA
[frescor/fosa.git] / src_marte / tests / test_clock_and_timers / test_clock_and_timers.c
1 #include "fosa_threads_and_signals.h"
2 #include "fosa_clocks_and_timers.h"
3 #include <unistd.h>
4 #include <stdio.h>
5 #include <time.h> // for nanosleep
6
7 // TODO: use #include <assert.h> when it works for all architectures
8 #include <stdlib.h> // for exit in assert
9
10 static void inline assert(expression)
11 {
12    if (!expression) {
13       printe(__FILE__":%u: failed assertion.\n", __LINE__);
14       exit (-1);
15    }
16 }
17
18 int main () {
19    int err;
20    fosa_clock_id_t clockid = FOSA_CLOCK_REALTIME;
21    fosa_signal_t signal = FOSA_SIGNAL_MAX;
22    fosa_signal_t received;
23    fosa_signal_info_t info, info_received;
24    fosa_timer_id_t timerid;
25    bool abstime = false;
26    struct timespec timerval;
27    fosa_signal_t set[1];
28
29    info.sival_int=69;
30
31    err = fosa_timer_create (clockid, signal, info, &timerid);
32    printf("timer created, err=%d\n", err);
33    assert(err == 0);
34
35    timerval.tv_sec=1;
36    timerval.tv_nsec=300000000;
37
38    err = fosa_timer_arm (timerid, abstime, &timerval);
39    printf("timer armed for 1.3 secs, err=%d\n", err);
40
41    set[0] = signal;
42    err = fosa_signal_wait(set,1,&received, &info_received);
43    printf("signal received=%d value=%d (69?), err=%d\n",
44           received,info_received.sival_int,err);
45
46    err = fosa_signal_wait(set,1,&received, &info_received);
47    printf("signal received=%d value=%d (69?), err=%d\n",
48           received,info_received.sival_int,err);
49
50    return 0;
51 }