Initial commit, partially working
[wai] / src / loc_data.c
1 #include "app_data.h"
2 #include "loc_data.h"
3
4 void on_error(LocationGPSDControl *control, LocationGPSDControlError error, gpointer data)
5
6         g_debug("location error: %d... quitting", error);
7 }
8
9 void on_changed(LocationGPSDevice *device, gpointer data)
10
11 {    
12     if (!device)
13         return;
14     
15     if (device->fix) {
16         if (device->fix->fields & LOCATION_GPS_DEVICE_LATLONG_SET) {
17             AppData *app_data = (AppData *) data;
18             
19             gchar *tmp_str = (gchar *) g_malloc (25);
20             
21             g_sprintf(tmp_str,"%f", device->fix->latitude);
22             gtk_label_set_text( GTK_LABEL(app_data->main_ui->latitude_value_label), tmp_str );
23
24             g_sprintf(tmp_str,"%f", device->fix->longitude);
25             gtk_label_set_text( GTK_LABEL(app_data->main_ui->longitude_value_label), tmp_str );
26
27             if (device->fix->fields & LOCATION_GPS_DEVICE_ALTITUDE_SET) {
28                 g_sprintf(tmp_str,"%f", device->fix->altitude);
29                 gtk_label_set_text( GTK_LABEL(app_data->main_ui->altitude_value_label), tmp_str );
30             }
31
32             if (device->fix->fields & LOCATION_GPS_DEVICE_SPEED_SET) {
33                 g_sprintf(tmp_str,"%f", device->fix->speed);
34                 gtk_label_set_text( GTK_LABEL(app_data->main_ui->speed_value_label), tmp_str );
35             }
36             
37             switch(device->fix->mode) {
38             case LOCATION_GPS_DEVICE_MODE_NOT_SEEN:
39                 g_sprintf(tmp_str,"%s", "No sat in view");
40                 break;
41             case LOCATION_GPS_DEVICE_MODE_NO_FIX:
42                 g_sprintf(tmp_str,"%s", "Not fixed yed");
43                 break;
44             case LOCATION_GPS_DEVICE_MODE_2D:
45                 g_sprintf(tmp_str,"%s", "2D Fix");
46                 break;
47             case LOCATION_GPS_DEVICE_MODE_3D:
48                 g_sprintf(tmp_str,"%s", "3D FIX");
49                 break;
50             default:
51                 g_sprintf(tmp_str,"%s", "Bho");
52             }
53             
54
55             gtk_label_set_text( GTK_LABEL(app_data->main_ui->fix_status_label), tmp_str );
56             
57             g_debug("lat = %f, long = %f", device->fix->latitude, device->fix->longitude);
58
59             g_free(tmp_str);
60         }
61     }
62
63
64 void on_stop(LocationGPSDControl *control, gpointer data)
65 {
66         g_debug("quitting");
67
68
69 gboolean start_location(gpointer data)
70 {
71         location_gpsd_control_start((LocationGPSDControl *) data);
72         return FALSE;
73 }