CubicSDR/src/CubicSDR.h

130 lines
3.4 KiB
C
Raw Normal View History

#pragma once
//WX_GL_CORE_PROFILE 1
//WX_GL_MAJOR_VERSION 3
//WX_GL_MINOR_VERSION 2
#include <thread>
#include "GLExt.h"
#include "PrimaryGLContext.h"
#include "ThreadQueue.h"
#include "SDRThread.h"
#include "SDRPostThread.h"
#include "AudioThread.h"
#include "DemodulatorMgr.h"
#include "AppConfig.h"
2015-05-04 19:44:03 -04:00
#include "AppFrame.h"
#include "FrequencyDialog.h"
2015-08-01 11:03:00 -04:00
#include "ScopeVisualProcessor.h"
#include "SpectrumVisualProcessor.h"
#include "SpectrumVisualDataThread.h"
#include <wx/cmdline.h>
2014-12-08 02:16:06 -05:00
#define NUM_DEMODULATORS 1
class CubicSDR: public wxApp {
public:
2015-07-27 21:45:24 -04:00
CubicSDR();
PrimaryGLContext &GetContext(wxGLCanvas *canvas);
virtual bool OnInit();
virtual int OnExit();
virtual void OnInitCmdLine(wxCmdLineParser& parser);
virtual bool OnCmdLineParsed(wxCmdLineParser& parser);
void setFrequency(long long freq);
long long getFrequency();
void setOffset(long long ofs);
long long getOffset();
void setDirectSampling(int mode);
int getDirectSampling();
2015-05-31 22:13:14 -04:00
void setSwapIQ(bool swapIQ);
bool getSwapIQ();
2015-01-11 17:08:16 -05:00
void setSampleRate(long long rate_in);
long long getSampleRate();
2015-01-12 00:40:43 -05:00
std::vector<SDRDeviceInfo *> *getDevices();
void setDevice(int deviceId);
2015-01-12 00:51:57 -05:00
int getDevice();
2015-01-12 00:40:43 -05:00
2015-08-01 11:03:00 -04:00
ScopeVisualProcessor *getScopeProcessor();
SpectrumVisualProcessor *getSpectrumProcessor();
SpectrumVisualProcessor *getDemodSpectrumProcessor();
VisualDataReDistributor<DemodulatorThreadIQData> *getSpectrumDistributor();
2015-08-01 11:03:00 -04:00
2014-12-10 21:22:13 -05:00
DemodulatorThreadOutputQueue* getAudioVisualQueue();
2014-12-26 16:15:35 -05:00
DemodulatorThreadInputQueue* getIQVisualQueue();
DemodulatorThreadInputQueue* getWaterfallVisualQueue();
2014-12-10 21:22:13 -05:00
DemodulatorMgr &getDemodMgr();
2014-12-10 21:22:13 -05:00
void bindDemodulator(DemodulatorInstance *demod);
void removeDemodulator(DemodulatorInstance *demod);
void setFrequencySnap(int snap);
int getFrequencySnap();
AppConfig *getConfig();
2015-04-22 22:54:48 -04:00
void saveConfig();
void setPPM(int ppm_in);
int getPPM();
void showFrequencyInput(FrequencyDialog::FrequencyDialogTarget targetMode = FrequencyDialog::FDIALOG_TARGET_DEFAULT);
AppFrame *getAppFrame();
private:
2015-05-04 19:44:03 -04:00
AppFrame *appframe;
AppConfig config;
PrimaryGLContext *m_glContext;
2015-01-12 00:40:43 -05:00
std::vector<SDRDeviceInfo *> devs;
DemodulatorMgr demodMgr;
long long frequency;
long long offset;
int ppm, snap;
2015-01-11 17:08:16 -05:00
long long sampleRate;
int directSamplingMode;
SDRThread *sdrThread;
SDRPostThread *sdrPostThread;
SpectrumVisualDataThread *spectrumVisualThread;
SpectrumVisualDataThread *demodVisualThread;
SDRThreadCommandQueue* pipeSDRCommand;
SDRThreadIQDataQueue* pipeSDRIQData;
DemodulatorThreadInputQueue* pipeIQVisualData;
DemodulatorThreadOutputQueue* pipeAudioVisualData;
DemodulatorThreadInputQueue* pipeDemodIQVisualData;
DemodulatorThreadInputQueue* pipeSpectrumIQVisualData;
DemodulatorThreadInputQueue* pipeWaterfallIQVisualData;
2015-08-01 11:03:00 -04:00
ScopeVisualProcessor scopeProcessor;
VisualDataReDistributor<DemodulatorThreadIQData> spectrumDistributor;
std::thread *t_SDR;
std::thread *t_PostSDR;
std::thread *t_SpectrumVisual;
std::thread *t_DemodVisual;
};
static const wxCmdLineEntryDesc commandLineInfo [] =
{
{ wxCMD_LINE_SWITCH, "h", "help", "Command line parameter help", wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP },
{ wxCMD_LINE_OPTION, "c", "config", "Specify a named configuration to use, i.e. '-c ham'" },
{ wxCMD_LINE_NONE }
};
DECLARE_APP(CubicSDR)