]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
changed volume control and mic gain to use wdsp patchpanel. Added updated libwdsp.so.
authorJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Tue, 8 Nov 2016 22:49:08 +0000 (22:49 +0000)
committerJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Tue, 8 Nov 2016 22:49:08 +0000 (22:49 +0000)
12 files changed:
audio.c
main.c
menu.c
new_protocol.c
old_protocol.c
pihpsdr
property.c
release/pihpsdr.tar
release/pihpsdr/libwdsp.so
release/pihpsdr/pihpsdr
sliders.c
wdsp_init.c

diff --git a/audio.c b/audio.c
index 8e3c92fc7dcf9c14962ed73f5e0bbd4fdecf990d..3f3d4c62b8dfe0c47467c6e35ea232ade5fd66b6 100644 (file)
--- 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 6c95e0a38e7ac6efcb7d3d0f84d85425fee81474..8feeb93365f7d4a5b432f55e4e647fef45f52db2 100644 (file)
--- 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 c2f3f98468f26e6647c08a53cc381872e13491bd..05e24d396e3799afeb0df4667ae1da01a8581b14 100644 (file)
--- 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;
     }
   }
 }
index 804fc6c16367fddc3fcbb730d862f05efb6ca1e2..774a18c6225922378b2cc765e02308f425d1677d 100644 (file)
@@ -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++;
index e8600aac91a7d6631f252103f2bdddaf5d4a4315..42b394767bc89f344e674d5a35d9de0e08a83c4c 100644 (file)
@@ -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 e82f16ec61a63c0cc6aa034c06da880f9fcf5a72..579986a37f8e6bdb171307417688d83e58d9f2c4 100755 (executable)
Binary files a/pihpsdr and b/pihpsdr differ
index 8e3c60d38f57598f4dffdea9895f236f0c42e03e..ec4cea95a50a0f81ff0dc18b9540aa5905a73be0 100644 (file)
@@ -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);
index 2399c510ba4e14ecc81faca63793fc02c66876cb..c26fb8cdaec5ee143fb3342e8fd672d2b2fed586 100644 (file)
Binary files a/release/pihpsdr.tar and b/release/pihpsdr.tar differ
index 174eba4a22f245a5b702e75a8b59ad90bd62d67d..82abe267c0767e0caaa4b7938daf3aa702090b7e 100755 (executable)
Binary files a/release/pihpsdr/libwdsp.so and b/release/pihpsdr/libwdsp.so differ
index e82f16ec61a63c0cc6aa034c06da880f9fcf5a72..579986a37f8e6bdb171307417688d83e58d9f2c4 100755 (executable)
Binary files a/release/pihpsdr/pihpsdr and b/release/pihpsdr/pihpsdr differ
index 3f7991e976a6f8ec80c31c47ce25d7a060b29987..03c0d09de895f7c59fb4659f833fd72901596442 100644 (file)
--- 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 {
index 77496b737990fccb6921dd6901872a01c8d2e7d2..fa80c7d6494d7fad65d4d8b8fbc529d900fc48fa 100644 (file)
@@ -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 ())