]> err.no Git - mapper/blob - src/maemo-osso.c
Use globaly set _GNU_SOURCE
[mapper] / src / maemo-osso.c
1 /*
2  * This file is part of mapper
3  *
4  * Copyright (C) 2007 Kaj-Michael Lang
5  * Copyright (C) 2006-2007 John Costigan.
6  *
7  * POI and GPS-Info code originally written by Cezary Jackiewicz.
8  *
9  * Default map data provided by http://www.openstreetmap.org/
10  *
11  * This program is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation; either version 2 of the License, or
14  * (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License along
22  * with this program; if not, write to the Free Software Foundation, Inc.,
23  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24  */
25
26 /* 
27  * Maemo hardware specific functions 
28  */
29
30 #include <config.h>
31
32 #include <glib.h>
33 #include <gtk/gtk.h>
34
35 #ifdef WITH_OSSO
36 #include <libosso.h>
37
38 #ifdef WITH_OSSO_IC
39 #include <osso-ic.h>
40 #include <osso-ic-dbus.h>
41 #endif
42
43 #include "map.h"
44 #include "map-download.h"
45 #include "route.h"
46 #include "mapper-types.h"
47 #include "bt.h"
48 #include "gps.h"
49 #include "settings-gconf.h"
50 #include "settings.h"
51 #include "config-gconf.h"
52 #include "ui-common.h"
53
54 gint
55 dbus_cb_default(const gchar *interface, const gchar *method, GArray *arguments, gpointer data, osso_rpc_t *retval)
56 {
57 if(!strcmp(method, "top_application"))
58         gtk_idle_add((GSourceFunc)window_present, NULL);
59 retval->type = DBUS_TYPE_INVALID;
60
61 return OSSO_OK;
62 }
63
64 void
65 osso_cb_hw_state(osso_hw_state_t * state, gpointer data)
66 {
67 static gboolean _must_save_data = FALSE;
68
69 if (state->system_inactivity_ind) {
70         if (_must_save_data)
71                 _must_save_data = FALSE;
72         else {
73                 if (_conn_state > RCVR_OFF) {
74                         if (gconf_client_get_bool(gconf_client, GCONF_KEY_DISCONNECT_ON_COVER, NULL)) {
75                                 gconf_client_clear_cache(gconf_client);
76                                 gps_conn_set_state(RCVR_OFF);
77                                 rcvr_disconnect();
78                                 track_add(0, FALSE);
79                                 /* Pretend autoroute is in progress to avoid download. */
80                                 if (_autoroute_data.enabled)
81                                         _autoroute_data.in_progress = TRUE;
82                         }
83                 }
84                 if (_curl_sid) {
85                         g_source_remove(_curl_sid);
86                         _curl_sid = 0;
87                 }
88         }
89 } else if (state->save_unsaved_data_ind) {
90         config_save();
91         _must_save_data = TRUE;
92 } else if (state->memory_low_ind) {
93         poi_icon_hash_clear();
94 } else {
95         if (_conn_state == RCVR_OFF && _enable_gps) {
96                 gps_conn_set_state(RCVR_DOWN);
97                 rcvr_connect_later();
98                 if (_autoroute_data.enabled)
99                         _autoroute_data.in_progress = TRUE;
100         }
101
102         /* Start curl in case there are downloads pending. */
103         if (iap_is_connected() && !_curl_sid)
104                 _curl_sid = g_timeout_add(100, (GSourceFunc)map_download_timeout, NULL);
105 }
106 }
107
108 #else
109
110 void 
111 osso_cb_hw_state(void *state, gpointer data)
112 {
113 }
114
115 #endif