// Copyright (c) Charles J. Cliffe // SPDX-License-Identifier: GPL-2.0+ #pragma once #include "ThreadBlockingQueue.h" #include "CubicSDRDefs.h" #include "liquid/liquid.h" #include #include #include #include #include "IOThread.h" class DemodulatorThread; class DemodulatorThreadIQData { public: long long frequency; long long sampleRate; std::vector data; DemodulatorThreadIQData() : frequency(0), sampleRate(0) { } DemodulatorThreadIQData & operator=(const DemodulatorThreadIQData &other) { frequency = other.frequency; sampleRate = other.sampleRate; data.assign(other.data.begin(), other.data.end()); return *this; } virtual ~DemodulatorThreadIQData() = default; }; class Modem; class ModemKit; class DemodulatorThreadPostIQData { public: std::vector data; long long sampleRate; std::string modemName; std::string modemType; Modem *modem; ModemKit *modemKit; DemodulatorThreadPostIQData() : sampleRate(0), modem(nullptr), modemKit(nullptr) { } virtual ~DemodulatorThreadPostIQData() = default; }; typedef std::shared_ptr DemodulatorThreadIQDataPtr; typedef std::shared_ptr DemodulatorThreadPostIQDataPtr; typedef ThreadBlockingQueue DemodulatorThreadInputQueue; typedef ThreadBlockingQueue DemodulatorThreadPostInputQueue; typedef std::shared_ptr DemodulatorThreadInputQueuePtr; typedef std::shared_ptr DemodulatorThreadPostInputQueuePtr;