Initial commit, partially working
[wai] / src / loc_data.c
diff --git a/src/loc_data.c b/src/loc_data.c
new file mode 100644 (file)
index 0000000..3fe4cac
--- /dev/null
@@ -0,0 +1,73 @@
+#include "app_data.h"
+#include "loc_data.h"
+
+void on_error(LocationGPSDControl *control, LocationGPSDControlError error, gpointer data)
+{ 
+       g_debug("location error: %d... quitting", error);
+}
+
+void on_changed(LocationGPSDevice *device, gpointer data)
+
+{    
+    if (!device)
+        return;
+    
+    if (device->fix) {
+        if (device->fix->fields & LOCATION_GPS_DEVICE_LATLONG_SET) {
+            AppData *app_data = (AppData *) data;
+            
+            gchar *tmp_str = (gchar *) g_malloc (25);
+            
+            g_sprintf(tmp_str,"%f", device->fix->latitude);
+            gtk_label_set_text( GTK_LABEL(app_data->main_ui->latitude_value_label), tmp_str );
+
+            g_sprintf(tmp_str,"%f", device->fix->longitude);
+            gtk_label_set_text( GTK_LABEL(app_data->main_ui->longitude_value_label), tmp_str );
+
+            if (device->fix->fields & LOCATION_GPS_DEVICE_ALTITUDE_SET) {
+                g_sprintf(tmp_str,"%f", device->fix->altitude);
+                gtk_label_set_text( GTK_LABEL(app_data->main_ui->altitude_value_label), tmp_str );
+            }
+
+            if (device->fix->fields & LOCATION_GPS_DEVICE_SPEED_SET) {
+                g_sprintf(tmp_str,"%f", device->fix->speed);
+                gtk_label_set_text( GTK_LABEL(app_data->main_ui->speed_value_label), tmp_str );
+            }
+            
+            switch(device->fix->mode) {
+            case LOCATION_GPS_DEVICE_MODE_NOT_SEEN:
+                g_sprintf(tmp_str,"%s", "No sat in view");
+                break;
+            case LOCATION_GPS_DEVICE_MODE_NO_FIX:
+                g_sprintf(tmp_str,"%s", "Not fixed yed");
+                break;
+            case LOCATION_GPS_DEVICE_MODE_2D:
+                g_sprintf(tmp_str,"%s", "2D Fix");
+                break;
+            case LOCATION_GPS_DEVICE_MODE_3D:
+                g_sprintf(tmp_str,"%s", "3D FIX");
+                break;
+            default:
+                g_sprintf(tmp_str,"%s", "Bho");
+            }
+            
+
+            gtk_label_set_text( GTK_LABEL(app_data->main_ui->fix_status_label), tmp_str );
+            
+            g_debug("lat = %f, long = %f", device->fix->latitude, device->fix->longitude);
+
+            g_free(tmp_str);
+        }
+    }
+} 
+
+void on_stop(LocationGPSDControl *control, gpointer data)
+{
+       g_debug("quitting");
+} 
+
+gboolean start_location(gpointer data)
+{
+       location_gpsd_control_start((LocationGPSDControl *) data);
+       return FALSE;
+}