- rx.anf.gen = new_lmsr(rx.buf.o, // CXB signal,
- 64, // int delay,
- 0.01, // REAL adaptation_rate,
- 0.00001, // REAL leakage,
- 45, // int adaptive_filter_size,
- LMADF_INTERFERENCE);
- rx.anf.flag = FALSE;
- rx.anr.gen = new_lmsr(rx.buf.o, // CXB signal,
- 64, // int delay,
- 0.01, // REAL adaptation_rate,
- 0.00001, // REAL leakage,
- 45, // int adaptive_filter_size,
- LMADF_NOISE);
- rx.anr.flag = FALSE;
-
- rx.nb.thresh = 3.3;
- rx.nb.gen = new_noiseblanker(rx.buf.i, rx.nb.thresh);
- rx.nb.flag = FALSE;
-
- rx.nb_sdrom.thresh = 2.5;
- rx.nb_sdrom.gen = new_noiseblanker(rx.buf.i, rx.nb_sdrom.thresh);
- rx.nb_sdrom.flag = FALSE;
-
- rx.spot.gen = newSpotToneGen(-12.0, // gain
- 700.0, // freq
- 5.0, // ms rise
- 5.0, // ms fall
- uni.buflen,
- uni.samplerate);
-
- rx.scl.pre.val = 1.0;
- rx.scl.pre.flag = FALSE;
- rx.scl.post.val = 1.0;
- rx.scl.post.flag = FALSE;
-
- memset((char *) &rx.squelch, 0, sizeof(rx.squelch));
- rx.squelch.thresh = -30.0;
- rx.squelch.power = 0.0;
- rx.squelch.flag = rx.squelch.running = rx.squelch.set = FALSE;
- rx.squelch.num = (int) (0.0395 * uni.samplerate + 0.5);
-
- rx.mode = uni.mode.sdr;
- rx.bin.flag = FALSE;
-
- rx.tick = 0;
+ rx[k].anf.gen = new_lmsr(rx[k].buf.o, // CXB signal,
+ 64, // int delay,
+ 0.01, // REAL adaptation_rate,
+ 0.00001, // REAL leakage,
+ 45, // int adaptive_filter_size,
+ LMADF_INTERFERENCE);
+ rx[k].anf.flag = FALSE;
+ rx[k].anr.gen = new_lmsr(rx[k].buf.o, // CXB signal,
+ 64, // int delay,
+ 0.01, // REAL adaptation_rate,
+ 0.00001, // REAL leakage,
+ 45, // int adaptive_filter_size,
+ LMADF_NOISE);
+ rx[k].anr.flag = FALSE;
+
+ rx[k].nb.thresh = 3.3;
+ rx[k].nb.gen = new_noiseblanker(rx[k].buf.i, rx[k].nb.thresh);
+ rx[k].nb.flag = FALSE;
+
+ rx[k].nb_sdrom.thresh = 2.5;
+ rx[k].nb_sdrom.gen = new_noiseblanker(rx[k].buf.i, rx[k].nb_sdrom.thresh);
+ rx[k].nb_sdrom.flag = FALSE;
+
+ rx[k].spot.gen = newSpotToneGen(-12.0, // gain
+ 700.0, // freq
+ 5.0, // ms rise
+ 5.0, // ms fall
+ uni.buflen,
+ uni.samplerate);
+
+ rx[k].scl.pre.val = 1.0;
+ rx[k].scl.pre.flag = FALSE;
+ rx[k].scl.post.val = 1.0;
+ rx[k].scl.post.flag = FALSE;
+
+ memset((char *) &rx[k].squelch, 0, sizeof(rx[k].squelch));
+ rx[k].squelch.thresh = -30.0;
+ rx[k].squelch.power = 0.0;
+ rx[k].squelch.flag = rx[k].squelch.running = rx[k].squelch.set = FALSE;
+ rx[k].squelch.num = (int) (0.0395 * uni.samplerate + 0.5);
+
+ rx[k].mode = uni.mode.sdr;
+ rx[k].bin.flag = FALSE;
+
+ {
+ 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));
+ }
+
+ rx[k].tick = 0;