From: John Melton - G0ORX/N6LYT <john.d.melton@googlemail.com> Date: Wed, 30 Nov 2016 08:44:57 +0000 (+0000) Subject: updated tune drive level and mic gain levels X-Git-Url: https://git.rkrishnan.org/pf/content/something?a=commitdiff_plain;h=49d7655c3657c3709ff2bc8493ed7a62cb8dac78;p=pihpsdr.git updated tune drive level and mic gain levels --- diff --git a/audio.c b/audio.c index 86df47a..fc73794 100644 --- 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 8ff8fe6..57ad396 100644 --- 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 diff --git a/new_menu.c b/new_menu.c index defa9c4..3f66f7f 100644 --- a/new_menu.c +++ b/new_menu.c @@ -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; } diff --git a/old_protocol.c b/old_protocol.c index 07f9ac0..97c2889 100644 --- a/old_protocol.c +++ b/old_protocol.c @@ -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 264cc7c..48b88e9 100755 Binary files a/pihpsdr and b/pihpsdr differ diff --git a/radio.c b/radio.c index d3396ba..c5d5de5 100644 --- 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) {