From f00cdc28c9fbc347ec4d35c4fcdc9d16ecc84fe9 Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 20 Jul 2022 06:11:14 +0200 Subject: [PATCH] M17 library code cleanup --- modemm17/Fsk4Demod.h | 2 +- modemm17/LinkSetupFrame.h | 8 ++++---- modemm17/SlidingDFT.h | 2 +- modemm17/SymbolEvm.h | 8 ++++---- modemm17/Util.h | 4 +--- modemm17/Viterbi.h | 4 ++-- 6 files changed, 13 insertions(+), 15 deletions(-) diff --git a/modemm17/Fsk4Demod.h b/modemm17/Fsk4Demod.h index 38fa5df53..88d21fdef 100644 --- a/modemm17/Fsk4Demod.h +++ b/modemm17/Fsk4Demod.h @@ -97,7 +97,7 @@ struct Fsk4Demod dt = ideal_dt - (phase_estimate * (lock ? lock_gain : unlock_gain)); t += dt; - std::tuple evm_result = symbol_evm(samples[1]); + symbol_evm(samples[1]); int symbol; float evm; std::tie(symbol, evm) = symbol_evm(samples[1]); diff --git a/modemm17/LinkSetupFrame.h b/modemm17/LinkSetupFrame.h index 6efa046cf..816ce1c9e 100644 --- a/modemm17/LinkSetupFrame.h +++ b/modemm17/LinkSetupFrame.h @@ -135,12 +135,12 @@ struct LinkSetupFrame bool north = lat_int >= 0; bool east = lon_int >= 0; - result[2] = (int) abs(lat_int); - lat_dec = abs(lat_frac) * 65536.0f; + result[2] = (int) std::abs(lat_int); + lat_dec = std::abs(lat_frac) * 65536.0f; result[3] = lat_dec >> 8; result[4] = lat_dec & 0xFF; - result[5] = (int) abs(lon_int); - lon_dec = abs(lon_frac) * 65536.0f; + result[5] = (int) std::abs(lon_int); + lon_dec = std::abs(lon_frac) * 65536.0f; result[6] = lon_dec >> 8; result[7] = lon_dec & 0xFF; result[8] = (north ? 0 : 1) | ((east ? 0 : 1)<<1) | (1<<2); diff --git a/modemm17/SlidingDFT.h b/modemm17/SlidingDFT.h index f1d3abd74..d02b6839e 100644 --- a/modemm17/SlidingDFT.h +++ b/modemm17/SlidingDFT.h @@ -27,7 +27,7 @@ class SlidingDFT static constexpr float kth = float(Frequency) / float(SampleRate); // We'd like this to be static constexpr, but std::exp is not a constexpr. - const ComplexType coeff_; + ComplexType coeff_; std::array samples_; ComplexType result_{0,0}; size_t index_ = 0; diff --git a/modemm17/SymbolEvm.h b/modemm17/SymbolEvm.h index d092db2ea..4737a1d4f 100644 --- a/modemm17/SymbolEvm.h +++ b/modemm17/SymbolEvm.h @@ -16,7 +16,7 @@ namespace modemm17 template struct SymbolEvm { - using filter_type = BaseIirFilter; + using filter_type = BaseIirFilter; using symbol_t = int; using result_type = std::tuple; @@ -42,7 +42,7 @@ struct SymbolEvm symbol_t symbol; float evm; - sample = std::min(3.0, std::max(-3.0, sample)); + sample = std::min(3.0f, std::max(-3.0f, sample)); if (sample > 2) { @@ -65,7 +65,7 @@ struct SymbolEvm evm = (sample + 3) * 0.333333; } - if (erasure_limit_ and (abs(evm) > *erasure_limit_)) symbol = 0; + if (erasure_limit_ and (std::abs(evm) > erasure_limit_)) symbol = 0; evm_ = filter_(evm); @@ -79,7 +79,7 @@ SymbolEvm makeSymbolEvm( float erasure_limit = 0.0f ) { - return std::move(SymbolEvm(std::move(filter), erasure_limit)); + return std::move(SymbolEvm(std::move(filter), erasure_limit)); } } // modemm17 diff --git a/modemm17/Util.h b/modemm17/Util.h index cdd159464..76b755bf7 100644 --- a/modemm17/Util.h +++ b/modemm17/Util.h @@ -146,9 +146,7 @@ auto llr(float sample) template auto depunctured(std::array puncture_matrix, std::array in) { - if (M % N != 0) { - return; - } + static_assert(M % N == 0, "M must be an integer multiple of N"); std::array result; size_t index = 0; diff --git a/modemm17/Viterbi.h b/modemm17/Viterbi.h index dd269fcad..8c7b23fa4 100644 --- a/modemm17/Viterbi.h +++ b/modemm17/Viterbi.h @@ -94,7 +94,7 @@ constexpr auto makeCost(Trellis_ trellis) template struct Viterbi { - static_assert(LLR_ < 7); // Need to be < 7 to avoid overflow errors. + static_assert(LLR_ < 7, "Need to be < 7 to avoid overflow errors"); static constexpr size_t K = Trellis_::K; static constexpr size_t k = Trellis_::k; @@ -162,7 +162,7 @@ struct Viterbi template size_t decode(std::array const& in, std::array& out) { - static_assert(sizeof(history_) >= IN / 2); + static_assert(sizeof(history_) >= IN / 2, "Invalid size"); constexpr auto MAX_METRIC = std::numeric_limits::max() / 2;