gpredict-svn Mailing List for Gpredict (Page 10)
Real time satellite tracking and orbit prediction
Status: Beta
Brought to you by:
csete
You can subscribe to this list here.
2008 |
Jan
(24) |
Feb
|
Mar
(6) |
Apr
(14) |
May
(9) |
Jun
|
Jul
|
Aug
(25) |
Sep
(60) |
Oct
(26) |
Nov
|
Dec
(20) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2009 |
Jan
|
Feb
(2) |
Mar
(22) |
Apr
(61) |
May
(57) |
Jun
|
Jul
(3) |
Aug
(83) |
Sep
(35) |
Oct
(50) |
Nov
(28) |
Dec
(34) |
2010 |
Jan
(29) |
Feb
(15) |
Mar
(2) |
Apr
|
May
(6) |
Jun
(2) |
Jul
(24) |
Aug
(2) |
Sep
(9) |
Oct
(43) |
Nov
(22) |
Dec
(6) |
2011 |
Jan
(24) |
Feb
(22) |
Mar
(31) |
Apr
(13) |
May
(10) |
Jun
(10) |
Jul
(43) |
Aug
(12) |
Sep
(18) |
Oct
(33) |
Nov
(18) |
Dec
(4) |
From: <aa...@us...> - 2011-01-24 16:22:52
|
Revision: 741 http://gpredict.svn.sourceforge.net/gpredict/?rev=741&view=rev Author: aa1vs Date: 2011-01-24 16:22:46 +0000 (Mon, 24 Jan 2011) Log Message: ----------- Fixed bug from Ubuntu #706452:Update from local files won't work with files in UPPER case Modified Paths: -------------- trunk/ChangeLog trunk/NEWS trunk/src/tle-update.c Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2011-01-21 12:30:48 UTC (rev 740) +++ trunk/ChangeLog 2011-01-24 16:22:46 UTC (rev 741) @@ -1,3 +1,9 @@ +2010-01-24 Charles Suprin <hamaa1vs at gmail.com> + + * src/tle-update.c + Fix bug where tle file suffix compare is case dependent. + <https://bugs.launchpad.net/bugs/706452> + 2010-12-26 Charles Suprin <hamaa1vs at gmail.com> * src/gtk-rot-ctrl.c Modified: trunk/NEWS =================================================================== --- trunk/NEWS 2011-01-21 12:30:48 UTC (rev 740) +++ trunk/NEWS 2011-01-24 16:22:46 UTC (rev 741) @@ -7,6 +7,7 @@ - Fixed bug 2116691: Leave network connection open. - Fixed bug 3099314: Rotator Thrashing. - Fixed bug 2167508: problems in rotator controller. +- Fixed bug from Ubuntu #706452:Update from local files won't work with files in UPPER case Changes in version 1.2 (12 Oct 2010) Modified: trunk/src/tle-update.c =================================================================== --- trunk/src/tle-update.c 2011-01-21 12:30:48 UTC (rev 740) +++ trunk/src/tle-update.c 2011-01-24 16:22:46 UTC (rev 741) @@ -730,17 +730,18 @@ static gboolean is_tle_file (const gchar *dir, const gchar *fnam) { gchar *path; + gchar *fname_lower; gboolean fileIsOk = FALSE; - path = g_strconcat (dir, G_DIR_SEPARATOR_S, fnam, NULL); + fname_lower=g_ascii_strdown(fnam,-1); if (g_file_test (path, G_FILE_TEST_IS_REGULAR) && - (g_str_has_suffix(fnam, ".tle") || g_str_has_suffix(fnam, ".txt"))) + (g_str_has_suffix(fname_lower, ".tle") || g_str_has_suffix(fname_lower, ".txt"))) { fileIsOk = TRUE; } - + g_free (fname_lower); g_free (path); return fileIsOk; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2011-01-21 12:30:54
|
Revision: 740 http://gpredict.svn.sourceforge.net/gpredict/?rev=740&view=rev Author: aa1vs Date: 2011-01-21 12:30:48 +0000 (Fri, 21 Jan 2011) Log Message: ----------- Eliminate segfault if pass being returned is NULL in get_pass routines. Modified Paths: -------------- branches/gpsd_testing/src/predict-tools.c Modified: branches/gpsd_testing/src/predict-tools.c =================================================================== --- branches/gpsd_testing/src/predict-tools.c 2011-01-20 12:55:42 UTC (rev 739) +++ branches/gpsd_testing/src/predict-tools.c 2011-01-21 12:30:48 UTC (rev 740) @@ -503,6 +503,8 @@ pass->vis[3] = 0; pass->satname = g_strdup (sat->nickname); pass->details = NULL; + /*copy qth data into the pass for later comparisons*/ + qth_small_save(qth,&(pass->qth_comp)); /* iterate over each time step */ for (t = pass->aos; t <= pass->los; t += step) { @@ -597,9 +599,6 @@ } } - /*copy qth data into the pass for later comparisons*/ - qth_small_save(qth,&(pass->qth_comp)); - return pass; } @@ -936,6 +935,8 @@ pass->vis[3] = 0; pass->satname = g_strdup (sat->nickname); pass->details = NULL; + /*copy qth data into the pass for later comparisons*/ + qth_small_save(qth,&(pass->qth_comp)); /* iterate over each time step */ for (t = pass->aos; t <= pass->los; t += step) { @@ -1017,9 +1018,6 @@ } - /*copy qth data into the pass for later comparisons*/ - qth_small_save(qth,&(pass->qth_comp)); - return pass; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2011-01-20 12:55:48
|
Revision: 739 http://gpredict.svn.sourceforge.net/gpredict/?rev=739&view=rev Author: aa1vs Date: 2011-01-20 12:55:42 +0000 (Thu, 20 Jan 2011) Log Message: ----------- Convert gps update time to seconds. Modified Paths: -------------- branches/gpsd_testing/src/gtk-sat-module.c Modified: branches/gpsd_testing/src/gtk-sat-module.c =================================================================== --- branches/gpsd_testing/src/gtk-sat-module.c 2011-01-19 12:20:30 UTC (rev 738) +++ branches/gpsd_testing/src/gtk-sat-module.c 2011-01-20 12:55:42 UTC (rev 739) @@ -1372,7 +1372,7 @@ buff[TIME_FORMAT_MAX_LENGTH]='\0'; if (module->qth->type==QTH_GPSD_TYPE) { - buff2=g_strdup_printf("%s GPS %0.0f seconds old", buff,fabs(module->tmgCdnum-module->qth->gpsd_update)); + buff2=g_strdup_printf("%s GPS %0.3f seconds old", buff,fabs(module->tmgCdnum-module->qth->gpsd_update)*(24*3600)); gtk_label_set_text (GTK_LABEL (module->header), buff2); g_free(buff2); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2011-01-19 12:20:37
|
Revision: 738 http://gpredict.svn.sourceforge.net/gpredict/?rev=738&view=rev Author: aa1vs Date: 2011-01-19 12:20:30 +0000 (Wed, 19 Jan 2011) Log Message: ----------- Added initial GPSD API version 5 support. Added engineering gui support for GPSD. Modified Paths: -------------- branches/gpsd_testing/src/gtk-sat-module.c branches/gpsd_testing/src/qth-data.c branches/gpsd_testing/src/qth-data.h branches/gpsd_testing/src/sat-pref-qth-editor.c branches/gpsd_testing/src/sat-pref-qth.c Modified: branches/gpsd_testing/src/gtk-sat-module.c =================================================================== --- branches/gpsd_testing/src/gtk-sat-module.c 2011-01-16 19:24:25 UTC (rev 737) +++ branches/gpsd_testing/src/gtk-sat-module.c 2011-01-19 12:20:30 UTC (rev 738) @@ -1353,9 +1353,9 @@ time_t t; guint size; gchar buff[TIME_FORMAT_MAX_LENGTH+1]; + gchar *buff2; - t = (module->tmgCdnum - 2440587.5)*86400.; fmtstr = sat_cfg_get_str (SAT_CFG_STR_TIME_FORMAT); @@ -1370,8 +1370,17 @@ buff[size]='\0'; else buff[TIME_FORMAT_MAX_LENGTH]='\0'; + + if (module->qth->type==QTH_GPSD_TYPE) { + buff2=g_strdup_printf("%s GPS %0.0f seconds old", buff,fabs(module->tmgCdnum-module->qth->gpsd_update)); + gtk_label_set_text (GTK_LABEL (module->header), buff2); + g_free(buff2); + } + else + gtk_label_set_text (GTK_LABEL (module->header), buff); + - gtk_label_set_text (GTK_LABEL (module->header), buff); + g_free (fmtstr); if (module->tmgActive) Modified: branches/gpsd_testing/src/qth-data.c =================================================================== --- branches/gpsd_testing/src/qth-data.c 2011-01-16 19:24:25 UTC (rev 737) +++ branches/gpsd_testing/src/qth-data.c 2011-01-19 12:20:30 UTC (rev 738) @@ -493,6 +493,7 @@ #if HAS_LIBGPS switch (GPSD_API_MAJOR_VERSION){ case 4: +#if GPSD_API_MAJOR_VERSION==4 if(gps_waiting(qth->gps_data) == 1) { if(gps_poll(qth->gps_data) == 0){ /*handling packet_set inline with @@ -524,16 +525,56 @@ } } } +#endif break; + case 5: +#if GPSD_API_MAJOR_VERSION==5 + if(gps_waiting(qth->gps_data) == 1) { + if(gps_read(qth->gps_data) == 0){ + /*handling packet_set inline with + http://gpsd.berlios.de/client-howto.html + */ + if (qth->gps_data->set&PACKET_SET) { + if (qth->gps_data->fix.mode >= MODE_2D) { + if (qth->lat != qth->gps_data->fix.latitude) { + qth->lat = qth->gps_data->fix.latitude; + retval = TRUE; + } + if (qth->lon!=qth->gps_data->fix.longitude) { + qth->lon = qth->gps_data->fix.longitude; + retval = TRUE; + } + } + + if (qth->gps_data->fix.mode == MODE_3D) { + if (qth->alt != qth->gps_data->fix.altitude) { + qth->alt = qth->gps_data->fix.altitude; + retval = TRUE; + } + } else { + if (qth->alt != 0) { + qth->alt = 0; + retval = TRUE; + } + } + } + } + } +#endif + break; default: break; } #endif + if (retval == TRUE){ + qth->gpsd_update = t; + } } break; default: break; } + /*check that data is valid*/ qth_validate(qth); return retval; } @@ -557,8 +598,8 @@ #if HAS_LIBGPS switch (GPSD_API_MAJOR_VERSION) { case 4: +#if GPSD_API_MAJOR_VERSION==4 /* open the connection to gpsd and start the stream */ - //qth->gps_data=gps_open(server,port); qth->gps_data = g_try_new0(struct gps_data_t,1); port=g_strdup_printf("%d",qth->gpsd_port); if (gps_open_r(qth->gpsd_server,port,qth->gps_data)==-1) { @@ -573,7 +614,27 @@ retval = TRUE; } g_free(port); +#endif break; + case 5: +#if GPSD_API_MAJOR_VERSION==5 + /* open the connection to gpsd and start the stream */ + qth->gps_data = g_try_new0(struct gps_data_t,1); + port=g_strdup_printf("%d",qth->gpsd_port); + if (gps_open(qth->gpsd_server,port,qth->gps_data)==-1) { + free(qth->gps_data); + qth->gps_data = NULL; + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: Could not open gpsd at %s:%d"), + __FUNCTION__, qth->gpsd_server, qth->gpsd_port); + retval = FALSE; + } else { + (void)gps_stream(qth->gps_data, WATCH_ENABLE, NULL); + retval = TRUE; + } + g_free(port); +#endif + break; default: sat_log_log (SAT_LOG_LEVEL_ERROR, _("%s: Unsupported gpsd api major version (%d)"), @@ -614,6 +675,9 @@ case 4: gps_close(qth->gps_data); break; + case 5: + gps_close(qth->gps_data); + break; default: break; } Modified: branches/gpsd_testing/src/qth-data.h =================================================================== --- branches/gpsd_testing/src/qth-data.h 2011-01-16 19:24:25 UTC (rev 737) +++ branches/gpsd_testing/src/qth-data.h 2011-01-19 12:20:30 UTC (rev 738) @@ -47,6 +47,7 @@ gint type; /*!< QTH type (static,gpsd). */ gchar *gpsd_server; /*!< GPSD Server name. */ gint gpsd_port; /*!< GPSD Server port. */ + gdouble gpsd_update; /*!< Time last GPSD update was received. */ struct gps_data_t *gps_data; /*!< gpsd data structure. */ GKeyFile *data; /*!< Raw data from cfg file. */ } qth_t; Modified: branches/gpsd_testing/src/sat-pref-qth-editor.c =================================================================== --- branches/gpsd_testing/src/sat-pref-qth-editor.c 2011-01-16 19:24:25 UTC (rev 737) +++ branches/gpsd_testing/src/sat-pref-qth-editor.c 2011-01-19 12:20:30 UTC (rev 738) @@ -79,6 +79,7 @@ static GtkWidget *ns,*ew; static GtkWidget *qra; /* QRA locator */ +static GtkWidget *type; /* GPSD type */ static GtkWidget *server; /* GPSD Server */ static GtkWidget *port; /* GPSD Port */ static gulong latsigid,lonsigid,nssigid,ewsigid,qrasigid; @@ -358,13 +359,25 @@ G_CALLBACK (select_location), GUINT_TO_POINTER (SELECTION_MODE_WX)); gtk_table_attach_defaults (GTK_TABLE (table), wxbut, 3, 4, 7, 8); + /* GPSD enabled*/ + label = gtk_label_new (_("QTHtype")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 10, 11); + + type = gtk_spin_button_new_with_range (0, 1, 1); + gtk_spin_button_set_increments (GTK_SPIN_BUTTON (type), 1, 1); + gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (type), TRUE); + gtk_tooltips_set_tip (tooltips, type, + _("zero for old, 1 for gpsd"), + NULL); + gtk_table_attach_defaults (GTK_TABLE (table), type, 1, 2, 10, 11); /* GPSD Server */ label = gtk_label_new (_("GPSD Server")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 8, 9); server = gtk_entry_new (); - gtk_entry_set_max_length (GTK_ENTRY (server), 6); + gtk_entry_set_max_length (GTK_ENTRY (server), 6000); tooltips = gtk_tooltips_new (); gtk_tooltips_set_tip (tooltips, server, _("GPSD Server."), @@ -409,9 +422,11 @@ gdouble qthlon; /* longitude */ guint qthalt; /* altitude */ gchar *qthwx; /* weather station */ + gchar *qthgpsdserver; /* gpsdserver */ + guint qthtype; /* type */ + guint qthgpsdport; /* gpsdport */ - selection = gtk_tree_view_get_selection (treeview); if (gtk_tree_selection_get_selected (selection, &model, &iter)) { @@ -425,6 +440,9 @@ QTH_LIST_COL_LON, &qthlon, QTH_LIST_COL_ALT, &qthalt, QTH_LIST_COL_WX, &qthwx, + QTH_LIST_COL_GPSD_SERVER, &qthgpsdserver, + QTH_LIST_COL_GPSD_PORT, &qthgpsdport, + QTH_LIST_COL_TYPE, &qthtype, -1); /* update widgets and free memory afterwards */ @@ -446,6 +464,10 @@ gtk_entry_set_text (GTK_ENTRY (wx), qthwx); g_free (qthwx); } + if (qthgpsdserver) { + gtk_entry_set_text (GTK_ENTRY (server), qthgpsdserver); + g_free (qthgpsdserver); + } if (qthlat < 0.00) gtk_combo_box_set_active (GTK_COMBO_BOX (ns), 1); @@ -462,6 +484,8 @@ gtk_spin_button_set_value (GTK_SPIN_BUTTON (lon), fabs (qthlon)); gtk_spin_button_set_value (GTK_SPIN_BUTTON (alt), qthalt); + gtk_spin_button_set_value (GTK_SPIN_BUTTON (port), qthgpsdport); + gtk_spin_button_set_value (GTK_SPIN_BUTTON (type), qthtype); sat_log_log (SAT_LOG_LEVEL_DEBUG, _("%s:%d: Loaded %s for editing:\n"\ @@ -517,9 +541,12 @@ const gchar *qthloc; const gchar *qthdesc; const gchar *qthwx; + const gchar *qthgpsdserver; gdouble qthlat; gdouble qthlon; guint qthalt; + guint qthtype; + guint qthgpsdport; const gchar *qthqra; @@ -529,6 +556,7 @@ qthloc = gtk_entry_get_text (GTK_ENTRY (location)); qthdesc = gtk_entry_get_text (GTK_ENTRY (desc)); qthwx = gtk_entry_get_text (GTK_ENTRY (wx)); + qthgpsdserver = gtk_entry_get_text (GTK_ENTRY (server)); qthlat = gtk_spin_button_get_value (GTK_SPIN_BUTTON (lat)); if (gtk_combo_box_get_active (GTK_COMBO_BOX (ns))) @@ -539,6 +567,8 @@ qthlon = -qthlon; qthalt = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (alt)); + qthgpsdport = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (port)); + qthtype = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (type)); /* get liststore */ liststore = GTK_LIST_STORE (gtk_tree_view_get_model (treeview)); @@ -574,6 +604,9 @@ QTH_LIST_COL_LON, qthlon, QTH_LIST_COL_ALT, qthalt, QTH_LIST_COL_WX, qthwx, + QTH_LIST_COL_GPSD_SERVER, qthgpsdserver, + QTH_LIST_COL_GPSD_PORT, qthgpsdport, + QTH_LIST_COL_TYPE, qthtype, -1); qthqra = gtk_entry_get_text (GTK_ENTRY (qra)); Modified: branches/gpsd_testing/src/sat-pref-qth.c =================================================================== --- branches/gpsd_testing/src/sat-pref-qth.c 2011-01-16 19:24:25 UTC (rev 737) +++ branches/gpsd_testing/src/sat-pref-qth.c 2011-01-19 12:20:30 UTC (rev 738) @@ -225,13 +225,13 @@ /* alt column */ renderer = gtk_cell_renderer_text_new (); if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_IMPERIAL)) { - column = gtk_tree_view_column_new_with_attributes (_("Alt (ft)"), + column = gtk_tree_view_column_new_with_attributes (_("Alt\n(ft)"), renderer, "text", QTH_LIST_COL_ALT, NULL); } else { - column = gtk_tree_view_column_new_with_attributes (_("Alt (m)"), renderer, + column = gtk_tree_view_column_new_with_attributes (_("Alt\n(m)"), renderer, "text", QTH_LIST_COL_ALT, NULL); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2011-01-16 19:24:31
|
Revision: 737 http://gpredict.svn.sourceforge.net/gpredict/?rev=737&view=rev Author: aa1vs Date: 2011-01-16 19:24:25 +0000 (Sun, 16 Jan 2011) Log Message: ----------- Added more QTH validation Modified Paths: -------------- branches/gpsd_testing/src/qth-data.c Modified: branches/gpsd_testing/src/qth-data.c =================================================================== --- branches/gpsd_testing/src/qth-data.c 2011-01-14 13:09:10 UTC (rev 736) +++ branches/gpsd_testing/src/qth-data.c 2011-01-16 19:24:25 UTC (rev 737) @@ -44,6 +44,7 @@ #include <gps.h> #endif +void qth_validate(qth_t*qth); /** \brief Read QTH data from file. @@ -256,8 +257,8 @@ g_clear_error (&error); } + qth_validate(qth); - /* Now, send debug message and return */ sat_log_log (SAT_LOG_LEVEL_MSG, _("%s: QTH data: %s, %.4f, %.4f, %d"), @@ -494,28 +495,33 @@ case 4: if(gps_waiting(qth->gps_data) == 1) { if(gps_poll(qth->gps_data) == 0){ - if (qth->gps_data->fix.mode >= MODE_2D) { - if (qth->lat != qth->gps_data->fix.latitude) { - qth->lat = qth->gps_data->fix.latitude; - retval = TRUE; + /*handling packet_set inline with + http://gpsd.berlios.de/client-howto.html + */ + if (qth->gps_data->set&PACKET_SET) { + if (qth->gps_data->fix.mode >= MODE_2D) { + if (qth->lat != qth->gps_data->fix.latitude) { + qth->lat = qth->gps_data->fix.latitude; + retval = TRUE; + } + if (qth->lon!=qth->gps_data->fix.longitude) { + qth->lon = qth->gps_data->fix.longitude; + retval = TRUE; + } } - if (qth->lon!=qth->gps_data->fix.longitude) { - qth->lon = qth->gps_data->fix.longitude; - retval = TRUE; + + if (qth->gps_data->fix.mode == MODE_3D) { + if (qth->alt != qth->gps_data->fix.altitude) { + qth->alt = qth->gps_data->fix.altitude; + retval = TRUE; + } + } else { + if (qth->alt != 0) { + qth->alt = 0; + retval = TRUE; + } } } - - if (qth->gps_data->fix.mode == MODE_3D) { - if (qth->alt != qth->gps_data->fix.altitude) { - qth->alt = qth->gps_data->fix.altitude; - retval = TRUE; - } - } else { - if (qth->alt != 0) { - qth->alt = 0; - retval = TRUE; - } - } } } break; @@ -528,6 +534,7 @@ default: break; } + qth_validate(qth); return retval; } @@ -539,8 +546,10 @@ */ gboolean qth_data_update_init(qth_t * qth) { char *port; + gboolean retval=FALSE; switch (qth->type){ + case QTH_STATIC_TYPE: /*nothing to do. the data never updates*/ break; @@ -550,21 +559,27 @@ case 4: /* open the connection to gpsd and start the stream */ //qth->gps_data=gps_open(server,port); - qth->gps_data=g_try_new0(struct gps_data_t,1); + qth->gps_data = g_try_new0(struct gps_data_t,1); port=g_strdup_printf("%d",qth->gpsd_port); if (gps_open_r(qth->gpsd_server,port,qth->gps_data)==-1) { free(qth->gps_data); - qth->gps_data=NULL; + qth->gps_data = NULL; sat_log_log (SAT_LOG_LEVEL_ERROR, _("%s: Could not open gpsd at %s:%d"), __FUNCTION__, qth->gpsd_server, qth->gpsd_port); - return FALSE; + retval = FALSE; } else { (void)gps_stream(qth->gps_data, WATCH_ENABLE, NULL); + retval = TRUE; } g_free(port); break; default: + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: Unsupported gpsd api major version (%d)"), + __FUNCTION__, GPSD_API_MAJOR_VERSION); + + return FALSE; break; } @@ -576,7 +591,7 @@ default: break; } - return TRUE; + return retval; } /** \brief Shutdown and free structures inside the qth_t stucture were used for updates. @@ -603,7 +618,7 @@ break; } #endif - qth->gps_data=NULL; + qth->gps_data = NULL; } break; @@ -652,6 +667,71 @@ qth_small->alt=qth->alt; } +/** \brief Validate the contents of a qth structure and correct if neccessary + * \param qth the qth data structure to cleanup + */ +void qth_validate(qth_t*qth){ + /*check that the values are not set to nonsense such as nan or inf. if so error it and set to zero.*/ + if (!isnormal(qth->lat)){ + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: QTH data had bogus lat %f"), + __FUNCTION__,qth->lat); + qth->lat=0.0; + + } + if (!isnormal(qth->lon)){ + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: QTH data had bogus lon %f"), + __FUNCTION__,qth->lon); + qth->lon=0.0; + } + if (!isnormal(qth->alt)){ + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: QTH data had bogus alt %f"), + __FUNCTION__,qth->alt); + qth->alt=0.0; + } + + /*check that qth->lat and qth->lon are in a reasonable range and if not wrap them back*/ + if (fabs(qth->lat)>90.0||fabs(qth->lon)>180.0) { + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: File contained bogus QTH data. Correcting: %s, %.4f, %.4f, %d"), + __FUNCTION__, + qth->name, + qth->lat, + qth->lon, + qth->alt); + + qth->lat=fmod(qth->lat,360.0); + while ((qth->lat)>180.0){ + qth->lat=qth->lat-180.0; + qth->lon=qth->lon+180.0; + } + + while ((qth->lat)<-180.0){ + qth->lat=qth->lat+180.0; + qth->lon=qth->lon+180.0; + } + if (qth->lat>90.0){ + qth->lat=180.0-qth->lat; + qth->lon=qth->lon+180.0; + } + + if (qth->lat<-90.0){ + qth->lat=-180.0-qth->lat; + qth->lon=qth->lon+180.0; + } + + qth->lon=fmod(qth->lon+180.0,360.0)-180; + if (qth->lon<-180.0) { + qth->lon+=360.0; + } else if (qth->lon>180.0) { + qth->lon-=360.0; + } + + } +} + /** \brief Compute the distance between a location in a qth_t structure and qth_small_t structure. * \param qth the qth data structure * \param qth_small the data structure This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2011-01-14 13:09:16
|
Revision: 736 http://gpredict.svn.sourceforge.net/gpredict/?rev=736&view=rev Author: aa1vs Date: 2011-01-14 13:09:10 +0000 (Fri, 14 Jan 2011) Log Message: ----------- Updated copyright information. Added handling for new QTH fields into saving and loading routines. Updated qth preference guis. (Still not complete) Conditioned gpsd calls on GPSD_API_MAJOR_VERSION as requested in libgps man page. Update NEWS and Changelog in anticipation of merge with trunk. Corrected minor typos in comments. Modified Paths: -------------- branches/gpsd_testing/NEWS branches/gpsd_testing/src/config-keys.h branches/gpsd_testing/src/gtk-polar-view.c branches/gpsd_testing/src/gtk-rot-ctrl.c branches/gpsd_testing/src/gtk-sat-map.c branches/gpsd_testing/src/gtk-sat-module.c branches/gpsd_testing/src/gtk-sat-module.h branches/gpsd_testing/src/mod-mgr.c branches/gpsd_testing/src/predict-tools.c branches/gpsd_testing/src/predict-tools.h branches/gpsd_testing/src/qth-data.c branches/gpsd_testing/src/qth-data.h branches/gpsd_testing/src/sat-pref-qth-data.h branches/gpsd_testing/src/sat-pref-qth.c Modified: branches/gpsd_testing/NEWS =================================================================== --- branches/gpsd_testing/NEWS 2011-01-11 23:53:07 UTC (rev 735) +++ branches/gpsd_testing/NEWS 2011-01-14 13:09:10 UTC (rev 736) @@ -1,5 +1,6 @@ Changes in version 1.3 (TBD) +- Feature request 3141555: gpsd support. - Feature request 2873824: Flip Passes. - Feature Request 3022617: Malaysia's location. - Automatically refresh the Sky at a glance view every minute. Modified: branches/gpsd_testing/src/config-keys.h =================================================================== --- branches/gpsd_testing/src/config-keys.h 2011-01-11 23:53:07 UTC (rev 735) +++ branches/gpsd_testing/src/config-keys.h 2011-01-14 13:09:10 UTC (rev 736) @@ -2,9 +2,10 @@ /* Gpredict: Real-time satellite tracking and orbit prediction program - Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. + Copyright (C) 2001-2011 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete <oz...@gm...> + Charles Suprin <ham...@gm...> Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ @@ -56,9 +57,9 @@ #define QTH_CFG_LAT_KEY "LAT" #define QTH_CFG_LON_KEY "LON" #define QTH_CFG_ALT_KEY "ALT" -#define QTH_CFG_SERVER_KEY "SERVER" -#define QTH_CFG_PORT_KEY "PORT" -#define QTH_CFG_QTH_TYPE_KEY "QTH_TYPE" +#define QTH_CFG_GPSD_SERVER_KEY "GPSDSERVER" +#define QTH_CFG_GPSD_PORT_KEY "GPSDPORT" +#define QTH_CFG_TYPE_KEY "QTH_TYPE" /* Module files (.mod) */ Modified: branches/gpsd_testing/src/gtk-polar-view.c =================================================================== --- branches/gpsd_testing/src/gtk-polar-view.c 2011-01-11 23:53:07 UTC (rev 735) +++ branches/gpsd_testing/src/gtk-polar-view.c 2011-01-14 13:09:10 UTC (rev 736) @@ -2,9 +2,10 @@ /* Gpredict: Real-time satellite tracking and orbit prediction program - Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. + Copyright (C) 2001-2011 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete <oz...@gm...> + Charles Suprin <ham...@gm...> Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ Modified: branches/gpsd_testing/src/gtk-rot-ctrl.c =================================================================== --- branches/gpsd_testing/src/gtk-rot-ctrl.c 2011-01-11 23:53:07 UTC (rev 735) +++ branches/gpsd_testing/src/gtk-rot-ctrl.c 2011-01-14 13:09:10 UTC (rev 736) @@ -5,6 +5,7 @@ Copyright (C) 2001-2010 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete <oz...@gm...> + Charles Suprin <ham...@gm...> Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ Modified: branches/gpsd_testing/src/gtk-sat-map.c =================================================================== --- branches/gpsd_testing/src/gtk-sat-map.c 2011-01-11 23:53:07 UTC (rev 735) +++ branches/gpsd_testing/src/gtk-sat-map.c 2011-01-14 13:09:10 UTC (rev 736) @@ -4,9 +4,11 @@ Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Copyright (C) 2006-2007 William J Beksi, KC2EXL. + Copyright (C) 2011 Charles Suprin, AA1VS. Authors: Alexandru Csete <oz...@gm...> William J Beksi <wj...@us...> + Charles Suprin <ham...@gm...> Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ Modified: branches/gpsd_testing/src/gtk-sat-module.c =================================================================== --- branches/gpsd_testing/src/gtk-sat-module.c 2011-01-11 23:53:07 UTC (rev 735) +++ branches/gpsd_testing/src/gtk-sat-module.c 2011-01-14 13:09:10 UTC (rev 736) @@ -4,7 +4,9 @@ Copyright (C) 2001-2010 Alexandru Csete, OZ9AEC. + Authors: Alexandru Csete <oz...@gm...> + Charles Suprin <ham...@gm...> Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ Modified: branches/gpsd_testing/src/gtk-sat-module.h =================================================================== --- branches/gpsd_testing/src/gtk-sat-module.h 2011-01-11 23:53:07 UTC (rev 735) +++ branches/gpsd_testing/src/gtk-sat-module.h 2011-01-14 13:09:10 UTC (rev 736) @@ -2,9 +2,10 @@ /* Gpredict: Real-time satellite tracking and orbit prediction program - Copyright (C) 2001-2010 Alexandru Csete, OZ9AEC. + Copyright (C) 2001-2011 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete <oz...@gm...> + Charles Suprin <ham...@gm...> Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ Modified: branches/gpsd_testing/src/mod-mgr.c =================================================================== --- branches/gpsd_testing/src/mod-mgr.c 2011-01-11 23:53:07 UTC (rev 735) +++ branches/gpsd_testing/src/mod-mgr.c 2011-01-14 13:09:10 UTC (rev 736) @@ -82,7 +82,7 @@ static void create_module_window (GtkWidget *module); -/** \brief Create and initialise module manger. +/** \brief Create and initialise module manager. * \return The main module container widget (GtkNotebook). * * This function creates and initialises the module manager widget, which @@ -209,13 +209,13 @@ /* send message to logger */ sat_log_log (SAT_LOG_LEVEL_MSG, - _("%s: Added %s to module manger (page %d)."), + _("%s: Added %s to module manager (page %d)."), __FUNCTION__, GTK_SAT_MODULE (module)->name, page); } else { /* send message to logger */ sat_log_log (SAT_LOG_LEVEL_MSG, - _("%s: Added %s to module manger (NOT DOCKED)."), + _("%s: Added %s to module manager (NOT DOCKED)."), __FUNCTION__, GTK_SAT_MODULE (module)->name); } retcode = 0; Modified: branches/gpsd_testing/src/predict-tools.c =================================================================== --- branches/gpsd_testing/src/predict-tools.c 2011-01-11 23:53:07 UTC (rev 735) +++ branches/gpsd_testing/src/predict-tools.c 2011-01-14 13:09:10 UTC (rev 736) @@ -7,6 +7,7 @@ Authors: Alexandru Csete <oz...@gm...> John A. Magliacane, KD2BD. + Charles Suprin <ham...@gm...> Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ Modified: branches/gpsd_testing/src/predict-tools.h =================================================================== --- branches/gpsd_testing/src/predict-tools.h 2011-01-11 23:53:07 UTC (rev 735) +++ branches/gpsd_testing/src/predict-tools.h 2011-01-14 13:09:10 UTC (rev 736) @@ -5,6 +5,7 @@ Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete <oz...@gm...> + Charles Suprin <ham...@gm...> Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ Modified: branches/gpsd_testing/src/qth-data.c =================================================================== --- branches/gpsd_testing/src/qth-data.c 2011-01-11 23:53:07 UTC (rev 735) +++ branches/gpsd_testing/src/qth-data.c 2011-01-14 13:09:10 UTC (rev 736) @@ -2,9 +2,10 @@ /* Gpredict: Real-time satellite tracking and orbit prediction program - Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. + Copyright (C) 2001-2011 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete <oz...@gm...> + Charles Suprin <ham...@gm...> Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ @@ -208,6 +209,55 @@ else { } + + /* QTH Type */ + qth->type = g_key_file_get_integer (qth->data, + QTH_CFG_MAIN_SECTION, + QTH_CFG_TYPE_KEY, + &error); + if (error != NULL) { + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: Error reading QTH type (%s)."), + __FUNCTION__, error->message); + + g_clear_error (&error); + + + qth->type = QTH_STATIC_TYPE; + } + + /*GPSD Port*/ + qth->gpsd_port = g_key_file_get_integer (qth->data, + QTH_CFG_MAIN_SECTION, + QTH_CFG_GPSD_PORT_KEY, + &error); + if (error != NULL) { + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: Error reading QTH type (%s)."), + __FUNCTION__, error->message); + + g_clear_error (&error); + + /*if not set put it on the default port*/ + qth->gpsd_port = 2947; + } + + /* GPSD Server */ + qth->gpsd_server = g_key_file_get_string (qth->data, + QTH_CFG_MAIN_SECTION, + QTH_CFG_GPSD_SERVER_KEY, + &error); + if ((qth->gpsd_server == NULL) || (error != NULL)) { + sat_log_log (SAT_LOG_LEVEL_MSG, + _("%s: QTH has no GPSD Server."), + __FUNCTION__); + + qth->gpsd_server = g_strdup (""); + g_clear_error (&error); + } + + + /* Now, send debug message and return */ sat_log_log (SAT_LOG_LEVEL_MSG, _("%s: QTH data: %s, %.4f, %.4f, %d"), @@ -297,6 +347,25 @@ qth->wx); } + /* qth type */ + /* static, gpsd...*/ + g_key_file_set_integer (qth->data, + QTH_CFG_MAIN_SECTION, + QTH_CFG_TYPE_KEY, + qth->type); + /* gpsd server */ + if (qth->gpsd_server && (g_utf8_strlen (qth->gpsd_server, -1) > 0)) { + g_key_file_set_string (qth->data, + QTH_CFG_MAIN_SECTION, + QTH_CFG_GPSD_SERVER_KEY, + qth->gpsd_server); + } + /*gpsd port*/ + g_key_file_set_integer (qth->data, + QTH_CFG_MAIN_SECTION, + QTH_CFG_GPSD_PORT_KEY, + qth->gpsd_port); + /* saving code */ /* convert configuration data struct to charachter string */ @@ -421,32 +490,38 @@ case QTH_GPSD_TYPE: if (qth->gps_data!=NULL) { #if HAS_LIBGPS - if(gps_waiting(qth->gps_data) == 1) { - if(gps_poll(qth->gps_data) == 0){ - if (qth->gps_data->fix.mode >= MODE_2D) { - if (qth->lat != qth->gps_data->fix.latitude) { - qth->lat = qth->gps_data->fix.latitude; - retval = TRUE; + switch (GPSD_API_MAJOR_VERSION){ + case 4: + if(gps_waiting(qth->gps_data) == 1) { + if(gps_poll(qth->gps_data) == 0){ + if (qth->gps_data->fix.mode >= MODE_2D) { + if (qth->lat != qth->gps_data->fix.latitude) { + qth->lat = qth->gps_data->fix.latitude; + retval = TRUE; + } + if (qth->lon!=qth->gps_data->fix.longitude) { + qth->lon = qth->gps_data->fix.longitude; + retval = TRUE; + } } - if (qth->lon!=qth->gps_data->fix.longitude) { - qth->lon = qth->gps_data->fix.longitude; - retval = TRUE; + + if (qth->gps_data->fix.mode == MODE_3D) { + if (qth->alt != qth->gps_data->fix.altitude) { + qth->alt = qth->gps_data->fix.altitude; + retval = TRUE; + } + } else { + if (qth->alt != 0) { + qth->alt = 0; + retval = TRUE; + } } } - - if (qth->gps_data->fix.mode == MODE_3D) { - if (qth->alt != qth->gps_data->fix.altitude) { - qth->alt = qth->gps_data->fix.altitude; - retval = TRUE; - } - } else { - if (qth->alt != 0) { - qth->alt = 0; - retval = TRUE; - } - } } - } + break; + default: + break; + } #endif } break; @@ -463,26 +538,35 @@ *and other like services to update the qth position. */ gboolean qth_data_update_init(qth_t * qth) { - char * server="127.0.0.1"; - char *port="2947"; - qth->type = QTH_GPSD_TYPE; + char *port; + switch (qth->type){ case QTH_STATIC_TYPE: /*nothing to do. the data never updates*/ break; case QTH_GPSD_TYPE: #if HAS_LIBGPS - /* open the connection to gpsd and start the stream */ - //qth->gps_data=gps_open(server,port); - qth->gps_data=g_try_new0(struct gps_data_t,1); - - if (gps_open_r(server,port,qth->gps_data)==-1) { - free(qth->gps_data); - qth->gps_data=NULL; - printf("Could not open gps\n"); + switch (GPSD_API_MAJOR_VERSION) { + case 4: + /* open the connection to gpsd and start the stream */ + //qth->gps_data=gps_open(server,port); + qth->gps_data=g_try_new0(struct gps_data_t,1); + port=g_strdup_printf("%d",qth->gpsd_port); + if (gps_open_r(qth->gpsd_server,port,qth->gps_data)==-1) { + free(qth->gps_data); + qth->gps_data=NULL; + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: Could not open gpsd at %s:%d"), + __FUNCTION__, qth->gpsd_server, qth->gpsd_port); + return FALSE; + } else { + (void)gps_stream(qth->gps_data, WATCH_ENABLE, NULL); + } + g_free(port); + break; + default: return FALSE; - } else { - (void)gps_stream(qth->gps_data, WATCH_ENABLE, NULL); + break; } #else return FALSE; @@ -511,8 +595,13 @@ /* close gpsd socket */ if (qth->gps_data !=NULL){ #if HAS_LIBGPS - - gps_close(qth->gps_data); + switch (GPSD_API_MAJOR_VERSION) { + case 4: + gps_close(qth->gps_data); + break; + default: + break; + } #endif qth->gps_data=NULL; } @@ -534,6 +623,8 @@ qth->gps_data=NULL; qth->name=NULL; qth->loc=NULL; + qth->gpsd_port=0; + qth->gpsd_server=NULL; } /** \brief Load safe values into the qth_t data structure Modified: branches/gpsd_testing/src/qth-data.h =================================================================== --- branches/gpsd_testing/src/qth-data.h 2011-01-11 23:53:07 UTC (rev 735) +++ branches/gpsd_testing/src/qth-data.h 2011-01-14 13:09:10 UTC (rev 736) @@ -2,9 +2,10 @@ /* Gpredict: Real-time satellite tracking and orbit prediction program - Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. + Copyright (C) 2001-2011 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete <oz...@gm...> + Charles Suprin <ham...@gm...> Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ @@ -35,17 +36,19 @@ /** \brief QTH data structure in human readable form. */ typedef struct { - gchar *name; /*!< Name, eg. callsign. */ - gchar *loc; /*!< Location, eg City, Country. */ - gchar *desc; /*!< Short description. */ - gdouble lat; /*!< Latitude in dec. deg. North. */ - gdouble lon; /*!< Longitude in dec. deg. East. */ - gint alt; /*!< Altitude above sea level in meters. */ - gchar *qra; /*!< QRA locator */ - gchar *wx; /*!< Weather station code (4 chars). */ - gint type; /*!< QTH type (static,gpsd). */ + gchar *name; /*!< Name, eg. callsign. */ + gchar *loc; /*!< Location, eg City, Country. */ + gchar *desc; /*!< Short description. */ + gdouble lat; /*!< Latitude in dec. deg. North. */ + gdouble lon; /*!< Longitude in dec. deg. East. */ + gint alt; /*!< Altitude above sea level in meters. */ + gchar *qra; /*!< QRA locator */ + gchar *wx; /*!< Weather station code (4 chars). */ + gint type; /*!< QTH type (static,gpsd). */ + gchar *gpsd_server; /*!< GPSD Server name. */ + gint gpsd_port; /*!< GPSD Server port. */ struct gps_data_t *gps_data; /*!< gpsd data structure. */ - GKeyFile *data; /*!< Raw data from cfg file. */ + GKeyFile *data; /*!< Raw data from cfg file. */ } qth_t; /** \brief Compact QTH data structure for tagging data and comparing. */ Modified: branches/gpsd_testing/src/sat-pref-qth-data.h =================================================================== --- branches/gpsd_testing/src/sat-pref-qth-data.h 2011-01-11 23:53:07 UTC (rev 735) +++ branches/gpsd_testing/src/sat-pref-qth-data.h 2011-01-14 13:09:10 UTC (rev 736) @@ -2,9 +2,10 @@ /* Gpredict: Real-time satellite tracking and orbit prediction program - Copyright (C) 2001-2009 Alexandru Csete, OZ9AEC. - + Copyright (C) 2001-2011 Alexandru Csete, OZ9AEC. + Authors: Alexandru Csete <oz...@gm...> + Charles Suprin <ham...@gm...> Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ @@ -38,6 +39,9 @@ QTH_LIST_COL_QRA, /*!< QRA locator. */ QTH_LIST_COL_WX, /*!< 4 letter weather station. */ QTH_LIST_COL_DEF, /*!< Is this QTH the default one? */ + QTH_LIST_COL_TYPE, /*!< Is this QTH the default one? */ + QTH_LIST_COL_GPSD_SERVER, /*!< Is this QTH the default one? */ + QTH_LIST_COL_GPSD_PORT, /*!< Is this QTH the default one? */ QTH_LIST_COL_NUM /*!< The number of fields. */ } qth_list_col_t; Modified: branches/gpsd_testing/src/sat-pref-qth.c =================================================================== --- branches/gpsd_testing/src/sat-pref-qth.c 2011-01-11 23:53:07 UTC (rev 735) +++ branches/gpsd_testing/src/sat-pref-qth.c 2011-01-14 13:09:10 UTC (rev 736) @@ -2,9 +2,10 @@ /* Gpredict: Real-time satellite tracking and orbit prediction program - Copyright (C) 2001-2010 Alexandru Csete, OZ9AEC. + Copyright (C) 2001-2011 Alexandru Csete, OZ9AEC. Authors: Alexandru Csete <oz...@gm...> + Charles Suprin <ham...@gm...> Comments, questions and bugreports should be submitted via http://sourceforge.net/projects/gpredict/ @@ -266,6 +267,29 @@ g_signal_connect (qthlist, "row-activated", G_CALLBACK (row_activated_cb), NULL); + /*server*/ + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes (_("GPSD\nServer"), renderer, + "text", QTH_LIST_COL_GPSD_SERVER, + NULL); + gtk_tree_view_insert_column (GTK_TREE_VIEW (qthlist), column, -1); + gtk_tree_view_column_set_alignment (column, 0.5); + /*port*/ + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes (_("GPSD\nPort"), renderer, + "text", QTH_LIST_COL_GPSD_PORT, + NULL); + gtk_tree_view_insert_column (GTK_TREE_VIEW (qthlist), column, -1); + gtk_tree_view_column_set_alignment (column, 0.5); + + /*type*/ + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes (_("QTH\nType"), renderer, + "text", QTH_LIST_COL_TYPE, + NULL); + gtk_tree_view_insert_column (GTK_TREE_VIEW (qthlist), column, -1); + gtk_tree_view_column_set_alignment (column, 0.5); + return qthlist; } @@ -298,7 +322,10 @@ G_TYPE_INT, // Altitude G_TYPE_STRING, // QRA locator G_TYPE_STRING, // Weather station - G_TYPE_BOOLEAN // Default + G_TYPE_BOOLEAN, // Default + G_TYPE_INT, //type + G_TYPE_STRING, //server + G_TYPE_INT //port ); gtk_tree_sortable_set_sort_column_id( GTK_TREE_SORTABLE(liststore), QTH_LIST_COL_NAME,GTK_SORT_ASCENDING); @@ -455,6 +482,9 @@ QTH_LIST_COL_QRA, qth->qra, QTH_LIST_COL_WX, qth->wx, QTH_LIST_COL_DEF, is_default, + QTH_LIST_COL_TYPE, qth->type, + QTH_LIST_COL_GPSD_SERVER, qth->gpsd_server, + QTH_LIST_COL_GPSD_PORT, qth->gpsd_port, -1); g_free (fname); @@ -845,15 +875,18 @@ gtk_tree_model_get (model, iter, - QTH_LIST_COL_DEF, &def, - QTH_LIST_COL_NAME, &qth.name, - QTH_LIST_COL_LOC, &qth.loc, - QTH_LIST_COL_DESC, &qth.desc, - QTH_LIST_COL_LAT, &qth.lat, - QTH_LIST_COL_LON, &qth.lon, - QTH_LIST_COL_ALT, &qth.alt, - QTH_LIST_COL_WX, &qth.wx, - -1); + QTH_LIST_COL_DEF, &def, + QTH_LIST_COL_NAME, &qth.name, + QTH_LIST_COL_LOC, &qth.loc, + QTH_LIST_COL_DESC, &qth.desc, + QTH_LIST_COL_LAT, &qth.lat, + QTH_LIST_COL_LON, &qth.lon, + QTH_LIST_COL_ALT, &qth.alt, + QTH_LIST_COL_WX, &qth.wx, + QTH_LIST_COL_TYPE, &qth.type, + QTH_LIST_COL_GPSD_SERVER, &qth.gpsd_server, + QTH_LIST_COL_GPSD_PORT, &qth.gpsd_port, + -1); confdir = get_user_conf_dir (); filename = g_strconcat (confdir, G_DIR_SEPARATOR_S, qth.name, ".qth", NULL); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2011-01-11 23:53:13
|
Revision: 735 http://gpredict.svn.sourceforge.net/gpredict/?rev=735&view=rev Author: aa1vs Date: 2011-01-11 23:53:07 +0000 (Tue, 11 Jan 2011) Log Message: ----------- Add support for changing qth to gtk-rot-ctrl.c to update pass in polar view Modified Paths: -------------- branches/gpsd_testing/src/gtk-rot-ctrl.c Modified: branches/gpsd_testing/src/gtk-rot-ctrl.c =================================================================== --- branches/gpsd_testing/src/gtk-rot-ctrl.c 2011-01-10 04:26:53 UTC (rev 734) +++ branches/gpsd_testing/src/gtk-rot-ctrl.c 2011-01-11 23:53:07 UTC (rev 735) @@ -307,6 +307,15 @@ /* update next pass if necessary */ if (ctrl->pass != NULL) { + /*if the current pass is too far away*/ + if (qth_small_dist(ctrl->qth,ctrl->pass->qth_comp)>1.0){ + free_pass (ctrl->pass); + ctrl->pass=NULL; + ctrl->pass = get_pass (ctrl->target, ctrl->qth, t, 3.0); + set_flipped_pass(ctrl); + /* update polar plot */ + gtk_polar_plot_set_pass (GTK_POLAR_PLOT (ctrl->plot), ctrl->pass); + } /*if we are not in the current pass*/ if ((ctrl->pass->aos>t)||(ctrl->pass->los<t)){ /* the pass may not have met the minimum This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2011-01-10 04:26:59
|
Revision: 734 http://gpredict.svn.sourceforge.net/gpredict/?rev=734&view=rev Author: aa1vs Date: 2011-01-10 04:26:53 +0000 (Mon, 10 Jan 2011) Log Message: ----------- Add position based updates for sky-at-a-glance. Move qth updates so they occur all the time. Modified Paths: -------------- branches/gpsd_testing/src/gtk-polar-view.c branches/gpsd_testing/src/gtk-sat-module.c branches/gpsd_testing/src/gtk-sat-module.h Modified: branches/gpsd_testing/src/gtk-polar-view.c =================================================================== --- branches/gpsd_testing/src/gtk-polar-view.c 2011-01-08 19:51:20 UTC (rev 733) +++ branches/gpsd_testing/src/gtk-polar-view.c 2011-01-10 04:26:53 UTC (rev 734) @@ -915,10 +915,13 @@ g_free (text); } + /*check if pass was computed near current qth otherwise update*/ if (obj->pass) { + /* FIXME once again threshold should be user configurable*/ if (qth_small_dist(polv->qth,(obj->pass->qth_comp))>1.0){ + root = goo_canvas_get_root_item_model (GOO_CANVAS (polv->canvas)); - /* remove sky track */ + /* remove sky track */ if (obj->showtrack) { idx = goo_canvas_item_model_find_child (root, obj->track); if (idx != -1) @@ -937,10 +940,11 @@ /*compute new pass */ obj->pass = get_current_pass (sat, polv->qth, now); - /* Finally, create the sky track if necessary */ + + /* Finally, create the sky track if necessary */ if (obj->showtrack) create_track (polv, obj, sat); - + } } g_free (losstr); Modified: branches/gpsd_testing/src/gtk-sat-module.c =================================================================== --- branches/gpsd_testing/src/gtk-sat-module.c 2011-01-08 19:51:20 UTC (rev 733) +++ branches/gpsd_testing/src/gtk-sat-module.c 2011-01-10 04:26:53 UTC (rev 734) @@ -748,8 +748,10 @@ GdkWindowState state; gdouble delta; guint i; + /*update the qth position*/ + if(qth_data_update(mod->qth,mod->tmgCdnum)) { - + } /* in docked state, update only if tab is visible */ switch (mod->state) { @@ -815,8 +817,6 @@ */ mod->event_count = 0; } - /*update the qth position*/ - if(qth_data_update(mod->qth,mod->tmgCdnum)) { /*only trigger an update if adequate movement has occurred*/ /*FIXME position threshhold should be configurable*/ if (qth_small_dist(mod->qth,mod->qth_event)>1.0) { @@ -825,9 +825,9 @@ */ mod->event_count = 0; } - } + /*if the events are going to be recalculated store the position*/ if (mod->event_count == 0){ qth_small_save(mod->qth,&(mod->qth_event)); @@ -1504,8 +1504,12 @@ /** \brief Update GtkSkyGlance view * \param module Pointer to the GtkSatModule widget * - * This function checks how long ago the GtkSkyGlance widget has been updated - * and performs an update if necessary. The current timeout is set to 60 sec. + * This function checks to see if the sky-at-a-glance display needs to be updated + * due to time or qth moving. It checks how long ago the GtkSkyGlance widget was + * updated and performs an update if necessary. The current timeout is set to 60 sec. + * It also checks how far away the qth is from where the GtkSkyGlance + * widget was last updated and triggers an update if necessary. The current + * distance is set to 1km. * * This is a cheap/lazy implementation of automatic update. Instead of * performing a real update by "moving" the objects on the GtkSkyGlance canvas, @@ -1518,9 +1522,18 @@ */ static void update_skg (GtkSatModule *module) { - + gboolean update_needed=FALSE; /* threshold is ~60 seconds */ - if G_UNLIKELY(fabs(module->tmgCdnum - module->lastSkgUpd) > 7.0e-4) { + if (G_UNLIKELY(fabs(module->tmgCdnum - module->lastSkgUpd) > 7.0e-4)) { + update_needed=TRUE; + } + /* threshold is 1km */ + if (G_UNLIKELY(qth_small_dist(module->qth, module->lastSkgUpdqth) >1.0)) { + update_needed=TRUE; + } + + + if (G_UNLIKELY(update_needed==TRUE)) { sat_log_log (SAT_LOG_LEVEL_MSG, _("%s: Updating GtkSkyGlance for %s"), @@ -1532,5 +1545,6 @@ gtk_widget_show_all (module->skg); module->lastSkgUpd = module->tmgCdnum; + qth_small_save(module->qth,&(module->lastSkgUpdqth)); } } Modified: branches/gpsd_testing/src/gtk-sat-module.h =================================================================== --- branches/gpsd_testing/src/gtk-sat-module.h 2011-01-08 19:51:20 UTC (rev 733) +++ branches/gpsd_testing/src/gtk-sat-module.h 2011-01-10 04:26:53 UTC (rev 734) @@ -103,6 +103,7 @@ GtkWidget *skgwin; /*!< Sky at glance window */ GtkWidget *skg; /*!< Sky at glance widget */ gdouble lastSkgUpd; /*!< Daynum of last GtkSkyGlance update */ + qth_small_t lastSkgUpdqth; /*!< QTH information for last GtkSkyGlance update. */ GtkWidget *header; guint head_count; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2011-01-08 19:51:26
|
Revision: 733 http://gpredict.svn.sourceforge.net/gpredict/?rev=733&view=rev Author: aa1vs Date: 2011-01-08 19:51:20 +0000 (Sat, 08 Jan 2011) Log Message: ----------- Fix segfault when gpsd not connected. Make gtk-polar-view update pass if qth has moved significantly. Add qth_small_t element to pass to check if pass data is old. Modified Paths: -------------- branches/gpsd_testing/src/gtk-polar-view.c branches/gpsd_testing/src/predict-tools.c branches/gpsd_testing/src/predict-tools.h branches/gpsd_testing/src/qth-data.c Modified: branches/gpsd_testing/src/gtk-polar-view.c =================================================================== --- branches/gpsd_testing/src/gtk-polar-view.c 2011-01-08 18:26:24 UTC (rev 732) +++ branches/gpsd_testing/src/gtk-polar-view.c 2011-01-08 19:51:20 UTC (rev 733) @@ -846,6 +846,7 @@ /* free pass info */ free_pass (obj->pass); + obj->pass=NULL; /* if this was the selected satellite we need to clear the info text @@ -914,8 +915,38 @@ g_free (text); } + if (obj->pass) { + if (qth_small_dist(polv->qth,(obj->pass->qth_comp))>1.0){ + root = goo_canvas_get_root_item_model (GOO_CANVAS (polv->canvas)); + /* remove sky track */ + if (obj->showtrack) { + idx = goo_canvas_item_model_find_child (root, obj->track); + if (idx != -1) + goo_canvas_item_model_remove_child (root, idx); + + for (i = 0; i < TRACK_TICK_NUM; i++) { + idx = goo_canvas_item_model_find_child (root, obj->trtick[i]); + if (idx != -1) + goo_canvas_item_model_remove_child (root, idx); + } + } + + /* free pass info */ + free_pass (obj->pass); + obj->pass=NULL; + + /*compute new pass */ + obj->pass = get_current_pass (sat, polv->qth, now); + /* Finally, create the sky track if necessary */ + if (obj->showtrack) + create_track (polv, obj, sat); + + } + } g_free (losstr); g_free (catnum); // FIXME: why free here, what about else? + + } else { /* add sat to canvas */ Modified: branches/gpsd_testing/src/predict-tools.c =================================================================== --- branches/gpsd_testing/src/predict-tools.c 2011-01-08 18:26:24 UTC (rev 732) +++ branches/gpsd_testing/src/predict-tools.c 2011-01-08 19:51:20 UTC (rev 733) @@ -595,6 +595,9 @@ iter++; } } + + /*copy qth data into the pass for later comparisons*/ + qth_small_save(qth,&(pass->qth_comp)); return pass; } @@ -1012,6 +1015,9 @@ pass->tca = tca; } + + /*copy qth data into the pass for later comparisons*/ + qth_small_save(qth,&(pass->qth_comp)); return pass; } Modified: branches/gpsd_testing/src/predict-tools.h =================================================================== --- branches/gpsd_testing/src/predict-tools.h 2011-01-08 18:26:24 UTC (rev 732) +++ branches/gpsd_testing/src/predict-tools.h 2011-01-08 19:51:20 UTC (rev 733) @@ -49,6 +49,7 @@ gdouble maxel_az; /*!< Azimuth at maximum elevation */ gchar vis[4]; /*!< Visibility string, e.g. VSE, -S-, V-- */ GSList *details; /*!< List of pass_detail_t entries */ + qth_small_t qth_comp; /*!< Short version of qth at time computed */ } pass_t; Modified: branches/gpsd_testing/src/qth-data.c =================================================================== --- branches/gpsd_testing/src/qth-data.c 2011-01-08 18:26:24 UTC (rev 732) +++ branches/gpsd_testing/src/qth-data.c 2011-01-08 19:51:20 UTC (rev 733) @@ -472,18 +472,20 @@ break; case QTH_GPSD_TYPE: #if HAS_LIBGPS - /* open the connection to gpsd and start the stream */ - //qth->gps_data=gps_open(server,port); + /* open the connection to gpsd and start the stream */ + //qth->gps_data=gps_open(server,port); qth->gps_data=g_try_new0(struct gps_data_t,1); if (gps_open_r(server,port,qth->gps_data)==-1) { - printf("Could not open gps\n"); - return FALSE; - } else { - (void)gps_stream(qth->gps_data, WATCH_ENABLE, NULL); - } + free(qth->gps_data); + qth->gps_data=NULL; + printf("Could not open gps\n"); + return FALSE; + } else { + (void)gps_stream(qth->gps_data, WATCH_ENABLE, NULL); + } #else - return FALSE; + return FALSE; #endif break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2011-01-08 18:26:30
|
Revision: 732 http://gpredict.svn.sourceforge.net/gpredict/?rev=732&view=rev Author: aa1vs Date: 2011-01-08 18:26:24 +0000 (Sat, 08 Jan 2011) Log Message: ----------- Make gpsd code safer for multiple modules. Add position comparison for event updates. Modified Paths: -------------- branches/gpsd_testing/src/gtk-sat-map.c branches/gpsd_testing/src/gtk-sat-module.c branches/gpsd_testing/src/gtk-sat-module.h branches/gpsd_testing/src/qth-data.c branches/gpsd_testing/src/qth-data.h Modified: branches/gpsd_testing/src/gtk-sat-map.c =================================================================== --- branches/gpsd_testing/src/gtk-sat-map.c 2011-01-05 23:47:41 UTC (rev 731) +++ branches/gpsd_testing/src/gtk-sat-map.c 2011-01-08 18:26:24 UTC (rev 732) @@ -609,12 +609,41 @@ guint h, m, s; gchar *ch, *cm, *cs; gfloat x,y; + gdouble oldx,oldy; + /* check whether there are any pending resize requests */ if (satmap->resize) update_map_size (satmap); - /* check refresh rate and refresh sats if time */ + /* check if qth has moved significantly if so move it*/ + lonlat_to_xy (satmap, satmap->qth->lon, satmap->qth->lat, &x, &y); + g_object_get (satmap->qthmark, + "x", &oldx, + "y", &oldy, + NULL); + + if ((fabs (oldx-x) >= 2*MARKER_SIZE_HALF) || + (fabs (oldy-y) >= 2*MARKER_SIZE_HALF)) { + + /* update qth mark */ + g_object_set (satmap->qthmark, + "x", x - MARKER_SIZE_HALF, + "y", y - MARKER_SIZE_HALF, + NULL); + g_object_set (satmap->qthlabel, + "x", x, + "y", y+2, + NULL); + + /* QTH info */ + g_object_set (satmap->locnam, + "x", (gdouble) satmap->x0 + 2, + "y", (gdouble) satmap->y0 + 1, + NULL); + } + + /* check refresh rate and refresh sats/qth if time */ if (satmap->counter < satmap->refresh) { satmap->counter++; } @@ -622,7 +651,9 @@ /* reset data */ satmap->counter = 1; satmap->naos = 2458849.5; + /* QTH */ + /*update for accuracy*/ lonlat_to_xy (satmap, satmap->qth->lon, satmap->qth->lat, &x, &y); g_object_set (satmap->qthmark, "x", x - MARKER_SIZE_HALF, Modified: branches/gpsd_testing/src/gtk-sat-module.c =================================================================== --- branches/gpsd_testing/src/gtk-sat-module.c 2011-01-05 23:47:41 UTC (rev 731) +++ branches/gpsd_testing/src/gtk-sat-module.c 2011-01-08 18:26:24 UTC (rev 732) @@ -293,7 +293,7 @@ return NULL; } - /*initialize the qth engine*/ + /*initialize the qth engine and get position*/ qth_data_update_init(GTK_SAT_MODULE(widget)->qth); /* module state */ @@ -816,17 +816,22 @@ mod->event_count = 0; } /*update the qth position*/ - /*if new position update stuff*/ - /*should probably have window around qth to reduce distance*/ if(qth_data_update(mod->qth,mod->tmgCdnum)) { - /* reset counter, this will make gtk_sat_module_update_sat - recalculate events - */ - mod->event_count = 0; + /*only trigger an update if adequate movement has occurred*/ + /*FIXME position threshhold should be configurable*/ + if (qth_small_dist(mod->qth,mod->qth_event)>1.0) { + /* reset counter, this will make gtk_sat_module_update_sat + recalculate events + */ + mod->event_count = 0; + } } - + /*if the events are going to be recalculated store the position*/ + if (mod->event_count == 0){ + qth_small_save(mod->qth,&(mod->qth_event)); + } /* update satellite data */ g_hash_table_foreach (mod->satellites, gtk_sat_module_update_sat, @@ -977,7 +982,7 @@ } - /*** FIXME: we don't need to do this every time! */ + /*data may have been updated by gpsd*/ obs_geodetic.lon = module->qth->lon * de2ra; obs_geodetic.lat = module->qth->lat * de2ra; obs_geodetic.alt = module->qth->alt / 1000.0; Modified: branches/gpsd_testing/src/gtk-sat-module.h =================================================================== --- branches/gpsd_testing/src/gtk-sat-module.h 2011-01-05 23:47:41 UTC (rev 731) +++ branches/gpsd_testing/src/gtk-sat-module.h 2011-01-08 18:26:24 UTC (rev 732) @@ -117,7 +117,7 @@ GKeyFile *cfgdata; /*!< Configuration data. */ qth_t *qth; /*!< QTH information. */ - + qth_small_t qth_event; /*!< QTH information for last AOS/LOS update. */ GHashTable *satellites; /*!< Satellites. */ guint32 timeout; /*!< Timeout value [msec] */ Modified: branches/gpsd_testing/src/qth-data.c =================================================================== --- branches/gpsd_testing/src/qth-data.c 2011-01-05 23:47:41 UTC (rev 731) +++ branches/gpsd_testing/src/qth-data.c 2011-01-08 18:26:24 UTC (rev 732) @@ -38,6 +38,7 @@ #include "config-keys.h" #include "orbit-tools.h" #include "time-tools.h" +#include "locator.h" #if HAS_LIBGPS #include <gps.h> #endif @@ -412,40 +413,47 @@ * \param qth the time at which the qth is to be computed. this may be ignored by gps updates. */ gboolean qth_data_update(qth_t * qth, gdouble t) { + gboolean retval = FALSE; switch (qth->type) { case QTH_STATIC_TYPE: - return FALSE; + /*never changes*/ break; case QTH_GPSD_TYPE: - if (qth->gps_data==NULL) { - return FALSE; - } else { + if (qth->gps_data!=NULL) { #if HAS_LIBGPS if(gps_waiting(qth->gps_data) == 1) { - if(gps_poll(qth->gps_data)==0){ - if (qth->gps_data->fix.mode>=2) { - qth->lat = qth->gps_data->fix.latitude; - qth->lon = qth->gps_data->fix.longitude; + if(gps_poll(qth->gps_data) == 0){ + if (qth->gps_data->fix.mode >= MODE_2D) { + if (qth->lat != qth->gps_data->fix.latitude) { + qth->lat = qth->gps_data->fix.latitude; + retval = TRUE; + } + if (qth->lon!=qth->gps_data->fix.longitude) { + qth->lon = qth->gps_data->fix.longitude; + retval = TRUE; + } } - if (qth->gps_data->fix.mode==3) { - qth->alt=qth->gps_data->fix.altitude; + if (qth->gps_data->fix.mode == MODE_3D) { + if (qth->alt != qth->gps_data->fix.altitude) { + qth->alt = qth->gps_data->fix.altitude; + retval = TRUE; + } + } else { + if (qth->alt != 0) { + qth->alt = 0; + retval = TRUE; + } } } - return (TRUE); - } else { - return FALSE; - } - -#else - return FALSE; + } #endif } - break; default: break; } + return retval; } /** \brief Initialize whatever structures inside the qth_t stucture for later updates. @@ -465,8 +473,10 @@ case QTH_GPSD_TYPE: #if HAS_LIBGPS /* open the connection to gpsd and start the stream */ - qth->gps_data=gps_open(server,port); - if (qth->gps_data==NULL) { + //qth->gps_data=gps_open(server,port); + qth->gps_data=g_try_new0(struct gps_data_t,1); + + if (gps_open_r(server,port,qth->gps_data)==-1) { printf("Could not open gps\n"); return FALSE; } else { @@ -491,8 +501,9 @@ */ void qth_data_update_stop (qth_t *qth) { switch (qth->type) { - //case QTH_STATIC_TYPE: - // break; + case QTH_STATIC_TYPE: + /*nothing to do. the data never updates*/ + break; case QTH_GPSD_TYPE: /* close gpsd socket */ @@ -537,3 +548,26 @@ qth->gps_data=NULL; } +/** \brief Copy values from qth structure to qth_small structure + * \param qth the qth data structure to backup + * \param qth_small the data structure to store values + * This is intended for copying only the minimal qth data to a structure for tagging and later comparison. + */ +void qth_small_save(qth_t*qth,qth_small_t *qth_small){ + qth_small->lat=qth->lat; + qth_small->lon=qth->lon; + qth_small->alt=qth->alt; +} + +/** \brief Compute the distance between a location in a qth_t structure and qth_small_t structure. + * \param qth the qth data structure + * \param qth_small the data structure + * This is intended for measuring distance between the current qth and the position that tagged some data in qth_small. + */ +double qth_small_dist(qth_t *qth,qth_small_t qth_small){ + double distance,azimuth; + /* FIXME Is this the right coordinate system to use? */ + /* a 3d coordinate system might make more sense long term */ + qrb(qth->lon,qth->lat,qth_small.lon,qth_small.lat,&distance,&azimuth); + return(distance); +} Modified: branches/gpsd_testing/src/qth-data.h =================================================================== --- branches/gpsd_testing/src/qth-data.h 2011-01-05 23:47:41 UTC (rev 731) +++ branches/gpsd_testing/src/qth-data.h 2011-01-08 18:26:24 UTC (rev 732) @@ -48,6 +48,15 @@ GKeyFile *data; /*!< Raw data from cfg file. */ } qth_t; +/** \brief Compact QTH data structure for tagging data and comparing. */ +typedef struct { + gdouble lat; /*!< Latitude in dec. deg. North. */ + gdouble lon; /*!< Longitude in dec. deg. East. */ + gint alt; /*!< Altitude above sea level in meters. */ +} qth_small_t; + + + enum { QTH_STATIC_TYPE=0, QTH_GPSD_TYPE @@ -60,5 +69,8 @@ gboolean qth_data_update(qth_t *qth, gdouble t); gboolean qth_data_update_init(qth_t *qth); void qth_data_update_stop(qth_t *qth); - +double qth_small_dist(qth_t *qth,qth_small_t qth_small); +void qth_small_save(qth_t *qth,qth_small_t *qth_small); +void qth_init(qth_t* qth); +void qth_safe(qth_t* qth); #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2011-01-05 23:47:48
|
Revision: 731 http://gpredict.svn.sourceforge.net/gpredict/?rev=731&view=rev Author: aa1vs Date: 2011-01-05 23:47:41 +0000 (Wed, 05 Jan 2011) Log Message: ----------- Update AOS information when qth changes and make distinction between qth_data and qth_data_update in function names Modified Paths: -------------- branches/gpsd_testing/src/gtk-sat-module.c branches/gpsd_testing/src/qth-data.c branches/gpsd_testing/src/qth-data.h Modified: branches/gpsd_testing/src/gtk-sat-module.c =================================================================== --- branches/gpsd_testing/src/gtk-sat-module.c 2011-01-04 02:57:02 UTC (rev 730) +++ branches/gpsd_testing/src/gtk-sat-module.c 2011-01-05 23:47:41 UTC (rev 731) @@ -294,7 +294,7 @@ return NULL; } /*initialize the qth engine*/ - qth_data_init(GTK_SAT_MODULE(widget)->qth); + qth_data_update_init(GTK_SAT_MODULE(widget)->qth); /* module state */ if ((g_key_file_has_key (GTK_SAT_MODULE (widget)->cfgdata, @@ -816,7 +816,14 @@ mod->event_count = 0; } /*update the qth position*/ - qth_data_update(mod->qth,mod->tmgCdnum); + /*if new position update stuff*/ + /*should probably have window around qth to reduce distance*/ + if(qth_data_update(mod->qth,mod->tmgCdnum)) { + /* reset counter, this will make gtk_sat_module_update_sat + recalculate events + */ + mod->event_count = 0; + } @@ -1034,7 +1041,7 @@ /** \brief Module options * * Invoke module-wide popup menu - */ + */ static void gtk_sat_module_popup_cb (GtkWidget *button, gpointer data) { Modified: branches/gpsd_testing/src/qth-data.c =================================================================== --- branches/gpsd_testing/src/qth-data.c 2011-01-04 02:57:02 UTC (rev 730) +++ branches/gpsd_testing/src/qth-data.c 2011-01-05 23:47:41 UTC (rev 731) @@ -371,7 +371,9 @@ void qth_data_free (qth_t *qth) { - qth_data_stop(qth); + /*stop any updating*/ + qth_data_update_stop(qth); + if (qth->name) { g_free (qth->name); qth->name = NULL; @@ -404,6 +406,11 @@ g_free (qth); } + +/** \brief Update the qth data by whatever method is appropriate. + * \param qth the qth data structure to update + * \param qth the time at which the qth is to be computed. this may be ignored by gps updates. + */ gboolean qth_data_update(qth_t * qth, gdouble t) { switch (qth->type) { case QTH_STATIC_TYPE: @@ -441,7 +448,13 @@ } } -gboolean qth_data_init(qth_t * qth) { +/** \brief Initialize whatever structures inside the qth_t stucture for later updates. + * \param qth the qth data structure to update + * + *Initial intention of this is to open sockets and ports to gpsd + *and other like services to update the qth position. + */ +gboolean qth_data_update_init(qth_t * qth) { char * server="127.0.0.1"; char *port="2947"; qth->type = QTH_GPSD_TYPE; @@ -470,7 +483,13 @@ return TRUE; } -void qth_data_stop (qth_t *qth) { +/** \brief Shutdown and free structures inside the qth_t stucture were used for updates. + * \param qth the qth data structure to update + * + *Initial intention of this is to open sockets and ports to gpsd + *and other like services to update the qth position. + */ +void qth_data_update_stop (qth_t *qth) { switch (qth->type) { //case QTH_STATIC_TYPE: // break; @@ -491,6 +510,9 @@ } } +/** \brief Load initial values into the qth_t data structure + * \param qth the qth data structure to update + */ void qth_init(qth_t* qth) { qth->lat=0; qth->lon=0; @@ -500,6 +522,11 @@ qth->name=NULL; qth->loc=NULL; } + +/** \brief Load safe values into the qth_t data structure + * \param qth the qth data structure to update + * This can be used if some operation is suspected of corrupting the structure or entering invalid data. Originally it is based on code that reset values if a load/read of a .qth failed. + */ void qth_safe(qth_t* qth) { qth->name = g_strdup (_("Error")); qth->loc = g_strdup (_("Error")); Modified: branches/gpsd_testing/src/qth-data.h =================================================================== --- branches/gpsd_testing/src/qth-data.h 2011-01-04 02:57:02 UTC (rev 730) +++ branches/gpsd_testing/src/qth-data.h 2011-01-05 23:47:41 UTC (rev 731) @@ -58,7 +58,7 @@ gint qth_data_save (const gchar *filename, qth_t *qth); void qth_data_free (qth_t *qth); gboolean qth_data_update(qth_t *qth, gdouble t); -gboolean qth_data_init(qth_t *qth); -void qth_data_stop(qth_t *qth); +gboolean qth_data_update_init(qth_t *qth); +void qth_data_update_stop(qth_t *qth); #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2011-01-04 02:57:08
|
Revision: 730 http://gpredict.svn.sourceforge.net/gpredict/?rev=730&view=rev Author: aa1vs Date: 2011-01-04 02:57:02 +0000 (Tue, 04 Jan 2011) Log Message: ----------- typo fix thank you mike (kukabu) Modified Paths: -------------- branches/gpsd_testing/configure.ac branches/gpsd_testing/src/qth-data.c Modified: branches/gpsd_testing/configure.ac =================================================================== --- branches/gpsd_testing/configure.ac 2011-01-03 03:33:30 UTC (rev 729) +++ branches/gpsd_testing/configure.ac 2011-01-04 02:57:02 UTC (rev 730) @@ -30,7 +30,7 @@ AC_SUBST(PACKAGE_LIBS) dnl optional check for libgps -PKG_CHECK_MODULES(LIBGPS, [ libgps >= 2.90 ], +PKG_CHECK_MODULES(LIBGPS, [ libgps >= 2.90 ], [ CFLAGS="$CFLAGS $LIBGPS_CFLAGS"; LIBS="$LIBS $LIBGPS_LIBS"; havelibgps=true; Modified: branches/gpsd_testing/src/qth-data.c =================================================================== --- branches/gpsd_testing/src/qth-data.c 2011-01-03 03:33:30 UTC (rev 729) +++ branches/gpsd_testing/src/qth-data.c 2011-01-04 02:57:02 UTC (rev 730) @@ -28,20 +28,22 @@ #include <glib.h> #include <glib/gi18n.h> -#if HAS_LIBGPS -#include <gps.h> +#ifdef HAVE_CONFIG_H +# include <build-config.h> #endif + #include "sgpsdp/sgp4sdp4.h" #include "qth-data.h" #include "sat-log.h" #include "config-keys.h" -#ifdef HAVE_CONFIG_H -# include <build-config.h> -#endif #include "orbit-tools.h" #include "time-tools.h" +#if HAS_LIBGPS +#include <gps.h> +#endif + /** \brief Read QTH data from file. * \param filename The file to read from. * \param qth Pointer to a qth_t data structure where the data will be stored. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2011-01-03 03:33:37
|
Revision: 729 http://gpredict.svn.sourceforge.net/gpredict/?rev=729&view=rev Author: aa1vs Date: 2011-01-03 03:33:30 +0000 (Mon, 03 Jan 2011) Log Message: ----------- Second version of qpsd qth moved things into qth-data.c and started working on the qth editing gui to support these new interfaces Modified Paths: -------------- branches/gpsd_testing/configure.ac branches/gpsd_testing/src/config-keys.h branches/gpsd_testing/src/gtk-sat-module.c branches/gpsd_testing/src/gtk-sat-module.h branches/gpsd_testing/src/qth-data.c branches/gpsd_testing/src/qth-data.h branches/gpsd_testing/src/sat-pref-qth-editor.c Modified: branches/gpsd_testing/configure.ac =================================================================== --- branches/gpsd_testing/configure.ac 2010-12-30 18:12:00 UTC (rev 728) +++ branches/gpsd_testing/configure.ac 2011-01-03 03:33:30 UTC (rev 729) @@ -24,12 +24,23 @@ AC_CHECK_LIB([m], [sin],, AC_MSG_ERROR([Can't find libm. Check your libc installation])) dnl check for glib, gtk, and goocanvas libraries -pkg_modules="gtk+-2.0 >= 2.18.0 glib-2.0 >= 2.22.0 gthread-2.0 >= 2.22.0 goocanvas >= 0.15 libcurl >= 7.19.0 libgps >= 2.90" +pkg_modules="gtk+-2.0 >= 2.18.0 glib-2.0 >= 2.22.0 gthread-2.0 >= 2.22.0 goocanvas >= 0.15 libcurl >= 7.19.0" PKG_CHECK_MODULES(PACKAGE, [$pkg_modules]) AC_SUBST(PACKAGE_CFLAGS) AC_SUBST(PACKAGE_LIBS) +dnl optional check for libgps +PKG_CHECK_MODULES(LIBGPS, [ libgps >= 2.90 ], + CFLAGS="$CFLAGS $LIBGPS_CFLAGS"; + LIBS="$LIBS $LIBGPS_LIBS"; + havelibgps=true; + AC_DEFINE(HAS_LIBGPS, 1, [Define if libgps is available]) + ], [ + havelibgps=false; + AC_DEFINE(HAS_LIBGPS, 0, [Define if libgps is unvailable]) +]) + dnl Hamlib not needed if we go for the TCP based I/F dnl check for hamlib dnl PKG_CHECK_MODULES(HAMLIB, hamlib, [ @@ -75,7 +86,9 @@ GTK_V=`pkg-config --modversion gtk+-2.0` GOOC_V=`pkg-config --modversion goocanvas` CURL_V=`pkg-config --modversion libcurl` -GPS_V=`pkg-config --modversion libgps` +if test "$havelibgps" = true ; then + GPS_V=`pkg-config --modversion libgps` +fi dnl SQL_V=`pkg-config --modversion sqlite3` dnl if test "$havehamlib" = true ; then dnl HAML_V=`pkg-config --modversion hamlib` @@ -115,7 +128,9 @@ echo Gtk+ version....... : $GTK_V echo GooCanvas version.. : $GOOC_V echo Libcurl version..... : $CURL_V -echo Libgps version..... : $GPS_V +if test "$havelibgps" = true ; then + echo Libgps version..... : $GPS_V +fi dnl echo SQLite version..... : $SQL_V dnl if test "$havehamlib" = true ; then dnl echo Hamlib version..... : $HAML_V Modified: branches/gpsd_testing/src/config-keys.h =================================================================== --- branches/gpsd_testing/src/config-keys.h 2010-12-30 18:12:00 UTC (rev 728) +++ branches/gpsd_testing/src/config-keys.h 2011-01-03 03:33:30 UTC (rev 729) @@ -56,8 +56,10 @@ #define QTH_CFG_LAT_KEY "LAT" #define QTH_CFG_LON_KEY "LON" #define QTH_CFG_ALT_KEY "ALT" +#define QTH_CFG_SERVER_KEY "SERVER" +#define QTH_CFG_PORT_KEY "PORT" +#define QTH_CFG_QTH_TYPE_KEY "QTH_TYPE" - /* Module files (.mod) */ /* global */ Modified: branches/gpsd_testing/src/gtk-sat-module.c =================================================================== --- branches/gpsd_testing/src/gtk-sat-module.c 2010-12-30 18:12:00 UTC (rev 728) +++ branches/gpsd_testing/src/gtk-sat-module.c 2011-01-03 03:33:30 UTC (rev 729) @@ -159,9 +159,7 @@ module->win = NULL; module->qth = g_try_new0 (qth_t, 1); - module->qth->lat = 0.0; - module->qth->lon = 0.0; - module->qth->alt = 0; + qth_init(module->qth); module->satellites = g_hash_table_new_full (g_int_hash, g_int_equal, @@ -246,11 +244,6 @@ module->grid = NULL; } - /* close gpsd socket */ - if (module->gps_data !=NULL){ - gps_close(module->gps_data); - module->gps_data=NULL; - } /* FIXME: free module->views? */ (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); @@ -301,16 +294,7 @@ return NULL; } /*initialize the qth engine*/ - char * server="127.0.0.1"; - char *port="2947"; - GTK_SAT_MODULE(widget)->gps_data=gps_open(server,port); - if (GTK_SAT_MODULE(widget)->gps_data==NULL) { - printf("Could not open gps\n"); - } else { - (void)gps_stream(GTK_SAT_MODULE(widget)->gps_data, WATCH_ENABLE, NULL); - } - - + qth_data_init(GTK_SAT_MODULE(widget)->qth); /* module state */ if ((g_key_file_has_key (GTK_SAT_MODULE (widget)->cfgdata, @@ -584,11 +568,7 @@ __FUNCTION__, buffer); /* settings are really screwed up; we need some safe values here */ - module->qth->name = g_strdup (_("Error")); - module->qth->loc = g_strdup (_("Error")); - module->qth->lat = 0.0; - module->qth->lon = 0.0; - module->qth->alt = 0; + qth_safe(module->qth); } } @@ -793,27 +773,7 @@ } if (needupdate) { - /*get the gps position*/ - if(gps_waiting(mod->gps_data) == 1) { - if(gps_poll(mod->gps_data)==0){ - printf("online= %f\n",mod->gps_data->online); - printf("mode= %d\n",mod->gps_data->fix.mode); - printf("lat= %f\n",mod->gps_data->fix.latitude); - printf("lon= %f\n",mod->gps_data->fix.longitude); - printf("alt= %f\n",mod->gps_data->fix.altitude); - if (mod->gps_data->fix.mode>=2) { - mod->qth->lat = mod->gps_data->fix.latitude; - mod->qth->lon = mod->gps_data->fix.longitude; - } - - if (mod->gps_data->fix.mode==3) { - mod->qth->alt=mod->gps_data->fix.altitude; - } - } - } - - if (g_mutex_trylock(mod->busy)==FALSE) { sat_log_log (SAT_LOG_LEVEL_WARN, @@ -825,7 +785,7 @@ } mod->rtNow = get_current_daynum (); - + /* Update time if throttle != 0 */ if (mod->throttle) { @@ -855,7 +815,11 @@ */ mod->event_count = 0; } + /*update the qth position*/ + qth_data_update(mod->qth,mod->tmgCdnum); + + /* update satellite data */ g_hash_table_foreach (mod->satellites, gtk_sat_module_update_sat, Modified: branches/gpsd_testing/src/gtk-sat-module.h =================================================================== --- branches/gpsd_testing/src/gtk-sat-module.h 2010-12-30 18:12:00 UTC (rev 728) +++ branches/gpsd_testing/src/gtk-sat-module.h 2011-01-03 03:33:30 UTC (rev 729) @@ -31,7 +31,6 @@ #include <glib.h> #include <gdk/gdk.h> #include <gtk/gtkvbox.h> -#include <gps.h> #include "gtk-sat-data.h" #include "qth-data.h" Modified: branches/gpsd_testing/src/qth-data.c =================================================================== --- branches/gpsd_testing/src/qth-data.c 2010-12-30 18:12:00 UTC (rev 728) +++ branches/gpsd_testing/src/qth-data.c 2011-01-03 03:33:30 UTC (rev 729) @@ -28,6 +28,9 @@ #include <glib.h> #include <glib/gi18n.h> +#if HAS_LIBGPS +#include <gps.h> +#endif #include "sgpsdp/sgp4sdp4.h" #include "qth-data.h" #include "sat-log.h" @@ -366,6 +369,7 @@ void qth_data_free (qth_t *qth) { + qth_data_stop(qth); if (qth->name) { g_free (qth->name); qth->name = NULL; @@ -398,4 +402,109 @@ g_free (qth); } +gboolean qth_data_update(qth_t * qth, gdouble t) { + switch (qth->type) { + case QTH_STATIC_TYPE: + return FALSE; + break; + case QTH_GPSD_TYPE: + if (qth->gps_data==NULL) { + return FALSE; + } else { +#if HAS_LIBGPS + if(gps_waiting(qth->gps_data) == 1) { + if(gps_poll(qth->gps_data)==0){ + if (qth->gps_data->fix.mode>=2) { + qth->lat = qth->gps_data->fix.latitude; + qth->lon = qth->gps_data->fix.longitude; + } + + if (qth->gps_data->fix.mode==3) { + qth->alt=qth->gps_data->fix.altitude; + } + } + return (TRUE); + } else { + return FALSE; + } +#else + return FALSE; +#endif + } + + break; + default: + break; + } +} + +gboolean qth_data_init(qth_t * qth) { + char * server="127.0.0.1"; + char *port="2947"; + qth->type = QTH_GPSD_TYPE; + switch (qth->type){ + case QTH_STATIC_TYPE: + /*nothing to do. the data never updates*/ + break; + case QTH_GPSD_TYPE: +#if HAS_LIBGPS + /* open the connection to gpsd and start the stream */ + qth->gps_data=gps_open(server,port); + if (qth->gps_data==NULL) { + printf("Could not open gps\n"); + return FALSE; + } else { + (void)gps_stream(qth->gps_data, WATCH_ENABLE, NULL); + } +#else + return FALSE; +#endif + break; + + default: + break; + } + return TRUE; +} + +void qth_data_stop (qth_t *qth) { + switch (qth->type) { + //case QTH_STATIC_TYPE: + // break; + case QTH_GPSD_TYPE: + + /* close gpsd socket */ + if (qth->gps_data !=NULL){ +#if HAS_LIBGPS + + gps_close(qth->gps_data); +#endif + qth->gps_data=NULL; + } + + break; + default: + break; + } +} + +void qth_init(qth_t* qth) { + qth->lat=0; + qth->lon=0; + qth->alt=0; + qth->type=QTH_STATIC_TYPE; + qth->gps_data=NULL; + qth->name=NULL; + qth->loc=NULL; +} +void qth_safe(qth_t* qth) { + qth->name = g_strdup (_("Error")); + qth->loc = g_strdup (_("Error")); + qth->type=QTH_STATIC_TYPE; + qth->lat=0; + qth->lon=0; + qth->alt=0; + qth->gps_data=NULL; +} + Modified: branches/gpsd_testing/src/qth-data.h =================================================================== --- branches/gpsd_testing/src/qth-data.h 2010-12-30 18:12:00 UTC (rev 728) +++ branches/gpsd_testing/src/qth-data.h 2011-01-03 03:33:30 UTC (rev 729) @@ -43,14 +43,22 @@ gint alt; /*!< Altitude above sea level in meters. */ gchar *qra; /*!< QRA locator */ gchar *wx; /*!< Weather station code (4 chars). */ - + gint type; /*!< QTH type (static,gpsd). */ + struct gps_data_t *gps_data; /*!< gpsd data structure. */ GKeyFile *data; /*!< Raw data from cfg file. */ } qth_t; +enum { + QTH_STATIC_TYPE=0, + QTH_GPSD_TYPE +} qth_data_type; + gint qth_data_read (const gchar *filename, qth_t *qth); gint qth_data_save (const gchar *filename, qth_t *qth); void qth_data_free (qth_t *qth); +gboolean qth_data_update(qth_t *qth, gdouble t); +gboolean qth_data_init(qth_t *qth); +void qth_data_stop(qth_t *qth); - #endif Modified: branches/gpsd_testing/src/sat-pref-qth-editor.c =================================================================== --- branches/gpsd_testing/src/sat-pref-qth-editor.c 2010-12-30 18:12:00 UTC (rev 728) +++ branches/gpsd_testing/src/sat-pref-qth-editor.c 2011-01-03 03:33:30 UTC (rev 729) @@ -79,6 +79,8 @@ static GtkWidget *ns,*ew; static GtkWidget *qra; /* QRA locator */ +static GtkWidget *server; /* GPSD Server */ +static GtkWidget *port; /* GPSD Port */ static gulong latsigid,lonsigid,nssigid,ewsigid,qrasigid; static GtkWidget *wx; /* weather station */ @@ -356,8 +358,33 @@ G_CALLBACK (select_location), GUINT_TO_POINTER (SELECTION_MODE_WX)); gtk_table_attach_defaults (GTK_TABLE (table), wxbut, 3, 4, 7, 8); + /* GPSD Server */ + label = gtk_label_new (_("GPSD Server")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 8, 9); + + server = gtk_entry_new (); + gtk_entry_set_max_length (GTK_ENTRY (server), 6); + tooltips = gtk_tooltips_new (); + gtk_tooltips_set_tip (tooltips, server, + _("GPSD Server."), + NULL); + gtk_table_attach_defaults (GTK_TABLE (table), server, 1, 2, 8, 9); + /* GPSD Port*/ + label = gtk_label_new (_("GPSD Port")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 9, 10); + port = gtk_spin_button_new_with_range (0, 32768, 1); + gtk_spin_button_set_increments (GTK_SPIN_BUTTON (port), 1, 100); + gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (port), TRUE); + gtk_tooltips_set_tip (tooltips, port, + _("Set the port for GPSD to use"), + NULL); + gtk_table_attach_defaults (GTK_TABLE (table), port, 1, 2, 9, 10); + + if (!new) update_widgets (treeview); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2010-12-30 18:12:06
|
Revision: 728 http://gpredict.svn.sourceforge.net/gpredict/?rev=728&view=rev Author: aa1vs Date: 2010-12-30 18:12:00 +0000 (Thu, 30 Dec 2010) Log Message: ----------- Initial GPSD hack Modified Paths: -------------- branches/gpsd_testing/configure.ac branches/gpsd_testing/src/gtk-sat-map.c branches/gpsd_testing/src/gtk-sat-module.c branches/gpsd_testing/src/gtk-sat-module.h Modified: branches/gpsd_testing/configure.ac =================================================================== --- branches/gpsd_testing/configure.ac 2010-12-27 14:47:58 UTC (rev 727) +++ branches/gpsd_testing/configure.ac 2010-12-30 18:12:00 UTC (rev 728) @@ -24,7 +24,7 @@ AC_CHECK_LIB([m], [sin],, AC_MSG_ERROR([Can't find libm. Check your libc installation])) dnl check for glib, gtk, and goocanvas libraries -pkg_modules="gtk+-2.0 >= 2.18.0 glib-2.0 >= 2.22.0 gthread-2.0 >= 2.22.0 goocanvas >= 0.15 libcurl >= 7.19.0" +pkg_modules="gtk+-2.0 >= 2.18.0 glib-2.0 >= 2.22.0 gthread-2.0 >= 2.22.0 goocanvas >= 0.15 libcurl >= 7.19.0 libgps >= 2.90" PKG_CHECK_MODULES(PACKAGE, [$pkg_modules]) AC_SUBST(PACKAGE_CFLAGS) AC_SUBST(PACKAGE_LIBS) @@ -75,6 +75,7 @@ GTK_V=`pkg-config --modversion gtk+-2.0` GOOC_V=`pkg-config --modversion goocanvas` CURL_V=`pkg-config --modversion libcurl` +GPS_V=`pkg-config --modversion libgps` dnl SQL_V=`pkg-config --modversion sqlite3` dnl if test "$havehamlib" = true ; then dnl HAML_V=`pkg-config --modversion hamlib` @@ -113,7 +114,8 @@ echo Gdk version........ : $GDK_V echo Gtk+ version....... : $GTK_V echo GooCanvas version.. : $GOOC_V -echo Liburl version..... : $CURL_V +echo Libcurl version..... : $CURL_V +echo Libgps version..... : $GPS_V dnl echo SQLite version..... : $SQL_V dnl if test "$havehamlib" = true ; then dnl echo Hamlib version..... : $HAML_V Modified: branches/gpsd_testing/src/gtk-sat-map.c =================================================================== --- branches/gpsd_testing/src/gtk-sat-map.c 2010-12-27 14:47:58 UTC (rev 727) +++ branches/gpsd_testing/src/gtk-sat-map.c 2010-12-30 18:12:00 UTC (rev 728) @@ -608,6 +608,7 @@ gint *catnr; guint h, m, s; gchar *ch, *cm, *cs; + gfloat x,y; /* check whether there are any pending resize requests */ if (satmap->resize) @@ -621,6 +622,23 @@ /* reset data */ satmap->counter = 1; satmap->naos = 2458849.5; + /* QTH */ + lonlat_to_xy (satmap, satmap->qth->lon, satmap->qth->lat, &x, &y); + g_object_set (satmap->qthmark, + "x", x - MARKER_SIZE_HALF, + "y", y - MARKER_SIZE_HALF, + NULL); + g_object_set (satmap->qthlabel, + "x", x, + "y", y+2, + NULL); + + /* QTH info */ + g_object_set (satmap->locnam, + "x", (gdouble) satmap->x0 + 2, + "y", (gdouble) satmap->y0 + 1, + NULL); + /* update sats */ g_hash_table_foreach (satmap->sats, update_sat, satmap); Modified: branches/gpsd_testing/src/gtk-sat-module.c =================================================================== --- branches/gpsd_testing/src/gtk-sat-module.c 2010-12-27 14:47:58 UTC (rev 727) +++ branches/gpsd_testing/src/gtk-sat-module.c 2010-12-30 18:12:00 UTC (rev 728) @@ -179,6 +179,10 @@ module->state = GTK_SAT_MOD_STATE_DOCKED; module->busy = g_mutex_new(); + /* open the gpsd device */ + module->gps_data = NULL; + + module->grid = NULL; module->views = NULL; module->nviews = 0; @@ -242,6 +246,11 @@ module->grid = NULL; } + /* close gpsd socket */ + if (module->gps_data !=NULL){ + gps_close(module->gps_data); + module->gps_data=NULL; + } /* FIXME: free module->views? */ (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); @@ -282,16 +291,27 @@ /* load configuration; note that this will also set the module name */ gtk_sat_module_read_cfg_data (GTK_SAT_MODULE (widget), cfgfile); - - /*check that we loaded some reasonable data*/ - if (GTK_SAT_MODULE(widget)->cfgdata==NULL){ - sat_log_log (SAT_LOG_LEVEL_ERROR, + + /*check that we loaded some reasonable data*/ + if (GTK_SAT_MODULE(widget)->cfgdata==NULL){ + sat_log_log (SAT_LOG_LEVEL_ERROR, _("%s: Module %s has problems."), __FUNCTION__, cfgfile); - + return NULL; - } - + } + /*initialize the qth engine*/ + char * server="127.0.0.1"; + char *port="2947"; + GTK_SAT_MODULE(widget)->gps_data=gps_open(server,port); + if (GTK_SAT_MODULE(widget)->gps_data==NULL) { + printf("Could not open gps\n"); + } else { + (void)gps_stream(GTK_SAT_MODULE(widget)->gps_data, WATCH_ENABLE, NULL); + } + + + /* module state */ if ((g_key_file_has_key (GTK_SAT_MODULE (widget)->cfgdata, MOD_CFG_GLOBAL_SECTION, @@ -773,17 +793,37 @@ } if (needupdate) { + /*get the gps position*/ + if(gps_waiting(mod->gps_data) == 1) { + if(gps_poll(mod->gps_data)==0){ + printf("online= %f\n",mod->gps_data->online); + printf("mode= %d\n",mod->gps_data->fix.mode); + printf("lat= %f\n",mod->gps_data->fix.latitude); + printf("lon= %f\n",mod->gps_data->fix.longitude); + printf("alt= %f\n",mod->gps_data->fix.altitude); + if (mod->gps_data->fix.mode>=2) { + mod->qth->lat = mod->gps_data->fix.latitude; + mod->qth->lon = mod->gps_data->fix.longitude; + } + + if (mod->gps_data->fix.mode==3) { + mod->qth->alt=mod->gps_data->fix.altitude; + } + } + } + - if (g_mutex_trylock(mod->busy)==FALSE) { - - sat_log_log (SAT_LOG_LEVEL_WARN, - _("%s: Previous cycle missed it's deadline."), - __FUNCTION__); - - return TRUE; - - } - + + if (g_mutex_trylock(mod->busy)==FALSE) { + + sat_log_log (SAT_LOG_LEVEL_WARN, + _("%s: Previous cycle missed it's deadline."), + __FUNCTION__); + + return TRUE; + + } + mod->rtNow = get_current_daynum (); /* Update time if throttle != 0 */ @@ -939,6 +979,7 @@ sat = SAT(val); module = GTK_SAT_MODULE (data); + /* get current time (real or simulated */ Modified: branches/gpsd_testing/src/gtk-sat-module.h =================================================================== --- branches/gpsd_testing/src/gtk-sat-module.h 2010-12-27 14:47:58 UTC (rev 727) +++ branches/gpsd_testing/src/gtk-sat-module.h 2010-12-30 18:12:00 UTC (rev 728) @@ -31,6 +31,7 @@ #include <glib.h> #include <gdk/gdk.h> #include <gtk/gtkvbox.h> +#include <gps.h> #include "gtk-sat-data.h" #include "qth-data.h" @@ -152,6 +153,9 @@ GtkWidget *tmgState; /*!< Status label indicating RT/SRT/MAN */ gboolean reset; /*!< Flag indicating whether time reset is in progress */ + + /* location structure */ + struct gps_data_t* gps_data; /*!< GPSD data structure */ }; struct _GtkSatModuleClass This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2010-12-27 14:48:04
|
Revision: 727 http://gpredict.svn.sourceforge.net/gpredict/?rev=727&view=rev Author: aa1vs Date: 2010-12-27 14:47:58 +0000 (Mon, 27 Dec 2010) Log Message: ----------- Create Branch for gpsd testing Added Paths: ----------- branches/gpsd_testing/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2010-12-26 17:49:14
|
Revision: 726 http://gpredict.svn.sourceforge.net/gpredict/?rev=726&view=rev Author: aa1vs Date: 2010-12-26 17:49:08 +0000 (Sun, 26 Dec 2010) Log Message: ----------- Lead satellite when pointing rotator. Modified Paths: -------------- trunk/ChangeLog trunk/src/gtk-rot-ctrl.c Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-12-26 16:17:56 UTC (rev 725) +++ trunk/ChangeLog 2010-12-26 17:49:08 UTC (rev 726) @@ -1,3 +1,9 @@ +2010-12-26 Charles Suprin <hamaa1vs at gmail.com> + + * src/gtk-rot-ctrl.c + Make rotator lead satellite on update. + Restructure error handling for cleaner code. + 2010-12-26 Alexandru Csete <oz9aec at gmail.com> * src/gtk-sat-map.c: Modified: trunk/src/gtk-rot-ctrl.c =================================================================== --- trunk/src/gtk-rot-ctrl.c 2010-12-26 16:17:56 UTC (rev 725) +++ trunk/src/gtk-rot-ctrl.c 2010-12-26 17:49:08 UTC (rev 726) @@ -867,11 +867,14 @@ { GtkRotCtrl *ctrl = GTK_ROT_CTRL (data); gdouble rotaz=0.0, rotel=0.0; - gdouble setaz,setel; + gdouble setaz=0.0, setel=0.0; gchar *text; gboolean error = FALSE; gboolean update_flag=FALSE; sat_t sat_working, *sat; + /*parameters for path predictions*/ + gdouble time_delta; + gdouble step_size; if (g_static_mutex_trylock(&(ctrl->busy))==FALSE) { @@ -904,24 +907,21 @@ setel=ctrl->target->el; update_flag=TRUE; } - if (update_flag){ - /* if this is a flipped pass and the rotor supports it*/ - if ((ctrl->flipped)&&(ctrl->conf->maxel>=180.0)){ - setel=180-setel; - if (setaz>180) - setaz-=180; - else - setaz+=180; - } - - if ((ctrl->conf->aztype == ROT_AZ_TYPE_180) && (setaz > 180.0)) { - gtk_rot_knob_set_value (GTK_ROT_KNOB (ctrl->AzSet), setaz- 360.0); - } - else { - gtk_rot_knob_set_value (GTK_ROT_KNOB (ctrl->AzSet), setaz); - } - gtk_rot_knob_set_value (GTK_ROT_KNOB (ctrl->ElSet), setel); + /* if this is a flipped pass and the rotor supports it*/ + if ((ctrl->flipped)&&(ctrl->conf->maxel>=180.0)){ + setel=180-setel; + if (setaz>180) + setaz-=180; + else + setaz+=180; } + if ((ctrl->conf->aztype == ROT_AZ_TYPE_180) && (setaz > 180.0)) { + setaz = setaz- 360.0; + } + + } else { + setaz = gtk_rot_knob_get_value (GTK_ROT_KNOB (ctrl->AzSet)); + setel = gtk_rot_knob_get_value (GTK_ROT_KNOB (ctrl->ElSet)); } if ((ctrl->engaged) && (ctrl->conf != NULL)) { @@ -953,14 +953,83 @@ } /* if tolerance exceeded */ - setaz = gtk_rot_knob_get_value (GTK_ROT_KNOB (ctrl->AzSet)); - setel = gtk_rot_knob_get_value (GTK_ROT_KNOB (ctrl->ElSet)); if ((fabs(setaz-rotaz) > ctrl->tolerance) || (fabs(setel-rotel) > ctrl->tolerance)) { - + + if (ctrl->tracking){ + /*if we are in a pass try to lead the satellite + some so we are not always chasing it*/ + if (ctrl->target->el>0.0) { + /*starting the rotator moving while we do some computation can lead to errors later*/ + /* + compute a time in the future when the position is + within tolerance so and send the rotor there. + */ + + /*use a working copy so data does not get corrupted*/ + sat=memcpy(&(sat_working),ctrl->target,sizeof(sat_t)); + + /* + compute az/el in the future that is past end of pass + or exceeds tolerance + */ + if (ctrl->pass) { + /* the next point is before the end of the pass + if there is one.*/ + time_delta=ctrl->pass->los-ctrl->t; + } else { + /* otherwise look 20 minutes into the future*/ + time_delta=1.0/72.0; + } + + step_size = time_delta / 2.0; + + /* + find a time when satellite is above horizon and at the + edge of tolerance. the final step size needs to be smaller + than delay. otherwise the az/el could be further away than + tolerance the next time we enter the loop and we end up + pushing ourselves away from the satellite. + */ + while (step_size > (ctrl->delay/1000.0/4.0/(secday))) { + predict_calc (sat,ctrl->qth,ctrl->t+time_delta); + /*update sat->az and sat->el to account for flips and az range*/ + if ((ctrl->flipped) && (ctrl->conf->maxel >= 180.0)){ + sat->el = 180.0-sat->el; + if (sat->az > 180.0) + sat->az -= 180.0; + else + sat->az += 180.0; + } + if ((ctrl->conf->aztype == ROT_AZ_TYPE_180) && (setaz > 180.0)) { + sat->az = sat->az - 360.0; + } + if ((sat->el < 0.0)||(sat->el > 180.0)|| + (fabs(setaz - sat->az) > (ctrl->tolerance)) || + (fabs(setel - sat->el) > (ctrl->tolerance))) { + time_delta -= step_size; + } else { + time_delta += step_size; + } + step_size /= 2.0; + } + setel = sat->el; + if (setel < 0.0) { + setel = 0.0; + } + if (setel > 180.0) { + setel = 180.0; + } + setaz = sat->az; + } + } /* send controller values to rotator device */ + /* this is the newly computed value which should be ahead of the current position */ if (!set_pos (ctrl, setaz, setel)) { error = TRUE; + } else { + gtk_rot_knob_set_value (GTK_ROT_KNOB (ctrl->AzSet), setaz); + gtk_rot_knob_set_value (GTK_ROT_KNOB (ctrl->ElSet), setel); } } @@ -999,7 +1068,7 @@ /* update controller circle on polar plot */ if (ctrl->conf !=NULL){ - if ((ctrl->conf->aztype == ROT_AZ_TYPE_180) && (rotaz < 0.0)) { + if ((ctrl->conf->aztype == ROT_AZ_TYPE_180) && (setaz < 0.0)) { gtk_polar_plot_set_ctrl_pos (GTK_POLAR_PLOT (ctrl->plot), gtk_rot_knob_get_value (GTK_ROT_KNOB (ctrl->AzSet))+360.0, gtk_rot_knob_get_value (GTK_ROT_KNOB (ctrl->ElSet))); @@ -1100,12 +1169,57 @@ if (retcode==TRUE){ retval=(gint)g_strtod(buffback+4,NULL); + /*treat errors as soft errors unless there is good reason*/ + /*good reasons come from operator experience or documentation*/ switch(retval) { case 0: /*no error case*/ break; + case -1: + /*RIG_EINVAL error*/ + /* + Returned by gs232 (-m 601) driver when value sent to + rotator outside configured range. + Based on author's experiment. + */ + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s:%d: rotctld returned error %d (%s). Check the limits in your configuration."), + __FILE__, __LINE__, retval, buffback); + + retcode=FALSE; + break; + + case -5: + /*RIG_ETIMEOUT error*/ + /* + Returned by ea4tx interface when stuck + Based on comments on hamlib-discussion list. + */ + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s:%d: rotctld returned error %d (%s)."), + __FILE__, __LINE__, retval, buffback); + + + retcode=FALSE; + break; + + + case -8: + /*RIG_EPROTO error*/ + /* + Returned by gs232 (-m 601) driver when interface is turned off + Based on author's experiment. + */ + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s:%d: rotctld returned error %d (%s). Check that interface power on."), + __FILE__, __LINE__, retval, buffback); + + + retcode=FALSE; + break; + default: /*any other case*/ /*not sure what is a hard error or soft error*/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2010-12-26 16:18:02
|
Revision: 725 http://gpredict.svn.sourceforge.net/gpredict/?rev=725&view=rev Author: csete Date: 2010-12-26 16:17:56 +0000 (Sun, 26 Dec 2010) Log Message: ----------- Removed dead code which was nonsense anyway. Modified Paths: -------------- trunk/ChangeLog trunk/src/gtk-sat-map.c Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-12-11 12:22:43 UTC (rev 724) +++ trunk/ChangeLog 2010-12-26 16:17:56 UTC (rev 725) @@ -1,3 +1,8 @@ +2010-12-26 Alexandru Csete <oz9aec at gmail.com> + + * src/gtk-sat-map.c: + Removed dead code in coordinate conversion (it was nonsense anyway). + 2010-12-10 Charles Suprin <hamaa1vs at gmail.com> * data/locations.dat @@ -11,7 +16,7 @@ 2010-11-24 Alexandru Csete <oz9aec at gmail.com> * src/Makefile.am: - Fixed PACKAGE_OCALE_DIR. + Fixed PACKAGE_LOCALE_DIR. 2010-11-23 Charles Suprin <hamaa1vs at gmail.com> Modified: trunk/src/gtk-sat-map.c =================================================================== --- trunk/src/gtk-sat-map.c 2010-12-11 12:22:43 UTC (rev 724) +++ trunk/src/gtk-sat-map.c 2010-12-26 16:17:56 UTC (rev 725) @@ -723,16 +723,12 @@ * \param x The X coordinate on the screen (left to right) * \param y The Y coordinate on the screen (top to bottom) * + * Assumes that -180 <= lon <= 180 and -90 <= lat <= 90 */ static void lonlat_to_xy (GtkSatMap *p, gdouble lon, gdouble lat, gfloat *x, gfloat *y) { - *x = p->x0 + (180.0 - lon) * p->width / 360.0; - if (*x < 0.0) /* west longitude */ - *x *= -1; - else /* east longitude */ - *x = p->x0 + (180.0 + lon) * p->width / 360.0; - + *x = p->x0 + (180.0 + lon) * p->width / 360.0; *y = p->y0 + (90.0 - lat) * p->height / 180.0;; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2010-12-11 12:22:49
|
Revision: 724 http://gpredict.svn.sourceforge.net/gpredict/?rev=724&view=rev Author: aa1vs Date: 2010-12-11 12:22:43 +0000 (Sat, 11 Dec 2010) Log Message: ----------- Fix date in ChangeLog Modified Paths: -------------- trunk/ChangeLog Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-12-11 03:06:18 UTC (rev 723) +++ trunk/ChangeLog 2010-12-11 12:22:43 UTC (rev 724) @@ -1,8 +1,8 @@ -2010-11-25 Charles Suprin <hamaa1vs at gmail.com> +2010-12-10 Charles Suprin <hamaa1vs at gmail.com> * data/locations.dat Add entries to locations.dat and add state to Mexican locations. - + 2010-11-25 Charles Suprin <hamaa1vs at gmail.com> * src/gtk-rot-ctrl.c This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2010-12-11 03:06:25
|
Revision: 723 http://gpredict.svn.sourceforge.net/gpredict/?rev=723&view=rev Author: aa1vs Date: 2010-12-11 03:06:18 +0000 (Sat, 11 Dec 2010) Log Message: ----------- Add entries to locations.dat and add state to Mexican locations. Modified Paths: -------------- trunk/ChangeLog trunk/data/locations.dat Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-11-26 00:48:09 UTC (rev 722) +++ trunk/ChangeLog 2010-12-11 03:06:18 UTC (rev 723) @@ -1,3 +1,13 @@ +2010-11-25 Charles Suprin <hamaa1vs at gmail.com> + + * data/locations.dat + Add entries to locations.dat and add state to Mexican locations. + +2010-11-25 Charles Suprin <hamaa1vs at gmail.com> + + * src/gtk-rot-ctrl.c + Move rotor to end of pass if below horizon and after current pass + 2010-11-24 Alexandru Csete <oz9aec at gmail.com> * src/Makefile.am: Modified: trunk/data/locations.dat =================================================================== --- trunk/data/locations.dat 2010-11-26 00:48:09 UTC (rev 722) +++ trunk/data/locations.dat 2010-12-11 03:06:18 UTC (rev 723) @@ -8,6 +8,88 @@ Africa;Algeria;Tamanrasset;DAAT;22.8167;5.4667;0 Africa;Algeria;Tebessa;DABS;35.4833;8.1333;813 Africa;Algeria;Tlemcen Zenata;DAON;35.0167;-1.4667;247 +Africa;Angola;Bie Silva Porto ;FNKU;-12.383;16.950;1701 +Africa;Angola;Cabinda;FNCA;-5.550;12.183;25 +Africa;Angola;Huambo Nova Lisboa ;FNHU;-12.800;15.750;1710 +Africa;Angola;Luanda;FNLU;-8.850;13.233;74 +Africa;Angola;Monbaca Benguela ;FNBG;-12.583;13.417;33 +Africa;Benin;Bohicon;DBBC;7.167;2.067;166 +Africa;Benin;Cotonou;DBBB;6.350;2.383;5 +Africa;Benin;Kandi;DBBK;11.133;2.933;290 +Africa;Benin;Natitingou;DBBN;10.317;1.383;460 +Africa;Benin;Parakou;DBBP;9.350;2.617;392 +Africa;Benin;Save;DBBS;8.033;2.467;199 +Africa;Botswana;Francistown;FBFT;-21.217;27.500;1001 +Africa;Botswana;Ghanzi;FBGZ;-21.700;21.650;1131 +Africa;Botswana;Jwaneng;FBJW;-24.600;24.667;1189 +Africa;Botswana;Kasane;FBKE;-17.817;25.150;968 +Africa;Botswana;Letlhakane;FBLT;-21.417;25.600;986 +Africa;Botswana;Maun;FBMN;-19.983;23.417;945 +Africa;Botswana;Selebi Phikwe;FBSP;-22.055;27.820;892 +Africa;Botswana;Seretse Khama International Airport;FBSK;-24.217;25.917;1005 +Africa;Botswana;Shakawe;FBSW;-18.367;21.850;1032 +Africa;Botswana;Sua-Pan;FBSN;-20.467;25.983;903 +Africa;Botswana;Tsabong;FBTS;-26.050;22.450;960 +Africa;Botswana;Tshane;FBTE;-24.017;21.883;1118 +Africa;Burkina Faso;Bobo-Dioulasso;DFOO;11.167;-4.317;460 +Africa;Burkina Faso;Boromo;DFCO;11.750;-2.933;270 +Africa;Burkina Faso;Dedougou;DFOD;12.467;-3.483;300 +Africa;Burkina Faso;Dori;DFEE;14.033;-0.033;276 +Africa;Burkina Faso;Fada N'Gourma;DFEF;12.033;0.367;308 +Africa;Burkina Faso;Gaoua;DFOG;10.333;-3.183;333 +Africa;Burkina Faso;Ouagadougou;DFFD;12.350;-1.517;316 +Africa;Burkina Faso;Ouahigouya;DFCC;13.567;-2.417;337 +Africa;Burkina Faso;Po;DFCP;11.150;-1.150;320 +Africa;Burundi;Bujumbura;HBBA;-3.317;29.317;782 +Africa;Cameroon;Abong-Mbang;FKAG;3.967;13.200;693 +Africa;Cameroon;Bafia;FKAF;4.733;11.250;500 +Africa;Cameroon;Bamenda ;FKKV;6.050;10.117;1239 +Africa;Cameroon;Banyo;FKAB;6.783;11.817;1110 +Africa;Cameroon;Batouri;FKKI;4.467;14.367;656 +Africa;Cameroon;Betare-Oya;FKAO;5.600;14.067;815 +Africa;Cameroon;Douala Obs.;FKKD;4.000;9.733;10 +Africa;Cameroon;Garoua;FKKR;9.333;13.383;242 +Africa;Cameroon;Koundja;FKKM;5.650;10.750;1208 +Africa;Cameroon;Kribi;FKKB;2.950;9.900;10 +Africa;Cameroon;Lomie;FKAL;3.150;13.617;624 +Africa;Cameroon;Mamfe;FKKF;5.717;9.283;126 +Africa;Cameroon;Maroua-Salak;FKKA;10.450;14.250;423 +Africa;Cameroon;Meiganga;FKAM;6.533;14.367;1027 +Africa;Cameroon;Ngaoundere;FKKN;7.350;13.567;1114 +Africa;Cameroon;Nkongsamba;FKAN;4.950;9.933;816 +Africa;Cameroon;Tiko;FKKC;4.083;9.367;52 +Africa;Cameroon;Yaounde;FKYS;3.833;11.517;751 +Africa;Cameroon;Yoko;FKAY;5.550;12.367;1027 +Africa;Cameroon;Younde Ii;FKKY;3.833;11.533;751 +Africa;Cape Verde;Sal;GVAC;16.733;-22.950;54 +Africa;Chad;Abeche;FTTC;13.850;20.850;545 +Africa;Chad;Am-Timan;FTTN;11.033;20.283;433 +Africa;Chad;Bokoro;FTTK;12.383;17.050;300 +Africa;Chad;Bol-Berim;FTTL;13.433;14.733;291 +Africa;Chad;Faya;FTTY;18.000;19.167;235 +Africa;Chad;Moundou;FTTD;8.617;16.067;428 +Africa;Chad;Ndjamena;FTTJ;12.133;15.033;295 +Africa;Chad;Pala;FTTP;9.367;14.917;467 +Africa;Chad;Sarh;FTTA;9.150;18.383;365 +Africa;Comoros;Dzaoudzi / Pamanzi Mayotte ;FMCZ;-12.800;45.283;8 +Africa;Comoros;Hahaya International Airport;FMCH;-11.533;43.267;29 +Africa;Comoros;Ouani Anjouan ;FMCV;-12.117;44.433;19 +Africa;Cote d'Ivoire;Abidjan;DIAP;5.250;-3.933;7 +Africa;Cote d'Ivoire;Adiake;DIAD;5.300;-3.300;33 +Africa;Cote d'Ivoire;Bondoukou;DIBU;8.050;-2.783;369 +Africa;Cote d'Ivoire;Bouake;DIBK;7.733;-5.067;376 +Africa;Cote d'Ivoire;Daloa;DIDL;6.867;-6.467;276 +Africa;Cote d'Ivoire;Dimbokro;DIDK;6.650;-4.700;92 +Africa;Cote d'Ivoire;Gagnoa;DIGA;6.133;-5.950;205 +Africa;Cote d'Ivoire;Korhogo;DIKO;9.417;-5.617;381 +Africa;Cote d'Ivoire;Man;DIMN;7.383;-7.517;339 +Africa;Cote d'Ivoire;Odienne;DIOD;9.500;-7.567;434 +Africa;Cote d'Ivoire;San Pedro;DISP;4.750;-6.650;30 +Africa;Cote d'Ivoire;Sassandra;DISS;4.950;-6.083;62 +Africa;Cote d'Ivoire;Tabou;DITB;4.417;-7.367;21 +Africa;Cote d'Ivoire;Yamoussoukro;DIYO;6.900;-5.350;196 +Africa;Djibouti;Djibouti \ Ambouli;HDAM;11.550;43.167;49 +Africa;Djibouti;Djibouti;HFFF;11.550;43.150;13 Africa;Egypt;Alexandria/Nouzha;HEAX;31.2;29.95;7 Africa;Egypt;Asswan;HESN;23.9667;32.7833;194 Africa;Egypt;Cairo;HECA;30.1333;31.4;74 @@ -15,9 +97,287 @@ Africa;Egypt;Mersa Matruh;HEMM;31.3333;27.2167;30 Africa;Egypt;Port Said;HEPS;31.2667;32.3;6 Africa;Egypt;Sharm El Sheikhintl;HESH;27.9667;34.3833;0 +Africa;Equatorial Guinea;Malabo/Fernando Poo;FGSL;3.750;8.767;56 +Africa;Ethiopia;Addis Ababa;HAAB;8.983;38.800;2355 +Africa;Ethiopia;Agordat ;HAAG;15.550;37.883;626 +Africa;Ethiopia;Arba Minch;HAAM;6.067;37.667;1219 +Africa;Ethiopia;Asmara;HHAS;15.283;38.917;2356 +Africa;Ethiopia;Assab;HASB;13.067;42.717;14 +Africa;Ethiopia;Assosa / Asosa ;HASO;10.033;34.533;1733 +Africa;Ethiopia;Awash ;HAAW;8.983;40.167;1052 +Africa;Ethiopia;Awassa;HALA;7.067;38.500;1652 +Africa;Ethiopia;Axum;HAAX;14.117;38.717;2134 +Africa;Ethiopia;Baco / Bako ;HABC;5.833;36.617;1311 +Africa;Ethiopia;Bahar Dar;HABD;11.600;37.400;1820 +Africa;Ethiopia;Combolcha;HADC;11.083;39.717;1864 +Africa;Ethiopia;Debremarcos;HADM;10.350;37.717;2476 +Africa;Ethiopia;Dire Dawa;HADR;9.600;41.867;1146 +Africa;Ethiopia;Ghinnir / Ginir ;HAGH;7.150;40.717;1844 +Africa;Ethiopia;Gode;HAGO;5.100;44.583;320 +Africa;Ethiopia;Gondar;HAGN;12.533;37.433;1985 +Africa;Ethiopia;Gore;HAGR;8.167;35.550;1974 +Africa;Ethiopia;Harar Meda;HAHM;8.733;39.000;1876 +Africa;Ethiopia;Jiggiga;HAJJ;9.333;42.717;1644 +Africa;Ethiopia;Jimma;HAJM;7.667;36.833;1676 +Africa;Ethiopia;Kabre Dare Military ;HAKD;6.750;44.283;550 +Africa;Ethiopia;Makale;HAMK;13.500;39.483;2212 +Africa;Ethiopia;Massawa;HAMS;15.617;39.450;10 +Africa;Ethiopia;Masslo / Meslo ;HAML;6.367;39.833;2274 +Africa;Ethiopia;Neghelli;HANG;5.283;39.750;1455 +Africa;Ethiopia;Tessenei / Teseney ;HATS;15.117;36.683;615 +Africa;Gabon;Bitam;FOOB;2.083;11.483;600 +Africa;Gabon;Cocobeach;FOOC;1.000;9.600;12 +Africa;Gabon;Franceville / Mvengue;FOON;-1.650;13.433;441 +Africa;Gabon;Lambarene;FOGR;-0.717;10.233;27 +Africa;Gabon;Lastoursville;FOOR;-0.833;12.717;483 +Africa;Gabon;Libreville;FOOL;0.450;9.417;12 +Africa;Gabon;Makokou;FOOK;0.567;12.867;509 +Africa;Gabon;Mayumba;FOOY;-3.417;10.650;31 +Africa;Gabon;Mekambo;FOOE;1.017;13.933;499 +Africa;Gabon;Mitzic;FOOM;0.783;11.533;583 +Africa;Gabon;Moanda;FOOD;-1.533;13.267;572 +Africa;Gabon;Mouila;FOGM;-1.867;11.017;88 +Africa;Gabon;Port-Gentil;FOOG;-0.700;8.750;3 +Africa;Gabon;Tchibanga;FOOT;-2.850;11.017;83 +Africa;Gambia, The;Banjul / Yundum;GBYD;13.350;-16.800;36 +Africa;Ghana;Accra;DGAA;5.600;-0.167;68 +Africa;Ghana;Ada;DGAD;5.783;0.633;5 +Africa;Ghana;Akim Oda;DGKA;5.933;-0.983;139 +Africa;Ghana;Akuse;DGAK;6.100;0.117;17 +Africa;Ghana;Axim;DGTX;4.867;-2.233;38 +Africa;Ghana;Bole;DGLB;9.033;-2.483;299 +Africa;Ghana;Ho;DGAH;6.600;0.467;158 +Africa;Ghana;Koforidua;DGKK;6.083;-0.250;166 +Africa;Ghana;Kumasi;DGSI;6.717;-1.600;287 +Africa;Ghana;Navrongo;DGLN;10.900;-1.100;201 +Africa;Ghana;Saltpond;DGAS;5.200;-1.067;44 +Africa;Ghana;Sefwi Bekwai;DGSB;6.200;-2.333;171 +Africa;Ghana;Sunyani;DGSN;7.333;-2.333;309 +Africa;Ghana;Takoradi;DGTK;4.883;-1.767;5 +Africa;Ghana;Tamale;DGLE;9.500;-0.850;168 +Africa;Ghana;Tema;DGAT;5.617;0.000;14 +Africa;Ghana;Wa;DGLW;10.050;-2.500;323 +Africa;Ghana;Wenchi;DGSW;7.750;-2.100;339 +Africa;Ghana;Yendi;DGLY;9.450;-0.017;195 +Africa;Guinea-Bissau;Bafata;GGBF;12.167;-14.667;42 +Africa;Guinea-Bissau;Bissau Aeroport ;GGOV;11.883;-15.650;39 +Africa;Guinea;Boke;GUOK;10.933;-14.317;69 +Africa;Guinea;Conakry / Gbessia;GUCY;9.567;-13.617;26 +Africa;Guinea;Faranah / Badala;GUFH;10.033;-10.750;458 +Africa;Guinea;Kankan;GUXD;10.383;-9.300;377 +Africa;Guinea;Kindia;GUID;10.050;-12.867;458 +Africa;Guinea;Kissidougou;GUKU;9.183;-10.100;525 +Africa;Guinea;Labe;GULB;11.317;-12.300;1025 +Africa;Guinea;Macenta;GUMA;8.533;-9.467;543 +Africa;Guinea;N'Zerekore;GUNZ;7.733;-8.833;470 +Africa;Guinea;Siguiri;GUSI;11.433;-9.167;362 +Africa;Kenya;Eldoret;HKEL;0.533;35.283;2120 +Africa;Kenya;Embu;HKEM;-0.500;37.450;1493 +Africa;Kenya;Garissa;HKGA;-0.467;39.633;138 +Africa;Kenya;Isiolo ;HKIS;0.350;37.583;1067 +Africa;Kenya;Kakamega;HKKG;0.283;34.783;1530 +Africa;Kenya;Kericho;HKKR;-0.367;35.350;2184 +Africa;Kenya;Kisii;HKKS;-0.667;34.783;1493 +Africa;Kenya;Kisumu;HKKI;-0.100;34.750;1157 +Africa;Kenya;Kitale;HKKT;1.017;35.000;1890 +Africa;Kenya;Lamu;HKLU;-2.267;40.833;6 +Africa;Kenya;Lodwar;HKLO;3.117;35.617;506 +Africa;Kenya;Makindu;HKMU;-2.283;37.833;1000 +Africa;Kenya;Malindi;HKML;-3.233;40.100;20 +Africa;Kenya;Mandera;HKMA;3.933;41.867;230 +Africa;Kenya;Marsabit;HKMB;2.300;37.900;1219 +Africa;Kenya;Meru;HKME;0.083;37.650;1554 +Africa;Kenya;Mombasa;HKMO;-4.033;39.617;57 +Africa;Kenya;Moyale;HKMY;3.533;39.050;1097 +Africa;Kenya;Nairobi ACC/FIC/RCC/MET/COM/;HKNA;-1.317;36.933;1624 +Africa;Kenya;Nairobi / Dagoretti;HKNC;-1.300;36.750;1798 +Africa;Kenya;Nairobi/Jomo Kenyatta Airport TWR/APP/NOF/Civil Airlines;HKJK;-1.317;36.917;1624 +Africa;Kenya;Nairobi / Wilson;HKNW;-1.317;36.817;1683 +Africa;Kenya;Nakuru;HKNK;-0.267;36.100;1901 +Africa;Kenya;Nanyuki ;HKNY;-0.067;37.033;1905 +Africa;Kenya;Narok;HKNO;-1.133;35.833;1890 +Africa;Kenya;Nyeri;HKNI;-0.500;36.967;1759 +Africa;Kenya;Voi;HKVO;-3.400;38.567;579 +Africa;Kenya;Wajir;HKWJ;1.750;40.067;244 +Africa;Lesotho;Maseru-Mia;FXMU;-29.450;27.550;1631 +Africa;Lesotho;Maseru / Moshoeshoe;FXMM;-29.450;27.550;1631 +Africa;Liberia;Grand Bassa, Roberts Field;GLRB;6.250;-10.350;18 Africa;Libya;Benina;HLLB;32.1;20.2667;132 Africa;Libya;Tripoli;HLLT;32.6667;13.15;82 -Africa;Morocco;Rabat;GMME;34.05;-6.7667;75 +Africa;Madagascar;Analalava;FMNL;-14.633;47.767;105 +Africa;Madagascar;Andapa;FMND;-14.650;49.617;473 +Africa;Madagascar;Antalaha;FMNH;-14.883;50.250;87 +Africa;Madagascar;Antananarivo / Ivato;FMMI;-18.800;47.483;1279 +Africa;Madagascar;Antsirabe;FMME;-19.817;47.067;1523 +Africa;Madagascar;Besalampy;FMNQ;-16.750;44.483;38 +Africa;Madagascar;Diego-Suarez;FMNA;-12.350;49.300;114 +Africa;Madagascar;Farafangana;FMSG;-22.800;47.833;8 +Africa;Madagascar;Fascene Nossi-Be ;FMNN;-13.317;48.317;10 +Africa;Madagascar;Fianarantsoa;FMSF;-21.450;47.100;1115 +Africa;Madagascar;Fort-Dauphin;FMSD;-25.033;46.950;8 +Africa;Madagascar;Mahanoro;FMMH;-19.833;48.800;5 +Africa;Madagascar;Maintirano;FMMO;-18.050;44.033;23 +Africa;Madagascar;Majunga;FMNM;-15.667;46.350;26 +Africa;Madagascar;Mananjary;FMSM;-21.200;48.367;5 +Africa;Madagascar;Morombe;FMSR;-21.750;43.367;5 +Africa;Madagascar;Morondava;FMMV;-20.283;44.317;7 +Africa;Madagascar;Ranohira;FMSO;-22.550;45.400;824 +Africa;Madagascar;Sainte-Marie Aerodrome;FMMS;-17.083;49.817;2 +Africa;Madagascar;Sambava;FMNS;-14.283;50.167;5 +Africa;Madagascar;Tamatave;FMMT;-18.117;49.400;5 +Africa;Madagascar;Tulear;FMST;-23.383;43.733;8 +Africa;Madagascar;Vohemar;FMNV;-13.367;50.000;6 +Africa;Malawi;Chileka;FWCL;-15.683;34.967;766 +Africa;Malawi;Chitipa;FWCT;-9.700;33.267;1278 +Africa;Malawi;Dedza;FWDZ;-14.317;34.267;1630 +Africa;Malawi;Karonga;FWKA;-9.950;33.883;529 +Africa;Malawi;Lilongwe International Airport;FWKI;-13.783;33.767;1229 +Africa;Malawi;Mangochi;FWMG;-14.433;35.250;485 +Africa;Malawi;Monkey Bay;FWMY;-14.083;34.917;474 +Africa;Malawi;Mzimba;FWMZ;-11.883;33.617;1349 +Africa;Malawi;Mzuzu;FWUU;-11.450;34.017;1251 +Africa;Malawi;Nkhota Kota;FWKK;-12.917;34.267;500 +Africa;Malawi;Salima;FWSM;-13.750;34.583;513 +Africa;Mali;Bamako / Senou;GABS;12.533;-7.950;380 +Africa;Mali;Bougouni;GABG;11.417;-7.500;350 +Africa;Mali;Gao;GAGO;16.267;-0.050;265 +Africa;Mali;Hombori;GAHB;15.333;-1.683;287 +Africa;Mali;Kayes;GAKY;14.433;-11.433;47 +Africa;Mali;Kenieba;GAKA;12.850;-11.233;132 +Africa;Mali;Kidal;GAKL;18.433;1.350;458 +Africa;Mali;Kita;GAKT;13.067;-9.467;333 +Africa;Mali;Koutiala;GAKO;12.383;-5.467;365 +Africa;Mali;Menaka;GAMK;15.867;2.217;278 +Africa;Mali;Mopti;GAMB;14.517;-4.100;276 +Africa;Mali;Nara;GANK;15.167;-7.283;271 +Africa;Mali;Nioro Du Sahel;GANR;15.233;-9.350;235 +Africa;Mali;San;GASN;13.333;-4.833;283 +Africa;Mali;Segou;GASG;13.400;-6.150;288 +Africa;Mali;Sikasso;GASK;11.350;-5.683;374 +Africa;Mali;Tessalit;GATS;20.200;0.983;494 +Africa;Mali;Tombouctou;GATB;16.717;-3.000;263 +Africa;Mauritania;Aioun El Atrouss;GQNA;16.700;-9.600;223 +Africa;Mauritania;Akjoujt;GQNJ;19.750;-14.367;123 +Africa;Mauritania;Atar;GQPA;20.517;-13.067;226 +Africa;Mauritania;Bir Moghrein;GQPT;25.233;-11.617;364 +Africa;Mauritania;Boutilimit;GQNB;17.533;-14.683;77 +Africa;Mauritania;Kaedi;GQNK;16.150;-13.517;18 +Africa;Mauritania;Kiffa;GQNF;16.633;-11.400;115 +Africa;Mauritania;Nema;GQNI;16.600;-7.267;269 +Africa;Mauritania;Nouadhibou;GQPP;20.933;-17.033;5 +Africa;Mauritania;Nouakchott;GQNN;18.100;-15.950;2 +Africa;Mauritania;Rosso;GQNR;16.500;-15.817;5 +Africa;Mauritania;Tidjikja;GQND;18.567;-11.433;396 +Africa;Mauritius;Plaisance Mauritius ;FIMP;-20.433;57.667;55 +Africa;Mauritius;Rodrigues;FIMR;-19.683;63.417;58 +Africa;Morocco;Agadir Al Massira;GMAD;30.333;-9.400;74 +Africa;Morocco;Agadir;GMAA;30.383;-9.567;27 +Africa;Morocco;Al Hoceima;GMTA;35.183;-3.850;27 +Africa;Morocco;Casablanca;GMMC;33.567;-7.667;62 +Africa;Morocco;Errachidia;GMFK;31.933;-4.400;1034 +Africa;Morocco;Essaouira;GMMI;31.517;-9.783;15 +Africa;Morocco;Fes-Sais;GMFF;33.933;-4.983;579 +Africa;Morocco;Ifrane;GMFI;33.500;-5.167;1664 +Africa;Morocco;Kenitra;GMMY;34.300;-6.600;5 +Africa;Morocco;Laayoune/Hassan Isl;GMML;27.167;-13.216;6 +Africa;Morocco;Marrakech;GMMX;31.617;-8.033;468 +Africa;Morocco;Meknes;GMFM;33.883;-5.533;576 +Africa;Morocco;Nador/Arwi;GMMW;34.989;-3.028;175 +Africa;Morocco;Nador;GMFN;35.150;-2.917;3 +Africa;Morocco;Nouasseur;GMMN;33.367;-7.583;200 +Africa;Morocco;Ouarzazate;GMMZ;30.933;-6.900;1139 +Africa;Morocco;Oujda;GMFO;34.783;-1.933;468 +Africa;Morocco;Rabat-Sale;GMME;34.050;-6.767;84 +Africa;Morocco;Safi;GMMS;32.283;-9.233;52 +Africa;Morocco;Sidi Ifni;GMMF;29.367;-10.183;58 +Africa;Morocco;Tanger Aerodrome ;GMTT;35.733;-5.900;19 +Africa;Morocco;Tan-Tan;GMAT;28.450;-11.150;229 +Africa;Morocco;Taza;GMFZ;34.217;-4.000;509 +Africa;Morocco;Tetuan / Sania Ramel;GMTN;35.583;-5.333;10 +Africa;Mozambique;Beira;FQBR;-19.800;34.900;8 +Africa;Mozambique;Chimoio;FQCH;-19.117;33.467;731 +Africa;Mozambique;Cuamba;FQCB;-14.817;36.533;606 +Africa;Mozambique;Inhambane;FQIN;-23.867;35.383;14 +Africa;Mozambique;Lichinga;FQLC;-13.300;35.233;1364 +Africa;Mozambique;Lumbo;FQLU;-15.033;40.667;10 +Africa;Mozambique;Maputo / Mavalane;FQMA;-25.917;32.567;39 +Africa;Mozambique;Mocimboa Da Praia;FQMP;-11.350;40.367;27 +Africa;Mozambique;Nampula;FQNP;-15.100;39.283;438 +Africa;Mozambique;Pemba;FQPB;-12.983;40.533;101 +Africa;Mozambique;Quelimane;FQQL;-17.883;36.883;6 +Africa;Mozambique;Tete / Chingozi;FQTT;-16.100;33.633;160 +Africa;Mozambique;Tete;FQTE;-16.183;33.583;149 +Africa;Mozambique;Vilanculos;FQVL;-22.000;35.317;20 +Africa;Mozambique;Xai Xai;FQXA;-25.050;33.633;4 +Africa;Namibia;Gobabis;FAGB;-22.467;18.967;1440 +Africa;Namibia;Grootfontein;FYGF;-19.600;18.117;1411 +Africa;Namibia;J. G. Strijdom;FYWH;-22.483;17.467;1715 +Africa;Namibia;Katima Mulilo;FYKM;-17.634;24.177;985 +Africa;Namibia;Keetmanshoop;FYKT;-26.533;18.117;1067 +Africa;Namibia;Luderitz / Diaz Point;FYLZ;-26.683;15.250;130 +Africa;Namibia;Ondangwa;FYOA;-17.878;15.952;1096 +Africa;Namibia;Rooikop Saaf / Civ ;FYRK;-22.983;14.650;88 +Africa;Namibia;Rundu;FYRU;-17.917;19.767;1083 +Africa;Namibia;Walvis Bay;FYWB;-22.983;14.650;46 +Africa;Namibia;Windhoek, Town MET;FYWW;-22.567;17.100;1725 +Africa;Niger;Agadez;DRZA;16.967;7.983;501 +Africa;Niger;Bilma;DRRI;18.683;12.917;355 +Africa;Niger;Birni-N'Konni;DRRB;13.800;5.250;272 +Africa;Niger;Diffa;DRZF;13.417;12.783;303 +Africa;Niger;Gaya;DRRG;11.883;3.450;202 +Africa;Niger;Goure;DRZG;13.983;10.300;464 +Africa;Niger;Maine-Soroa;DRZM;13.233;11.983;338 +Africa;Niger;Maradi;DRRM;13.467;7.083;372 +Africa;Niger;Niamey-Aero;DRRN;13.483;2.167;223 +Africa;Niger;Tahoua;DRRT;14.900;5.250;386 +Africa;Niger;Tillabery;DRRL;14.200;1.450;209 +Africa;Niger;Zinder;DRZR;13.783;8.983;452 +Africa;Nigeria;Bida;DNBI;9.100;6.017;137 +Africa;Nigeria;Calabar;DNCA;4.967;8.350;63 +Africa;Nigeria;Enugu;DNEN;6.467;7.550;137 +Africa;Nigeria;Gusau;DNGU;12.167;6.700;463 +Africa;Nigeria;Ibadan;DNIB;7.433;3.900;234 +Africa;Nigeria;Ilorin;DNIL;8.483;4.583;308 +Africa;Nigeria;Jos;DNJO;9.867;8.900;1295 +Africa;Nigeria;Kaduna;DNKA;10.600;7.450;645 +Africa;Nigeria;Kano;DNKN;12.050;8.533;476 +Africa;Nigeria;Maiduguri;DNMA;11.850;13.083;354 +Africa;Nigeria;Makurdi;DNMK;7.683;8.617;113 +Africa;Nigeria;Lagos / Ikeja;DNMM;6.583;3.333;40 +Africa;Nigeria;Oshogbo;DNOS;7.783;4.483;305 +Africa;Nigeria;Port Harcourt;DNPO;4.850;7.017;18 +Africa;Nigeria;Sokoto;DNSO;13.017;5.250;351 +Africa;Nigeria;Yola;DNYO;9.233;12.467;191 +Africa;Nigeria;Zaria;DNZA;11.133;7.683;664 +Africa;Portugal;Funchal / S. Catarina;LPFU;32.683;-16.767;58 +Africa;Portugal;Porto Santo;LPPS;33.067;-16.350;97 +Africa;Reunion;Saint-Denis / Gillot;FMEE;-20.883;55.517;21 +Africa;Reunion;Saint-Pierre;FMEP;-21.333;55.483;52 +Africa;Rwanda;Gisenyi;HRYG;-1.667;29.250;1556 +Africa;Rwanda;Kigali;HRYR;-1.967;30.117;1491 +Africa;Saint Helena;Wide Awake Field Ascension Island ;FHAW;-7.967;-14.400;86 +Africa;Sao Tome and Principe;Principe;FPPR;1.650;7.417;3 +Africa;Sao Tome and Principe;S. Tome;FPST;0.383;6.717;8 +Africa;Senegal;Cap-Skirring;GOGS;12.400;-16.750;16 +Africa;Senegal;Dakar / Yoff;GOOY;14.733;-17.500;27 +Africa;Senegal;Diourbel;GOOD;14.650;-16.233;7 +Africa;Senegal;Kaolack;GOOK;14.133;-16.067;6 +Africa;Senegal;Kedougou;GOTK;12.567;-12.217;178 +Africa;Senegal;Kolda;GOGK;12.883;-14.967;10 +Africa;Senegal;Linguere;GOOG;15.383;-15.117;20 +Africa;Senegal;Matam;GOSM;15.650;-13.250;15 +Africa;Senegal;Podor;GOSP;16.650;-14.967;6 +Africa;Senegal;Saint-Louis;GOSS;16.050;-16.450;4 +Africa;Senegal;Tambacounda;GOTT;13.767;-13.683;49 +Africa;Senegal;Ziguinchor;GOGG;12.550;-16.267;26 +Africa;Seychelles;Seychelles Inter-National Airport;FSIA;-4.667;55.517;3 +Africa;Seychelles;Seychelles International Airport Rawinsonde Station ;FSSS;-4.683;55.533;4 +Africa;Sierra Leone;Lungi;GFLL;8.617;-13.200;25 +Africa;Somalia;Belet Uen;HCMN;4.700;45.217;173 +Africa;Somalia;Berbera;HCMI;10.417;45.017;9 +Africa;Somalia;Burao;HCMV;9.500;45.567;1032 +Africa;Somalia;Hargeisa;HCMH;9.500;44.083;1326 +Africa;Somalia;Mogadiscio;HCMM;2.033;45.350;9 Africa;South Africa;Bethlehem Airport;FABM;-28.25;28.3333;1700 Africa;South Africa;Bloemfontein J. B. M. Hertzog;FABL;-29.1;26.3;1400 Africa;South Africa;Cape Town D. F. Malan;FACT;-33.9833;18.6;0 @@ -32,6 +392,151 @@ Africa;South Africa;Pretoria;FAPR;-25.7333;28.1833;1300 Africa;South Africa;Springbok;FASB;-29.6667;17.8667;1000 Africa;South Africa;Upington;FAUP;-28.4;21.2667;800 +Africa;Spain;Fuerteventura / Aeropuerto;GCFV;28.450;-13.867;22 +Africa;Spain;Gran Canaria - Canary Islands;GCLP;27.933;-15.383;23 +Africa;Spain;Hierro / Aeropuerto;GCHI;27.817;-17.883;32 +Africa;Spain;Lanzarote / Aeropuerto;GCRR;28.950;-13.600;14 +Africa;Spain;La Palma / Aeropuerto;GCLA;28.617;-17.750;29 +Africa;Spain;Melilla;GEML;35.283;-2.950;47 +Africa;Spain;Tenerife / Los Rodeos;GCXO;28.467;-16.317;632 +Africa;Spain;Tenerife Sur;GCTS;28.050;-16.567;64 +Africa;Sudan;Atbara;HSAT;17.700;33.967;347 +Africa;Sudan;Damazine;HSDZ;11.783;34.383;474 +Africa;Sudan;Dongola;HSDN;19.167;30.483;226 +Africa;Sudan;El Fasher;HSFS;13.617;25.333;733 +Africa;Sudan;El Obeid;HSOB;13.167;30.233;574 +Africa;Sudan;Gedaref;HSGF;14.033;35.400;599 +Africa;Sudan;Geneina;HSGN;13.483;22.450;805 +Africa;Sudan;Juba;HSSJ;4.867;31.600;460 +Africa;Sudan;Kadugli;HSLI;11.000;29.717;499 +Africa;Sudan;Kassala;HSKA;15.467;36.400;500 +Africa;Sudan;Khartoum;HSSS;15.600;32.550;382 +Africa;Sudan;Kosti;HSKI;13.167;32.667;381 +Africa;Sudan;Malakal;HSSM;9.550;31.650;387 +Africa;Sudan;Nyala;HSNL;12.050;24.883;67 +Africa;Sudan;Port Sudan;HSSP;19.583;37.217;3 +Africa;Sudan;Port Sudan International;HSPN;19.433;37.233;138 +Africa;Sudan;Renk;HSRN;11.750;32.783;282 +Africa;Sudan;Sennar;HSNR;13.550;33.617;418 +Africa;Sudan;Wadi Halfa;HSSW;21.817;31.483;183 +Africa;Swaziland;Manzini / Matsapa Airport;FDMS;-26.533;31.300;641 +Africa;Tanzania;Arusha;HTAR;-3.333;36.617;1387 +Africa;Tanzania;Bukoba;HTBU;-1.333;31.817;1137 +Africa;Tanzania;Dar Es Salaam Airport;HTDA;-6.867;39.200;55 +Africa;Tanzania;Dodoma;HTDO;-6.167;35.767;1119 +Africa;Tanzania;Iringa;HTIR;-7.667;35.750;1426 +Africa;Tanzania;Kigoma;HTKA;-4.883;29.633;882 +Africa;Tanzania;Kilimanjaro Airport;HTKJ;-3.417;37.067;891 +Africa;Tanzania;Kilwa Masoko ;HTKI;-8.933;39.517;18 +Africa;Tanzania;Mbeya;HTMB;-8.933;33.467;1704 +Africa;Tanzania;Mombo;HTMO;-4.883;38.283;511 +Africa;Tanzania;Morogoro;HTMG;-6.833;37.650;526 +Africa;Tanzania;Moshi;HTMS;-3.350;37.333;854 +Africa;Tanzania;Mtwara;HTMT;-10.267;40.183;113 +Africa;Tanzania;Musoma;HTMU;-1.500;33.800;1147 +Africa;Tanzania;Mwanza;HTMW;-2.467;32.917;1139 +Africa;Tanzania;Nachingwea;HTNA;-10.350;38.750;463 +Africa;Tanzania;Pemba / Karume Airport;HTPE;-5.250;39.817;25 +Africa;Tanzania;Same;HTSE;-4.083;37.717;872 +Africa;Tanzania;Shinyanga;HTSY;-3.500;33.000;1100 +Africa;Tanzania;Songea;HTSO;-10.683;35.583;1067 +Africa;Tanzania;Tabora Airport;HTTB;-5.083;32.833;1181 +Africa;Tanzania;Tanga;HTTG;-5.083;39.067;39 +Africa;Tanzania;Zanzibar / Kisauni;HTZA;-6.217;39.217;15 +Africa;Togo;Atakpame;DXAK;7.583;1.117;400 +Africa;Togo;Lome;DXXX;6.167;1.250;20 +Africa;Togo;Mango;DXMG;10.367;0.467;145 +Africa;Togo;Niamtougou;DXNG;9.767;1.100;342 +Africa;Togo;Sokode;DXSK;8.983;1.150;386 +Africa;Togo;Tabligbo;DXTA;6.583;1.500;44 +Africa;Tunisia;Bizerte;DTTB;37.250;9.800;5 +Africa;Tunisia;Djerba Mellita;DTTJ;33.867;10.767;3 +Africa;Tunisia;El Borma;DTTR;31.683;9.167;258 +Africa;Tunisia;Gabes;DTTG;33.883;10.100;4 +Africa;Tunisia;Gafsa;DTTF;34.417;8.817;313 +Africa;Tunisia;Habib Bourguiba ;DTMB;35.767;10.750;2 +Africa;Tunisia;Jendouba;DTTN;36.483;8.800;143 +Africa;Tunisia;Kairouan;DTTK;35.667;10.100;60 +Africa;Tunisia;Kelibia;DTTL;36.850;11.083;29 +Africa;Tunisia;Monastir-Skanes;DTTM;35.667;10.750;2 +Africa;Tunisia;Remada;DTTD;32.317;10.400;300 +Africa;Tunisia;Sfax El-Maou;DTTX;34.717;10.683;21 +Africa;Tunisia;Tabarka;DTKA;36.950;8.750;20 +Africa;Tunisia;Tozeur;DTTZ;33.917;8.100;87 +Africa;Tunisia;Tunis-Carthage;DTTA;36.833;10.233;3 +Africa;Uganda;Arua;HUAR;3.050;30.917;1204 +Africa;Uganda;Entebbe Airport;HUEN;0.050;32.450;1155 +Africa;Uganda;Fort Portal ;HUFP;0.667;30.283;1533 +Africa;Uganda;Gulu;HUGU;2.750;32.333;1104 +Africa;Uganda;Jinja;HUJI;0.450;33.183;1175 +Africa;Uganda;Kabale;HUKB;-1.250;29.983;1867 +Africa;Uganda;Kasese;HUKS;0.183;30.100;959 +Africa;Uganda;Lira;HULI;2.250;32.900;1091 +Africa;Uganda;Masindi;HUMI;1.683;31.717;1146 +Africa;Uganda;Mbarara;HUMA;-0.617;30.650;1412 +Africa;Uganda;Moroto ;HUMO;2.533;34.650;1280 +Africa;Uganda;Soroti;HUSO;1.717;33.617;1132 +Africa;Uganda;Tororo;HUTO;0.683;34.167;1170 +Africa;Western Sahara;Villa Cisneros;GSVO;23.700;-15.867;10 +Africa;Zambia;Chipata;FLCP;-13.550;32.583;1028 +Africa;Zambia;Choma;FLCH;-16.833;27.067;1213 +Africa;Zambia;Isoka;FLIK;-10.117;32.633;1360 +Africa;Zambia;Kabompo;FLPO;-13.600;24.200;1075 +Africa;Zambia;Kabwe;FLKW;-14.450;28.467;1206 +Africa;Zambia;Kaoma;FLKO;-14.800;24.800;1213 +Africa;Zambia;Kasama;FLKS;-10.217;31.133;1382 +Africa;Zambia;Kasempa;FLPA;-13.533;25.850;1234 +Africa;Zambia;Kawambwa;FLKB;-9.800;29.083;1323 +Africa;Zambia;Livingstone;FLLI;-17.817;25.817;985 +Africa;Zambia;Lundazi;FLLD;-12.283;33.200;1143 +Africa;Zambia;Lusaka City Airport;FLLC;-14.450;28.467;1280 +Africa;Zambia;Lusaka Internationalairport;FLLS;-15.317;28.450;1152 +Africa;Zambia;Mansa;FLMA;-11.100;28.850;1382 +Africa;Zambia;Mbala;FLBA;-8.850;31.333;1673 +Africa;Zambia;Mfuwe;FLMF;-13.259;31.937;573 +Africa;Zambia;Mongu;FLMG;-15.250;23.150;1052 +Africa;Zambia;Mpika;FLMP;-11.900;31.433;1400 +Africa;Zambia;Mwinilunga;FLMW;-11.750;24.433;1361 +Africa;Zambia;Ndola;FLND;-13.000;28.650;1269 +Africa;Zambia;Petauke;FLPE;-14.250;31.283;1035 +Africa;Zambia;Senanga;FLSN;-16.100;23.267;1027 +Africa;Zambia;Serenje;FLSE;-13.233;30.217;1384 +Africa;Zambia;Sesheke;FLSS;-17.467;24.300;949 +Africa;Zambia;Solwezi;FLSW;-12.183;26.383;1386 +Africa;Zambia;Zambezi;FLZB;-13.533;23.117;1077 +Africa;Zimbabwe;Beitbridge;FVBB;-22.217;30.000;456 +Africa;Zimbabwe;Binga;FVBI;-17.617;27.333;620 +Africa;Zimbabwe;Buffalo Range;FVCZ;-21.017;31.583;429 +Africa;Zimbabwe;Bulawayo Airport;FVBU;-20.017;28.617;1326 +Africa;Zimbabwe;Chipinge;FVCH;-20.200;32.617;1131 +Africa;Zimbabwe;Gokwe;FVGO;-18.217;28.933;1282 +Africa;Zimbabwe;Gweru;FVTL;-19.450;29.850;1428 +Africa;Zimbabwe;Harare Kutsaga ;FVHA;-17.917;31.133;1479 +Africa;Zimbabwe;Hwange National Park;FVWN;-18.633;27.000;1079 +Africa;Zimbabwe;Kariba;FVKB;-16.517;28.883;518 +Africa;Zimbabwe;Karoi;FVKA;-16.833;29.617;1343 +Africa;Zimbabwe;Masvingo;FVMV;-20.067;30.867;1094 +Africa;Zimbabwe;Mutoko;FVMT;-17.417;32.217;1244 +Africa;Zimbabwe;Rusape;FVRU;-18.533;32.133;1430 +Africa;Zimbabwe;Victoria Falls;FVFA;-18.100;25.850;1061 +Asia;Afghanistan;Faizabad;OAFZ;37.117;70.517;1200 +Asia;Afghanistan;Farah;OAFR;32.367;62.183;700 +Asia;Afghanistan;Herat;OAHR;34.217;62.217;964 +Asia;Afghanistan;Jabul-Saraj;OAJS;35.133;69.250;1630 +Asia;Afghanistan;Jalalabad;OAJL;34.433;70.467;580 +Asia;Afghanistan;Kabul Airport;OAKB;34.633;69.200;1789 +Asia;Afghanistan;Mazar-I-Sharif;OAMS;36.700;67.200;378 +Asia;Afghanistan;Shebirghan;OASG;36.667;65.717;360 +Asia;Afghanistan;Shindand;OASD;33.400;62.283;1150 +Asia;Afghanistan;Zaranj;OAZG;31.000;61.850;478 +Asia;Afghanistan;Zebak;OAZB;36.500;71.250;2600 +Asia;Bangladesh;Jessore;VGJR;23.183;89.167;6 +Asia;Bangladesh;Kurmitola, Dia;VGZR;23.850;90.400;9 +Asia;Bangladesh;Rajshahi;VGRJ;24.367;88.700;17 +Asia;Bangladesh;Sylhet;VGSY;24.900;91.883;34 +Asia;Cambodia;Kompong-Cham;VDKC;12.000;105.450;16 +Asia;Cambodia;Phnom-Penh / Pochentong;VDPP;11.550;104.850;10 +Asia;Cambodia;Siemreap;VDSR;13.367;103.850;15 Asia;Hong Kong;Hong Kong;VHHH;22.3333;114.1833;24 Asia;India;Ahmadabad;VAAH;23.0667;72.6333;55 Asia;India;Amritsar;VIAR;31.6333;74.8667;234 @@ -170,6 +675,25 @@ Asia;Korea, Republic of;Yeoju Range;RKSU;37.4333;127.6333;43 Asia;Korea, Republic of;Yongsan/H-208 Hp;RKSY;37.5167;126.9833;0 Asia;Korea, Republic of;Yosu;RKJY;34.8333;127.6167;20 +Asia;Laos;Luang-Prabang;VLLB;19.883;102.133;305 +Asia;Laos;Pakse;VLIP;15.117;105.167;102 +Asia;Laos;Saravane;VLSV;15.683;106.433;168 +Asia;Laos;Savannakhet;VLSK;16.550;104.650;155 +Asia;Laos;Sayaboury;VLSB;19.233;101.733;326 +Asia;Laos;Thakhek;VLTK;17.383;104.650;52 +Asia;Laos;Vientiane;VLVT;17.950;102.567;171 +Asia;Macau;Taipa;VMMC;22.167;113.567;114 +Asia;Maldives;Gan;VRGN;-0.683;73.150;2 +Asia;Maldives;Male;VRMM;4.200;73.533;2 +Asia;Mongolia;Ulan-Bator;ZMUB;47.850;106.767;0 +Asia;Nepal;Bhairawa Airport;VNBW;27.517;83.450;109 +Asia;Nepal;Biratnagar Airport;VNVT;26.483;87.267;72 +Asia;Nepal;Jumla;VNJL;29.283;82.167;2300 +Asia;Nepal;Kathmandu Airport;VNKT;27.700;85.367;1337 +Asia;Nepal;Pokhara Airport;VNPK;28.217;84.000;827 +Asia;Nepal;Simra Airport;VNSI;27.167;84.983;137 +Asia;Nepal;Surkhet;VNSK;28.600;81.617;720 +Asia;Nepal;Taplejung;VNTJ;27.350;87.667;1732 Asia;Pakistan;Islamabad;OPRN;33.6167;73.1;508 Asia;Pakistan;Karachi;OPKC;24.9;67.1333;22 Asia;Pakistan;Lahore;OPLA;31.5167;74.4;217 @@ -199,6 +723,55 @@ Asia;Taiwan;Pingtung North;RCSQ;22.7;120.4833;0 Asia;Taiwan;Sungshan/Taipei;RCSS;25.0667;121.55;0 Asia;Taiwan;Wuchia Observatory;RCMQ;24.2667;120.6167;203 +Asia;Thailand;Chaiyaphum;VTUC;15.800;102.033;182 +Asia;Thailand;Chanthaburi;VTBC;12.600;102.117;3 +Asia;Thailand;Chiang Mai;VTCC;18.783;98.983;312 +Asia;Thailand;Chiang Rai;VTCR;19.917;99.833;394 +Asia;Thailand;Chon Buri;VTBS;13.367;100.983;1 +Asia;Thailand;Chumphon;VTSD;10.483;99.183;3 +Asia;Thailand;Don Muang;VTBD;13.917;100.600;4 +Asia;Thailand;Hat Yai;VTSS;6.917;100.433;27 +Asia;Thailand;Hua Hin;VTPH;12.583;99.950;5 +Asia;Thailand;Kanchanaburi;VTBG;14.017;99.533;28 +Asia;Thailand;Khon Kaen;VTUK;16.433;102.833;165 +Asia;Thailand;Lampang;VTCL;18.283;99.517;241 +Asia;Thailand;Loei;VTUL;17.450;101.733;253 +Asia;Thailand;Mae Hong Son;VTCH;19.300;97.833;267 +Asia;Thailand;Mae Sariang;VTCS;18.167;97.933;212 +Asia;Thailand;Mae Sot;VTPM;16.667;98.550;196 +Asia;Thailand;Mukdahan;VTUB;16.533;104.717;138 +Asia;Thailand;Nakhon Phanom;VTUP;17.417;104.783;146 +Asia;Thailand;Nakhon Ratchasima;VTUN;14.967;102.083;187 +Asia;Thailand;Nakhon Sawan;VTPN;15.800;100.167;34 +Asia;Thailand;Nakhon Si Thammarat;VTSN;8.467;99.967;7 +Asia;Thailand;Nan;VTCN;18.767;100.767;200 +Asia;Thailand;Nong Khai;VTUM;17.867;102.717;174 +Asia;Thailand;Pattani;VTSK;6.783;101.150;5 +Asia;Thailand;Phetchaburi;VTBJ;13.150;100.067;2 +Asia;Thailand;Phitsanulok;VTPS;16.783;100.267;44 +Asia;Thailand;Phrae;VTCP;18.167;100.167;161 +Asia;Thailand;Phuket Airport;VTSP;8.117;98.317;6 +Asia;Thailand;Prachin Buri;VTBI;14.050;101.367;5 +Asia;Thailand;Prachuap Khirikhan;VTBP;11.833;99.833;4 +Asia;Thailand;Ranong;VTSR;9.983;98.617;7 +Asia;Thailand;Rayong;VTBU;12.633;101.350;3 +Asia;Thailand;Roi Et;VTUR;16.050;103.683;140 +Asia;Thailand;Sakon Nakhon;VTUS;17.150;104.133;171 +Asia;Thailand;Satun;VTSA;6.650;100.083;4 +Asia;Thailand;Songkhla;VTSH;7.200;100.600;4 +Asia;Thailand;Surat Thani;VTSB;9.117;99.350;10 +Asia;Thailand;Tak;VTPT;16.883;99.150;121 +Asia;Thailand;Trang;VTST;7.517;99.617;14 +Asia;Thailand;Ubon Ratchathani;VTUU;15.250;104.867;123 +Asia;Thailand;Udon Thani;VTUD;17.383;102.800;177 +Asia;Thailand;Uttaradit;VTPU;17.617;100.100;63 +Asia;Uzbekistan;Dzizak;UTED;40.117;67.833;345 +Asia;Uzbekistan;Nukus / Karakalpakstan;UTNN;42.480;59.630;0 +Asia;Uzbekistan;Samarkand;UTSS;39.567;66.950;724 +Asia;Uzbekistan;Tamdy;UTSM;41.733;64.617;238 +Asia;Uzbekistan;Tashkent;UTTT;41.267;69.267;489 +Asia;Uzbekistan;Termez;UTST;37.233;67.267;302 +Asia;Uzbekistan;Urgench;UTNU;41.583;60.645;98 Asia;Viet Nam;Da Nang;VVDN;16.0333;108.1833;7 Asia;Viet Nam;Ha Noi;VVNB;21.0167;105.8;6 Asia;Viet Nam;Ho Chi Minh;VVTS;10.8167;106.6667;19 @@ -224,6 +797,26 @@ Australasia;Australia;Port Hedland;YPPD;-20.1;119.5667;10 Australasia;Australia;Sydney;YSSY;-33.95;151.1833;3 Australasia;Australia;Townsville;YBTL;-19.25;146.75;9 +Australasia;Brunei;Brunei Airport;WBSB;4.933;114.933;22 +Australasia;Christmas Island;Christmas Island Aerodrome;YPXM;-10.433;105.683;279 +Australasia;Christmas Island;Cocos Island Airport;YPCC;-12.183;96.817;3 +Australasia;Cook Islands;Alofi / Niue;NIUE;-19.067;-169.917;20 +Australasia;Cook Islands;Rarotonga;NCRG;-21.200;-159.817;7 +Australasia;East Timor;Baucau;WPEC;-8.500;126.400;522 +Australasia;East Timor;Dilli / Dilli Airport;WPDL;-8.567;125.567;6 +Australasia;East Timor;Oe-Cusse / Oe Cusse;WPOC;-9.200;124.367;5 +Australasia;Fiji;Lakemba;NFNK;-18.233;-178.800;2 +Australasia;Fiji;Nandi;NFFN;-17.750;177.450;13 +Australasia;Fiji;Nausori;NFNA;-18.050;178.567;5 +Australasia;Fiji;Rotuma;NFNR;-12.500;177.050;26 +Australasia;France;Hihifo Ile Wallis ;NLWW;-13.233;-176.167;23 +Australasia;France;Maopoopo Ile Futuna ;NLWF;-14.317;-178.117;6 +Australasia;French Polynesia;Bora-Bora;NTTB;-16.450;-151.750;4 +Australasia;French Polynesia;Hao;NTTO;-18.067;-140.950;2 +Australasia;French Polynesia;Mururoa;NTTX;-21.817;-138.800;2 +Australasia;French Polynesia;Rangiroa / Tuamoto Island;NTTG;-14.967;-147.667;3 +Australasia;French Polynesia;Tahiti-Faaa;NTAA;-17.550;-149.617;2 +Australasia;French Polynesia;Tubuai;NTAT;-23.350;-149.483;2 Australasia;Indonesia;Alor / Mali;WRKM;-8.217;124.567;12 Australasia;Indonesia;Amahai;WAPA;-3.350;128.883;10 Australasia;Indonesia;Ambon / Pattimura;WAPP;-3.700;128.083;12 @@ -341,9 +934,32 @@ Australasia;Malaysia;Sitiawan;WMBA;4.217;100.700;7 Australasia;Malaysia;Subang/Sultan Abdul Aziz Shah Airport;WMSA;3.117;101.533;27 Australasia;Malaysia;Tawau;WBKW;4.267;117.883;18 +Australasia;Marshall Islands;Kwajalein, Bucholz AAF, Kwajalein KMR ATOL Airport;PKWA;8.717;167.733;3 +Australasia;Marshall Islands;Majuro Atoll, Marshall Islands Int. Airp.;PKMJ;7.067;171.283;2 +Australasia;Marshall Islands;Majuro Atoll, NWS Office;PKMR;7.083;171.200;4 +Australasia;Micronesia, Federated States of;Kosrae Carolines / V;PTTK;5.350;162.950;2 +Australasia;Micronesia, Federated States of;Kosrae Island, Kosrae Airport;PTSA;5.350;162.950;3 +Australasia;Micronesia, Federated States of;Pohnpei Island, Pohnpei Int. Airp.;PTPN;6.983;158.200;2 +Australasia;Micronesia, Federated States of;Pohnpei, NWS Office;PTTP;6.967;158.217;39 +Australasia;Micronesia, Federated States of;Weno Island, Chuuk Int. Airp.;PTKK;7.467;151.850;3 +Australasia;Micronesia, Federated States of;Yap Island, Yap Int. Airp.;PTYA;9.483;138.083;28 +Australasia;Nauru;Nauru Airport;ANAU;-0.533;166.917;6 +Australasia;New Caledonia;Koumac Nlle-Caledonie ;NWWK;-20.567;164.283;23 +Australasia;New Caledonia;La Roche Ile Mare ;NWWR;-21.483;168.033;43 +Australasia;New Caledonia;La Tontouta Nlle-Caledonie ;NWWW;-22.017;166.217;16 +Australasia;New Caledonia;Moue Ile Des Pins ;NWWE;-22.600;167.450;96 +Australasia;New Caledonia;Noumea Nlle-Caledonie ;NWWN;-22.267;166.450;69 +Australasia;New Caledonia;Ouanaham Ile Lifou ;NWWL;-20.767;167.233;28 +Australasia;New Caledonia;Ouloup Ile Ouvea ;NWWV;-20.650;166.583;7 Australasia;New Zealand;Auckland;NZAA;-37.0167;174.8;6 Australasia;New Zealand;Christchurch;NZCH;-43.4833;172.55;30 Australasia;New Zealand;Wellington;NZWN;-41.3333;174.8;8 +Australasia;Palau;Babelthuap Island, Babelthuap/Koror Airport;PTRO;7.367;134.533;54 +Australasia;Palau;Koror, Palau, NWS Office;PTKR;7.333;134.483;30 +Australasia;Papua New Guinea;Madang;AYMD;-5.217;145.783;3 +Australasia;Papua New Guinea;Manus Island/Momote;AYMO;-2.062;147.424;4 +Australasia;Papua New Guinea;Moresby;AYPY;-9.433;147.217;38 +Australasia;Papua New Guinea;Wewak;AYWK;-3.567;143.633;6 Australasia;Philippines;Alabat;RPXT;14.083;122.017;4 Australasia;Philippines;Aparri;RPUA;18.367;121.633;2 Australasia;Philippines;Baguio;RPUB;16.417;120.600;1500 @@ -385,6 +1001,19 @@ Australasia;Philippines;Vigan;RPUQ;17.567;120.383;31 Australasia;Philippines;Virac;RPUV;13.583;124.233;39 Australasia;Philippines;Zamboanga;RPMZ;6.900;122.067;5 +Australasia;Samoa;Apia / Upolu Island;NSAP;-13.800;-171.783;2 +Australasia;Samoa;Faleolo Intl / Apia;NSFA;-13.817;-172.000;5 +Australasia;Solomon Islands;Honiara / Henderson;AGGH;-9.417;160.050;8 +Australasia;Solomon Islands;Munda;AGGM;-8.333;157.267;6 +Australasia;Solomon Islands;Santa Cruz;AGGL;-10.700;165.800;23 +Australasia;Tonga;Fua'Amotu;NFTF;-21.233;-175.150;38 +Australasia;Tonga;Haapai;NFTL;-19.800;-174.350;2 +Australasia;Tuvalu;Funafuti;NGFU;-8.517;179.217;1 +Australasia;Tuvalu;Nanumea;NGFO;-5.667;176.133;2 +Australasia;Vanuatu;Bauerfield Efate ;NVVV;-17.700;168.300;20 +Australasia;Vanuatu;Lamap Malekula ;NVSL;-16.417;167.800;26 +Australasia;Vanuatu;Pekoa Airport Santo ;NVSS;-15.517;167.217;41 +Australasia;Vanuatu;Sola Vanua Lava ;NVSC;-13.850;167.550;17 Canada;Alberta;Calgary;CYYC;51.1167;-114.0167;1084 Canada;Alberta;Edmonton;CYEG;53.3;-113.5833;723 Canada;British Columbia;Abbotsford;CYXX;49.0333;-122.3667;58 @@ -675,6 +1304,7 @@ Central and South America;Venezuela;San Fernando De Apure;SVSR;7.9;-67.4167;48 Central and South America;Venezuela;Valera*;SVVL;9.35;-70.6167;582 Europe;Albania;Tirana;LATI;41.3333;19.7833;90 +Europe;Armenia;Yerevan;UGEE;40.133;44.467;890 Europe;Austria;Graz;LOWG;47;15.4333;347 Europe;Austria;Hohenems;LOIH;47.3833;9.7006;0 Europe;Austria;Innsbruck;LOWI;47.2667;11.35;593 @@ -684,6 +1314,12 @@ Europe;Austria;Voslau;LOAV;47.95;16.2594;0 Europe;Austria;Wien;LOWW;48.1167;16.5667;190 Europe;Austria;Zell Am See;LOWZ;47.2833;12.7875;0 +Europe;Belarus;Brest;UMBB;52.108;23.897;143 +Europe;Belarus;Gomel';UMGG;52.527;31.018;144 +Europe;Belarus;Grodno;UMMG;53.602;24.055;135 +Europe;Belarus;Loshitsa / Minsk International 1;UMMM;53.865;27.542;228 +Europe;Belarus;Minsk;UMMS;53.933;27.633;234 +Europe;Belarus;Vitebsk;UMII;55.167;30.217;176 Europe;Belgium;Antwerpen/Deurne;EBAW;51.2;4.4667;14 Europe;Belgium;Beauvechain;EBBE;50.75;4.7667;127 Europe;Belgium;Brasschaat;EBBT;51.3333;4.5;23 @@ -809,8 +1445,8 @@ Europe;France;Troyes/Barberey;LFQB;48.3333;4.0167;118 Europe;France;Vichy-Charmeil;LFLV;46.1667;3.4;251 Europe;France;Villacoublay;LFPV;48.7667;2.2;179 -Europe;FYR Macedonia;Ohrid;LWOH;41.1167;20.8;761 -Europe;FYR Macedonia;Skopje;LWSK;41.9667;21.65;239 +Europe;Georgia;Muhrani;UGMM;41.933;44.583;551 +Europe;Georgia;Tbilisi;UGGG;41.683;44.950;467 Europe;Germany;Augsburg;EDMA;48.4333;10.9333;463 Europe;Germany;Bayreuth;EDQD;49.9833;11.6333;498 Europe;Germany;Berlin-Tegel;EDDT;52.5667;13.3167;37 @@ -959,6 +1595,8 @@ Europe;Lithuania;Siauliai Intl./Mil.;EYSA;55.883;23.383;135 Europe;Lithuania;Vilnius;EYVI;54.633;25.100;162 Europe;Luxembourg;Luxembourg;ELLX;49.6167;6.2167;379 +Europe;Macedonia, The Republic of;Ohrid;LWOH;41.117;20.800;760 +Europe;Macedonia, The Republic of;Skopje-Petrovec;LWSK;41.967;21.650;238 Europe;Malta;Luqa;LMML;35.85;14.4833;91 Europe;Moldova;Kishineu;LUKK;46.9167;28.9308;0 Europe;Netherlands;Amsterdam;EHAM;52.3;4.7667;:2 @@ -1091,6 +1729,15 @@ Europe;Russia;Yakutsk;UEEE;62.0167;129.7167;101 Europe;Russia;Yekaterinburg;USSS;56.8333;60.6333;283 Europe;Russia;Yuzhno-Sakhalinsk;UHSS;46.95;142.7167;24 +Europe;Serbia and Montenegro;Beograd / Surcin;LYBE;44.817;20.283;96 +Europe;Serbia and Montenegro;Bihac;LQBI;44.817;15.883;250 +Europe;Serbia and Montenegro;Camp Bondsteel;KQUK;42.583;21.383;592 +Europe;Serbia and Montenegro;Nis;LYNI;43.333;21.900;202 +Europe;Serbia and Montenegro;Podgorica / Golubovci;LYTI;42.367;19.250;33 +Europe;Serbia and Montenegro;Podgorica Titograd ;LYPG;42.433;19.283;53 +Europe;Serbia and Montenegro;Pristina;LYPR;42.567;21.033;545 +Europe;Serbia and Montenegro;Tivat;LYTV;42.400;18.733;5 +Europe;Serbia and Montenegro;Vrsac;LYVR;45.150;21.317;83 Europe;Slovakia;Bratislava;LZIB;48.2;17.2;142 Europe;Slovakia;Poprad;LZTT;49.0667;20.25;695 Europe;Slovenia;Ljubljana;LJLJ;46.2167;14.4833;362 @@ -1247,64 +1894,64 @@ Europe;Yugoslavia;Nis;LYNI;43.3333;21.9;202 Europe;Yugoslavia;Podgorica;LYPG;42.4333;19.2833;0 Europe;Yugoslavia;Pristina;LYPR;42.65;21.15;576 -Mexico;Mexico;Acapulco;MMAA;16.7667;-99.75;0 -Mexico;Mexico;Aeropuerto del Norte;MMAN;25.8667;-100.2333;450 -Mexico;Mexico;Aguascaliantes;MMAS;21.8833;-102.3;0 -Mexico;Mexico;Bahias de Huatulco;MMBT;15.7833;-96.2667;0 -Mexico;Mexico;Campeche;MMCP;19.85;-90.55;0 -Mexico;Mexico;Cancun;MMUN;21.0333;-86.8667;0 -Mexico;Mexico;Chetumal;MMCM;18.4833;-88.3;0 -Mexico;Mexico;Chihuahua;MMCU;28.7;-105.9667;0 -Mexico;Mexico;Ciudad del Carmen;MMCE;18.65;-91.8;0 -Mexico;Mexico;Ciudad Juarez;MMCS;31.6333;-106.4333;0 -Mexico;Mexico;Ciudad Obregon;MMCN;27.3167;-112.3;0 -Mexico;Mexico;Ciudad Victoria;MMCV;23.7167;-98.9667;0 -Mexico;Mexico;Colima;MMIA;19.2667;-103.5833;0 -Mexico;Mexico;Cozumel;MMCZ;20.5333;-86.9333;0 -Mexico;Mexico;Cuernavaca;MMCB;18.8833;-99.2333;0 -Mexico;Mexico;Culiacan;MMCL;24.8167;-107.4;0 -Mexico;Mexico;Del Bajio;MMLO;21;-101.4833;0 -Mexico;Mexico;Durango;MMDO;24.1333;-104.5333;0 -Mexico;Mexico;Guadalajara;MMGL;20.5167;-103.3167;0 -Mexico;Mexico;Guaymas;MMGM;27.9667;-110.9333;0 -Mexico;Mexico;Hermosillo;MMHO;29.0667;-110.95;0 -Mexico;Mexico;Ixtapa;MMZH;17.6;-101.4667;0 -Mexico;Mexico;La Paz;MMLP;24.0667;-110.3667;0 -Mexico;Mexico;Los Mochis;MMLM;25.6833;-109.0833;0 -Mexico;Mexico;Manzanillo;MMZO;19.15;-104.5667;0 -Mexico;Mexico;Matamoros;MMMA;25.7667;-97.5333;0 -Mexico;Mexico;Mazatlan;MMMZ;23.1667;-106.2667;0 -Mexico;Mexico;Merida;MMMD;20.9833;-89.65;11 -Mexico;Mexico;Mexicali;MMML;32.6333;-117;0 -Mexico;Mexico;Mexico;MMMX;19.4333;-99.1;0 -Mexico;Mexico;Minatitlan;MMMT;18.1;-94.5833;0 -Mexico;Mexico;Monclova;MMMV;26.8833;-101.4167;586 -Mexico;Mexico;Monterrey;MMMY;25.7833;-100.1;0 -Mexico;Mexico;Morelia;MMMM;19.85;-101.0333;0 -Mexico;Mexico;Nuevo Laredo;MMNL;27.4333;-99.5667;0 -Mexico;Mexico;Oaxaca;MMOX;16.9667;-96.7333;0 -Mexico;Mexico;Piedras Negras;MMPG;28.7;-100.5167;0 -Mexico;Mexico;Poza Rica;MMPA;20.5167;-97.4667;0 -Mexico;Mexico;Puebla;MMPB;19.05;-98.1667;0 -Mexico;Mexico;Puerto Escondido;MMPS;15.8667;-97.0833;0 -Mexico;Mexico;Puerto Vallarta;MMPR;20.6833;-105.25;0 -Mexico;Mexico;Queretaro;MMQT;20.6;-100.3833;0 -Mexico;Mexico;Reynosa;MMRX;26.0167;-98.2333;0 -Mexico;Mexico;Saltillo;MMIO;25.45;-100.9833;0 -Mexico;Mexico;San Jose del Cabo;MMSD;23.15;-109.7;0 -Mexico;Mexico;San Luis Potosi;MMSP;22.15;-100.9833;0 -Mexico;Mexico;Tampico;MMTM;22.2833;-97.8667;0 -Mexico;Mexico;Tapachula;MMTP;14.7833;-92.3833;0 -Mexico;Mexico;Tepic;MMEP;21.5167;-104.9;0 -Mexico;Mexico;Tijuana;MMTJ;32.55;-116.9667;0 +Mexico;Aguascaliantes;Aguascaliantes;MMAS;21.8833;-102.3;0 +Mexico;Baja California;Mexicali;MMML;32.6333;-117;0 +Mexico;Baja California;Tijuana;MMTJ;32.55;-116.9667;0 +Mexico;Baja California Sur;La Paz;MMLP;24.0667;-110.3667;0 +Mexico;Baja California Sur;San Jose del Cabo;MMSD;23.15;-109.7;0 +Mexico;Campeche;Campeche;MMCP;19.85;-90.55;0 +Mexico;Campeche;Ciudad del Carmen;MMCE;18.65;-91.8;0 +Mexico;Chiapas;Tapachula;MMTP;14.7833;-92.3833;0 +Mexico;Chiapas;Tuxtla Gutierrez;MMTG;16.75;-93.1167;0 +Mexico;Chihuahua;Chihuahua;MMCU;28.7;-105.9667;0 +Mexico;Chihuahua;Ciudad Juarez;MMCS;31.6333;-106.4333;0 +Mexico;Coahuila;Monclova;MMMV;26.8833;-101.4167;586 +Mexico;Coahuila;Piedras Negras;MMPG;28.7;-100.5167;0 +Mexico;Coahuila;Saltillo;MMIO;25.45;-100.9833;0 +Mexico;Coahuila;Torreon;MMTC;25.5333;-103.45;1150 +Mexico;Colima;Colima;MMIA;19.2667;-103.5833;0 +Mexico;Colima;Manzanillo;MMZO;19.15;-104.5667;0 +Mexico;Culiacan;Culiacan;MMCL;24.8167;-107.4;0 +Mexico;Distrito Federal;Mexico;MMMX;19.4333;-99.1;0 +Mexico;Durango;Durango;MMDO;24.1333;-104.5333;0 +Mexico;Guanajuato;Del Bajio;MMLO;21;-101.4833;0 +Mexico;Guerrero;Acapulco;MMAA;16.7667;-99.75;0 +Mexico;Guerrero;Ixtapa;MMZH;17.6;-101.4667;0 +Mexico;Hidalgo;Tulancingo;MMTL;20.0833;-98.3667;0 +Mexico;Jalisco;Guadalajara;MMGL;20.5167;-103.3167;0 +Mexico;Jalisco;Puerto Vallarta;MMPR;20.6833;-105.25;0 Mexico;Mexico;Toluca;MMTO;19.35;-99.5667;0 -Mexico;Mexico;Torreon;MMTC;25.5333;-103.45;1150 -Mexico;Mexico;Tulancingo;MMTL;20.0833;-98.3667;0 -Mexico;Mexico;Tuxtla Gutierrez;MMTG;16.75;-93.1167;0 -Mexico;Mexico;Uruapan;MMPN;19.4;-102.0333;0 -Mexico;Mexico;Veracruz;MMVR;19.15;-96.1833;0 -Mexico;Mexico;Villahermosa;MMVA;18;-92.8167;0 -Mexico;Mexico;Zacatecas;MMZC;22.9;-102.6833;0 +Mexico;Michoacan;Morelia;MMMM;19.85;-101.0333;0 +Mexico;Michoacan;Uruapan;MMPN;19.4;-102.0333;0 +Mexico;Morelos;Cuernavaca;MMCB;18.8833;-99.2333;0 +Mexico;Nayarit;Tepic;MMEP;21.5167;-104.9;0 +Mexico;Nuevo Leon;Aeropuerto del Norte;MMAN;25.8667;-100.2333;450 +Mexico;Nuevo Leon;Monterrey;MMMY;25.7833;-100.1;0 +Mexico;Oaxaca;Bahias de Huatulco;MMBT;15.7833;-96.2667;0 +Mexico;Oaxaca;Oaxaca;MMOX;16.9667;-96.7333;0 +Mexico;Oaxaca;Puerto Escondido;MMPS;15.8667;-97.0833;0 +Mexico;Puebla;Puebla;MMPB;19.05;-98.1667;0 +Mexico;Queretaro;Queretaro;MMQT;20.6;-100.3833;0 +Mexico;Quintana-Roo;Cancun;MMUN;21.0333;-86.8667;0 +Mexico;Quintana-Roo;Chetumal;MMCM;18.4833;-88.3;0 +Mexico;Quintana-Roo;Cozumel;MMCZ;20.5333;-86.9333;0 +Mexico;San Luis Potosi;San Luis Potosi;MMSP;22.15;-100.9833;0 +Mexico;Sinaloa;Los Mochis;MMLM;25.6833;-109.0833;0 +Mexico;Sinaloa;Mazatlan;MMMZ;23.1667;-106.2667;0 +Mexico;Sonora;Ciudad Obregon;MMCN;27.3167;-112.3;0 +Mexico;Sonora;Guaymas;MMGM;27.9667;-110.9333;0 +Mexico;Sonora;Hermosillo;MMHO;29.0667;-110.95;0 +Mexico;Tabasco;Villahermosa;MMVA;18;-92.8167;0 +Mexico;Tamaulipas;Ciudad Victoria;MMCV;23.7167;-98.9667;0 +Mexico;Tamaulipas;Matamoros;MMMA;25.7667;-97.5333;0 +Mexico;Tamaulipas;Nuevo Laredo;MMNL;27.4333;-99.5667;0 +Mexico;Tamaulipas;Reynosa;MMRX;26.0167;-98.2333;0 +Mexico;Tamaulipas;Tampico;MMTM;22.2833;-97.8667;0 +Mexico;Veracruz;Minatitlan;MMMT;18.1;-94.5833;0 +Mexico;Veracruz;Poza Rica;MMPA;20.5167;-97.4667;0 +Mexico;Veracruz;Veracruz;MMVR;19.15;-96.1833;0 +Mexico;Yucatan;Merida;MMMD;20.9833;-89.65;11 +Mexico;Zacatecas;Zacatecas;MMZC;22.9;-102.6833;0 Middle East;Algeria;Adrar;DAUA;27.8833;-0.2833;263 Middle East;Algeria;Annaba;DABB;36.8333;7.8167;4 Middle East;Algeria;Constantine;DABC;36.2833;6.6167;694 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2010-11-26 00:48:16
|
Revision: 722 http://gpredict.svn.sourceforge.net/gpredict/?rev=722&view=rev Author: aa1vs Date: 2010-11-26 00:48:09 +0000 (Fri, 26 Nov 2010) Log Message: ----------- Move rotor to end of pass if below horizon and after current pass Modified Paths: -------------- trunk/src/gtk-rot-ctrl.c Modified: trunk/src/gtk-rot-ctrl.c =================================================================== --- trunk/src/gtk-rot-ctrl.c 2010-11-24 20:47:25 UTC (rev 721) +++ trunk/src/gtk-rot-ctrl.c 2010-11-26 00:48:09 UTC (rev 722) @@ -870,6 +870,8 @@ gdouble setaz,setel; gchar *text; gboolean error = FALSE; + gboolean update_flag=FALSE; + sat_t sat_working, *sat; if (g_static_mutex_trylock(&(ctrl->busy))==FALSE) { @@ -881,34 +883,29 @@ range, set the rotor position controller knob values to the target values. If the target satellite is out of range set the rotor controller to 0 deg El and to the Az where the - target sat is expected to come up + target sat is expected to come up or where it last went down */ if (ctrl->tracking && ctrl->target) { if (ctrl->target->el < 0.0) { - gdouble aosaz = 0.0; - gdouble aosel = 0.0; - if (ctrl->pass != NULL) { - aosaz = ctrl->pass->aos_az; - /* if this is a flipped pass and the rotor supports it*/ - if ((ctrl->flipped)&&(ctrl->conf->maxel>=180.0)){ - aosel=180; - if (aosaz>180) - aosaz-=180; - else - aosaz+=180; + if (ctrl->t < ctrl->pass->aos) { + setaz=ctrl->pass->aos_az; + setel=0; + update_flag=TRUE; + } else if (ctrl->t > ctrl->pass->los) { + setaz=ctrl->pass->los_az; + setel=0; + update_flag=TRUE; } - - if ((ctrl->conf->aztype == ROT_AZ_TYPE_180) && (aosaz > 180.0)) { - aosaz -= 360.0; - } } - gtk_rot_knob_set_value (GTK_ROT_KNOB (ctrl->AzSet), aosaz); - gtk_rot_knob_set_value (GTK_ROT_KNOB (ctrl->ElSet), aosel); } - else { + else { setaz=ctrl->target->az; setel=ctrl->target->el; + update_flag=TRUE; + } + if (update_flag){ + /* if this is a flipped pass and the rotor supports it*/ if ((ctrl->flipped)&&(ctrl->conf->maxel>=180.0)){ setel=180-setel; if (setaz>180) @@ -916,17 +913,15 @@ else setaz+=180; } - - if ((ctrl->conf->aztype == ROT_AZ_TYPE_180) && - (setaz > 180.0)) { + + if ((ctrl->conf->aztype == ROT_AZ_TYPE_180) && (setaz > 180.0)) { gtk_rot_knob_set_value (GTK_ROT_KNOB (ctrl->AzSet), setaz- 360.0); } else { gtk_rot_knob_set_value (GTK_ROT_KNOB (ctrl->AzSet), setaz); } - gtk_rot_knob_set_value (GTK_ROT_KNOB (ctrl->ElSet), setel); + gtk_rot_knob_set_value (GTK_ROT_KNOB (ctrl->ElSet), setel); } - } if ((ctrl->engaged) && (ctrl->conf != NULL)) { @@ -962,6 +957,7 @@ setel = gtk_rot_knob_get_value (GTK_ROT_KNOB (ctrl->ElSet)); if ((fabs(setaz-rotaz) > ctrl->tolerance) || (fabs(setel-rotel) > ctrl->tolerance)) { + /* send controller values to rotator device */ if (!set_pos (ctrl, setaz, setel)) { error = TRUE; @@ -1310,9 +1306,9 @@ size = strlen(buff); - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s:%s: Sending %d bytes as %s."), - __FILE__, __FUNCTION__, size, buff); + //sat_log_log (SAT_LOG_LEVEL_DEBUG, + // _("%s:%s: Sending %d bytes as %s."), + // __FILE__, __FUNCTION__, size, buff); /* send command */ @@ -1346,9 +1342,9 @@ __FILE__, __FUNCTION__); } else { - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s:%s: Read %d bytes as %s from rotctld"), - __FILE__, __FUNCTION__, size, buffout); + //sat_log_log (SAT_LOG_LEVEL_DEBUG, + // _("%s:%s: Read %d bytes as %s from rotctld"), + // __FILE__, __FUNCTION__, size, buffout); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2010-11-24 20:47:34
|
Revision: 721 http://gpredict.svn.sourceforge.net/gpredict/?rev=721&view=rev Author: csete Date: 2010-11-24 20:47:25 +0000 (Wed, 24 Nov 2010) Log Message: ----------- Fixed PACKAGE_LOCALE_DIR. Modified Paths: -------------- trunk/ChangeLog trunk/src/Makefile.am Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-11-24 03:17:59 UTC (rev 720) +++ trunk/ChangeLog 2010-11-24 20:47:25 UTC (rev 721) @@ -1,3 +1,9 @@ +2010-11-24 Alexandru Csete <oz9aec at gmail.com> + + * src/Makefile.am: + Fixed PACKAGE_OCALE_DIR. + + 2010-11-23 Charles Suprin <hamaa1vs at gmail.com> * src/gtk-rot-ctrl.c Modified: trunk/src/Makefile.am =================================================================== --- trunk/src/Makefile.am 2010-11-24 03:17:59 UTC (rev 720) +++ trunk/src/Makefile.am 2010-11-24 20:47:25 UTC (rev 721) @@ -7,7 +7,7 @@ -DDATADIR=\""$(datadir)"\" \ -DPACKAGE_DATA_DIR=\""$(datadir)/gpredict"\" \ -DPACKAGE_PIXMAPS_DIR=\""$(datadir)/pixmaps/gpredict"\" \ - -DPACKAGE_LOCALE_DIR=\""$(prefix)/locale"\" + -DPACKAGE_LOCALE_DIR=\""$(prefix)/share/locale"\" ## We have to disable these for now because GtkTooltips have been ## deprecated in Gtk+ 2.12 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2010-11-24 03:18:10
|
Revision: 720 http://gpredict.svn.sourceforge.net/gpredict/?rev=720&view=rev Author: aa1vs Date: 2010-11-24 03:17:59 +0000 (Wed, 24 Nov 2010) Log Message: ----------- Finish socket closing in gtk-rig-ctrl.c Modified Paths: -------------- trunk/src/gtk-rig-ctrl.c Modified: trunk/src/gtk-rig-ctrl.c =================================================================== --- trunk/src/gtk-rig-ctrl.c 2010-11-23 14:39:01 UTC (rev 719) +++ trunk/src/gtk-rig-ctrl.c 2010-11-24 03:17:59 UTC (rev 720) @@ -2744,7 +2744,9 @@ #endif close (*sock); - + + *sock = 0; + return TRUE; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2010-11-23 14:39:07
|
Revision: 719 http://gpredict.svn.sourceforge.net/gpredict/?rev=719&view=rev Author: aa1vs Date: 2010-11-23 14:39:01 +0000 (Tue, 23 Nov 2010) Log Message: ----------- Update ChangeLog Modified Paths: -------------- trunk/ChangeLog Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-11-23 14:31:21 UTC (rev 718) +++ trunk/ChangeLog 2010-11-23 14:39:01 UTC (rev 719) @@ -1,3 +1,14 @@ +2010-11-23 Charles Suprin <hamaa1vs at gmail.com> + + * src/gtk-rot-ctrl.c + * src/gtk-rig-ctrl.c + Close socket in gtk-rig/rot-ctrl when window closes if applicable. + +2010-11-11 Charles Suprin <hamaa1vs at gmail.com> + + * src/gtk-rot-ctrl.c + Change error checking in set_pos + 2010-11-07 Charles Suprin <hamaa1vs at gmail.com> * src/gtk-rot-ctrl.c This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2010-11-23 14:31:27
|
Revision: 718 http://gpredict.svn.sourceforge.net/gpredict/?rev=718&view=rev Author: aa1vs Date: 2010-11-23 14:31:21 +0000 (Tue, 23 Nov 2010) Log Message: ----------- Close socket in gtk-rig-ctrl when window closes if applicable Modified Paths: -------------- trunk/src/gtk-rig-ctrl.c Modified: trunk/src/gtk-rig-ctrl.c =================================================================== --- trunk/src/gtk-rig-ctrl.c 2010-11-23 13:23:27 UTC (rev 717) +++ trunk/src/gtk-rig-ctrl.c 2010-11-23 14:31:21 UTC (rev 718) @@ -120,7 +120,7 @@ static gboolean set_vfo (GtkRigCtrl *ctrl, vfo_t vfo); static void update_count_down (GtkRigCtrl *ctrl, gdouble t); static gboolean open_rigctld_socket(radio_conf_t *conf, gint *sock); -static gboolean close_rigctld_socket(gint sock); +static gboolean close_rigctld_socket(gint *sock); /* misc utility functions */ static void load_trsp_list (GtkRigCtrl *ctrl); @@ -205,6 +205,8 @@ ctrl->trsplist = NULL; ctrl->trsplock = FALSE; ctrl->tracking = FALSE; + ctrl->sock = 0; + ctrl->sock2 = 0; g_static_mutex_init(&(ctrl->busy)); ctrl->engaged = FALSE; ctrl->delay = 1000; @@ -243,6 +245,11 @@ ctrl->trsplist = NULL; /* destroy might be called twice (?) so we need to NULL it */ } + /* close sockets if they are open*/ + if (ctrl->sock) + close_rigctld_socket(&(ctrl->sock)); + if (ctrl->sock2) + close_rigctld_socket(&(ctrl->sock2)); (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); } @@ -1204,9 +1211,9 @@ if (ctrl->conf2 != NULL) { - close_rigctld_socket(ctrl->sock2); + close_rigctld_socket(&(ctrl->sock2)); } - close_rigctld_socket(ctrl->sock); + close_rigctld_socket(&(ctrl->sock)); } @@ -2692,6 +2699,7 @@ sat_log_log (SAT_LOG_LEVEL_ERROR, _("%s: Failed to create socket"), __FUNCTION__); + *sock = 0; return FALSE; } else { @@ -2712,6 +2720,7 @@ sat_log_log (SAT_LOG_LEVEL_ERROR, _("%s: Failed to connect to %s:%d"), __FUNCTION__, conf->host, conf->port); + *sock = 0; return FALSE; } else { @@ -2723,18 +2732,18 @@ return TRUE; } -static gboolean close_rigctld_socket (gint sock) { +static gboolean close_rigctld_socket (gint *sock) { gint written; /*shutdown the rigctld connect*/ - written = send(sock, "q\x0a", 2, 0); + written = send(*sock, "q\x0a", 2, 0); #ifndef WIN32 - shutdown (sock, SHUT_RDWR); + shutdown (*sock, SHUT_RDWR); #else - shutdown (sock, SD_BOTH); + shutdown (*sock, SD_BOTH); #endif - close (sock); + close (*sock); return TRUE; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aa...@us...> - 2010-11-23 13:23:33
|
Revision: 717 http://gpredict.svn.sourceforge.net/gpredict/?rev=717&view=rev Author: aa1vs Date: 2010-11-23 13:23:27 +0000 (Tue, 23 Nov 2010) Log Message: ----------- Close socket in gtk-rot-ctrl when window closes if applicable Modified Paths: -------------- trunk/src/gtk-rot-ctrl.c Modified: trunk/src/gtk-rot-ctrl.c =================================================================== --- trunk/src/gtk-rot-ctrl.c 2010-11-21 20:51:31 UTC (rev 716) +++ trunk/src/gtk-rot-ctrl.c 2010-11-23 13:23:27 UTC (rev 717) @@ -90,8 +90,8 @@ static gboolean set_pos (GtkRotCtrl *ctrl, gdouble az, gdouble el); static gboolean send_rotctld_command(GtkRotCtrl *ctrl, gchar *buff, gchar *buffout, gint sizeout); -static gboolean open_rotctld_socket (GtkRotCtrl *ctrl, gint *sock); -static gboolean close_rotctld_socket (gint sock); +static gboolean open_rotctld_socket (GtkRotCtrl *ctrl); +static gboolean close_rotctld_socket (gint *sock); static gboolean have_conf (void); static gint sat_name_compare (sat_t* a,sat_t*b); @@ -166,7 +166,8 @@ ctrl->pass = NULL; ctrl->qth = NULL; ctrl->plot = NULL; - + ctrl->sock = 0; + ctrl->tracking = FALSE; g_static_mutex_init(&(ctrl->busy)); ctrl->engaged = FALSE; @@ -194,6 +195,11 @@ ctrl->conf = NULL; } + /*close the socket if it is still open*/ + if (ctrl->sock!=0) { + close_rotctld_socket(&(ctrl->sock)); + } + (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); } @@ -831,7 +837,7 @@ if (!gtk_toggle_button_get_active (button)) { gtk_widget_set_sensitive (ctrl->DevSel, TRUE); ctrl->engaged = FALSE; - close_rotctld_socket(ctrl->sock); + close_rotctld_socket(&(ctrl->sock)); gtk_label_set_text (GTK_LABEL (ctrl->AzRead), "---"); gtk_label_set_text (GTK_LABEL (ctrl->ElRead), "---"); } @@ -845,7 +851,7 @@ } gtk_widget_set_sensitive (ctrl->DevSel, FALSE); ctrl->engaged = TRUE; - open_rotctld_socket(ctrl,&(ctrl->sock)); + open_rotctld_socket(ctrl); ctrl->wrops = 0; ctrl->rdops = 0; } @@ -1230,7 +1236,7 @@ /** \brief open the rotcld socket. return true if successful false otherwise.*/ -static gboolean open_rotctld_socket (GtkRotCtrl * ctrl, gint *sock) { +static gboolean open_rotctld_socket (GtkRotCtrl * ctrl) { struct sockaddr_in ServAddr; struct hostent *h; gint status; @@ -1240,6 +1246,7 @@ sat_log_log (SAT_LOG_LEVEL_ERROR, _("%s: Failed to create socket"), __FUNCTION__); + ctrl->sock = 0; return FALSE; } else { @@ -1260,6 +1267,7 @@ sat_log_log (SAT_LOG_LEVEL_ERROR, _("%s: Failed to connect to %s:%d"), __FUNCTION__, ctrl->conf->host, ctrl->conf->port); + ctrl->sock = 0; return FALSE; } else { @@ -1273,18 +1281,20 @@ /*close a rotcld socket. First send a q command to cleanly shut down rotctld*/ -static gboolean close_rotctld_socket (gint sock) { +static gboolean close_rotctld_socket (gint *sock) { gint written; /*shutdown the rigctld connect*/ - written = send(sock, "q\x0a", 2, 0); + written = send(*sock, "q\x0a", 2, 0); #ifndef WIN32 - shutdown (sock, SHUT_RDWR); + shutdown (*sock, SHUT_RDWR); #else - shutdown (sock, SD_BOTH); + shutdown (*sock, SD_BOTH); #endif - close (sock); + close (*sock); + + *sock=0; return TRUE; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |