From: John Melton - G0ORX/N6LYT Date: Sun, 24 Jul 2016 08:51:29 +0000 (+0000) Subject: Fixed sample rate change wdsp configuration X-Git-Url: https://git.rkrishnan.org/Site/copyable.html?a=commitdiff_plain;h=51985c635faf66583249e90330a6114f0b3cef80;p=pihpsdr.git Fixed sample rate change wdsp configuration --- diff --git a/menu.c b/menu.c index 43e5f5c..0259284 100644 --- a/menu.c +++ b/menu.c @@ -57,7 +57,7 @@ static void sample_rate_cb(GtkWidget *widget, gpointer data) { if(protocol==ORIGINAL_PROTOCOL) { old_protocol_new_sample_rate((int)data); } else { - sample_rate=(int)data; + new_protocol_new_sample_rate((int)data); } } diff --git a/new_protocol.c b/new_protocol.c index 9ef56e1..8c7533a 100644 --- a/new_protocol.c +++ b/new_protocol.c @@ -145,6 +145,7 @@ static int freedv_samples=0; static int freedv_resample=6; // convert from 48000 to 8000 #endif +static void new_protocol_high_priority(int run,int tx,int drive); static void* new_protocol_thread(void* arg); static void* new_protocol_timer_thread(void* arg); static void full_rx_buffer(); @@ -207,6 +208,14 @@ void new_protocol_init(int rx,int pixels) { } +void new_protocol_new_sample_rate(int rate) { + new_protocol_high_priority(0,0,0); + sample_rate=rate; + old_protocol_calc_buffers(); + wdsp_new_sample_rate(rate); + new_protocol_high_priority(1,0,drive); +} + static void new_protocol_general() { unsigned char buffer[60]; @@ -253,7 +262,7 @@ fprintf(stderr,"new_protocol_high_priority: run=%d tx=%d drive=%d\n", run, tx, d buffer[4]=run|(tx<<1); - long rxFrequency=ddsFrequency+(long long)rit; + long rxFrequency=ddsFrequency; if(mode==modeCWU) { rxFrequency-=cw_keyer_sidetone_frequency; } else if(mode==modeCWL) { diff --git a/old_protocol.c b/old_protocol.c index ae4b570..1484df4 100644 --- a/old_protocol.c +++ b/old_protocol.c @@ -240,6 +240,7 @@ void old_protocol_new_sample_rate(int rate) { metis_start_stop(0); sample_rate=rate; old_protocol_calc_buffers(); + wdsp_new_sample_rate(rate); metis_restart(); } diff --git a/pihpsdr b/pihpsdr index 39edd73..042ef46 100755 Binary files a/pihpsdr and b/pihpsdr differ diff --git a/release/pihpsdr.tar b/release/pihpsdr.tar index b7d7339..c5f4e7a 100644 Binary files a/release/pihpsdr.tar and b/release/pihpsdr.tar differ diff --git a/release/pihpsdr/pihpsdr b/release/pihpsdr/pihpsdr index a0fbcba..042ef46 100755 Binary files a/release/pihpsdr/pihpsdr and b/release/pihpsdr/pihpsdr differ diff --git a/wdsp_init.c b/wdsp_init.c index 6279a38..ae414d9 100644 --- a/wdsp_init.c +++ b/wdsp_init.c @@ -191,7 +191,6 @@ static void setupTX(int tx) { SetTXAPostGenRun(tx, 0); SetChannelState(tx,1,0); - SetChannelState(tx,1,0); } void wdsp_init(int rx,int pixels,int protocol) { @@ -248,7 +247,7 @@ void wdsp_init(int rx,int pixels,int protocol) { } fprintf(stderr,"OpenChannel %d buffer_size=%d fft_size=%d sample_rate=%d dspRate=%d outputRate=%d\n", CHANNEL_TX, - tx_buffer_size, + buffer_size, fft_size, sample_rate, //micSampleRate, micDspRate, @@ -296,6 +295,16 @@ void wdsp_init(int rx,int pixels,int protocol) { } +void wdsp_new_sample_rate(int rate) { + SetChannelState(CHANNEL_TX,0,0); + SetInputSamplerate(CHANNEL_TX,rate); + SetChannelState(CHANNEL_TX,1,0); + + SetChannelState(receiver,0,0); + SetInputSamplerate(receiver,rate); + SetChannelState(receiver,1,0); +} + static void initAnalyzer(int channel,int buffer_size) { int flp[] = {0}; double KEEP_TIME = 0.1; diff --git a/wdsp_init.h b/wdsp_init.h index 8032521..f19f871 100644 --- a/wdsp_init.h +++ b/wdsp_init.h @@ -25,3 +25,4 @@ extern void setFilter(int low,int high); extern int getFilterLow(); extern int getFilterHigh(); extern void wdsp_init(int rx,int pixels,int protocol); +extern void wdsp_new_sample_rate(int rate);