diff options
Diffstat (limited to 'src/output/SDR.h')
-rw-r--r-- | src/output/SDR.h | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/output/SDR.h b/src/output/SDR.h index ee89243..86bf295 100644 --- a/src/output/SDR.h +++ b/src/output/SDR.h @@ -2,7 +2,7 @@ Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Her Majesty the Queen in Right of Canada (Communications Research Center Canada) - Copyright (C) 2018 + Copyright (C) 2023 Matthias P. Braendli, matthias.braendli@mpb.li http://opendigitalradio.org @@ -34,16 +34,12 @@ DESCRIPTION: # include <config.h> #endif -#include <chrono> #include "ModPlugin.h" -#include "EtiReader.h" #include "output/SDRDevice.h" #include "output/Feedback.h" namespace Output { -using complexf = std::complex<float>; - class SDR : public ModOutput, public ModMetadata, public RemoteControllable { public: SDR(SDRDeviceConfig& config, std::shared_ptr<SDRDevice> device); @@ -51,6 +47,7 @@ class SDR : public ModOutput, public ModMetadata, public RemoteControllable { SDR operator=(const SDR& other) = delete; virtual ~SDR(); + virtual void set_sample_size(size_t size); virtual int process(Buffer *dataIn) override; virtual meta_vec_t process_metadata(const meta_vec_t& metadataIn) override; @@ -66,15 +63,17 @@ class SDR : public ModOutput, public ModMetadata, public RemoteControllable { virtual const std::string get_parameter( const std::string& parameter) const override; + virtual const json::map_t get_all_values() const override; + private: void process_thread_entry(void); - void handle_frame(struct FrameData &frame); - void sleep_through_frame(void); + void handle_frame(struct FrameData&& frame); SDRDeviceConfig& m_config; std::atomic<bool> m_running = ATOMIC_VAR_INIT(false); std::thread m_device_thread; + size_t m_size = sizeof(complexf); std::vector<uint8_t> m_frame; ThreadsafeQueue<FrameData> m_queue; @@ -86,9 +85,7 @@ class SDR : public ModOutput, public ModMetadata, public RemoteControllable { bool last_tx_time_initialised = false; uint32_t last_tx_second = 0; uint32_t last_tx_pps = 0; - - bool t_last_frame_initialised = false; - std::chrono::steady_clock::time_point t_last_frame; + size_t num_queue_overflows = 0; }; } |