From 2ce656dcf49f6deb461375e029e806a4f22ac32f Mon Sep 17 00:00:00 2001 From: Matthew Hassell Date: Wed, 22 Jan 2025 14:31:17 -0500 Subject: [PATCH] first commit to add IQ capture --- README | 3 ++- src/radio-conf.c | 10 ++++++++++ src/radio-conf.h | 6 ++++-- src/sat-pref-rig-editor.c | 24 ++++++++++++++++++++++++ 4 files changed, 40 insertions(+), 3 deletions(-) diff --git a/README b/README index 7cbc996..13cfd1d 100644 --- a/README +++ b/README @@ -1,4 +1,3 @@ - Gpredict is a real time satellite tracking and orbit prediction program for the Linux desktop. It uses the SGP4/SDP4 propagation algorithms together with NORAD two-line element sets (TLE). @@ -49,6 +48,7 @@ To build and install gpredict from source, first unpack the source package: Then change to the gpredict-x.y.z directory and build gpredict: + autoreconf -i ./configure make make install @@ -61,6 +61,7 @@ adding --prefix=somedir to the ./configure step. For example ./configure --prefix=/home/user/predict will configure the build to install the files into /home/user/gpredict folder. +Otherwise it will build to /usr/local/bin/gpredict. If you are building directly from the git repository, you have to run ./autogen.sh instead of of configure. You can pass the same options to the diff --git a/src/radio-conf.c b/src/radio-conf.c index 46c70c5..c3c19c7 100644 --- a/src/radio-conf.c +++ b/src/radio-conf.c @@ -45,6 +45,8 @@ #define KEY_VFO_UP "VFO_UP" #define KEY_SIG_AOS "SIGNAL_AOS" #define KEY_SIG_LOS "SIGNAL_LOS" +#define KEY_SIG_AOIQ "SIGNAL_AOIQ" +#define KEY_SIG_LOIQ "SIGNAL_LOIQ" #define DEFAULT_CYCLE_MS 1000 @@ -236,6 +238,10 @@ gboolean radio_conf_read(radio_conf_t * conf) /* Signal AOS and LOS */ conf->signal_aos = g_key_file_get_boolean(cfg, GROUP, KEY_SIG_AOS, NULL); conf->signal_los = g_key_file_get_boolean(cfg, GROUP, KEY_SIG_LOS, NULL); + conf->signal_aoiq = g_key_file_get_boolean(cfg, GROUP, KEY_SIG_AOIQ, NULL); + conf->signal_loiq = g_key_file_get_boolean(cfg, GROUP, KEY_SIG_LOIQ, NULL); + + g_key_file_free(cfg); sat_log_log(SAT_LOG_LEVEL_INFO, @@ -288,6 +294,10 @@ void radio_conf_save(radio_conf_t * conf) g_key_file_set_boolean(cfg, GROUP, KEY_SIG_AOS, conf->signal_aos); g_key_file_set_boolean(cfg, GROUP, KEY_SIG_LOS, conf->signal_los); + g_key_file_set_boolean(cfg, GROUP, KEY_SIG_AOIQ, conf->signal_aoiq); + g_key_file_set_boolean(cfg, GROUP, KEY_SIG_LOIQ, conf->signal_loiq); + + confdir = get_hwconf_dir(); fname = g_strconcat(confdir, G_DIR_SEPARATOR_S, conf->name, ".rig", NULL); diff --git a/src/radio-conf.h b/src/radio-conf.h index d8862c4..e8175ce 100644 --- a/src/radio-conf.h +++ b/src/radio-conf.h @@ -70,8 +70,10 @@ typedef struct { vfo_t vfoDown; /*!< Downlink VFO for full-duplex radios */ vfo_t vfoUp; /*!< Uplink VFO for full-duplex radios */ - gboolean signal_aos; /*!< Send AOS notification to RIG */ - gboolean signal_los; /*!< Send LOS notification to RIG */ + gboolean signal_aos; /*!< Send AOS notification to RIG */ + gboolean signal_los; /*!< Send LOS notification to RIG */ + gboolean signal_aoiq; /*!< Send AOIQ notification to RIG */ + gboolean signal_loiq; /*!< Send LOIQ notification to RIG */ gint vfo_opt; /*!< Keep track of vfo_opt being enabled in rigctld */ } radio_conf_t; diff --git a/src/sat-pref-rig-editor.c b/src/sat-pref-rig-editor.c index e8b7315..f0b404b 100644 --- a/src/sat-pref-rig-editor.c +++ b/src/sat-pref-rig-editor.c @@ -43,6 +43,10 @@ static GtkWidget *lo; /* local oscillator of downconverter */ static GtkWidget *loup; /* local oscillator of upconverter */ static GtkWidget *sigaos; /* AOS signalling */ static GtkWidget *siglos; /* LOS signalling */ +static GtkWidget *sigaoiq; /* AOIQ signalling */ +static GtkWidget *sigloiq; /* LOIQ signalling */ + + static void clear_widgets() @@ -58,6 +62,9 @@ static void clear_widgets() gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ptt), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sigaos), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(siglos), FALSE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sigaoiq), FALSE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sigloiq), FALSE); + } static void update_widgets(radio_conf_t * conf) @@ -103,6 +110,8 @@ static void update_widgets(radio_conf_t * conf) /* AOS / LOS signalling */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sigaos), conf->signal_aos); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(siglos), conf->signal_los); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sigaoiq), conf->signal_aoiq); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sigloiq), conf->signal_loiq); } /* @@ -436,6 +445,18 @@ static GtkWidget *create_editor_widgets(radio_conf_t * conf) gtk_widget_set_tooltip_text(siglos, _("Enable LOS signalling for this radio.")); + sigaoiq = gtk_check_button_new_with_label(_("AOIQ")); + gtk_grid_attach(GTK_GRID(table), sigaoiq, 3, 8, 1, 1); + gtk_widget_set_tooltip_text(sigaoiq, + _("Enable AOIQ signalling for this radio.")); + + sigloiq = gtk_check_button_new_with_label(_("LOIQ")); + gtk_grid_attach(GTK_GRID(table), sigloiq, 4, 8, 1, 1); + gtk_widget_set_tooltip_text(sigloiq, + _("Enable LOIQ signalling for this radio.")); + + + if (conf->name != NULL) update_widgets(conf); @@ -510,6 +531,9 @@ static gboolean apply_changes(radio_conf_t * conf) /* AOS / LOS signalling */ conf->signal_aos = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sigaos)); conf->signal_los = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(siglos)); + conf->signal_aoiq = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sigaoiq)); + conf->signal_loiq = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sigloiq)); + return TRUE; }