Do not print anything out of the RX core1 loop

This commit is contained in:
Jan Hamal Dvořák 2024-03-03 13:58:57 +01:00
parent 091379cffb
commit 99e3dfbf7f

View file

@ -703,9 +703,7 @@ static void rf_rx(void)
*blockptr++ = dQ / agc_div; *blockptr++ = dQ / agc_div;
} }
if (!queue_try_add(&iq_queue, block)) { (void)queue_try_add(&iq_queue, block);
puts("queue overflow");
}
} }
} }
@ -804,18 +802,21 @@ static void do_rx(int rx_pin, int bias_pin, float freq, char mode)
if ('\r' == c) if ('\r' == c)
break; break;
bool overflow = queue_is_full(&iq_queue);
if (queue_try_remove(&iq_queue, block)) { if (queue_try_remove(&iq_queue, block)) {
if ('b' == mode) { if ('b' == mode) {
fwrite(block, sizeof block, 1, stdout); fwrite(block, sizeof block, 1, stdout);
fflush(stdout); fflush(stdout);
} else { } else {
float rssi = /* Because AGC is kept 1 bit below to accomodate for jitter. */
10.0f * log10f(powf((float)agc / (float)INT_MAX * 2, 2)); float agc_frac = 2.0f * (float)agc / (float)INT_MAX;
float rssi = 10.0f * log10f(powf(agc_frac, 2));
for (int i = 0; i < IQ_BLOCK_LEN / 2; i += 8) { for (int i = 0; i < IQ_BLOCK_LEN / 2; i += 2) {
int I = block[i * 2]; int I = block[i];
int Q = block[i * 2 + 1]; int Q = block[i + 1];
printf("%+4i | %+5.1f dBm | %+4i %+4i | ", printf("%i %+4i | %+5.1f dBm | %+4i %+4i | ", overflow,
RX_WORDS / 2 + gap, rssi, I, Q); RX_WORDS / 2 + gap, rssi, I, Q);
plot_IQ(I, Q); plot_IQ(I, Q);
putchar('\n'); putchar('\n');