]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
fixed drive levels in old protocol
authorJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Sat, 12 Nov 2016 14:55:15 +0000 (14:55 +0000)
committerJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Sat, 12 Nov 2016 14:55:15 +0000 (14:55 +0000)
16 files changed:
band.c
band.h
gpio.c
main.c
menu.c
new_protocol.c
old_protocol.c
pihpsdr
property.c
radio.c
radio.h
release/pihpsdr.tar
release/pihpsdr/pihpsdr
sliders.c
toolbar.c
wdsp_init.c

diff --git a/band.c b/band.c
index 5a727df52d1272fef750a70a190817b480ba9294..990a3223df5df1109734f269e40775eb7d0a1a4e 100644 (file)
--- a/band.c
+++ b/band.c
@@ -186,17 +186,17 @@ BANDSTACK bandstackGEN={3,1,bandstack_entriesGEN};
 BANDSTACK bandstackWWV={5,1,bandstack_entriesWWV};
 
 BAND bands[BANDS] = 
-    {{"160",&bandstack160,0,0,0,0,0,ALEX_ATTENUATION_0dB,30},
-     {"80",&bandstack80,0,0,0,0,0,ALEX_ATTENUATION_0dB,30},
-     {"60",&bandstack60,0,0,0,0,0,ALEX_ATTENUATION_0dB,30},
-     {"40",&bandstack40,0,0,0,0,0,ALEX_ATTENUATION_0dB,30},
-     {"30",&bandstack30,0,0,0,0,0,ALEX_ATTENUATION_0dB,30},
-     {"20",&bandstack20,0,0,0,0,0,ALEX_ATTENUATION_0dB,30},
-     {"18",&bandstack18,0,0,0,0,0,ALEX_ATTENUATION_0dB,30},
-     {"15",&bandstack15,0,0,0,0,0,ALEX_ATTENUATION_0dB,30},
-     {"12",&bandstack12,0,0,0,0,0,ALEX_ATTENUATION_0dB,30},
-     {"10",&bandstack10,0,0,0,0,0,ALEX_ATTENUATION_0dB,30},
-     {"50",&bandstack50,0,0,0,0,0,ALEX_ATTENUATION_0dB,30},
+    {{"160",&bandstack160,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8},
+     {"80",&bandstack80,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8},
+     {"60",&bandstack60,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8},
+     {"40",&bandstack40,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8},
+     {"30",&bandstack30,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8},
+     {"20",&bandstack20,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8},
+     {"18",&bandstack18,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8},
+     {"15",&bandstack15,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8},
+     {"12",&bandstack12,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8},
+     {"10",&bandstack10,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8},
+     {"50",&bandstack50,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8},
 #ifdef LIMESDR
      {"70",&bandstack70,0,0,0,0,0,ALEX_ATTENUATION_0dB,30},
      {"144",&bandstack144,0,0,0,0,0,ALEX_ATTENUATION_0dB,30},
@@ -338,7 +338,7 @@ void bandSaveState() {
         sprintf(name,"band.%d.alexAttenuation",b);
         setProperty(name,value);
 
-        sprintf(value,"%d",bands[b].pa_calibration);
+        sprintf(value,"%f",bands[b].pa_calibration);
         sprintf(name,"band.%d.pa_calibration",b);
         setProperty(name,value);
 
@@ -429,7 +429,10 @@ void bandRestoreState() {
 
         sprintf(name,"band.%d.pa_calibration",b);
         value=getProperty(name);
-        if(value) bands[b].pa_calibration=atoi(value);
+        if(value) bands[b].pa_calibration=atof(value);
+        if(bands[b].pa_calibration<38.8 || bands[b].pa_calibration>100.0) {
+          bands[b].pa_calibration=38.8;
+        }
 
         sprintf(name,"band.%d.OCrx",b);
         value=getProperty(name);
diff --git a/band.h b/band.h
index 7a21b106f38fa94ec3697abdedc442a9ac77f02d..65125042066122980d2725e7d92e92a4fc2e0744 100644 (file)
--- a/band.h
+++ b/band.h
@@ -78,7 +78,7 @@ struct _BAND {
     int alexRxAntenna;
     int alexTxAntenna;
     int alexAttenuation;
-    int pa_calibration;
+    double pa_calibration;
 };
 
 typedef struct _BAND BAND;
diff --git a/gpio.c b/gpio.c
index c542f755948027850b839725e92146e8b163e0d5..08102b43f38c45fc9789b6dc7abdd5240ef1abee 100644 (file)
--- a/gpio.c
+++ b/gpio.c
@@ -779,21 +779,21 @@ static int rf_encoder_changed(void *data) {
     if(function || tune) {
       // tune drive
       double d=getTuneDrive();
-      d+=(double)pos/100.0;
+      d+=(double)pos;
       if(d<0.0) {
         d=0.0;
-      } else if(d>1.0) {
-        d=1.0;
+      } else if(d>100.0) {
+        d=100.0;
       }
       set_tune(d);
     } else {
       // drive
       double d=getDrive();
-      d+=(double)pos/100.0;
+      d+=(double)pos;
       if(d<0.0) {
         d=0.0;
-      } else if(d>1.0) {
-        d=1.0;
+      } else if(d>100.0) {
+        d=100.0;
       }
       set_drive(d);
     }
diff --git a/main.c b/main.c
index 8feeb93365f7d4a5b432f55e4e647fef45f52db2..5a60832ac2e6247f64556d3adf65a9c787fdae3e 100644 (file)
--- a/main.c
+++ b/main.c
@@ -538,6 +538,7 @@ fprintf(stderr,"selected radio=%p device=%d\n",radio,radio->device);
 
   radioRestoreState();
 
+  fprintf(stderr,"malloc samples\n");
   if(radio->protocol==NEW_PROTOCOL) {
     samples=malloc(display_width*sizeof(float)*2*4); // 192 -> 48
   } else {
@@ -545,15 +546,18 @@ fprintf(stderr,"selected radio=%p device=%d\n",radio,radio->device);
   }
 
   //splash_status("Initializing wdsp ...");
+  fprintf(stderr,"wdsp_init\n");
   wdsp_init(0,display_width,radio->protocol);
 
   switch(radio->protocol) {
     case ORIGINAL_PROTOCOL:
       splash_status("Initializing old protocol ...");
+  fprintf(stderr,"old_protocol_init\n");
       old_protocol_init(0,display_width);
       break;
     case NEW_PROTOCOL:
       splash_status("Initializing new protocol ...");
+  fprintf(stderr,"new_protocol_init\n");
       new_protocol_init(0,display_width);
       break;
 #ifdef LIMESDR
@@ -564,6 +568,7 @@ fprintf(stderr,"selected radio=%p device=%d\n",radio,radio->device);
 #endif
   }
 
+  fprintf(stderr,"gpio_init\n");
   splash_status("Initializing GPIO ...");
 #ifdef GPIO
   if(gpio_init()<0) {
diff --git a/menu.c b/menu.c
index 043e7abec979bdacd7dfd509e6563261e707d991..376ba58cff1ebc07f9392a0c36303975ca35b7c2 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -357,9 +357,31 @@ static void tx_out_of_band_cb(GtkWidget *widget, gpointer data) {
   tx_out_of_band=tx_out_of_band==1?0:1;
 }
 
+static void tone_value_changed_cb(GtkWidget *widget, gpointer data) {
+  tone_level=gtk_spin_button_get_value(GTK_SPIN_BUTTON(widget));
+  SetTXAPostGenToneMag(CHANNEL_TX,tone_level);
+}
+
+static void tx_cfir_cb(GtkWidget *widget, gpointer data) {
+  tx_cfir=tx_cfir==1?0:1;
+  SetTXACFIRRun(CHANNEL_TX, tx_cfir);
+}
+
+static void tx_alc_cb(GtkWidget *widget, gpointer data) {
+  tx_alc=tx_alc==1?0:1;
+  SetTXAALCSt(CHANNEL_TX, tx_alc);
+}
+
+static void tx_leveler_cb(GtkWidget *widget, gpointer data) {
+  tx_leveler=tx_leveler==1?0:1;
+  SetTXALevelerSt(CHANNEL_TX, tx_leveler);
+}
+
 static void pa_value_changed_cb(GtkWidget *widget, gpointer data) {
   BAND *band=(BAND *)data;
-  band->pa_calibration=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
+  band->pa_calibration=gtk_spin_button_get_value(GTK_SPIN_BUTTON(widget));
+  calcDriveLevel();
+  calcTuneDriveLevel();
 }
 
 static gboolean exit_pressed_event_cb (GtkWidget *widget,
@@ -1316,7 +1338,7 @@ static gboolean menu_pressed_event_cb (GtkWidget *widget,
   id=gtk_notebook_append_page(GTK_NOTEBOOK(notebook),dsp_grid,dsp_label);
 
   if(protocol==ORIGINAL_PROTOCOL || protocol==NEW_PROTOCOL) {
-    GtkWidget *tx_label=gtk_label_new("PA Gain");
+    GtkWidget *tx_label=gtk_label_new("PA Gain (dB)");
     GtkWidget *tx_grid=gtk_grid_new();
     gtk_grid_set_row_homogeneous(GTK_GRID(tx_grid),TRUE);
     gtk_grid_set_column_spacing (GTK_GRID(tx_grid),10);
@@ -1329,7 +1351,7 @@ static gboolean menu_pressed_event_cb (GtkWidget *widget,
       gtk_widget_show(band_label);
       gtk_grid_attach(GTK_GRID(tx_grid),band_label,(i/6)*2,i%6,1,1);
 
-      GtkWidget *pa_r=gtk_spin_button_new_with_range(0.0,100.0,1.0);
+      GtkWidget *pa_r=gtk_spin_button_new_with_range(38.8,100.0,0.1);
       //gtk_widget_override_font(pa_r, pango_font_description_from_string("Arial 18"));
       gtk_spin_button_set_value(GTK_SPIN_BUTTON(pa_r),(double)band->pa_calibration);
       gtk_widget_show(pa_r);
@@ -1344,6 +1366,34 @@ static gboolean menu_pressed_event_cb (GtkWidget *widget,
     gtk_grid_attach(GTK_GRID(tx_grid),tx_out_of_band_b,0,7,4,1);
     g_signal_connect(tx_out_of_band_b,"toggled",G_CALLBACK(tx_out_of_band_cb),NULL);
 
+/*
+    GtkWidget *tx_cfir_b=gtk_check_button_new_with_label("TX CFIR");
+    //gtk_widget_override_font(tx_out_of_band_b, pango_font_description_from_string("Arial 18"));
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tx_cfir_b), tx_cfir);
+    gtk_widget_show(tx_cfir_b);
+    gtk_grid_attach(GTK_GRID(tx_grid),tx_cfir_b,4,7,4,1);
+    g_signal_connect(tx_cfir_b,"toggled",G_CALLBACK(tx_cfir_cb),NULL);
+
+    GtkWidget *tx_alc_b=gtk_check_button_new_with_label("TX ALC");
+    //gtk_widget_override_font(tx_out_of_band_b, pango_font_description_from_string("Arial 18"));
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tx_alc_b), tx_alc);
+    gtk_widget_show(tx_alc_b);
+    gtk_grid_attach(GTK_GRID(tx_grid),tx_alc_b,8,7,4,1);
+    g_signal_connect(tx_alc_b,"toggled",G_CALLBACK(tx_alc_cb),NULL);
+
+    GtkWidget *tx_leveler_b=gtk_check_button_new_with_label("TX Leveler");
+    //gtk_widget_override_font(tx_out_of_band_b, pango_font_description_from_string("Arial 18"));
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tx_leveler_b), tx_leveler);
+    gtk_widget_show(tx_leveler_b);
+    gtk_grid_attach(GTK_GRID(tx_grid),tx_leveler_b,12,7,4,1);
+    g_signal_connect(tx_leveler_b,"toggled",G_CALLBACK(tx_leveler_cb),NULL);
+
+    GtkWidget *tone_r=gtk_spin_button_new_with_range(0.0,1.0,0.01);
+    gtk_spin_button_set_value(GTK_SPIN_BUTTON(tone_r),tone_level);
+    gtk_widget_show(tone_r);
+    gtk_grid_attach(GTK_GRID(tx_grid),tone_r,4,6,4,1);
+    g_signal_connect(tone_r,"value_changed",G_CALLBACK(tone_value_changed_cb),NULL);
+*/
     id=gtk_notebook_append_page(GTK_NOTEBOOK(notebook),tx_grid,tx_label);
   }
 
index 36bfab07b2e5383eebff7b2c0d462953dc3e6599..c51cf59572706a8f96d6ed7be439821a3c54a1ae 100644 (file)
@@ -57,6 +57,8 @@
 #include "freedv.h"
 #endif
 
+#define min(x,y) (x<y?x:y)
+
 #define PI 3.1415926535897932F
 
 int data_socket;
@@ -187,14 +189,12 @@ static void new_protocol_calc_buffers() {
 }
 
 void schedule_high_priority(int source) {
-//fprintf(stderr,"new_protocol: schedule_high_priority: source=%d\n",source);
     sem_wait(&send_high_priority_sem);
     send_high_priority=1;
     sem_post(&send_high_priority_sem);
 }
 
 void schedule_general() {
-fprintf(stderr,"new_protocol: schedule_general\n");
     sem_wait(&send_general_sem);
     send_general=1;
     sem_post(&send_general_sem);
@@ -263,8 +263,6 @@ void new_protocol_new_sample_rate(int rate) {
 static void new_protocol_general() {
     unsigned char buffer[60];
 
-fprintf(stderr,"new_protocol_general: receiver=%d\n", receiver);
-
     memset(buffer, 0, sizeof(buffer));
 
     buffer[0]=general_sequence>>24;
@@ -344,14 +342,13 @@ static void new_protocol_high_priority(int run) {
 
     int power=0;
     if(isTransmitting()) {
-      double d=drive;
       if(tune) {
-        d=tune_drive;
+        power=tune_drive_level;
+      } else {
+        power=drive_level;
       }
-      d=d*((double)band->pa_calibration/100.0);
-      power=(int)(d*255.0);
     }
-    
+
     buffer[345]=power&0xFF;
 
     if(isTransmitting()) {
index 6304d6bef280893c03f2c4c5b2885c657fef9587..3e63409a0854d9ad43dc2c219124fef120d81dde 100644 (file)
@@ -54,6 +54,8 @@
 #include "psk.h"
 #endif
 
+#define min(x,y) (x<y?x:y)
+
 #define SYNC0 0
 #define SYNC1 1
 #define SYNC2 2
@@ -371,13 +373,13 @@ static void process_ozy_input_buffer(char  *buffer) {
   int last_ptt;
   int last_dot;
   int last_dash;
-  double gain;
   int left_sample;
   int right_sample;
   int mic_sample;
   double left_sample_double;
   double right_sample_double;
   double mic_sample_double;
+  double gain=pow(10.0, mic_gain / 20.0);
 
   if(buffer[b++]==SYNC && buffer[b++]==SYNC && buffer[b++]==SYNC) {
     // extract control bytes
@@ -453,7 +455,7 @@ static void process_ozy_input_buffer(char  *buffer) {
 #ifdef FREEDV
         if(mode==modeFREEDV && !tune) {
           if(freedv_samples==0) {
-            int sample=(int)((double)mic_sample*pow(10.0, mic_gain / 20.0));
+            int sample=(int)((double)mic_sample*gain);
             int modem_samples=mod_sample_freedv(sample);
             if(modem_samples!=0) {
               int s;
@@ -484,8 +486,8 @@ static void process_ozy_input_buffer(char  *buffer) {
             micinputbuffer[samples*2]=0.0;
             micinputbuffer[(samples*2)+1]=0.0;
           } else {
-            micinputbuffer[samples*2]=mic_sample_double;
-            micinputbuffer[(samples*2)+1]=mic_sample_double;
+            micinputbuffer[samples*2]=mic_sample_double*gain;
+            micinputbuffer[(samples*2)+1]=mic_sample_double*gain;
           }
           iqinputbuffer[samples*2]=0.0;
           iqinputbuffer[(samples*2)+1]=0.0;
@@ -920,16 +922,13 @@ void ozy_send_buffer() {
       break;
     case 3:
       {
-      double d=(double)drive;
-      if(tune) {
-        d=(double)tune_drive;
-      }
-
       int power=0;
       if(isTransmitting()) {
-        BAND *band=band_get_current_band();
-        d=d*((double)band->pa_calibration/100.0);
-        power=(int)(d*255.0);
+        if(tune) {
+          power=tune_drive_level;
+        } else {
+          power=drive_level;
+        }
       }
 
       output_buffer[C0]=0x12;
diff --git a/pihpsdr b/pihpsdr
index d69c3c4e5b24bbef115655b1b6210e9139fc667f..b53d4a594a5bdb548bd30e2df6058c0e404a2281 100755 (executable)
Binary files a/pihpsdr and b/pihpsdr differ
index ec4cea95a50a0f81ff0dc18b9540aa5905a73be0..4aabfc145acfdec6883514f0dcbc8c1e94ebc387 100644 (file)
@@ -56,6 +56,7 @@ void loadProperties(char* filename) {
         }
         fclose(f);
     }
+    fprintf(stderr,"loadProperties: done\n");
 }
 
 /* --------------------------------------------------------------------------*/
diff --git a/radio.c b/radio.c
index af6786ea495709d8e4dd1bdf544818645cc6a64d..d1890aed6128e262255557f5ac573c7596a384e1 100644 (file)
--- a/radio.c
+++ b/radio.c
@@ -59,6 +59,12 @@ int classE=0;
 
 int tx_out_of_band=0;
 
+int tx_cfir=0;
+int tx_alc=1;
+int tx_leveler=0;
+
+double tone_level=0.0;
+
 int sample_rate=48000;
 int filter_board=ALEX;
 //int pa=PA_ENABLED;
@@ -116,8 +122,11 @@ int nr2_gain_method=2; // 0=Linear 1=Log 2=gamma
 int nr2_npe_method=0; // 0=OSMS 1=MMSE
 int nr2_ae=1; // 0=disable 1=enable
 
-double tune_drive=0.1;
-double drive=0.6;
+double tune_drive=10;
+double drive=50;
+
+int drive_level=0;
+int tune_drive_level=0;
 
 int receivers=2;
 int adc[2]={0,1};
@@ -271,7 +280,11 @@ void setTune(int state) {
       } else {
         SetTXAPostGenToneFreq(CHANNEL_TX,(double)cw_keyer_sidetone_frequency);
       }
-      SetTXAPostGenToneMag(CHANNEL_TX,2.0);
+      //if(protocol==ORIGINAL_PROTOCOL) {
+        SetTXAPostGenToneMag(CHANNEL_TX,0.3);
+      //} else {
+      //  SetTXAPostGenToneMag(CHANNEL_TX,0.99999);
+      //}
       SetTXAPostGenRun(CHANNEL_TX,1);
       SetChannelState(CHANNEL_RX0,0,1);
       SetChannelState(CHANNEL_TX,1,0);
@@ -355,8 +368,33 @@ double getDrive() {
     return drive;
 }
 
+static int calcLevel(double d) {
+  int level=0;
+  BAND *band=band_get_current_band();
+  double target_dbm = 10.0 * log10(d * 1000.0);
+  double gbb=band->pa_calibration;
+  target_dbm-=gbb;
+  double target_volts = sqrt(pow(10, target_dbm * 0.1) * 0.05);
+  double volts=min((target_volts / 0.8), 1.0);
+  double v=volts*(1.0/0.98);
+
+  if(v<0.0) {
+    v=0.0;
+  } else if(v>1.0) {
+    v=1.0;
+  }
+
+  level=(int)(v*255.0);
+  return level;
+}
+
+void calcDriveLevel() {
+    drive_level=calcLevel(drive);
+}
+
 void setDrive(double value) {
     drive=value;
+    calcDriveLevel();
     if(protocol==NEW_PROTOCOL) {
       schedule_high_priority(6);
     }
@@ -366,8 +404,14 @@ double getTuneDrive() {
     return tune_drive;
 }
 
+void calcTuneDriveLevel() {
+    tune_drive_level=calcLevel(tune_drive);
+}
+
 void setTuneDrive(double value) {
     tune_drive=value;
+
+    calcTuneDriveLevel();
     if(protocol==NEW_PROTOCOL) {
       schedule_high_priority(7);
     }
@@ -420,6 +464,7 @@ void set_alex_attenuation(int v) {
 void radioRestoreState() {
     char *value;
 
+fprintf(stderr,"radioRestoreState: %s\n",property_path);
     sem_wait(&property_sem);
     loadProperties(property_path);
 
@@ -468,11 +513,11 @@ void radioRestoreState() {
     value=getProperty("volume");
     if(value) volume=atof(value);
     value=getProperty("drive");
-    if(value) {drive=atof(value); if(drive>1.0) drive=1.0;}
+    if(value) drive=atof(value);
     value=getProperty("tune_drive");
-    if(value) {tune_drive=atof(value); if(tune_drive>1.0) tune_drive=1.0;}
+    if(value) tune_drive=atof(value);
     value=getProperty("mic_gain");
-    if(value) { mic_gain=atof(value); if(mic_gain<1.0) mic_gain=0.0; }
+    if(value) mic_gain=atof(value);
     value=getProperty("mic_boost");
     if(value) mic_boost=atof(value);
     value=getProperty("mic_linein");
@@ -569,6 +614,7 @@ void radioRestoreState() {
     value=getProperty("n_selected_input_device");
     if(value) n_selected_input_device=atoi(value);
     bandRestoreState();
+
     sem_post(&property_sem);
 }
 
diff --git a/radio.h b/radio.h
index 4326f017a436bbd886c618361a642ad191e386b1..86a4558638f7304b16f5f23b294f479bf56d12e6 100644 (file)
--- a/radio.h
+++ b/radio.h
@@ -75,6 +75,12 @@ extern int classE;
 
 extern int tx_out_of_band;
 
+extern int tx_cfir;
+extern int tx_alc;
+extern int tx_leveler;
+
+extern double tone_level;
+
 extern int sample_rate;
 extern int filter_board;
 extern int pa;
@@ -129,6 +135,9 @@ extern int mic_ptt_tip_bias_ring;
 extern double tune_drive;
 extern double drive;
 
+extern int tune_drive_level;
+extern int drive_level;
+
 int receivers;
 int adc[2];
 
@@ -214,16 +223,18 @@ extern void setMox(int state);
 extern int getMox();
 extern void setTune(int state);
 extern int getTune();
-double getDrive();
-void setDrive(double d);
-double getTuneDrive();
-void setTuneDrive(double d);
-
-void set_attenuation(int value);
-int get_attenuation();
-void set_alex_rx_antenna(int v);
-void set_alex_tx_antenna(int v);
-void set_alex_attenuation(int v);
+extern double getDrive();
+extern void setDrive(double d);
+extern void calcDriveLevel();
+extern double getTuneDrive();
+extern void setTuneDrive(double d);
+extern void calcTuneDriveLevel();
+
+extern void set_attenuation(int value);
+extern int get_attenuation();
+extern void set_alex_rx_antenna(int v);
+extern void set_alex_tx_antenna(int v);
+extern void set_alex_attenuation(int v);
 
 extern int isTransmitting();
 
index 3a1520650076709384ff56e2ad3be09473517be0..18403433a62819d0b1bc7162b9834516fe0e5cb2 100644 (file)
Binary files a/release/pihpsdr.tar and b/release/pihpsdr.tar differ
index d69c3c4e5b24bbef115655b1b6210e9139fc667f..b53d4a594a5bdb548bd30e2df6058c0e404a2281 100755 (executable)
Binary files a/release/pihpsdr/pihpsdr and b/release/pihpsdr/pihpsdr differ
index fd86935601e68cdbbf85940a6f89d8d39e16f9f6..1a6b4da39f955b0ab49145f839e8167f7f2ea1db 100644 (file)
--- a/sliders.c
+++ b/sliders.c
@@ -197,13 +197,17 @@ void set_af_gain(double value) {
 static void micgain_value_changed_cb(GtkWidget *widget, gpointer data) {
     mic_gain=gtk_range_get_value(GTK_RANGE(widget));
     double gain=pow(10.0, mic_gain / 20.0);
-    SetTXAPanelGain1(CHANNEL_TX,gain);
+    if(protocol==NEW_PROTOCOL) {
+      SetTXAPanelGain1(CHANNEL_TX,gain);
+    }
 }
 
 void set_mic_gain(double value) {
   mic_gain=value;
   double gain=pow(10.0, mic_gain / 20.0);
-  SetTXAPanelGain1(CHANNEL_TX,gain);
+  if(protocol==NEW_PROTOCOL) {
+    SetTXAPanelGain1(CHANNEL_TX,gain);
+  }
   if(display_sliders) {
     gtk_range_set_value (GTK_RANGE(mic_gain_scale),mic_gain);
   } else {
@@ -238,7 +242,7 @@ void set_mic_gain(double value) {
 void set_drive(double value) {
   setDrive(value);
   if(display_sliders) {
-    gtk_range_set_value (GTK_RANGE(drive_scale),value*100.0);
+    gtk_range_set_value (GTK_RANGE(drive_scale),value);
   } else {
     if(scale_status!=DRIVE) {
       if(scale_status!=NONE) {
@@ -253,7 +257,7 @@ void set_drive(double value) {
       GtkWidget *content=gtk_dialog_get_content_area(GTK_DIALOG(scale_dialog));
       drive_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 100.0, 1.00);
       gtk_widget_set_size_request (drive_scale, 400, 30);
-      gtk_range_set_value (GTK_RANGE(drive_scale),value*100.0);
+      gtk_range_set_value (GTK_RANGE(drive_scale),value);
       gtk_widget_show(drive_scale);
       gtk_container_add(GTK_CONTAINER(content),drive_scale);
       scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
@@ -261,20 +265,20 @@ void set_drive(double value) {
       int result=gtk_dialog_run(GTK_DIALOG(scale_dialog));
     } else {
       g_source_remove(scale_timer);
-      gtk_range_set_value (GTK_RANGE(drive_scale),value*100.0);
+      gtk_range_set_value (GTK_RANGE(drive_scale),value);
       scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
     }
   }
 }
 
 static void drive_value_changed_cb(GtkWidget *widget, gpointer data) {
-  setDrive(gtk_range_get_value(GTK_RANGE(drive_scale))/100.0);
+  setDrive(gtk_range_get_value(GTK_RANGE(drive_scale)));
 }
 
 void set_tune(double value) {
   setTuneDrive(value);
   if(display_sliders) {
-    gtk_range_set_value (GTK_RANGE(tune_scale),value*100.0);
+    gtk_range_set_value (GTK_RANGE(tune_scale),value);
   } else {
     if(scale_status!=TUNE_DRIVE) {
       if(scale_status!=NONE) {
@@ -289,7 +293,7 @@ void set_tune(double value) {
       GtkWidget *content=gtk_dialog_get_content_area(GTK_DIALOG(scale_dialog));
       tune_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 100.0, 1.00);
       gtk_widget_set_size_request (tune_scale, 400, 30);
-      gtk_range_set_value (GTK_RANGE(tune_scale),value*100.0);
+      gtk_range_set_value (GTK_RANGE(tune_scale),value);
       gtk_widget_show(tune_scale);
       gtk_container_add(GTK_CONTAINER(content),tune_scale);
       scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
@@ -297,14 +301,14 @@ void set_tune(double value) {
       int result=gtk_dialog_run(GTK_DIALOG(scale_dialog));
     } else {
       g_source_remove(scale_timer);
-      gtk_range_set_value (GTK_RANGE(tune_scale),value*100.0);
+      gtk_range_set_value (GTK_RANGE(tune_scale),value);
       scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
     }
   }
 }
 
 static void tune_value_changed_cb(GtkWidget *widget, gpointer data) {
-  setTuneDrive(gtk_range_get_value(GTK_RANGE(tune_scale))/100.0);
+  setTuneDrive(gtk_range_get_value(GTK_RANGE(tune_scale)));
 }
 
 GtkWidget *sliders_init(int my_width, int my_height, GtkWidget* parent) {
@@ -371,7 +375,7 @@ GtkWidget *sliders_init(int my_width, int my_height, GtkWidget* parent) {
   gtk_grid_attach(GTK_GRID(sliders),drive_label,3,1,1,1);
 
   drive_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 100.0, 1.0);
-  gtk_range_set_value (GTK_RANGE(drive_scale),getDrive()*100.0);
+  gtk_range_set_value (GTK_RANGE(drive_scale),getDrive());
   gtk_widget_show(drive_scale);
   gtk_grid_attach(GTK_GRID(sliders),drive_scale,4,1,2,1);
   g_signal_connect(G_OBJECT(drive_scale),"value_changed",G_CALLBACK(drive_value_changed_cb),NULL);
@@ -382,7 +386,7 @@ GtkWidget *sliders_init(int my_width, int my_height, GtkWidget* parent) {
   gtk_grid_attach(GTK_GRID(sliders),tune_label,6,1,1,1);
 
   tune_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 100.0, 1.0);
-  gtk_range_set_value (GTK_RANGE(tune_scale),getTuneDrive()*100.0);
+  gtk_range_set_value (GTK_RANGE(tune_scale),getTuneDrive());
   gtk_widget_show(tune_scale);
   gtk_grid_attach(GTK_GRID(sliders),tune_scale,7,1,2,1);
   g_signal_connect(G_OBJECT(tune_scale),"value_changed",G_CALLBACK(tune_value_changed_cb),NULL);
index 95d87ba91c355ee06c4f0fcde570414ef069c70d..3d6e3d68bdf59b8f4248df70c0b4501cf015c2c8 100644 (file)
--- a/toolbar.c
+++ b/toolbar.c
@@ -144,6 +144,9 @@ static void band_select_cb(GtkWidget *widget, gpointer data) {
   vfo_update(NULL);
 
   setFrequency(entry->frequencyA);
+
+  calcDriveLevel();
+  calcTuneDriveLevel();
 }
 
 void band_cb(GtkWidget *widget, gpointer data) {
@@ -1068,6 +1071,9 @@ void sim_band_cb(GtkWidget *widget, gpointer data) {
     set_alex_tx_antenna(band->alexTxAntenna);
     set_alex_attenuation(band->alexAttenuation);
     vfo_update(NULL);
+
+    calcDriveLevel();
+    calcTuneDriveLevel();
   }
 }
 
index 1e54f1720a3b5d161320b312c575db8ed1cce2dc..be78823d7ce7ef030b2e5cfeb96e5fffc4698b3e 100644 (file)
@@ -279,17 +279,21 @@ static void setupTX(int tx) {
     SetTXABandpassWindow(tx, 1);
     SetTXABandpassRun(tx, 1);
 
-    SetTXACFIRRun(tx, 1);
+    SetTXACFIRRun(tx, protocol==NEW_PROTOCOL?1:0); // turned in if new protocol
     SetTXAEQRun(tx, 0);
     SetTXACTCSSRun(tx, 0);
     SetTXAAMSQRun(tx, 0);
     SetTXACompressorRun(tx, 0);
     SetTXAosctrlRun(tx, 0);
 
+    SetTXAALCAttack(tx, 1);
     SetTXAALCDecay(tx, 10);
-    SetTXALevelerTop(tx, 15.0);
+    SetTXAALCSt(tx, tx_alc);
+
+    SetTXALevelerAttack(tx, 1);
     SetTXALevelerDecay(tx, 500);
-    SetTXALevelerSt(tx, 1);
+    SetTXALevelerTop(tx, 5.0);
+    SetTXALevelerSt(tx, tx_leveler);
 
     SetTXAPreGenMode(tx, 0);
     SetTXAPreGenToneMag(tx, 0.0);
@@ -297,13 +301,15 @@ static void setupTX(int tx) {
     SetTXAPreGenRun(tx, 0);
 
     SetTXAPostGenMode(tx, 0);
-    SetTXAPostGenToneMag(tx, 0.0);
+    SetTXAPostGenToneMag(tx, tone_level);
     SetTXAPostGenToneFreq(tx, 0.0);
     SetTXAPostGenRun(tx, 0);
 
-    SetTXAPanelRun(tx, 1);
-    double gain=pow(10.0, mic_gain / 20.0);
-    SetTXAPanelGain1(tx,gain);
+    if(protocol==NEW_PROTOCOL) {
+      double gain=pow(10.0, mic_gain / 20.0);
+      SetTXAPanelGain1(tx,gain);
+      //SetTXAPanelRun(tx, protocol==NEW_PROTOCOL?1:0);
+    }
 
     //SetChannelState(tx,1,0);
 }
@@ -406,6 +412,9 @@ void wdsp_init(int rx,int pixels,int protocol) {
     initAnalyzer(CHANNEL_PSK,PSK_BUFFER_SIZE);
 #endif
 
+    calcDriveLevel();
+    calcTuneDriveLevel();
+
 }
 
 void wdsp_new_sample_rate(int rate) {