From 22539b331f4185f0a2b19a346a073edeb5d97717 Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 27 Jul 2022 17:58:35 +0200 Subject: [PATCH] M17: Correlator code cleanup --- modemm17/Correlator.h | 30 ++++++++++++------------------ modemm17/M17Demodulator.h | 2 +- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/modemm17/Correlator.h b/modemm17/Correlator.h index 430fc75cc..6f81a1339 100644 --- a/modemm17/Correlator.h +++ b/modemm17/Correlator.h @@ -20,10 +20,9 @@ namespace modemm17 { struct MODEMM17_API Correlator { - static constexpr size_t SYMBOLS = 8; - static constexpr size_t SAMPLES_PER_SYMBOL = 10; + static const size_t SYMBOLS = 8; + static const size_t SAMPLES_PER_SYMBOL = 10; - using value_type = float; using buffer_t = std::array; using sync_t = std::array; using sample_filter_t = BaseIirFilter<3>; @@ -115,15 +114,10 @@ struct MODEMM17_API Correlator } }; -template struct SyncWord { - static constexpr size_t SYMBOLS = Correlator::SYMBOLS; - static constexpr size_t SAMPLES_PER_SYMBOL = Correlator::SAMPLES_PER_SYMBOL; - using value_type = typename Correlator::value_type; - - using buffer_t = std::array; - using sample_buffer_t = std::array; + using buffer_t = std::array; + using sample_buffer_t = std::array; buffer_t sync_word_; sample_buffer_t samples_; @@ -131,23 +125,23 @@ struct SyncWord size_t timing_index_ = 0; bool triggered_ = false; int8_t updated_ = 0; - value_type magnitude_1_ = 1.; - value_type magnitude_2_ = -1.; + float magnitude_1_ = 1.0f; + float magnitude_2_ = -1.0f; SyncWord( buffer_t&& sync_word, - value_type magnitude_1, - value_type magnitude_2 = std::numeric_limits::lowest() + float magnitude_1, + float magnitude_2 = std::numeric_limits::lowest() ) : sync_word_(std::move(sync_word)), magnitude_1_(magnitude_1), magnitude_2_(magnitude_2) {} - value_type triggered(Correlator& correlator) + float triggered(Correlator& correlator) { - value_type limit_1 = correlator.limit() * magnitude_1_; - value_type limit_2 = correlator.limit() * magnitude_2_; + float limit_1 = correlator.limit() * magnitude_1_; + float limit_2 = correlator.limit() * magnitude_2_; auto value = correlator.correlate(sync_word_); return (value > limit_1 || value < limit_2) ? value : 0.0; @@ -157,7 +151,7 @@ struct SyncWord { auto value = triggered(correlator); - value_type peak_value = 0; + float peak_value = 0.0f; if (value != 0) { diff --git a/modemm17/M17Demodulator.h b/modemm17/M17Demodulator.h index b36dd621b..ba50c4ebf 100644 --- a/modemm17/M17Demodulator.h +++ b/modemm17/M17Demodulator.h @@ -34,7 +34,7 @@ struct MODEMM17_API M17Demodulator static const uint8_t MAX_MISSING_SYNC = 8; using collelator_t = Correlator; - using sync_word_t = SyncWord; + using sync_word_t = SyncWord; using callback_t = M17FrameDecoder::callback_t; using diagnostic_callback_t = std::function;