[Gpredict-svn] SF.net SVN: gpredict:[97] trunk/src
Real time satellite tracking and orbit prediction
Status: Beta
Brought to you by:
csete
|
From: <cs...@us...> - 2008-09-07 10:16:30
|
Revision: 97
http://gpredict.svn.sourceforge.net/gpredict/?rev=97&view=rev
Author: csete
Date: 2008-09-07 10:16:41 +0000 (Sun, 07 Sep 2008)
Log Message:
-----------
Implemented AOS/LOS count down.
Modified Paths:
--------------
trunk/src/gtk-rig-ctrl.c
trunk/src/gtk-rot-ctrl.c
trunk/src/gtk-rot-ctrl.h
Modified: trunk/src/gtk-rig-ctrl.c
===================================================================
--- trunk/src/gtk-rig-ctrl.c 2008-09-06 23:58:53 UTC (rev 96)
+++ trunk/src/gtk-rig-ctrl.c 2008-09-07 10:16:41 UTC (rev 97)
@@ -81,7 +81,9 @@
static void rig_locked_cb (GtkToggleButton *button, gpointer data);
static gboolean rig_ctrl_timeout_cb (gpointer data);
static void set_freq (GtkRigCtrl *ctrl, gdouble freq);
+static void update_count_down (GtkRigCtrl *ctrl, gdouble t);
+
static GtkVBoxClass *parent_class = NULL;
static GdkColor ColBlack = { 0, 0, 0, 0};
@@ -255,6 +257,8 @@
gtk_label_set_text (GTK_LABEL (ctrl->SatEl), buff);
g_free (buff);
+ update_count_down (ctrl, t);
+
/* update range */
if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_IMPERIAL)) {
buff = g_strdup_printf ("%.0f mi", KM_TO_MI (ctrl->target->range));
@@ -404,7 +408,7 @@
gtk_table_attach_defaults (GTK_TABLE (table), ctrl->SatEl, 1, 2, 2, 3);
/* count down */
- label = gtk_label_new (_("Time:"));
+ label = gtk_label_new (_("\316\224T:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 3, 4);
ctrl->SatCnt = gtk_label_new ("00:00:00");
@@ -723,21 +727,6 @@
gtk_widget_set_sensitive (ctrl->DevSel, FALSE);
ctrl->engaged = TRUE;
-
-
-/* status = connect(ctrl->sock, (struct sockaddr *) &ServAddr, sizeof(ServAddr));
- if (status < 0) {
- sat_log_log (SAT_LOG_LEVEL_ERROR,
- _("%s: Failed to connect to %s:%d"),
- __FUNCTION__, ctrl->conf->host, ctrl->conf->port);
- return;
- }
- else {
- sat_log_log (SAT_LOG_LEVEL_DEBUG,
- _("%s: Connection opened to %s:%d"),
- __FUNCTION__, ctrl->conf->host, ctrl->conf->port);
- }
- */
}
}
@@ -858,3 +847,71 @@
close (sock);
}
+
+
+/** \brief Update count down label.
+ * \param[in] ctrl Pointer to the RigCtrl widget.
+ * \param[in] t The current time.
+ *
+ * This function calculates the new time to AOS/LOS of the currently
+ * selected target and updates the ctrl->SatCnt label widget.
+ */
+static void update_count_down (GtkRigCtrl *ctrl, gdouble t)
+{
+ gdouble targettime;
+ gdouble delta;
+ gchar *buff;
+ guint h,m,s;
+ gchar *ch,*cm,*cs;
+
+
+ /* select AOS or LOS time depending on target elevation */
+ if (ctrl->target->el < 0.0)
+ targettime = ctrl->target->aos;
+ else
+ targettime = ctrl->target->los;
+
+ delta = targettime - t;
+
+ /* convert julian date to seconds */
+ s = (guint) (delta * 86400);
+
+ /* extract hours */
+ h = (guint) floor (s/3600);
+ s -= 3600*h;
+
+ /* leading zero */
+ if ((h > 0) && (h < 10))
+ ch = g_strdup ("0");
+ else
+ ch = g_strdup ("");
+
+ /* extract minutes */
+ m = (guint) floor (s/60);
+ s -= 60*m;
+
+ /* leading zero */
+ if (m < 10)
+ cm = g_strdup ("0");
+ else
+ cm = g_strdup ("");
+
+ /* leading zero */
+ if (s < 10)
+ cs = g_strdup (":0");
+ else
+ cs = g_strdup (":");
+
+ if (h > 0)
+ buff = g_strdup_printf ("%s%d:%s%d%s%d", ch, h, cm, m, cs, s);
+ else
+ buff = g_strdup_printf ("%s%d%s%d", cm, m, cs, s);
+
+ gtk_label_set_text (GTK_LABEL (ctrl->SatCnt), buff);
+
+ g_free (buff);
+ g_free (ch);
+ g_free (cm);
+ g_free (cs);
+
+}
Modified: trunk/src/gtk-rot-ctrl.c
===================================================================
--- trunk/src/gtk-rot-ctrl.c 2008-09-06 23:58:53 UTC (rev 96)
+++ trunk/src/gtk-rot-ctrl.c 2008-09-07 10:16:41 UTC (rev 97)
@@ -71,6 +71,7 @@
static void rot_selected_cb (GtkComboBox *box, gpointer data);
static void rot_locked_cb (GtkToggleButton *button, gpointer data);
static gboolean rot_ctrl_timeout_cb (gpointer data);
+static void update_count_down (GtkRotCtrl *ctrl, gdouble t);
static GtkVBoxClass *parent_class = NULL;
@@ -241,6 +242,8 @@
gtk_label_set_text (GTK_LABEL (ctrl->ElSat), buff);
g_free (buff);
+ update_count_down (ctrl, t);
+
/* update next pass if necessary */
if (ctrl->pass != NULL) {
if (ctrl->target->aos > ctrl->pass->aos) {
@@ -386,12 +389,14 @@
gtk_table_attach_defaults (GTK_TABLE (table), ctrl->ElSat, 1, 2, 2, 3);
/* count down */
- label = gtk_label_new (_("Time:"));
+ label = gtk_label_new (_("\316\224T:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 3, 4);
+ ctrl->SatCnt = gtk_label_new ("00:00:00");
+ gtk_misc_set_alignment (GTK_MISC (ctrl->SatCnt), 1.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), ctrl->SatCnt, 1, 2, 3, 4);
frame = gtk_frame_new (_("Target"));
- //gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
gtk_container_add (GTK_CONTAINER (frame), table);
g_free (buff);
@@ -723,3 +728,70 @@
}
+
+/** \brief Update count down label.
+ * \param[in] ctrl Pointer to the RotCtrl widget.
+ * \param[in] t The current time.
+ *
+ * This function calculates the new time to AOS/LOS of the currently
+ * selected target and updates the ctrl->SatCnt label widget.
+ */
+static void update_count_down (GtkRotCtrl *ctrl, gdouble t)
+{
+ gdouble targettime;
+ gdouble delta;
+ gchar *buff;
+ guint h,m,s;
+ gchar *ch,*cm,*cs;
+
+
+ /* select AOS or LOS time depending on target elevation */
+ if (ctrl->target->el < 0.0)
+ targettime = ctrl->target->aos;
+ else
+ targettime = ctrl->target->los;
+
+ delta = targettime - t;
+
+ /* convert julian date to seconds */
+ s = (guint) (delta * 86400);
+
+ /* extract hours */
+ h = (guint) floor (s/3600);
+ s -= 3600*h;
+
+ /* leading zero */
+ if ((h > 0) && (h < 10))
+ ch = g_strdup ("0");
+ else
+ ch = g_strdup ("");
+
+ /* extract minutes */
+ m = (guint) floor (s/60);
+ s -= 60*m;
+
+ /* leading zero */
+ if (m < 10)
+ cm = g_strdup ("0");
+ else
+ cm = g_strdup ("");
+
+ /* leading zero */
+ if (s < 10)
+ cs = g_strdup (":0");
+ else
+ cs = g_strdup (":");
+
+ if (h > 0)
+ buff = g_strdup_printf ("%s%d:%s%d%s%d", ch, h, cm, m, cs, s);
+ else
+ buff = g_strdup_printf ("%s%d%s%d", cm, m, cs, s);
+
+ gtk_label_set_text (GTK_LABEL (ctrl->SatCnt), buff);
+
+ g_free (buff);
+ g_free (ch);
+ g_free (cm);
+ g_free (cs);
+
+}
Modified: trunk/src/gtk-rot-ctrl.h
===================================================================
--- trunk/src/gtk-rot-ctrl.h 2008-09-06 23:58:53 UTC (rev 96)
+++ trunk/src/gtk-rot-ctrl.h 2008-09-07 10:16:41 UTC (rev 97)
@@ -69,6 +69,7 @@
GtkWidget *ElSat,*ElSet,*ElRead,*ElDevSel,*ElDev;
/* other widgets */
+ GtkWidget *SatCnt;
GtkWidget *DevSel;
/* satellites */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|