From e92587b5223e0ae61a2543f71c3615a6be34af11 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Hamal=20Dvo=C5=99=C3=A1k?= <mordae@anilinux.org>
Date: Fri, 23 Feb 2024 11:19:28 +0100
Subject: [PATCH] Remove DC bias

---
 src/main.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/main.c b/src/main.c
index 92694e1..f79084e 100644
--- a/src/main.c
+++ b/src/main.c
@@ -538,6 +538,8 @@ static void rf_rx(void)
 	uint32_t prev_transfers = dma_hw->ch[dma_ch_in_cos].transfer_count;
 	unsigned pos = 0;
 
+	int dcI = 0, dcQ = 0;
+
 	while (true) {
 		if (multicore_fifo_rvalid()) {
 			multicore_fifo_pop_blocking();
@@ -571,6 +573,12 @@ static void rf_rx(void)
 			int I = cos_neg - cos_pos;
 			int Q = sin_neg - sin_pos;
 
+			dcI = (dcI * 255 + I * 256) >> 8;
+			dcQ = (dcQ * 255 + Q * 256) >> 8;
+
+			I -= dcI >> 8;
+			Q -= dcQ >> 8;
+
 			*blockptr++ = I;
 			*blockptr++ = Q;
 		}