2017-01-02 21:07:43 -05:00
|
|
|
// Copyright (c) Charles J. Cliffe
|
|
|
|
// SPDX-License-Identifier: GPL-2.0+
|
|
|
|
|
2014-10-27 21:22:29 -04:00
|
|
|
#pragma once
|
|
|
|
|
2015-10-25 14:09:59 -04:00
|
|
|
#include <wx/frame.h>
|
|
|
|
#include <wx/panel.h>
|
|
|
|
#include <wx/splitter.h>
|
2015-10-27 01:56:49 -04:00
|
|
|
#include <wx/sizer.h>
|
2016-11-01 22:29:58 -04:00
|
|
|
#include <wx/bitmap.h>
|
|
|
|
#include <wx/statbmp.h>
|
2019-10-29 03:38:31 -04:00
|
|
|
#include <wx/tooltip.h>
|
2015-10-25 14:09:59 -04:00
|
|
|
|
2014-10-27 21:22:29 -04:00
|
|
|
#include "PrimaryGLContext.h"
|
2014-11-23 19:39:27 -05:00
|
|
|
|
2014-11-12 21:55:11 -05:00
|
|
|
#include "ScopeCanvas.h"
|
2014-11-15 23:41:41 -05:00
|
|
|
#include "SpectrumCanvas.h"
|
|
|
|
#include "WaterfallCanvas.h"
|
2014-12-31 19:45:01 -05:00
|
|
|
#include "MeterCanvas.h"
|
2015-01-04 17:11:20 -05:00
|
|
|
#include "TuningCanvas.h"
|
2015-01-05 19:12:16 -05:00
|
|
|
#include "ModeSelectorCanvas.h"
|
2015-10-27 01:56:49 -04:00
|
|
|
#include "GainCanvas.h"
|
2015-08-14 19:17:43 -04:00
|
|
|
#include "FFTVisualDataThread.h"
|
2015-10-20 23:00:10 -04:00
|
|
|
#include "SDRDeviceInfo.h"
|
2015-11-23 21:32:50 -05:00
|
|
|
#include "ModemProperties.h"
|
2015-08-14 19:17:43 -04:00
|
|
|
//#include "UITestCanvas.h"
|
2016-02-07 21:05:49 -05:00
|
|
|
#include "FrequencyDialog.h"
|
2016-09-14 19:46:57 -04:00
|
|
|
#include "BookmarkView.h"
|
2017-02-07 21:48:22 -05:00
|
|
|
#include "AboutDialog.h"
|
2017-08-27 05:11:30 -04:00
|
|
|
#include "DemodulatorInstance.h"
|
|
|
|
#include "DemodulatorThread.h"
|
2014-12-31 19:45:01 -05:00
|
|
|
#include <map>
|
|
|
|
|
2016-01-03 19:00:26 -05:00
|
|
|
|
2017-04-20 19:40:09 -04:00
|
|
|
#ifdef USE_HAMLIB
|
|
|
|
class PortSelectorDialog;
|
|
|
|
#endif
|
|
|
|
|
2014-10-27 21:22:29 -04:00
|
|
|
// Define a new frame type
|
2014-10-28 21:39:59 -04:00
|
|
|
class AppFrame: public wxFrame {
|
2014-10-27 21:22:29 -04:00
|
|
|
public:
|
|
|
|
AppFrame();
|
2021-04-04 22:22:16 -04:00
|
|
|
~AppFrame() override;
|
2016-11-01 22:29:58 -04:00
|
|
|
|
2021-04-04 22:22:16 -04:00
|
|
|
void initDeviceParams(SDRDeviceInfo *devInfo_in);
|
2015-01-09 17:17:56 -05:00
|
|
|
|
2015-10-25 00:07:01 -04:00
|
|
|
FFTVisualDataThread *getWaterfallDataThread();
|
2019-01-30 23:24:33 -05:00
|
|
|
WaterfallCanvas *getWaterfallCanvas();
|
|
|
|
SpectrumCanvas *getSpectrumCanvas();
|
2015-10-25 00:07:01 -04:00
|
|
|
|
2016-07-28 10:46:18 -04:00
|
|
|
void notifyUpdateModemProperties();
|
2015-12-29 20:52:49 -05:00
|
|
|
void setMainWaterfallFFTSize(int fftSize);
|
2016-07-28 22:50:02 -04:00
|
|
|
void setScopeDeviceName(std::string deviceName);
|
2015-12-29 20:52:49 -05:00
|
|
|
|
2016-02-07 18:01:11 -05:00
|
|
|
int OnGlobalKeyDown(wxKeyEvent &event);
|
|
|
|
int OnGlobalKeyUp(wxKeyEvent &event);
|
2019-03-16 18:37:52 -04:00
|
|
|
|
2016-02-07 21:05:49 -05:00
|
|
|
void setWaterfallLinesPerSecond(int lps);
|
|
|
|
void setSpectrumAvgSpeed(double avg);
|
|
|
|
|
|
|
|
FrequencyDialog::FrequencyDialogTarget getFrequencyDialogTarget();
|
2016-02-07 22:19:05 -05:00
|
|
|
void refreshGainUI();
|
2016-08-15 23:53:27 -04:00
|
|
|
void setViewState(long long center_freq, int bandwidth);
|
2017-05-29 14:08:45 -04:00
|
|
|
void setViewState();
|
2016-12-27 00:06:25 -05:00
|
|
|
|
|
|
|
long long getViewCenterFreq();
|
|
|
|
int getViewBandwidth();
|
2016-08-16 17:55:40 -04:00
|
|
|
bool isUserDemodBusy();
|
2016-09-14 22:49:32 -04:00
|
|
|
|
|
|
|
BookmarkView *getBookmarkView();
|
2016-12-27 13:01:19 -05:00
|
|
|
void disableSave(bool state);
|
2017-01-21 05:26:51 -05:00
|
|
|
|
|
|
|
//call this in case the main UI is not
|
|
|
|
//the origin of device changes / sample rate by operator,
|
|
|
|
//and must be notified back to update its UI elements
|
|
|
|
//(ex: SDR Devices dialog changing the configuration)
|
|
|
|
void notifyDeviceChanged();
|
2016-09-14 22:49:32 -04:00
|
|
|
|
2016-05-30 00:17:08 -04:00
|
|
|
#ifdef _WIN32
|
2016-05-29 21:03:21 -04:00
|
|
|
bool canFocus();
|
2016-05-30 00:17:08 -04:00
|
|
|
#endif
|
2017-03-01 16:13:41 -05:00
|
|
|
//set tooltip to window
|
2021-04-04 22:22:16 -04:00
|
|
|
void setStatusText(wxWindow* window, const std::string& statusText);
|
|
|
|
void setStatusText(const std::string& statusText, int value);
|
2019-03-16 18:37:52 -04:00
|
|
|
|
|
|
|
|
2017-04-20 19:40:09 -04:00
|
|
|
#ifdef USE_HAMLIB
|
2021-04-04 22:22:16 -04:00
|
|
|
void setRigControlPort(const std::string& portName);
|
2019-03-16 18:37:52 -04:00
|
|
|
void dismissRigControlPortDialog();
|
2017-04-20 19:40:09 -04:00
|
|
|
#endif
|
2017-01-25 15:28:44 -05:00
|
|
|
|
2017-08-24 15:11:50 -04:00
|
|
|
|
2019-03-16 18:37:52 -04:00
|
|
|
private:
|
|
|
|
/***
|
|
|
|
* UI Elements
|
|
|
|
*/
|
2014-11-15 23:41:41 -05:00
|
|
|
ScopeCanvas *scopeCanvas;
|
2019-03-16 18:37:52 -04:00
|
|
|
SpectrumCanvas *spectrumCanvas, *demodSpectrumCanvas;
|
|
|
|
WaterfallCanvas *waterfallCanvas, *demodWaterfallCanvas;
|
2015-01-04 17:11:20 -05:00
|
|
|
TuningCanvas *demodTuner;
|
2019-03-16 18:37:52 -04:00
|
|
|
MeterCanvas *demodSignalMeter, *demodGainMeter, *spectrumAvgMeter, *waterfallSpeedMeter;
|
|
|
|
ModeSelectorCanvas *demodModeSelector, *demodMuteButton, *peakHoldButton, *soloModeButton, *deltaLockButton;
|
2015-10-27 01:56:49 -04:00
|
|
|
GainCanvas *gainCanvas;
|
2019-03-16 18:37:52 -04:00
|
|
|
BookmarkView *bookmarkView;
|
|
|
|
|
2015-10-27 01:56:49 -04:00
|
|
|
wxSizerItem *gainSizerItem, *gainSpacerItem;
|
2016-09-14 22:10:27 -04:00
|
|
|
wxSplitterWindow *mainVisSplitter, *mainSplitter, *bookmarkSplitter;
|
2019-03-16 18:37:52 -04:00
|
|
|
|
2015-10-27 01:56:49 -04:00
|
|
|
wxBoxSizer *demodTray;
|
2019-03-16 18:37:52 -04:00
|
|
|
|
2017-08-29 00:40:07 -04:00
|
|
|
//Use a raw pointer here to prevent a dangling reference
|
|
|
|
DemodulatorInstance* activeDemodulator;
|
2014-12-31 19:45:01 -05:00
|
|
|
|
2019-03-16 18:37:52 -04:00
|
|
|
/***
|
|
|
|
* Menus
|
|
|
|
*/
|
|
|
|
wxMenuBar *menuBar = nullptr;
|
|
|
|
|
|
|
|
wxMenu *fileMenu = nullptr;
|
|
|
|
|
|
|
|
wxMenu *settingsMenu = nullptr;
|
|
|
|
wxMenuItem *showTipMenuItem;
|
|
|
|
wxMenuItem *iqSwapMenuItem = nullptr;
|
|
|
|
wxMenuItem *agcMenuItem = nullptr;
|
|
|
|
|
|
|
|
wxMenu *sampleRateMenu = nullptr;
|
|
|
|
|
|
|
|
wxMenu *displayMenu = nullptr;
|
|
|
|
wxMenuItem *hideBookmarksItem;
|
|
|
|
|
|
|
|
wxMenu *recordingMenu = nullptr;
|
|
|
|
|
|
|
|
//depending on context, maps the item id to wxMenuItem*,
|
|
|
|
//OR the submenu item id to its parent wxMenuItem*.
|
|
|
|
std::map<int, wxMenuItem *> sampleRateMenuItems;
|
|
|
|
std::map<int, wxMenuItem *> antennaMenuItems;
|
|
|
|
std::map<int, wxMenuItem *> settingsMenuItems;
|
|
|
|
std::map<int, wxMenuItem *> performanceMenuItems;
|
|
|
|
std::map<int, wxMenuItem *> audioSampleRateMenuItems;
|
2018-01-13 05:50:08 -05:00
|
|
|
std::map<int, wxMenuItem *> recordingMenuItems;
|
|
|
|
|
2019-03-16 18:37:52 -04:00
|
|
|
|
|
|
|
/***
|
|
|
|
* Waterfall Data Thread
|
|
|
|
*/
|
|
|
|
FFTVisualDataThread *waterfallDataThread;
|
|
|
|
std::thread *t_FFTData;
|
|
|
|
|
|
|
|
|
|
|
|
/***
|
|
|
|
* Active Settings
|
|
|
|
*/
|
|
|
|
bool saveDisabled = false;
|
|
|
|
|
|
|
|
std::string currentSessionFile;
|
|
|
|
std::string currentBookmarkFile;
|
|
|
|
|
|
|
|
SoapySDR::ArgInfoList settingArgs;
|
2015-11-03 23:44:35 -05:00
|
|
|
int settingsIdMax;
|
2019-03-16 18:37:52 -04:00
|
|
|
|
2015-10-20 23:00:10 -04:00
|
|
|
std::vector<long> sampleRates;
|
2017-01-21 05:26:51 -05:00
|
|
|
long manualSampleRate = -1;
|
2017-08-23 17:27:49 -04:00
|
|
|
|
2019-03-16 18:37:52 -04:00
|
|
|
SDRDeviceInfo *devInfo = nullptr;
|
|
|
|
std::atomic_bool deviceChanged;
|
2017-08-25 01:27:30 -04:00
|
|
|
|
2019-03-16 18:37:52 -04:00
|
|
|
ModemProperties *modemProps;
|
|
|
|
std::atomic_bool modemPropertiesUpdated;
|
2015-08-14 19:17:43 -04:00
|
|
|
|
2019-03-16 18:37:52 -04:00
|
|
|
std::vector<std::string> antennaNames;
|
|
|
|
std::string currentTXantennaName;
|
|
|
|
|
|
|
|
AboutDialog *aboutDlg = nullptr;
|
2017-03-01 16:13:41 -05:00
|
|
|
std::string lastToolTip;
|
|
|
|
|
2019-03-16 18:37:52 -04:00
|
|
|
#ifdef ENABLE_DIGITAL_LAB
|
|
|
|
ModeSelectorCanvas *demodModeSelectorAdv;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
/***
|
|
|
|
* wx Events
|
|
|
|
*/
|
|
|
|
void OnMenu(wxCommandEvent& event);
|
|
|
|
void OnClose(wxCloseEvent& event);
|
|
|
|
void OnIdle(wxIdleEvent& event);
|
|
|
|
void OnDoubleClickSash(wxSplitterEvent& event);
|
|
|
|
void OnUnSplit(wxSplitterEvent& event);
|
|
|
|
void OnAboutDialogClose(wxCommandEvent& event);
|
|
|
|
void OnNewWindow(wxCommandEvent& event);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Session Management
|
|
|
|
*/
|
2021-04-04 22:22:16 -04:00
|
|
|
void saveSession(const std::string& fileName);
|
|
|
|
bool loadSession(const std::string& fileName);
|
2019-03-16 18:37:52 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Keyboard handlers
|
|
|
|
*/
|
2021-04-04 22:22:16 -04:00
|
|
|
void gkNudge(const DemodulatorInstancePtr& demod, int snap);
|
2019-03-16 18:37:52 -04:00
|
|
|
|
|
|
|
void toggleActiveDemodRecording();
|
|
|
|
void toggleAllActiveDemodRecording();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* UI init functions
|
|
|
|
*/
|
|
|
|
ModeSelectorCanvas *makeModemSelectorPanel(wxWindow *parent, const wxGLAttributes &attribList);
|
2019-01-22 00:01:31 -05:00
|
|
|
WaterfallCanvas *makeWaterfallCanvas(wxWindow *parent, const wxGLAttributes &attribList);
|
|
|
|
SpectrumCanvas *makeDemodSpectrumCanvas(wxWindow *parent, const wxGLAttributes &attribList);
|
|
|
|
MeterCanvas *makeSignalMeter(wxWindow *parent, const wxGLAttributes &attribList);
|
|
|
|
ModeSelectorCanvas *makeDeltaLockButton(wxWindow *parent, const wxGLAttributes &attribList);
|
|
|
|
TuningCanvas *makeModemTuner(wxWindow *parent, const wxGLAttributes &attribList);
|
|
|
|
MeterCanvas *makeModemGainMeter(wxWindow *parent, const wxGLAttributes &attribList);
|
|
|
|
ModeSelectorCanvas *makeSoloModeButton(wxWindow *parent, const wxGLAttributes &attribList);
|
|
|
|
ModeSelectorCanvas *makeModemMuteButton(wxWindow *parent, const wxGLAttributes &attribList);
|
|
|
|
ModeSelectorCanvas *makePeakHoldButton(wxWindow *parent, const wxGLAttributes &attribList);
|
|
|
|
SpectrumCanvas *makeSpectrumCanvas(wxWindow *parent, const wxGLAttributes &attribList);
|
|
|
|
MeterCanvas *makeSpectrumAvgMeter(wxWindow *parent, const wxGLAttributes &attribList);
|
|
|
|
WaterfallCanvas *makeWaterfall(wxWindow *parent, const wxGLAttributes &attribList);
|
|
|
|
MeterCanvas *makeWaterfallSpeedMeter(wxWindow *parent, const wxGLAttributes &attribList);
|
|
|
|
ScopeCanvas *makeScopeCanvas(wxPanel *parent, const wxGLAttributes &attribList);
|
|
|
|
ModeSelectorCanvas *makeModemAdvSelectorPanel(wxPanel *parent, const wxGLAttributes &attribList);
|
|
|
|
ModemProperties *makeModemProperties(wxPanel *parent);
|
|
|
|
|
2019-03-16 17:44:41 -04:00
|
|
|
void initConfigurationSettings();
|
|
|
|
void initMenuBar();
|
|
|
|
void initIcon();
|
|
|
|
|
2019-03-16 18:37:52 -04:00
|
|
|
wxMenu *makeFileMenu();
|
2019-01-22 00:01:31 -05:00
|
|
|
wxMenu *makeAudioSampleRateMenu();
|
|
|
|
wxMenu *makeDisplayMenu();
|
2019-03-16 18:37:52 -04:00
|
|
|
wxMenu *makeRecordingMenu();
|
|
|
|
void updateRecordingMenu();
|
|
|
|
|
|
|
|
wxString getSettingsLabel(const std::string& settingsName,
|
|
|
|
const std::string& settingsValue,
|
|
|
|
const std::string& settingsSuffix = "");
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Menu Action Handlers
|
|
|
|
*/
|
|
|
|
//actionXXXX manage menu actions, return true if the event has been
|
|
|
|
//treated.
|
|
|
|
bool actionOnMenuAbout(wxCommandEvent& event);
|
|
|
|
bool actionOnMenuReset(wxCommandEvent& event);
|
|
|
|
bool actionOnMenuSettings(wxCommandEvent& event);
|
|
|
|
bool actionOnMenuAGC(wxCommandEvent& event);
|
|
|
|
bool actionOnMenuSampleRate(wxCommandEvent& event);
|
|
|
|
bool actionOnMenuAudioSampleRate(wxCommandEvent& event);
|
|
|
|
bool actionOnMenuDisplay(wxCommandEvent& event);
|
|
|
|
bool actionOnMenuLoadSave(wxCommandEvent& event);
|
|
|
|
bool actionOnMenuRecording(wxCommandEvent& event);
|
|
|
|
bool actionOnMenuRig(wxCommandEvent& event);
|
2019-03-19 00:06:01 -04:00
|
|
|
bool actionOnMenuSDRStartStop(wxCommandEvent &event);
|
|
|
|
bool actionOnMenuPerformance(wxCommandEvent &event);
|
|
|
|
bool actionOnMenuTips(wxCommandEvent &event);
|
|
|
|
bool actionOnMenuIQSwap(wxCommandEvent &event);
|
|
|
|
bool actionOnMenuFreqOffset(wxCommandEvent &event);
|
|
|
|
bool actionOnMenuDBOffset(wxCommandEvent &event);
|
|
|
|
bool actionOnMenuSDRDevices(wxCommandEvent &event);
|
|
|
|
bool actionOnMenuSetPPM(wxCommandEvent &event);
|
|
|
|
bool actionOnMenuClose(wxCommandEvent &event);
|
|
|
|
|
2019-01-22 00:01:31 -05:00
|
|
|
|
2019-03-16 18:37:52 -04:00
|
|
|
/**
|
2019-03-19 00:06:01 -04:00
|
|
|
* UI Activity Handlers
|
2019-03-16 18:37:52 -04:00
|
|
|
*/
|
|
|
|
void handleUpdateDeviceParams();
|
|
|
|
void handleTXAntennaChange();
|
2019-02-11 22:59:43 -05:00
|
|
|
void handleCurrentModem();
|
|
|
|
void handleModeSelector();
|
|
|
|
void handleGainMeter();
|
|
|
|
void handleDemodWaterfallSpectrum();
|
|
|
|
void handleSpectrumWaterfall();
|
|
|
|
void handleMuteButton();
|
|
|
|
void handleScopeProcessor();
|
|
|
|
void handleScopeSpectrumProcessors();
|
|
|
|
void handleModemProperties();
|
|
|
|
void handlePeakHold();
|
|
|
|
|
2019-03-16 17:44:41 -04:00
|
|
|
|
2019-03-16 18:37:52 -04:00
|
|
|
/**
|
|
|
|
* Hamlib/Rig specific
|
|
|
|
*/
|
2019-03-16 17:44:41 -04:00
|
|
|
#ifdef USE_HAMLIB
|
2019-03-16 18:37:52 -04:00
|
|
|
wxMenu *rigMenu;
|
2019-03-16 17:44:41 -04:00
|
|
|
wxMenuItem *rigEnableMenuItem;
|
|
|
|
wxMenuItem *rigPortMenuItem;
|
|
|
|
wxMenuItem *rigControlMenuItem;
|
|
|
|
wxMenuItem *rigFollowMenuItem;
|
|
|
|
wxMenuItem *rigCenterLockMenuItem;
|
|
|
|
wxMenuItem *rigFollowModemMenuItem;
|
|
|
|
|
|
|
|
std::map<int, wxMenuItem *> rigSerialMenuItems;
|
|
|
|
std::map<int, wxMenuItem *> rigModelMenuItems;
|
2019-05-13 20:52:36 -04:00
|
|
|
wxMenu *rigModelMenu;
|
2019-03-16 17:44:41 -04:00
|
|
|
int rigModel;
|
|
|
|
int rigSerialRate;
|
|
|
|
long long rigSDRIF;
|
|
|
|
std::vector<int> rigSerialRates;
|
|
|
|
std::string rigPort;
|
|
|
|
int numRigs;
|
|
|
|
PortSelectorDialog *rigPortDialog;
|
|
|
|
|
2019-03-16 18:37:52 -04:00
|
|
|
void enableRig();
|
|
|
|
void disableRig();
|
|
|
|
|
2019-03-16 17:44:41 -04:00
|
|
|
wxMenu *makeRigMenu();
|
2019-02-11 22:59:43 -05:00
|
|
|
void handleRigMenu();
|
|
|
|
#endif
|
2019-03-16 17:44:41 -04:00
|
|
|
|
|
|
|
wxDECLARE_EVENT_TABLE();
|
2014-10-27 21:22:29 -04:00
|
|
|
};
|
2019-03-16 18:37:52 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define wxID_RT_AUDIO_DEVICE 1000
|
|
|
|
#define wxID_SET_FREQ_OFFSET 2001
|
|
|
|
#define wxID_RESET 2002
|
|
|
|
#define wxID_SET_PPM 2003
|
|
|
|
#define wxID_SET_TIPS 2004
|
|
|
|
#define wxID_SET_IQSWAP 2005
|
|
|
|
#define wxID_SDR_DEVICES 2008
|
|
|
|
#define wxID_AGC_CONTROL 2009
|
|
|
|
#define wxID_SDR_START_STOP 2010
|
|
|
|
#define wxID_SET_DB_OFFSET 2012
|
|
|
|
#define wxID_ABOUT_CUBICSDR 2013
|
|
|
|
|
|
|
|
#define wxID_OPEN_BOOKMARKS 2020
|
|
|
|
#define wxID_SAVE_BOOKMARKS 2021
|
|
|
|
#define wxID_SAVEAS_BOOKMARKS 2022
|
|
|
|
#define wxID_RESET_BOOKMARKS 2023
|
|
|
|
|
|
|
|
#define wxID_MAIN_SPLITTER 2050
|
|
|
|
#define wxID_VIS_SPLITTER 2051
|
|
|
|
#define wxID_BM_SPLITTER 2052
|
|
|
|
|
2019-09-23 01:24:04 -04:00
|
|
|
#define wxID_THEME_DEFAULT 2070
|
|
|
|
#define wxID_THEME_DEFAULT_JET 2071
|
|
|
|
#define wxID_THEME_SHARP 2072
|
|
|
|
#define wxID_THEME_BW 2073
|
|
|
|
#define wxID_THEME_RAD 2074
|
|
|
|
#define wxID_THEME_TOUCH 2075
|
|
|
|
#define wxID_THEME_HD 2076
|
|
|
|
#define wxID_THEME_RADAR 2077
|
|
|
|
|
|
|
|
#define wxID_DISPLAY_BOOKMARKS 2100
|
2019-03-16 18:37:52 -04:00
|
|
|
|
|
|
|
#define wxID_BANDWIDTH_BASE 2150
|
|
|
|
#define wxID_BANDWIDTH_MANUAL_DIALOG 2199
|
|
|
|
#define wxID_BANDWIDTH_MANUAL 2200
|
|
|
|
|
|
|
|
#define wxID_DISPLAY_BASE 2250
|
|
|
|
|
|
|
|
#define wxID_SETTINGS_BASE 2300
|
|
|
|
|
|
|
|
#define wxID_ANTENNA_CURRENT 2350
|
|
|
|
#define wxID_ANTENNA_CURRENT_TX 2501
|
|
|
|
#define wxID_ANTENNAS_BASE 2352
|
|
|
|
|
|
|
|
#define wxID_PERF_CURRENT 2400
|
|
|
|
#define wxID_PERF_BASE 2401
|
|
|
|
|
|
|
|
#define wxID_DEVICE_ID 3500
|
|
|
|
|
|
|
|
#define wxID_RECORDING_PATH 8500
|
|
|
|
#define wxID_RECORDING_SQUELCH_BASE 8501
|
|
|
|
#define wxID_RECORDING_SQUELCH_SILENCE 8502
|
|
|
|
#define wxID_RECORDING_SQUELCH_SKIP 8503
|
|
|
|
#define wxID_RECORDING_SQUELCH_ALWAYS 8504
|
|
|
|
#define wxID_RECORDING_FILE_TIME_LIMIT 8505
|
|
|
|
|
|
|
|
#define wxID_AUDIO_BANDWIDTH_BASE 9000
|
|
|
|
#define wxID_AUDIO_DEVICE_MULTIPLIER 50
|
|
|
|
|
|
|
|
#ifdef USE_HAMLIB
|
|
|
|
#define wxID_RIG_TOGGLE 11900
|
|
|
|
#define wxID_RIG_PORT 11901
|
|
|
|
#define wxID_RIG_SDR_IF 11902
|
|
|
|
#define wxID_RIG_CONTROL 11903
|
|
|
|
#define wxID_RIG_FOLLOW 11904
|
|
|
|
#define wxID_RIG_CENTERLOCK 11905
|
|
|
|
#define wxID_RIG_FOLLOW_MODEM 11906
|
|
|
|
#define wxID_RIG_SERIAL_BASE 11950
|
|
|
|
#define wxID_RIG_MODEL_BASE 12000
|
|
|
|
#endif
|