misc: Put git-version-gen into the tarball
[osmocom-bb.git] / tests / timer / timer_test.c
1 /*
2  * (C) 2008 by Holger Hans Peter Freyther <zecke@selfish.org>
3  * All Rights Reserved
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  *
19  */
20
21 #include <stdio.h>
22
23 #include <osmocom/core/timer.h>
24 #include <osmocom/core/select.h>
25
26 #include "../../config.h"
27
28 static void timer_fired(void *data);
29
30 static struct osmo_timer_list timer_one = {
31     .cb = timer_fired,
32     .data = (void*)1,
33 };
34
35 static struct osmo_timer_list timer_two = {
36     .cb = timer_fired,
37     .data = (void*)2,
38 };
39
40 static struct osmo_timer_list timer_three = {
41     .cb = timer_fired,
42     .data = (void*)3,
43 };
44
45 static void timer_fired(void *_data)
46 {
47     unsigned long data = (unsigned long) _data;
48     printf("Fired timer: %lu\n", data);
49
50     if (data == 1) {
51         osmo_timer_schedule(&timer_one, 3, 0);
52         osmo_timer_del(&timer_two);
53     } else if (data == 2) {
54         printf("Should not be fired... bug in del_timer\n");
55     } else if (data == 3) {
56         printf("Timer fired not registering again\n");
57     } else  {
58         printf("wtf... wrong data\n");
59     }
60 }
61
62 int main(int argc, char** argv)
63 {
64     printf("Starting... timer\n");
65
66     osmo_timer_schedule(&timer_one, 3, 0);
67     osmo_timer_schedule(&timer_two, 5, 0);
68     osmo_timer_schedule(&timer_three, 4, 0);
69
70 #ifdef HAVE_SYS_SELECT_H
71     while (1) {
72         osmo_select_main(0);
73     }
74 #else
75     printf("Select not supported on this platform!\n");
76 #endif
77 }