[Gpredict-svn] SF.net SVN: gpredict:[95] trunk/src
Real time satellite tracking and orbit prediction
Status: Beta
Brought to you by:
csete
|
From: <cs...@us...> - 2008-09-06 23:21:21
|
Revision: 95
http://gpredict.svn.sourceforge.net/gpredict/?rev=95&view=rev
Author: csete
Date: 2008-09-06 23:21:32 +0000 (Sat, 06 Sep 2008)
Log Message:
-----------
Don't keep TCP connection open between session. Set frequency in a separate function.
Modified Paths:
--------------
trunk/src/gtk-rig-ctrl.c
trunk/src/gtk-rig-ctrl.h
Modified: trunk/src/gtk-rig-ctrl.c
===================================================================
--- trunk/src/gtk-rig-ctrl.c 2008-09-06 21:48:12 UTC (rev 94)
+++ trunk/src/gtk-rig-ctrl.c 2008-09-06 23:21:32 UTC (rev 95)
@@ -44,7 +44,6 @@
#include "gpredict-utils.h"
#include "sat-cfg.h"
#include "gtk-freq-knob.h"
-#include "gtk-rig-ctrl.h"
#include "radio-conf.h"
#ifdef HAVE_CONFIG_H
# include <build-config.h>
@@ -57,7 +56,9 @@
#include <arpa/inet.h> /* htons() */
#include <netdb.h> /* gethostbyname() */
/* END */
+#include "gtk-rig-ctrl.h"
+
#define AZEL_FMTSTR "%7.2f\302\260"
@@ -79,8 +80,8 @@
static void rig_selected_cb (GtkComboBox *box, gpointer data);
static void rig_locked_cb (GtkToggleButton *button, gpointer data);
static gboolean rig_ctrl_timeout_cb (gpointer data);
+static void set_freq (GtkRigCtrl *ctrl, gdouble freq);
-
static GtkVBoxClass *parent_class = NULL;
static GdkColor ColBlack = { 0, 0, 0, 0};
@@ -147,7 +148,6 @@
ctrl->pass = NULL;
ctrl->qth = NULL;
ctrl->conf = NULL;
- ctrl->sock = -10;
ctrl->tracking = FALSE;
ctrl->busy = FALSE;
ctrl->engaged = FALSE;
@@ -164,11 +164,6 @@
if (ctrl->timerid > 0)
g_source_remove (ctrl->timerid);
- /* close network socket */
- if (ctrl->sock >= 0) {
- close (ctrl->sock);
- }
-
/* free configuration */
if (ctrl->conf != NULL) {
g_free (ctrl->conf->name);
@@ -702,6 +697,7 @@
}
+
/** \brief Rig locked.
* \param button Pointer to the "Engage" button.
* \param data Pointer to the GtkRigCtrl widget.
@@ -718,11 +714,6 @@
/* close socket */
gtk_widget_set_sensitive (ctrl->DevSel, TRUE);
ctrl->engaged = FALSE;
-
- if (ctrl->sock >= 0) {
- close (ctrl->sock);
- ctrl->sock = -10;
- }
}
else {
if (ctrl->conf == NULL) {
@@ -733,30 +724,8 @@
gtk_widget_set_sensitive (ctrl->DevSel, FALSE);
ctrl->engaged = TRUE;
- gint status;
- struct sockaddr_in ServAddr;
- struct hostent *h;
-
- ctrl->sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
- if (ctrl->sock < 0) {
- sat_log_log (SAT_LOG_LEVEL_ERROR,
- _("%s: Failed to create socket"),
- __FUNCTION__);
- return;
- }
- else {
- sat_log_log (SAT_LOG_LEVEL_DEBUG,
- _("%s: Network socket created successfully"),
- __FUNCTION__);
- }
-
- memset(&ServAddr, 0, sizeof(ServAddr)); /* Zero out structure */
- ServAddr.sin_family = AF_INET; /* Internet address family */
- h = gethostbyname(ctrl->conf->host);
- memcpy((char *) &ServAddr.sin_addr.s_addr, h->h_addr_list[0], h->h_length);
- ServAddr.sin_port = htons(ctrl->conf->port); /* Server port */
- status = connect(ctrl->sock, (struct sockaddr *) &ServAddr, sizeof(ServAddr));
+/* status = connect(ctrl->sock, (struct sockaddr *) &ServAddr, sizeof(ServAddr));
if (status < 0) {
sat_log_log (SAT_LOG_LEVEL_ERROR,
_("%s: Failed to connect to %s:%d"),
@@ -768,6 +737,7 @@
_("%s: Connection opened to %s:%d"),
__FUNCTION__, ctrl->conf->host, ctrl->conf->port);
}
+ */
}
}
@@ -807,24 +777,8 @@
}
/* if device is engaged, send freq command to radio */
- if ((ctrl->engaged) && (ctrl->sock >= 0)) {
- gchar *buff;
- gint written,size;
-
- buff = g_strdup_printf ("F %10.0f\n",
- gtk_freq_knob_get_value (GTK_FREQ_KNOB (ctrl->RigFreq)));
-
- /* number of bytes to write depends on platform (EOL) */
-#ifdef G_OS_WIN32
- size = 14;
-#else
- size = 13;
-#endif
- written = send(ctrl->sock, buff, size, 0);
- if (written != size) {
- g_print ("SIZE ERR: %d\n", written);
- }
- g_free (buff);
+ if ((ctrl->engaged) && (ctrl->conf != NULL)) {
+ set_freq (ctrl, gtk_freq_knob_get_value (GTK_FREQ_KNOB(ctrl->RigFreq)));
}
@@ -834,3 +788,73 @@
}
+/** \brief Set frequency
+ * \param[in] ctrl Pointer to the GtkRigCtrl structure.
+ * \param[in] freq The new frequency.
+ *
+ * \note freq is not strictly necessary for normal use since we could have
+ * gotten the current frequency from the ctrl; however, the param
+ * might become useful in the future.
+ */
+static void set_freq (GtkRigCtrl *ctrl, gdouble freq)
+{
+ gchar *buff;
+ gint written,size;
+ gint status;
+ struct hostent *h;
+ struct sockaddr_in ServAddr;
+ gint sock; /*!< Network socket */
+
+ /* create socket */
+ sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
+ if (sock < 0) {
+ sat_log_log (SAT_LOG_LEVEL_ERROR,
+ _("%s: Failed to create socket"),
+ __FUNCTION__);
+ return;
+ }
+ else {
+ sat_log_log (SAT_LOG_LEVEL_DEBUG,
+ _("%s: Network socket created successfully"),
+ __FUNCTION__);
+ }
+
+ memset(&ServAddr, 0, sizeof(ServAddr)); /* Zero out structure */
+ ServAddr.sin_family = AF_INET; /* Internet address family */
+ h = gethostbyname(ctrl->conf->host);
+ memcpy((char *) &ServAddr.sin_addr.s_addr, h->h_addr_list[0], h->h_length);
+ ServAddr.sin_port = htons(ctrl->conf->port); /* Server port */
+
+ /* establish connection */
+ status = connect(sock, (struct sockaddr *) &ServAddr, sizeof(ServAddr));
+ if (status < 0) {
+ sat_log_log (SAT_LOG_LEVEL_ERROR,
+ _("%s: Failed to connect to %s:%d"),
+ __FUNCTION__, ctrl->conf->host, ctrl->conf->port);
+ return;
+ }
+ else {
+ sat_log_log (SAT_LOG_LEVEL_DEBUG,
+ _("%s: Connection opened to %s:%d"),
+ __FUNCTION__, ctrl->conf->host, ctrl->conf->port);
+ }
+
+ /* send command */
+ buff = g_strdup_printf ("F %10.0f\n", freq);
+
+ /* number of bytes to write depends on platform (EOL) */
+#ifdef G_OS_WIN32
+ size = 14;
+#else
+ size = 13;
+#endif
+ written = send(sock, buff, size, 0);
+ if (written != size) {
+ sat_log_log (SAT_LOG_LEVEL_ERROR,
+ _("%s: SIZE ERROR %d / %d"),
+ __FUNCTION__, written, size);
+ }
+ g_free (buff);
+ close (sock);
+
+}
Modified: trunk/src/gtk-rig-ctrl.h
===================================================================
--- trunk/src/gtk-rig-ctrl.h 2008-09-06 21:48:12 UTC (rev 94)
+++ trunk/src/gtk-rig-ctrl.h 2008-09-06 23:21:32 UTC (rev 95)
@@ -75,7 +75,6 @@
GtkWidget *LO; /*!< Local oscillator */
radio_conf_t *conf; /*!< Radio configuration */
- gint sock; /*!< Network socket */
GSList *sats; /*!< List of sats in parent module */
sat_t *target; /*!< Target satellite */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|