]> err.no Git - mapper/blob - src/iap.c
Merge branch 'master' of git+ssh://tal.org/home/git/mapper
[mapper] / src / iap.c
1 #include <config.h>
2
3 #ifdef WITH_OSSO
4
5 #include <libosso.h>
6 #include <osso-helplib.h>
7 #include <osso-ic-dbus.h>
8 #include <osso-ic.h>
9
10 #include "iap.h"
11 #include "map.h"
12 #include "gps.h"
13
14 gboolean iap_connecting=FALSE;
15 gboolean iap_connected=TRUE;
16
17 void iap_callback(struct iap_event_t *event, void *arg)
18 {
19         printf("%s()\n", __PRETTY_FUNCTION__);
20         iap_connecting = FALSE;
21         if (event->type == OSSO_IAP_CONNECTED && !iap_connected) {
22                 iap_connected = TRUE;
23                 config_update_proxy();
24                 if (!_curl_sid)
25                         _curl_sid = g_timeout_add(100,
26                                                   (GSourceFunc)
27                                                   curl_download_timeout, NULL);
28         }
29         vprintf("%s(): return\n", __PRETTY_FUNCTION__);
30 }
31
32 DBusHandlerResult
33 get_connection_status_signal_cb(DBusConnection * connection,
34                                 DBusMessage * message, void *user_data)
35 {
36         gchar *iap_name = NULL, *iap_nw_type = NULL, *iap_state = NULL;
37         printf("%s()\n", __PRETTY_FUNCTION__);
38
39         /* check signal */
40         if (!dbus_message_is_signal(message,
41                                     ICD_DBUS_INTERFACE,
42                                     ICD_STATUS_CHANGED_SIG)) {
43                 vprintf("%s(): return DBUS_HANDLER_RESULT_NOT_YET_HANDLED\n",
44                         __PRETTY_FUNCTION__);
45                 return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
46         }
47
48         if (!dbus_message_get_args(message, NULL,
49                                    DBUS_TYPE_STRING, &iap_name,
50                                    DBUS_TYPE_STRING, &iap_nw_type,
51                                    DBUS_TYPE_STRING, &iap_state,
52                                    DBUS_TYPE_INVALID)) {
53                 vprintf("%s(): return DBUS_HANDLER_RESULT_NOT_YET_HANDLED\n",
54                         __PRETTY_FUNCTION__);
55                 return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
56         }
57
58         printf("  > iap_state = %s\n", iap_state);
59         if (!strcmp(iap_state, "CONNECTED")) {
60                 if (!iap_connected) {
61                         iap_connected = TRUE;
62                         config_update_proxy();
63                         if (!_curl_sid)
64                                 _curl_sid = g_timeout_add(100,
65                                                           (GSourceFunc)
66                                                           curl_download_timeout,
67                                                           NULL);
68                 }
69         } else if (iap_connected) {
70                 iap_connected = FALSE;
71                 if (_curl_sid) {
72                         g_source_remove(_curl_sid);
73                         _curl_sid = 0;
74                 }
75         }
76
77         vprintf("%s(): return DBUS_HANDLER_RESULT_HANDLED\n",
78                 __PRETTY_FUNCTION__);
79         return DBUS_HANDLER_RESULT_HANDLED;
80 }
81
82 void
83 iap_connect(void) 
84 {
85 if (!iap_connected && !iap_connecting) {
86         iap_connecting = TRUE;
87         osso_iap_connect(OSSO_IAP_ANY, OSSO_IAP_REQUESTED_CONNECT, NULL);
88 }
89 }
90
91 gboolean
92 iap_is_connected(void)
93 {
94 return iap_connected;
95 }
96
97 #else
98
99 #endif