]> rtime.felk.cvut.cz Git - frescor/fosa.git/blob - src_marte/tests/test_clock_and_timers/test_clock_and_timers.c
Fixing license header
[frescor/fosa.git] / src_marte / 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 static void inline assert(expression)
66 {
67    if (!expression) {
68       printe(__FILE__":%u: failed assertion.\n", __LINE__);
69       exit (-1);
70    }
71 }
72
73 int main () {
74    int err;
75    fosa_clock_id_t clockid = FOSA_CLOCK_REALTIME;
76    fosa_signal_t signal = FOSA_SIGNAL_MAX;
77    fosa_signal_t received;
78    fosa_signal_info_t info, info_received;
79    fosa_timer_id_t timerid;
80    fosa_rel_time_t timerval;
81    fosa_signal_t set[1];
82
83    info.sival_int=69;
84
85    err = fosa_timer_create (clockid, signal, info, &timerid);
86    printf("timer created, err=%d\n", err);
87    assert(err == 0);
88
89    timerval = fosa_msec_to_rel_time(1300);
90
91    err = fosa_rel_timer_arm (timerid, &timerval);
92    printf("timer armed for 1.3 secs, err=%d\n", err);
93
94    set[0] = signal;
95    err = fosa_signal_wait(set,1,&received, &info_received);
96    printf("signal received=%d value=%d (69?), err=%d\n",
97           received,info_received.sival_int,err);
98
99    err = fosa_signal_wait(set,1,&received, &info_received);
100    printf("signal received=%d value=%d (69?), err=%d\n",
101           received,info_received.sival_int,err);
102
103    return 0;
104 }