int main (int argc, gchar *argv[]) { GError *error = NULL; GIOChannel *gio_read; ctx.user = "******"; ctx.pass = "******"; ctx.state = APRSIS_DISCONNECTED; // g_thread_init(NULL); g_type_init(); g_message("opening aprs-is"); start_aprsis(&ctx); g_message("opening gpsd"); // Connect to GPS (FIXME move to thread) if (gps_open("localhost", "2947", &gpsdata) != 0) { printf("no gpsd: %d, %s\n", errno, gps_errstr(errno)); exit(2); } printf("%x\n", gpsdata); printf("%x\n", flags); //sleep(1); gps_stream(&gpsdata, flags, NULL); //printf("%s\n", source.device); printf("started stream\n"); gpsd_io_channel = g_io_channel_unix_new(gpsdata.gps_fd); g_io_channel_set_flags(gpsd_io_channel, G_IO_FLAG_NONBLOCK, NULL); sid3 = g_io_add_watch(gpsd_io_channel, G_IO_IN | G_IO_PRI, gpsd_data_cb, NULL); printf("about to start main loop\n"); main_loop = g_main_loop_new (NULL, FALSE); g_main_loop_run (main_loop); return 0; }
int main (int argc, char **argv) { GtkBuilder *builder; GtkWidget *widget; GtkAccelGroup *ag; OsmGpsMapLayer *osd; const char *repo_uri; char *cachedir, *cachebasedir; GError *error = NULL; GOptionContext *context; GIOChannel *gio_read; context = g_option_context_new ("- Map browser"); g_option_context_set_help_enabled(context, FALSE); g_option_context_add_main_entries (context, entries, NULL); if (!g_option_context_parse (context, &argc, &argv, &error)) { usage(context); return 1; } if (aprsis_server == NULL) { aprsis_server = strdup("euro.aprs2.net"); } if (aprsis_port == 0) { aprsis_port = strdup("14580"); } aprsis_ctx *ctx = aprsis_new(aprsis_server, aprsis_port, "aprsmap", "-1"); //aprsis_ctx *ctx = aprsis_new("localhost", "14580", "aprsmap", "-1"); //set variables properties->lat, properties->lon, properties->range, properties->ctx aprs_details *properties = aprs_details_new(DEF_HOME_LAT,DEF_HOME_LON,DEF_RAD,ctx); if (packet_log_file != NULL) { FILE *log = fopen(packet_log_file, "w"); aprsis_set_log(ctx, log); } g_thread_init(NULL); gtk_init (&argc, &argv); // initialise APRS parser fap_init(); // connect to APRS_IS server start_aprsis(ctx); /* Only use the repo_uri to check if the user has supplied a valid map source ID */ repo_uri = osm_gps_map_source_get_repo_uri(opt_map_provider); if ( repo_uri == NULL ) { usage(context); return 2; } cachebasedir = osm_gps_map_get_default_cache_directory(); if (opt_cache_base_dir && g_file_test(opt_cache_base_dir, G_FILE_TEST_IS_DIR)) { cachedir = g_strdup(OSM_GPS_MAP_CACHE_AUTO); cachebasedir = g_strdup(opt_cache_base_dir); } else if (opt_friendly_cache) { cachedir = g_strdup(OSM_GPS_MAP_CACHE_FRIENDLY); } else if (opt_no_cache) { cachedir = g_strdup(OSM_GPS_MAP_CACHE_DISABLED); } else { cachedir = g_strdup(OSM_GPS_MAP_CACHE_AUTO); } if (opt_debug) gdk_window_set_debug_updates(TRUE); g_debug("Map Cache Dir: %s", cachedir); g_debug("Map Provider: %s (%d)", osm_gps_map_source_get_friendly_name(opt_map_provider), opt_map_provider); map = g_object_new (OSM_TYPE_GPS_MAP, "map-source",opt_map_provider, "tile-cache",cachedir, "tile-cache-base", cachebasedir, "proxy-uri",g_getenv("http_proxy"), NULL); osd = g_object_new (OSM_TYPE_GPS_MAP_OSD, "show-scale",TRUE, "show-coordinates",TRUE, NULL); osm_gps_map_layer_add(OSM_GPS_MAP(map), osd); g_object_unref(G_OBJECT(osd)); g_free(cachedir); g_free(cachebasedir); //Enable keyboard navigation osm_gps_map_set_keyboard_shortcut(map, OSM_GPS_MAP_KEY_FULLSCREEN, GDK_F11); osm_gps_map_set_keyboard_shortcut(map, OSM_GPS_MAP_KEY_UP, GDK_Up); osm_gps_map_set_keyboard_shortcut(map, OSM_GPS_MAP_KEY_DOWN, GDK_Down); osm_gps_map_set_keyboard_shortcut(map, OSM_GPS_MAP_KEY_LEFT, GDK_Left); osm_gps_map_set_keyboard_shortcut(map, OSM_GPS_MAP_KEY_RIGHT, GDK_Right); //Build the UI g_symbol_image = cairo_image_surface_create_from_png("allicons.png"); //, &error); g_symbol_image2 = cairo_image_surface_create_from_png("allicon2.png"); //, &error); stations = g_hash_table_new(g_str_hash, g_str_equal); builder = gtk_builder_new(); gtk_builder_add_from_file (builder, "mapviewer.ui", &error); if (error) g_error ("ERROR: %s\n", error->message); gtk_box_pack_start ( GTK_BOX(gtk_builder_get_object(builder, "map_box")), GTK_WIDGET(map), TRUE, TRUE, 0); // centre on the latitude and longitude set in the properties menu osm_gps_map_set_center_and_zoom(map, properties->lat,properties->lon, 5); //Connect to signals that need data passed to them g_signal_connect ( gtk_builder_get_object(builder, "home_button"), "clicked", G_CALLBACK (on_home_clicked_event), properties); g_signal_connect ( gtk_builder_get_object(builder, "homemenuitem"), "activate", G_CALLBACK (on_home_clicked_event), properties); g_signal_connect ( gtk_builder_get_object(builder, "sethomemenuitem"), "activate", G_CALLBACK (on_set_home_activate_event), properties); g_signal_connect ( gtk_builder_get_object(builder, "okPrefs"), "clicked", G_CALLBACK (on_properties_ok_clicked), properties); g_signal_connect ( gtk_builder_get_object(builder, "prefs_button"), "clicked", G_CALLBACK (on_properties_clicked_event), properties); g_signal_connect (G_OBJECT (map), "button-press-event", G_CALLBACK (on_button_press_event), (gpointer) map); /* potentially unneccesary callbacks. g_signal_connect ( G_OBJECT (map), "button-release-event", G_CALLBACK (on_button_release_event),(gpointer) gtk_builder_get_object(builder, "text_entry")); /* g_signal_connect (G_OBJECT (map), "notify::tiles-queued", G_CALLBACK (on_tiles_queued_changed), (gpointer) gtk_builder_get_object(builder, "cache_label")); */ widget = GTK_WIDGET(gtk_builder_get_object(builder, "window1")); g_signal_connect (widget, "destroy", G_CALLBACK (on_close), (gpointer) map); //pulls popup data from mapviewer.ui popup = GTK_WIDGET(gtk_builder_get_object(builder, "proppop")); about = GTK_WIDGET(gtk_builder_get_object(builder, "about")); //connect mapviewer.ui values to popup window gtk_builder_connect_signals(builder, popup); gtk_builder_connect_signals(builder, about); //Setup accelerators. ag = gtk_accel_group_new(); gtk_accel_group_connect(ag, GDK_w, GDK_CONTROL_MASK, GTK_ACCEL_MASK, g_cclosure_new(gtk_main_quit, NULL, NULL)); gtk_accel_group_connect(ag, GDK_q, GDK_CONTROL_MASK, GTK_ACCEL_MASK, g_cclosure_new(gtk_main_quit, NULL, NULL)); gtk_window_add_accel_group(GTK_WINDOW(widget), ag); //Set up GTK_ENTRY boxes in the preferences pop up latent = GTK_ENTRY(gtk_builder_get_object(builder, "declat")); lonent = GTK_ENTRY(gtk_builder_get_object(builder, "declon")); rangeent = GTK_ENTRY(gtk_builder_get_object(builder, "range")); gtk_entry_set_text(latent, g_strdup_printf("%f",properties->lat)); gtk_entry_set_text(lonent, g_strdup_printf("%f",properties->lon)); gtk_entry_set_text(rangeent, g_strdup_printf("%d",properties->range)); g_object_unref( G_OBJECT( builder ) ); gtk_widget_show_all (widget); //gtk_dialog_run (GTK_DIALOG(data->about) ); //g_log_set_handler ("OsmGpsMap", G_LOG_LEVEL_MASK, g_log_default_handler, NULL); g_log_set_handler ("OsmGpsMap", G_LOG_LEVEL_MESSAGE, g_log_default_handler, NULL); gtk_main (); fap_cleanup(); aprsis_close(ctx); return(0); }