#pragma once #include #include #include #include #include "PrimaryGLContext.h" #include "ScopeCanvas.h" #include "SpectrumCanvas.h" #include "WaterfallCanvas.h" #include "MeterCanvas.h" #include "TuningCanvas.h" #include "ModeSelectorCanvas.h" #include "GainCanvas.h" #include "FFTVisualDataThread.h" #include "SDRDeviceInfo.h" //#include "UITestCanvas.h" #include #define wxID_RT_AUDIO_DEVICE 1000 #define wxID_SET_FREQ_OFFSET 2001 #define wxID_RESET 2002 #define wxID_SET_PPM 2003 #define wxID_SET_DS_OFF 2004 #define wxID_SET_DS_I 2005 #define wxID_SET_DS_Q 2006 #define wxID_SET_SWAP_IQ 2007 #define wxID_SDR_DEVICES 2008 #define wxID_AGC_CONTROL 2009 #define wxID_MAIN_SPLITTER 2050 #define wxID_VIS_SPLITTER 2051 #define wxID_THEME_DEFAULT 2100 #define wxID_THEME_SHARP 2101 #define wxID_THEME_BW 2102 #define wxID_THEME_RAD 2103 #define wxID_THEME_TOUCH 2104 #define wxID_THEME_HD 2105 #define wxID_THEME_RADAR 2106 #define wxID_BANDWIDTH_BASE 2150 #define wxID_BANDWIDTH_MANUAL 2200 #define wxID_SETTINGS_BASE 2300 #define wxID_DEVICE_ID 3500 #define wxID_AUDIO_BANDWIDTH_BASE 9000 #define wxID_AUDIO_DEVICE_MULTIPLIER 50 // Define a new frame type class AppFrame: public wxFrame { public: AppFrame(); ~AppFrame(); void OnThread(wxCommandEvent& event); void OnEventInput(wxThreadEvent& event); void initDeviceParams(SDRDeviceInfo *devInfo); void updateDeviceParams(); void saveSession(std::string fileName); bool loadSession(std::string fileName); FFTVisualDataThread *getWaterfallDataThread(); private: void OnMenu(wxCommandEvent& event); void OnClose(wxCloseEvent& event); void OnNewWindow(wxCommandEvent& event); void OnIdle(wxIdleEvent& event); void OnDoubleClickSash(wxSplitterEvent& event); void OnUnSplit(wxSplitterEvent& event); ScopeCanvas *scopeCanvas; SpectrumCanvas *spectrumCanvas; WaterfallCanvas *waterfallCanvas; ModeSelectorCanvas *demodModeSelector; ModeSelectorCanvas *demodModeSelectorAdv; ModeSelectorCanvas *demodModeSelectorCons; SpectrumCanvas *demodSpectrumCanvas; WaterfallCanvas *demodWaterfallCanvas; MeterCanvas *demodSignalMeter; MeterCanvas *demodGainMeter; TuningCanvas *demodTuner; // UITestCanvas *testCanvas; MeterCanvas *spectrumAvgMeter; MeterCanvas *waterfallSpeedMeter; ModeSelectorCanvas *demodMuteButton; GainCanvas *gainCanvas; wxSizerItem *gainSizerItem, *gainSpacerItem; wxSplitterWindow *mainVisSplitter, *mainSplitter; wxBoxSizer *demodTray; DemodulatorInstance *activeDemodulator; std::vector devices; std::map inputDevices; std::map outputDevices; std::map outputDeviceMenuItems; std::map sampleRateMenuItems; std::map audioSampleRateMenuItems; std::map directSamplingMenuItems; wxMenuBar *menuBar; wxMenu *sampleRateMenu; wxMenuItem *agcMenuItem; wxMenu *settingsMenu; SoapySDR::ArgInfoList settingArgs; int settingsIdMax; std::vector sampleRates; std::string currentSessionFile; FFTVisualDataThread *waterfallDataThread; std::thread *t_FFTData; SDRDeviceInfo *devInfo; std::atomic_bool deviceChanged; wxDECLARE_EVENT_TABLE(); };