]> rtime.felk.cvut.cz Git - frescor/fosa.git/blob - src_marte_os/tests/test_clock_and_timers/test_clock_and_timers.c
cb3cb2b6baf2f8e43497e0fbf65feec51ac008dc
[frescor/fosa.git] / src_marte_os / tests / test_clock_and_timers / test_clock_and_timers.c
1 // -----------------------------------------------------------------------
2 //  Copyright (C) 2006 - 2008 FRESCOR consortium partners:
3 //
4 //    Universidad de Cantabria,              SPAIN
5 //    University of York,                    UK
6 //    Scuola Superiore Sant'Anna,            ITALY
7 //    Kaiserslautern University,             GERMANY
8 //    Univ. Politécnica  Valencia,           SPAIN
9 //    Czech Technical University in Prague,  CZECH REPUBLIC
10 //    ENEA                                   SWEDEN
11 //    Thales Communication S.A.              FRANCE
12 //    Visual Tools S.A.                      SPAIN
13 //    Rapita Systems Ltd                     UK
14 //    Evidence                               ITALY
15 //
16 //    See http://www.frescor.org for a link to partners' websites
17 //
18 //           FRESCOR project (FP6/2005/IST/5-034026) is funded
19 //        in part by the European Union Sixth Framework Programme
20 //        The European Union is not liable of any use that may be
21 //        made of this code.
22 //
23 //
24 //  based on previous work (FSF) done in the FIRST project
25 //
26 //   Copyright (C) 2005  Mälardalen University, SWEDEN
27 //                       Scuola Superiore S.Anna, ITALY
28 //                       Universidad de Cantabria, SPAIN
29 //                       University of York, UK
30 //
31 //   FSF API web pages: http://marte.unican.es/fsf/docs
32 //                      http://shark.sssup.it/contrib/first/docs/
33 //
34 //   This file is part of FOSA (Frsh Operating System Adaption)
35 //
36 //  FOSA is free software; you can redistribute it and/or modify it
37 //  under terms of the GNU General Public License as published by the
38 //  Free Software Foundation; either version 2, or (at your option) any
39 //  later version.  FOSA is distributed in the hope that it will be
40 //  useful, but WITHOUT ANY WARRANTY; without even the implied warranty
41 //  of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
42 //  General Public License for more details. You should have received a
43 //  copy of the GNU General Public License along with FOSA; see file
44 //  COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,
45 //  Cambridge, MA 02139, USA.
46 //
47 //  As a special exception, including FOSA header files in a file,
48 //  instantiating FOSA generics or templates, or linking other files
49 //  with FOSA objects to produce an executable application, does not
50 //  by itself cause the resulting executable application to be covered
51 //  by the GNU General Public License. This exception does not
52 //  however invalidate any other reasons why the executable file might be
53 //  covered by the GNU Public License.
54 // -----------------------------------------------------------------------
55
56 #include <unistd.h>
57 #include <stdio.h>
58 #include <time.h> // for nanosleep
59
60 #include "fosa.h"
61
62 // TODO: use #include <assert.h> when it works for all architectures
63 #include <stdlib.h> // for exit in assert
64
65
66 static void inline asserto(expression)
67 {
68    if (!expression) {
69       printe(__FILE__":%u: failed assertion.\n", __LINE__);
70       exit (-1);
71    }
72 }
73
74 int main () {
75    int err;
76    fosa_clock_id_t clockid = FOSA_CLOCK_REALTIME;
77    fosa_signal_t signal = FOSA_SIGNAL_MAX;
78    fosa_signal_t received;
79    fosa_signal_info_t info, info_received;
80    fosa_timer_id_t timerid;
81    fosa_rel_time_t timerval;
82    fosa_signal_t set[1];
83
84    info.sival_int=69;
85
86    err = fosa_timer_create (clockid, signal, info, &timerid);
87    printf("timer created, err=%d\n", err);
88    assert(err == 0);
89
90    timerval = fosa_msec_to_rel_time(1300);
91
92    err = fosa_rel_timer_arm (timerid, &timerval);
93    printf("timer armed for 1.3 secs, err=%d\n", err);
94
95    set[0] = signal;
96    err = fosa_signal_wait(set,1,&received, &info_received);
97    printf("signal received=%d value=%d (69?), err=%d\n",
98           received,info_received.sival_int,err);
99
100    err = fosa_signal_wait(set,1,&received, &info_received);
101    printf("signal received=%d value=%d (69?), err=%d\n",
102           received,info_received.sival_int,err);
103
104    return 0;
105 }