From 9f28d2f69ac9564fad266f25dc80545956a205d5 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Wed, 7 Feb 2018 21:02:07 +0000 Subject: [PATCH 1/2] Small cleanup. --- IO.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/IO.cpp b/IO.cpp index 779dafa..c9bb583 100644 --- a/IO.cpp +++ b/IO.cpp @@ -323,10 +323,10 @@ void CIO::process() } if (m_p25Enable) { - q15_t C4FSKVals[RX_BLOCK_SIZE]; - ::arm_fir_fast_q15(&m_boxcarFilter, dcSamples, C4FSKVals, RX_BLOCK_SIZE); + q15_t P25Vals[RX_BLOCK_SIZE]; + ::arm_fir_fast_q15(&m_boxcarFilter, dcSamples, P25Vals, RX_BLOCK_SIZE); - p25RX.samples(C4FSKVals, rssi, RX_BLOCK_SIZE); + p25RX.samples(P25Vals, rssi, RX_BLOCK_SIZE); } if (m_nxdnEnable) { From 1d4bd4e40965e31411f70d5980317766bdcca8ca Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Thu, 8 Feb 2018 18:40:23 +0000 Subject: [PATCH 2/2] Make NXDN sync detection more lenient when receiving a transmission. --- NXDNRX.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/NXDNRX.cpp b/NXDNRX.cpp index eab67dd..e9bd41b 100644 --- a/NXDNRX.cpp +++ b/NXDNRX.cpp @@ -23,9 +23,10 @@ const q15_t SCALING_FACTOR = 18750; // Q15(0.55) -const uint8_t MAX_FSW_BIT_ERRS = 1U; +const uint8_t MAX_FSW_BIT_START_ERRS = 1U; +const uint8_t MAX_FSW_BIT_RUN_ERRS = 3U; -const uint8_t MAX_FSW_SYMBOLS_ERRS = 1U; +const uint8_t MAX_FSW_SYMBOLS_ERRS = 2U; const uint8_t BIT_MASK_TABLE[] = {0x80U, 0x40U, 0x20U, 0x10U, 0x08U, 0x04U, 0x02U, 0x01U}; @@ -255,11 +256,17 @@ bool CNXDNRX::correlateFSW() uint8_t sync[NXDN_FSW_BYTES_LENGTH]; samplesToBits(startPtr, NXDN_FSW_LENGTH_SYMBOLS, sync, 0U, m_centreVal, m_thresholdVal); - uint8_t errs = 0U; + uint8_t maxErrs; + if (m_state == NXDNRXS_NONE) + maxErrs = MAX_FSW_BIT_START_ERRS; + else + maxErrs = MAX_FSW_BIT_RUN_ERRS; + + uint8_t errs = 0U; for (uint8_t i = 0U; i < NXDN_FSW_BYTES_LENGTH; i++) errs += countBits8((sync[i] & NXDN_FSW_BYTES_MASK[i]) ^ NXDN_FSW_BYTES[i]); - if (errs <= MAX_FSW_BIT_ERRS) { + if (errs <= maxErrs) { m_maxCorr = corr; m_lostCount = MAX_FSW_FRAMES; m_fswPtr = m_dataPtr;