/////////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2020 Edouard Griffiths, F4EXB // // // // This program is free software; you can redistribute it and/or modify // // it under the terms of the GNU General Public License as published by // // the Free Software Foundation as version 3 of the License, or // // (at your option) any later version. // // // // This program is distributed in the hope that it will be useful, // // but WITHOUT ANY WARRANTY; without even the implied warranty of // // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // // GNU General Public License V3 for more details. // // // // You should have received a copy of the GNU General Public License // // along with this program. If not, see . // /////////////////////////////////////////////////////////////////////////////////// #include #include #include #include "loggerwithfile.h" #include "dsp/dsptypes.h" #include "feature/featureset.h" #include "device/deviceset.h" #include "maincore.h" MESSAGE_CLASS_DEFINITION(MainCore::MsgDeviceSetFocus, Message) MESSAGE_CLASS_DEFINITION(MainCore::MsgDVSerial, Message) MESSAGE_CLASS_DEFINITION(MainCore::MsgDeleteInstance, Message) MESSAGE_CLASS_DEFINITION(MainCore::MsgLoadPreset, Message) MESSAGE_CLASS_DEFINITION(MainCore::MsgSavePreset, Message) MESSAGE_CLASS_DEFINITION(MainCore::MsgDeletePreset, Message) MESSAGE_CLASS_DEFINITION(MainCore::MsgLoadFeatureSetPreset, Message) MESSAGE_CLASS_DEFINITION(MainCore::MsgSaveFeatureSetPreset, Message) MESSAGE_CLASS_DEFINITION(MainCore::MsgDeleteFeatureSetPreset, Message) MESSAGE_CLASS_DEFINITION(MainCore::MsgAddDeviceSet, Message) MESSAGE_CLASS_DEFINITION(MainCore::MsgRemoveLastDeviceSet, Message) MESSAGE_CLASS_DEFINITION(MainCore::MsgSetDevice, Message) MESSAGE_CLASS_DEFINITION(MainCore::MsgAddChannel, Message) MESSAGE_CLASS_DEFINITION(MainCore::MsgDeleteChannel, Message) MESSAGE_CLASS_DEFINITION(MainCore::MsgApplySettings, Message) MESSAGE_CLASS_DEFINITION(MainCore::MsgAddFeature, Message) MESSAGE_CLASS_DEFINITION(MainCore::MsgDeleteFeature, Message) MainCore::MainCore() { m_masterTimer.setTimerType(Qt::PreciseTimer); m_masterTimer.start(50); } MainCore::~MainCore() {} Q_GLOBAL_STATIC(MainCore, mainCore) MainCore *MainCore::instance() { return mainCore; } void MainCore::setLoggingOptions() { m_logger->setConsoleMinMessageLevel(m_settings.getConsoleMinLogLevel()); if (m_settings.getUseLogFile()) { qtwebapp::FileLoggerSettings fileLoggerSettings; // default values if (m_logger->hasFileLogger()) { fileLoggerSettings = m_logger->getFileLoggerSettings(); // values from file logger if it exists } fileLoggerSettings.fileName = m_settings.getLogFileName(); // put new values m_logger->createOrSetFileLogger(fileLoggerSettings, 2000); // create file logger if it does not exist and apply settings in any case } if (m_logger->hasFileLogger()) { m_logger->setFileMinMessageLevel(m_settings.getFileMinLogLevel()); } m_logger->setUseFileLogger(m_settings.getUseLogFile()); if (m_settings.getUseLogFile()) { #if QT_VERSION >= 0x050400 QString appInfoStr(QString("%1 %2 Qt %3 %4b %5 %6 DSP Rx:%7b Tx:%8b PID %9") .arg(QCoreApplication::applicationName()) .arg(QCoreApplication::applicationVersion()) .arg(QT_VERSION_STR) .arg(QT_POINTER_SIZE*8) .arg(QSysInfo::currentCpuArchitecture()) .arg(QSysInfo::prettyProductName()) .arg(SDR_RX_SAMP_SZ) .arg(SDR_TX_SAMP_SZ) .arg(QCoreApplication::applicationPid())); #else QString appInfoStr(QString("%1 %2 Qt %3 %4b DSP Rx:%5b Tx:%6b PID %7") .arg(QCoreApplication::applicationName()) .arg(QCoreApplication::applicationVersion()) .arg(QT_VERSION_STR) .arg(QT_POINTER_SIZE*8) .arg(SDR_RX_SAMP_SZ) .arg(SDR_RX_SAMP_SZ) .arg(QCoreApplication::applicationPid()); #endif m_logger->logToFile(QtInfoMsg, appInfoStr); } } ChannelAPI *MainCore::getChannel(int deviceSetIndex, int channelIndex) { if ((deviceSetIndex >= 0) && (deviceSetIndex < m_deviceSets.size())) { return m_deviceSets[deviceSetIndex]->getChannelAt(channelIndex); } else { return nullptr; } } Feature *MainCore::getFeature(int featureSetIndex, int featureIndex) { if ((featureSetIndex >= 0) && (featureSetIndex < m_featureSets.size())) { return m_featureSets[featureSetIndex]->getFeatureAt(featureIndex); } else { return nullptr; } } void MainCore::appendFeatureSet() { int newIndex = m_featureSets.size(); m_featureSets.push_back(new FeatureSet(newIndex)); } void MainCore::removeFeatureSet(int index) { if (index < m_featureSets.size()) { m_featureSets.erase(m_featureSets.begin() + index); } } void MainCore::removeLastFeatureSet() { if (m_featureSets.size() != 0) { m_featureSets.pop_back(); } } void MainCore::appendDeviceSet(int deviceType) { int newIndex = m_deviceSets.size(); m_deviceSets.push_back(new DeviceSet(newIndex, deviceType)); } void MainCore::removeLastDeviceSet() { if (m_deviceSets.size() != 0) { m_deviceSets.pop_back(); } }