CubicSDR/src/AppConfig.h

171 lines
4.3 KiB
C
Raw Normal View History

// Copyright (c) Charles J. Cliffe
// SPDX-License-Identifier: GPL-2.0+
#pragma once
#include <wx/stdpaths.h>
#include <wx/dir.h>
#include <wx/filename.h>
2015-07-15 00:32:36 -04:00
#include <wx/panel.h>
#include <atomic>
#include <mutex>
#include "DataTree.h"
2016-01-22 00:40:00 -05:00
#include "CubicSDRDefs.h"
#include "SDRDeviceInfo.h"
typedef std::map<std::string, std::string> ConfigSettings;
typedef std::map<std::string, float> ConfigGains;
2015-04-21 23:19:45 -04:00
class DeviceConfig {
public:
2015-04-21 23:19:45 -04:00
DeviceConfig();
DeviceConfig(std::string deviceId);
void setPPM(int ppm);
int getPPM();
void setOffset(long long offset);
long long getOffset();
void setSampleRate(long srate);
long getSampleRate();
void setAGCMode(bool agcMode);
bool getAGCMode();
2015-04-21 23:19:45 -04:00
void setDeviceId(std::string deviceId);
std::string getDeviceId();
void setDeviceName(std::string deviceName);
std::string getDeviceName();
void setStreamOpts(ConfigSettings opts);
ConfigSettings getStreamOpts();
void setStreamOpt(std::string key, std::string value);
std::string getStreamOpt(std::string key, std::string defaultValue);
void setSettings(ConfigSettings settings);
ConfigSettings getSettings();
void setSetting(std::string key, std::string value);
std::string getSetting(std::string key, std::string defaultValue);
void setGains(ConfigGains gains);
ConfigGains getGains();
void setGain(std::string key, float value);
float getGain(std::string key, float defaultValue);
void setRigIF(int rigType, long long freq);
long long getRigIF(int rigType);
2016-01-22 00:40:00 -05:00
2015-04-21 23:19:45 -04:00
void save(DataNode *node);
void load(DataNode *node);
private:
std::string deviceId;
std::string deviceName;
std::mutex busy_lock;
std::atomic_int ppm;
2015-07-14 19:44:19 -04:00
std::atomic_llong offset;
std::atomic_bool agcMode;
std::atomic_long sampleRate;
ConfigSettings streamOpts;
ConfigGains gains;
std::map<std::string, std::string> settings;
std::map<int, long long> rigIF;
2015-04-21 23:19:45 -04:00
};
class AppConfig {
public:
2015-07-16 18:57:03 -04:00
AppConfig();
std::string getConfigDir();
2015-04-21 23:19:45 -04:00
DeviceConfig *getDevice(std::string deviceId);
2015-07-15 00:32:36 -04:00
void setWindow(wxPoint winXY, wxSize winWH);
wxRect *getWindow();
2015-07-16 18:57:03 -04:00
void setWindowMaximized(bool max);
bool getWindowMaximized();
void setModemPropsCollapsed(bool collapse);
bool getModemPropsCollapsed();
void setShowTips(bool show);
bool getShowTips();
void setLowPerfMode(bool lpm);
bool getLowPerfMode();
2015-07-15 00:32:36 -04:00
void setTheme(int themeId);
int getTheme();
2015-07-18 21:49:53 -04:00
2016-06-20 13:28:26 -04:00
void setFontScale(int scaleValue);
int getFontScale();
2015-07-18 21:49:53 -04:00
void setSnap(long long snapVal);
long long getSnap();
2015-07-20 22:51:19 -04:00
void setCenterFreq(long long freqVal);
long long getCenterFreq();
void setWaterfallLinesPerSec(int lps);
int getWaterfallLinesPerSec();
void setSpectrumAvgSpeed(float avgSpeed);
float getSpectrumAvgSpeed();
2016-01-22 00:40:00 -05:00
void setManualDevices(std::vector<SDRManualDef> manuals);
std::vector<SDRManualDef> getManualDevices();
#if USE_HAMLIB
int getRigModel();
void setRigModel(int rigModel);
int getRigRate();
void setRigRate(int rigRate);
std::string getRigPort();
void setRigPort(std::string rigPort);
void setRigControlMode(bool cMode);
bool getRigControlMode();
void setRigFollowMode(bool fMode);
bool getRigFollowMode();
void setRigCenterLock(bool cLock);
bool getRigCenterLock();
void setRigFollowModem(bool fMode);
bool getRigFollowModem();
void setRigEnabled(bool enabled);
bool getRigEnabled();
#endif
void setConfigName(std::string configName);
std::string getConfigFileName(bool ignoreName=false);
bool save();
bool load();
bool reset();
2015-04-21 23:19:45 -04:00
private:
std::string configName;
2015-07-14 19:44:19 -04:00
std::map<std::string, DeviceConfig *> deviceConfig;
2015-07-15 00:32:36 -04:00
std::atomic_int winX,winY,winW,winH;
std::atomic_bool winMax, showTips, lowPerfMode, modemPropsCollapsed;
2015-07-15 00:32:36 -04:00
std::atomic_int themeId;
2016-06-20 13:28:26 -04:00
std::atomic_int fontScale;
2015-07-18 21:49:53 -04:00
std::atomic_llong snap;
2015-07-20 22:51:19 -04:00
std::atomic_llong centerFreq;
std::atomic_int waterfallLinesPerSec;
std::atomic<float> spectrumAvgSpeed;
2016-01-22 00:40:00 -05:00
std::vector<SDRManualDef> manualDevices;
#if USE_HAMLIB
std::atomic_int rigModel, rigRate;
std::string rigPort;
std::atomic_bool rigEnabled, rigFollowMode, rigControlMode, rigCenterLock, rigFollowModem;
#endif
};