From a91e80966bb85ed2c9b3ef30f19e93723c702f88 Mon Sep 17 00:00:00 2001 From: Zilog80 Date: Mon, 7 Feb 2022 12:04:13 +0100 Subject: [PATCH] dfm09mod: check delta(diff(cnt,sec)) and manchester/polarity-change --- demod/mod/dfm09mod.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/demod/mod/dfm09mod.c b/demod/mod/dfm09mod.c index 9ffd667..5054c59 100644 --- a/demod/mod/dfm09mod.c +++ b/demod/mod/dfm09mod.c @@ -122,6 +122,7 @@ typedef struct { int jsn_freq; // freq/kHz (SDR) gpsdat_t gps; int prev_cntsec_diff; + int prev_manpol; } gpx_t; @@ -813,12 +814,14 @@ static void print_gpx(gpx_t *gpx) { if (cntsec_diff < 0) cntsec_diff += 256; // DFM06: cntsec_diff might drift slowly (30sec sync), but recovers faster // DFM09: delta(diff)=1 could indicate decoding error - if (gpx->option.jsn && cntsec_diff != gpx->prev_cntsec_diff) { // only ecc-valid/json diffs ? + if (gpx->option.jsn && (cntsec_diff != gpx->prev_cntsec_diff || gpx->option.inv != gpx->prev_manpol)) { + // initial state not relevant jsonout = 0; gpx->sonde_typ = 0; reset_cfgchk(gpx); } gpx->prev_cntsec_diff = cntsec_diff; + gpx->prev_manpol = gpx->option.inv; } }