From: John Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Date: Tue, 8 Nov 2016 22:49:08 +0000 (+0000)
Subject: changed volume control and mic gain to use wdsp patchpanel. Added updated libwdsp.so.
X-Git-Url: https://git.rkrishnan.org/simplejson/components/-?a=commitdiff_plain;h=07b390d87d2962ca384e19f29fdfb2d575b7ce35;p=pihpsdr.git

changed volume control and mic gain to use wdsp patchpanel. Added updated libwdsp.so.
---

diff --git a/audio.c b/audio.c
index 8e3c92f..3f3d4c6 100644
--- a/audio.c
+++ b/audio.c
@@ -161,8 +161,9 @@ int audio_open_input() {
   int rate=48000;
   int dir=0;
 
-  if(n_selected_output_device<0 || n_selected_output_device>=n_output_devices) {
-    n_selected_output_device=-1;
+fprintf(stderr,"audio_open_input: %d\n",n_selected_input_device);
+  if(n_selected_input_device<0 || n_selected_input_device>=n_input_devices) {
+    n_selected_input_device=-1;
     return -1;
   }
 
diff --git a/main.c b/main.c
index 6c95e0a..8feeb93 100644
--- a/main.c
+++ b/main.c
@@ -676,6 +676,9 @@ fprintf(stderr,"toolbar_height=%d\n",TOOLBAR_HEIGHT);
   GdkWindow *gdk_window = gtk_widget_get_window(window);
   gdk_window_set_cursor(gdk_window,cursor_arrow);
 
+  // start the receiver
+  SetChannelState(CHANNEL_RX0,1,1);
+
   //update_timer_id=gdk_threads_add_timeout(1000/updates_per_second, update, NULL);
   update_timer_id=gdk_threads_add_timeout_full(G_PRIORITY_HIGH_IDLE,1000/updates_per_second, update, NULL, NULL);
 
diff --git a/menu.c b/menu.c
index c2f3f98..05e24d3 100644
--- a/menu.c
+++ b/menu.c
@@ -224,6 +224,8 @@ static void local_input_changed_cb(GtkWidget *widget, gpointer data) {
     audio_close_input();
     if(audio_open_input()==0) {
       local_microphone=1;
+    } else {
+      local_microphone=0;
     }
   }
 }
diff --git a/new_protocol.c b/new_protocol.c
index 804fc6c..774a18c 100644
--- a/new_protocol.c
+++ b/new_protocol.c
@@ -794,8 +794,6 @@ static void process_iq_data(unsigned char *buffer) {
     bitspersample=((buffer[12]&0xFF)<<8)+(buffer[13]&0xFF);
     samplesperframe=((buffer[14]&0xFF)<<8)+(buffer[15]&0xFF);
 
-//fprintf(stderr,"samples per frame %d\n",samplesperframe);
-
     //if(!isTransmitting()) {
         b=16;
         int i;
@@ -880,10 +878,10 @@ static void process_mic_data(unsigned char *buffer) {
         b=4;
         int i,j,s;
         for(i=0;i<MIC_SAMPLES;i++) {
-            micsample  = (int)((signed char) buffer[b++]) << 8;
-            micsample  |= (int)((unsigned char)buffer[b++] & 0xFF);
 #ifdef FREEDV
             if(mode==modeFREEDV && isTransmitting()) {
+                micsample  = (int)((signed char) buffer[b++]) << 8;
+                micsample  |= (int)((unsigned char)buffer[b++] & 0xFF);
                 if(freedv_samples==0) { // 48K to 8K
                     int modem_samples=mod_sample_freedv(micsample);
                     if(modem_samples!=0) {
@@ -891,8 +889,8 @@ static void process_mic_data(unsigned char *buffer) {
                         for(j=0;j<freedv_resample;j++) {  // 8K to 48K
                           micsample=mod_out[s];
                           micsampledouble=(double)micsample/32767.0; // 16 bit sample 2^16-1
-                          micinputbuffer[micsamples*2]=micsampledouble*(mic_gain*1.0);
-                          micinputbuffer[(micsamples*2)+1]=micsampledouble*(mic_gain*1.0);
+                          micinputbuffer[micsamples*2]=micsampledouble;
+                          micinputbuffer[(micsamples*2)+1]=micsampledouble;
                           micsamples++;
                           if(micsamples==BUFFER_SIZE) {
                             full_tx_buffer();
@@ -908,13 +906,14 @@ static void process_mic_data(unsigned char *buffer) {
                }
             } else {
 #endif
-               micsampledouble = (double)micsample/32767.0; // 16 bit sample
+               //micsampledouble = (double)micsample/32767.0; // 16 bit sample
+               micsampledouble = (1.0 / 2147483648.0) * (double)(buffer[b++] << 24 | buffer[b++] << 16);
                if(mode==modeCWL || mode==modeCWU || tune || !isTransmitting()) {
                    micinputbuffer[micsamples*2]=0.0;
                    micinputbuffer[(micsamples*2)+1]=0.0;
                } else {
-                   micinputbuffer[micsamples*2]=micsampledouble*(mic_gain*1.0);
-                   micinputbuffer[(micsamples*2)+1]=micsampledouble*(mic_gain*1.0);
+                   micinputbuffer[micsamples*2]=micsampledouble;
+                   micinputbuffer[(micsamples*2)+1]=micsampledouble;
                }
 
                micsamples++;
@@ -1036,6 +1035,9 @@ static void full_rx_buffer() {
   int error;
 
   fexchange0(CHANNEL_RX0, iqinputbuffer, audiooutputbuffer, &error);
+if(error!=0) {
+fprintf(stderr,"full_rx_buffer: fexchange0: error=%d\n",error);
+}
   switch(mode) {
 #ifdef PSK
     case modePSK:
@@ -1144,8 +1146,8 @@ void *new_protocol_process_local_mic(unsigned char *buffer,int le) {
                         for(j=0;j<freedv_resample;j++) {  // 8K to 48K
                           leftmicsample=mod_out[s];
                           leftmicsampledouble=(double)leftmicsample/32767.0; // 16 bit sample 2^16-1
-                          micinputbuffer[micsamples*2]=leftmicsampledouble*mic_gain;
-                          micinputbuffer[(micsamples*2)+1]=leftmicsampledouble*mic_gain;
+                          micinputbuffer[micsamples*2]=leftmicsampledouble;
+                          micinputbuffer[(micsamples*2)+1]=leftmicsampledouble;
                           micsamples++;
                           if(micsamples==BUFFER_SIZE) {
                             full_tx_buffer();
@@ -1167,8 +1169,8 @@ void *new_protocol_process_local_mic(unsigned char *buffer,int le) {
                    micinputbuffer[micsamples*2]=0.0;
                    micinputbuffer[(micsamples*2)+1]=0.0;
                } else {
-                   micinputbuffer[micsamples*2]=leftmicsampledouble*mic_gain;
-                   micinputbuffer[(micsamples*2)+1]=rightmicsampledouble*mic_gain;
+                   micinputbuffer[micsamples*2]=leftmicsampledouble;
+                   micinputbuffer[(micsamples*2)+1]=rightmicsampledouble;
                }
 
                micsamples++;
diff --git a/old_protocol.c b/old_protocol.c
index e8600aa..42b3947 100644
--- a/old_protocol.c
+++ b/old_protocol.c
@@ -460,8 +460,8 @@ static void process_ozy_input_buffer(char  *buffer) {
                 for(j=0;j<freedv_divisor;j++) {
                   mic_sample=mod_out[s];
                   mic_sample_double=(double)mic_sample/32767.0f; // 16 bit sample 2^16-1
-                  micinputbuffer[samples*2]=mic_sample_double*(mic_gain*1);
-                  micinputbuffer[(samples*2)+1]=mic_sample_double*(mic_gain*1);
+                  micinputbuffer[samples*2]=mic_sample_double;
+                  micinputbuffer[(samples*2)+1]=mic_sample_double;
                   iqinputbuffer[samples*2]=0.0;
                   iqinputbuffer[(samples*2)+1]=0.0;
                   samples++;
@@ -483,8 +483,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*(mic_gain*1);
-            micinputbuffer[(samples*2)+1]=mic_sample_double*(mic_gain*1);
+            micinputbuffer[samples*2]=mic_sample_double;
+            micinputbuffer[(samples*2)+1]=mic_sample_double;
           }
           iqinputbuffer[samples*2]=0.0;
           iqinputbuffer[(samples*2)+1]=0.0;
@@ -530,8 +530,8 @@ static void process_freedv_rx_buffer() {
   int demod_samples;
   for(j=0;j<output_buffer_size;j++) {
     if(freedv_samples==0) {
-      left_rx_sample=(short)(audiooutputbuffer[j*2]*32767.0*volume);
-      right_rx_sample=(short)(audiooutputbuffer[(j*2)+1]*32767.0*volume);
+      left_rx_sample=(short)(audiooutputbuffer[j*2]*32767.0);
+      right_rx_sample=(short)(audiooutputbuffer[(j*2)+1]*32767.0);
       demod_samples=demod_sample_freedv(left_rx_sample);
       if(demod_samples!=0) {
         int s;
@@ -539,7 +539,7 @@ static void process_freedv_rx_buffer() {
         for(s=0;s<demod_samples;s++) {
           for(t=0;t<6;t++) { // 8k to 48k
             if(freedv_sync) {
-              left_rx_sample=right_rx_sample=(short)((double)speech_out[s]*volume);
+              left_rx_sample=right_rx_sample=(short)((double)speech_out[s]);
             } else {
               left_rx_sample=right_rx_sample=0;
             }
@@ -575,8 +575,8 @@ static void process_rx_buffer() {
   int j;
 
   for(j=0;j<output_buffer_size;j++) {
-    left_rx_sample=(short)(audiooutputbuffer[j*2]*32767.0*volume);
-    right_rx_sample=(short)(audiooutputbuffer[(j*2)+1]*32767.0*volume);
+    left_rx_sample=(short)(audiooutputbuffer[j*2]*32767.0);
+    right_rx_sample=(short)(audiooutputbuffer[(j*2)+1]*32767.0);
 #ifdef PSK
     if(mode==modePSK) {
       if(psk_samples==0) {
@@ -728,8 +728,8 @@ void *old_protocol_process_local_mic(unsigned char *buffer,int le) {
               for(j=0;j<freedv_divisor;j++) {  // 8K to 48K
                 leftmicsample=mod_out[s];
                 leftmicsampledouble=(double)leftmicsample/32767.0; // 16 bit sample 2^16-1
-                micinputbuffer[samples*2]=leftmicsampledouble*(mic_gain*1);
-                micinputbuffer[(samples*2)+1]=leftmicsampledouble*(mic_gain*1);
+                micinputbuffer[samples*2]=leftmicsampledouble;
+                micinputbuffer[(samples*2)+1]=leftmicsampledouble;
                 iqinputbuffer[samples*2]=0.0;
                 iqinputbuffer[(samples*2)+1]=0.0;
                 samples++;
@@ -751,8 +751,8 @@ void *old_protocol_process_local_mic(unsigned char *buffer,int le) {
             micinputbuffer[samples*2]=0.0;
             micinputbuffer[(samples*2)+1]=0.0;
           } else {
-            micinputbuffer[samples*2]=leftmicsampledouble*(mic_gain*1);
-            micinputbuffer[(samples*2)+1]=leftmicsampledouble*(mic_gain*1);
+            micinputbuffer[samples*2]=leftmicsampledouble;
+            micinputbuffer[(samples*2)+1]=leftmicsampledouble;
           }
           iqinputbuffer[samples*2]=0.0;
           iqinputbuffer[(samples*2)+1]=0.0;
diff --git a/pihpsdr b/pihpsdr
index e82f16e..579986a 100755
Binary files a/pihpsdr and b/pihpsdr differ
diff --git a/property.c b/property.c
index 8e3c60d..ec4cea9 100644
--- a/property.c
+++ b/property.c
@@ -71,7 +71,7 @@ void saveProperties(char* filename) {
     char version[32];
     if(!f) {
         fprintf(stderr,"can't open %s\n",filename);
-        exit(1);
+        return;
     }
 
     sprintf(version,"%0.2f", PROPERTY_VERSION);
diff --git a/release/pihpsdr.tar b/release/pihpsdr.tar
index 2399c51..c26fb8c 100644
Binary files a/release/pihpsdr.tar and b/release/pihpsdr.tar differ
diff --git a/release/pihpsdr/libwdsp.so b/release/pihpsdr/libwdsp.so
index 174eba4..82abe26 100755
Binary files a/release/pihpsdr/libwdsp.so and b/release/pihpsdr/libwdsp.so differ
diff --git a/release/pihpsdr/pihpsdr b/release/pihpsdr/pihpsdr
index e82f16e..579986a 100755
Binary files a/release/pihpsdr/pihpsdr and b/release/pihpsdr/pihpsdr differ
diff --git a/sliders.c b/sliders.c
index 3f7991e..03c0d09 100644
--- a/sliders.c
+++ b/sliders.c
@@ -157,10 +157,12 @@ void set_agc_gain(double value) {
 
 static void afgain_value_changed_cb(GtkWidget *widget, gpointer data) {
     volume=gtk_range_get_value(GTK_RANGE(af_gain_scale))/100.0;
+    SetRXAPanelGain1 (CHANNEL_RX0, volume);
 }
 
 void set_af_gain(double value) {
   volume=value;
+  SetRXAPanelGain1 (CHANNEL_RX0, volume);
   if(display_sliders) {
     gtk_range_set_value (GTK_RANGE(af_gain_scale),volume*100.0);
   } else {
@@ -193,10 +195,12 @@ 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))/100.0;
+    SetTXAPanelGain1(CHANNEL_TX,mic_gain);
 }
 
 void set_mic_gain(double value) {
   mic_gain=value;
+  SetTXAPanelGain1(CHANNEL_TX,mic_gain);
   if(display_sliders) {
     gtk_range_set_value (GTK_RANGE(mic_gain_scale),mic_gain*100.0);
   } else {
diff --git a/wdsp_init.c b/wdsp_init.c
index 77496b7..fa80c7d 100644
--- a/wdsp_init.c
+++ b/wdsp_init.c
@@ -101,17 +101,14 @@ static void calc_tx_buffer_size() {
 }
 
 void setRXMode(int rx,int m) {
-fprintf(stderr,"SetRXAMode: rx=%d mode=%d\n",rx,m);
   SetRXAMode(rx, m);
 }
 
 void setTXMode(int tx,int m) {
-fprintf(stderr,"SetTXAMode: tx=%d mode=%d\n",tx,m);
   SetTXAMode(tx, m);
 }
 
 void setMode(int m) {
-fprintf(stderr,"setMode: mode=%d m=%d\n",mode,m);
 int local_mode=m;
 #ifdef FREEDV
     if(mode!=modeFREEDV && m==modeFREEDV) {
@@ -131,9 +128,7 @@ int local_mode=m;
       show_waterfall();
     }
 #endif
-fprintf(stderr,"setMode: %d mode=%d\n",receiver,mode);
     setRXMode(receiver,local_mode);
-fprintf(stderr,"setMode: %d mode=%d\n",CHANNEL_TX,mode);
     setTXMode(CHANNEL_TX,local_mode);
     mode=m;
 }
@@ -143,7 +138,6 @@ int getMode() {
 }
 
 void setFilter(int low,int high) {
-fprintf(stderr,"setFilter: %d %d\n",low,high);
     if(mode==modeCWL) {
         filterLow=-cw_keyer_sidetone_frequency-low;
         filterHigh=-cw_keyer_sidetone_frequency+high;
@@ -155,12 +149,10 @@ fprintf(stderr,"setFilter: %d %d\n",low,high);
         filterHigh=high;
     }
 
-fprintf(stderr,"setFilter: filterLow=%d filterHigh=%d\n",filterLow,filterHigh);
 
     double fl=filterLow+ddsOffset;
     double fh=filterHigh+ddsOffset;
 
-fprintf(stderr,"setFilter: fl=%f fh=%f\n",fl,fh);
     RXANBPSetFreqs(receiver,(double)filterLow,(double)filterHigh);
     SetRXABandpassFreqs(receiver, fl,fh);
     SetRXASNBAOutputBandwidth(receiver, (double)filterLow, (double)filterHigh);
@@ -307,7 +299,7 @@ static void setupTX(int tx) {
     SetTXAPostGenToneFreq(tx, 0.0);
     SetTXAPostGenRun(tx, 0);
 
-    SetChannelState(tx,1,0);
+    //SetChannelState(tx,1,0);
 }
 
 void wdsp_init(int rx,int pixels,int protocol) {
@@ -343,7 +335,7 @@ void wdsp_init(int rx,int pixels,int protocol) {
                 dspRate,
                 outputRate,
                 0, // receive
-                1, // run
+                0, // run
                 0.010, 0.025, 0.0, 0.010, 0);
 
 
@@ -367,7 +359,7 @@ void wdsp_init(int rx,int pixels,int protocol) {
                 micDspRate,
                 micOutputRate,
                 1, // transmit
-                1, // run
+                0, // run
                 0.010, 0.025, 0.0, 0.010, 0);
 
     while (gtk_events_pending ())