]> rtime.felk.cvut.cz Git - frescor/fosa.git/blob - src_marte/tests/test_clock_and_timers/test_clock_and_timers.c
0451a5ed50e4175670a0ff070680bac1656f84ed
[frescor/fosa.git] / src_marte / tests / test_clock_and_timers / test_clock_and_timers.c
1 #include <unistd.h>
2 #include <stdio.h>
3 #include <time.h> // for nanosleep
4
5 #include "fosa.h"
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    fosa_rel_time_t timerval;
26    fosa_signal_t set[1];
27
28    info.sival_int=69;
29
30    err = fosa_timer_create (clockid, signal, info, &timerid);
31    printf("timer created, err=%d\n", err);
32    assert(err == 0);
33
34    timerval = fosa_msec_to_rel_time(1300);
35
36    err = fosa_rel_timer_arm (timerid, &timerval);
37    printf("timer armed for 1.3 secs, err=%d\n", err);
38
39    set[0] = signal;
40    err = fosa_signal_wait(set,1,&received, &info_received);
41    printf("signal received=%d value=%d (69?), err=%d\n",
42           received,info_received.sival_int,err);
43
44    err = fosa_signal_wait(set,1,&received, &info_received);
45    printf("signal received=%d value=%d (69?), err=%d\n",
46           received,info_received.sival_int,err);
47
48    return 0;
49 }