From 99e3dfbf7fdcb2f4142fdcdac6c25d8d3b64ad9b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Hamal=20Dvo=C5=99=C3=A1k?= <mordae@anilinux.org>
Date: Sun, 3 Mar 2024 13:58:57 +0100
Subject: [PATCH] Do not print anything out of the RX core1 loop

---
 src/main.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

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