From 41a2de1401fb5a0155cbbac79b9f1ab60d7748a1 Mon Sep 17 00:00:00 2001 From: f4exb Date: Tue, 31 Jan 2023 20:21:47 +0100 Subject: [PATCH] FT8 support: code reorganization (2) --- ft8/fftplan.h | 62 --------------------------------------------------- ft8/ft8.h | 54 ++++++++++++++++++++++---------------------- 2 files changed, 27 insertions(+), 89 deletions(-) delete mode 100644 ft8/fftplan.h diff --git a/ft8/fftplan.h b/ft8/fftplan.h deleted file mode 100644 index c44d613521..0000000000 --- a/ft8/fftplan.h +++ /dev/null @@ -1,62 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////////// -// Copyright (C) 2023 Edouard Griffiths, F4EXB. // -// // -// This is the code from ft8mon: https://github.com/rtmrtmrtmrtm/ft8mon // -// written by Robert Morris, AB1HL // -// reformatted and adapted to Qt and SDRangel context // -// // -// This program is free software; you can redistribute it and/or modify // -// it under the terms of the GNU General Public License as published by // -// the Free Software Foundation as version 3 of the License, or // -// (at your option) any later version. // -// // -// This program is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License V3 for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with this program. If not, see . // -/////////////////////////////////////////////////////////////////////////////////// - -#ifndef FFTPLAN_H -#define FFTPLAN_H - -#include - -namespace FT8 -{ - - // a cached fftw plan, for both of: - // fftwf_plan_dft_r2c_1d(n, m_in, m_out, FFTW_ESTIMATE); - // fftwf_plan_dft_c2r_1d(n, m_in, m_out, FFTW_ESTIMATE); - class Plan - { - public: - int n_; - int type_; - - // - // real -> complex - // - fftwf_complex *c_; // (n_ / 2) + 1 of these - float *r_; // n_ of these - fftwf_plan fwd_; // forward plan - fftwf_plan rev_; // reverse plan - - // - // complex -> complex - // - fftwf_complex *cc1_; // n - fftwf_complex *cc2_; // n - fftwf_plan cfwd_; // forward plan - fftwf_plan crev_; // reverse plan - - static const int M_FFTW_TYPE = FFTW_ESTIMATE; - }; // Plan - - // MEASURE=0, ESTIMATE=64, PATIENT=32 - -} // namespace FT8 - -#endif // FFTPLAN_H diff --git a/ft8/ft8.h b/ft8/ft8.h index 557b48eb36..435777f36e 100644 --- a/ft8/ft8.h +++ b/ft8/ft8.h @@ -274,33 +274,6 @@ class FT8_API FT8 : public QObject { Q_OBJECT public: - float min_hz_; - float max_hz_; - std::vector samples_; // input to each pass - std::vector nsamples_; // subtract from here - - int start_; // sample number of 0.5 seconds into samples[] - int rate_; // samples/second - double deadline_; // start time + budget - double final_deadline_; // keep going this long if no decodes - std::vector hints1_; - std::vector hints2_; - int pass_; - float down_hz_; - - QMutex cb_mu_; - CallbackInterface *cb_; // call-back interface - - QMutex hack_mu_; - int hack_size_; - int hack_off_; - int hack_len_; - float hack_0_; - float hack_1_; - const float *hack_data_; - std::vector> hack_bins_; - std::vector prevdecs_; - FT8( const std::vector &samples, float min_hz, @@ -664,6 +637,33 @@ class FT8_API FT8 : public QObject FFTEngine *fftEngine_; int npasses_; static const double apriori174[]; + + float min_hz_; + float max_hz_; + std::vector samples_; // input to each pass + std::vector nsamples_; // subtract from here + + int start_; // sample number of 0.5 seconds into samples[] + int rate_; // samples/second + double deadline_; // start time + budget + double final_deadline_; // keep going this long if no decodes + std::vector hints1_; + std::vector hints2_; + int pass_; + float down_hz_; + + QMutex cb_mu_; + CallbackInterface *cb_; // call-back interface + + QMutex hack_mu_; + int hack_size_; + int hack_off_; + int hack_len_; + float hack_0_; + float hack_1_; + const float *hack_data_; + std::vector> hack_bins_; + std::vector prevdecs_; }; // class FT8 class FT8_API FT8Decoder : public QObject {