From: John Melton G0ORX Date: Sun, 6 Oct 2019 12:27:13 +0000 (+0100) Subject: More changes for SoapySDR transmit X-Git-Url: https://git.rkrishnan.org/pf/content/en/seg/(%5B%5E?a=commitdiff_plain;h=52832edf55447260979e616948fc614099b45252;p=pihpsdr.git More changes for SoapySDR transmit --- diff --git a/i2c.c b/i2c.c index 89417fb..9b297c8 100644 --- a/i2c.c +++ b/i2c.c @@ -127,7 +127,7 @@ void i2c_interrupt() { flags=read_word_data(ADDRESS_1,0x0E); if(flags) { ints=read_word_data(ADDRESS_1,0x10); -g_print("i1c_interrupt: flags=%04X ints=%04X\n",flags,ints); +//g_print("i2c_interrupt: flags=%04X ints=%04X\n",flags,ints); if(ints) { int i=-1; switch(ints) { @@ -180,7 +180,7 @@ g_print("i1c_interrupt: flags=%04X ints=%04X\n",flags,ints); i=SW17; break; } -g_print("i1c_interrupt: sw=%d action=%d\n",i,sw_action[i]); +//g_print("i1c_interrupt: sw=%d action=%d\n",i,sw_action[i]); switch(sw_action[i]) { case TUNE: { diff --git a/radio.c b/radio.c index 84acffd..81dbe64 100644 --- a/radio.c +++ b/radio.c @@ -885,7 +885,9 @@ void start_radio() { if(protocol==SOAPYSDR_PROTOCOL) { RECEIVER *rx=receiver[0]; soapy_protocol_create_receiver(rx); - + if(transmitter!=NULL) { + soapy_protocol_create_transmitter(transmitter); + } soapy_protocol_set_rx_antenna(rx,adc[0].antenna); for(int i=0;iinfo.soapy.rx_gains;i++) { @@ -1062,7 +1064,12 @@ void setMox(int state) { #ifdef SOAPYSDR case SOAPYSDR_PROTOCOL: if(transmitter!=NULL) { - soapy_protocol_set_tx_frequency(transmitter); + if(mox) { + soapy_protocol_set_tx_frequency(transmitter); + soapy_protocol_start_transmitter(transmitter); + } else { + soapy_protocol_stop_transmitter(transmitter); + } } break; #endif diff --git a/soapy_protocol.c b/soapy_protocol.c index 8895311..1104bb8 100644 --- a/soapy_protocol.c +++ b/soapy_protocol.c @@ -163,12 +163,12 @@ void soapy_protocol_create_transmitter(TRANSMITTER *tx) { soapy_tx_sample_rate=tx->iq_output_rate; fprintf(stderr,"soapy_protocol_create_transmitter: setting samplerate=%f\n",(double)soapy_tx_sample_rate); - rc=SoapySDRDevice_setSampleRate(soapy_device,SOAPY_SDR_TX,8,(double)soapy_tx_sample_rate); + rc=SoapySDRDevice_setSampleRate(soapy_device,SOAPY_SDR_TX,tx->dac,(double)soapy_tx_sample_rate); if(rc!=0) { fprintf(stderr,"soapy_protocol_configure_transmitter: SoapySDRDevice_setSampleRate(%f) failed: %s\n",(double)soapy_tx_sample_rate,SoapySDR_errToStr(rc)); } - size_t channel=0; + size_t channel=tx->dac; fprintf(stderr,"soapy_protocol_create_transmitter: SoapySDRDevice_setupStream: channel=%ld\n",channel); #if defined(SOAPY_SDR_API_VERSION) && (SOAPY_SDR_API_VERSION < 0x00080000) rc=SoapySDRDevice_setupStream(soapy_device,&tx_stream,SOAPY_SDR_TX,SOAPY_SDR_CF32,&channel,1,NULL); @@ -428,7 +428,7 @@ void soapy_protocol_set_tx_frequency(TRANSMITTER *tx) { f=(double)(vfo[v].frequency-vfo[v].lo_tx); } g_print("soapy_protocol_set_tx_frequency: %f\n",f); - rc=SoapySDRDevice_setFrequency(soapy_device,SOAPY_SDR_TX,active_receiver->adc,f,NULL); + rc=SoapySDRDevice_setFrequency(soapy_device,SOAPY_SDR_TX,tx->dac,f,NULL); if(rc!=0) { fprintf(stderr,"soapy_protocol: SoapySDRDevice_setFrequency(TX) failed: %s\n",SoapySDR_errToStr(rc)); } @@ -450,7 +450,7 @@ void soapy_protocol_set_tx_antenna(TRANSMITTER *tx,int ant) { int rc; if(soapy_device!=NULL) { // fprintf(stderr,"soapy_protocol: set_tx_antenna: %s\n",radio->info.soapy.tx_antenna[ant]); - rc=SoapySDRDevice_setAntenna(soapy_device,SOAPY_SDR_TX,active_receiver->adc,radio->info.soapy.tx_antenna[ant]); + rc=SoapySDRDevice_setAntenna(soapy_device,SOAPY_SDR_TX,tx->dac,radio->info.soapy.tx_antenna[ant]); if(rc!=0) { fprintf(stderr,"soapy_protocol: SoapySDRDevice_setAntenna TX failed: %s\n",SoapySDR_errToStr(rc)); } diff --git a/transmitter.c b/transmitter.c index 00b5cb0..ed212f2 100644 --- a/transmitter.c +++ b/transmitter.c @@ -549,6 +549,7 @@ TRANSMITTER *create_transmitter(int id, int buffer_size, int fft_size, int fps, TRANSMITTER *tx=malloc(sizeof(TRANSMITTER)); tx->id=id; + tx->dac=0; tx->buffer_size=buffer_size; tx->fft_size=fft_size; tx->fps=fps;