- gps_state->ui.gps_log_number = 1;
- }
-
- /* Write log entry. Make sure this matches the header */
- /* "No,Date,Time,Lat,Lon,Ele,Head,Speed,Fix,RTR\n" */
- /* RTR values: T=time, B=button push, S=speed, D=distance */
- snprintf(buf, sizeof(buf), "%d,%s,%s,%lf,%lf,%lf,%lf,%lf,%c\n",
- gps_state->ui.gps_log_number++,
- gps_get_date_string(gps_state->gps_data.fix.time),
- gps_get_time_string(gps_state->gps_data.fix.time),
-// gps_data->fix.time,
- gps_data->fix.latitude,
- gps_data->fix.longitude,
- gps_data->fix.altitude * METERS_TO_FEET,
- gps_data->fix.track,
- gps_data->fix.speed * METERS_TO_FEET,
- 'T'); /* position due to timer expired */
-
- if (write(fd, buf, strlen(buf)) == -1) {
- g_warning("Could not write log number %d to log file %s: %s",
- gps_state->ui.gps_log_number-1, filename, strerror(errno));
- }
- close(fd);
-
- GPS_STATUS(gps_state, "Updated GPS log file %s.", filename);
-
- /* reschedule */
- return TRUE;
-}
-
-static gboolean
-on_gps_follow_clicked_event (GtkWidget *widget, gpointer user_data)
-{
- GritsPluginGPS *gps_state = (GritsPluginGPS *)user_data;
-
- g_debug("on_gps_follow_clicked_event called!, button status %d",
- gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)));
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
- gps_state->follow_gps = TRUE;
- else
- gps_state->follow_gps = FALSE;
-
- return FALSE;
-}
-
-
-static void
-gps_init_track_log_frame(GritsPluginGPS *gps_state, GtkWidget *gbox)
-{
- /* Track log box with enable checkbox and filename entry */
- GtkWidget *gps_log_frame = gtk_frame_new ("Track Log");
- GtkWidget *lbox = gtk_vbox_new (FALSE, 2);
- gtk_container_add (GTK_CONTAINER (gps_log_frame), lbox);
- gtk_box_pack_start (GTK_BOX(gbox), gps_log_frame,
- FALSE, FALSE, 0);
-
- gps_state->ui.gps_log_checkbox = gtk_check_button_new_with_label("Log Position to File");
- g_signal_connect (G_OBJECT (gps_state->ui.gps_log_checkbox), "clicked",
- G_CALLBACK (on_gps_log_clicked_event),
- (gpointer)gps_state);
- gtk_box_pack_start (GTK_BOX(lbox), gps_state->ui.gps_log_checkbox,
- FALSE, FALSE, 0);
-
- /* Set up filename entry box */
- GtkWidget *fbox = gtk_hbox_new (FALSE, 2);
- GtkWidget *filename_label = gtk_label_new ("Filename:");
- gtk_box_pack_start (GTK_BOX(fbox), filename_label, FALSE, FALSE, 0);
- gps_state->ui.gps_log_filename_entry = gtk_entry_new();
- gtk_box_pack_start (GTK_BOX(fbox), gps_state->ui.gps_log_filename_entry,
- TRUE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX(lbox), fbox, FALSE, FALSE, 0);
-
- /* set up gps log interval slider */
- GtkWidget *ubox = gtk_hbox_new (FALSE, 4);
- GtkWidget *interval_label = gtk_label_new ("Update Interval:");
- gtk_box_pack_start (GTK_BOX(ubox), interval_label, FALSE, FALSE, 0);
- gps_state->ui.gps_log_interval_slider =
- gtk_hscale_new_with_range(1.0, 600.0, 30.0);
- gtk_range_set_value (GTK_RANGE(gps_state->ui.gps_log_interval_slider),
- GPS_LOG_DEFAULT_UPDATE_INTERVAL);
- g_signal_connect (G_OBJECT (gps_state->ui.gps_log_interval_slider),
- "value-changed",
- G_CALLBACK(on_gps_log_interval_changed_event),
- (gpointer)gps_state);
- gtk_range_set_increments (GTK_RANGE(gps_state->ui.gps_log_interval_slider),
- 10.0 /* step */, 30.0 /* page up/down */);
- gtk_range_set_update_policy (GTK_RANGE(gps_state->ui.gps_log_interval_slider),
- GTK_UPDATE_DELAYED);
- gtk_box_pack_start (GTK_BOX(ubox), gps_state->ui.gps_log_interval_slider,
- TRUE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX(lbox), ubox, FALSE, FALSE, 0);
-}
-
-static gboolean
-on_gps_log_clicked_event (GtkWidget *widget, gpointer user_data)
-{
- GritsPluginGPS *gps_state = (GritsPluginGPS *)user_data;
-
- g_debug("on_gps_log_clicked_event called!");
-
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) {
- gps_write_log(gps_state);
-
- /* Schedule log file write */
- gps_state->ui.gps_log_timeout_id = g_timeout_add(
- gtk_range_get_value(
- GTK_RANGE(gps_state->ui.gps_log_interval_slider))*1000,
- gps_write_log, gps_state);
- } else {
- /* button unchecked */
- g_source_remove(gps_state->ui.gps_log_timeout_id);
- gps_state->ui.gps_log_timeout_id = 0;
- g_debug("Closed log file.");
- }
-
- return FALSE;
-}
-
-static void
-gps_init_spotter_network_frame(GritsPluginGPS *gps_state, GtkWidget *gbox)
-{
- /* Spotter network control box with enable checkbox, active
- * checkbox, and sn ID entry
- */
- GtkWidget *gps_sn_frame = gtk_frame_new ("SpotterNetwork Control");
- GtkWidget *sbox = gtk_vbox_new (FALSE, 2);
- gtk_container_add (GTK_CONTAINER (gps_sn_frame), sbox);
-
- /* create spotter network update checkbox */
- gps_state->ui.gps_sn_checkbox = gtk_check_button_new_with_label("Update SpotterNetwork");
- g_signal_connect (G_OBJECT (gps_state->ui.gps_sn_checkbox), "clicked",
- G_CALLBACK (on_gps_sn_clicked_event),
- (gpointer)gps_state);
- gtk_box_pack_start (GTK_BOX(sbox), gps_state->ui.gps_sn_checkbox,
- FALSE, FALSE, 0);