From 39562bdc3f95d2fb25d1706334d56f6db242b63a Mon Sep 17 00:00:00 2001 From: Ramakrishnan Muthukrishnan Date: Sat, 4 Nov 2023 16:24:32 +0530 Subject: [PATCH] toggle audio output via a rigctl command This would enable a frontpanel switch to select the audio output by sending a command to rigctl. --- rigctl.c | 6 ++++++ rx_menu.c | 12 ++++++++++++ rx_menu.h | 1 + 3 files changed, 19 insertions(+) diff --git a/rigctl.c b/rigctl.c index 14f09d3..9143ee0 100644 --- a/rigctl.c +++ b/rigctl.c @@ -44,6 +44,7 @@ #include "receiver.h" #include "rigctl.h" #include "rigctl_menu.h" +#include "rx_menu.h" #include "sliders.h" #include "store.h" #include "toolbar.h" @@ -958,6 +959,11 @@ gboolean parse_extended_cmd(char *command, CLIENT *client) { case 'I': // ZZAI implemented = FALSE; break; + case 'O': // ZZAO + if (command[4] == ';') { + toggle_audio_output_device(); + } + break; case 'P': // ZZAP implemented = FALSE; break; diff --git a/rx_menu.c b/rx_menu.c index ad1e7aa..2708bb2 100644 --- a/rx_menu.c +++ b/rx_menu.c @@ -140,6 +140,18 @@ static void mute_radio_cb(GtkWidget *widget, gpointer data) { gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); } +void toggle_audio_output_device(void) { + // n_output_devices holds the number of output devices (global - + // aargh!!) + int out_index = gtk_combo_box_get_active(GTK_COMBO_BOX(output)); + + // toggle + out_index = (out_index + 1) % n_output_devices; + + // set the other device as active + gtk_combo_box_set_active(GTK_COMBO_BOX(output), out_index); +} + // // possible the device has been changed: // call audo_close_output with old device, audio_open_output with new one diff --git a/rx_menu.h b/rx_menu.h index b3d06c5..1342234 100644 --- a/rx_menu.h +++ b/rx_menu.h @@ -18,3 +18,4 @@ */ extern void rx_menu(GtkWidget *parent); +extern void toggle_audio_output_device(void); -- 2.45.2