VALUE method_parseaprs(char* input) { // char* input; unsigned int input_len; fap_packet_t* packet; fap_init(); // Read TNC2-formatted input for example from APRS-IS. input_len = sizeof (input); // Process the packet. packet = fap_parseaprs(input, input_len, 0); if ( packet->error_code ) { printf("Failed to parse packet (%s): %s\n", input, fap_explain_error(*packet->error_code)); } else if ( packet->src_callsign ) { printf("Got packet from %s.\n", packet->src_callsign); } fap_free(packet); fap_cleanup(); return EXIT_SUCCESS; }
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); }