GUI code restructuring
[olsrd.git] / gui / linux-gtk / src / main.c
1 /*
2  * OLSR ad-hoc routing table management protocol GUI front-end
3  * Copyright (C) 2003 Andreas T√łnnesen (andreto@ifi.uio.no)
4  *
5  * This file is part of olsrd-unik.
6  *
7  * uolsrGUI is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * uolsrGUI is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with olsrd-unik; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20  *
21  */
22
23 #include "common.h"
24 #include "main.h"
25
26 int
27 main (int argc, char *argv[])
28 {
29 #ifdef WIN32
30   WSADATA WsaData;
31 #endif
32   GtkWidget *main_window;
33
34 #ifdef WIN32
35   if (WSAStartup(0x0202, &WsaData))
36     {
37       fprintf(stderr, "Could not initialize WinSock.\n");
38       exit(1);
39     }
40 #endif
41
42   gtk_init (&argc, &argv);
43
44   init_nodes();
45
46   freeze_packets = 1;
47   display_dec = 1;
48
49   /* "Failsafe" values */
50   ipversion = AF_INET;
51   ipsize = sizeof(struct in_addr);
52
53   main_window = create_main_window ();
54   gtk_widget_show (main_window);
55
56   printf("Done building GUI\n");
57
58   memset(&main_addr, 0, sizeof(union olsr_ip_addr));
59   memset(&null_addr, 0, sizeof(union olsr_ip_addr));
60
61   /* Terminate signal */
62   signal(SIGINT, shutdown_);  
63
64   /* Init node timeout */
65   nodes_timeout = NEIGHB_HOLD_TIME_NW;
66   init_timer((olsr_u32_t) (nodes_timeout * 1000), &hold_time_nodes);
67
68   ipc_connect();
69
70   add_timeouts();
71
72   gtk_main ();
73   return 0;
74 }
75
76
77
78 /*
79  *Timeouts
80  */
81
82 int
83 add_timeouts()
84 {
85
86   /*
87    *Check socket for messages every IPC_INTERVAL
88    *milliseconds
89    */
90   gtk_timeout_add(IPC_INTERVAL, ipc_timeout, NULL);
91
92
93   /*
94    *Time out nodes
95    */
96   timeouts = 5; /* Wait 5 times befor starting timing out nodes */
97   gtk_timeout_add(TOP_HOLD_TIME, time_out_nodes, NULL);
98
99
100  return 1;
101 }
102
103
104
105 gint ipc_timeout(gpointer data)
106 {
107
108   ipc_read();
109   return 1;
110 }
111
112
113
114 void
115 shutdown_(int signal)
116 {
117   printf("Cleaning up...\n");
118
119   if(ipc_close() < 0)
120     printf("Could not close socket!\n");
121
122   printf("BYE-BYE!\n");
123   exit(signal);
124 }