]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
More changes for SoapySDR transmit
authorJohn Melton G0ORX <john.d.melton@googlemail.com>
Sun, 6 Oct 2019 12:27:13 +0000 (13:27 +0100)
committerJohn Melton G0ORX <john.d.melton@googlemail.com>
Sun, 6 Oct 2019 12:27:13 +0000 (13:27 +0100)
i2c.c
radio.c
soapy_protocol.c
transmitter.c

diff --git a/i2c.c b/i2c.c
index 89417fbedba4c6c578e047fae765933891a18e6e..9b297c832afe35bde09dcdf214afef29a404a491 100644 (file)
--- 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 84acffdce7432a077b488db12a24a8c46734b377..81dbe640033e0aa33c0d216e12f204aa3eeacbf2 100644 (file)
--- 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;i<radio->info.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
index 88953116475c5eb053202392f7a99a76f3464b6c..1104bb817ec738300c64737712bfe2facd7990e3 100644 (file)
@@ -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));
     }
index 00b5cb0fd3f673a2a569060fe8e45f1e0448ec90..ed212f2f55d0e2f8ba4c60171124e39924e14680 100644 (file)
@@ -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;