]> git.rkrishnan.org Git - dttsp.git/commitdiff
added on/off switching for aux input port mix
authordttsp <dttsp>
Mon, 2 May 2005 12:50:41 +0000 (12:50 +0000)
committerdttsp <dttsp>
Mon, 2 May 2005 12:50:41 +0000 (12:50 +0000)
jDttSP/sdr.c
jDttSP/sdrexport.h
jDttSP/update.c

index 8201b9de806de92efb12b45309c4079d56f5b4cc..b3b2818c0e79568117d033abb545c2fdba6683d5 100644 (file)
@@ -76,7 +76,8 @@ setup_all(void) {
   uni.multirx.lis = 0;
   uni.multirx.nrx = loc.def.nrx;
 
-  uni.mix.rx = uni.mix.tx = 1.0;
+  uni.mix.rx.flag = uni.mix.tx.flag = FALSE;
+  uni.mix.rx.gain = uni.mix.tx.gain = 1.0;
 
   uni.tick = 0;
 }
@@ -739,17 +740,19 @@ process_samples(float *bufl, float *bufr,
        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;
+    if (uni.mix.rx.flag)
+      for (i = 0; i < n; i++)
+       bufl[i] += auxl[i] * uni.mix.rx.gain,
+       bufr[i] += auxr[i] * uni.mix.rx.gain;
 
     break;
 
   case TX:
 
-    for (i = 0; i < n; i++)
-      bufl[i] += auxl[i] * uni.mix.tx,
-      bufr[i] += auxr[i] * uni.mix.tx;
+    if (uni.mix.tx.flag)
+      for (i = 0; i < n; i++)
+       bufl[i] += auxl[i] * uni.mix.tx.gain,
+       bufr[i] += auxr[i] * uni.mix.tx.gain;
 
     for (i = 0; i < n; i++)
       CXBimag(tx.buf.i, i) = bufl[i], CXBreal(tx.buf.i, i) = bufr[i];
index 477f112053dde6628ca38475f395f0533d6c28e6..9900339a820167a28e930039c578c64528746fc7 100644 (file)
@@ -102,7 +102,10 @@ extern struct _uni {
   } multirx;
 
   struct {
-    REAL rx, tx;
+    struct {
+      BOOLEAN flag;
+      REAL gain;
+    } rx, tx;
   } mix;
 
   long tick;
index 5962cb1fe77bf81f0bdafa47aada76dca0bc88bc..4552cd29e1bc1d80fc6d41557d28a7e9daeaef4d 100644 (file)
@@ -744,20 +744,39 @@ setRXPan(int n, char **p) {
 }
 
 PRIVATE int
-setAuxMix(int n, char **p) {
+setAuxMixSt(int n, char **p) {
   if (n < 1) {
-    uni.mix.rx = uni.mix.tx = 1.0;
+    uni.mix.rx.flag = uni.mix.tx.flag = FALSE;
+    return 0;
+  } else {
+    BOOLEAN flag = atoi(p[0]);
+    if (n > 1) {
+      switch (atoi(p[1])) {
+      case TX: uni.mix.tx.flag = flag; break;
+      case RX:
+      default: uni.mix.rx.flag = flag; break;
+      }
+    } else
+      uni.mix.rx.flag = uni.mix.tx.flag = flag;
+    return 0;
+  }
+}
+
+PRIVATE int
+setAuxMixGain(int n, char **p) {
+  if (n < 1) {
+    uni.mix.rx.gain = uni.mix.tx.gain = 1.0;
     return 0;
   } else {
     REAL gain = dB2lin(atof(p[0]));
     if (n > 1) {
       switch (atoi(p[1])) {
-      case TX: uni.mix.tx = gain; break;
+      case TX: uni.mix.tx.gain = gain; break;
       case RX:
-      default: uni.mix.rx = gain; break;
+      default: uni.mix.rx.gain = gain; break;
       }
     } else
-      uni.mix.rx = uni.mix.tx = gain;
+      uni.mix.rx.gain = uni.mix.tx.gain = gain;
     return 0;
   }
 }
@@ -819,7 +838,8 @@ CTE update_cmds[] = {
   {"setRXOn", setRXOn},
   {"setRXOff", setRXOff},
   {"setRXPan", setRXPan},
-  {"setAuxMix", setAuxMix},
+  {"setAuxMixSt", setAuxMixSt},
+  {"setAuxMixGain", setAuxMixGain},
   { 0, 0 }
 };