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 ())