]> git.rkrishnan.org Git - dttsp.git/blobdiff - jDttSP/sdr.c
Minor fix to keyb, added hash function to banal.h, added aux input ports with settabl...
[dttsp.git] / jDttSP / sdr.c
index d500676afe07ad0f9e29560ad1121c5849e5470a..8201b9de806de92efb12b45309c4079d56f5b4cc 100644 (file)
@@ -75,6 +75,9 @@ setup_all(void) {
 
   uni.multirx.lis = 0;
   uni.multirx.nrx = loc.def.nrx;
+
+  uni.mix.rx = uni.mix.tx = 1.0;
+
   uni.tick = 0;
 }
 
@@ -205,6 +208,7 @@ setup_rx(int k) {
     REAL pos = 0.5, // 0 <= pos <= 1, left->right
          theta = (1.0 - pos) * M_PI / 2.0;
     rx[k].azim = Cmplx(cos(theta), sin(theta));
+    fprintf(stderr, "azim %f %f\n", rx[k].azim.re, rx[k].azim.im);
   }
 
   rx[k].tick = 0;
@@ -703,7 +707,9 @@ do_tx(void) {
    come here when there are buffers to work on */
 
 void
-process_samples(float *bufl, float *bufr, int n) {
+process_samples(float *bufl, float *bufr,
+               float *auxl, float *auxr,
+               int n) {
   int i, k;
 
   switch (uni.mode.trx) {
@@ -733,16 +739,28 @@ process_samples(float *bufl, float *bufr, int n) {
        CXBhave(rx[k].buf.o) = n;
       }
 
+    for (i = 0; i < n; i++)
+      bufl[i] += auxl[i] * uni.mix.rx,
+      bufr[i] += auxr[i] * uni.mix.rx;
+
     break;
 
   case TX:
+
+    for (i = 0; i < n; i++)
+      bufl[i] += auxl[i] * uni.mix.tx,
+      bufr[i] += auxr[i] * uni.mix.tx;
+
     for (i = 0; i < n; i++)
       CXBimag(tx.buf.i, i) = bufl[i], CXBreal(tx.buf.i, i) = bufr[i];
     CXBhave(tx.buf.i) = n;
+
     do_tx(), tx.tick++;
+
     for (i = 0; i < n; i++)
       bufl[i] = (float) CXBimag(tx.buf.o, i), bufr[i] = (float) CXBreal(tx.buf.o, i);
     CXBhave(tx.buf.o) = n;
+
     break;
   }