gpredict-svn Mailing List for Gpredict (Page 29)
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: <cs...@us...> - 2009-04-13 10:53:39
|
Revision: 266 http://gpredict.svn.sourceforge.net/gpredict/?rev=266&view=rev Author: csete Date: 2009-04-13 10:53:28 +0000 (Mon, 13 Apr 2009) Log Message: ----------- Fixed indent. Modified Paths: -------------- trunk/src/gtk-sky-glance.c trunk/src/gtk-sky-glance.h trunk/src/predict-tools.c trunk/src/predict-tools.h Modified: trunk/src/gtk-sky-glance.c =================================================================== --- trunk/src/gtk-sky-glance.c 2009-04-13 10:38:53 UTC (rev 265) +++ trunk/src/gtk-sky-glance.c 2009-04-13 10:53:28 UTC (rev 266) @@ -67,25 +67,25 @@ static void gtk_sky_glance_init (GtkSkyGlance *skg); static void gtk_sky_glance_destroy (GtkObject *object); static void size_allocate_cb (GtkWidget *widget, - GtkAllocation *allocation, - gpointer data); + GtkAllocation *allocation, + gpointer data); static gboolean on_motion_notify (GooCanvasItem *item, - GooCanvasItem *target, - GdkEventMotion *event, - gpointer data); + GooCanvasItem *target, + GdkEventMotion *event, + gpointer data); static void on_item_created (GooCanvas *canvas, - GooCanvasItem *item, - GooCanvasItemModel *model, - gpointer data); + GooCanvasItem *item, + GooCanvasItemModel *model, + gpointer data); static void on_canvas_realized (GtkWidget *canvas, gpointer data); static gboolean on_button_press (GooCanvasItem *item, - GooCanvasItem *target, - GdkEventButton *event, - gpointer data); + GooCanvasItem *target, + GdkEventButton *event, + gpointer data); static gboolean on_button_release (GooCanvasItem *item, - GooCanvasItem *target, - GdkEventButton *event, - gpointer data); + GooCanvasItem *target, + GdkEventButton *event, + gpointer data); static GooCanvasItemModel* create_canvas_model (GtkSkyGlance *skg); @@ -103,67 +103,67 @@ GtkType gtk_sky_glance_get_type () { - static GType gtk_sky_glance_type = 0; + static GType gtk_sky_glance_type = 0; - if (!gtk_sky_glance_type) { - static const GTypeInfo gtk_sky_glance_info = { - sizeof (GtkSkyGlanceClass), - NULL, /* base init */ - NULL, /* base finalise */ - (GClassInitFunc) gtk_sky_glance_class_init, - NULL, /* class finalise */ - NULL, /* class data */ - sizeof (GtkSkyGlance), - 1, /* n_preallocs */ - (GInstanceInitFunc) gtk_sky_glance_init, - }; + if (!gtk_sky_glance_type) { + static const GTypeInfo gtk_sky_glance_info = { + sizeof (GtkSkyGlanceClass), + NULL, /* base init */ + NULL, /* base finalise */ + (GClassInitFunc) gtk_sky_glance_class_init, + NULL, /* class finalise */ + NULL, /* class data */ + sizeof (GtkSkyGlance), + 1, /* n_preallocs */ + (GInstanceInitFunc) gtk_sky_glance_init, + }; - gtk_sky_glance_type = g_type_register_static (GTK_TYPE_VBOX, - "GtkSkyGlance", - >k_sky_glance_info, - 0); - } + gtk_sky_glance_type = g_type_register_static (GTK_TYPE_VBOX, + "GtkSkyGlance", + >k_sky_glance_info, + 0); + } - return gtk_sky_glance_type; + return gtk_sky_glance_type; } static void gtk_sky_glance_class_init (GtkSkyGlanceClass *class) { - GObjectClass *gobject_class; - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - GtkContainerClass *container_class; + GObjectClass *gobject_class; + GtkObjectClass *object_class; + GtkWidgetClass *widget_class; + GtkContainerClass *container_class; - gobject_class = G_OBJECT_CLASS (class); - object_class = (GtkObjectClass*) class; - widget_class = (GtkWidgetClass*) class; - container_class = (GtkContainerClass*) class; + gobject_class = G_OBJECT_CLASS (class); + object_class = (GtkObjectClass*) class; + widget_class = (GtkWidgetClass*) class; + container_class = (GtkContainerClass*) class; - parent_class = g_type_class_peek_parent (class); + parent_class = g_type_class_peek_parent (class); - object_class->destroy = gtk_sky_glance_destroy; - //widget_class->size_allocate = gtk_sky_glance_size_allocate; + object_class->destroy = gtk_sky_glance_destroy; + //widget_class->size_allocate = gtk_sky_glance_size_allocate; } static void gtk_sky_glance_init (GtkSkyGlance *skg) { - skg->sats = NULL; - skg->qth = NULL; - skg->passes = NULL; - skg->satlab = NULL; - skg->x0 = 0; - skg->y0 = 0; - skg->w = 0; - skg->h = 0; - skg->pps = 0; - skg->numsat = 0; - skg->satcnt = 0; - skg->ts = 0.0; - skg->te = 0.0; + skg->sats = NULL; + skg->qth = NULL; + skg->passes = NULL; + skg->satlab = NULL; + skg->x0 = 0; + skg->y0 = 0; + skg->w = 0; + skg->h = 0; + skg->pps = 0; + skg->numsat = 0; + skg->satcnt = 0; + skg->ts = 0.0; + skg->te = 0.0; } @@ -173,46 +173,46 @@ static void gtk_sky_glance_destroy (GtkObject *object) { - sky_pass_t *skypass; - guint i, n; + sky_pass_t *skypass; + guint i, n; - /* free passes */ - /* FIXME: TBC whether this is enough */ - if (GTK_SKY_GLANCE (object)->passes != NULL) { + /* free passes */ + /* FIXME: TBC whether this is enough */ + if (GTK_SKY_GLANCE (object)->passes != NULL) { - n = g_slist_length (GTK_SKY_GLANCE (object)->passes); - for (i = 0; i < n; i++) { - skypass = (sky_pass_t *) g_slist_nth_data (GTK_SKY_GLANCE (object)->passes, i); - free_pass (skypass->pass); - g_free (skypass); - } + n = g_slist_length (GTK_SKY_GLANCE (object)->passes); + for (i = 0; i < n; i++) { + skypass = (sky_pass_t *) g_slist_nth_data (GTK_SKY_GLANCE (object)->passes, i); + free_pass (skypass->pass); + g_free (skypass); + } - g_slist_free (GTK_SKY_GLANCE (object)->passes); - GTK_SKY_GLANCE (object)->passes = NULL; - } + g_slist_free (GTK_SKY_GLANCE (object)->passes); + GTK_SKY_GLANCE (object)->passes = NULL; + } - /* for the rest we only need to free the GSList because the - canvas items will be freed when removed from canvas. - */ - if (GTK_SKY_GLANCE (object)->satlab != NULL) { - g_slist_free (GTK_SKY_GLANCE (object)->satlab); - GTK_SKY_GLANCE (object)->satlab = NULL; - } - if (GTK_SKY_GLANCE (object)->majors != NULL) { - g_slist_free (GTK_SKY_GLANCE (object)->majors); - GTK_SKY_GLANCE (object)->majors = NULL; - } - if (GTK_SKY_GLANCE (object)->minors != NULL) { - g_slist_free (GTK_SKY_GLANCE (object)->minors); - GTK_SKY_GLANCE (object)->minors = NULL; - } - if (GTK_SKY_GLANCE (object)->labels != NULL) { - g_slist_free (GTK_SKY_GLANCE (object)->labels); - GTK_SKY_GLANCE (object)->labels = NULL; - } + /* for the rest we only need to free the GSList because the + canvas items will be freed when removed from canvas. + */ + if (GTK_SKY_GLANCE (object)->satlab != NULL) { + g_slist_free (GTK_SKY_GLANCE (object)->satlab); + GTK_SKY_GLANCE (object)->satlab = NULL; + } + if (GTK_SKY_GLANCE (object)->majors != NULL) { + g_slist_free (GTK_SKY_GLANCE (object)->majors); + GTK_SKY_GLANCE (object)->majors = NULL; + } + if (GTK_SKY_GLANCE (object)->minors != NULL) { + g_slist_free (GTK_SKY_GLANCE (object)->minors); + GTK_SKY_GLANCE (object)->minors = NULL; + } + if (GTK_SKY_GLANCE (object)->labels != NULL) { + g_slist_free (GTK_SKY_GLANCE (object)->labels); + GTK_SKY_GLANCE (object)->labels = NULL; + } - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); + (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); } @@ -225,20 +225,20 @@ GtkWidget* gtk_sky_glance_new (GHashTable *sats, qth_t *qth, gdouble ts) { - GtkWidget *skg; - GooCanvasItemModel *root; - GdkColor bg_color = {0, 0xFFFF, 0xFFFF, 0xFFFF}; + GtkWidget *skg; + GooCanvasItemModel *root; + GdkColor bg_color = {0, 0xFFFF, 0xFFFF, 0xFFFF}; - skg = g_object_new (GTK_TYPE_SKY_GLANCE, NULL); + skg = g_object_new (GTK_TYPE_SKY_GLANCE, NULL); - /* FIXME? */ - GTK_SKY_GLANCE (skg)->sats = sats; - GTK_SKY_GLANCE (skg)->qth = qth; + /* FIXME? */ + GTK_SKY_GLANCE (skg)->sats = sats; + GTK_SKY_GLANCE (skg)->qth = qth; - /* get settings */ - GTK_SKY_GLANCE (skg)->numsat = g_hash_table_size (sats); - + /* get settings */ + GTK_SKY_GLANCE (skg)->numsat = g_hash_table_size (sats); + /* if ts = 0 use current time */ if (ts > 0.0) { GTK_SKY_GLANCE (skg)->ts = ts; @@ -246,159 +246,159 @@ else { GTK_SKY_GLANCE (skg)->ts = get_current_daynum (); } - - GTK_SKY_GLANCE (skg)->te = GTK_SKY_GLANCE (skg)->ts + - sat_cfg_get_int (SAT_CFG_INT_SKYATGL_TIME)*(1.0/24.0); - /* calculate preferred sizes */ - GTK_SKY_GLANCE (skg)->w = SKG_DEFAULT_WIDTH; - GTK_SKY_GLANCE (skg)->h = GTK_SKY_GLANCE (skg)->numsat * SKG_PIX_PER_SAT + - (GTK_SKY_GLANCE (skg)->numsat + 1) * SKG_MARGIN; - GTK_SKY_GLANCE (skg)->pps = SKG_PIX_PER_SAT; + GTK_SKY_GLANCE (skg)->te = GTK_SKY_GLANCE (skg)->ts + + sat_cfg_get_int (SAT_CFG_INT_SKYATGL_TIME)*(1.0/24.0); - /* create the canvas */ - GTK_SKY_GLANCE (skg)->canvas = goo_canvas_new (); - gtk_widget_modify_base (GTK_SKY_GLANCE (skg)->canvas, GTK_STATE_NORMAL, &bg_color); - gtk_widget_set_size_request (GTK_SKY_GLANCE (skg)->canvas, - GTK_SKY_GLANCE (skg)->w, - GTK_SKY_GLANCE (skg)->h + SKG_FOOTER); - goo_canvas_set_bounds (GOO_CANVAS (GTK_SKY_GLANCE (skg)->canvas), 0, 0, - GTK_SKY_GLANCE (skg)->w, - GTK_SKY_GLANCE (skg)->h + SKG_FOOTER); + /* calculate preferred sizes */ + GTK_SKY_GLANCE (skg)->w = SKG_DEFAULT_WIDTH; + GTK_SKY_GLANCE (skg)->h = GTK_SKY_GLANCE (skg)->numsat * SKG_PIX_PER_SAT + + (GTK_SKY_GLANCE (skg)->numsat + 1) * SKG_MARGIN; + GTK_SKY_GLANCE (skg)->pps = SKG_PIX_PER_SAT; - /* connect size-request signal */ - g_signal_connect (GTK_SKY_GLANCE (skg)->canvas, "size-allocate", - G_CALLBACK (size_allocate_cb), skg); - g_signal_connect (GTK_SKY_GLANCE (skg)->canvas, "item_created", - (GtkSignalFunc) on_item_created, skg); - g_signal_connect_after (GTK_SKY_GLANCE (skg)->canvas, "realize", - (GtkSignalFunc) on_canvas_realized, skg); + /* create the canvas */ + GTK_SKY_GLANCE (skg)->canvas = goo_canvas_new (); + gtk_widget_modify_base (GTK_SKY_GLANCE (skg)->canvas, GTK_STATE_NORMAL, &bg_color); + gtk_widget_set_size_request (GTK_SKY_GLANCE (skg)->canvas, + GTK_SKY_GLANCE (skg)->w, + GTK_SKY_GLANCE (skg)->h + SKG_FOOTER); + goo_canvas_set_bounds (GOO_CANVAS (GTK_SKY_GLANCE (skg)->canvas), 0, 0, + GTK_SKY_GLANCE (skg)->w, + GTK_SKY_GLANCE (skg)->h + SKG_FOOTER); - gtk_widget_show (GTK_SKY_GLANCE (skg)->canvas); + /* connect size-request signal */ + g_signal_connect (GTK_SKY_GLANCE (skg)->canvas, "size-allocate", + G_CALLBACK (size_allocate_cb), skg); + g_signal_connect (GTK_SKY_GLANCE (skg)->canvas, "item_created", + (GtkSignalFunc) on_item_created, skg); + g_signal_connect_after (GTK_SKY_GLANCE (skg)->canvas, "realize", + (GtkSignalFunc) on_canvas_realized, skg); + gtk_widget_show (GTK_SKY_GLANCE (skg)->canvas); - /* Create the canvas model */ - root = create_canvas_model (GTK_SKY_GLANCE (skg)); - goo_canvas_set_root_item_model (GOO_CANVAS (GTK_SKY_GLANCE (skg)->canvas), root); - g_object_unref (root); + /* Create the canvas model */ + root = create_canvas_model (GTK_SKY_GLANCE (skg)); + goo_canvas_set_root_item_model (GOO_CANVAS (GTK_SKY_GLANCE (skg)->canvas), root); - /* add satellite passes */ - g_hash_table_foreach (GTK_SKY_GLANCE (skg)->sats, create_sat, skg); + g_object_unref (root); - gtk_container_add (GTK_CONTAINER (skg), GTK_SKY_GLANCE (skg)->canvas); + /* add satellite passes */ + g_hash_table_foreach (GTK_SKY_GLANCE (skg)->sats, create_sat, skg); - return skg; + gtk_container_add (GTK_CONTAINER (skg), GTK_SKY_GLANCE (skg)->canvas); + + return skg; } static GooCanvasItemModel * create_canvas_model (GtkSkyGlance *skg) { - GooCanvasItemModel *root; - GooCanvasItemModel *hrt,*hrl,*hrm; - guint i,n; - gdouble th,tm; - time_t tt; - gdouble xh,xm; - gchar buff[3]; + GooCanvasItemModel *root; + GooCanvasItemModel *hrt,*hrl,*hrm; + guint i,n; + gdouble th,tm; + time_t tt; + gdouble xh,xm; + gchar buff[3]; - root = goo_canvas_group_model_new (NULL, NULL); + root = goo_canvas_group_model_new (NULL, NULL); - /* cursor tracking line */ - skg->cursor = goo_canvas_polyline_model_new_line (root, - skg->x0, skg->y0, skg->x0, skg->h, - "stroke-color-rgba", 0x000000AF, - "line-width", 0.5, - NULL); + /* cursor tracking line */ + skg->cursor = goo_canvas_polyline_model_new_line (root, + skg->x0, skg->y0, skg->x0, skg->h, + "stroke-color-rgba", 0x000000AF, + "line-width", 0.5, + NULL); - /* time label */ - skg->timel = goo_canvas_text_model_new (root, "--:--", skg->x0 + 5, skg->y0, -1, GTK_ANCHOR_NW, - "font", "Sans 8", - "fill-color-rgba", 0x000000AF, - NULL); + /* time label */ + skg->timel = goo_canvas_text_model_new (root, "--:--", skg->x0 + 5, skg->y0, -1, GTK_ANCHOR_NW, + "font", "Sans 8", + "fill-color-rgba", 0x000000AF, + NULL); - /* footer */ - skg->footer = goo_canvas_rect_model_new (root, - skg->x0, skg->h, - skg->w, SKG_FOOTER, - "fill-color-rgba", 0x00003FFF, - "stroke-color-rgba", 0xFFFFFFFF, - NULL); + /* footer */ + skg->footer = goo_canvas_rect_model_new (root, + skg->x0, skg->h, + skg->w, SKG_FOOTER, + "fill-color-rgba", 0x00003FFF, + "stroke-color-rgba", 0xFFFFFFFF, + NULL); - /* time ticks and labels */ - if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_LOCAL_TIME)) - skg->axisl = goo_canvas_text_model_new (root, _("TIME"), - skg->w / 2, skg->h + SKG_FOOTER - 5, - -1, GTK_ANCHOR_S, - "font", "Sans 9", - "fill-color-rgba", 0xFFFFFFFF, - NULL); - else - skg->axisl = goo_canvas_text_model_new (root, _("UTC"), - skg->w / 2, skg->h + SKG_FOOTER - 5, - -1, GTK_ANCHOR_S, - "font", "Sans 9", - "fill-color-rgba", 0xFFFFFFFF, - NULL); + /* time ticks and labels */ + if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_LOCAL_TIME)) + skg->axisl = goo_canvas_text_model_new (root, _("TIME"), + skg->w / 2, skg->h + SKG_FOOTER - 5, + -1, GTK_ANCHOR_S, + "font", "Sans 9", + "fill-color-rgba", 0xFFFFFFFF, + NULL); + else + skg->axisl = goo_canvas_text_model_new (root, _("UTC"), + skg->w / 2, skg->h + SKG_FOOTER - 5, + -1, GTK_ANCHOR_S, + "font", "Sans 9", + "fill-color-rgba", 0xFFFFFFFF, + NULL); - /* get the first hour and first 30 min slot */ - th = ceil (skg->ts * 24.0) / 24.0; + /* get the first hour and first 30 min slot */ + th = ceil (skg->ts * 24.0) / 24.0; - /* workaround for bug 1839140 (first hour incorrexct) */ - th += 0.00069; - - /* the first 30 min tick can be either before - or after the first hour tick - */ - if ((th - skg->ts) > 0.0208333) { - tm = th - 0.0208333; - } - else { - tm = th + 0.0208333; - } + /* workaround for bug 1839140 (first hour incorrexct) */ + th += 0.00069; - /* the number of steps equals the number of hours */ - n = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_TIME); - for (i = 0; i < n; i++) { + /* the first 30 min tick can be either before + or after the first hour tick + */ + if ((th - skg->ts) > 0.0208333) { + tm = th - 0.0208333; + } + else { + tm = th + 0.0208333; + } - /* hour tick */ - xh = t2x (skg, th); - hrt = goo_canvas_polyline_model_new_line (root, xh, skg->h, xh, skg->h + 10, - "stroke-color-rgba", 0xFFFFFFFF, - NULL); + /* the number of steps equals the number of hours */ + n = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_TIME); + for (i = 0; i < n; i++) { - /* hour tick label */ - tt = (th - 2440587.5)*86400.0; - if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_LOCAL_TIME)) - strftime (buff, 3, "%H", localtime (&tt)); - else - strftime (buff, 3, "%H", gmtime (&tt)); - - buff[2] = '\0'; - hrl = goo_canvas_text_model_new (root, buff, xh, skg->h + 12, - -1, GTK_ANCHOR_N, - "font", "Sans 8", - "fill-color-rgba", 0xFFFFFFFF, - NULL); + /* hour tick */ + xh = t2x (skg, th); + hrt = goo_canvas_polyline_model_new_line (root, xh, skg->h, xh, skg->h + 10, + "stroke-color-rgba", 0xFFFFFFFF, + NULL); - /* 30 min tick */ - xm = t2x (skg, tm); - hrm = goo_canvas_polyline_model_new_line (root, xm, skg->h, xm, skg->h + 5, - "stroke-color-rgba", 0xFFFFFFFF, - NULL); + /* hour tick label */ + tt = (th - 2440587.5)*86400.0; + if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_LOCAL_TIME)) + strftime (buff, 3, "%H", localtime (&tt)); + else + strftime (buff, 3, "%H", gmtime (&tt)); + + buff[2] = '\0'; + hrl = goo_canvas_text_model_new (root, buff, xh, skg->h + 12, + -1, GTK_ANCHOR_N, + "font", "Sans 8", + "fill-color-rgba", 0xFFFFFFFF, + NULL); - /* store canvas items */ - skg->majors = g_slist_append (skg->majors, hrt); - skg->labels = g_slist_append (skg->labels, hrl); - skg->minors = g_slist_append (skg->minors, hrm); + /* 30 min tick */ + xm = t2x (skg, tm); + hrm = goo_canvas_polyline_model_new_line (root, xm, skg->h, xm, skg->h + 5, + "stroke-color-rgba", 0xFFFFFFFF, + NULL); - th += 0.0416667; - tm += 0.0416667; - } + /* store canvas items */ + skg->majors = g_slist_append (skg->majors, hrt); + skg->labels = g_slist_append (skg->labels, hrl); + skg->minors = g_slist_append (skg->minors, hrm); - return root; + th += 0.0416667; + tm += 0.0416667; + } + + return root; } @@ -413,154 +413,154 @@ static void size_allocate_cb (GtkWidget *widget, GtkAllocation *allocation, gpointer data) { - GtkSkyGlance *skg; - GooCanvasPoints *pts; - GooCanvasItem *obj; - gint i,j,n; - guint curcat; - gdouble th,tm; - gdouble xh,xm; - sky_pass_t *skp; - gdouble x,y,w,h; + GtkSkyGlance *skg; + GooCanvasPoints *pts; + GooCanvasItem *obj; + gint i,j,n; + guint curcat; + gdouble th,tm; + gdouble xh,xm; + sky_pass_t *skp; + gdouble x,y,w,h; - if (GTK_WIDGET_REALIZED (widget)) { + if (GTK_WIDGET_REALIZED (widget)) { - /* get graph dimensions */ - skg = GTK_SKY_GLANCE (data); + /* get graph dimensions */ + skg = GTK_SKY_GLANCE (data); - skg->w = allocation->width; - skg->h = allocation->height - SKG_FOOTER; - skg->x0 = 0; - skg->y0 = 0; + skg->w = allocation->width; + skg->h = allocation->height - SKG_FOOTER; + skg->x0 = 0; + skg->y0 = 0; - skg->pps = (skg->h - SKG_MARGIN) / skg->numsat - SKG_MARGIN; + skg->pps = (skg->h - SKG_MARGIN) / skg->numsat - SKG_MARGIN; goo_canvas_set_bounds (GOO_CANVAS (GTK_SKY_GLANCE (skg)->canvas), 0, 0, allocation->width, allocation->height); - /* update cursor tracking line */ - pts = goo_canvas_points_new (2); - pts->coords[0] = skg->x0; - pts->coords[1] = skg->y0; - pts->coords[2] = skg->x0; - pts->coords[3] = skg->h; - g_object_set (skg->cursor, "points", pts, NULL); - goo_canvas_points_unref (pts); + /* update cursor tracking line */ + pts = goo_canvas_points_new (2); + pts->coords[0] = skg->x0; + pts->coords[1] = skg->y0; + pts->coords[2] = skg->x0; + pts->coords[3] = skg->h; + g_object_set (skg->cursor, "points", pts, NULL); + goo_canvas_points_unref (pts); - /* time label */ - g_object_set (skg->timel, - "x", (gdouble) skg->x0 + 5, - NULL); + /* time label */ + g_object_set (skg->timel, + "x", (gdouble) skg->x0 + 5, + NULL); - - /* update footer */ - g_object_set (skg->footer, - "x", (gdouble) skg->x0, - "y", (gdouble) skg->h, - "width", (gdouble) skg->w, - "height", (gdouble) SKG_FOOTER, - NULL); + + /* update footer */ + g_object_set (skg->footer, + "x", (gdouble) skg->x0, + "y", (gdouble) skg->h, + "width", (gdouble) skg->w, + "height", (gdouble) SKG_FOOTER, + NULL); - g_object_set (skg->axisl, - "x", (gdouble) (skg->w / 2), - "y", (gdouble) (skg->h + SKG_FOOTER - 5), - NULL); + g_object_set (skg->axisl, + "x", (gdouble) (skg->w / 2), + "y", (gdouble) (skg->h + SKG_FOOTER - 5), + NULL); - /* get the first hour and first 30 min slot */ - th = ceil (skg->ts * 24.0) / 24.0; + /* get the first hour and first 30 min slot */ + th = ceil (skg->ts * 24.0) / 24.0; - /* workaround for bug 1839140 (first hour incorrexct) */ - th += 0.00069; - - if ((th - skg->ts) > 0.0208333) { - tm = th - 0.0208333; - } - else { - tm = th + 0.0208333; - } + /* workaround for bug 1839140 (first hour incorrexct) */ + th += 0.00069; + + if ((th - skg->ts) > 0.0208333) { + tm = th - 0.0208333; + } + else { + tm = th + 0.0208333; + } - /* the number of steps equals the number of hours */ - n = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_TIME); - for (i = 0; i < n; i++) { - xh = t2x (skg, th); + /* the number of steps equals the number of hours */ + n = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_TIME); + for (i = 0; i < n; i++) { + xh = t2x (skg, th); - pts = goo_canvas_points_new (2); - pts->coords[0] = xh; - pts->coords[1] = skg->h; - pts->coords[2] = xh; - pts->coords[3] = skg->h + 10; + pts = goo_canvas_points_new (2); + pts->coords[0] = xh; + pts->coords[1] = skg->h; + pts->coords[2] = xh; + pts->coords[3] = skg->h + 10; - obj = g_slist_nth_data (skg->majors, i); - g_object_set (obj, "points", pts, NULL); + obj = g_slist_nth_data (skg->majors, i); + g_object_set (obj, "points", pts, NULL); - goo_canvas_points_unref (pts); + goo_canvas_points_unref (pts); - obj = g_slist_nth_data (skg->labels, i); - g_object_set (obj, - "x", (gdouble) xh, - "y", (gdouble) (skg->h + 12), - NULL); + obj = g_slist_nth_data (skg->labels, i); + g_object_set (obj, + "x", (gdouble) xh, + "y", (gdouble) (skg->h + 12), + NULL); - /* 30 min tick */ - xm = t2x (skg, tm); + /* 30 min tick */ + xm = t2x (skg, tm); - pts = goo_canvas_points_new (2); - pts->coords[0] = xm; - pts->coords[1] = skg->h; - pts->coords[2] = xm; - pts->coords[3] = skg->h + 5; + pts = goo_canvas_points_new (2); + pts->coords[0] = xm; + pts->coords[1] = skg->h; + pts->coords[2] = xm; + pts->coords[3] = skg->h + 5; - obj = g_slist_nth_data (skg->minors, i); - g_object_set (obj, "points", pts, NULL); + obj = g_slist_nth_data (skg->minors, i); + g_object_set (obj, "points", pts, NULL); - goo_canvas_points_unref (pts); + goo_canvas_points_unref (pts); - th += 0.04167; - tm += 0.04167; - } + th += 0.04167; + tm += 0.04167; + } - /* update pass items */ - n = g_slist_length (skg->passes); - j = -1; - curcat = 0; - y = 10.0; - h = 10.0; - for (i = 0; i < n; i++) { + /* update pass items */ + n = g_slist_length (skg->passes); + j = -1; + curcat = 0; + y = 10.0; + h = 10.0; + for (i = 0; i < n; i++) { - /* get pass */ - skp = (sky_pass_t *) g_slist_nth_data (skg->passes, i); + /* get pass */ + skp = (sky_pass_t *) g_slist_nth_data (skg->passes, i); - x = t2x (skg, skp->pass->aos); - w = t2x (skg, skp->pass->los) - x; + x = t2x (skg, skp->pass->aos); + w = t2x (skg, skp->pass->los) - x; - /* new satellite? */ - if (skp->catnum != curcat) { - j++; - curcat = skp->catnum; - y = j * (skg->pps + SKG_MARGIN) + SKG_MARGIN; - h = skg->pps; + /* new satellite? */ + if (skp->catnum != curcat) { + j++; + curcat = skp->catnum; + y = j * (skg->pps + SKG_MARGIN) + SKG_MARGIN; + h = skg->pps; - /* update label */ - obj = g_slist_nth_data (skg->satlab, j); - if (x > (skg->x0 + 100)) - g_object_set (obj, "x", x-5, "y", y+h/2.0, - "anchor", GTK_ANCHOR_E, NULL); - else - g_object_set (obj, "x", x+w+5, "y", y+h/2.0, - "anchor", GTK_ANCHOR_W, NULL); - } + /* update label */ + obj = g_slist_nth_data (skg->satlab, j); + if (x > (skg->x0 + 100)) + g_object_set (obj, "x", x-5, "y", y+h/2.0, + "anchor", GTK_ANCHOR_E, NULL); + else + g_object_set (obj, "x", x+w+5, "y", y+h/2.0, + "anchor", GTK_ANCHOR_W, NULL); + } - g_object_set (skp->box, - "x", x, - "y", y, - "width", w, - "height", h, - NULL); - } + g_object_set (skp->box, + "x", x, + "y", y, + "width", w, + "height", h, + NULL); + } - } + } } @@ -574,11 +574,11 @@ static void on_canvas_realized (GtkWidget *canvas, gpointer data) { - GtkAllocation aloc; + GtkAllocation aloc; - aloc.width = canvas->allocation.width; - aloc.height = canvas->allocation.height; - size_allocate_cb (canvas, &aloc, data); + aloc.width = canvas->allocation.width; + aloc.height = canvas->allocation.height; + size_allocate_cb (canvas, &aloc, data); } @@ -586,59 +586,59 @@ /** \brief Manage mouse motion events. */ static gboolean on_motion_notify (GooCanvasItem *item, - GooCanvasItem *target, - GdkEventMotion *event, - gpointer data) + GooCanvasItem *target, + GdkEventMotion *event, + gpointer data) { - GtkSkyGlance *skg = GTK_SKY_GLANCE (data); - GooCanvasPoints *pts; - gdouble t; - time_t tt; - gchar buff[6]; + GtkSkyGlance *skg = GTK_SKY_GLANCE (data); + GooCanvasPoints *pts; + gdouble t; + time_t tt; + gchar buff[6]; - /* update cursor tracking line and time label */ - pts = goo_canvas_points_new (2); - pts->coords[0] = event->x; - pts->coords[1] = skg->y0; - pts->coords[2] = event->x; - pts->coords[3] = skg->h; - g_object_set (skg->cursor, "points", pts, NULL); - goo_canvas_points_unref (pts); + /* update cursor tracking line and time label */ + pts = goo_canvas_points_new (2); + pts->coords[0] = event->x; + pts->coords[1] = skg->y0; + pts->coords[2] = event->x; + pts->coords[3] = skg->h; + g_object_set (skg->cursor, "points", pts, NULL); + goo_canvas_points_unref (pts); - /* get time corresponding to x */ - t = x2t (skg, event->x); + /* get time corresponding to x */ + t = x2t (skg, event->x); - /* convert julian date to struct tm */ - tt = (t - 2440587.5)*86400.; + /* convert julian date to struct tm */ + tt = (t - 2440587.5)*86400.; - /* format either local time or UTC depending on check box */ - if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_LOCAL_TIME)) - strftime (buff, 6, "%H:%M", localtime (&tt)); - else - strftime (buff, 6, "%H:%M", gmtime (&tt)); + /* format either local time or UTC depending on check box */ + if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_LOCAL_TIME)) + strftime (buff, 6, "%H:%M", localtime (&tt)); + else + strftime (buff, 6, "%H:%M", gmtime (&tt)); - buff[5] = '\0'; - - /* in order to avoid label clipping close to the edges of - the chart, the label is placed left/right of the cursor - tracking line depending on which half we are in. - */ - if (event->x > (skg->w / 2)) { - g_object_set (skg->timel, - "text", buff, - "x", (gdouble) event->x - 5, - "anchor", GTK_ANCHOR_NE, - NULL); - } - else { - g_object_set (skg->timel, - "text", buff, - "x", (gdouble) event->x + 5, - "anchor", GTK_ANCHOR_NW, - NULL); - } + buff[5] = '\0'; - return TRUE; + /* in order to avoid label clipping close to the edges of + the chart, the label is placed left/right of the cursor + tracking line depending on which half we are in. + */ + if (event->x > (skg->w / 2)) { + g_object_set (skg->timel, + "text", buff, + "x", (gdouble) event->x - 5, + "anchor", GTK_ANCHOR_NE, + NULL); + } + else { + g_object_set (skg->timel, + "text", buff, + "x", (gdouble) event->x + 5, + "anchor", GTK_ANCHOR_NW, + NULL); + } + + return TRUE; } @@ -653,22 +653,22 @@ */ static void on_item_created (GooCanvas *canvas, - GooCanvasItem *item, - GooCanvasItemModel *model, - gpointer data) + GooCanvasItem *item, + GooCanvasItemModel *model, + gpointer data) { - if (!goo_canvas_item_model_get_parent (model)) { - /* root item / canvas */ - g_signal_connect (item, "motion_notify_event", - (GtkSignalFunc) on_motion_notify, data); - } + if (!goo_canvas_item_model_get_parent (model)) { + /* root item / canvas */ + g_signal_connect (item, "motion_notify_event", + (GtkSignalFunc) on_motion_notify, data); + } - else if (!g_object_get_data (G_OBJECT (item), "skip-signal-connection")) { - g_signal_connect (item, "button_press_event", - (GtkSignalFunc) on_button_press, data); - g_signal_connect (item, "button_release_event", - (GtkSignalFunc) on_button_release, data); - } + else if (!g_object_get_data (G_OBJECT (item), "skip-signal-connection")) { + g_signal_connect (item, "button_press_event", + (GtkSignalFunc) on_button_press, data); + g_signal_connect (item, "button_release_event", + (GtkSignalFunc) on_button_release, data); + } } @@ -680,24 +680,24 @@ */ static gboolean on_button_press (GooCanvasItem *item, - GooCanvasItem *target, - GdkEventButton *event, - gpointer data) + GooCanvasItem *target, + GdkEventButton *event, + gpointer data) { /* GooCanvasItemModel *model = goo_canvas_item_get_model (item); */ /* GtkSkyGlance *skg = GTK_SKY_GLANCE (data); */ - switch (event->button) { + switch (event->button) { - /* pop-up menu */ - case 3: + /* pop-up menu */ + case 3: - break; + break; - default: - break; - } + default: + break; + } @@ -714,26 +714,26 @@ */ static gboolean on_button_release (GooCanvasItem *item, - GooCanvasItem *target, - GdkEventButton *event, - gpointer data) + GooCanvasItem *target, + GdkEventButton *event, + gpointer data) { /* GooCanvasItemModel *model = goo_canvas_item_get_model (item); */ /* GtkSkyGlance *skg = GTK_SKY_GLANCE (data); */ - switch (event->button) { + switch (event->button) { - /* Select / de-select satellite */ - case 1: + /* Select / de-select satellite */ + case 1: - break; + break; - default: - break; - } + default: + break; + } - - return TRUE; + + return TRUE; } @@ -747,11 +747,11 @@ */ static gdouble t2x (GtkSkyGlance *skg, gdouble t) { - gdouble frac; + gdouble frac; - frac = (t - skg->ts) / (skg->te - skg->ts); + frac = (t - skg->ts) / (skg->te - skg->ts); - return (skg->x0 + frac * skg->w); + return (skg->x0 + frac * skg->w); } @@ -766,77 +766,77 @@ */ static gdouble x2t (GtkSkyGlance *skg, gdouble x) { - gdouble frac; + gdouble frac; - frac = (x - skg->x0) / skg->w; + frac = (x - skg->x0) / skg->w; - return (skg->ts + frac * (skg->te - skg->ts)); + return (skg->ts + frac * (skg->te - skg->ts)); } /* fetch the basic colour and add alpha channel */ static void get_colours (guint i, guint *bcol, guint *fcol) { - guint tmp; + guint tmp; - /* ensure that we are within 1..10 */ - i = i % 10; + /* ensure that we are within 1..10 */ + i = i % 10; - switch (i) { + switch (i) { - case 0: - tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_01); - break; + case 0: + tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_01); + break; - case 1: - tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_02); - break; + case 1: + tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_02); + break; - case 2: - tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_03); - break; + case 2: + tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_03); + break; - case 3: - tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_04); - break; + case 3: + tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_04); + break; - case 4: - tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_05); - break; + case 4: + tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_05); + break; - case 5: - tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_06); - break; + case 5: + tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_06); + break; - case 6: - tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_07); - break; + case 6: + tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_07); + break; - case 7: - tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_08); - break; + case 7: + tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_08); + break; - case 8: - tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_09); - break; + case 8: + tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_09); + break; - case 9: - tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_10); - break; + case 9: + tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_10); + break; - default: - sat_log_log (SAT_LOG_LEVEL_BUG, - _("%s:%d: Colour index out of valid range (%d)"), - __FILE__, __LINE__, i); - tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_01); - break; - } + default: + sat_log_log (SAT_LOG_LEVEL_BUG, + _("%s:%d: Colour index out of valid range (%d)"), + __FILE__, __LINE__, i); + tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_01); + break; + } - /* border colour is solid with no tranparency */ - *bcol = (tmp * 0x100) | 0xFF; + /* border colour is solid with no tranparency */ + *bcol = (tmp * 0x100) | 0xFF; - /* fill colour is slightly transparent */ - *fcol = (tmp * 0x100) | 0xF0; + /* fill colour is slightly transparent */ + *fcol = (tmp * 0x100) | 0xF0; } @@ -852,79 +852,79 @@ static void create_sat (gpointer key, gpointer value, gpointer data) { - sat_t *sat = SAT(value); - GtkSkyGlance *skg = GTK_SKY_GLANCE(data); - GSList *passes = NULL; - gdouble maxdt; - guint i,n; - pass_t *tmppass = NULL; - sky_pass_t *skypass; - guint bcol,fcol; /* colours */ - GooCanvasItemModel *root; - GooCanvasItemModel *lab; + sat_t *sat = SAT(value); + GtkSkyGlance *skg = GTK_SKY_GLANCE(data); + GSList *passes = NULL; + gdouble maxdt; + guint i,n; + pass_t *tmppass = NULL; + sky_pass_t *skypass; + guint bcol,fcol; /* colours */ + GooCanvasItemModel *root; + GooCanvasItemModel *lab; - /* FIXME: - Include current pass if sat is up now - */ + /* FIXME: + Include current pass if sat is up now + */ - /* check that we didn't exceed 10 sats */ -/* if (++skg->satcnt > 10) { */ -/* return; */ -/* } */ + /* check that we didn't exceed 10 sats */ + /* if (++skg->satcnt > 10) { */ + /* return; */ + /* } */ - /* get canvas root */ - root = goo_canvas_get_root_item_model (GOO_CANVAS (skg->canvas)); + /* get canvas root */ + root = goo_canvas_get_root_item_model (GOO_CANVAS (skg->canvas)); - get_colours (skg->satcnt++, &bcol, &fcol); + get_colours (skg->satcnt++, &bcol, &fcol); - maxdt = skg->te - skg->ts; + maxdt = skg->te - skg->ts; - /* get passes for satellite */ - passes = get_passes (sat, skg->qth, skg->ts, maxdt, 10); - n = g_slist_length (passes); - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s:%d: %s has %d passes within %.4f days\n"), - __FILE__, __LINE__, sat->tle.sat_name, n, maxdt); + /* get passes for satellite */ + passes = get_passes (sat, skg->qth, skg->ts, maxdt, 10); + n = g_slist_length (passes); + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s:%d: %s has %d passes within %.4f days\n"), + __FILE__, __LINE__, sat->tle.sat_name, n, maxdt); - /* add sky_pass_t items to skg->passes */ - if (passes != NULL) { + /* add sky_pass_t items to skg->passes */ + if (passes != NULL) { - /* add pass items */ - for (i = 0; i < n; i++) { - - skypass = g_try_new (sky_pass_t, 1); + /* add pass items */ + for (i = 0; i < n; i++) { + + skypass = g_try_new (sky_pass_t, 1); - if (skypass != NULL) { + if (skypass != NULL) { - /* create pass structure items */ - skypass->catnum = sat->tle.catnr; - tmppass = (pass_t *) g_slist_nth_data (passes, i); - skypass->pass = copy_pass (tmppass); - skypass->box = goo_canvas_rect_model_new (root, 10, 10, 20, 20, /* dummy coordinates */ - "stroke-color-rgba", bcol, - "fill-color-rgba", fcol, - NULL); - - /* store pass data */ - skg->passes = g_slist_append (skg->passes, skypass); - } - else { - sat_log_log (SAT_LOG_LEVEL_ERROR, - _("%s:%d: Could not allocate memory for pass object"), - __FILE__, __LINE__); - } + /* create pass structure items */ + skypass->catnum = sat->tle.catnr; + tmppass = (pass_t *) g_slist_nth_data (passes, i); + skypass->pass = copy_pass (tmppass); + skypass->box = goo_canvas_rect_model_new (root, 10, 10, 20, 20, /* dummy coordinates */ + "stroke-color-rgba", bcol, + "fill-color-rgba", fcol, + NULL); + + /* store pass data */ + skg->passes = g_slist_append (skg->passes, skypass); + } + else { + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s:%d: Could not allocate memory for pass object"), + __FILE__, __LINE__); + } - } + } - free_passes (passes); + free_passes (passes); - /* add satellite label */ - lab = goo_canvas_text_model_new (root, sat->tle.sat_name, - 5, 0, -1, GTK_ANCHOR_W, - "font", "Sans 8", - "fill-color-rgba", bcol, - NULL); - skg->satlab = g_slist_append (skg->satlab, lab); - } + /* add satellite label */ + lab = goo_canvas_text_model_new (root, sat->tle.sat_name, + 5, 0, -1, GTK_ANCHOR_W, + "font", "Sans 8", + "fill-color-rgba", bcol, + NULL); + skg->satlab = g_slist_append (skg->satlab, lab); + } } Modified: trunk/src/gtk-sky-glance.h =================================================================== --- trunk/src/gtk-sky-glance.h 2009-04-13 10:38:53 UTC (rev 265) +++ trunk/src/gtk-sky-glance.h 2009-04-13 10:53:28 UTC (rev 266) @@ -56,9 +56,9 @@ /** \brief Satellite object on graph. */ typedef struct { - guint catnum; /*!< Catalogue number of satellite */ - pass_t *pass; /*!< Details of the corresponding pass. */ - GooCanvasItemModel *box; /*!< Canvas item showing the pass */ + guint catnum; /*!< Catalogue number of satellite */ + pass_t *pass; /*!< Details of the corresponding pass. */ + GooCanvasItemModel *box; /*!< Canvas item showing the pass */ } sky_pass_t; @@ -68,48 +68,48 @@ struct _GtkSkyGlance { - GtkVBox vbox; + GtkVBox vbox; - GtkWidget *canvas; /*!< The canvas widget */ + GtkWidget *canvas; /*!< The canvas widget */ - GHashTable *sats; /*!< Copy of satellites. */ - qth_t *qth; /*!< Pointer to current location. */ + GHashTable *sats; /*!< Copy of satellites. */ + qth_t *qth; /*!< Pointer to current location. */ - GSList *passes; /*!< Canvas items representing each pass. - Each element in the list is of type sky_pass_t. - */ - GSList *satlab; /*!< Canvas items showing satellite names. */ + GSList *passes; /*!< Canvas items representing each pass. + Each element in the list is of type sky_pass_t. + */ + GSList *satlab; /*!< Canvas items showing satellite names. */ - guint x0; /*!< X0 */ - guint y0; /*!< Y0 */ - guint w; /*!< width of the plot */ - guint h; /*!< height of the plot */ - guint pps; /*!< pixels per satellite */ + guint x0; /*!< X0 */ + guint y0; /*!< Y0 */ + guint w; /*!< width of the plot */ + guint h; /*!< height of the plot */ + guint pps; /*!< pixels per satellite */ - guint numsat; /*!< Number of satellites */ - guint satcnt; /*!< Counter to keep track of how many satellites we have - plotted so far when creating the boxes. - This is needed to ensure that we do not plot more - than 10 satellites and to know which colour to fetch - from sat-cfg. - */ - gdouble ts,te; /*!< Start and end times (Julian date) */ + guint numsat; /*!< Number of satellites */ + guint satcnt; /*!< Counter to keep track of how many satellites we have + plotted so far when creating the boxes. + This is needed to ensure that we do not plot more + than 10 satellites and to know which colour to fetch + from sat-cfg. + */ + gdouble ts,te; /*!< Start and end times (Julian date) */ - GSList *majors; /*!< Major ticks for every hour */ - GSList *minors; /*!< Minor ticks for every 30 min */ - GSList *labels; /*!< Tick labels for every hour */ - - GooCanvasItemModel *footer; /*!< Footer area with time ticks and labels */ - GooCanvasItemModel *axisl; /*!< Axis label */ - GooCanvasItemModel *cursor; /*!< Vertical line tracking the cursor */ - GooCanvasItemModel *timel; /*!< Label showing time under cursor */ + GSList *majors; /*!< Major ticks for every hour */ + GSList *minors; /*!< Minor ticks for every 30 min */ + GSList *labels; /*!< Tick labels for every hour */ + GooCanvasItemModel *footer; /*!< Footer area with time ticks and labels */ + GooCanvasItemModel *axisl; /*!< Axis label */ + GooCanvasItemModel *cursor; /*!< Vertical line tracking the cursor */ + GooCanvasItemModel *timel; /*!< Label showing time under cursor */ + }; struct _GtkSkyGlanceClass { - GtkVBoxClass parent_class; + GtkVBoxClass parent_class; }; Modified: trunk/src/predict-tools.c =================================================================== --- trunk/src/predict-tools.c 2009-04-13 10:38:53 UTC (rev 265) +++ trunk/src/predict-tools.c 2009-04-13 10:53:28 UTC (rev 266) @@ -51,58 +51,58 @@ void predict_calc (sat_t *sat, qth_t *qth, gdouble t) { - obs_set_t obs_set; - geodetic_t sat_geodetic; - geodetic_t obs_geodetic; - double age; + obs_set_t obs_set; + geodetic_t sat_geodetic; + geodetic_t obs_geodetic; + double age; - obs_geodetic.lon = qth->lon * de2ra; - obs_geodetic.lat = qth->lat * de2ra; - obs_geodetic.alt = qth->alt / 1000.0; - obs_geodetic.theta = 0; + obs_geodetic.lon = qth->lon * de2ra; + obs_geodetic.lat = qth->lat * de2ra; + obs_geodetic.alt = qth->alt / 1000.0; + obs_geodetic.theta = 0; - sat->jul_utc = t; - sat->tsince = (sat->jul_utc - sat->jul_epoch) * xmnpda; + sat->jul_utc = t; + sat->tsince = (sat->jul_utc - sat->jul_epoch) * xmnpda; - /* call the norad routines according to the deep-space flag */ - if (sat->flags & DEEP_SPACE_EPHEM_FLAG) - SDP4 (sat, sat->tsince); - else - SGP4 (sat, sat->tsince); + /* call the norad routines according to the deep-space flag */ + if (sat->flags & DEEP_SPACE_EPHEM_FLAG) + SDP4 (sat, sat->tsince); + else + SGP4 (sat, sat->tsince); - Convert_Sat_State (&sat->pos, &sat->vel); + Convert_Sat_State (&sat->pos, &sat->vel); - /* get the velocity of the satellite */ - Magnitude (&sat->vel); - sat->velo = sat->vel.w; - Calculate_Obs (sat->jul_utc, &sat->pos, &sat->vel, &obs_geodetic, &obs_set); - Calculate_LatLonAlt (sat->jul_utc, &sat->pos, &sat_geodetic); + /* get the velocity of the satellite */ + Magnitude (&sat->vel); + sat->velo = sat->vel.w; + Calculate_Obs (sat->jul_utc, &sat->pos, &sat->vel, &obs_geodetic, &obs_set); + Calculate_LatLonAlt (sat->jul_utc, &sat->pos, &sat_geodetic); - while (sat_geodetic.lon < -pi) - sat_geodetic.lon += twopi; - - while (sat_geodetic.lon > (pi)) - sat_geodetic.lon -= twopi; + while (sat_geodetic.lon < -pi) + sat_geodetic.lon += twopi; - sat->az = Degrees (obs_set.az); - sat->el = Degrees (obs_set.el); - sat->range = obs_set.range; - sat->range_rate = obs_set.range_rate; - sat->ssplat = Degrees (sat_geodetic.lat); - sat->ssplon = Degrees (sat_geodetic.lon); - sat->alt = sat_geodetic.alt; - sat->ma = Degrees (sat->phase); - sat->ma *= 256.0/360.0; - sat->phase = Degrees (sat->phase); + while (sat_geodetic.lon > (pi)) + sat_geodetic.lon -= twopi; - /* same formulas, but the one from predict is nicer */ - //sat->footprint = 2.0 * xkmper * acos (xkmper/sat->pos.w); - sat->footprint = 12756.33 * acos (xkmper / (xkmper+sat->alt)); - age = sat->jul_utc - sat->jul_epoch; - sat->orbit = (long) floor((sat->tle.xno * xmnpda/twopi + - age * sat->tle.bstar * ae) * age + - sat->tle.xmo/twopi) + sat->tle.revnum - 1; + sat->az = Degrees (obs_set.az); + sat->el = Degrees (obs_set.el); + sat->range = obs_set.range; + sat->range_rate = obs_set.range_rate; + sat->ssplat = Degrees (sat_geodetic.lat); + sat->ssplon = Degrees (sat_geodetic.lon); + sat->alt = sat_geodetic.alt; + sat->ma = Degrees (sat->phase); + sat->ma *= 256.0/360.0; + sat->phase = Degrees (sat->phase); + + /* same formulas, but the one from predict is nicer */ + //sat->footprint = 2.0 * xkmper * acos (xkmper/sat->pos.w); + sat->footprint = 12756.33 * acos (xkmper / (xkmper+sat->alt)); + age = sat->jul_utc - sat->jul_epoch; + sat->orbit = (long) floor((sat->tle.xno * xmnpda/twopi + + age * sat->tle.bstar * ae) * age + + sat->tle.xmo/twopi) + sat->tle.revnum - 1; } @@ -125,84 +125,84 @@ gdouble find_aos (sat_t *sat, qth_t *qth, gdouble start, gdouble maxdt) { - gdouble t = start; - gdouble aostime = 0.0; + gdouble t = start; + gdouble aostime = 0.0; - /* make sure current sat values are - in sync with the time - */ - predict_calc (sat, qth, start); + /* make sure current sat values are + in sync with the time + */ + predict_calc (sat, qth, start); - /* check whether satellite has aos */ - if ((sat->otype == ORBIT_TYPE_GEO) || - (sat->otype == ORBIT_TYPE_DECAYED) || - !has_aos (sat, qth)) { + /* check whether satellite has aos */ + if ((sat->otype == ORBIT_TYPE_GEO) || + (sat->otype == ORBIT_TYPE_DECAYED) || + !has_aos (sat, qth)) { - return 0.0; + return 0.0; - } + } - if (sat->el > 0.0) - t = find_los (sat, qth, start, maxdt) + 0.014; // +20 min + if (sat->el > 0.0) + t = find_los (sat, qth, start, maxdt) + 0.014; // +20 min - /* invalid time (potentially returned by find_los) */ - if (t < 0.1) - return 0.0; + /* invalid time (potentially returned by find_los) */ + if (t < 0.1) + return 0.0; - /* update satellite data */ - predict_calc (sat, qth, t); + /* update satellite data */ + predict_calc (sat, qth, t); - /* use upper time limit */ - if (maxdt > 0.0) { + /* use upper time limit */ + if (maxdt > 0.0) { - /* coarse time steps */ - while ((sat->el < -1.0) && (t <= (start + maxdt))) { - t -= 0.00035 * (sat->el * ((sat->alt / 8400.0) + 0.46) - 2.0); - predict_calc (sat, qth, t); - } + /* coarse time steps */ + while ((sat->el < -1.0) && (t <= (start + maxdt))) { + t -= 0.00035 * (sat->el * ((sat->alt / 8400.0) + 0.46) - 2.0); + predict_calc (sat, qth, t); + } - /* fine steps */ - while ((aostime == 0.0) && (t <= (start + maxdt))) { + /* fine steps */ + while ((aostime == 0.0) && (t <= (start + maxdt))) { - if (fabs (sat->el) < 0.005) { - aostime = t; - } - else { - t -= sat->el * sqrt (sat->alt) / 530000.0; - predict_calc (sat, qth, t); - } + if (fabs (sat->el) < 0.005) { + aostime = t; + } + else { + t -= sat->el * sqrt (sat->alt) / 530000.0; + predict_calc (sat, qth, t); + } - } + } - } - /* don't use upper time limit */ - else { + } + /* don't use upper time limit */ + else { - /* coarse time steps */ - while (sat->el < -1.0) { + /* coarse time steps */ + while (sat->el < -1.0) { - t -= 0.00035 * (sat->el * ((sat->alt / 8400.0) + 0.46) - 2.0); - predict_calc (sat, qth, t); - } + t -= 0.00035 * (sat->el * ((sat->alt / 8400.0) + 0.46) - 2.0); + predict_calc (sat, qth, t); + } - /* fine steps */ - while (aostime == 0.0) { + /* fine steps */ + while (aostime == 0.0) { - if (fabs (sat->el) < 0.005) { - aostime = t; - } - else { - t -= sat->el * sqrt (sat->alt) / 530000.0; - predict_calc (sat, qth, t); - } + if (fabs (sat->el) < 0.005) { + aostime = t; + } + else { + t -= sat->el * sqrt (sat->alt) / 530000.0; + predict_calc (sat, qth, t); + } - } - } + } + } - return aostime; + return aostime; } @@ -227,75 +227,75 @@ gdouble find_los (sat_t *sat, qth_t *qth, gdouble start, gdouble maxdt) { - gdouble t = start; - gdouble lostime = 0.0; + gdouble t = start; + gdouble lostime = 0.0; - - predict_calc (sat, qth, start); - /* check whether satellite has aos */ - if ((sat->otype == ORBIT_TYPE_GEO) || - (sat->otype == ORBIT_TYPE_DECAYED) || - !has_aos (sat, qth)) { + predict_calc (sat, qth, start); - return 0.0; + /* check whether satellite has aos */ + if ((sat->otype == ORBIT_TYPE_GEO) || + (sat->otype == ORBIT_TYPE_DECAYED) || + !has_aos (sat, qth)) { - } + return 0.0; + } - if (sat->el < 0.0) - t = find_aos (sat, qth, start, maxdt) + 0.001; // +1.5 min - /* invalid time (potentially returned by find_aos) */ - if (t < 0.01) - return 0.0; + if (sat->el < 0.0) + t = find_aos (sat, qth, start, maxdt) + 0.001; // +1.5 min - /* update satellite data */ - predict_calc (sat, qth, t); + /* invalid time (potentially returned by find_aos) */ + if (t < 0.01) + return 0.0; + /* update satellite data */ + predict_calc (sat, qth, t); - /* use upper time limit */ - if (maxdt > 0.0) { - /* coarse steps */ - while ((sat->el >= 1.0) && (t <= (start + maxdt))) { - t += cos((sat->el - 1.0) * de2ra) * sqrt(sat->alt) / 25000.0; - predict_calc (sat, qth, t); - } + /* use upper time limit */ + if (maxdt > 0.0) { - /* fine steps */ - while ((lostime == 0.0) && (t <= (start + maxdt))) { - - t += sat->el * sqrt(sat->alt)/502500.0; - predict_calc (sat, qth, t); - - if (fabs(sat->el) < 0.005) - lostime = t; - } - } + /* coarse steps */ + while ((sat->el >= 1.0) && (t <= (start + maxdt))) { + t += cos((sat->el - 1.0) * de2ra) * sqrt(sat->alt) / 25000.0; + predict_calc (sat, qth, t); + } - /* don't use upper limit */ - else { + /* fine steps */ + while ((lostime == 0.0) && (t <= (start + maxdt))) { + + t += sat->el * sqrt(sat->alt)/502500.0; + predict_calc (sat, qth, t); + + if (fabs(sat->el) < 0.005) + lostime = t; + } + } - /* coarse steps */ - while (sat->el >= 1.0) { - t += cos((sat->el - 1.0) * de2ra) * sqrt(sat->alt) / 25000.0; - predict_calc (sat, qth, t); - } + /* don't use upper limit */ + else { - /* fine steps */ - while (lostime == 0.0) { - - t += sat->el * sqrt(sat->alt)/502500.0; - predict_calc (sat, qth, t); - - if (fabs(sat->el) < 0.005) - lostime = t; - } - } - + /* coarse steps */ + while (sat->el >= 1.0) { + t += cos((sat->el - 1.0) * de2ra) * sqrt(sat->alt) / 25000.0; + predict_calc (sat, qth, t); + } - return lostime; + /* fine steps */ + while (lostime == 0.0) { + + t += sat->el * sqrt(sat->alt)/502500.0; + predict_calc (sat, qth, t); + + if (fabs(sat->el) < 0.005) + lostime = t; + } + } + + + return lostime; } @@ -311,29 +311,29 @@ gdouble find_prev_aos (sat_t *sat, qth_t *qth, gdouble start) { - gdouble aostime = start; + gdouble aostime = start; - /* make sure current sat values are - in sync with the time - */ - predict_calc (sat, qth, start); + /* make sure current sat values are + in sync with the time + */ + predict_calc (sat, qth, start); - /* check whether satellite has aos */ - if ((sat->otype == ORBIT_TYPE_GEO) || - (sat->otype == ORBIT_TYPE_DECAYED) || - !has_aos (sat, qth)) { + /* check whether satellite has aos */ + if ((sat->otype == ORBIT_TYPE_GEO) || + (sat->otype == ORBIT_TYPE_DECAYED) || + !has_aos (sat, qth)) { - return 0.0; + return 0.0; - } + } - while (sat->el >= 0.0) { - aostime -= 0.0005; // 0.75 min - predict_calc (sat, qth, aostime); - } + while (sat->el >= 0.0) { + aostime -= 0.0005; // 0.75 min + predict_calc (sat, qth, aostime); + } - return aostime; + return aostime; } /** \brief Predict the next pass. @@ -355,14 +355,14 @@ pass_t * get_next_pass (sat_t *sat, qth_t *qth, gdouble maxdt) { - gdouble now; + gdouble now; - /* get the current time and call - the get_pass function */ - now = get_current_daynum (); + /* get the current time and call + the get_pass function */ + now = get_current_daynum (); - return get_pass (sat, qth, now, maxdt); + return get_pass (sat, qth, now, maxdt); } @@ -385,14 +385,14 @@ GSList * get_next_passes (sat_t *sat, qth_t *qth, gdouble maxdt, guint num) { - gdouble now; + gdouble now; - /* get the current time and call - the get_pass function */ - now = get_current_daynum (); + /* get the current time and call + the get_pass function */ + now = get_current_daynum (); - return get_passes (sat, qth, now, maxdt, num); + return get_passes (sat, qth, now, maxdt, num); } @@ -420,165 +420,165 @@ pass_t * get_pass (sat_t *sat, qth_t *qth, gdouble start, gdouble maxdt) { - gdouble aos = 0.0; /* time of AOS */ - gdouble tca = 0.0; /* time of TCA */ - gdouble los = 0.0; /* time of LOS */ - gdouble dt = 0.0; /* time diff */ - gdouble step = 0.0; /* time step */ - gdouble t0 = start; - gdouble t; /* current time counter */ - gdouble tres = 0.0; /* required time resolution */ - gdouble max_el = 0.0; /* maximum elevation */ - pass_t *pass = NULL; - pass_detail_t *detail = NULL; - gboolean done = FALSE; - guint iter = 0; /* number of iterations */ + gdouble aos = 0.0; /* time of AOS */ + gdouble tca = 0.0; /* time of TCA */ + gdouble los = 0.0; /* time of LOS */ + gdouble dt = 0.0; /* time diff */ + gdouble step = 0.0; /* time step */ + gdou... [truncated message content] |
From: <cs...@us...> - 2009-04-13 10:39:03
|
Revision: 265 http://gpredict.svn.sourceforge.net/gpredict/?rev=265&view=rev Author: csete Date: 2009-04-13 10:38:53 +0000 (Mon, 13 Apr 2009) Log Message: ----------- Fixed a bug that could cause find_aos() to go into infinite loop. Modified Paths: -------------- trunk/src/predict-tools.c Modified: trunk/src/predict-tools.c =================================================================== --- trunk/src/predict-tools.c 2009-04-13 00:29:32 UTC (rev 264) +++ trunk/src/predict-tools.c 2009-04-13 10:38:53 UTC (rev 265) @@ -148,7 +148,7 @@ t = find_los (sat, qth, start, maxdt) + 0.014; // +20 min /* invalid time (potentially returned by find_los) */ - if (t < 0.014) + if (t < 0.1) return 0.0; /* update satellite data */ @@ -159,7 +159,6 @@ /* coarse time steps */ while ((sat->el < -1.0) && (t <= (start + maxdt))) { - t -= 0.00035 * (sat->el * ((sat->alt / 8400.0) + 0.46) - 2.0); predict_calc (sat, qth, t); } @@ -622,6 +621,7 @@ for (i = 0; i < num; i++) { pass = get_pass (sat, qth, t, maxdt); + g_print ("%s: %d\n", __FUNCTION__, i); if (pass != NULL) { passes = g_slist_prepend (passes, pass); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-13 00:29:36
|
Revision: 264 http://gpredict.svn.sourceforge.net/gpredict/?rev=264&view=rev Author: csete Date: 2009-04-13 00:29:32 +0000 (Mon, 13 Apr 2009) Log Message: ----------- Increased tolerance. Modified Paths: -------------- trunk/src/gtk-rot-ctrl.c Modified: trunk/src/gtk-rot-ctrl.c =================================================================== --- trunk/src/gtk-rot-ctrl.c 2009-04-12 23:52:30 UTC (rev 263) +++ trunk/src/gtk-rot-ctrl.c 2009-04-13 00:29:32 UTC (rev 264) @@ -98,48 +98,48 @@ GType gtk_rot_ctrl_get_type () { - static GType gtk_rot_ctrl_type = 0; + static GType gtk_rot_ctrl_type = 0; - if (!gtk_rot_ctrl_type) { + if (!gtk_rot_ctrl_type) { - static const GTypeInfo gtk_rot_ctrl_info = { - sizeof (GtkRotCtrlClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) gtk_rot_ctrl_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (GtkRotCtrl), - 5, /* n_preallocs */ - (GInstanceInitFunc) gtk_rot_ctrl_init, - }; + static const GTypeInfo gtk_rot_ctrl_info = { + sizeof (GtkRotCtrlClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc) gtk_rot_ctrl_class_init, + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof (GtkRotCtrl), + 5, /* n_preallocs */ + (GInstanceInitFunc) gtk_rot_ctrl_init, + }; - gtk_rot_ctrl_type = g_type_register_static (GTK_TYPE_VBOX, - "GtkRotCtrl", - >k_rot_ctrl_info, - 0); - } + gtk_rot_ctrl_type = g_type_register_static (GTK_TYPE_VBOX, + "GtkRotCtrl", + >k_rot_ctrl_info, + 0); + } - return gtk_rot_ctrl_type; + return gtk_rot_ctrl_type; } static void gtk_rot_ctrl_class_init (GtkRotCtrlClass *class) { - GObjectClass *gobject_class; - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - GtkContainerClass *container_class; + GObjectClass *gobject_class; + GtkObjectClass *object_class; + GtkWidgetClass *widget_class; + GtkContainerClass *container_class; - gobject_class = G_OBJECT_CLASS (class); - object_class = (GtkObjectClass*) class; - widget_class = (GtkWidgetClass*) class; - container_class = (GtkContainerClass*) class; + gobject_class = G_OBJECT_CLASS (class); + object_class = (GtkObjectClass*) class; + widget_class = (GtkWidgetClass*) class; + container_class = (GtkContainerClass*) class; - parent_class = g_type_class_peek_parent (class); + parent_class = g_type_class_peek_parent (class); - object_class->destroy = gtk_rot_ctrl_destroy; + object_class->destroy = gtk_rot_ctrl_destroy; } @@ -159,7 +159,7 @@ ctrl->engaged = FALSE; ctrl->delay = 1000; ctrl->timerid = 0; - ctrl->tolerance = 1.0; + ctrl->tolerance = 5.0; ctrl->errcnt = 0; } @@ -255,7 +255,7 @@ rot_ctrl_timeout_cb, GTK_ROT_CTRL (widget)); - return widget; + return widget; } @@ -552,7 +552,7 @@ gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 2, 3); - toler = gtk_spin_button_new_with_range (0.01, 10.0, 0.01); + toler = gtk_spin_button_new_with_range (0.01, 50.0, 0.01); gtk_spin_button_set_digits (GTK_SPIN_BUTTON (toler), 2); gtk_widget_set_tooltip_text (toler, _("This parameter controls the tolerance between "\ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 23:52:31
|
Revision: 263 http://gpredict.svn.sourceforge.net/gpredict/?rev=263&view=rev Author: csete Date: 2009-04-12 23:52:30 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Fixed a bug that was introduced while adding the new PTT config. Modified Paths: -------------- trunk/src/sat-pref-rig-editor.c Modified: trunk/src/sat-pref-rig-editor.c =================================================================== --- trunk/src/sat-pref-rig-editor.c 2009-04-12 23:45:43 UTC (rev 262) +++ trunk/src/sat-pref-rig-editor.c 2009-04-12 23:52:30 UTC (rev 263) @@ -309,6 +309,9 @@ else gtk_spin_button_set_value (GTK_SPIN_BUTTON (port), 4532); /* hamlib default? */ + /* radio type */ + gtk_combo_box_set_active (GTK_COMBO_BOX (type), conf->type); + /* ptt */ gtk_combo_box_set_active (GTK_COMBO_BOX (ptt), conf->ptt); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 23:45:46
|
Revision: 262 http://gpredict.svn.sourceforge.net/gpredict/?rev=262&view=rev Author: csete Date: 2009-04-12 23:45:43 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Updated with new PTT info. Modified Paths: -------------- trunk/doc/um/gpredict-user-manual.odt Modified: trunk/doc/um/gpredict-user-manual.odt =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 23:06:10
|
Revision: 261 http://gpredict.svn.sourceforge.net/gpredict/?rev=261&view=rev Author: csete Date: 2009-04-12 23:05:56 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Removed reminiscent debug code. Modified Paths: -------------- trunk/src/gtk-rig-ctrl.c Modified: trunk/src/gtk-rig-ctrl.c =================================================================== --- trunk/src/gtk-rig-ctrl.c 2009-04-12 22:54:11 UTC (rev 260) +++ trunk/src/gtk-rig-ctrl.c 2009-04-12 23:05:56 UTC (rev 261) @@ -1547,11 +1547,9 @@ { if (ctrl->engaged) { if (get_ptt (ctrl, ctrl->conf) == TRUE) { - g_print ("TX CYCLE\n"); exec_tx_cycle (ctrl); } else { - g_print ("RX CYCLE\n"); exec_rx_cycle (ctrl); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 22:54:21
|
Revision: 260 http://gpredict.svn.sourceforge.net/gpredict/?rev=260&view=rev Author: csete Date: 2009-04-12 22:54:11 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Updated. Modified Paths: -------------- trunk/ChangeLog Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2009-04-12 22:53:48 UTC (rev 259) +++ trunk/ChangeLog 2009-04-12 22:54:11 UTC (rev 260) @@ -10,6 +10,23 @@ * data/Makefile.am: Include some transponder data in distribution. + * src/sat-info.c: + Show transponder data when avaialble. + + * src/trsp-conf.[ch]: + Added mode string. + + * src/radio-conf.[ch]: + * src/sat-pref-rig.c: + * src/sat-pref-rig-editor.c: + Changed PTT parameter to integer to allow specifying the PTT type. This + allows reading PTT from classic ICOM radios if PTT (or SQL) is acquired + by special CAT interface feeding the signal to CTS (e.g. Microham USB II) + and using get_dcd(). + + * src/gtk-rig-ctrl.c: + Implemented new PTT option. + 2009-04-11 Alexandru Csete <oz...@gm...> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 22:53:57
|
Revision: 259 http://gpredict.svn.sourceforge.net/gpredict/?rev=259&view=rev Author: csete Date: 2009-04-12 22:53:48 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Implemented new PTT option. Modified Paths: -------------- trunk/src/gtk-rig-ctrl.c Modified: trunk/src/gtk-rig-ctrl.c =================================================================== --- trunk/src/gtk-rig-ctrl.c 2009-04-12 22:53:19 UTC (rev 258) +++ trunk/src/gtk-rig-ctrl.c 2009-04-12 22:53:48 UTC (rev 259) @@ -1547,9 +1547,11 @@ { if (ctrl->engaged) { if (get_ptt (ctrl, ctrl->conf) == TRUE) { + g_print ("TX CYCLE\n"); exec_tx_cycle (ctrl); } else { + g_print ("RX CYCLE\n"); exec_rx_cycle (ctrl); } } @@ -1840,10 +1842,17 @@ __FILE__, __LINE__, conf->host, conf->port); } - /* send command (get_ptt: t) */ - buff = g_strdup_printf ("t"); + if (conf->ptt == PTT_TYPE_CAT) { + /* send command get_ptt (t) */ + buff = g_strdup_printf ("t"); + size = 1; + } + else { + /* send command \get_dcd */ + buff = g_strdup_printf ("%c",0x8b); + size = 1; + } - size = 1; written = send(sock, buff, size, 0); if (written != size) { sat_log_log (SAT_LOG_LEVEL_ERROR, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 22:53:30
|
Revision: 258 http://gpredict.svn.sourceforge.net/gpredict/?rev=258&view=rev Author: csete Date: 2009-04-12 22:53:19 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Changed PTT to int to allow using get_dcd with special interfaces. Modified Paths: -------------- trunk/src/radio-conf.c trunk/src/radio-conf.h trunk/src/sat-pref-rig-editor.c trunk/src/sat-pref-rig.c Modified: trunk/src/radio-conf.c =================================================================== --- trunk/src/radio-conf.c 2009-04-12 19:02:15 UTC (rev 257) +++ trunk/src/radio-conf.c 2009-04-12 22:53:19 UTC (rev 258) @@ -40,7 +40,7 @@ #define KEY_LO "LO" #define KEY_LOUP "LO_UP" #define KEY_TYPE "Type" -#define KEY_PTT "READ_PTT" +#define KEY_PTT "PTT" /** \brief Read radio configuration. @@ -152,7 +152,7 @@ return FALSE; } - conf->ptt = g_key_file_get_boolean (cfg, GROUP, KEY_PTT, &error); + conf->ptt = g_key_file_get_integer (cfg, GROUP, KEY_PTT, &error); if (error != NULL) { sat_log_log (SAT_LOG_LEVEL_ERROR, _("%s: Error reading radio conf from %s (%s)."), @@ -202,7 +202,7 @@ g_key_file_set_double (cfg, GROUP, KEY_LO, conf->lo); g_key_file_set_double (cfg, GROUP, KEY_LOUP, conf->loup); g_key_file_set_integer (cfg, GROUP, KEY_TYPE, conf->type); - g_key_file_set_boolean (cfg, GROUP, KEY_PTT, conf->ptt); + g_key_file_set_integer (cfg, GROUP, KEY_PTT, conf->ptt); /* convert to text sdata */ data = g_key_file_to_data (cfg, &len, NULL); Modified: trunk/src/radio-conf.h =================================================================== --- trunk/src/radio-conf.h 2009-04-12 19:02:15 UTC (rev 257) +++ trunk/src/radio-conf.h 2009-04-12 22:53:19 UTC (rev 258) @@ -41,6 +41,11 @@ RIG_TYPE_DUPLEX /*!< Rig is a full duplex radio, e.g. IC910 */ } rig_type_t; +typedef enum { + PTT_TYPE_NONE = 0, /*!< Don't read PTT */ + PTT_TYPE_CAT, /*!< Read PTT using get_ptt CAT command */ + PTT_TYPE_DCD /*!< Read PTT using get_dcd */ +} ptt_type_t; /** \brief Radio configuration. */ typedef struct { @@ -51,7 +56,7 @@ compatibility with rest of code). Downlink. */ gdouble loup; /*!< local oscillator freq in Hz for uplink. */ rig_type_t type; /*!< Radio type */ - gboolean ptt; /*!< Flag indicating that we should read PTT status (needed for RX, TX, and TRX) */ + ptt_type_t ptt; /*!< PTT type (needed for RX, TX, and TRX) */ } radio_conf_t; Modified: trunk/src/sat-pref-rig-editor.c =================================================================== --- trunk/src/sat-pref-rig-editor.c 2009-04-12 19:02:15 UTC (rev 257) +++ trunk/src/sat-pref-rig-editor.c 2009-04-12 22:53:19 UTC (rev 258) @@ -66,6 +66,7 @@ static gboolean apply_changes (radio_conf_t *conf); static void name_changed (GtkWidget *widget, gpointer data); static void type_changed (GtkWidget *widget, gpointer data); +static void ptt_changed (GtkWidget *widget, gpointer data); /** \brief Add or edit a radio configuration. @@ -76,63 +77,63 @@ void sat_pref_rig_editor_run (radio_conf_t *conf) { - gint response; - gboolean finished = FALSE; + gint response; + gboolean finished = FALSE; - /* crate dialog and add contents */ - dialog = gtk_dialog_new_with_buttons (_("Edit radio configuration"), - GTK_WINDOW (window), - GTK_DIALOG_MODAL | - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_CLEAR, - GTK_RESPONSE_REJECT, - GTK_STOCK_CANCEL, - GTK_RESPONSE_CANCEL, - GTK_STOCK_OK, - GTK_RESPONSE_OK, - NULL); + /* crate dialog and add contents */ + dialog = gtk_dialog_new_with_buttons (_("Edit radio configuration"), + GTK_WINDOW (window), + GTK_DIALOG_MODAL | + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_STOCK_CLEAR, + GTK_RESPONSE_REJECT, + GTK_STOCK_CANCEL, + GTK_RESPONSE_CANCEL, + GTK_STOCK_OK, + GTK_RESPONSE_OK, + NULL); - /* disable OK button to begin with */ - gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), - GTK_RESPONSE_OK, - FALSE); + /* disable OK button to begin with */ + gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + FALSE); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), - create_editor_widgets (conf)); + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), + create_editor_widgets (conf)); - /* this hacky-thing is to keep the dialog running in case the - CLEAR button is plressed. OK and CANCEL will exit the loop - */ - while (!finished) { + /* this hacky-thing is to keep the dialog running in case the + CLEAR button is plressed. OK and CANCEL will exit the loop + */ + while (!finished) { - response = gtk_dialog_run (GTK_DIALOG (dialog)); + response = gtk_dialog_run (GTK_DIALOG (dialog)); - switch (response) { + switch (response) { - /* OK */ - case GTK_RESPONSE_OK: - if (apply_changes (conf)) { - finished = TRUE; - } - else { - finished = FALSE; - } - break; + /* OK */ + case GTK_RESPONSE_OK: + if (apply_changes (conf)) { + finished = TRUE; + } + else { + finished = FALSE; + } + break; - /* CLEAR */ - case GTK_RESPONSE_REJECT: - clear_widgets (); - break; + /* CLEAR */ + case GTK_RESPONSE_REJECT: + clear_widgets (); + break; - /* Everything else is considered CANCEL */ - default: - finished = TRUE; - break; - } - } + /* Everything else is considered CANCEL */ + default: + finished = TRUE; + break; + } + } - gtk_widget_destroy (dialog); + gtk_widget_destroy (dialog); } @@ -140,38 +141,38 @@ static GtkWidget * create_editor_widgets (radio_conf_t *conf) { - GtkWidget *table; - GtkWidget *label; + GtkWidget *table; + GtkWidget *label; - table = gtk_table_new (7, 4, FALSE); - gtk_container_set_border_width (GTK_CONTAINER (table), 5); - gtk_table_set_col_spacings (GTK_TABLE (table), 5); - gtk_table_set_row_spacings (GTK_TABLE (table), 5); + table = gtk_table_new (7, 4, FALSE); + gtk_container_set_border_width (GTK_CONTAINER (table), 5); + gtk_table_set_col_spacings (GTK_TABLE (table), 5); + gtk_table_set_row_spacings (GTK_TABLE (table), 5); - /* Config name */ - label = gtk_label_new (_("Name")); - gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 0, 1); - - name = gtk_entry_new (); - gtk_entry_set_max_length (GTK_ENTRY (name), 25); + /* Config name */ + label = gtk_label_new (_("Name")); + gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 0, 1); + + name = gtk_entry_new (); + gtk_entry_set_max_length (GTK_ENTRY (name), 25); gtk_widget_set_tooltip_text (name, _("Enter a short name for this configuration, e.g. IC910-1.\n"\ - "Allowed charachters: 0..9, a..z, A..Z, - and _")); - gtk_table_attach_defaults (GTK_TABLE (table), name, 1, 4, 0, 1); + "Allowed charachters: 0..9, a..z, A..Z, - and _")); + gtk_table_attach_defaults (GTK_TABLE (table), name, 1, 4, 0, 1); - /* attach changed signal so that we can enable OK button when - a proper name has been entered - */ - g_signal_connect (name, "changed", G_CALLBACK (name_changed), NULL); + /* attach changed signal so that we can enable OK button when + a proper name has been entered + */ + g_signal_connect (name, "changed", G_CALLBACK (name_changed), NULL); - /* Host */ - label = gtk_label_new (_("Host")); - gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 1, 2); - + /* Host */ + label = gtk_label_new (_("Host")); + gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 1, 2); + host = gtk_entry_new (); gtk_entry_set_max_length (GTK_ENTRY (host), 50); gtk_widget_set_tooltip_text (host, @@ -193,7 +194,7 @@ gtk_table_attach_defaults (GTK_TABLE (table), port, 1, 3, 2, 3); /* radio type */ - label = gtk_label_new (_("Type")); + label = gtk_label_new (_("Radio type")); gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 3, 4); @@ -223,14 +224,26 @@ gtk_table_attach_defaults (GTK_TABLE (table), type, 1, 3, 3, 4); /* ptt */ - ptt = gtk_check_button_new_with_label (_("Monitor PTT status")); - gtk_widget_set_tooltip_text (ptt, - _("If checked, the radio controller will monitor the status of"\ - " the PTT and act accordingly. For example, the doppler tuning "\ - "on an RX only radio will be suspended while PTT is active. This"\ - " functionality is also required for radios that are used as both"\ - " TX and RX (simplex)")); - gtk_table_attach_defaults (GTK_TABLE (table), ptt, 1, 4, 4, 5); + label = gtk_label_new (_("PTT status")); + gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 4, 5); + + ptt = gtk_combo_box_new_text (); + gtk_combo_box_append_text (GTK_COMBO_BOX (ptt), _("None")); + gtk_combo_box_append_text (GTK_COMBO_BOX (ptt), _("Read PTT")); + gtk_combo_box_append_text (GTK_COMBO_BOX (ptt), _("Read DCD")); + gtk_combo_box_set_active (GTK_COMBO_BOX (ptt), 0); + g_signal_connect (ptt, "changed", G_CALLBACK (ptt_changed), NULL); + gtk_widget_set_tooltip_markup (ptt, + _("Select PTT type.\n\n"\ + "<b>None:</b>\nDon't read PTT status from this radio.\n\n"\ + "<b>Read PTT:</b>\nRead PTT status using get_ptt CAT command. "\ + "You have to check that your radio and hamlib supports this.\n\n"\ + "<b>Read DCD:</b>\nRead PTT status using get_dcd command. "\ + "This can be used if your radio does not support the read_ptt "\ + "CAT command and you have a special interface that can "\ + "read squelch status and send it via CTS.")); + gtk_table_attach_defaults (GTK_TABLE (table), ptt, 1, 3, 4, 5); /* Downconverter LO frequency */ @@ -268,12 +281,12 @@ gtk_table_attach_defaults (GTK_TABLE (table), label, 3, 4, 6, 7); - if (conf->name != NULL) - update_widgets (conf); + if (conf->name != NULL) + update_widgets (conf); - gtk_widget_show_all (table); + gtk_widget_show_all (table); - return table; + return table; } @@ -297,39 +310,8 @@ gtk_spin_button_set_value (GTK_SPIN_BUTTON (port), 4532); /* hamlib default? */ /* ptt */ - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ptt), conf->ptt); + gtk_combo_box_set_active (GTK_COMBO_BOX (ptt), conf->ptt); - /* rig type */ - switch (conf->type) { - case RIG_TYPE_RX: - gtk_combo_box_set_active (GTK_COMBO_BOX (type), conf->type); - gtk_widget_set_sensitive (ptt, TRUE); - break; - - case RIG_TYPE_TX: - gtk_combo_box_set_active (GTK_COMBO_BOX (type), conf->type); - gtk_widget_set_sensitive (ptt, TRUE); - break; - - case RIG_TYPE_TRX: - gtk_combo_box_set_active (GTK_COMBO_BOX (type), conf->type); - /* force ptt to TRUE */ - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ptt), TRUE); - gtk_widget_set_sensitive (ptt, FALSE); - break; - - case RIG_TYPE_DUPLEX: - gtk_combo_box_set_active (GTK_COMBO_BOX (type), conf->type); - gtk_widget_set_sensitive (ptt, FALSE); - break; - - default: - gtk_combo_box_set_active (GTK_COMBO_BOX (type), RIG_TYPE_RX); - gtk_widget_set_sensitive (ptt, TRUE); - break; - } - - /* lo down in MHz */ gtk_spin_button_set_value (GTK_SPIN_BUTTON (lo), conf->lo / 1000000.0); @@ -354,6 +336,7 @@ gtk_spin_button_set_value (GTK_SPIN_BUTTON (lo), 0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (loup), 0); gtk_combo_box_set_active (GTK_COMBO_BOX (type), RIG_TYPE_RX); + gtk_combo_box_set_active (GTK_COMBO_BOX (ptt), PTT_TYPE_NONE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ptt), FALSE); } @@ -393,9 +376,9 @@ conf->type = gtk_combo_box_get_active (GTK_COMBO_BOX (type)); /* ptt */ - conf->ptt = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ptt)); + conf->ptt = gtk_combo_box_get_active (GTK_COMBO_BOX (ptt)); - return TRUE; + return TRUE; } @@ -409,56 +392,56 @@ static void name_changed (GtkWidget *widget, gpointer data) { - const gchar *text; - gchar *entry, *end, *j; - gint len, pos; + const gchar *text; + gchar *entry, *end, *j; + gint len, pos; - /* step 1: ensure that only valid characters are entered - (stolen from xlog, tnx pg4i) - */ - entry = gtk_editable_get_chars (GTK_EDITABLE (widget), 0, -1); - if ((len = g_utf8_strlen (entry, -1)) > 0) - { - end = entry + g_utf8_strlen (entry, -1); - for (j = entry; j < end; ++j) - { - switch (*j) - { - case '0' ... '9': - case 'a' ... 'z': - case 'A' ... 'Z': - case '-': - case '_': - break; - default: - gdk_beep (); - pos = gtk_editable_get_position (GTK_EDITABLE (widget)); - gtk_editable_delete_text (GTK_EDITABLE (widget), - pos, pos+1); - break; - } - } - } + /* step 1: ensure that only valid characters are entered + (stolen from xlog, tnx pg4i) + */ + entry = gtk_editable_get_chars (GTK_EDITABLE (widget), 0, -1); + if ((len = g_utf8_strlen (entry, -1)) > 0) + { + end = entry + g_utf8_strlen (entry, -1); + for (j = entry; j < end; ++j) + { + switch (*j) + { + case '0' ... '9': + case 'a' ... 'z': + case 'A' ... 'Z': + case '-': + case '_': + break; + default: + gdk_beep (); + pos = gtk_editable_get_position (GTK_EDITABLE (widget)); + gtk_editable_delete_text (GTK_EDITABLE (widget), + pos, pos+1); + break; + } + } + } - /* step 2: if name seems all right, enable OK button */ - text = gtk_entry_get_text (GTK_ENTRY (widget)); + /* step 2: if name seems all right, enable OK button */ + text = gtk_entry_get_text (GTK_ENTRY (widget)); - if (g_utf8_strlen (text, -1) > 0) { - gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), - GTK_RESPONSE_OK, - TRUE); - } - else { - gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), - GTK_RESPONSE_OK, - FALSE); - } + if (g_utf8_strlen (text, -1) > 0) { + gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + TRUE); + } + else { + gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + FALSE); + } } -/** \brief Manage type changed signals. +/** \brief Manage rig type changed signals. * \param widget The GtkComboBox that received the signal. * \param data User data (always NULL). * @@ -467,28 +450,31 @@ static void type_changed (GtkWidget *widget, gpointer data) { - switch (gtk_combo_box_get_active (GTK_COMBO_BOX (widget))) { - case RIG_TYPE_RX: - gtk_widget_set_sensitive (ptt, TRUE); - break; - - case RIG_TYPE_TX: - gtk_widget_set_sensitive (ptt, TRUE); - break; - - case RIG_TYPE_TRX: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ptt), TRUE); - gtk_widget_set_sensitive (ptt, FALSE); - break; - - case RIG_TYPE_DUPLEX: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ptt), FALSE); - gtk_widget_set_sensitive (ptt, FALSE); - break; - - default: - gtk_widget_set_sensitive (ptt, TRUE); - break; + + if (gtk_combo_box_get_active (GTK_COMBO_BOX (widget)) == RIG_TYPE_TRX) { + if (gtk_combo_box_get_active (GTK_COMBO_BOX (ptt)) == PTT_TYPE_NONE) { + gtk_combo_box_set_active (GTK_COMBO_BOX (ptt), PTT_TYPE_CAT); + } } +} +/** \brief Manage ptt type changed signals. + * \param widget The GtkComboBox that received the signal. + * \param data User data (always NULL). + * + * This function is called when the user selects a new ptt type. + */ +static void +ptt_changed (GtkWidget *widget, gpointer data) +{ + + if (gtk_combo_box_get_active (GTK_COMBO_BOX (widget)) == PTT_TYPE_NONE) { + if (gtk_combo_box_get_active (GTK_COMBO_BOX (type)) == RIG_TYPE_TRX) { + /* not good, we need to have PTT for this type */ + gtk_combo_box_set_active (GTK_COMBO_BOX (widget), PTT_TYPE_CAT); + } + } } + + + Modified: trunk/src/sat-pref-rig.c =================================================================== --- trunk/src/sat-pref-rig.c 2009-04-12 19:02:15 UTC (rev 257) +++ trunk/src/sat-pref-rig.c 2009-04-12 22:53:19 UTC (rev 258) @@ -212,7 +212,7 @@ G_TYPE_STRING, // host G_TYPE_INT, // port G_TYPE_INT, // type - G_TYPE_BOOLEAN, // PTT + G_TYPE_INT, // PTT G_TYPE_DOUBLE, // LO DOWN G_TYPE_DOUBLE // LO UO ); @@ -353,7 +353,7 @@ .host = NULL, .port = 4532, .type = RIG_TYPE_RX, - .ptt = FALSE, + .ptt = 0, .lo = 0.0, .loup = 0.0, }; @@ -437,7 +437,7 @@ .host = NULL, .port = 4532, .type = RIG_TYPE_RX, - .ptt = FALSE, + .ptt = 0, .lo = 0.0, .loup = 0.0, }; @@ -487,7 +487,7 @@ .host = NULL, .port = 4532, .type = RIG_TYPE_RX, - .ptt = FALSE, + .ptt = 0, .lo = 0.0, .loup = 0.0, }; @@ -699,16 +699,25 @@ GtkTreeIter *iter, gpointer column) { - gboolean ptt; + gint ptt; guint coli = GPOINTER_TO_UINT (column); gtk_tree_model_get (model, iter, coli, &ptt, -1); - if (ptt) - g_object_set (renderer, "text", _("Monitor"), NULL); - else - g_object_set (renderer, "text", _("Ignore"), NULL); - + switch (ptt) { + case PTT_TYPE_NONE: + g_object_set (renderer, "text", _("None"), NULL); + break; + case PTT_TYPE_CAT: + g_object_set (renderer, "text", _("PTT"), NULL); + break; + case PTT_TYPE_DCD: + g_object_set (renderer, "text", _("DCD"), NULL); + break; + default: + g_object_set (renderer, "text", _("None"), NULL); + break; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 19:02:19
|
Revision: 257 http://gpredict.svn.sourceforge.net/gpredict/?rev=257&view=rev Author: csete Date: 2009-04-12 19:02:15 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Added modes string and misc fixes. Modified Paths: -------------- trunk/data/24278.trsp trunk/data/25544.trsp trunk/data/27607.trsp trunk/data/7530.trsp Modified: trunk/data/24278.trsp =================================================================== --- trunk/data/24278.trsp 2009-04-12 18:45:16 UTC (rev 256) +++ trunk/data/24278.trsp 2009-04-12 19:02:15 UTC (rev 257) @@ -3,7 +3,7 @@ UP_HIGH=146000000 DOWN_LOW=435800000 DOWN_HIGH=435900000 -INVERT=TRUE +INVERT=true [Mode U CW Beacon] DOWN_LOW=435795000 Modified: trunk/data/25544.trsp =================================================================== --- trunk/data/25544.trsp 2009-04-12 18:45:16 UTC (rev 256) +++ trunk/data/25544.trsp 2009-04-12 19:02:15 UTC (rev 257) @@ -1,17 +1,20 @@ [Mode V/V AFSK Packet] UP_LOW=145990000 DOWN_LOW=145800000 +MODE=AFSK 1200 bps [Mode V/U FM Voice] UP_LOW=145800000 DOWN_LOW=437800000 -[Mode V APRS FM] +[Mode V APRS] UP_LOW=145825000 DOWN_LOW=145825000 +MODE=FM 1200 bps -[Mode V FM SSTV] +[Mode V Imaging] DOWN_LOW=145800000 +MODE=SSTV in FM carrier [Mode U/V FM Voice] UP_LOW=437800000 Modified: trunk/data/27607.trsp =================================================================== --- trunk/data/27607.trsp 2009-04-12 18:45:16 UTC (rev 256) +++ trunk/data/27607.trsp 2009-04-12 19:02:15 UTC (rev 257) @@ -1,3 +1,4 @@ [Mode V/U FM Voice] DOWN_LOW=436795000 UP_LOW=145850000 +MODE=FM, PL 67.0 Hz \ No newline at end of file Modified: trunk/data/7530.trsp =================================================================== --- trunk/data/7530.trsp 2009-04-12 18:45:16 UTC (rev 256) +++ trunk/data/7530.trsp 2009-04-12 19:02:15 UTC (rev 257) @@ -1,8 +1,10 @@ [Mode U/V Beacon] DOWN_LOW=145977500 +MODE=CW [Mode U Beacon] DOWN_LOW=435100000 +MODE=CW [Mode V/A (A) Lin] UP_LOW=145850000 @@ -10,6 +12,7 @@ DOWN_LOW=29400000 DOWN_HIGH=29500000 INVERT=false +MODE=SSB/CW [Mode U/V (B) Lin] UP_LOW=432125000 @@ -17,4 +20,5 @@ DOWN_LOW=145925000 DOWN_HIGH=145975000 INVERT=true +MODE=SSB/CW This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 18:45:20
|
Revision: 256 http://gpredict.svn.sourceforge.net/gpredict/?rev=256&view=rev Author: csete Date: 2009-04-12 18:45:16 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Show transponder data when avaialble. Modified Paths: -------------- trunk/src/sat-info.c Modified: trunk/src/sat-info.c =================================================================== --- trunk/src/sat-info.c 2009-04-12 18:44:54 UTC (rev 255) +++ trunk/src/sat-info.c 2009-04-12 18:45:16 UTC (rev 256) @@ -39,13 +39,11 @@ #include "orbit-tools.h" #include "predict-tools.h" #include "sat-pass-dialogs.h" +#include "trsp-conf.h" #include "sat-info.h" - - - - +static GtkWidget *create_transponder_table (guint catnum); static gchar *epoch_to_str (sat_t *sat); @@ -59,280 +57,289 @@ void show_sat_info (GtkWidget *menuitem, gpointer data) { - GtkWidget *dialog; - GtkWidget *table; - GtkWidget *label; - GtkWindow *toplevel = NULL; - sat_t *sat; - gchar *str; + GtkWidget *dialog; + GtkWidget *notebook; + GtkWidget *table; + GtkWidget *label; + GtkWindow *toplevel = NULL; + sat_t *sat; + gchar *str; - sat = SAT(g_object_get_data (G_OBJECT (menuitem), "sat")); + sat = SAT(g_object_get_data (G_OBJECT (menuitem), "sat")); - if (data != NULL) - toplevel = GTK_WINDOW (data); + if (data != NULL) + toplevel = GTK_WINDOW (data); - /* create table */ - table = gtk_table_new (20, 4, FALSE); - gtk_table_set_col_spacings (GTK_TABLE (table), 5); - gtk_table_set_row_spacings (GTK_TABLE (table), 5); - gtk_container_set_border_width (GTK_CONTAINER (table), 10); + /* create table */ + table = gtk_table_new (20, 4, FALSE); + gtk_table_set_col_spacings (GTK_TABLE (table), 5); + gtk_table_set_row_spacings (GTK_TABLE (table), 5); + gtk_container_set_border_width (GTK_CONTAINER (table), 10); - /* create table contents and add them to table */ + /* create table contents and add them to table */ - /* satellite name */ - label = gtk_label_new (NULL); - gtk_label_set_markup (GTK_LABEL (label), _("<b>Satellite name:</b>")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 0, 1); + /* satellite name */ + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL (label), _("<b>Satellite name:</b>")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 0, 1); - label = gtk_label_new (NULL); - str = g_strdup_printf (_("<b>%s</b>"), sat->tle.sat_name); - gtk_label_set_markup (GTK_LABEL (label), str); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 0, 1); - g_free (str); + label = gtk_label_new (NULL); + str = g_strdup_printf (_("<b>%s</b>"), sat->tle.sat_name); + gtk_label_set_markup (GTK_LABEL (label), str); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 0, 1); + g_free (str); - /* operational status */ - label = gtk_label_new (_("Operational Status:")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 1, 2); + /* operational status */ + label = gtk_label_new (_("Operational Status:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 1, 2); - switch (sat->tle.status) { + switch (sat->tle.status) { - case OP_STAT_OPERATIONAL: - label = gtk_label_new (_("Operational")); - break; + case OP_STAT_OPERATIONAL: + label = gtk_label_new (_("Operational")); + break; - case OP_STAT_NONOP: - label = gtk_label_new (_("Non-operational")); - break; + case OP_STAT_NONOP: + label = gtk_label_new (_("Non-operational")); + break; - case OP_STAT_PARTIAL: - label = gtk_label_new (_("Partially operational")); - break; + case OP_STAT_PARTIAL: + label = gtk_label_new (_("Partially operational")); + break; - case OP_STAT_STDBY: - label = gtk_label_new (_("Backup/Standby")); - break; + case OP_STAT_STDBY: + label = gtk_label_new (_("Backup/Standby")); + break; - case OP_STAT_SPARE: - label = gtk_label_new (_("Spare")); - break; + case OP_STAT_SPARE: + label = gtk_label_new (_("Spare")); + break; - case OP_STAT_EXTENDED: - label = gtk_label_new (_("Extended Mission")); - break; + case OP_STAT_EXTENDED: + label = gtk_label_new (_("Extended Mission")); + break; - default: - label = gtk_label_new (_("Unknown")); - break; + default: + label = gtk_label_new (_("Unknown")); + break; - } + } - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 1, 2); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 1, 2); - /* Catnum */ - label = gtk_label_new (_("Catalogue number:")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 2, 3); + /* Catnum */ + label = gtk_label_new (_("Catalogue number:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 2, 3); - str = g_strdup_printf ("%d", sat->tle.catnr); - label = gtk_label_new (str); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 2, 3); - g_free (str); + str = g_strdup_printf ("%d", sat->tle.catnr); + label = gtk_label_new (str); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 2, 3); + g_free (str); - /* international designator */ - label = gtk_label_new (_("Internation designator:")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 3, 4); + /* international designator */ + label = gtk_label_new (_("Internation designator:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 3, 4); - label = gtk_label_new (sat->tle.idesg); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 3, 4); + label = gtk_label_new (sat->tle.idesg); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 3, 4); - /* elset number */ - label = gtk_label_new (_("Element set number:")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 4, 5); + /* elset number */ + label = gtk_label_new (_("Element set number:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 4, 5); - str = g_strdup_printf ("%d", sat->tle.elset); - label = gtk_label_new (str); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 4, 5); - g_free (str); + str = g_strdup_printf ("%d", sat->tle.elset); + label = gtk_label_new (str); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 4, 5); + g_free (str); - /* elset epoch */ - label = gtk_label_new (_("Epoch time:")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 5, 6); + /* elset epoch */ + label = gtk_label_new (_("Epoch time:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 5, 6); - str = epoch_to_str (sat); - label = gtk_label_new (str); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 5, 6); - g_free (str); + str = epoch_to_str (sat); + label = gtk_label_new (str); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 5, 6); + g_free (str); - /* Revolution Number @ Epoch */ - label = gtk_label_new (_("Orbit number @ epoch:")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 6, 7); + /* Revolution Number @ Epoch */ + label = gtk_label_new (_("Orbit number @ epoch:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 6, 7); - str = g_strdup_printf ("%d", sat->tle.revnum); - label = gtk_label_new (str); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 6, 7); - g_free (str); + str = g_strdup_printf ("%d", sat->tle.revnum); + label = gtk_label_new (str); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 6, 7); + g_free (str); - /* ephermis type left out, since it is always 0 */ + /* ephermis type left out, since it is always 0 */ - /* separator */ - gtk_table_attach_defaults (GTK_TABLE (table), - gtk_hseparator_new (), - 0, 4, 7, 8); + /* separator */ + gtk_table_attach_defaults (GTK_TABLE (table), + gtk_hseparator_new (), + 0, 4, 7, 8); - /* Orbit inclination */ - label = gtk_label_new (_("Inclination:")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 8, 9); + /* Orbit inclination */ + label = gtk_label_new (_("Inclination:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 8, 9); - str = g_strdup_printf ("%.4f\302\260", sat->tle.xincl/de2ra); - label = gtk_label_new (str); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 8, 9); - g_free (str); + str = g_strdup_printf ("%.4f\302\260", sat->tle.xincl/de2ra); + label = gtk_label_new (str); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 8, 9); + g_free (str); - /* RAAN */ - label = gtk_label_new (_("RAAN:")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 9, 10); + /* RAAN */ + label = gtk_label_new (_("RAAN:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 9, 10); - str = g_strdup_printf ("%.4f\302\260", sat->tle.xnodeo/de2ra); - label = gtk_label_new (str); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 9, 10); - g_free (str); + str = g_strdup_printf ("%.4f\302\260", sat->tle.xnodeo/de2ra); + label = gtk_label_new (str); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 9, 10); + g_free (str); - /* Eccentricity */ - label = gtk_label_new (_("Eccentricity:")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 10, 11); + /* Eccentricity */ + label = gtk_label_new (_("Eccentricity:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 10, 11); - str = g_strdup_printf ("%.7f", sat->tle.eo); - label = gtk_label_new (str); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 10, 11); - g_free (str); + str = g_strdup_printf ("%.7f", sat->tle.eo); + label = gtk_label_new (str); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 10, 11); + g_free (str); - /* Argument of perigee */ - label = gtk_label_new (_("Arg. of perigee:")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 11, 12); + /* Argument of perigee */ + label = gtk_label_new (_("Arg. of perigee:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 11, 12); - str = g_strdup_printf ("%.4f\302\260", sat->tle.omegao/de2ra); - label = gtk_label_new (str); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 11, 12); - g_free (str); + str = g_strdup_printf ("%.4f\302\260", sat->tle.omegao/de2ra); + label = gtk_label_new (str); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 11, 12); + g_free (str); - /* Mean Anomaly */ - label = gtk_label_new (_("Mean anomaly:")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 12, 13); + /* Mean Anomaly */ + label = gtk_label_new (_("Mean anomaly:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 12, 13); - str = g_strdup_printf ("%.4f\302\260", sat->tle.xmo/de2ra); - label = gtk_label_new (str); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 12, 13); - g_free (str); + str = g_strdup_printf ("%.4f\302\260", sat->tle.xmo/de2ra); + label = gtk_label_new (str); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 12, 13); + g_free (str); - /* Mean Motion */ - label = gtk_label_new (_("Mean motion:")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 13, 14); + /* Mean Motion */ + label = gtk_label_new (_("Mean motion:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 13, 14); - //str = g_strdup_printf ("%.4f [rev/day]", sat->tle.xno/(xmnpda*(twopi/xmnpda/xmnpda))); - str = g_strdup_printf ("%.8f [rev/day]", sat->meanmo); - label = gtk_label_new (str); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 13, 14); - g_free (str); + //str = g_strdup_printf ("%.4f [rev/day]", sat->tle.xno/(xmnpda*(twopi/xmnpda/xmnpda))); + str = g_strdup_printf ("%.8f [rev/day]", sat->meanmo); + label = gtk_label_new (str); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 13, 14); + g_free (str); - /* one half of the first time derivative of mean motion */ - label = gtk_label_new (_("\302\275 d/dt (mean motion):")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 14, 15); + /* one half of the first time derivative of mean motion */ + label = gtk_label_new (_("\302\275 d/dt (mean motion):")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 14, 15); - str = g_strdup_printf ("%.5e [rev/day<sup>2</sup>]", - sat->tle.xndt2o/(twopi/xmnpda/xmnpda)); - label = gtk_label_new (NULL); - gtk_label_set_markup (GTK_LABEL (label), str); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 14, 15); - g_free (str); + str = g_strdup_printf ("%.5e [rev/day<sup>2</sup>]", + sat->tle.xndt2o/(twopi/xmnpda/xmnpda)); + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL (label), str); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 14, 15); + g_free (str); - /* one sixth of the second time derivative of mean motion */ - label = gtk_label_new (NULL); - gtk_label_set_markup (GTK_LABEL (label), - _("1/6 d<sup>2</sup>/dt<sup>2</sup> (mean motion):")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 15, 16); + /* one sixth of the second time derivative of mean motion */ + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL (label), + _("1/6 d<sup>2</sup>/dt<sup>2</sup> (mean motion):")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 15, 16); - str = g_strdup_printf ("%.5e [rev/day<sup>3</sup>]", - sat->tle.xndd6o*xmnpda/(twopi/xmnpda/xmnpda)); - label = gtk_label_new (NULL); - gtk_label_set_markup (GTK_LABEL (label), str); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 15, 16); - g_free (str); + str = g_strdup_printf ("%.5e [rev/day<sup>3</sup>]", + sat->tle.xndd6o*xmnpda/(twopi/xmnpda/xmnpda)); + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL (label), str); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 15, 16); + g_free (str); - /* B* drag term */ - label = gtk_label_new (_("B* drag term:")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 16, 17); + /* B* drag term */ + label = gtk_label_new (_("B* drag term:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 16, 17); - str = g_strdup_printf ("%.5e [R<sub>E</sub><sup>-1</sup>]", sat->tle.bstar*ae); - label = gtk_label_new (NULL); - gtk_label_set_markup (GTK_LABEL (label), str); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 16, 17); - g_free (str); + str = g_strdup_printf ("%.5e [R<sub>E</sub><sup>-1</sup>]", sat->tle.bstar*ae); + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL (label), str); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 16, 17); + g_free (str); - /* Orbit type */ + /* Orbit type */ - /* Next Event */ + /* Next Event */ + gtk_widget_show_all (table); + + + + notebook = gtk_notebook_new (); + gtk_notebook_append_page (GTK_NOTEBOOK (notebook), table, + gtk_label_new (_("Orbit Info"))); + gtk_notebook_append_page (GTK_NOTEBOOK (notebook), + create_transponder_table (sat->tle.catnr), + gtk_label_new (_("Transponders"))); - gtk_widget_show_all (table); + /* create dialog window with NULL parent */ + dialog = gtk_dialog_new_with_buttons (_("Satellite Info"), + toplevel, + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_STOCK_OK, + GTK_RESPONSE_ACCEPT, + NULL); - /* create dialog window with NULL parent */ - dialog = gtk_dialog_new_with_buttons (_("Satellite Info"), - toplevel, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_OK, - GTK_RESPONSE_ACCEPT, - NULL); + /* allow interaction with other windows */ + gtk_window_set_modal (GTK_WINDOW (dialog), FALSE); - /* allow interaction with other windows */ - gtk_window_set_modal (GTK_WINDOW (dialog), FALSE); + g_signal_connect (dialog, "response", + G_CALLBACK (gtk_widget_destroy), NULL); + g_signal_connect (dialog, "destroy", + G_CALLBACK (gtk_widget_destroyed), &dialog); - g_signal_connect (dialog, "response", - G_CALLBACK (gtk_widget_destroy), NULL); - g_signal_connect (dialog, "destroy", - G_CALLBACK (gtk_widget_destroyed), &dialog); + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), notebook); + + gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), table); + gtk_widget_show_all (dialog); - gtk_widget_show_all (dialog); - - } - /* BBBBB.BBBBBBBB] - Epoch Time -- 2-digit year, followed by 3-digit sequential day of the year, followed by the time represented as the fractional portion of one day, but... @@ -343,65 +350,156 @@ static gchar * epoch_to_str (sat_t *sat) { - GDate *epd; - guint h,m,s,sec; - gchar *buff; - gchar *fmt; - struct tm tms; - time_t t; - guint size; + GDate *epd; + guint h,m,s,sec; + gchar *buff; + gchar *fmt; + struct tm tms; + time_t t; + guint size; - /* http://celestrak.com/columns/v04n03/#FAQ02 - ... While talking about the epoch, this is perhaps a good place to answer - the other time-related questions. First, how is the epoch time format - interpreted? This question is best answered by using an example. An epoch - of 98001.00000000 corresponds to 0000 UT on 1998 January 01st in other - words, midnight between 1997 December 31 and 1998 January 01. An epoch of - 98000.00000000 would actually correspond to the beginning of 1997 December - 31st strange as that might seem. Note that the epoch day starts at UT - midnight (not noon) and that all times are measured mean solar rather than - sidereal time units (the answer to our third question). - */ - epd = g_date_new_dmy (1, 1, sat->tle.epoch_year); - g_date_add_days (epd, sat->tle.epoch_day-1); + /* http://celestrak.com/columns/v04n03/#FAQ02 + ... While talking about the epoch, this is perhaps a good place to answer + the other time-related questions. First, how is the epoch time format + interpreted? This question is best answered by using an example. An epoch + of 98001.00000000 corresponds to 0000 UT on 1998 January 01st in other + words, midnight between 1997 December 31 and 1998 January 01. An epoch of + 98000.00000000 would actually correspond to the beginning of 1997 December + 31st strange as that might seem. Note that the epoch day starts at UT + midnight (not noon) and that all times are measured mean solar rather than + sidereal time units (the answer to our third question). + */ + epd = g_date_new_dmy (1, 1, sat->tle.epoch_year); + g_date_add_days (epd, sat->tle.epoch_day-1); - /* convert date to struct tm */ - g_date_to_struct_tm (epd, &tms); + /* convert date to struct tm */ + g_date_to_struct_tm (epd, &tms); - /* add HMS */ - sec = (guint) floor (sat->tle.epoch_fod * 86400); /* fraction of day in seconds */ - - /* hour */ - h = (guint) floor (sec / 3600); - tms.tm_hour = h; + /* add HMS */ + sec = (guint) floor (sat->tle.epoch_fod * 86400); /* fraction of day in seconds */ - /* minutes */ - m = (guint) floor ((sec - (h*3600)) / 60); - tms.tm_min = m; + /* hour */ + h = (guint) floor (sec / 3600); + tms.tm_hour = h; - s = (guint) floor (sec - (h*3600) - (m*60)); - tms.tm_sec = s; + /* minutes */ + m = (guint) floor ((sec - (h*3600)) / 60); + tms.tm_min = m; - /* get format string */ - fmt = sat_cfg_get_str (SAT_CFG_STR_TIME_FORMAT); + s = (guint) floor (sec - (h*3600) - (m*60)); + tms.tm_sec = s; - /* format either local time or UTC depending on check box */ - t = mktime (&tms); - buff = g_try_malloc (51); + /* get format string */ + fmt = sat_cfg_get_str (SAT_CFG_STR_TIME_FORMAT); - if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_LOCAL_TIME)) - size = strftime (buff, 50, fmt, localtime (&t)); - else - size = strftime (buff, 50, fmt, gmtime (&t)); + /* format either local time or UTC depending on check box */ + t = mktime (&tms); + buff = g_try_malloc (51); - if (size < 50) - buff[size]='\0'; - else - buff[50]='\0'; + if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_LOCAL_TIME)) + size = strftime (buff, 50, fmt, localtime (&t)); + else + size = strftime (buff, 50, fmt, gmtime (&t)); - g_date_free (epd); - g_free (fmt); + if (size < 50) + buff[size]='\0'; + else + buff[50]='\0'; - return buff; + g_date_free (epd); + g_free (fmt); + + return buff; } +/** \brief Create transponder table. */ +static GtkWidget *create_transponder_table (guint catnum) +{ + GtkWidget *vbox,*label; + GSList *trsplist = NULL; + trsp_t *trsp = NULL; + guint i,n; + gchar *text; + + + trsplist = read_transponders (catnum); + if (trsplist == NULL) { + vbox = gtk_label_new ("No transponders"); + } + else { + vbox = gtk_vbox_new (FALSE, 0); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 10); + + /* Add each transponder to vbox */ + n = g_slist_length (trsplist); + for (i = 0; i < n; i++) { + gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new (" "), FALSE, FALSE, 0); + + trsp = (trsp_t *) g_slist_nth_data (trsplist, i); + + /* transponder name */ + text = g_strdup_printf ("<b>%s</b>", trsp->name); + label = gtk_label_new (NULL); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_label_set_markup (GTK_LABEL (label), text); + g_free (text); + gtk_box_pack_start (GTK_BOX (vbox), label,FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (vbox), gtk_hseparator_new (), + FALSE, FALSE, 0); + + /* uplink */ + if (trsp->uplow > 0.0) { + if (trsp->uphigh > trsp->uplow) { + /* we have a range */ + text = g_strdup_printf (_("Uplink: %.4f \342\200\222 %.4f MHz"), + trsp->uplow / 1.0e6, trsp->uphigh / 1.0e6); + } + else { + text = g_strdup_printf (_("Uplink: %.4f MHz"), trsp->uplow / 1.0e6); + } + label = gtk_label_new (text); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); + g_free (text); + } + + /* downlink */ + if (trsp->downlow > 0.0) { + if (trsp->downhigh > trsp->downlow) { + /* we have a range */ + text = g_strdup_printf (_("Downlink: %.4f \342\200\222 %.4f MHz"), + trsp->downlow / 1.0e6, trsp->downhigh / 1.0e6); + } + else { + text = g_strdup_printf (_("Downlink: %.4f MHz"), trsp->downlow / 1.0e6); + } + label = gtk_label_new (text); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); + g_free (text); + } + + /* inverting */ + if ((trsp->downhigh > trsp->downlow) && (trsp->uphigh > trsp->uplow)) { + text = g_strdup_printf (_("Inverting: %s"), trsp->invert ? "YES" : "NO"); + label = gtk_label_new (text); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + g_free (text); + gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); + } + + /* mode string */ + if (trsp->mode) { + text = g_strdup_printf (_("Mode: %s"), trsp->mode); + label = gtk_label_new (text); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + g_free (text); + gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); + } + } + free_transponders (trsplist); + } + + return vbox; +} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 18:44:58
|
Revision: 255 http://gpredict.svn.sourceforge.net/gpredict/?rev=255&view=rev Author: csete Date: 2009-04-12 18:44:54 +0000 (Sun, 12 Apr 2009) Log Message: ----------- No quotes for mode string. Modified Paths: -------------- trunk/data/32785.trsp Modified: trunk/data/32785.trsp =================================================================== --- trunk/data/32785.trsp 2009-04-12 18:42:20 UTC (rev 254) +++ trunk/data/32785.trsp 2009-04-12 18:44:54 UTC (rev 255) @@ -1,13 +1,13 @@ [Mode U TLM 1] DOWN_LOW=437275000 -MODE="CW" +MODE=CW [Mode U TLM 2] DOWN_LOW=437475000 -MODE="AX.25 1200 bps" +MODE=AX.25 1200 bps [Mode L/U Digipeater] DOWN_LOW=437475000 UP_LOW=1267600000 -MODE="GMSK 9600 bps" +MODE=GMSK 9600 bps This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 18:42:22
|
Revision: 254 http://gpredict.svn.sourceforge.net/gpredict/?rev=254&view=rev Author: csete Date: 2009-04-12 18:42:20 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Added transponder for CO-65 Modified Paths: -------------- trunk/data/Makefile.am Added Paths: ----------- trunk/data/32785.trsp Added: trunk/data/32785.trsp =================================================================== --- trunk/data/32785.trsp (rev 0) +++ trunk/data/32785.trsp 2009-04-12 18:42:20 UTC (rev 254) @@ -0,0 +1,13 @@ +[Mode U TLM 1] +DOWN_LOW=437275000 +MODE="CW" + +[Mode U TLM 2] +DOWN_LOW=437475000 +MODE="AX.25 1200 bps" + +[Mode L/U Digipeater] +DOWN_LOW=437475000 +UP_LOW=1267600000 +MODE="GMSK 9600 bps" + Modified: trunk/data/Makefile.am =================================================================== --- trunk/data/Makefile.am 2009-04-12 18:32:11 UTC (rev 253) +++ trunk/data/Makefile.am 2009-04-12 18:42:20 UTC (rev 254) @@ -8,6 +8,7 @@ radar.tle science.tle weather.tle \ 7530.trsp 22825.trsp 24278.trsp 25544.trsp \ 27607.trsp 27848.trsp 28375.trsp 28650.trsp \ + 32785.trsp \ 24786.trsp 25338.trsp 26352.trsp 26536.trsp \ 26871.trsp 27453.trsp 28654.trsp This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 18:32:15
|
Revision: 253 http://gpredict.svn.sourceforge.net/gpredict/?rev=253&view=rev Author: csete Date: 2009-04-12 18:32:11 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Added mode string. Modified Paths: -------------- trunk/src/trsp-conf.c trunk/src/trsp-conf.h Modified: trunk/src/trsp-conf.c =================================================================== --- trunk/src/trsp-conf.c 2009-04-12 16:27:13 UTC (rev 252) +++ trunk/src/trsp-conf.c 2009-04-12 18:32:11 UTC (rev 253) @@ -39,6 +39,7 @@ #define KEY_DOWN_LOW "DOWN_LOW" #define KEY_DOWN_HIGH "DOWN_HIGH" #define KEY_INVERT "INVERT" +#define KEY_MODE "MODE" /** \brief Read transponder data file. * \param catnum The catalog number of the satellite to read transponders for. @@ -138,6 +139,14 @@ g_clear_error (&error); trsp->invert = FALSE; } + + trsp->mode = g_key_file_get_string (cfg, groups[i], KEY_MODE, &error); + if (error != NULL) { + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: Error reading %s:%s from %s"), + __FUNCTION__, groups[i], KEY_MODE, name); + g_clear_error (&error); + } /* add transponder to list */ trsplist = g_slist_append (trsplist, trsp); @@ -182,6 +191,8 @@ trsp = (trsp_t *) g_slist_nth_data (trsplist, i); g_free (trsp->name); g_free (trsp); + if (trsp->mode) + g_free (trsp->mode); } g_slist_free (trsplist); trsplist = NULL; Modified: trunk/src/trsp-conf.h =================================================================== --- trunk/src/trsp-conf.h 2009-04-12 16:27:13 UTC (rev 252) +++ trunk/src/trsp-conf.h 2009-04-12 18:32:11 UTC (rev 253) @@ -40,6 +40,7 @@ gdouble downlow; /*!< Lower limit of downlink. */ gdouble downhigh; /*!< Upper limit of donlink. */ gboolean invert; /*!< Flag indicating whether transponder is inverting. */ + gchar *mode; /*!< Mode descriptor. */ } trsp_t; /* The actual data would then be a singly linked list with pointers to transponder_t structures */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 16:27:15
|
Revision: 252 http://gpredict.svn.sourceforge.net/gpredict/?rev=252&view=rev Author: csete Date: 2009-04-12 16:27:13 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Updated user manual for 1.0 beta 2 Modified Paths: -------------- trunk/doc/um/gpredict-user-manual.odt Modified: trunk/doc/um/gpredict-user-manual.odt =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 14:53:30
|
Revision: 251 http://gpredict.svn.sourceforge.net/gpredict/?rev=251&view=rev Author: csete Date: 2009-04-12 14:53:27 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Updated. Modified Paths: -------------- trunk/ChangeLog trunk/NEWS trunk/src/gtk-rig-ctrl.c Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2009-04-12 14:05:11 UTC (rev 250) +++ trunk/ChangeLog 2009-04-12 14:53:27 UTC (rev 251) @@ -1,3 +1,44 @@ +2009-04-12 Alexandru Csete <oz...@gm...> + + * src/gtk-rig-ctrl.c: + Implemented dual-rig controller. Tested with FT-817/IC-765 pair. + + * src/first-time.[ch]: + Added first-time checks for transponder data. + + * data/*.trsp: + * data/Makefile.am: + Include some transponder data in distribution. + + +2009-04-11 Alexandru Csete <oz...@gm...> + + * src/radio-conf.c: + Fixed bug that prevented correct saving of the LO frequencies. + + +2009-04-10 Alexandru Csete <oz...@gm...> + + * src/gtk-sat-module-tmg.c: + Fixed bug 2750119: Unable to set the time correctly in Time Controller. + + * src/gtk-freq-knob.c: + Added signal that is emitted when the value of the knob changes. + + * src/gtk-rig-ctrl.[ch]: + Added controls and functions for tuning and locking transponders. + Use new "freq-changed" signal of GtkFreqKnob widgets for tracking uplink and + downlink changes. + Added secondary device for uplink. + + +2009-04-08 Alexandru Csete <oz...@gm...> + + * src/gtk-rig-ctrl.[ch]: + Fixed crash when closing rig controller window with an active transponder + list. + + 2009-04-04 Alexandru Csete <oz9aec.gmail.com> * src/gtk-rig-ctrl.[ch]: Modified: trunk/NEWS =================================================================== --- trunk/NEWS 2009-04-12 14:05:11 UTC (rev 250) +++ trunk/NEWS 2009-04-12 14:53:27 UTC (rev 251) @@ -1,13 +1,36 @@ -Changes in version 1.0 (beta): +Changes in version 1.0 (final): +* Feature request 2691964: Doppler tuning on uplink (duplex TRX) +* Feature request 2194621: Data recorder. +* Windows: New installer instead of ZIP distribution. +* Mac OS X package. + +Changes in version 1.0 beta 2 (TBD Apr 2009): + +- Improved implementation of the radio controller to include uplink. +- Added transponder data management (GUI editor to be added in beta 3). +- Feature request 2756021: Doppler tuning using two radios (duplex) +- Feature request 2691963: Doppler tuning on uplink (Simplex TRX) +- Feature request 2192404: Starting time for pass predictions. +- Feature request 2347471: Use system goocanvas. +- Feature request 2130940: Transponder info in gpredict. +- Fixed bug 2139102: rigctld port. +- Fixed bug 2130912: Crash when no rig or no rotator are defined. +- Fixed bug 2130914: Gpredict doesn't handle PTT. +- Fixed bug 2170642: Small error in user manual. +- Fixed bug 2750119: Unable to set the time correctly in Time Controller. +- Applied patch 2688135: Use GIO instead of libcurl for TLE download. + Note: This removes proxy management from gpredict. +- Updated PDF user manual. +- French translation. + + +Changes in version 1.0 beta 1 (21 Sep 2008): + - Radio doppler tuning via hamlibs rigctld. - Antenna rotator control via hamlibs rotctld. - User defined twilight threshold for predicting satellite visibility. - Feature request 1705375: Restore main window position and size. -- Feature request 2192404: Starting time for pass predictions. -* Feature request 2194621: Data recorder. -- Feature request 2347471: Use system goocanvas. -* Feature request 2130940: Transponder info in gpredict. - Fixed bug 1752908: New satellites in TLE files. - Fixed bug 1818144: No log file created at first execution. - Fixed bug 1839140: Sky at a glance axis incorrectly labelled. @@ -15,18 +38,10 @@ - Fixed bug 1704133: Blank lines in config file. - Fixed bug 1954664: Wrong overpass prediction. - Fixed bug 1880815: Null pointer dereference causes crash on startup. -- Fixed bug 2139102: rigctld port. -- Fixed bug 2130912: Crash when no rig or no rotator are defined. -- Fixed bug 2170642: Small error in user manual. -- Fixed bug 2750119: Unable to set the time correctly in Time Controller. -- Applied patch 2688135: Use GIO instead of libcurl for TLE download. - Note: This removes proxy management from gpredict. -x Windows: New installer instead of ZIP distribution. - Updated PDF user manual. -- French translation. -Changes in version 0.9.0 (2007-09-29): +Changes in version 0.9.0 (29 Sep 2007): - Save satellite pass predictions to text file. - Fixed bug 1754801: Time Controller Window. @@ -44,7 +59,7 @@ cases. -Changes in version 0.8.0 (2007-06-03): +Changes in version 0.8.0 (3 Jun 2007): - Implemented simulated real-time and manual time control in addition to real-time control. Each module has now its own time controller. @@ -67,7 +82,7 @@ - Fixed more memory leaks. -Changes in version 0.7.1 (2007-01-20): +Changes in version 0.7.1 (20 Jan 2007): - Windows build files are now included in the source tarball. - Fixed a bug that prevented TLE to be updated under win32 (bug #1631803). @@ -77,7 +92,7 @@ - Fixed a bug with missing arrows on win32 (bug #1580012). -Changes in version 0.7.0 (2007-01-03): +Changes in version 0.7.0 (3 Jan 2007): - Automatic update of TLE elements from network or local files. Gpredict can either notify the user when TLEs are getting too old, or perform automatic @@ -90,7 +105,7 @@ - Polar and Az/El plots of passes in the single-pass dialogue. -Changes in version 0.6.1 (2006-09-05): +Changes in version 0.6.1 (5 Sep 2006): - Fixed bug that caused data to be installed into the wrong directory when using 'make install DESTDIR=/foo' (patch #1552216 by Denis Leroy). @@ -98,7 +113,7 @@ one or more modules were still using it (reported by Hamish Moffatt). -Changes in version 0.6.0 (2006-09-04): +Changes in version 0.6.0 (4 Sep 2006): - New module design: A module is no longer either a list or a map. A module can contain up to three views that can be any combination of map, list, polar and @@ -130,25 +145,25 @@ - Draft User Manual and Design Document. -Changes in version 0.5.3 (2006-01-19): +Changes in version 0.5.3 (19 Jan 2006): - Fixed errors when compiling on NetBSD, thanks to Berndt VK5ABN. This patch actually fixes the i18n installation problems on the other platforms too. -Changes in version 0.5.2 (2005-12-22): +Changes in version 0.5.2 (22 Dec 2005): - Fixed errors when compiling without hamlib support. -Changes in version 0.5.1 (2005-05-25): +Changes in version 0.5.1 (25 May 2005): - Selecting local time instead of UTC will now show the correct time everywhere in the program, thanks to Thierry F4DWV. - Show pass duration in minutes in the "Upcoming Passes" dialog. -Changes in version 0.5.0 (2005-01-29): +Changes in version 0.5.0 (29 Jan 2005): - It is now possible to specify a minimum elevation for upcoming passes. Passes with max elevation below this limit will be discaded from the list. @@ -176,7 +191,7 @@ - Show rise/set times in Sun and Moon frames. -Changes in version 0.4.0 (2003-04-17): +Changes in version 0.4.0 (17 Apr 2003): - TLE files are now stored in user's home directory in $HOME/.gpredict/tle and can be updated automatically at run time. @@ -203,7 +218,7 @@ - Fixed bugs #636186 and #633886. -Changes in version 0.3.2 (2002-06-24): +Changes in version 0.3.2 (24 Jun 2002): - No more crash when trying to open a deleted map file (bug #554785). @@ -214,13 +229,13 @@ - Updated da.po (new strings not translated though). -Changes in version 0.3.1 (2002-05-06): +Changes in version 0.3.1 (6 May 2002): - Added danish translation. - Fixed bug #551224. -Changes in version 0.3.0 (2002-04-13): +Changes in version 0.3.0 (13 Apr 2002): - Configuration is stored using GConf instead of gnome-config. - Default prefix is no longer /usr/local/groundstation @@ -241,7 +256,7 @@ (obsolete feature). -Changes in version 0.2.2 (2001-10-23): +Changes in version 0.2.2 (23 Oct 2001): - Program can read custom TLE files even at runtime. - New, very flexible functions to predict upcoming @@ -261,7 +276,7 @@ use ~ in --prefix=... -Changes in version 0.2.0 (2001-08-04): +Changes in version 0.2.0 (4 Aug 2001): - Abandoned client/server interface and included tracking code from Predict directly into the Modified: trunk/src/gtk-rig-ctrl.c =================================================================== --- trunk/src/gtk-rig-ctrl.c 2009-04-12 14:05:11 UTC (rev 250) +++ trunk/src/gtk-rig-ctrl.c 2009-04-12 14:53:27 UTC (rev 251) @@ -35,8 +35,7 @@ * allows one control window per module. * * TODO Duplex TRX - * TODO Separate uplink rig - * TODO Transponder passband display somewhere + * TODO Transponder passband display somewhere, below Sat freq? * */ #include <gtk/gtk.h> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 14:22:16
|
Revision: 249 http://gpredict.svn.sourceforge.net/gpredict/?rev=249&view=rev Author: csete Date: 2009-04-12 13:34:52 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Updated TLE data. Modified Paths: -------------- trunk/data/amateur.tle trunk/data/cubesat.tle trunk/data/galileo.tle trunk/data/geo.tle trunk/data/gps-ops.tle trunk/data/iridium.tle trunk/data/military.tle trunk/data/radar.tle trunk/data/science.tle trunk/data/weather.tle Modified: trunk/data/amateur.tle =================================================================== --- trunk/data/amateur.tle 2009-04-12 13:33:37 UTC (rev 248) +++ trunk/data/amateur.tle 2009-04-12 13:34:52 UTC (rev 249) @@ -1,177 +1,177 @@ OSCAR III [-] -1 01293U 65016F 09059.20711476 -.00000089 00000-0 -21793-4 0 4668 -2 01293 70.0702 46.9383 0019745 307.6207 52.3111 14.04687519244500 +1 01293U 65016F 09101.57626210 .00000127 00000-0 11234-3 0 4970 +2 01293 70.0754 315.3782 0020377 257.2167 102.6699 14.04699563250454 AO-5 [-] -1 04321U 70008B 09058.91122459 -.00000031 00000-0 10000-3 0 1340 -2 04321 102.1332 67.9535 0027740 186.9759 173.0927 12.52155945787082 +1 04321U 70008B 09101.49574489 -.00000031 00000-0 10000-3 0 1458 +2 04321 102.1303 111.3520 0027777 106.4243 253.9883 12.52156298792417 AO-6 [-] -1 06236U 72082B 09058.93752120 -.00000027 00000-0 10000-3 0 1230 -2 06236 101.4004 76.7084 0004050 104.2109 255.9413 12.53076615663726 +1 06236U 72082B 09100.77273243 -.00000027 00000-0 10000-3 0 1447 +2 06236 101.3973 116.8695 0004070 25.2246 334.9026 12.53076878668960 AO-7 [P] -1 07530U 74089B 09059.63189567 -.00000027 00000-0 10000-3 0 4147 -2 07530 101.4393 88.2523 0012012 120.6214 239.6046 12.53575372569110 +1 07530U 74089B 09101.68986283 -.00000027 00000-0 10000-3 0 4498 +2 07530 101.4325 128.7951 0012094 39.9850 320.2105 12.53575523574384 AO-8 [-] -1 10703U 78026B 09059.69408221 -.00000023 00000-0 13143-4 0 4233 -2 10703 98.8448 108.8020 0007588 109.5611 250.6374 13.98828260580854 +1 10703U 78026B 09102.18132640 -.00000187 00000-0 -10050-3 0 4612 +2 10703 98.8403 149.7817 0006252 357.6551 2.4582 13.98831202586792 AO-10 [-] -1 14129U 83058B 09058.49128964 .00000015 00000-0 10000-3 0 6274 -2 14129 25.9859 169.3453 5976411 201.6670 115.5759 2.05869272165391 +1 14129U 83058B 09100.71468437 -.00000360 00000-0 10000-3 0 6431 +2 14129 25.9480 162.5203 5988261 213.1853 88.4147 2.05872259166261 UO-11 [P] -1 14781U 84021B 09058.86987998 -.00000119 00000-0 -85883-5 0 8980 -2 14781 98.1211 102.2670 0008752 336.6668 23.4186 14.79695680341662 +1 14781U 84021B 09101.13375119 -.00000239 00000-0 -24637-4 0 9337 +2 14781 98.1139 144.9774 0008849 186.4699 173.6411 14.79702583347915 FO-12 [-] -1 16909U 86061B 09058.70032984 -.00000083 00000-0 10000-3 0 5285 -2 16909 50.0129 138.4755 0010763 288.6655 71.3011 12.44452632 25344 +1 16909U 86061B 09102.14864986 -.00000083 00000-0 10000-3 0 5390 +2 16909 50.0139 4.9042 0011392 39.6204 320.5460 12.44452466 30757 UO-14 [-] -1 20437U 90005B 09058.95208655 -.00000002 00000-0 14680-4 0 8616 -2 20437 98.3251 21.4795 0010877 127.9146 232.3020 14.31537718997420 +1 20437U 90005B 09101.93756642 .00000001 00000-0 15944-4 0 8956 +2 20437 98.3336 62.7348 0011504 9.5168 350.6231 14.31541127 3574 UO-15 [-] -1 20438U 90005C 09059.43351835 -.00000027 00000-0 57128-5 0 3572 -2 20438 98.3856 14.4814 0009891 153.9778 206.1897 14.30439738996927 +1 20438U 90005C 09101.47267613 -.00000021 00000-0 79635-5 0 3889 +2 20438 98.3924 55.0387 0010738 38.5428 321.6520 14.30442206 2930 AO-16 [P] -1 20439U 90005D 09058.56012628 -.00000025 00000-0 58291-5 0 5448 -2 20439 98.2651 32.0237 0011494 132.9671 227.2474 14.31816715997466 +1 20439U 90005D 09101.46738656 -.00000008 00000-0 12428-4 0 5781 +2 20439 98.2724 72.9271 0011327 14.4214 345.7284 14.31820600 3607 DO-17 [-] -1 20440U 90005E 09059.70195447 -.00000017 00000-0 88479-5 0 2571 -2 20440 98.2415 38.0910 0011725 125.7924 234.4348 14.32120067997760 +1 20440U 90005E 09101.41241243 -.00000007 00000-0 12597-4 0 2906 +2 20440 98.2478 77.7570 0011243 10.2062 349.9359 14.32123884 3736 WO-18 [-] -1 20441U 90005F 09059.47772258 -.00000021 00000-0 75003-5 0 7633 -2 20441 98.2485 36.4914 0012182 129.6755 230.5500 14.31884633997668 +1 20441U 90005F 09102.03356668 .00000005 00000-0 17360-4 0 7987 +2 20441 98.2542 76.9798 0011954 11.6074 348.5391 14.31888677 3759 LO-19 [P] -1 20442U 90005G 09058.49535888 -.00000025 00000-0 57015-5 0 4668 -2 20442 98.2300 39.6404 0012658 131.1330 229.0928 14.32053506997619 +1 20442U 90005G 09100.97634398 -.00000029 00000-0 45521-5 0 4983 +2 20442 98.2359 79.9794 0012203 12.5325 347.6169 14.32056747 3694 FO-20 [-] -1 20480U 90013C 09058.88603252 -.00000021 00000-0 19908-4 0 742 -2 20480 99.0672 359.8845 0540703 57.7895 307.4452 12.83360446892888 +1 20480U 90013C 09101.29359454 -.00000088 00000-0 -11724-3 0 1111 +2 20480 99.0680 34.3998 0540066 321.8660 34.5362 12.83360667898326 AO-21 [-] -1 21087U 91006A 09059.24061037 .00000045 00000-0 30829-4 0 2066 -2 21087 82.9437 126.7397 0033795 226.7659 133.0674 13.75040017907448 +1 21087U 91006A 09102.09997403 .00000037 00000-0 22150-4 0 2422 +2 21087 82.9372 94.9826 0036688 107.3337 253.1832 13.75042238913332 RS-12 & RS-13 [-] -1 21089U 91007A 09058.85055972 .00000010 00000-0 -54333-5 0 873 -2 21089 82.9256 347.7852 0027672 275.1112 84.6882 13.74485070906171 +1 21089U 91007A 09101.14482759 .00000052 00000-0 38631-4 0 1228 +2 21089 82.9215 316.4043 0029604 153.5091 206.7598 13.74486156911985 UO-22 [-] -1 21575U 91050B 09058.85928059 -.00000014 00000-0 93657-5 0 4922 -2 21575 98.4347 9.3793 0007154 354.4348 5.6760 14.39665591924970 +1 21575U 91050B 09101.46318613 -.00000032 00000-0 36284-5 0 5268 +2 21575 98.4402 51.3351 0006887 213.3370 146.7377 14.39669494931109 KO-23 [-] -1 22077U 92052B 09059.14742673 -.00000037 00000-0 10000-3 0 6793 -2 22077 66.0831 195.0181 0012173 306.1049 53.8842 12.86447676777491 +1 22077U 92052B 09101.12769337 -.00000037 00000-0 10000-3 0 7167 +2 22077 66.0826 107.0992 0013702 295.2042 64.7557 12.86448028782894 AO-24 [-] -1 22654U 93031B 09055.93977195 -.00000111 00000-0 10000-3 0 2401 -2 22654 5.1580 339.5676 2878999 154.1683 223.7411 1.42205158 77528 +1 22654U 93031B 09096.01515389 -.00000128 00000-0 10000-3 0 2530 +2 22654 5.1252 338.8141 2875731 156.5075 219.5322 1.42205278 78095 AO-27 [+] -1 22825U 93061C 09058.51589111 .00000001 00000-0 16896-4 0 1875 -2 22825 98.4229 15.4669 0007699 223.7875 136.2698 14.29259362804247 +1 22825U 93061C 09101.49981588 .00000014 00000-0 22063-4 0 2187 +2 22825 98.4310 57.0446 0009367 99.8658 260.3591 14.29262771810389 IO-26 [P] -1 22826U 93061D 09059.50528290 -.00000012 00000-0 11971-4 0 9079 -2 22826 98.4162 17.2199 0008271 217.1427 142.9182 14.29510334804486 +1 22826U 93061D 09101.92171231 -.00000008 00000-0 13406-4 0 9410 +2 22826 98.4235 58.2302 0009970 95.2509 264.9813 14.29513984810545 KO-25 [-] -1 22828U 93061F 09058.93256160 -.00000007 00000-0 13793-4 0 1217 -2 22828 98.4105 16.5972 0009786 191.6509 168.4445 14.29811503772677 +1 22828U 93061F 09101.48002976 -.00000058 00000-0 -62631-5 0 1527 +2 22828 98.4166 57.7242 0010874 72.6075 287.6309 14.29814390778752 PO-28 [+] -1 22829U 93061G 09058.73682296 -.00000040 00000-0 66876-6 0 1588 -2 22829 98.4056 17.5348 0009804 188.2948 171.8133 14.30209273804654 +1 22829U 93061G 09100.92266102 -.00000064 00000-0 -84307-5 0 1889 +2 22829 98.4117 58.3138 0010644 71.6124 288.6235 14.30212397810688 RS-15 [P] -1 23439U 94085A 09058.53438714 -.00000039 00000-0 10000-3 0 1971 -2 23439 64.8140 82.1356 0146115 72.8596 288.8269 11.27553125583759 +1 23439U 94085A 09101.19502620 -.00000039 00000-0 10000-3 0 1936 +2 23439 64.8139 13.1471 0146911 64.5279 297.0759 11.27553191588562 FO-29 [P] -1 24278U 96046B 09059.29221602 -.00000017 00000-0 21608-4 0 9827 -2 24278 98.5709 307.8739 0349806 272.5325 83.5822 13.52942555619023 +1 24278U 96046B 09101.52005294 -.00000040 00000-0 -56005-5 0 130 +2 24278 98.5635 344.4883 0350837 162.9963 198.3292 13.52941999624735 MO-30 [-] -1 24305U 96052B 09059.56587211 .00000046 00000-0 32817-4 0 518 -2 24305 82.9312 74.3819 0029408 193.9062 166.1290 13.73567741625761 +1 24305U 96052B 09101.37845968 .00000010 00000-0 -55662-5 0 876 +2 24305 82.9352 43.4461 0031693 80.3795 280.0942 13.73568359631501 TO-31 [-] -1 25396U 98043C 09058.64915261 -.00000071 00000-0 -12964-4 0 3412 -2 25396 98.3435 92.2575 0002649 173.2504 186.8716 14.23772364552718 +1 25396U 98043C 09101.58781456 -.00000122 00000-0 -35638-4 0 3758 +2 25396 98.3373 133.0064 0003550 78.3863 281.7711 14.23774607558821 GO-32 [P] -1 25397U 98043D 09059.23822634 .00000054 00000-0 41765-4 0 8325 -2 25397 98.3361 87.3624 0000958 161.6987 198.4220 14.23155921552638 +1 25397U 98043D 09101.98459095 -.00000102 00000-0 -27006-4 0 8667 +2 25397 98.3305 127.8560 0002214 88.6220 271.5206 14.23156615558713 SO-33 [P] -1 25509U 98061B 09059.71627921 .00000049 00000-0 -13410-5 0 3973 -2 25509 31.4311 305.8458 0354190 110.1182 253.7910 14.28242582540313 +1 25509U 98061B 09101.30498816 .00000061 00000-0 79486-6 0 4289 +2 25509 31.4283 70.6724 0354412 113.7335 250.0886 14.28248707546267 PO-34 [-] -1 25520U 98064B 09058.93947650 .00000359 00000-0 78450-5 0 1949 -2 25520 28.4606 266.4105 0005589 190.9193 169.1278 15.17301492572040 +1 25520U 98064B 09101.95615491 .00000373 00000-0 85371-5 0 2234 +2 25520 28.4599 338.3638 0005019 298.8517 61.1576 15.17320281578581 ARISS [+] -1 25544U 98067A 09059.52201389 .00012647 00000-0 10235-3 0 3632 -2 25544 51.6403 143.5254 0009605 72.9181 113.4289 15.71184241588859 +1 25544U 98067A 09102.11034844 .00011961 00000-0 93500-4 0 6555 +2 25544 51.6406 285.6193 0008747 228.3559 233.6853 15.72094567595553 SO-35 [-] -1 25636U 99008C 09059.49884334 .00000028 00000-0 15438-4 0 2442 -2 25636 96.4538 269.7615 0147205 205.7000 153.6826 14.43456516527428 +1 25636U 99008C 09101.64606013 .00000022 00000-0 13299-4 0 2798 +2 25636 96.4505 301.7617 0149530 72.6988 289.0507 14.43459805533500 UO-36 [-] -1 25693U 99021A 09059.59380794 .00000048 00000-0 25729-4 0 8567 -2 25693 64.5558 89.4586 0017619 206.4069 153.6142 14.78740505531788 +1 25693U 99021A 09101.79409465 -.00000071 00000-0 94320-5 0 8879 +2 25693 64.5591 319.8150 0012666 204.0183 156.0405 14.78744035538025 OO-38 [-] -1 26063U 00004C 09058.82002430 -.00000027 00000-0 10951-4 0 4447 -2 26063 100.1908 185.5009 0036798 208.7953 151.1205 14.35856581476258 +1 26063U 00004C 09100.97818905 -.00000008 00000-0 17446-4 0 4785 +2 26063 100.1979 235.2908 0037246 90.6796 269.8647 14.35860314482308 SO-41 [-] -1 26545U 00057A 09059.53914598 -.00000082 00000-0 87585-5 0 1958 -2 26545 64.5562 92.3541 0052702 295.0129 64.5505 14.80565619455116 +1 26545U 00057A 09102.09256765 .00000061 00000-0 26958-4 0 2271 +2 26545 64.5583 321.2350 0055004 288.7051 70.8112 14.80575684461419 MO-46 [-] -1 26548U 00057D 09059.43251554 -.00000021 00000-0 15869-4 0 3327 -2 26548 64.5566 57.3181 0049379 288.5659 71.0049 14.83342712455829 +1 26548U 00057D 09102.04111790 -.00000010 00000-0 17198-4 0 3651 +2 26548 64.5560 285.4529 0050822 282.5791 76.9640 14.83352711462143 SO-42 [-] -1 26549U 00057E 09059.82315889 .00000045 00000-0 25402-4 0 2736 -2 26549 64.5569 107.5249 0055560 299.6400 59.9214 14.79422633454837 +1 26549U 00057E 09101.93628681 -.00000052 00000-0 12889-4 0 3075 +2 26549 64.5603 337.9955 0058139 292.9227 66.5698 14.79431788461061 AO-40 [-] -1 26609U 00072B 09058.05171133 -.00000191 00000-0 10000-3 0 1971 -2 26609 8.8054 30.8732 7951995 179.6287 182.5183 1.25585123 38245 +1 26609U 00072B 09100.89618694 -.00000377 00000-0 10000-3 0 2134 +2 26609 9.1580 24.1038 7961656 193.4610 112.0629 1.25583972 38789 NO-44 [P] -1 26931U 01043C 09059.28244749 .00000137 00000-0 85689-4 0 1096 -2 26931 67.0549 344.9105 0005329 264.2804 95.7688 14.29549362387012 +1 26931U 01043C 09101.54004399 -.00000120 00000-0 -14364-4 0 1421 +2 26931 67.0511 236.0423 0005301 268.9146 91.1317 14.29551930393059 NO-45 [-] -1 26932U 01043D 09058.90016922 -.00000071 00000-0 44388-5 0 1118 -2 26932 67.0512 345.8193 0006821 241.5045 118.5369 14.29602539387008 +1 26932U 01043D 09101.50597956 -.00000042 00000-0 16032-4 0 1453 +2 26932 67.0491 236.0636 0005335 241.9346 118.1210 14.29605873393095 BO-47 & BO-48 [-] -1 27422U 02021B 09058.76223340 .00000063 00000-0 42172-4 0 9844 -2 27422 98.5295 140.5202 0012327 181.0510 179.0648 14.28482462353784 +1 27422U 02021B 09101.27910390 -.00000030 00000-0 49897-5 0 171 +2 27422 98.5229 182.0721 0013221 62.0180 298.2363 14.28487405359857 AO-49 [-] -1 27605U 02058A 09058.31204499 -.00000036 00000-0 16429-4 0 8501 -2 27605 64.5608 346.3978 0077730 230.1401 129.2845 14.72387742332763 +1 27605U 02058A 09101.30565554 -.00000159 00000-0 -21346-5 0 8828 +2 27605 64.5574 215.6161 0073981 221.2069 138.3464 14.72393298339096 SO-50 [+] -1 27607U 02058C 09059.30842900 -.00000027 00000-0 17932-4 0 8250 -2 27607 64.5605 355.7705 0078025 229.0062 130.4273 14.71416888332652 +1 27607U 02058C 09101.51477566 -.00000138 00000-0 85394-6 0 8581 +2 27607 64.5587 227.5814 0074400 220.1634 139.3905 14.71425851338867 DTUSAT [-] -1 27842U 03031C 09059.52904301 .00000025 00000-0 31633-4 0 4988 -2 27842 98.7089 71.2071 0010184 77.0388 283.1918 14.20968749293917 +1 27842U 03031C 09101.56623025 .00000029 00000-0 33801-4 0 5301 +2 27842 98.7077 112.6530 0009061 321.2685 38.7853 14.20974191299882 CO-55 [+] -1 27844U 03031E 09058.96523695 .00000065 00000-0 50512-4 0 5218 -2 27844 98.7153 69.6623 0010607 96.7368 263.5011 14.20624713293759 +1 27844U 03031E 09100.59000319 .00000039 00000-0 38266-4 0 5536 +2 27844 98.7146 110.7081 0009814 344.3787 15.7080 14.20630920299668 AAU CUBESAT [-] -1 27846U 03031G 09058.96535269 .00000049 00000-0 42558-4 0 4357 -2 27846 98.7090 70.6453 0010134 78.9737 281.2573 14.20969283293834 +1 27846U 03031G 09101.00253706 .00000018 00000-0 28453-4 0 4651 +2 27846 98.7071 112.0926 0009043 322.2756 37.7767 14.20974048299809 CANX-1 [-] -1 27847U 03031H 09058.97261069 .00000059 00000-0 47258-4 0 4480 -2 27847 98.7088 70.6451 0010194 79.2894 280.9428 14.20952910293782 +1 27847U 03031H 09101.01028915 .00000000 00000-0 20258-4 0 4796 +2 27847 98.7079 112.0917 0009203 322.9151 37.1377 14.20957002299758 CO-57 [+] -1 27848U 03031J 09058.99805735 .00000021 00000-0 30133-4 0 4682 -2 27848 98.7172 68.7585 0010547 101.3181 258.9188 14.20428338293725 +1 27848U 03031J 09100.55813578 .00000039 00000-0 38799-4 0 4995 +2 27848 98.7172 109.7382 0009896 348.2634 11.8332 14.20434045299620 RS-22 [+] -1 27939U 03042A 09059.33893769 .00000113 00000-0 30637-4 0 7277 -2 27939 97.9614 298.0699 0014550 114.0860 246.1865 14.63297542289651 +1 27939U 03042A 09101.52907932 .00000061 00000-0 20626-4 0 7622 +2 27939 97.9554 338.7916 0013454 347.8667 12.2196 14.63306816295821 AO-51 [+] -1 28375U 04025K 09058.57414592 .00000005 00000-0 13888-4 0 3277 -2 28375 98.0564 74.5486 0084791 97.3829 263.7009 14.40634171245177 +1 28375U 04025K 09100.59379424 .00000004 00000-0 13897-4 0 3607 +2 28375 98.0554 114.1328 0084447 331.1447 28.5089 14.40637985251229 VO-52 [+] -1 28650U 05017B 09058.36923773 .00000130 00000-0 23023-4 0 1659 -2 28650 97.7554 123.5165 0027722 30.5565 329.7234 14.81557152206385 +1 28650U 05017B 09101.12046214 -.00000208 00000-0 -19669-4 0 2007 +2 28650 97.7488 164.9010 0026055 247.5906 112.2564 14.81568823212718 UWE-1 [-] -1 28892U 05043C 09059.38974777 .00000072 00000-0 24621-4 0 2762 -2 28892 98.0696 312.4956 0016923 331.7424 28.2830 14.59710053177973 +1 28892U 05043C 09101.88905233 .00000066 00000-0 23293-4 0 3090 +2 28892 98.0646 353.8372 0017010 191.8725 168.2068 14.59722565184175 XO-53 [-] -1 28894U 05043E 09058.73038748 .00000026 00000-0 15001-4 0 4001 -2 28894 98.0712 312.1049 0017355 335.9117 24.1275 14.59656147177880 +1 28894U 05043E 09102.05396022 .00000003 00000-0 10275-4 0 4337 +2 28894 98.0642 354.2444 0017053 194.0659 166.0071 14.59661837184204 CO-58 [+] -1 28895U 05043F 09059.21418591 .00000088 00000-0 27930-4 0 2431 -2 28895 98.0732 312.8018 0017429 332.1097 27.9171 14.59745195177837 +1 28895U 05043F 09101.16411984 .00000033 00000-0 16564-4 0 2758 +2 28895 98.0700 353.6304 0017424 194.3614 165.7078 14.59756459183953 NCUBE-2 [-] -1 28897U 05043H 09059.28537858 .00000087 00000-0 27625-4 0 7860 -2 28897 98.0720 312.7864 0017003 333.4736 26.5663 14.59921525170136 +1 28897U 05043H 09101.16170062 .00000069 00000-0 23909-4 0 8205 +2 28897 98.0652 353.5392 0016649 195.5581 164.5066 14.59933326176249 CO-56 [P] -1 28941U 06005C 09059.83502255 .00062597 37380-5 30678-3 0 8595 -2 28941 98.1287 215.0246 0116678 178.9557 181.2077 15.72844404170151 +1 28941U 06005C 09102.07417136 .00059230 36832-5 24928-3 0 9833 +2 28941 98.1351 264.5098 0102871 21.2954 339.2524 15.77784026176806 PEHUENSAT 1 [+] -1 29712U 07001D 09059.67738821 .00000456 00000-0 66372-4 0 2743 -2 29712 97.8423 118.6202 0013019 268.7328 91.2388 14.80455267115411 +1 29712U 07001D 09102.12208312 .00000501 00000-0 72107-4 0 3935 +2 29712 97.8350 160.0927 0015138 126.9157 233.3468 14.80500998121691 DO-64 [+] -1 32789U 08021G 09059.22921931 .00000530 00000-0 74137-4 0 3024 -2 32789 97.9609 124.0575 0016214 29.8570 330.3556 14.81625660 45317 +1 32789U 08021G 09101.77545984 .00000275 00000-0 41757-4 0 3389 +2 32789 97.9525 166.3144 0014642 245.7742 114.1939 14.81660848 51618 Modified: trunk/data/cubesat.tle =================================================================== --- trunk/data/cubesat.tle 2009-04-12 13:33:37 UTC (rev 248) +++ trunk/data/cubesat.tle 2009-04-12 13:34:52 UTC (rev 249) @@ -1,75 +1,75 @@ DTUSAT -1 27842U 03031C 09059.52904301 .00000025 00000-0 31633-4 0 4988 -2 27842 98.7089 71.2071 0010184 77.0388 283.1918 14.20968749293917 +1 27842U 03031C 09101.56623025 .00000029 00000-0 33801-4 0 5301 +2 27842 98.7077 112.6530 0009061 321.2685 38.7853 14.20974191299882 CUTE-1 (CO-55) -1 27844U 03031E 09058.96523695 .00000065 00000-0 50512-4 0 5218 -2 27844 98.7153 69.6623 0010607 96.7368 263.5011 14.20624713293759 +1 27844U 03031E 09100.59000319 .00000039 00000-0 38266-4 0 5536 +2 27844 98.7146 110.7081 0009814 344.3787 15.7080 14.20630920299668 QUAKESAT -1 27845U 03031F 09059.66137778 .00000053 00000-0 45087-4 0 4981 -2 27845 98.7216 69.7430 0009705 111.9078 248.3119 14.20252278293766 +1 27845U 03031F 09101.57881754 .00000053 00000-0 45076-4 0 5292 +2 27845 98.7205 111.0821 0009154 359.5683 0.5492 14.20260519299719 AAU CUBESAT -1 27846U 03031G 09058.96535269 .00000049 00000-0 42558-4 0 4357 -2 27846 98.7090 70.6453 0010134 78.9737 281.2573 14.20969283293834 +1 27846U 03031G 09101.00253706 .00000018 00000-0 28453-4 0 4651 +2 27846 98.7071 112.0926 0009043 322.2756 37.7767 14.20974048299809 CANX-1 -1 27847U 03031H 09058.97261069 .00000059 00000-0 47258-4 0 4480 -2 27847 98.7088 70.6451 0010194 79.2894 280.9428 14.20952910293782 +1 27847U 03031H 09101.01028915 .00000000 00000-0 20258-4 0 4796 +2 27847 98.7079 112.0917 0009203 322.9151 37.1377 14.20957002299758 CUBESAT XI-IV (CO-57) -1 27848U 03031J 09058.99805735 .00000021 00000-0 30133-4 0 4682 -2 27848 98.7172 68.7585 0010547 101.3181 258.9188 14.20428338293725 +1 27848U 03031J 09100.55813578 .00000039 00000-0 38799-4 0 4995 +2 27848 98.7172 109.7382 0009896 348.2634 11.8332 14.20434045299620 UWE-1 -1 28892U 05043C 09059.38974777 .00000072 00000-0 24621-4 0 2762 -2 28892 98.0696 312.4956 0016923 331.7424 28.2830 14.59710053177973 +1 28892U 05043C 09101.88905233 .00000066 00000-0 23293-4 0 3090 +2 28892 98.0646 353.8372 0017010 191.8725 168.2068 14.59722565184175 CUBESAT XI-V (CO-58) -1 28895U 05043F 09059.21418591 .00000088 00000-0 27930-4 0 2431 -2 28895 98.0732 312.8018 0017429 332.1097 27.9171 14.59745195177837 +1 28895U 05043F 09101.16411984 .00000033 00000-0 16564-4 0 2758 +2 28895 98.0700 353.6304 0017424 194.3614 165.7078 14.59756459183953 NCUBE-2 -1 28897U 05043H 09059.28537858 .00000087 00000-0 27625-4 0 7860 -2 28897 98.0720 312.7864 0017003 333.4736 26.5663 14.59921525170136 +1 28897U 05043H 09101.16170062 .00000069 00000-0 23909-4 0 8205 +2 28897 98.0652 353.5392 0016649 195.5581 164.5066 14.59933326176249 CUTE-1.7+APD (CO-56) -1 28941U 06005C 09059.83502255 .00062597 37380-5 30678-3 0 8595 -2 28941 98.1287 215.0246 0116678 178.9557 181.2077 15.72844404170151 +1 28941U 06005C 09102.07417136 .00059230 36832-5 24928-3 0 9833 +2 28941 98.1351 264.5098 0102871 21.2954 339.2524 15.77784026176806 GENESAT-1 -1 29655U 06058C 09059.54091038 .00010514 00000-0 11468-3 0 6462 -2 29655 40.0243 142.8724 0002257 281.0282 79.0277 15.63158070125454 +1 29655U 06058C 09101.56365814 .00013104 00000-0 13677-3 0 6819 +2 29655 40.0225 240.3402 0002164 298.8386 61.2222 15.64135756132031 CSTB1 -1 31122U 07012F 09059.16006545 .00000551 00000-0 13192-3 0 5726 -2 31122 98.0073 120.8103 0084727 252.6547 106.5321 14.55215860 99308 +1 31122U 07012F 09101.72219268 .00000554 00000-0 13192-3 0 6076 +2 31122 98.0037 161.6092 0086901 120.5127 240.4642 14.55229121105498 MAST -1 31126U 07012K 09058.78419059 -.00000014 00000-0 77439-5 0 5377 -2 31126 98.0022 118.5270 0093710 259.4397 99.6211 14.53479613 99143 +1 31126U 07012K 09102.01672193 .00000169 00000-0 48522-4 0 5687 +2 31126 97.9963 159.8323 0095664 124.9277 236.0953 14.53489460105425 LIBERTAD-1 -1 31128U 07012M 09059.06713269 -.00000048 00000-0 00000+0 0 5675 -2 31128 98.0016 117.2109 0101918 263.2601 95.7006 14.52021088 99064 +1 31128U 07012M 09102.13630850 -.00000046 00000-0 00000+0 0 6024 +2 31128 97.9931 158.2621 0103489 129.5028 231.5409 14.52032032105318 POLYSAT CP3 -1 31129U 07012N 09059.16361003 .00000084 00000-0 30513-4 0 7502 -2 31129 98.0045 117.3895 0101290 262.8538 96.1130 14.52109282 99063 +1 31129U 07012N 09102.16128493 .00000113 00000-0 36448-4 0 8502 +2 31129 97.9959 158.3788 0103373 129.3255 231.7162 14.52121366105302 CAPE1 -1 31130U 07012P 09059.12805425 .00000076 00000-0 28597-4 0 5385 -2 31130 98.0053 117.2836 0101678 263.0964 95.8653 14.52036608 98868 +1 31130U 07012P 09101.16314761 .00000227 00000-0 62859-4 0 5731 +2 31130 97.9981 157.3511 0104307 132.6759 228.3285 14.52048578104968 POLYSAT CP4 -1 31132U 07012Q 09059.16158137 .00000073 00000-0 26629-4 0 5451 -2 31132 98.0085 120.7538 0084660 252.9467 106.2442 14.55186194 99176 +1 31132U 07012Q 09101.86207781 -.00000188 00000-0 -31288-4 0 5801 +2 31132 98.0009 161.6727 0086854 119.7241 241.2628 14.55195683105383 NTS (CANX-6) -1 32784U 08021B 09059.87647027 .00000199 00000-0 32531-4 0 3024 -2 32784 97.9607 124.5370 0016396 21.8626 338.3289 14.81019794 45397 +1 32784U 08021B 09102.17017622 .00000210 00000-0 33927-4 0 3381 +2 32784 97.9525 166.5038 0014853 238.6557 121.3198 14.81032424 51650 CUTE-1.7+APD II -1 32785U 08021C 09058.70768523 -.00000058 00000-0 -52805-6 0 3014 -2 32785 97.9601 123.5150 0015647 30.8997 329.3116 14.81451872 45235 +1 32785U 08021C 09101.66443135 .00000088 00000-0 18021-4 0 3377 +2 32785 97.9522 166.1634 0013781 247.1110 112.8649 14.81466252 51594 COMPASS-1 -1 32787U 08021E 09059.23308950 .00000125 00000-0 22701-4 0 2921 -2 32787 97.9562 123.9192 0016602 30.2180 329.9985 14.81553912 45310 +1 32787U 08021E 09101.71401902 .00000051 00000-0 13277-4 0 3290 +2 32787 97.9483 166.0817 0014793 246.9239 113.0400 14.81575542 51600 AAUSAT-II -1 32788U 08021F 09059.14236931 -.00000071 00000-0 -21203-5 0 2920 -2 32788 97.9573 123.8735 0016173 31.9553 328.2638 14.81671712 45305 +1 32788U 08021F 09101.41725511 .00000499 00000-0 70055-4 0 3285 +2 32788 97.9487 165.8370 0014028 250.0966 109.8743 14.81698483 51568 DELFI-C3 -1 32789U 08021G 09059.22921931 .00000530 00000-0 74137-4 0 3024 -2 32789 97.9609 124.0575 0016214 29.8570 330.3556 14.81625660 45317 +1 32789U 08021G 09101.77545984 .00000275 00000-0 41757-4 0 3389 +2 32789 97.9525 166.3144 0014642 245.7742 114.1939 14.81660848 51618 CANX-2 -1 32790U 08021H 09058.84439228 -.00000191 00000-0 -17548-4 0 2876 -2 32790 97.9591 123.6306 0016040 31.6578 328.5585 14.81438729 45232 +1 32790U 08021H 09101.39624604 .00000060 00000-0 14468-4 0 3231 +2 32790 97.9523 165.8737 0014380 247.1633 112.8064 14.81453207 51538 SEEDS II -1 32791U 08021J 09058.72336772 -.00000060 00000-0 -74859-6 0 2846 -2 32791 97.9587 123.4423 0016851 29.5843 330.6311 14.81391624 45207 +1 32791U 08021J 09101.74932572 .00000388 00000-0 56409-4 0 3208 +2 32791 97.9508 166.1503 0014996 246.4317 113.5317 14.81412210 51573 PSLV DEB -1 32797U 08021L 09057.62862811 .00000205 00000-0 26126-4 0 1400 -2 32797 97.9558 122.4198 0016226 34.4501 325.8264 14.81440627 43772 +1 32797U 08021L 09102.15582155 .00002199 00000-0 27758-3 0 1538 +2 32797 97.9759 167.5172 0015224 252.4668 107.4282 14.82873744 50379 Modified: trunk/data/galileo.tle =================================================================== --- trunk/data/galileo.tle 2009-04-12 13:33:37 UTC (rev 248) +++ trunk/data/galileo.tle 2009-04-12 13:34:52 UTC (rev 249) @@ -1,6 +1,6 @@ GIOVE-A -1 28922U 05051A 09059.42380005 .00000024 00000-0 10000-3 0 4567 -2 28922 56.0639 160.2352 0006899 336.3673 23.6236 1.70191062 19713 +1 28922U 05051A 09099.96553225 .00000035 00000-0 10000-3 0 4737 +2 28922 56.0621 159.1646 0007715 330.3027 29.7438 1.70191108 20402 GIOVE-B -1 32781U 08020A 09057.99574195 .00000031 00000-0 10000-3 0 1384 -2 32781 55.9596 195.2065 0017770 205.8383 154.0221 1.70950538 5245 +1 32781U 08020A 09101.86705230 .00000001 00000-0 10000-3 0 1530 +2 32781 55.9533 194.0322 0019055 211.9356 147.9887 1.70950663 5995 Modified: trunk/data/geo.tle =================================================================== --- trunk/data/geo.tle 2009-04-12 13:33:37 UTC (rev 248) +++ trunk/data/geo.tle 2009-04-12 13:34:52 UTC (rev 249) @@ -1,1149 +1,1146 @@ LES 9 -1 08747U 76023B 09058.55968701 -.00000068 00000-0 10000-3 0 2393 -2 08747 10.8021 151.5511 0022856 318.0246 145.5845 1.00267418 66324 +1 08747U 76023B 09102.15449278 -.00000065 00000-0 10000-3 0 2692 +2 08747 10.8386 150.2802 0023274 320.3463 40.8188 1.00266129 66762 MARISAT 2 -1 09478U 76101A 09057.85097516 -.00000048 00000-0 10000-3 0 1185 -2 09478 13.2201 356.6065 0099808 198.4451 161.2254 0.97589808 61817 +1 09478U 76101A 09098.83706918 -.00000105 00000-0 10000-3 0 1321 +2 09478 13.2264 356.3579 0098359 199.2400 160.3361 0.97590625 62219 GOES 3 -1 10953U 78062A 09058.84694555 -.00000125 00000-0 10000-3 0 4144 -2 10953 14.3223 0.9697 0003941 326.2007 33.7934 1.00270304 65572 +1 10953U 78062A 09099.73536865 -.00000140 00000-0 10000-3 0 4604 +2 10953 14.3374 0.6447 0003968 336.1490 23.7894 1.00268427 65986 ESIAFI 1 (COMSTAR 4) -1 12309U 81018A 09058.37166847 -.00000144 00000-0 10000-3 0 2051 -2 12309 13.8434 11.0951 0006568 272.3773 87.5716 1.00265885104096 +1 12309U 81018A 09101.25686911 -.00000146 00000-0 10000-3 0 2182 +2 12309 13.8793 10.7500 0006817 280.9435 78.9294 1.00262325104526 SATCOM C5 -1 13631U 82105A 09057.94646688 -.00000096 00000-0 10000-3 0 5954 -2 13631 12.3487 32.5674 0007898 261.6482 98.3184 1.00273015 63011 +1 13631U 82105A 09099.83025388 -.00000111 00000-0 10000-3 0 6135 +2 13631 12.4205 32.1840 0006608 275.8809 83.9876 1.00272989 63432 TDRS 1 -1 13969U 83026B 09058.32518331 -.00000290 00000-0 10000-3 0 8237 -2 13969 13.2556 10.1079 0023329 239.5958 335.6958 1.00267063 67894 +1 13969U 83026B 09100.05289291 -.00000307 00000-0 10000-3 0 8481 +2 13969 13.2893 9.7929 0022335 239.7445 278.8991 1.00266831 68310 GSTAR 1 -1 15677U 85035A 09058.99828286 -.00000088 00000-0 10000-3 0 1129 -2 15677 10.4452 52.0429 0009561 258.0324 101.9555 1.00272535 61885 +1 15677U 85035A 09099.88461653 -.00000102 00000-0 10000-3 0 1287 +2 15677 10.5368 51.5815 0008992 268.6407 91.2158 1.00272510 62290 INTELSAT 511 -1 15873U 85055A 09058.22950266 -.00000142 00000-0 10000-3 0 3593 -2 15873 11.8040 40.2418 0016880 275.9342 83.9442 1.00122206 61285 +1 15873U 85055A 09098.17995547 -.00000327 00000-0 10000-3 0 3687 +2 15873 11.8818 39.8443 0016475 288.5029 71.2731 1.00113589 61681 GOES 7 -1 17561U 87022A 09059.28552561 .00000072 00000-0 10000-3 0 8426 -2 17561 11.9051 38.3142 0002701 182.2494 225.1250 1.00274324 63829 +1 17561U 87022A 09098.31846034 .00000049 00000-0 10000-3 0 9025 +2 17561 11.9810 37.9137 0003464 220.6863 236.4063 1.00258473 64213 GSTAR 3 -1 19483U 88081A 09057.91837698 -.00000098 00000-0 10000-3 0 1840 -2 19483 14.1762 22.0185 0006945 321.8121 38.1700 1.00272708 71259 +1 19483U 88081A 09099.80239733 -.00000114 00000-0 10000-3 0 2019 +2 19483 14.2309 21.6351 0007279 330.2383 29.6655 1.00272757 71676 TDRS 3 -1 19548U 88091B 09059.83285306 -.00000185 00000-0 10000-3 0 2083 -2 19548 11.6320 40.9949 0024053 308.8499 193.6250 1.00270115 62058 +1 19548U 88091B 09100.76986782 -.00000197 00000-0 10000-3 0 2339 +2 19548 11.7127 40.5895 0024851 314.7711 205.7807 1.00273620 62461 ASTRA 1A -1 19688U 88109B 09056.60792721 .00000000 00000-0 10000-3 0 5385 -2 19688 7.3415 65.6702 0017218 297.8596 62.1638 0.98331951 53952 +1 19688U 88109B 09100.33222722 -.00000078 00000-0 10000-3 0 5560 +2 19688 7.4506 65.1421 0017927 305.3416 54.4706 0.98335979 54382 TDRS 4 -1 19883U 89021B 09059.24764793 -.00000273 00000-0 10000-3 0 5302 -2 19883 10.2628 53.0489 0003390 276.0136 232.2958 1.00265843245628 +1 19883U 89021B 09100.87235348 -.00000286 00000-0 10000-3 0 5592 +2 19883 10.3573 52.5713 0002997 296.0855 118.7673 1.00267390246042 INTELSAT 602 (IS-602) -1 20315U 89087A 09057.54115274 .00000042 00000-0 10000-3 0 8464 -2 20315 6.6403 67.5542 0001045 284.4352 177.1640 1.00271457 68613 +1 20315U 89087A 09100.49275715 .00000030 00000-0 10000-3 0 8674 +2 20315 6.7462 67.0121 0001344 300.0650 186.9944 1.00273555 69049 LEASAT 5 -1 20410U 90002B 09059.88722693 -.00000306 00000-0 10000-3 0 711 -2 20410 8.1266 35.9387 0000570 343.4045 198.9088 1.00270613 55353 +1 20410U 90002B 09100.75130161 -.00000319 00000-0 10000-3 0 968 +2 20410 8.1995 35.7514 0000394 20.1250 153.7148 1.00273453 55769 INTELSAT 603 (IS-603) -1 20523U 90021A 09056.09835524 -.00000151 00000-0 10000-3 0 4212 -2 20523 6.1105 69.1001 0001251 280.9227 180.5108 1.00271414 62352 +1 20523U 90021A 09099.00391576 -.00000164 00000-0 10000-3 0 4454 +2 20523 6.2177 68.5932 0002056 307.4358 162.7572 1.00269608 62788 ASIASAT 1 -1 20558U 90030A 09059.07443094 .00000086 00000-0 10000-3 0 6654 -2 20558 8.7929 61.6193 0005855 217.8005 142.2942 0.99241257 68994 +1 20558U 90030A 09101.39168981 .00000022 00000-0 10000-3 0 6847 +2 20558 8.8948 61.0970 0004382 225.0029 134.9327 0.99239838 69419 INSAT-1D -1 20643U 90051A 09059.52433377 -.00000045 00000-0 10000-3 0 1623 -2 20643 9.5478 57.5676 0014418 20.9658 339.2021 1.00282797 55404 +1 20643U 90051A 09100.40580546 -.00000074 00000-0 10000-3 0 2070 +2 20643 9.6445 57.0851 0016682 22.1578 337.8791 1.00285620 55810 COSMOS 2085 -1 20693U 90061A 09058.44305986 -.00000138 00000-0 10000-3 0 9095 -2 20693 11.9420 36.8054 0004793 254.6237 105.3835 1.00270504 68140 +1 20693U 90061A 09101.32591693 -.00000144 00000-0 10000-3 0 9247 +2 20693 12.0223 36.3974 0004555 276.5755 83.3114 1.00266628 68577 SKYNET 4C -1 20776U 90079A 09059.79240006 .00000085 00000-0 00000+0 0 8955 -2 20776 9.6192 48.3911 0002935 272.2791 136.6992 1.00271011 67604 +1 20776U 90079A 09101.68630008 .00000073 00000-0 00000+0 0 9145 +2 20776 9.7118 47.9827 0002801 326.5579 85.8453 1.00269466 68028 EUTELSAT 2-F1 -1 20777U 90079B 09059.38896404 -.00000268 00000-0 10000-3 0 8599 -2 20777 8.9874 60.6765 0004106 173.1644 186.9694 0.99347212 48000 -SBS-6 -1 20872U 90091A 09059.13223427 .00000076 00000-0 10000-3 0 320 -2 20872 1.5025 82.4616 0006847 296.1435 64.6207 0.98990463 55706 +1 20777U 90079B 09098.64366354 -.00000202 00000-0 10000-3 0 8753 +2 20777 9.0824 60.1983 0002146 167.0808 192.9271 0.99349850 48390 GALAXY 6 -1 20873U 90091B 09059.38378433 -.00000336 00000-0 10000-3 0 2441 -2 20873 5.9063 69.9714 0001571 170.5654 189.6568 0.99766660 61765 +1 20873U 90091B 09100.48037779 .00000110 00000-0 10000-3 0 2623 +2 20873 6.0094 69.4319 0000700 295.5387 64.4893 0.99755862 62170 INMARSAT 2-F1 -1 20918U 90093A 09058.66094050 .00000116 00000-0 10000-3 0 2932 -2 20918 6.3572 56.1550 0003338 287.6429 269.6999 1.00271880 63570 +1 20918U 90093A 09100.34311104 .00000103 00000-0 10000-3 0 3563 +2 20918 6.4557 55.8182 0003957 323.1065 161.2478 1.00270620 63996 GSTAR 4 -1 20946U 90100B 09059.09301926 .00000083 00000-0 10000-3 0 2497 -2 20946 6.0974 69.8164 0005454 201.2847 158.9073 0.99140673 61655 +1 20946U 90100B 09100.44463237 .00000068 00000-0 10000-3 0 2658 +2 20946 6.2004 69.2794 0004237 205.5438 154.4735 0.99139421 62066 COSMOS 2133 -1 21111U 91010A 09059.47711204 -.00000072 00000-0 10000-3 0 1183 -2 21111 11.0484 42.9616 0003958 303.7306 56.3002 1.00284093 66095 +1 21111U 91010A 09100.35866634 -.00000103 00000-0 10000-3 0 1304 +2 21111 11.1305 42.5584 0004512 314.0570 45.8467 1.00285174 66508 INMARSAT 2-F2 -1 21149U 91018A 09059.19551190 -.00000131 00000-0 10000-3 0 4030 -2 21149 5.6731 56.3862 0003948 282.5982 151.5563 1.00272339 65870 +1 21149U 91018A 09102.23668963 -.00000142 00000-0 10000-3 0 4695 +2 21149 5.7729 56.0828 0004010 312.7886 178.9198 1.00271835 66303 TDRS 5 -1 21639U 91054B 09058.63758954 .00000113 00000-0 10000-3 0 4049 -2 21639 9.6074 56.8986 0007448 299.0227 223.3872 1.00273924 64369 -INTELSAT 605 (IS-605) -1 21653U 91055A 09059.66804527 .00000070 00000-0 00000+0 0 7486 -2 21653 4.1687 74.8254 0004898 206.5819 153.6996 0.99324385 64221 +1 21639U 91054B 09101.49881197 .00000101 00000-0 10000-3 0 4270 +2 21639 9.7082 56.3921 0010123 318.7207 196.5638 1.00272618 64791 ANIK E1 -1 21726U 91067A 09058.60963368 .00000101 00000-0 10000-3 0 1217 -2 21726 5.4897 71.9932 0007781 208.0280 152.1769 0.99167169 54612 +1 21726U 91067A 09099.95001689 .00000040 00000-0 10000-3 0 1378 +2 21726 5.5942 71.4484 0006399 216.7612 143.2680 0.99167030 55026 INTELSAT 601 (IS-601) -1 21765U 91075A 09058.61724409 .00000131 00000-0 10000-3 0 7333 -2 21765 4.2109 73.7007 0000455 332.2204 21.3393 1.00273859 63312 +1 21765U 91075A 09099.99186795 .00000118 00000-0 10000-3 0 7558 +2 21765 4.3138 73.1790 0000752 341.0778 188.6568 1.00273746 63734 EUTELSAT 2-F3 -1 21803U 91083A 09059.67484920 .00000091 00000-0 10000-3 0 6764 -2 21803 8.1566 63.7653 0003458 241.3600 163.3844 0.99292919 58932 +1 21803U 91083A 09102.18885517 -.00000097 00000-0 10000-3 0 7001 +2 21803 8.2626 63.2401 0002086 278.0892 204.9087 0.99294355 59356 GALAXY 5 -1 21906U 92013A 09056.83569975 -.00000235 00000-0 10000-3 0 8731 -2 21906 3.9544 74.9408 0015325 266.8700 93.3064 0.99291575 53653 +1 21906U 92013A 09097.12007733 -.00000032 00000-0 10000-3 0 8901 +2 21906 4.0554 74.4135 0016429 275.6001 84.4423 0.99290288 54051 INMARSAT 2-F4 -1 21940U 92021B 09059.74708444 -.00000345 00000-0 10000-3 0 1181 -2 21940 4.3054 50.3144 0001599 272.2044 214.1029 1.00276020 61763 +1 21940U 92021B 09101.94880417 -.00000356 00000-0 10000-3 0 1814 +2 21940 4.3993 50.3043 0004428 305.6898 294.8310 1.00272736 62180 EUTELSAT 2-F4 -1 22028U 92041B 09059.01090890 -.00000001 00000-0 10000-3 0 1358 -2 22028 7.3507 67.0165 0004285 124.6952 235.5216 0.99076420 53639 +1 22028U 92041B 09100.38938979 -.00000010 00000-0 10000-3 0 1512 +2 22028 7.4526 66.4781 0003499 92.4648 267.5853 0.99075749 54049 SATCOM C3 -1 22117U 92060B 09059.43116784 -.00000228 00000-0 10000-3 0 827 -2 22117 4.1129 73.8654 0001570 290.7161 229.9783 1.00271509 60285 +1 22117U 92060B 09099.37348392 -.00000241 00000-0 10000-3 0 1091 +2 22117 4.2153 73.3282 0001278 334.5027 205.3184 1.00269871 60684 HELLAS SAT 1 (DFS 3) -1 22175U 92066A 09057.56494155 .00000000 00000-0 10000-3 0 3369 -2 22175 6.6367 67.8416 0006166 262.4840 97.6607 0.99719939 57579 +1 22175U 92066A 09100.67801956 -.00000205 00000-0 10000-3 0 3538 +2 22175 6.7432 67.2994 0005912 269.8216 90.1261 0.99736697 58007 GORIZONT 27 -1 22245U 92082A 09058.22567279 -.00000054 00000-0 10000-3 0 4256 -2 22245 11.0417 46.0420 0016214 222.8104 137.1496 1.00227488 63844 -SUPERBIRD A1 -1 22253U 92084A 09058.15401257 .00000052 00000-0 10000-3 0 8039 -2 22253 2.7485 66.5882 0011682 337.2839 23.1584 0.99118141 59180 +1 22245U 92082A 09098.13229330 -.00000126 00000-0 10000-3 0 4343 +2 22245 11.1258 45.6149 0014113 226.4810 133.3715 1.00229188 64247 COSMOS 2224 -1 22269U 92088A 09055.71950872 -.00000046 00000-0 10000-3 0 5414 -2 22269 10.1720 48.8091 0001980 178.5041 181.6152 1.00259150 58783 +1 22269U 92088A 09098.60509719 -.00000073 00000-0 10000-3 0 5521 +2 22269 10.2661 48.3479 0002243 72.1425 287.8116 1.00263054 59217 TDRS 6 -1 22314U 93003B 09059.50857326 .00000101 00000-0 10000-3 0 4335 -2 22314 8.9533 59.9955 0004218 306.7963 163.3820 1.00277275 59090 +1 22314U 93003B 09098.49928645 .00000085 00000-0 10000-3 0 4532 +2 22314 9.0467 59.5198 0005916 316.0601 189.6803 1.00267102 59485 ASTRA 1C -1 22653U 93031A 09056.11818741 .00000014 00000-0 10000-3 0 3831 -2 22653 2.3035 79.2757 0003968 262.8990 217.4454 1.00272568 52939 +1 22653U 93031A 09100.83358022 .00000005 00000-0 10000-3 0 4012 +2 22653 2.4178 78.6251 0003971 293.9739 128.6486 1.00272106 53386 INSAT-2B -1 22724U 93048B 09059.09066088 .00000076 00000-0 10000-3 0 1934 -2 22724 7.6584 64.8853 0011771 39.2589 320.9900 0.99962955 57421 +1 22724U 93048B 09098.09985995 .00000065 00000-0 10000-3 0 2113 +2 22724 7.7539 64.3978 0011898 40.0334 320.0933 0.99978437 57815 ACTS -1 22796U 93058B 09059.01957650 -.00000082 00000-0 10000-3 0 6214 -2 22796 9.1739 59.1142 0003250 308.3436 51.7523 1.00272609 63555 +1 22796U 93058B 09101.90004148 -.00000094 00000-0 10000-3 0 6353 +2 22796 9.2755 58.5993 0004014 330.8556 29.0768 1.00272938 63984 INTELSAT 701 (IS-701) -1 22871U 93066A 09058.58177874 .00000058 00000-0 10000-3 0 3309 -2 22871 0.0398 234.8326 0002653 114.9310 197.1966 1.00272621 56107 -GORIZONT 28 -1 22880U 93069A 09058.63498595 .00000098 00000-0 00000+0 0 1064 -2 22880 10.5551 49.3539 0031604 352.6571 46.9703 0.99646735 56172 +1 22871U 93066A 09098.65131713 .00000040 00000-0 10000-3 0 3450 +2 22871 0.0065 299.3333 0002684 69.8270 242.3265 1.00272245 56500 GORIZONT 29 -1 22907U 93072A 09059.19127998 .00000048 00000-0 10000-3 0 6375 -2 22907 10.5336 49.4759 0014375 206.8327 153.1819 1.00161499 55937 +1 22907U 93072A 09098.12436960 -.00000081 00000-0 10000-3 0 6472 +2 22907 10.6189 49.0487 0014286 207.5977 152.3020 1.00169685 56322 SOLIDARIDAD 1 -1 22911U 93073A 09059.02440331 -.00000107 00000-0 10000-3 0 1554 -2 22911 7.6398 64.8761 0001111 181.8985 178.2645 1.00275614 54565 +1 22911U 93073A 09099.90958502 -.00000122 00000-0 10000-3 0 1680 +2 22911 7.7394 64.3577 0000210 296.8741 63.1322 1.00273569 54974 METEOSAT-6 (MOP-3) -1 22912U 93073B 09059.74086516 -.00000013 00000-0 10000-3 0 9481 -2 22912 8.1164 61.1634 0002054 276.9389 154.7114 1.00274017 54389 +1 22912U 93073B 09101.84538997 -.00000023 00000-0 10000-3 0 117 +2 22912 8.2176 60.6668 0002207 298.3002 212.9964 1.00269025 54804 NATO 4B -1 22921U 93076A 09057.61827872 .00000000 00000-0 10000-3 0 1304 -2 22921 7.5311 53.6675 0005076 330.6538 29.4859 1.00268573 55798 -DIRECTV 1 (DBS 1) -1 22930U 93078A 09058.99073282 -.00000006 00000-0 10000-3 0 5891 -2 22930 0.2933 85.8940 0005296 10.7975 263.3528 0.98986478 63524 +1 22921U 93076A 09100.49871244 .00000142 00000-0 10000-3 0 1476 +2 22921 7.6265 53.2652 0002982 304.2321 55.7087 1.00278022 56211 THAICOM 1 -1 22931U 93078B 09059.63698990 -.00000357 00000-0 10000-3 0 3249 -2 22931 0.0834 48.6574 0001806 211.7742 247.4372 1.00274465 55230 +1 22931U 93078B 09101.79174394 -.00000368 00000-0 10000-3 0 3535 +2 22931 0.1670 63.8603 0001700 229.3920 311.9368 1.00272140 55653 GOES 8 -1 23051U 94022A 09059.36193150 -.00000264 00000-0 10000-3 0 6937 -2 23051 5.4750 75.1900 0008834 183.9925 176.2435 0.98907979 61649 +1 23051U 94022A 09099.80172091 -.00000190 00000-0 10000-3 0 7424 +2 23051 5.5773 74.5984 0007102 188.7824 171.2975 0.98905917 62047 INTELSAT 702 (IS-702) -1 23124U 94034A 09056.85244155 .00000089 00000-0 10000-3 0 1674 -2 23124 0.0001 189.2591 0002399 151.9163 176.3735 1.00271875 68006 +1 23124U 94034A 09098.67053434 .00000073 00000-0 10000-3 0 1941 +2 23124 0.0336 270.0650 0002596 109.5884 113.6288 1.00272139 68427 INTELSAT 2 (IS-2) -1 23175U 94040A 09058.34609936 -.00000025 00000-0 10000-3 0 3858 -2 23175 0.1835 90.4249 0003810 274.3736 86.0890 1.00272666 52939 +1 23175U 94040A 09098.61923596 -.00000042 00000-0 10000-3 0 4055 +2 23175 0.2815 85.9827 0002518 287.7392 215.2997 1.00272052 53337 BS-3N -1 23176U 94040B 09056.98416910 .00000000 00000-0 10000-3 0 9864 -2 23176 0.0579 282.4231 0004190 119.4852 218.1447 1.00264348 53416 +1 23176U 94040B 09099.63534190 .00000000 00000-0 10000-3 0 9998 +2 23176 0.0230 130.1365 0003024 250.8053 155.6007 1.00263528 53848 APSTAR 1 -1 23185U 94043A 09058.66419791 -.00000260 00000-0 10000-3 0 1281 -2 23185 4.1464 73.8362 0001171 292.8978 172.0147 1.00270973 53485 +1 23185U 94043A 09101.14408282 -.00000271 00000-0 10000-3 0 1592 +2 23185 4.2539 73.1846 0001134 291.1108 29.0563 1.00271663 53902 DIRECTV 2 (DBS 2) -1 23192U 94047A 09057.83684202 -.00000206 00000-0 10000-3 0 4184 -2 23192 2.1092 79.0026 0013749 195.3820 165.2133 0.98637058 63342 +1 23192U 94047A 09100.41485877 -.00000012 00000-0 10000-3 0 4381 +2 23192 2.2177 78.4815 0013479 197.8539 162.4554 0.98633163 63765 BRASILSAT B1 -1 23199U 94049A 09059.41009063 -.00000265 00000-0 10000-3 0 2379 -2 23199 1.8851 79.9427 0002090 261.3011 256.7408 1.00273435 64188 +1 23199U 94049A 09100.27880956 -.00000278 00000-0 10000-3 0 2619 +2 23199 1.9885 79.3348 0002173 323.0057 188.6633 1.00269655 64597 OPTUS B3 -1 23227U 94055A 09058.62512730 -.00000069 00000-0 10000-3 0 3047 -2 23227 1.1733 81.1011 0004473 246.6561 218.8636 1.00272785 53108 +1 23227U 94055A 09098.31383914 -.00000087 00000-0 10000-3 0 3238 +2 23227 1.2739 80.4697 0004691 290.8632 102.3485 1.00272402 53508 NSS-703 -1 23305U 94064A 09059.68301816 .00000077 00000-0 10000-3 0 9002 -2 23305 0.0311 215.7491 0002983 135.0394 110.6977 1.00272874 52847 +1 23305U 94064A 09099.59525991 .00000061 00000-0 10000-3 0 9225 +2 23305 0.0146 174.5755 0003164 203.9223 90.7550 1.00273758 53248 SOLIDARIDAD 2 -1 23313U 94065A 09059.51431287 -.00000020 00000-0 10000-3 0 2956 -2 23313 0.9629 81.6837 0002159 258.8806 248.1169 1.00272274 52707 +1 23313U 94065A 09101.61973748 -.00000031 00000-0 10000-3 0 3175 +2 23313 1.0712 81.0009 0002312 295.1046 292.0437 1.00272522 53127 THAICOM 2 -1 23314U 94065B 09059.61011589 -.00000116 00000-0 10000-3 0 2087 -2 23314 0.0760 33.3937 0005862 246.1516 177.1265 1.00271297 52681 +1 23314U 94065B 09100.68236419 -.00000129 00000-0 10000-3 0 2402 +2 23314 0.1032 41.8410 0004076 258.5434 222.7774 1.00270996 53099 EXPRESS 1 -1 23319U 94067A 09057.68793906 .00000063 00000-0 10000-3 0 6667 -2 23319 7.8374 64.2255 0001500 138.1895 221.9967 0.99828721 52519 +1 23319U 94067A 09100.75756215 -.00000284 00000-0 10000-3 0 6820 +2 23319 7.9425 63.6919 0000917 108.0903 251.9031 0.99828376 52942 ASTRA 1D -1 23331U 94070A 09053.91802256 .00000153 00000-0 00000+0 0 8809 -2 23331 1.3670 79.2243 0002741 258.9078 176.5444 1.00273717 52894 +1 23331U 94070A 09101.00000000 .00000148 00000-0 00000+0 0 8938 +2 23331 1.4660 79.1510 0002226 305.0040 206.5090 1.00271816 53363 RADUGA 32 -1 23448U 94087A 09058.51125241 -.00000061 00000-0 10000-3 0 1187 -2 23448 9.9849 53.6245 0004917 148.3600 211.7792 1.00281964 69588 +1 23448U 94087A 09100.39034453 -.00000091 00000-0 10000-3 0 1313 +2 23448 10.0805 53.1458 0004187 144.9622 215.0231 1.00283734 70000 INTELSAT 704 (IS-704) -1 23461U 95001A 09058.80774044 .00000003 00000-0 10000-3 0 9006 -2 23461 0.0529 262.0606 0004220 79.8969 172.5836 1.00273123 51807 +1 23461U 95001A 09101.67055265 -.00000008 00000-0 10000-3 0 9294 +2 23461 0.0088 244.1552 0005166 127.2938 135.9636 1.00273107 52233 INTELSAT 705 (IS-705) -1 23528U 95013A 09058.21450978 -.00000277 00000-0 10000-3 0 8266 -2 23528 0.0071 118.5271 0001323 185.8630 239.9881 1.00269735 50979 +1 23528U 95013A 09100.91477079 -.00000290 00000-0 10000-3 0 8436 +2 23528 0.0088 150.8330 0003185 239.7600 87.9600 1.00270105 51408 BRASILSAT B2 -1 23536U 95016A 09059.34379306 -.00000163 00000-0 00000+0 0 9774 -2 23536 1.0604 83.8434 0002576 263.9843 202.1622 1.00270366 51058 +1 23536U 95016A 09100.17128953 -.00000176 00000-0 00000+0 0 14 +2 23536 1.1631 83.0308 0002944 289.4916 155.6150 1.00269995 51463 AMSC 1 -1 23553U 95019A 09059.42633699 -.00000107 00000-0 10000-3 0 946 -2 23553 4.2391 73.8419 0002678 280.7438 215.9544 1.00272019 50867 +1 23553U 95019A 09100.43324491 -.00000120 00000-0 10000-3 0 1093 +2 23553 4.3456 73.2947 0002564 313.6898 226.4630 1.00272221 51274 INTELSAT 706 (IS-706) -1 23571U 95023A 09057.65849731 .00000118 00000-0 10000-3 0 8792 -2 23571 0.0122 113.1504 0002879 240.6281 90.1491 1.00274986 50465 +1 23571U 95023A 09100.58411005 .00000057 00000-0 10000-3 0 9076 +2 23571 0.0314 264.2398 0025510 199.2094 0.6202 1.00401870 50892 DIRECTV 3 (DBS 3) -1 23598U 95029A 09059.51057819 -.00000215 00000-0 00000+0 0 169 -2 23598 0.0248 35.4466 0002953 309.7523 275.0307 1.00270799 50205 +1 23598U 95029A 09102.16089837 -.00000226 00000-0 10000-3 0 419 +2 23598 0.1189 88.7445 0002417 330.7517 116.9069 1.00271329 50635 TDRS 7 -1 23613U 95035B 09059.45210553 .00000128 00000-0 10000-3 0 4692 -2 23613 10.8043 49.3846 0003790 287.6232 193.3776 1.00276167 49904 +1 23613U 95035B 09100.28391310 .00000115 00000-0 10000-3 0 4967 +2 23613 10.8936 48.9351 0004150 335.5311 125.5126 1.00271274 50310 INTELSAT 4 (IS-4) -1 23636U 95040A 09059.82087535 -.00000053 00000-0 10000-3 0 9318 -2 23636 0.0410 269.8212 0002760 71.1546 185.2836 1.00272507 49680 +1 23636U 95040A 09101.66380000 -.00000064 00000-0 10000-3 0 9548 +2 23636 0.0642 80.8492 0003115 296.1813 133.9171 1.00272115 50105 COSMOS 2319 -1 23653U 95045A 09058.21658267 .00000057 00000-0 10000-3 0 9829 -2 23653 9.6024 55.8894 0002127 66.1080 294.0376 1.00263057 49428 +1 23653U 95045A 09098.10693438 .00000039 00000-0 10000-3 0 9943 +2 23653 9.6951 55.4124 0002859 50.6620 309.3573 1.00274699 49826 TELSTAR 4 (TELSTAR 402R) -1 23670U 95049A 09058.02905408 -.00000137 00000-0 10000-3 0 8978 -2 23670 5.0736 71.3969 0005694 219.9185 140.3099 1.00247396 49185 +1 23670U 95049A 09099.92356890 -.00000125 00000-0 10000-3 0 9144 +2 23670 5.1782 70.8593 0004638 232.7666 127.2725 1.00243388 49602 LUCH 1 -1 23680U 95054A 09057.53150547 .00000000 00000-0 10000-3 0 7300 -2 23680 8.7077 64.8377 0006863 297.1283 62.9631 1.00271782 49031 +1 23680U 95054A 09101.40821124 -.00000118 00000-0 10000-3 0 7493 +2 23680 8.8144 64.2459 0007171 304.9193 54.9876 1.00273433 49477 ASTRA 1E -1 23686U 95055A 09056.94477524 .00000000 00000-0 10000-3 0 9805 -2 23686 0.0679 167.8024 0001558 125.6829 226.0493 1.00272483 48981 +1 23686U 95055A 09101.00000000 .00000129 00000-0 00000+0 0 9889 +2 23686 0.0680 164.0390 0002082 272.2080 146.5880 1.00266921 49436 ASIASAT 2 -1 23723U 95064A 09059.54367309 -.00000301 00000-0 10000-3 0 8742 -2 23723 0.0325 291.9416 0002088 49.3781 113.3293 1.00268488 48552 +1 23723U 95064A 09102.23331718 -.00000313 00000-0 10000-3 0 9106 +2 23723 0.0681 44.1741 0002553 329.6923 11.1731 1.00271968 48981 TELECOM 2C -1 23730U 95067A 09059.09673870 .00000024 00000-0 10000-3 0 671 -2 23730 4.9053 72.0965 0004165 257.1952 226.6072 1.00272405 48574 +1 23730U 95067A 09101.12004340 .00000013 00000-0 10000-3 0 884 +2 23730 5.0144 71.5536 0004034 293.0335 241.1374 1.00271192 48999 ECHOSTAR 1 -1 23754U 95073A 09059.52095486 .00000135 00000-0 10000-3 0 496 -2 23754 0.0598 266.8502 0002129 68.1220 222.9473 1.00271104 48093 +1 23754U 95073A 09099.26922113 .00000119 00000-0 10000-3 0 703 +2 23754 0.0582 81.9880 0002372 283.5904 140.9059 1.00274190 48494 INTELSAT 3R (IS-3R) -1 23764U 96002A 09059.75575205 -.00000263 00000-0 10000-3 0 6092 -2 23764 0.0152 196.4796 0001888 145.1300 46.1368 1.00270432 48103 +1 23764U 96002A 09093.90900823 -.00000287 00000-0 10000-3 0 6248 +2 23764 0.0057 183.6313 0003630 182.2312 110.7007 1.00269361 48446 AFRICASAT-1 (MEASAT-1) -1 23765U 96002B 09058.98808429 .00000138 00000-0 10000-3 0 7972 -2 23765 1.3385 80.5205 0001403 315.3284 163.7986 1.00274650 48073 +1 23765U 96002B 09101.68853436 .00000127 00000-0 10000-3 0 8201 +2 23765 1.4491 79.8660 0000812 358.0304 55.9790 1.00270677 48506 KOREASAT 2 -1 23768U 96003A 09059.81145370 -.00000357 00000-0 10000-3 0 7129 -2 23768 2.0884 78.8247 0002034 26.0014 102.5676 1.00271262 48064 +1 23768U 96003A 09101.65807564 -.00000368 00000-0 10000-3 0 7356 +2 23768 2.1962 78.2350 0000424 344.9631 130.1971 1.00273956 48482 HGS-3 -1 23779U 96006A 09057.65491343 .00000158 00000-0 10000-3 0 1535 -2 23779 0.0749 249.2718 0000799 108.7160 72.4408 1.00275337 47825 +1 23779U 96006A 09101.72819942 .00000148 00000-0 10000-3 0 1812 +2 23779 0.0532 118.7806 0002774 280.0263 101.4273 1.00273464 48267 INTELSAT 707 (IS-707) -1 23816U 96015A 09059.65950156 -.00000280 00000-0 10000-3 0 8197 -2 23816 0.0127 223.5727 0002931 128.4353 351.0026 1.00271900 47481 +1 23816U 96015A 09100.41720841 -.00000293 00000-0 10000-3 0 8334 +2 23816 0.0214 161.7533 0003094 224.5489 269.6641 1.00271561 47890 INMARSAT 3-F1 -1 23839U 96020A 09058.81240144 .00000017 00000-0 10000-3 0 6199 -2 23839 0.1564 45.9630 0005304 286.8576 181.8889 1.00273390 47272 +1 23839U 96020A 09100.73361709 .00000004 00000-0 10000-3 0 6803 +2 23839 0.2498 59.9894 0005411 312.7870 154.8639 1.00271861 47691 ASTRA 1F -1 23842U 96021A 09051.00000000 .00000118 00000-0 00000+0 0 9643 -2 23842 0.0170 162.5540 0005059 189.2980 177.3930 1.00273287 47100 +1 23842U 96021A 09101.00000000 .00000112 00000-0 00000+0 0 9722 +2 23842 0.0310 218.6510 0004776 153.3080 206.5750 1.00264728 47604 MSAT M1 -1 23846U 96022A 09058.54980927 -.00000074 00000-0 10000-3 0 4236 -2 23846 1.5847 79.7277 0005472 258.6063 270.5810 1.00272578 47092 +1 23846U 96022A 09101.53453800 -.00000085 00000-0 10000-3 0 4523 +2 23846 1.6927 79.1179 0005895 301.8499 264.8354 1.00271702 47525 PALAPA C2 -1 23864U 96030A 09057.78990594 -.00000353 00000-0 10000-3 0 8279 -2 23864 0.0155 268.0175 0001709 20.3660 265.6780 1.00268709 46815 +1 23864U 96030A 09099.60135694 -.00000368 00000-0 10000-3 0 8500 +2 23864 0.0253 118.8837 0001899 297.6198 110.8516 1.00267047 47235 AMOS 1 -1 23865U 96030B 09058.16612530 -.00000010 00000-0 10000-3 0 412 -2 23865 0.6193 86.7914 0003792 238.7901 249.7806 1.00272830 46819 +1 23865U 96030B 09101.74739520 -.00000021 00000-0 10000-3 0 652 +2 23865 0.7307 85.3104 0004312 287.9969 94.2740 1.00271891 47257 GALAXY 9 (G-9) -1 23877U 96033A 09058.46857774 -.00000220 00000-0 10000-3 0 437 -2 23877 0.5042 81.4702 0001226 277.2368 246.4066 1.00272483 46766 +1 23877U 96033A 09099.44250435 -.00000235 00000-0 10000-3 0 662 +2 23877 0.6079 81.2668 0001548 296.3279 258.5057 1.00269725 47171 GORIZONT 32 -1 23880U 96034A 09058.16433272 -.00000106 00000-0 10000-3 0 1492 -2 23880 9.1750 57.7694 0002880 257.2351 247.5103 1.00274522 46731 +1 23880U 96034A 09101.91207959 -.00000118 00000-0 10000-3 0 1814 +2 23880 9.2803 57.2475 0002343 296.1968 161.5618 1.00272223 47174 INTELSAT 709 (IS-709) -1 23915U 96035A 09057.99478493 -.00000180 00000-0 10000-3 0 8956 -2 23915 0.0152 130.6453 0002744 232.7476 236.8034 1.00270774 46554 +1 23915U 96035A 09101.93047065 -.00000191 00000-0 10000-3 0 9219 +2 23915 0.0576 69.4697 0003527 337.0347 213.8590 1.00270965 46991 APSTAR 1A -1 23943U 96039A 09059.61548006 -.00000331 00000-0 10000-3 0 9724 -2 23943 3.4538 75.5178 0000701 25.1664 49.4005 1.00273000 46387 +1 23943U 96039A 09101.22431744 -.00000342 00000-0 10000-3 0 69 +2 23943 3.5617 74.6706 0001537 279.7091 55.9038 1.00275370 46797 TURKSAT 1C -1 23949U 96040B 09057.03035706 .00000158 00000-0 10000-3 0 9708 -2 23949 0.8880 79.9149 0003618 263.2946 214.7206 1.00275758 46289 +1 23949U 96040B 09099.88274038 .00000145 00000-0 10000-3 0 9931 +2 23949 0.9966 79.4260 0003657 295.3134 172.2875 1.00275296 46717 TELECOM 2D -1 24209U 96044B 09058.53273137 -.00000059 00000-0 10000-3 0 8542 -2 24209 2.6281 77.3182 0005276 254.6641 9.4032 1.00272828 46114 +1 24209U 96044B 09101.15687922 -.00000070 00000-0 10000-3 0 8756 +2 24209 2.7375 76.6402 0004853 292.9142 238.5657 1.00272628 46540 INMARSAT 3-F2 -1 24307U 96053A 09056.87315016 -.00000120 00000-0 10000-3 0 7165 -2 24307 0.1139 306.3191 0006226 36.3789 111.9705 1.00272634 45678 +1 24307U 96053A 09101.90735998 -.00000129 00000-0 10000-3 0 7771 +2 24307 0.0820 14.2380 0005035 353.4196 143.7346 1.00272059 46127 ECHOSTAR 2 -1 24313U 96055A 09059.20915164 -.00000076 00000-0 10000-3 0 9526 -2 24313 0.6028 81.5558 0003107 221.3120 182.6236 1.00350027 45729 +1 24313U 96055A 09102.23165521 -.00000162 00000-0 10000-3 0 9876 +2 24313 0.7129 80.9113 0002162 260.7830 206.3526 1.00347898 46153 AMC-1 (GE-1) -1 24315U 96054A 09059.20785196 -.00000096 00000-0 10000-3 0 890 -2 24315 0.0258 245.1297 0003410 86.8012 158.0238 1.00271850 45689 +1 24315U 96054A 09100.42534443 -.00000110 00000-0 10000-3 0 1111 +2 24315 0.0220 177.7327 0003424 189.3514 241.8011 1.00271496 46095 ARABSAT-2B -1 24652U 96063A 09058.78144272 .00000159 00000-0 10000-3 0 9494 -2 24652 0.0461 125.0434 0002524 222.4434 122.0153 1.00271950 45519 +1 24652U 96063A 09098.99357709 .00000142 00000-0 10000-3 0 9708 +2 24652 0.0267 216.9088 0003636 181.4512 187.1208 1.00272904 45911 MEASAT-2 -1 24653U 96063B 09057.40332382 -.00000214 00000-0 10000-3 0 9059 -2 24653 1.2946 80.7850 0001034 256.7522 111.9853 1.00270099 45060 +1 24653U 96063B 09098.62576553 -.00000230 00000-0 10000-3 0 9269 +2 24653 1.4007 80.0020 0000975 284.4357 205.8182 1.00269865 45471 EUROBIRD 9 -1 24665U 96067A 09057.30000000 .00000089 00000-0 00000+0 0 8091 -2 24665 0.0620 108.4900 0004849 259.5150 265.7520 1.00405733 45310 +1 24665U 96067A 09100.96126565 .00000147 00000-0 10000-3 0 8480 +2 24665 0.1041 82.6386 0004162 284.5943 211.9072 1.00435929 45758 INMARSAT 3-F3 -1 24674U 96070A 09059.25872618 .00000046 00000-0 10000-3 0 6819 -2 24674 0.1251 37.3904 0003609 296.3550 95.7232 1.00275324 44659 +1 24674U 96070A 09100.49506051 .00000032 00000-0 10000-3 0 7442 +2 24674 0.1198 27.4851 0004084 352.7814 174.9198 1.00274592 45061 AMC-2 (GE-2) -1 24713U 97002A 09057.51856648 -.00000110 00000-0 10000-3 0 8625 -2 24713 0.0110 233.0512 0002585 100.5641 268.5386 1.00272317 44238 +1 24713U 97002A 09102.22547552 -.00000120 00000-0 10000-3 0 8930 +2 24713 0.0564 98.2775 0002374 269.0276 173.3925 1.00271220 44687 NAHUEL 1A -1 24714U 97002B 09058.27515456 -.00000254 00000-0 10000-3 0 8460 -2 24714 1.4874 80.3973 0004341 261.4431 202.6146 1.00270507 44244 +1 24714U 97002B 09100.30351625 -.00000268 00000-0 10000-3 0 8676 +2 24714 1.5932 79.7794 0004921 298.2211 218.1670 1.00271112 44664 JCSAT 4 -1 24732U 97007A 09058.53815868 -.00000196 00000-0 10000-3 0 6096 -2 24732 0.0337 260.8451 0001588 78.5129 161.8656 1.00271781 43976 +1 24732U 97007A 09098.61659259 -.00000214 00000-0 10000-3 0 6236 +2 24732 0.0033 157.0153 0001582 212.6344 199.3244 1.00272380 44379 INTELSAT 801 (IS-801) -1 24742U 97009A 09056.88515150 -.00000220 00000-0 10000-3 0 5857 -2 24742 0.4536 86.0484 0004645 264.1146 ... [truncated message content] |
From: <cs...@us...> - 2009-04-12 14:22:11
|
Revision: 248 http://gpredict.svn.sourceforge.net/gpredict/?rev=248&view=rev Author: csete Date: 2009-04-12 13:33:37 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Added transponders for weather sats. Modified Paths: -------------- trunk/data/Makefile.am Added Paths: ----------- trunk/data/24786.trsp trunk/data/25338.trsp trunk/data/26352.trsp trunk/data/26536.trsp trunk/data/26871.trsp trunk/data/27453.trsp trunk/data/28654.trsp Added: trunk/data/24786.trsp =================================================================== --- trunk/data/24786.trsp (rev 0) +++ trunk/data/24786.trsp 2009-04-12 13:33:37 UTC (rev 248) @@ -0,0 +1,6 @@ +[LRIT] +DOWN_LOW=1691000000 + +[GVAR PDUS] +DOWN_LOW=1685700000 + Added: trunk/data/25338.trsp =================================================================== --- trunk/data/25338.trsp (rev 0) +++ trunk/data/25338.trsp 2009-04-12 13:33:37 UTC (rev 248) @@ -0,0 +1,6 @@ +[APT] +DOWN_LOW=137500000 + +[HRPT] +DOWN_LOW=1702500000 + Added: trunk/data/26352.trsp =================================================================== --- trunk/data/26352.trsp (rev 0) +++ trunk/data/26352.trsp 2009-04-12 13:33:37 UTC (rev 248) @@ -0,0 +1,6 @@ +[LRIT] +DOWN_LOW=1691000000 + +[GVAR PDUS] +DOWN_LOW=1685700000 + Added: trunk/data/26536.trsp =================================================================== --- trunk/data/26536.trsp (rev 0) +++ trunk/data/26536.trsp 2009-04-12 13:33:37 UTC (rev 248) @@ -0,0 +1,3 @@ +[HRPT] +DOWN_LOW=1702500000 + Added: trunk/data/26871.trsp =================================================================== --- trunk/data/26871.trsp (rev 0) +++ trunk/data/26871.trsp 2009-04-12 13:33:37 UTC (rev 248) @@ -0,0 +1,6 @@ +[LRIT] +DOWN_LOW=1691000000 + +[GVAR PDUS] +DOWN_LOW=1685700000 + Added: trunk/data/27453.trsp =================================================================== --- trunk/data/27453.trsp (rev 0) +++ trunk/data/27453.trsp 2009-04-12 13:33:37 UTC (rev 248) @@ -0,0 +1,6 @@ +[APT] +DOWN_LOW=137620000 + +[HRPT] +DOWN_LOW=1707000000 + Added: trunk/data/28654.trsp =================================================================== --- trunk/data/28654.trsp (rev 0) +++ trunk/data/28654.trsp 2009-04-12 13:33:37 UTC (rev 248) @@ -0,0 +1,6 @@ +[APT] +DOWN_LOW=137100000 + +[HRPT] +DOWN_LOW=1698000000 + Modified: trunk/data/Makefile.am =================================================================== --- trunk/data/Makefile.am 2009-04-12 13:20:01 UTC (rev 247) +++ trunk/data/Makefile.am 2009-04-12 13:33:37 UTC (rev 248) @@ -7,7 +7,9 @@ gps-ops.tle iridium.tle military.tle \ radar.tle science.tle weather.tle \ 7530.trsp 22825.trsp 24278.trsp 25544.trsp \ - 27607.trsp 27848.trsp 28375.trsp 28650.trsp + 27607.trsp 27848.trsp 28375.trsp 28650.trsp \ + 24786.trsp 25338.trsp 26352.trsp 26536.trsp \ + 26871.trsp 27453.trsp 28654.trsp EXTRA_DIST = $(gpredict_dat_DATA) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 14:05:13
|
Revision: 250 http://gpredict.svn.sourceforge.net/gpredict/?rev=250&view=rev Author: csete Date: 2009-04-12 14:05:11 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Added checks for transponder data in user conf directory. Modified Paths: -------------- trunk/src/first-time.c trunk/src/first-time.h Modified: trunk/src/first-time.c =================================================================== --- trunk/src/first-time.c 2009-04-12 13:34:52 UTC (rev 249) +++ trunk/src/first-time.c 2009-04-12 14:05:11 UTC (rev 250) @@ -38,9 +38,7 @@ #include "first-time.h" -/**** FIXME: clean up / rewrite: check_dir, checkfile and driver */ - /* private function prototypes */ static void first_time_check_step_01 (guint *error); static void first_time_check_step_02 (guint *error); @@ -49,13 +47,15 @@ static void first_time_check_step_05 (guint *error); static void first_time_check_step_06 (guint *error); static void first_time_check_step_07 (guint *error); +static void first_time_check_step_08 (guint *error); +static void first_time_check_step_09 (guint *error); /** \brief Perform first time checks. * * This function is called by the main function very early during program - * startup. It's purpose is to check the user configuration to see weather + * startup. It's purpose is to check the user configuration to see whether * this is the first time gpredict is executed. If it is, a new default * configuration is set up so that the user has some sort of setup to get * started with. @@ -79,6 +79,10 @@ * network. * 7. Check for the existence of $HOME/.gpredict2/hwconf directory. This * directory contains radio and rotator configurations (.rig and .rot files). + * 8. Check for the existence of $HOME/.gpredict2/trsp directory. This + * directory contains transponder data for satellites. + * 9. Check the .trsp files in $HOME/.gpredict2/trsp/ and compare to the ones + * available in PACKAGE_DATA_DIR/data/xxx.trsp, and update if necessary. * * Send both error, warning and verbose debug messages to sat-log during this * process. @@ -92,17 +96,19 @@ guint first_time_check_run () { - guint error = 0; - - first_time_check_step_01 (&error); - first_time_check_step_02 (&error); - first_time_check_step_03 (&error); - first_time_check_step_04 (&error); - first_time_check_step_05 (&error); - first_time_check_step_06 (&error); + guint error = 0; + + first_time_check_step_01 (&error); + first_time_check_step_02 (&error); + first_time_check_step_03 (&error); + first_time_check_step_04 (&error); + first_time_check_step_05 (&error); + first_time_check_step_06 (&error); first_time_check_step_07 (&error); + first_time_check_step_08 (&error); + first_time_check_step_09 (&error); - return error; + return error; } @@ -115,41 +121,41 @@ static void first_time_check_step_01 (guint *error) { - gchar *dir; - int status; + gchar *dir; + int status; - dir = g_strconcat (g_get_home_dir (), G_DIR_SEPARATOR_S, - ".gpredict2", NULL); + dir = g_strconcat (g_get_home_dir (), G_DIR_SEPARATOR_S, + ".gpredict2", NULL); - if (g_file_test (dir, G_FILE_TEST_IS_DIR)) { - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s: Check successful."), __FUNCTION__); - } - else { - /* try to create directory */ - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s: Check failed. Creating %s"), - __FUNCTION__, - dir); + if (g_file_test (dir, G_FILE_TEST_IS_DIR)) { + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Check successful."), __FUNCTION__); + } + else { + /* try to create directory */ + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Check failed. Creating %s"), + __FUNCTION__, + dir); - status = g_mkdir (dir, 0755); + status = g_mkdir (dir, 0755); - if (status) { - /* set error flag */ - *error |= FTC_ERROR_STEP_01; + if (status) { + /* set error flag */ + *error |= FTC_ERROR_STEP_01; - sat_log_log (SAT_LOG_LEVEL_ERROR, - _("%s: Failed to create %s"), - __FUNCTION__, dir ); - } - else { - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s: Created %s."), - __FUNCTION__, dir); - } - } + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: Failed to create %s"), + __FUNCTION__, dir ); + } + else { + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Created %s."), + __FUNCTION__, dir); + } + } - g_free (dir); + g_free (dir); } @@ -164,75 +170,75 @@ static void first_time_check_step_02 (guint *error) { - GDir *dir; - gchar *dirname; - gchar *filename; - const gchar *datafile; - gchar *target; - gboolean foundqth = FALSE; + GDir *dir; + gchar *dirname; + gchar *filename; + const gchar *datafile; + gchar *target; + gboolean foundqth = FALSE; - dirname = g_strconcat (g_get_home_dir (), G_DIR_SEPARATOR_S, - ".gpredict2", NULL); + dirname = g_strconcat (g_get_home_dir (), G_DIR_SEPARATOR_S, + ".gpredict2", NULL); - dir = g_dir_open (dirname, 0, NULL); + dir = g_dir_open (dirname, 0, NULL); - /* directory does not exist, something went wrong in step 1 */ - if (!dir) { - sat_log_log (SAT_LOG_LEVEL_ERROR, - _("%s: Could not open %s."), - __FUNCTION__, dirname); - - /* no reason to continue */ - *error |= FTC_ERROR_STEP_02; - } - else { - /* read files, if any; count number of .qth files */ - while ((datafile = g_dir_read_name (dir))) { + /* directory does not exist, something went wrong in step 1 */ + if (!dir) { + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: Could not open %s."), + __FUNCTION__, dirname); + + /* no reason to continue */ + *error |= FTC_ERROR_STEP_02; + } + else { + /* read files, if any; count number of .qth files */ + while ((datafile = g_dir_read_name (dir))) { - /* note: filename is not a newly allocated gchar *, - so we must not free it - */ + /* note: filename is not a newly allocated gchar *, + so we must not free it + */ - if (g_strrstr (datafile, ".qth")) { - foundqth = TRUE; - } + if (g_strrstr (datafile, ".qth")) { + foundqth = TRUE; + } - } + } - g_dir_close (dir); + g_dir_close (dir); - if (foundqth) { - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s: Found at least one .qth file."), - __FUNCTION__); - } - else { - /* try to copy sample.qth */ - filename = data_file_name ("sample.qth"); - target = g_strconcat (dirname, G_DIR_SEPARATOR_S, - "sample.qth", NULL); + if (foundqth) { + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Found at least one .qth file."), + __FUNCTION__); + } + else { + /* try to copy sample.qth */ + filename = data_file_name ("sample.qth"); + target = g_strconcat (dirname, G_DIR_SEPARATOR_S, + "sample.qth", NULL); - if (gpredict_file_copy (filename, target)) { - sat_log_log (SAT_LOG_LEVEL_ERROR, - _("%s: Failed to copy sample.qth"), - __FUNCTION__); + if (gpredict_file_copy (filename, target)) { + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: Failed to copy sample.qth"), + __FUNCTION__); - *error |= FTC_ERROR_STEP_02; - } - else { - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s: Copied sample.qth to %s/"), - __FUNCTION__, dirname); - } + *error |= FTC_ERROR_STEP_02; + } + else { + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Copied sample.qth to %s/"), + __FUNCTION__, dirname); + } - g_free (target); - g_free (filename); + g_free (target); + g_free (filename); - } - } + } + } - g_free (dirname); + g_free (dirname); } @@ -246,67 +252,67 @@ static void first_time_check_step_03 (guint *error) { - gchar *dir; - int status; - gchar *target; - gchar *filename; + gchar *dir; + int status; + gchar *target; + gchar *filename; - dir = g_strconcat (g_get_home_dir (), G_DIR_SEPARATOR_S, - ".gpredict2", G_DIR_SEPARATOR_S, - "modules", NULL); + dir = g_strconcat (g_get_home_dir (), G_DIR_SEPARATOR_S, + ".gpredict2", G_DIR_SEPARATOR_S, + "modules", NULL); - if (g_file_test (dir, G_FILE_TEST_IS_DIR)) { - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s: Check successful."), - __FUNCTION__); - } - else { - /* try to create directory */ - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s: Check failed. Creating %s"), - __FUNCTION__, - dir); + if (g_file_test (dir, G_FILE_TEST_IS_DIR)) { + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Check successful."), + __FUNCTION__); + } + else { + /* try to create directory */ + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Check failed. Creating %s"), + __FUNCTION__, + dir); - status = g_mkdir (dir, 0755); + status = g_mkdir (dir, 0755); - if (status) { - /* set error flag */ - *error |= FTC_ERROR_STEP_03; + if (status) { + /* set error flag */ + *error |= FTC_ERROR_STEP_03; - sat_log_log (SAT_LOG_LEVEL_ERROR, - _("%s: Failed to create %s"), - __FUNCTION__, dir); - } - else { - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s: Created %s."), - __FUNCTION__, dir); + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: Failed to create %s"), + __FUNCTION__, dir); + } + else { + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Created %s."), + __FUNCTION__, dir); - /* copy Amateur.mod to this directory */ - filename = data_file_name ("Amateur.mod"); - target = g_strconcat (dir, G_DIR_SEPARATOR_S, - "Amateur.mod", NULL); + /* copy Amateur.mod to this directory */ + filename = data_file_name ("Amateur.mod"); + target = g_strconcat (dir, G_DIR_SEPARATOR_S, + "Amateur.mod", NULL); - if (gpredict_file_copy (filename, target)) { - sat_log_log (SAT_LOG_LEVEL_ERROR, - _("%s: Failed to copy Amateur.mod"), - __FUNCTION__); + if (gpredict_file_copy (filename, target)) { + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: Failed to copy Amateur.mod"), + __FUNCTION__); - *error |= FTC_ERROR_STEP_02; - } - else { - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s: Copied amateur.mod to %s/"), - __FUNCTION__, dir); - } + *error |= FTC_ERROR_STEP_02; + } + else { + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Copied amateur.mod to %s/"), + __FUNCTION__, dir); + } - g_free (target); - g_free (filename); - } - } + g_free (target); + g_free (filename); + } + } - g_free (dir); + g_free (dir); } @@ -320,40 +326,40 @@ static void first_time_check_step_04 (guint *error) { - gchar *dir; - int status; + gchar *dir; + int status; - dir = g_strconcat (g_get_home_dir (), G_DIR_SEPARATOR_S, - ".gpredict2", G_DIR_SEPARATOR_S, - "tle", NULL); + dir = g_strconcat (g_get_home_dir (), G_DIR_SEPARATOR_S, + ".gpredict2", G_DIR_SEPARATOR_S, + "tle", NULL); - if (g_file_test (dir, G_FILE_TEST_IS_DIR)) { - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s: Check successful."), __FUNCTION__); - } - else { - /* try to create directory */ - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s: Check failed. Creating %s"), - __FUNCTION__, dir); + if (g_file_test (dir, G_FILE_TEST_IS_DIR)) { + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Check successful."), __FUNCTION__); + } + else { + /* try to create directory */ + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Check failed. Creating %s"), + __FUNCTION__, dir); - status = g_mkdir (dir, 0755); + status = g_mkdir (dir, 0755); - if (status) { - /* set error flag */ - *error |= FTC_ERROR_STEP_04; + if (status) { + /* set error flag */ + *error |= FTC_ERROR_STEP_04; - sat_log_log (SAT_LOG_LEVEL_ERROR, _("%s: Failed to create %s"), - __FUNCTION__, dir); - } - else { - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s: Created %s."), - __FUNCTION__, dir); - } - } + sat_log_log (SAT_LOG_LEVEL_ERROR, _("%s: Failed to create %s"), + __FUNCTION__, dir); + } + else { + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Created %s."), + __FUNCTION__, dir); + } + } - g_free (dir); + g_free (dir); } @@ -368,97 +374,97 @@ static void first_time_check_step_05 (guint *error) { - GDir *dir; - gchar *dirname; - gchar *datadir; - const gchar *filename; - gchar *target; - gchar *tlefile; - gboolean foundtle = FALSE; + GDir *dir; + gchar *dirname; + gchar *datadir; + const gchar *filename; + gchar *target; + gchar *tlefile; + gboolean foundtle = FALSE; - dirname = g_strconcat (g_get_home_dir (), G_DIR_SEPARATOR_S, - ".gpredict2", G_DIR_SEPARATOR_S, - "tle", NULL); + dirname = g_strconcat (g_get_home_dir (), G_DIR_SEPARATOR_S, + ".gpredict2", G_DIR_SEPARATOR_S, + "tle", NULL); - dir = g_dir_open (dirname, 0, NULL); + dir = g_dir_open (dirname, 0, NULL); - /* directory does not exist, something went wrong in step 1 */ - if (!dir) { - sat_log_log (SAT_LOG_LEVEL_ERROR, - _("%s: Could not open %s."), - __FUNCTION__, dirname); - - /* no reason to continue */ - *error |= FTC_ERROR_STEP_05; - } - else { - /* read files, if any; count number of .tle files */ - while ((filename = g_dir_read_name (dir))) { + /* directory does not exist, something went wrong in step 1 */ + if (!dir) { + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: Could not open %s."), + __FUNCTION__, dirname); + + /* no reason to continue */ + *error |= FTC_ERROR_STEP_05; + } + else { + /* read files, if any; count number of .tle files */ + while ((filename = g_dir_read_name (dir))) { - /* note: filename is not a newly allocated gchar *, - so we must not free it - */ + /* note: filename is not a newly allocated gchar *, + so we must not free it + */ - if (g_strrstr (filename, ".tle")) { - foundtle = TRUE; - } + if (g_strrstr (filename, ".tle")) { + foundtle = TRUE; + } - } + } - g_dir_close (dir); + g_dir_close (dir); - if (foundtle) { - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s: Found at least one .tle file."), - __FUNCTION__); - } - else { + if (foundtle) { + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Found at least one .tle file."), + __FUNCTION__); + } + else { - /* try to copy each tle file from instalation dir */ - datadir = get_data_dir (); - dir = g_dir_open (datadir, 0, NULL); + /* try to copy each tle file from instalation dir */ + datadir = get_data_dir (); + dir = g_dir_open (datadir, 0, NULL); - /* g_print ("====> %s\n", datadir); */ + /* g_print ("====> %s\n", datadir); */ - while ((filename = g_dir_read_name (dir))) { + while ((filename = g_dir_read_name (dir))) { - /* note: filename is not a newly allocated gchar *, - so we must not free it - */ + /* note: filename is not a newly allocated gchar *, + so we must not free it + */ - if (g_strrstr (filename, ".tle")) { + if (g_strrstr (filename, ".tle")) { - tlefile = data_file_name (filename); + tlefile = data_file_name (filename); - target = g_strconcat (dirname, - G_DIR_SEPARATOR_S, - filename, - NULL); + target = g_strconcat (dirname, + G_DIR_SEPARATOR_S, + filename, + NULL); - if (gpredict_file_copy (tlefile, target)) { - sat_log_log (SAT_LOG_LEVEL_ERROR, - _("%s: Failed to copy %s"), - __FUNCTION__, filename); + if (gpredict_file_copy (tlefile, target)) { + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: Failed to copy %s"), + __FUNCTION__, filename); - *error |= FTC_ERROR_STEP_05; - } - else { - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s: Successfully copied %s"), - __FUNCTION__, filename); - } - g_free (tlefile); - g_free (target); - } + *error |= FTC_ERROR_STEP_05; + } + else { + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Successfully copied %s"), + __FUNCTION__, filename); + } + g_free (tlefile); + g_free (target); + } - } - g_free (datadir); - g_dir_close (dir); - } + } + g_free (datadir); + g_dir_close (dir); + } - } - g_free (dirname); + } + g_free (dirname); } @@ -473,41 +479,41 @@ static void first_time_check_step_06 (guint *error) { - gchar *dir; - int status; + gchar *dir; + int status; - dir = g_strconcat (g_get_home_dir (), G_DIR_SEPARATOR_S, - ".gpredict2", G_DIR_SEPARATOR_S, - "tle", G_DIR_SEPARATOR_S, - "cache", NULL); + dir = g_strconcat (g_get_home_dir (), G_DIR_SEPARATOR_S, + ".gpredict2", G_DIR_SEPARATOR_S, + "tle", G_DIR_SEPARATOR_S, + "cache", NULL); - if (g_file_test (dir, G_FILE_TEST_IS_DIR)) { - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s: Check successful."), __FUNCTION__); - } - else { - /* try to create directory */ - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s: Check failed. Creating %s"), - __FUNCTION__, dir); + if (g_file_test (dir, G_FILE_TEST_IS_DIR)) { + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Check successful."), __FUNCTION__); + } + else { + /* try to create directory */ + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Check failed. Creating %s"), + __FUNCTION__, dir); - status = g_mkdir (dir, 0755); + status = g_mkdir (dir, 0755); - if (status) { - /* set error flag */ - *error |= FTC_ERROR_STEP_06; + if (status) { + /* set error flag */ + *error |= FTC_ERROR_STEP_06; - sat_log_log (SAT_LOG_LEVEL_ERROR, _("%s: Failed to create %s"), - __FUNCTION__, dir); - } - else { - sat_log_log (SAT_LOG_LEVEL_DEBUG, - _("%s: Created %s."), - __FUNCTION__, dir); - } - } + sat_log_log (SAT_LOG_LEVEL_ERROR, _("%s: Failed to create %s"), + __FUNCTION__, dir); + } + else { + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Created %s."), + __FUNCTION__, dir); + } + } - g_free (dir); + g_free (dir); } @@ -556,3 +562,125 @@ g_free (dir); } +/** \brief Execute step 8 of the first time checks. + * + * 8. Check for the existence of $HOME/.gpredict2/trsp directory. This + * directory contains transponder data for satellites. + * + */ +static void first_time_check_step_08 (guint *error) +{ + gchar *cfg; + gchar *dir; + int status; + + cfg = get_conf_dir (); + dir = g_strconcat (cfg, G_DIR_SEPARATOR_S, "trsp", NULL); + g_free (cfg); + + if (g_file_test (dir, G_FILE_TEST_IS_DIR)) { + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Check successful."), __FUNCTION__); + } + else { + /* try to create directory */ + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Check failed. Creating %s"), + __FUNCTION__, dir); + + status = g_mkdir (dir, 0755); + + if (status) { + /* set error flag */ + *error |= FTC_ERROR_STEP_08; + + sat_log_log (SAT_LOG_LEVEL_ERROR, _("%s: Failed to create %s"), + __FUNCTION__, dir); + } + else { + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s: Created %s."), + __FUNCTION__, dir); + } + } + + g_free (dir); +} + +/** \brief Execute step 9 of the first time checks. + * + * 9. Check the .trsp files in $HOME/.gpredict2/trsp/ and compare to the ones + * available in PACKAGE_DATA_DIR/data/xxx.trsp, and update if necessary. + * + */ +static void first_time_check_step_09 (guint *error) +{ + GDir *targetdir,*dir; + gchar *targetdirname; + gchar *datadirname; + const gchar *filename; + gchar *srcfile,*destfile; + + + /* open data directory */ + targetdirname = g_strconcat (g_get_home_dir (), G_DIR_SEPARATOR_S, + ".gpredict2", G_DIR_SEPARATOR_S, + "trsp", NULL); + + targetdir = g_dir_open (targetdirname, 0, NULL); + + /* directory does not exist, something went wrong in step 1 */ + if (!targetdir) { + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: Could not open %s."), + __FUNCTION__, targetdirname); + + /* no reason to continue */ + *error |= FTC_ERROR_STEP_09; + } + else { + /* no need to keep this dir open */ + g_dir_close (targetdir); + + /* open data dir */ + datadirname = get_data_dir (); + dir = g_dir_open (datadirname, 0, NULL); + + /* for each .trsp file found in data dir */ + while ((filename = g_dir_read_name (dir))) { + if (g_strrstr (filename, ".trsp")) { + /* check if .trsp file already in user dir */ + destfile = g_strconcat (targetdirname, G_DIR_SEPARATOR_S, filename, NULL); + + /* check if .trsp file already in user dir */ + if (!g_file_test (destfile, G_FILE_TEST_EXISTS)) { + sat_log_log (SAT_LOG_LEVEL_MSG, + _("%s: %s does not appear to be in user conf dir; adding."), + __FUNCTION__, filename); + + /* copy new .trsp file to user dir */ + srcfile = g_strconcat (datadirname, G_DIR_SEPARATOR_S, filename,NULL); + if (gpredict_file_copy (srcfile, destfile)) { + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: Failed to copy %s"), + __FUNCTION__, filename); + + *error |= FTC_ERROR_STEP_09; + } + g_free (srcfile); + } + else { + sat_log_log (SAT_LOG_LEVEL_MSG, + _("%s: %s already in user conf dir."), + __FUNCTION__, filename); + } + + g_free (destfile); + + } + } + g_dir_close (dir); + g_free (datadirname); + } + g_free (targetdirname); +} Modified: trunk/src/first-time.h =================================================================== --- trunk/src/first-time.h 2009-04-12 13:34:52 UTC (rev 249) +++ trunk/src/first-time.h 2009-04-12 14:05:11 UTC (rev 250) @@ -31,13 +31,15 @@ /** \brief Bit fields in the returned error code */ enum { - FTC_ERROR_STEP_01 = 1 << 1, - FTC_ERROR_STEP_02 = 1 << 2, - FTC_ERROR_STEP_03 = 1 << 3, - FTC_ERROR_STEP_04 = 1 << 4, - FTC_ERROR_STEP_05 = 1 << 5, - FTC_ERROR_STEP_06 = 1 << 6, - FTC_ERROR_STEP_07 = 1 << 7 + FTC_ERROR_STEP_01 = 1 << 1, + FTC_ERROR_STEP_02 = 1 << 2, + FTC_ERROR_STEP_03 = 1 << 3, + FTC_ERROR_STEP_04 = 1 << 4, + FTC_ERROR_STEP_05 = 1 << 5, + FTC_ERROR_STEP_06 = 1 << 6, + FTC_ERROR_STEP_07 = 1 << 7, + FTC_ERROR_STEP_08 = 1 << 8, + FTC_ERROR_STEP_09 = 1 << 9 }; guint first_time_check_run (void); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 13:20:04
|
Revision: 247 http://gpredict.svn.sourceforge.net/gpredict/?rev=247&view=rev Author: csete Date: 2009-04-12 13:20:01 +0000 (Sun, 12 Apr 2009) Log Message: ----------- More transponders :-) Modified Paths: -------------- trunk/data/Makefile.am Added Paths: ----------- trunk/data/22825.trsp trunk/data/24278.trsp trunk/data/25544.trsp trunk/data/27607.trsp trunk/data/27848.trsp Added: trunk/data/22825.trsp =================================================================== --- trunk/data/22825.trsp (rev 0) +++ trunk/data/22825.trsp 2009-04-12 13:20:01 UTC (rev 247) @@ -0,0 +1,3 @@ +[Mode V/U FM] +UP_LOW=145850000 +DOWN_LOW=436795000 Added: trunk/data/24278.trsp =================================================================== --- trunk/data/24278.trsp (rev 0) +++ trunk/data/24278.trsp 2009-04-12 13:20:01 UTC (rev 247) @@ -0,0 +1,9 @@ +[Mode V/U Linear] +UP_LOW=145900000 +UP_HIGH=146000000 +DOWN_LOW=435800000 +DOWN_HIGH=435900000 +INVERT=TRUE + +[Mode U CW Beacon] +DOWN_LOW=435795000 Added: trunk/data/25544.trsp =================================================================== --- trunk/data/25544.trsp (rev 0) +++ trunk/data/25544.trsp 2009-04-12 13:20:01 UTC (rev 247) @@ -0,0 +1,26 @@ +[Mode V/V AFSK Packet] +UP_LOW=145990000 +DOWN_LOW=145800000 + +[Mode V/U FM Voice] +UP_LOW=145800000 +DOWN_LOW=437800000 + +[Mode V APRS FM] +UP_LOW=145825000 +DOWN_LOW=145825000 + +[Mode V FM SSTV] +DOWN_LOW=145800000 + +[Mode U/V FM Voice] +UP_LOW=437800000 +DOWN_LOW=145800000 + +[Mode V/V FM (crew R2+3)] +UP_LOW=144490000 +DOWN_LOW=145800000 + +[Mode V/V FM (creq R1)] +UP_LOW=145200000 +DOWN_LOW=145800000 Added: trunk/data/27607.trsp =================================================================== --- trunk/data/27607.trsp (rev 0) +++ trunk/data/27607.trsp 2009-04-12 13:20:01 UTC (rev 247) @@ -0,0 +1,3 @@ +[Mode V/U FM Voice] +DOWN_LOW=436795000 +UP_LOW=145850000 Added: trunk/data/27848.trsp =================================================================== --- trunk/data/27848.trsp (rev 0) +++ trunk/data/27848.trsp 2009-04-12 13:20:01 UTC (rev 247) @@ -0,0 +1,5 @@ +[Mode U CW Beacon] +DOWN_LOW=436847500 + +[Mode U AFSK TLM] +DOWN_LOW=437490000 Modified: trunk/data/Makefile.am =================================================================== --- trunk/data/Makefile.am 2009-04-12 12:53:52 UTC (rev 246) +++ trunk/data/Makefile.am 2009-04-12 13:20:01 UTC (rev 247) @@ -6,7 +6,8 @@ amateur.tle cubesat.tle galileo.tle geo.tle \ gps-ops.tle iridium.tle military.tle \ radar.tle science.tle weather.tle \ - 7530.trsp 28650.trsp + 7530.trsp 22825.trsp 24278.trsp 25544.trsp \ + 27607.trsp 27848.trsp 28375.trsp 28650.trsp EXTRA_DIST = $(gpredict_dat_DATA) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 12:53:55
|
Revision: 246 http://gpredict.svn.sourceforge.net/gpredict/?rev=246&view=rev Author: csete Date: 2009-04-12 12:53:52 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Added AO-51 transponders. Added Paths: ----------- trunk/data/28375.trsp Added: trunk/data/28375.trsp =================================================================== --- trunk/data/28375.trsp (rev 0) +++ trunk/data/28375.trsp 2009-04-12 12:53:52 UTC (rev 246) @@ -0,0 +1,23 @@ +[Mode V/U FM Voice1] +UP_LOW=145880000 +DOWN_LOW=435150000 + +[Mode V/U FM Voice2] +UP_LOW=145920000 +DOWN_LOW=435300000 + +[Mode V/S FM Voice] +UP_LOW=145880000 +DOWN_LOW=2401200000 + +[Mode L/U FM Voice] +UP_LOW=1268700000 +DOWN_LOW=435300000 + +[Mode L/U BBS AFSK] +UP_LOW=1268700000 +DOWN_LOW=435150000 + +[Mode L/S FM Voice] +UP_LOW=1268700000 +DOWN_LOW=2401200000 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 12:35:39
|
Revision: 245 http://gpredict.svn.sourceforge.net/gpredict/?rev=245&view=rev Author: csete Date: 2009-04-12 12:35:38 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Include some transponder data in distribution. Modified Paths: -------------- trunk/data/Makefile.am Added Paths: ----------- trunk/data/28650.trsp trunk/data/7530.trsp Added: trunk/data/28650.trsp =================================================================== --- trunk/data/28650.trsp (rev 0) +++ trunk/data/28650.trsp 2009-04-12 12:35:38 UTC (rev 245) @@ -0,0 +1,20 @@ +[Dutch Beacon CW] +DOWN_LOW=145860000 + +[Indian Beacon] +DOWN_LOW=145936000 + +[Dutch U/V Lin] +UP_LOW=435225000 +UP_HIGH=435275000 +DOWN_LOW=145875000 +DOWN_HIGH=145925000 +INVERT=true + +[Indian U/V Lin] +UP_LOW=435220000 +UP_HIGH=435280000 +DOWN_LOW=145870000 +DOWN_HIGH=145930000 +INVERT=false + Added: trunk/data/7530.trsp =================================================================== --- trunk/data/7530.trsp (rev 0) +++ trunk/data/7530.trsp 2009-04-12 12:35:38 UTC (rev 245) @@ -0,0 +1,20 @@ +[Mode U/V Beacon] +DOWN_LOW=145977500 + +[Mode U Beacon] +DOWN_LOW=435100000 + +[Mode V/A (A) Lin] +UP_LOW=145850000 +UP_HIGH=145950000 +DOWN_LOW=29400000 +DOWN_HIGH=29500000 +INVERT=false + +[Mode U/V (B) Lin] +UP_LOW=432125000 +UP_HIGH=432175000 +DOWN_LOW=145925000 +DOWN_HIGH=145975000 +INVERT=true + Modified: trunk/data/Makefile.am =================================================================== --- trunk/data/Makefile.am 2009-04-12 12:19:45 UTC (rev 244) +++ trunk/data/Makefile.am 2009-04-12 12:35:38 UTC (rev 245) @@ -2,10 +2,11 @@ gpredict_datdir = $(pkgdatadir)/data gpredict_dat_DATA = \ - locations.dat sample.qth Amateur.mod \ - amateur.tle cubesat.tle galileo.tle geo.tle \ - gps-ops.tle iridium.tle military.tle \ - radar.tle science.tle weather.tle + locations.dat sample.qth Amateur.mod \ + amateur.tle cubesat.tle galileo.tle geo.tle \ + gps-ops.tle iridium.tle military.tle \ + radar.tle science.tle weather.tle \ + 7530.trsp 28650.trsp EXTRA_DIST = $(gpredict_dat_DATA) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 12:19:52
|
Revision: 244 http://gpredict.svn.sourceforge.net/gpredict/?rev=244&view=rev Author: csete Date: 2009-04-12 12:19:45 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Fixed bug that prevented dial feedback in dual-rig mode. This mode now works perfectly. Modified Paths: -------------- trunk/src/gtk-rig-ctrl.c Modified: trunk/src/gtk-rig-ctrl.c =================================================================== --- trunk/src/gtk-rig-ctrl.c 2009-04-12 11:09:59 UTC (rev 243) +++ trunk/src/gtk-rig-ctrl.c 2009-04-12 12:19:45 UTC (rev 244) @@ -793,9 +793,7 @@ sat_selected_cb (GtkComboBox *satsel, gpointer data) { GtkRigCtrl *ctrl = GTK_RIG_CTRL (data); - GSList *trsplist = NULL; - trsp_t *trsp; - gint i,n; + gint i; i = gtk_combo_box_get_active (satsel); if (i >= 0) { @@ -808,25 +806,6 @@ /* read transponders for new target */ load_trsp_list (ctrl); - -#if 0 - /* get transponders */ - trsplist = read_transponders (ctrl->target->tle.catnr); - - n = g_slist_length (trsplist); - //g_print ("*** %d\n", n); - for (i = 0; i < n; i++) { - trsp = (trsp_t *) g_slist_nth_data (trsplist, i); - g_print ("%s: %.0f/%.0f/%.0f/%.0f/%s\n", - trsp->name, - trsp->uplow, trsp->uphigh, - trsp->downlow, trsp->downhigh, - trsp->invert ? "INV" : "NONINV"); - - } - - free_transponders (trsplist); -#endif } else { sat_log_log (SAT_LOG_LEVEL_ERROR, @@ -1609,9 +1588,6 @@ readfreq = ctrl->lastrxf; ctrl->errcnt++; } - else { - readfreq = ctrl->lastrxf; - } if (fabs (readfreq - ctrl->lastrxf) >= 1.0) { dialchanged = TRUE; @@ -1712,10 +1688,6 @@ readfreq = ctrl->lasttxf; ctrl->errcnt++; } - - else { - readfreq = ctrl->lasttxf; - } if (fabs (readfreq - ctrl->lasttxf) >= 1.0) { dialchanged = TRUE; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 11:10:04
|
Revision: 243 http://gpredict.svn.sourceforge.net/gpredict/?rev=243&view=rev Author: csete Date: 2009-04-12 11:09:59 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Some debug mesage improvments. Modified Paths: -------------- trunk/src/gtk-rig-ctrl.c Modified: trunk/src/gtk-rig-ctrl.c =================================================================== --- trunk/src/gtk-rig-ctrl.c 2009-04-12 10:52:19 UTC (rev 242) +++ trunk/src/gtk-rig-ctrl.c 2009-04-12 11:09:59 UTC (rev 243) @@ -634,7 +634,9 @@ gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 0, 1); ctrl->DevSel = gtk_combo_box_new_text (); - gtk_widget_set_tooltip_text (ctrl->DevSel, _("Select primary radio device.")); + gtk_widget_set_tooltip_text (ctrl->DevSel, _("Select primary radio device."\ + "This device will be used for downlink and uplink "\ + "unless you select a secondary device for uplink")); /* open configuration directory */ cfgdir = get_conf_dir (); @@ -675,9 +677,8 @@ gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 1, 2); ctrl->DevSel2 = gtk_combo_box_new_text (); - gtk_widget_set_tooltip_text (ctrl->DevSel2, _("Select secondary radio device, if you want "\ - "to use a transmitter other than the primary "\ - "device.")); + gtk_widget_set_tooltip_text (ctrl->DevSel2, _("Select secondary radio device\n"\ + "This device will be used for uplink")); /* load config */ gtk_combo_box_append_text (GTK_COMBO_BOX (ctrl->DevSel2), _("None")); @@ -993,6 +994,11 @@ gchar *buff; + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s:%s: Primary device selected: %d"), + __FILE__, __FUNCTION__, gtk_combo_box_get_active (box)); + + /* free previous configuration */ if (ctrl->conf != NULL) { g_free (ctrl->conf->name); @@ -1012,8 +1018,8 @@ ctrl->conf->name = gtk_combo_box_get_active_text (box); if (radio_conf_read (ctrl->conf)) { sat_log_log (SAT_LOG_LEVEL_MSG, - _("Loaded new radio configuration %s"), - ctrl->conf->name); + _("%s:%s: Loaded new radio configuration %s"), + __FILE__, __FUNCTION__, ctrl->conf->name); /* update LO widgets */ buff = g_strdup_printf (_("%.0f MHz"), ctrl->conf->lo/1.0e6); gtk_label_set_text (GTK_LABEL (ctrl->LoDown), buff); @@ -1027,8 +1033,8 @@ } else { sat_log_log (SAT_LOG_LEVEL_ERROR, - _("%s:%d: Failed to load radio configuration %s"), - __FILE__, __LINE__, ctrl->conf->name); + _("%s:%s: Failed to load radio configuration %s"), + __FILE__, __FUNCTION__, ctrl->conf->name); g_free (ctrl->conf->name); if (ctrl->conf->host) @@ -1055,6 +1061,10 @@ gchar *name1, *name2; + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s:%s: Secondary device selected: %d"), + __FILE__, __FUNCTION__, gtk_combo_box_get_active (box)); + /* free previous configuration */ if (ctrl->conf2 != NULL) { g_free (ctrl->conf2->name); @@ -1100,8 +1110,8 @@ ctrl->conf2 = g_try_new (radio_conf_t, 1); if (ctrl->conf2 == NULL) { sat_log_log (SAT_LOG_LEVEL_ERROR, - _("%s:%d: Failed to allocate memory for radio config"), - __FILE__, __LINE__); + _("%s:%s: Failed to allocate memory for radio config"), + __FILE__, __FUNCTION__); return; } @@ -1109,8 +1119,8 @@ ctrl->conf2->name = gtk_combo_box_get_active_text (box); if (radio_conf_read (ctrl->conf2)) { sat_log_log (SAT_LOG_LEVEL_MSG, - _("Loaded new radio configuration %s"), - ctrl->conf2->name); + _("%s:%s: Loaded new radio configuration %s"), + __FILE__, __FUNCTION__, ctrl->conf2->name); /* update LO widgets */ buff = g_strdup_printf (_("%.0f MHz"), ctrl->conf2->loup/1.0e6); gtk_label_set_text (GTK_LABEL (ctrl->LoUp), buff); @@ -1118,8 +1128,8 @@ } else { sat_log_log (SAT_LOG_LEVEL_ERROR, - _("%s:%d: Failed to load radio configuration %s"), - __FILE__, __LINE__, ctrl->conf->name); + _("%s:%s: Failed to load radio configuration %s"), + __FILE__, __FUNCTION__, ctrl->conf->name); g_free (ctrl->conf2->name); if (ctrl->conf2->host) @@ -2210,12 +2220,20 @@ /* append transponder names to combo box */ n = g_slist_length (ctrl->trsplist); + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s:%s: Satellite %d has %d transponder modes."), + __FILE__, __FUNCTION__, ctrl->target->tle.catnr, n); + if (n == 0) return; for (i = 0; i < n; i++) { trsp = (trsp_t *) g_slist_nth_data (ctrl->trsplist, i); gtk_combo_box_append_text (GTK_COMBO_BOX (ctrl->TrspSel), trsp->name); + + sat_log_log (SAT_LOG_LEVEL_DEBUG, + _("%s:&s: Read transponder '%s' for satellite %d"), + __FILE__, __FUNCTION__, trsp->name, ctrl->target->tle.catnr); } /* make an initial selection */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cs...@us...> - 2009-04-12 10:52:25
|
Revision: 242 http://gpredict.svn.sourceforge.net/gpredict/?rev=242&view=rev Author: csete Date: 2009-04-12 10:52:19 +0000 (Sun, 12 Apr 2009) Log Message: ----------- First cut at dual-rig controller. Modified Paths: -------------- trunk/src/gtk-rig-ctrl.c Modified: trunk/src/gtk-rig-ctrl.c =================================================================== --- trunk/src/gtk-rig-ctrl.c 2009-04-11 19:24:42 UTC (rev 241) +++ trunk/src/gtk-rig-ctrl.c 2009-04-12 10:52:19 UTC (rev 242) @@ -111,6 +111,7 @@ static gboolean have_conf (void); static void track_downlink (GtkRigCtrl *ctrl); static void track_uplink (GtkRigCtrl *ctrl); +static gboolean is_rig_tx_capable (const gchar *confname); static GtkVBoxClass *parent_class = NULL; @@ -661,7 +662,6 @@ g_clear_error (&error); } - g_free (dirname); g_dir_close (dir); gtk_combo_box_set_active (GTK_COMBO_BOX (ctrl->DevSel), 0); @@ -683,12 +683,38 @@ gtk_combo_box_append_text (GTK_COMBO_BOX (ctrl->DevSel2), _("None")); gtk_combo_box_set_active (GTK_COMBO_BOX (ctrl->DevSel2), 0); + dir = g_dir_open (dirname, 0, &error); + if (dir) { + /* read each .rig file */ + while ((filename = g_dir_read_name (dir))) { + + if (g_strrstr (filename, ".rig")) { + + /* only add TX capable rigs */ + vbuff = g_strsplit (filename, ".rig", 0); + if (is_rig_tx_capable (vbuff[0])) { + gtk_combo_box_append_text (GTK_COMBO_BOX (ctrl->DevSel2), vbuff[0]); + } + g_strfreev (vbuff); + } + } + } + else { + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s:%d: Failed to open hwconf dir (%s)"), + __FILE__, __LINE__, error->message); + g_clear_error (&error); + } + + g_free (dirname); + g_dir_close (dir); + + //gtk_combo_box_set_active (GTK_COMBO_BOX (ctrl->DevSel), 0); g_signal_connect (ctrl->DevSel2, "changed", G_CALLBACK (secondary_rig_selected_cb), ctrl); gtk_table_attach_defaults (GTK_TABLE (table), ctrl->DevSel2, 1, 2, 1, 2); + - - /* Engage button */ ctrl->LockBut = gtk_toggle_button_new_with_label (_("Engage")); gtk_widget_set_tooltip_text (ctrl->LockBut, _("Engage the selcted radio device")); @@ -957,6 +983,8 @@ * * This function is called when the user selects a new rigor controller * device. + * + * BUG Doesn't prevent user to select same radio as in the secondary conf. */ static void primary_rig_selected_cb (GtkComboBox *box, gpointer data) @@ -996,8 +1024,6 @@ gtk_label_set_text (GTK_LABEL (ctrl->LoUp), buff); g_free (buff); } - - //gtk_spin_button_set_value (GTK_SPIN_BUTTON (ctrl->LO), ctrl->conf->lo/1.0e6); } else { sat_log_log (SAT_LOG_LEVEL_ERROR, @@ -1026,6 +1052,7 @@ { GtkRigCtrl *ctrl = GTK_RIG_CTRL (data); gchar *buff; + gchar *name1, *name2; /* free previous configuration */ @@ -1049,6 +1076,26 @@ return; } + /* ensure that selected secondary rig is not the same as the primary */ + name1 = gtk_combo_box_get_active_text (GTK_COMBO_BOX (ctrl->DevSel)); + name2 = gtk_combo_box_get_active_text (GTK_COMBO_BOX (ctrl->DevSel2)); + if (!g_strcmp0 (name1, name2)) { + /* selected conf is the same as the primary one */ + g_free (name1); + g_free (name2); + if (ctrl->conf != NULL) { + buff = g_strdup_printf (_("%.0f MHz"), ctrl->conf->loup/1.0e6); + gtk_label_set_text (GTK_LABEL (ctrl->LoUp), buff); + g_free (buff); + } + gtk_combo_box_set_active (GTK_COMBO_BOX (ctrl->DevSel2), 0); + + return; + } + + g_free (name1); + g_free (name2); + /* else load new device */ ctrl->conf2 = g_try_new (radio_conf_t, 1); if (ctrl->conf2 == NULL) { @@ -1065,14 +1112,9 @@ _("Loaded new radio configuration %s"), ctrl->conf2->name); /* update LO widgets */ - //buff = g_strdup_printf (_("%.0f MHz"), ctrl->conf2->lo/1.0e6); - //gtk_label_set_text (GTK_LABEL (ctrl->LoDown), buff); - //g_free (buff); buff = g_strdup_printf (_("%.0f MHz"), ctrl->conf2->loup/1.0e6); gtk_label_set_text (GTK_LABEL (ctrl->LoUp), buff); g_free (buff); - - //gtk_spin_button_set_value (GTK_SPIN_BUTTON (ctrl->LO), ctrl->conf->lo/1.0e6); } else { sat_log_log (SAT_LOG_LEVEL_ERROR, @@ -1085,7 +1127,6 @@ g_free (ctrl->conf2); ctrl->conf2 = NULL; } - } @@ -1395,8 +1436,9 @@ gboolean dialchanged = FALSE; /* get PTT status */ - if (ctrl->engaged && ctrl->conf->ptt) + if (ctrl->engaged && ctrl->conf->ptt) { ptt = get_ptt (ctrl, ctrl->conf); + } /* Dial feedback: If radio device is engaged read frequency from radio and compare it to the @@ -1545,12 +1587,225 @@ */ static void exec_dual_rig_cycle (GtkRigCtrl *ctrl) { - //FIXME implement + gdouble tmpfreq,readfreq,satfreqd,satfrequ,doppler; + gboolean dialchanged = FALSE; /* Execute downlink cycle using ctrl->conf */ + if (ctrl->engaged && (ctrl->lastrxf > 0.0)) { + + /* get frequency from receiver */ + if (!get_freq_simplex (ctrl, ctrl->conf, &readfreq)) { + /* error => use a passive value */ + readfreq = ctrl->lastrxf; + ctrl->errcnt++; + } + else { + readfreq = ctrl->lastrxf; + } + + if (fabs (readfreq - ctrl->lastrxf) >= 1.0) { + dialchanged = TRUE; + + /* user might have altered radio frequency => update transponder knob */ + gtk_freq_knob_set_value (GTK_FREQ_KNOB (ctrl->RigFreqDown), readfreq); + ctrl->lastrxf = readfreq; + + /* doppler shift; only if we are tracking */ + if (ctrl->tracking) { + satfreqd = (readfreq + ctrl->conf->lo) / + (1 - (ctrl->target->range_rate/299792.4580)); + } + else { + satfreqd = readfreq + ctrl->conf->lo; + } + gtk_freq_knob_set_value (GTK_FREQ_KNOB (ctrl->SatFreqDown), satfreqd); + + /* Update uplink if locked to downlink */ + if (ctrl->trsplock) { + track_downlink (ctrl); + } + } + } + if (dialchanged) { + /* update uplink */ + satfrequ = gtk_freq_knob_get_value (GTK_FREQ_KNOB (ctrl->SatFreqUp)); + if (ctrl->tracking) { + doppler = -satfrequ * (ctrl->target->range_rate / 299792.4580); + gtk_freq_knob_set_value (GTK_FREQ_KNOB (ctrl->RigFreqUp), + satfrequ + doppler - ctrl->conf2->loup); + } + else { + gtk_freq_knob_set_value (GTK_FREQ_KNOB (ctrl->RigFreqUp), + satfrequ - ctrl->conf2->loup); + } + + tmpfreq = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->RigFreqUp)); + + /* if device is engaged, send freq command to radio */ + if ((ctrl->engaged) && (fabs(ctrl->lasttxf - tmpfreq) >= 1.0)) { + if (set_freq_simplex (ctrl, ctrl->conf2, tmpfreq)) { + /* reset error counter */ + ctrl->errcnt = 0; + + /* The actual frequency migh be different from what we have set */ + get_freq_simplex (ctrl, ctrl->conf2, &tmpfreq); + ctrl->lasttxf = tmpfreq; + } + else { + ctrl->errcnt++; + } + } + + } /* dialchanged on downlink */ + else { + /* if no dial change on downlink perform forward tracking on downlink + and execute uplink controller too. + */ - /* Execute uplink cycle using ctrl->conf2 */ + satfreqd = gtk_freq_knob_get_value (GTK_FREQ_KNOB (ctrl->SatFreqDown)); + if (ctrl->tracking) { + /* downlink */ + doppler = -satfreqd * (ctrl->target->range_rate / 299792.4580); + gtk_freq_knob_set_value (GTK_FREQ_KNOB (ctrl->RigFreqDown), + satfreqd + doppler - ctrl->conf->lo); + } + else { + gtk_freq_knob_set_value (GTK_FREQ_KNOB (ctrl->RigFreqDown), + satfreqd - ctrl->conf->lo); + } + + tmpfreq = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->RigFreqDown)); + + /* if device is engaged, send freq command to radio */ + if ((ctrl->engaged) && (fabs(ctrl->lastrxf - tmpfreq) >= 1.0)) { + if (set_freq_simplex (ctrl, ctrl->conf, tmpfreq)) { + /* reset error counter */ + ctrl->errcnt = 0; + + /* The actual frequency migh be different from what we have set */ + get_freq_simplex (ctrl, ctrl->conf, &tmpfreq); + ctrl->lastrxf = tmpfreq; + } + else { + ctrl->errcnt++; + } + } + + /*** Now execute uplink controller ***/ + + /* check if uplink dial has changed */ + if ((ctrl->engaged) && (ctrl->lasttxf > 0.0)) { + + if (!get_freq_simplex (ctrl, ctrl->conf2, &readfreq)) { + /* error => use a passive value */ + readfreq = ctrl->lasttxf; + ctrl->errcnt++; + } + + else { + readfreq = ctrl->lasttxf; + } + + if (fabs (readfreq - ctrl->lasttxf) >= 1.0) { + dialchanged = TRUE; + + gtk_freq_knob_set_value (GTK_FREQ_KNOB (ctrl->RigFreqUp), readfreq); + ctrl->lasttxf = readfreq; + + /* doppler shift; only if we are tracking */ + if (ctrl->tracking) { + satfrequ = (readfreq + ctrl->conf2->loup) / + (1 - (ctrl->target->range_rate/299792.4580)); + } + else { + satfrequ = readfreq + ctrl->conf2->loup; + } + gtk_freq_knob_set_value (GTK_FREQ_KNOB (ctrl->SatFreqUp), satfrequ); + + /* Follow with downlink if transponder is locked */ + if (ctrl->trsplock) { + track_uplink (ctrl); + } + } + } + + if (dialchanged) { /* on uplink */ + /* update downlink */ + satfreqd = gtk_freq_knob_get_value (GTK_FREQ_KNOB (ctrl->SatFreqDown)); + if (ctrl->tracking) { + doppler = -satfreqd * (ctrl->target->range_rate / 299792.4580); + gtk_freq_knob_set_value (GTK_FREQ_KNOB (ctrl->RigFreqDown), + satfreqd + doppler - ctrl->conf->lo); + } + else { + gtk_freq_knob_set_value (GTK_FREQ_KNOB (ctrl->RigFreqDown), + satfreqd - ctrl->conf->lo); + } + + tmpfreq = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->RigFreqDown)); + + /* if device is engaged, send freq command to radio */ + if ((ctrl->engaged) && (fabs(ctrl->lastrxf - tmpfreq) >= 1.0)) { + if (set_freq_simplex (ctrl, ctrl->conf, tmpfreq)) { + /* reset error counter */ + ctrl->errcnt = 0; + + /* The actual frequency migh be different from what we have set */ + get_freq_simplex (ctrl, ctrl->conf, &tmpfreq); + ctrl->lastrxf = tmpfreq; + } + else { + ctrl->errcnt++; + } + } + } /* dialchanged on uplink */ + else { + /* perform forward tracking on uplink */ + satfrequ = gtk_freq_knob_get_value (GTK_FREQ_KNOB (ctrl->SatFreqUp)); + if (ctrl->tracking) { + doppler = -satfrequ * (ctrl->target->range_rate / 299792.4580); + gtk_freq_knob_set_value (GTK_FREQ_KNOB (ctrl->RigFreqUp), + satfrequ + doppler - ctrl->conf2->loup); + } + else { + gtk_freq_knob_set_value (GTK_FREQ_KNOB (ctrl->RigFreqUp), + satfrequ - ctrl->conf2->loup); + } + + tmpfreq = gtk_freq_knob_get_value(GTK_FREQ_KNOB(ctrl->RigFreqUp)); + + /* if device is engaged, send freq command to radio */ + if ((ctrl->engaged) && (fabs(ctrl->lasttxf - tmpfreq) >= 1.0)) { + if (set_freq_simplex (ctrl, ctrl->conf2, tmpfreq)) { + /* reset error counter */ + ctrl->errcnt = 0; + + /* The actual frequency migh be different from what we have set. */ + get_freq_simplex (ctrl, ctrl->conf2, &tmpfreq); + ctrl->lasttxf = tmpfreq; + } + else { + ctrl->errcnt++; + } + } + } /* else dialchange on uplink */ + + } /* else dialchange on downlink */ + + /* perform error count checking */ + if (ctrl->errcnt >= MAX_ERROR_COUNT) { + /* disengage device */ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ctrl->LockBut), FALSE); + ctrl->engaged = FALSE; + ctrl->errcnt = 0; + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s: MAX_ERROR_COUNT (%d) reached. Disengaging device!"), + __FUNCTION__, MAX_ERROR_COUNT); + + //g_print ("ERROR. WROPS = %d\n", ctrl->wrops); + } + } @@ -2072,3 +2327,43 @@ gtk_freq_knob_set_value (GTK_FREQ_KNOB (ctrl->SatFreqDown), down); } } + + +/** \brief Check whether a radio configuration is TX capable. + * \param confname The name of the configuration to check. + * \return TRUE if the radio is TX capable, FALSE otherwise. + */ +static gboolean is_rig_tx_capable (const gchar *confname) +{ + radio_conf_t *conf = NULL; + gboolean cantx = FALSE; + + conf = g_try_new (radio_conf_t, 1); + if (conf == NULL) { + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s:%d: Failed to allocate memory for radio config"), + __FILE__, __LINE__); + return FALSE; + } + + /* load new configuration */ + conf->name = g_strdup (confname); + if (radio_conf_read (conf)) { + cantx = (conf->type == RIG_TYPE_RX) ? FALSE : TRUE; + } + else { + sat_log_log (SAT_LOG_LEVEL_ERROR, + _("%s:%d: Error reading radio configuration %s"), + __FILE__, __LINE__, confname); + + + cantx = FALSE; + } + + g_free (conf->name); + if (conf->host) + g_free (conf->host); + g_free (conf); + + return cantx; +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |