CubicSDR/src/modules/modem/Modem.cpp

123 lines
2.5 KiB
C++

// Copyright (c) Charles J. Cliffe
// SPDX-License-Identifier: GPL-2.0+
#include "Modem.h"
#include "CubicSDR.h"
ModemFactoryList Modem::modemFactories;
DefaultRatesList Modem::modemDefaultRates;
//! Create an empty range (0.0, 0.0)
ModemRange::ModemRange(void) {
_min = 0;
_max = 0;
}
//! Create a min/max range
ModemRange::ModemRange(const double minimum, const double maximum) {
_min = minimum;
_max = maximum;
}
//! Get the range minimum
double ModemRange::minimum(void) const {
return _min;
}
//! Get the range maximum
double ModemRange::maximum(void) const {
return _max;
}
ModemArgInfo::ModemArgInfo(void) {
}
Modem::Modem() {
useSignalOutput(false);
}
Modem::~Modem() {
}
void Modem::addModemFactory(ModemFactoryFn factoryFunc, std::string modemName, int defaultRate) {
modemFactories[modemName] = factoryFunc;
modemDefaultRates[modemName] = defaultRate;
}
ModemFactoryList Modem::getFactories() {
return modemFactories;
}
Modem *Modem::makeModem(std::string modemName) {
if (modemFactories.find(modemName) != modemFactories.end()) {
return (Modem *)modemFactories[modemName]();
}
return nullptr;
}
int Modem::getModemDefaultSampleRate(std::string modemName) {
if (modemDefaultRates.find(modemName) != modemDefaultRates.end()) {
return modemDefaultRates[modemName];
}
return 0;
}
ModemArgInfoList Modem::getSettings() {
ModemArgInfoList args;
return args;
}
int Modem::getDefaultSampleRate() {
return 200000;
}
void Modem::writeSetting(std::string /* setting */, std::string /* value */) {
// ...
}
std::string Modem::readSetting(std::string /* setting */) {
return "";
}
void Modem::writeSettings(ModemSettings settings) {
for (ModemSettings::const_iterator i = settings.begin(); i != settings.end(); i++) {
writeSetting(i->first, i->second);
}
}
ModemSettings Modem::readSettings() {
ModemArgInfoList args = getSettings();
ModemSettings rs;
for (ModemArgInfoList::const_iterator i = args.begin(); i != args.end(); i++) {
rs[i->key] = readSetting(i->key);
}
return rs;
}
bool Modem::shouldRebuildKit() {
return refreshKit.load();
}
void Modem::rebuildKit() {
refreshKit.store(true);
}
void Modem::clearRebuildKit() {
refreshKit.store(false);
}
bool Modem::useSignalOutput() {
return _useSignalOutput.load();
}
void Modem::useSignalOutput(bool useOutput) {
_useSignalOutput.store(useOutput);
}