]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
old protocol mic gain fixed
authorJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Wed, 30 Nov 2016 15:08:29 +0000 (15:08 +0000)
committerJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Wed, 30 Nov 2016 15:08:29 +0000 (15:08 +0000)
new_protocol.c
old_protocol.c
pihpsdr
sliders.c

index 94797450cc47e060d9a6840574af252932fe2275..611722a73b6e3076133048a1ddd263bc2f274ed4 100644 (file)
@@ -1135,35 +1135,33 @@ static void full_tx_buffer() {
 
 void new_protocol_process_local_mic(unsigned char *buffer,int le) {
     int b;
-    int leftmicsample;
-    int rightmicsample;
-    double leftmicsampledouble;
-    double rightmicsampledouble;
+    int micsample;
+    double micsampledouble;
+    double gain=pow(10.0, mic_gain / 20.0);
 
 //    if(isTransmitting()) {
         b=0;
         int i,j,s;
         for(i=0;i<MIC_SAMPLES;i++) {
             if(le) {
-              leftmicsample  = (int)((unsigned char)buffer[b++] & 0xFF);
-              leftmicsample  |= (int)((signed char) buffer[b++]) << 8;
-              rightmicsample=leftmicsample;
+              micsample  = (int)((unsigned char)buffer[b++] & 0xFF);
+              micsample  |= (int)((signed char) buffer[b++]) << 8;
             } else {
-              leftmicsample  = (int)((signed char) buffer[b++]) << 8;
-              leftmicsample  |= (int)((unsigned char)buffer[b++] & 0xFF);
-              rightmicsample=leftmicsample;
+              micsample  = (int)((signed char) buffer[b++]) << 8;
+              micsample  |= (int)((unsigned char)buffer[b++] & 0xFF);
             }
+            micsampledouble=(1.0 / 2147483648.0) * (double)(micsample<<16);
 #ifdef FREEDV
             if(mode==modeFREEDV && isTransmitting()) {
                 if(freedv_samples==0) { // 48K to 8K
-                    int modem_samples=mod_sample_freedv(leftmicsample);
+                    int modem_samples=mod_sample_freedv(micsample*gain);
                     if(modem_samples!=0) {
                       for(s=0;s<modem_samples;s++) {
                         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;
-                          micinputbuffer[(micsamples*2)+1]=leftmicsampledouble;
+                          micsample=mod_out[s];
+                          micsampledouble=(1.0 / 2147483648.0) * (double)(micsample<<16);
+                          micinputbuffer[micsamples*2]=micsampledouble;
+                          micinputbuffer[(micsamples*2)+1]=micsampledouble;
                           micsamples++;
                           if(micsamples==BUFFER_SIZE) {
                             full_tx_buffer();
@@ -1179,14 +1177,12 @@ void new_protocol_process_local_mic(unsigned char *buffer,int le) {
                }
             } else {
 #endif
-               leftmicsampledouble = (double)leftmicsample/32767.0; // 16 bit sample
-               rightmicsampledouble = (double)rightmicsample/32767.0; // 16 bit sample
                if(mode==modeCWL || mode==modeCWU || tune || !isTransmitting()) {
                    micinputbuffer[micsamples*2]=0.0;
                    micinputbuffer[(micsamples*2)+1]=0.0;
                } else {
-                   micinputbuffer[micsamples*2]=leftmicsampledouble;
-                   micinputbuffer[(micsamples*2)+1]=rightmicsampledouble;
+                   micinputbuffer[micsamples*2]=micsampledouble;
+                   micinputbuffer[(micsamples*2)+1]=micsampledouble;
                }
 
                micsamples++;
index 20526d284eecfa053c81eaece555ee03ea33a228..4ec91a41a38350088c2e71ea853487591456370d 100644 (file)
@@ -514,7 +514,7 @@ static void process_ozy_input_buffer(char  *buffer) {
         }
 #endif
       } else {
-        //if(!isTransmitting()) {
+        if(!isTransmitting()) {
           micinputbuffer[samples*2]=0.0;
           micinputbuffer[(samples*2)+1]=0.0;
           iqinputbuffer[0][samples*2]=left_sample_double[0];
@@ -524,7 +524,7 @@ static void process_ozy_input_buffer(char  *buffer) {
             full_rx_buffer();
             samples=0;
           }
-        //}
+        }
       }
     }
   } else {
@@ -949,7 +949,6 @@ void ozy_send_buffer() {
         } else {
           power=drive_level;
         }
-fprintf(stderr,"power=%d\n",power);
       }
 
       output_buffer[C0]=0x12;
diff --git a/pihpsdr b/pihpsdr
index 2650e59ab20bc160e628f68fdabe946a0883feaf..ea0bba895ee3ced7c8c0be1284e23968bae40866 100755 (executable)
Binary files a/pihpsdr and b/pihpsdr differ
index 52bbc4989da5650118d8ee30686d61757fca6303..95f46aee8522ead76c32c85de20a79161b7ab48d 100644 (file)
--- a/sliders.c
+++ b/sliders.c
@@ -202,17 +202,13 @@ 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);
-    if(protocol==NEW_PROTOCOL) {
-      SetTXAPanelGain1(CHANNEL_TX,gain);
-    }
+    SetTXAPanelGain1(CHANNEL_TX,gain);
 }
 
 void set_mic_gain(double value) {
   mic_gain=value;
   double gain=pow(10.0, mic_gain / 20.0);
-  if(protocol==NEW_PROTOCOL) {
-    SetTXAPanelGain1(CHANNEL_TX,gain);
-  }
+  SetTXAPanelGain1(CHANNEL_TX,gain);
   if(display_sliders) {
     gtk_range_set_value (GTK_RANGE(mic_gain_scale),mic_gain);
   } else {