]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
Fixed problem with linein gain not setting correctly.
authorJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Mon, 19 Dec 2016 16:39:06 +0000 (16:39 +0000)
committerJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Mon, 19 Dec 2016 16:39:06 +0000 (16:39 +0000)
14 files changed:
audio.c
audio_menu.c
configure.c
gpio.c
iambic.c
iambic.h
main.c
new_menu.c
new_protocol.c
old_protocol.c
radio.c
radio.h
sliders.c
sliders.h

diff --git a/audio.c b/audio.c
index b46ab8a2021f417d6b4c4314f81a1e68b1b1d76a..0b3ae131c41f8c19b15c997baa03f1b440b7b7d6 100644 (file)
--- a/audio.c
+++ b/audio.c
@@ -298,7 +298,7 @@ int audio_write(short left_sample,short right_sample) {
       if(snd_pcm_delay(playback_handle,&delay)==0) {
         if(delay>2048) {
           trim=delay-2048;
-fprintf(stderr,"audio delay=%ld trim=%ld\n",delay,trim);
+//fprintf(stderr,"audio delay=%ld trim=%ld\n",delay,trim);
         }
       }
 
index 684bba21e8ff505cb6bc82d60bef29cbecd0712e..2045be87a390a80bcd7d655c1712881feb04fb59 100644 (file)
@@ -27,6 +27,7 @@
 #include "audio.h"
 #include "channel.h"
 #include "radio.h"
+#include "sliders.h"
 #include "wdsp.h"
 
 static GtkWidget *parent_window=NULL;
@@ -58,6 +59,7 @@ static void micboost_cb(GtkWidget *widget, gpointer data) {
 
 static void linein_cb(GtkWidget *widget, gpointer data) {
   mic_linein=mic_linein==1?0:1;
+  linein_changed();
 }
 
 static void local_audio_cb(GtkWidget *widget, gpointer data) {
index ecc36eefbbbe023b28b7a9ee20455081d4600941..d33ce08d74bb56d6303e904d04b018c779fd4089 100644 (file)
@@ -268,6 +268,32 @@ void configure_gpio(GtkWidget *parent) {
   gtk_widget_show(function);
   gtk_grid_attach(GTK_GRID(grid),function,2,10,1,1);
 
+  GtkWidget *cwl_label=gtk_label_new("CWL");
+  gtk_widget_show(cwl_label);
+  gtk_grid_attach(GTK_GRID(grid),cwl_label,0,11,1,1);
+
+  GtkWidget *cwl_gpio_label=gtk_label_new("GPIO:");
+  gtk_widget_show(cwl_gpio_label);
+  gtk_grid_attach(GTK_GRID(grid),cwl_gpio_label,1,11,1,1);
+
+  GtkWidget *cwl=gtk_spin_button_new_with_range (0.0,100.0,1.0);
+  gtk_spin_button_set_value (GTK_SPIN_BUTTON(cwl),CWL_BUTTON);
+  gtk_widget_show(cwl);
+  gtk_grid_attach(GTK_GRID(grid),cwl,2,11,1,1);
+
+  GtkWidget *cwr_label=gtk_label_new("CWR");
+  gtk_widget_show(cwr_label);
+  gtk_grid_attach(GTK_GRID(grid),cwr_label,0,12,1,1);
+
+  GtkWidget *cwr_gpio_label=gtk_label_new("GPIO:");
+  gtk_widget_show(cwr_gpio_label);
+  gtk_grid_attach(GTK_GRID(grid),cwr_gpio_label,1,12,1,1);
+
+  GtkWidget *cwr=gtk_spin_button_new_with_range (0.0,100.0,1.0);
+  gtk_spin_button_set_value (GTK_SPIN_BUTTON(cwr),CWR_BUTTON);
+  gtk_widget_show(cwr);
+  gtk_grid_attach(GTK_GRID(grid),cwr,2,12,1,1);
+
 
 
   gtk_container_add(GTK_CONTAINER(content),grid);
@@ -310,6 +336,8 @@ void configure_gpio(GtkWidget *parent) {
   MOX_BUTTON=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(mox));
   ENABLE_FUNCTION_BUTTON=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b_enable_function))?1:0;
   FUNCTION_BUTTON=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(function));
+  CWL_BUTTON=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(cwl));
+  CWR_BUTTON=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(cwr));
 
   gtk_widget_destroy(dialog);
 
diff --git a/gpio.c b/gpio.c
index 63f426c860c384582880932279f2a3cee19a8b24..6dbce4878ef057d8b1e4ddac41cc86606cdf9ff7 100644 (file)
--- a/gpio.c
+++ b/gpio.c
@@ -90,8 +90,8 @@ int FUNCTION_BUTTON=22;
 int ENABLE_LOCK_BUTTON=1;
 int ENABLE_CW_BUTTONS=1;
 // make sure to disable UART0 for next 2 gpios
-int CWL_BUTTON=15;
-int CWR_BUTTON=14;
+int CWL_BUTTON=9;
+int CWR_BUTTON=10;
 
 #ifdef sx1509
 /* Hardware Hookup:
@@ -727,12 +727,16 @@ fprintf(stderr,"encoder_init\n");
 #endif
 
   if(ENABLE_CW_BUTTONS) {
+    setup_button(CWL_BUTTON, cwAlert);
+    setup_button(CWR_BUTTON, cwAlert);
+/*
     gpioSetMode(CWL_BUTTON, PI_INPUT);
     gpioSetAlertFunc(CWL_BUTTON, cwAlert);
     gpioSetMode(CWR_BUTTON, PI_INPUT);
     gpioSetAlertFunc(CWR_BUTTON, cwAlert);
     gpioGlitchFilter(CWL_BUTTON, 5000);
     gpioGlitchFilter(CWR_BUTTON, 5000);
+*/
   }
  
 #endif
index d8084a6016fbb8199a5edd993dc4e7772753f83f..35ea9cb32364c2eaff6195c88ac76aaf5444d44b 100644 (file)
--- a/iambic.c
+++ b/iambic.c
@@ -89,6 +89,7 @@ static pthread_t keyer_thread_id;
 #define MAX_SAFE_STACK (8*1024)
 #define NSEC_PER_SEC   (1000000000)
 
+/*
 enum {
     CHECK = 0,
     PREDOT,
@@ -102,17 +103,18 @@ enum {
     LETTERSPACE,
     EXITLOOP
 };
+*/
 
 static int dot_memory = 0;
 static int dash_memory = 0;
-static int key_state = 0;
+int key_state = 0;
 static int kdelay = 0;
 static int dot_delay = 0;
 static int dash_delay = 0;
 static int kcwl = 0;
 static int kcwr = 0;
-static int *kdot;
-static int *kdash;
+int *kdot;
+int *kdash;
 static int running = 0;
 static sem_t cw_event;
 
@@ -157,8 +159,9 @@ void keyer_event(int gpio, int level) {
     else  // CWR_BUTTON
         kcwr = state;
 
-    if (state || cw_keyer_mode == KEYER_STRAIGHT)
+    if (state || cw_keyer_mode == KEYER_STRAIGHT) {
         sem_post(&cw_event);
+    }
 }
 
 void clear_memory() {
@@ -173,13 +176,15 @@ void set_keyer_out(int state) {
         if (state)
             if (SIDETONE_GPIO)
                 softToneWrite (SIDETONE_GPIO, cw_keyer_sidetone_frequency);
-            else
+            else {
                 beep_mute(1);
+            }
         else
             if (SIDETONE_GPIO)
                 softToneWrite (SIDETONE_GPIO, 0);
-            else
+            else  {
                 beep_mute(0);
+            }
     }
 }
 
@@ -376,26 +381,10 @@ int keyer_init() {
             running = 0;
     }
 
-    stack_prefault();
+    //stack_prefault();
 
-    fprintf(stderr,"keyer_init\n");
 
     if (wiringPiSetup () < 0) {
-        fprintf (stderr, "Unable to setup wiringPi: %s\n", strerror (errno));
-        return 1;
-    }
-
-    if (SIDETONE_GPIO)
-        softToneCreate(SIDETONE_GPIO);
-    else {
-        beep_init();
-        beep_vol(cw_keyer_sidetone_volume);
-    }
-
-    rc = sem_init(&cw_event, 0, 0);
-    rc |= pthread_create(&keyer_thread_id, NULL, keyer_thread, NULL);
-    running = 1;
-    if(rc < 0) {
         fprintf(stderr,"pthread_create for keyer_thread failed %d\n", rc);
         exit(-1);
     }
index 3585fd6ef735e4f634c6be44339784bdeaa9eff1..f67fac421b68d98410dde517c5982ae9de35da41 100644 (file)
--- a/iambic.h
+++ b/iambic.h
@@ -1,10 +1,28 @@
 #ifndef _IAMBIC_H
 #define _IAMBIC_H
 
+enum {
+    CHECK = 0,
+    PREDOT,
+    PREDASH,
+    SENDDOT,
+    SENDDASH,
+    DOTDELAY,
+    DASHDELAY,
+    DOTHELD,
+    DASHHELD,
+    LETTERSPACE,
+    EXITLOOP
+};
+
 extern int cwl_state;
 extern int cwr_state;
 extern int keyer_out;
 
+extern int key_state;
+extern int *kdot;
+extern int *kdash;
+
 void keyer_event(int gpio, int level);
 void keyer_update();
 void keyer_close();
diff --git a/main.c b/main.c
index 858defdafe6eae80e74cf51265191d2f6e26b3fc..53df2ed47887b03f3c177e443990995f9f659ff4 100644 (file)
--- a/main.c
+++ b/main.c
 #include "psk_waterfall.h"
 #endif
 
-#define VFO_HEIGHT ((display_height/32)*4)
+#define DISPLAY_INCREMENT (display_height/32)
+#define VFO_HEIGHT (DISPLAY_INCREMENT*4)
+//#define VFO_HEIGHT (DISPLAY_INCREMENT*8)
 #define VFO_WIDTH ((display_width/32)*16)
 #define MENU_HEIGHT VFO_HEIGHT
+//#define MENU_HEIGHT (DISPLAY_INCREMENT*4)
 #define MENU_WIDTH ((display_width/32)*8)
 #define RIT_WIDTH ((MENU_WIDTH/3)*2)
 #define METER_HEIGHT VFO_HEIGHT
+//#define METER_HEIGHT (DISPLAY_INCREMENT*4)
 #define METER_WIDTH ((display_width/32)*8)
-#define PANADAPTER_HEIGHT ((display_height/32)*8)
-#define SLIDERS_HEIGHT ((display_height/32)*6)
-#define TOOLBAR_HEIGHT ((display_height/32)*2)
+#define PANADAPTER_HEIGHT (DISPLAY_INCREMENT*8)
+#define SLIDERS_HEIGHT (DISPLAY_INCREMENT*6)
+#define TOOLBAR_HEIGHT (DISPLAY_INCREMENT*2)
 #define WATERFALL_HEIGHT (display_height-(VFO_HEIGHT+PANADAPTER_HEIGHT+SLIDERS_HEIGHT+TOOLBAR_HEIGHT))
 #ifdef PSK
-#define PSK_WATERFALL_HEIGHT ((display_height/32)*6)
+#define PSK_WATERFALL_HEIGHT (DISPLAY_INCREMENT*6)
 #define PSK_HEIGHT (display_height-(VFO_HEIGHT+PSK_WATERFALL_HEIGHT+SLIDERS_HEIGHT+TOOLBAR_HEIGHT))
 #endif
 
@@ -717,6 +721,8 @@ fprintf(stderr,"start: selected radio=%p device=%d\n",radio,radio->device);
 
   gtk_widget_show_all (window);
 
+  linein_changed();
+
   if(full_screen) {
     gtk_window_fullscreen(GTK_WINDOW(window));
   }
index 1509f71a4beac406ec3604a6f51384e37cf98844..ff5fdf3c7eff57c6c16d8196949302f1bb31936c 100644 (file)
@@ -385,14 +385,14 @@ static gboolean new_menu_pressed_event_cb (GtkWidget *widget,
     g_signal_connect (vox_b, "button-press-event", G_CALLBACK(vox_cb), NULL);
     gtk_grid_attach(GTK_GRID(grid),vox_b,2,3,1,1);
 
-    GtkWidget *diversity_b=gtk_button_new_with_label("Diversity");
-    g_signal_connect (diversity_b, "button-press-event", G_CALLBACK(diversity_cb), NULL);
-    gtk_grid_attach(GTK_GRID(grid),diversity_b,3,3,1,1);
-
     GtkWidget *frequency_b=gtk_button_new_with_label("Frequency");
     g_signal_connect (frequency_b, "button-press-event", G_CALLBACK(freqent_cb), NULL);
-    gtk_grid_attach(GTK_GRID(grid),frequency_b,4,3,1,1);
-
+    gtk_grid_attach(GTK_GRID(grid),frequency_b,3,3,1,1);
+/*
+    GtkWidget *diversity_b=gtk_button_new_with_label("Diversity");
+    g_signal_connect (diversity_b, "button-press-event", G_CALLBACK(diversity_cb), NULL);
+    gtk_grid_attach(GTK_GRID(grid),diversity_b,4,3,1,1);
+*/
     GtkWidget *band_b=gtk_button_new_with_label("Band");
     g_signal_connect (band_b, "button-press-event", G_CALLBACK(band_cb), NULL);
     gtk_grid_attach(GTK_GRID(grid),band_b,0,4,1,1);
@@ -417,10 +417,11 @@ static gboolean new_menu_pressed_event_cb (GtkWidget *widget,
     g_signal_connect (agc_b, "button-press-event", G_CALLBACK(agc_cb), NULL);
     gtk_grid_attach(GTK_GRID(grid),agc_b,5,4,1,1);
 
+/*
     GtkWidget *test_b=gtk_button_new_with_label("Test");
     g_signal_connect (test_b, "button-press-event", G_CALLBACK(test_cb), NULL);
     gtk_grid_attach(GTK_GRID(grid),test_b,0,5,1,1);
-
+*/
     gtk_container_add(GTK_CONTAINER(content),grid);
 
     gtk_widget_show_all(dialog);
index d689d79d1456383e7d073c052e9045d23d432314..75972ef325cd1f9822879f045809a44aae396595 100644 (file)
@@ -328,6 +328,10 @@ static void new_protocol_high_priority(int run) {
         // set the ptt if we're not in breakin mode and mox is on
         if(cw_breakin == 0 && getMox()) buffer[4]|=0x02;
         buffer[5]|=(keyer_out) ? 0x01 : 0;
+        //buffer[5]|=(*kdot) ? 0x02 : 0;
+        //buffer[5]|=(*kdash) ? 0x04 : 0;
+        buffer[5]|=(key_state==SENDDOT) ? 0x02 : 0;
+        buffer[5]|=(key_state==SENDDASH) ? 0x04 : 0;
       }
 #endif
     } else {
@@ -599,9 +603,8 @@ static void new_protocol_transmit_specific() {
       buffer[50]|=0x08;
     }
 
-    // 0..30
-    int g=(int)(30.0*mic_gain);
-    buffer[51]=g&0xFF; // Line in gain
+    // 0..31
+    buffer[51]=linein_gain;
 
     if(sendto(data_socket,buffer,sizeof(buffer),0,(struct sockaddr*)&transmitter_addr,transmitter_addr_length)<0) {
         fprintf(stderr,"sendto socket failed for tx specific\n");
index 0d15e86c3924f7285166d6b2555f14a42aece202..58cbd41e0468a553a9ba766700176f649524ecde 100644 (file)
@@ -1005,7 +1005,7 @@ void ozy_send_buffer() {
       if(mic_ptt_tip_bias_ring) {
         output_buffer[C1]|=0x10;
       }
-      output_buffer[C2]=0x00;
+      output_buffer[C2]=linein_gain;
       output_buffer[C3]=0x00;
 
       if(radio->device==DEVICE_HERMES || radio->device==DEVICE_ANGELIA || radio->device==DEVICE_ORION) {
diff --git a/radio.c b/radio.c
index 30717ab48e4296ea5b9313c648bbcc8ed8882835..65f0fdd71433bffb7c1094454ea94b29914b73da 100644 (file)
--- a/radio.c
+++ b/radio.c
@@ -100,6 +100,7 @@ int rx_random=0;
 int rx_preamp=0;
 
 int mic_linein=0;
+int linein_gain=16; // 0..31
 int mic_boost=0;
 int mic_bias_enabled=0;
 int mic_ptt_enabled=0;
@@ -567,7 +568,9 @@ fprintf(stderr,"radioRestoreState: %s\n",property_path);
     value=getProperty("mic_boost");
     if(value) mic_boost=atof(value);
     value=getProperty("mic_linein");
-    if(value) mic_linein=atof(value);
+    if(value) mic_linein=atoi(value);
+    value=getProperty("linein_gain");
+    if(value) linein_gain=atoi(value);
     value=getProperty("mic_ptt_enabled");
     if(value) mic_ptt_enabled=atof(value);
     value=getProperty("mic_bias_enabled");
@@ -767,6 +770,8 @@ void radioSaveState() {
     setProperty("mic_boost",value);
     sprintf(value,"%d",mic_linein);
     setProperty("mic_linein",value);
+    sprintf(value,"%d",linein_gain);
+    setProperty("linein_gain",value);
     sprintf(value,"%d",mic_ptt_enabled);
     setProperty("mic_ptt_enabled",value);
     sprintf(value,"%d",mic_bias_enabled);
diff --git a/radio.h b/radio.h
index 7cd4bdadd2fe666ef152da53b21048ebc5a82e94..90089611143bbbfe3129a94f02f5796ff3e306e5 100644 (file)
--- a/radio.h
+++ b/radio.h
@@ -52,7 +52,7 @@ extern char property_path[];
 #define APOLLO 2
 
 // soecify how many receivers (only 1 or 2 for now)
-#define RECEIVERS 2
+#define RECEIVERS 1
 
 /*
 #define PA_DISABLED 0
@@ -131,6 +131,7 @@ extern int nr2_npe_method;
 extern int nr2_ae;
 
 extern int mic_linein;
+extern int linein_gain;
 extern int mic_boost;
 extern int mic_bias_enabled;
 extern int mic_ptt_enabled;
index 9361387ca17de8dc7fc0aec3c9c94e8f9ebd5631..d33cf947973e03bf31a14569324df886907898c9 100644 (file)
--- a/sliders.c
+++ b/sliders.c
@@ -48,12 +48,11 @@ static GtkWidget *sliders;
 #define NONE 0
 #define AF_GAIN 1
 #define MIC_GAIN 2
-#define AGC_GAIN 3
-#define DRIVE 4
-#define TUNE_DRIVE 5
-#define ATTENUATION 6
-
-//#define MIC_GAIN_FUDGE 25.0
+#define LINEIN_GAIN 3
+#define AGC_GAIN 4
+#define DRIVE 5
+#define TUNE_DRIVE 6
+#define ATTENUATION 7
 
 static gint scale_timer;
 static int scale_status=NONE;
@@ -66,6 +65,8 @@ static GtkWidget *attenuation_label;
 static GtkWidget *attenuation_scale;
 static GtkWidget *mic_gain_label;
 static GtkWidget *mic_gain_scale;
+static GtkWidget *linein_gain_label;
+static GtkWidget *linein_gain_scale;
 static GtkWidget *drive_label;
 static GtkWidget *drive_scale;
 static GtkWidget *tune_label;
@@ -75,6 +76,22 @@ static GtkWidget *dummy_label;
 static GdkRGBA white;
 static GdkRGBA gray;
 
+void linein_changed() {
+  if(display_sliders) {
+    if(mic_linein) {
+      gtk_widget_hide(mic_gain_label);
+      gtk_widget_hide(mic_gain_scale);
+      gtk_widget_show(linein_gain_label);
+      gtk_widget_show(linein_gain_scale);
+    } else {
+      gtk_widget_hide(linein_gain_label);
+      gtk_widget_hide(linein_gain_scale);
+      gtk_widget_show(mic_gain_label);
+      gtk_widget_show(mic_gain_scale);
+    }
+  }
+}
+
 int scale_timeout_cb(gpointer data) {
   gtk_widget_destroy(scale_dialog);
   scale_status=NONE;
@@ -228,7 +245,7 @@ void set_mic_gain(double value) {
     }
     if(scale_status==NONE) {
       scale_status=MIC_GAIN;
-      scale_dialog=gtk_dialog_new_with_buttons(mic_linein?"Linein Gain (dB)":"Mic Gain (dB)",GTK_WINDOW(parent_window),GTK_DIALOG_DESTROY_WITH_PARENT,NULL,NULL);
+      scale_dialog=gtk_dialog_new_with_buttons("Mic Gain (dB)",GTK_WINDOW(parent_window),GTK_DIALOG_DESTROY_WITH_PARENT,NULL,NULL);
       GtkWidget *content=gtk_dialog_get_content_area(GTK_DIALOG(scale_dialog));
       mic_gain_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,-10.0, 50.0, 1.00);
       gtk_widget_set_size_request (mic_gain_scale, 400, 30);
@@ -253,6 +270,49 @@ int update_mic_gain(void *data) {
   return 0;
 }
 
+static void lineingain_value_changed_cb(GtkWidget *widget, gpointer data) {
+    linein_gain=(int)gtk_range_get_value(GTK_RANGE(widget));
+}
+
+void set_linein_gain(int value) {
+  linein_gain=value;
+  if(display_sliders) {
+    gtk_range_set_value (GTK_RANGE(linein_gain_scale),linein_gain);
+  } else {
+    if(scale_status!=LINEIN_GAIN) {
+      if(scale_status!=NONE) {
+        g_source_remove(scale_timer);
+        gtk_widget_destroy(scale_dialog);
+        scale_status=NONE;
+      }
+    }
+    if(scale_status==NONE) {
+      scale_status=LINEIN_GAIN;
+      scale_dialog=gtk_dialog_new_with_buttons("Linein Gain",GTK_WINDOW(parent_window),GTK_DIALOG_DESTROY_WITH_PARENT,NULL,NULL);
+      GtkWidget *content=gtk_dialog_get_content_area(GTK_DIALOG(scale_dialog));
+      linein_gain_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 31.0, 1.00);
+      gtk_widget_set_size_request (linein_gain_scale, 400, 30);
+      gtk_range_set_value (GTK_RANGE(linein_gain_scale),linein_gain);
+      gtk_widget_show(linein_gain_scale);
+      gtk_container_add(GTK_CONTAINER(content),linein_gain_scale);
+      scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
+      //gtk_widget_show_all(scale_dialog);
+      int result=gtk_dialog_run(GTK_DIALOG(scale_dialog));
+    } else {
+      g_source_remove(scale_timer);
+      gtk_range_set_value (GTK_RANGE(linein_gain_scale),linein_gain);
+      scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
+    }
+
+  }
+}
+
+int update_linein_gain(void *data) {
+  set_linein_gain(*(int*)data);
+  free(data);
+  return 0;
+}
+
 void set_drive(double value) {
   setDrive(value);
   if(display_sliders) {
@@ -378,17 +438,24 @@ GtkWidget *sliders_init(int my_width, int my_height, GtkWidget* parent) {
 
 
 
-  mic_gain_label=gtk_label_new(mic_linein?"Linein (dB):":"Mic (dB):");
+  mic_gain_label=gtk_label_new("Mic (dB):");
   //gtk_widget_override_font(mic_gain_label, pango_font_description_from_string("Arial 16"));
-  gtk_widget_show(mic_gain_label);
   gtk_grid_attach(GTK_GRID(sliders),mic_gain_label,0,1,1,1);
 
   mic_gain_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,-10.0, 50.0, 1.0);
   gtk_range_set_value (GTK_RANGE(mic_gain_scale),mic_gain);
-  gtk_widget_show(mic_gain_scale);
   gtk_grid_attach(GTK_GRID(sliders),mic_gain_scale,1,1,2,1);
   g_signal_connect(G_OBJECT(mic_gain_scale),"value_changed",G_CALLBACK(micgain_value_changed_cb),NULL);
 
+  linein_gain_label=gtk_label_new("Linein:");
+  gtk_grid_attach(GTK_GRID(sliders),linein_gain_label,0,1,1,1);
+
+  linein_gain_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 31.0, 1.0);
+  gtk_range_set_value (GTK_RANGE(linein_gain_scale),linein_gain);
+  gtk_widget_show(linein_gain_scale);
+  gtk_grid_attach(GTK_GRID(sliders),linein_gain_scale,1,1,2,1);
+  g_signal_connect(G_OBJECT(linein_gain_scale),"value_changed",G_CALLBACK(lineingain_value_changed_cb),NULL);
+
   drive_label=gtk_label_new("Drive:");
   //gtk_widget_override_font(drive_label, pango_font_description_from_string("Arial 16"));
   gtk_widget_show(drive_label);
index 8225e13837b9a64d31454fe276ddff05887d5401..1601753b126113d6a63adfd3560cab186360628c 100644 (file)
--- a/sliders.h
+++ b/sliders.h
@@ -20,6 +20,7 @@
 #ifndef _SLIDERS_H
 #define _SLIDERS_H
 
+extern void linein_changed();
 extern int update_agc_gain(void *);
 extern int update_af_gain(void *);
 extern int update_mic_gain(void *);