]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
updated tune drive level and mic gain levels
authorJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Wed, 30 Nov 2016 08:44:57 +0000 (08:44 +0000)
committerJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Wed, 30 Nov 2016 08:44:57 +0000 (08:44 +0000)
audio.c
audio.h
new_menu.c
old_protocol.c
pihpsdr
radio.c

diff --git a/audio.c b/audio.c
index 86df47ab7e0027cf2e33aa9839f9b75d2f21a9df..fc73794a9e9f2c39b2b84f0e3ea77db75bc11787 100644 (file)
--- a/audio.c
+++ b/audio.c
@@ -408,54 +408,3 @@ fprintf(stderr,"output_device: %s\n",device_id);
 
   }
 }
-/*
-int audio_get_mic_level() {
-  fprintf(stderr,"audio_get_mic_level\n");
-  if(local_microphone==0) {
-    fprintf(stderr,"local microphone not enabled\n");
-    return -1;
-  }
-  if(n_selected_input_device<0 || n_selected_input_device>=n_input_devices) {
-    fprintf(stderr,"no imput device selected\n");
-    return -1;
-  }
-
-  long db;
-
-  int i;
-  char hw[16];
-  char *selected=input_devices[n_selected_input_device];
-  fprintf(stderr,"audio_get_mic_level: selected=%d:%s\n",n_selected_input_device,selected);
-
-  i=0;
-  while(selected[i]!=' ') {
-    hw[i]=selected[i];
-    i++;
-  }
-  hw[i]='\0';
-  fprintf(stderr,"audio_get_mic_level: hw=%s\n",hw);
-
-  snd_mixer_t* handle;
-  snd_mixer_selem_id_t* sid;
-  const char *selem_name="Mic";
-
-  snd_mixer_open(&handle, 0);
-  snd_mixer_attach(handle, hw);
-  snd_mixer_selem_register(handle, NULL, NULL);
-  snd_mixer_load(handle);
-
-  snd_mixer_selem_id_alloca(&sid);
-  snd_mixer_selem_id_set_index(sid, 0);
-  snd_mixer_selem_id_set_name(sid, selem_name);
-  snd_mixer_elem_t* elem = snd_mixer_find_selem(handle, sid);
-
-  //snd_mixer_selem_get_capture_volume_range(elem, &min, &max);
-  snd_mixer_selem_get_capture_dB(elem,0,&db);
-
-  fprintf(stderr,"audio_get_mic_level: %ld dB\n",db);
-  snd_mixer_close(handle);
-
-
-  return 0;
-}
-*/
diff --git a/audio.h b/audio.h
index 8ff8fe643919b7623be8e6dcd1929933346604e8..57ad396cab1ea4a53fefa87700381d010df55a4a 100644 (file)
--- a/audio.h
+++ b/audio.h
@@ -34,7 +34,4 @@ extern void audio_close_output();
 extern void audio_close_input();
 extern int audio_write(short left_sample,short right_sample);
 extern void audio_get_cards();
-/*
-extern int audio_get_mic_level();
-*/
 #endif
index defa9c4de0a8b0a2a229f1d0714ba7f96beb5f7f..3f66f7f1d8c98abe602dac88311164f1131369f9 100644 (file)
@@ -143,7 +143,7 @@ static gboolean equalizer_cb (GtkWidget *widget, GdkEventButton *event, gpointer
 
 static gboolean test_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
 fprintf(stderr,"test_cb\n");
-  audio_get_mic_level();
+  // some test code
   return TRUE;
 }
 
index 07f9ac01bfd4e4fb2916b9aeed0af09b52d2c23f..97c2889aee7dd56afa903e8fb224779192cab3f8 100644 (file)
@@ -376,7 +376,7 @@ static void process_ozy_input_buffer(char  *buffer) {
   int last_dash;
   int left_sample[RECEIVERS];
   int right_sample[RECEIVERS];
-  int mic_sample;
+  short mic_sample;
   double left_sample_double[RECEIVERS];
   double right_sample_double[RECEIVERS];
   double mic_sample_double;
@@ -455,14 +455,14 @@ static void process_ozy_input_buffer(char  *buffer) {
         right_sample[r] += (int)((unsigned char)buffer[b++]) << 8;
         right_sample[r] += (int)((unsigned char)buffer[b++]);
       }
-      mic_sample    = (int)((signed char) buffer[b++]) << 8;
-      mic_sample   += (int)((unsigned char)buffer[b++]);
+      mic_sample    = (short)((signed char) buffer[b++]) << 16;
+      mic_sample   |= (short)((unsigned char)buffer[b++]);
+      mic_sample_double = (1.0 / 2147483648.0) * (double)(mic_sample<<16);
 
       for(r=0;r<RECEIVERS;r++) {
         left_sample_double[r]=(double)left_sample[r]/8388607.0; // 24 bit sample 2^23-1
         right_sample_double[r]=(double)right_sample[r]/8388607.0; // 24 bit sample 2^23-1
       }
-      mic_sample_double = (1.0 / 2147483648.0) * (double)(mic_sample<<16);
 
       // add to buffer
       if(isTransmitting() && !local_microphone) {
@@ -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];
@@ -522,9 +522,10 @@ static void process_ozy_input_buffer(char  *buffer) {
           samples++;
           if(samples==buffer_size) {
             full_rx_buffer();
+            full_tx_buffer();
             samples=0;
           }
-        }
+        //}
       }
     }
   } else {
@@ -632,7 +633,7 @@ static void full_rx_buffer() {
   int error;
 
   fexchange0(CHANNEL_RX0, iqinputbuffer[0], audiooutputbuffer, &error);
-  fexchange0(CHANNEL_TX, micinputbuffer, iqoutputbuffer, &error);
+  //fexchange0(CHANNEL_TX, micinputbuffer, iqoutputbuffer, &error);
 
 #ifdef PSK
   if(mode!=modePSK) {
@@ -693,8 +694,8 @@ static void full_tx_buffer() {
 
 void old_protocol_process_local_mic(unsigned char *buffer,int le) {
   int b;
-  int micsample;
-  double micsampledouble;
+  int mic_sample;
+  double mic_sample_double;
   double gain=pow(10.0, mic_gain / 20.0);
 
   if(isTransmitting()) {
@@ -702,24 +703,24 @@ void old_protocol_process_local_mic(unsigned char *buffer,int le) {
     int i,j,s;
     for(i=0;i<720;i++) {
       if(le) {
-        micsample  = (int)((unsigned char)buffer[b++] & 0xFF);
-        micsample  |= (int)((signed char) buffer[b++]) << 8;
+        mic_sample  = (int)((unsigned char)buffer[b++] & 0xFF);
+        mic_sample  |= (int)((signed char) buffer[b++]) << 8;
       } else {
-        micsample  = (int)((signed char) buffer[b++]) << 8;
-        micsample  |= (int)((unsigned char)buffer[b++] & 0xFF);
+        mic_sample  = (int)((signed char) buffer[b++]) << 8;
+        mic_sample  |= (int)((unsigned char)buffer[b++] & 0xFF);
       }
-      micsampledouble=(1.0 / 2147483648.0) * (double)(micsample<<16);
+      mic_sample_double=(1.0 / 2147483648.0) * (double)(mic_sample<<16);
 #ifdef FREEDV
       if(mode==modeFREEDV && !tune) {
         if(freedv_samples==0) { // 48K to 8K
-          int modem_samples=mod_sample_freedv(micsample*gain);
+          int modem_samples=mod_sample_freedv(mic_sample*gain);
           if(modem_samples!=0) {
             for(s=0;s<modem_samples;s++) {
               for(j=0;j<freedv_divisor;j++) {  // 8K to 48K
-                micsample=mod_out[s];
-                micsampledouble = (1.0 / 2147483648.0) * (double)(micsample<<16);
-                micinputbuffer[samples*2]=micsampledouble;
-                micinputbuffer[(samples*2)+1]=micsampledouble;
+                mic_sample=mod_out[s];
+                mic_sample_double = (1.0 / 2147483648.0) * (double)(mic_sample<<16);
+                micinputbuffer[samples*2]=mic_sample_double;
+                micinputbuffer[(samples*2)+1]=mic_sample_double;
                 iqinputbuffer[0][samples*2]=0.0;
                 iqinputbuffer[0][(samples*2)+1]=0.0;
                 samples++;
@@ -741,8 +742,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]=micsampledouble*gain;
-           micinputbuffer[(samples*2)+1]=micsampledouble*gain;
+           micinputbuffer[samples*2]=mic_sample_double;
+           micinputbuffer[(samples*2)+1]=mic_sample_double;
          }
          iqinputbuffer[0][samples*2]=0.0;
          iqinputbuffer[0][(samples*2)+1]=0.0;
diff --git a/pihpsdr b/pihpsdr
index 264cc7c97a510c0dfcfcefbba16a9b9b5efe642a..48b88e9bd80e842984880d713ec37a8ee5cc4817 100755 (executable)
Binary files a/pihpsdr and b/pihpsdr differ
diff --git a/radio.c b/radio.c
index d3396baf9b1996bd832010302e3bd33b8f4905b3..c5d5de56482dc67068f5aa6cc5a75e978e7441d7 100644 (file)
--- a/radio.c
+++ b/radio.c
@@ -310,7 +310,7 @@ void setTune(int state) {
       } else {
         SetTXAPostGenToneFreq(CHANNEL_TX,(double)cw_keyer_sidetone_frequency);
       }
-      SetTXAPostGenToneMag(CHANNEL_TX,0.3);
+      SetTXAPostGenToneMag(CHANNEL_TX,0.99999);
       SetTXAPostGenRun(CHANNEL_TX,1);
       SetChannelState(CHANNEL_TX,1,0);
     } else {
@@ -420,14 +420,14 @@ static int calcLevel(double d) {
 
 void calcDriveLevel() {
     drive_level=calcLevel(drive);
+    if(mox && protocol==NEW_PROTOCOL) {
+      schedule_high_priority(6);
+    }
 }
 
 void setDrive(double value) {
     drive=value;
     calcDriveLevel();
-    if(protocol==NEW_PROTOCOL) {
-      schedule_high_priority(6);
-    }
 }
 
 double getTuneDrive() {
@@ -436,15 +436,14 @@ double getTuneDrive() {
 
 void calcTuneDriveLevel() {
     tune_drive_level=calcLevel(tune_drive);
+    if(tune  && protocol==NEW_PROTOCOL) {
+      schedule_high_priority(7);
+    }
 }
 
 void setTuneDrive(double value) {
     tune_drive=value;
-
     calcTuneDriveLevel();
-    if(protocol==NEW_PROTOCOL) {
-      schedule_high_priority(7);
-    }
 }
 
 void set_attenuation(int value) {