1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-08-15 12:12:28 -04:00

New AMBE engine (3)

This commit is contained in:
f4exb 2019-07-20 23:25:00 +02:00
parent f04b6eb975
commit 144b0db196
19 changed files with 133 additions and 147 deletions

View File

@ -33,7 +33,12 @@
#endif #endif
#endif #endif
#include <chrono>
#include <thread>
#include <QThread> #include <QThread>
#include <QBuffer>
#include <QDataStream>
#include "ambeworker.h" #include "ambeworker.h"
#include "ambeengine.h" #include "ambeengine.h"
@ -42,10 +47,12 @@ AMBEEngine::AMBEEngine()
{} {}
AMBEEngine::~AMBEEngine() AMBEEngine::~AMBEEngine()
{} {
qDebug("AMBEEngine::~AMBEEngine: %lu controllers", m_controllers.size());
}
#ifdef __WINDOWS__ #ifdef __WINDOWS__
void DVSerialEngine::getComList() void AMBEEngine::getComList()
{ {
m_comList.clear(); m_comList.clear();
m_comList8250.clear(); m_comList8250.clear();
@ -100,8 +107,8 @@ void AMBEEngine::getComList()
#ifndef __WINDOWS__ #ifndef __WINDOWS__
void AMBEEngine::register_comport( void AMBEEngine::register_comport(
std::list<std::string>& comList, std::vector<std::string>& comList,
std::list<std::string>& comList8250, std::vector<std::string>& comList8250,
const std::string& dir) const std::string& dir)
{ {
// Get the driver the device is using // Get the driver the device is using
@ -123,11 +130,11 @@ void AMBEEngine::register_comport(
} }
void AMBEEngine::probe_serial8250_comports( void AMBEEngine::probe_serial8250_comports(
std::list<std::string>& comList, std::vector<std::string>& comList,
std::list<std::string> comList8250) std::vector<std::string> comList8250)
{ {
struct serial_struct serinfo; struct serial_struct serinfo;
std::list<std::string>::iterator it = comList8250.begin(); std::vector<std::string>::iterator it = comList8250.begin();
// Iterate over all serial8250-devices // Iterate over all serial8250-devices
while (it != comList8250.end()) while (it != comList8250.end())
@ -177,16 +184,17 @@ std::string AMBEEngine::get_driver(const std::string& tty)
} }
#endif // not Windows #endif // not Windows
bool AMBEEngine::scan(std::vector<QString>& ambeDevices) void AMBEEngine::scan(std::vector<QString>& ambeDevices)
{ {
getComList(); getComList();
std::list<std::string>::const_iterator it = m_comList.begin(); std::vector<std::string>::const_iterator it = m_comList.begin();
ambeDevices.clear(); ambeDevices.clear();
while (it != m_comList.end()) while (it != m_comList.end())
{ {
AMBEWorker *worker = new AMBEWorker(); AMBEWorker *worker = new AMBEWorker();
qDebug("AMBEEngine::scan: com: %s", it->c_str()); qDebug("AMBEEngine::scan: com: %s", it->c_str());
if (worker->open(*it)) if (worker->open(*it))
{ {
ambeDevices.push_back(QString(it->c_str())); ambeDevices.push_back(QString(it->c_str()));
@ -214,6 +222,7 @@ bool AMBEEngine::registerController(const std::string& deviceRef)
connect(m_controllers.back().worker, SIGNAL(finished()), m_controllers.back().worker, SLOT(deleteLater())); connect(m_controllers.back().worker, SIGNAL(finished()), m_controllers.back().worker, SLOT(deleteLater()));
connect(m_controllers.back().thread, SIGNAL(finished()), m_controllers.back().thread, SLOT(deleteLater())); connect(m_controllers.back().thread, SIGNAL(finished()), m_controllers.back().thread, SLOT(deleteLater()));
connect(&m_controllers.back().worker->m_inputMessageQueue, SIGNAL(messageEnqueued()), m_controllers.back().worker, SLOT(handleInputMessages())); connect(&m_controllers.back().worker->m_inputMessageQueue, SIGNAL(messageEnqueued()), m_controllers.back().worker, SLOT(handleInputMessages()));
std::this_thread::sleep_for(std::chrono::seconds(1));
m_controllers.back().thread->start(); m_controllers.back().thread->start();
return true; return true;
@ -224,7 +233,6 @@ bool AMBEEngine::registerController(const std::string& deviceRef)
void AMBEEngine::releaseController(const std::string& deviceRef) void AMBEEngine::releaseController(const std::string& deviceRef)
{ {
qDebug("AMBEEngine::releaseController");
std::vector<AMBEController>::iterator it = m_controllers.begin(); std::vector<AMBEController>::iterator it = m_controllers.begin();
while (it != m_controllers.end()) while (it != m_controllers.end())
@ -237,7 +245,7 @@ void AMBEEngine::releaseController(const std::string& deviceRef)
it->worker->m_inputMessageQueue.clear(); it->worker->m_inputMessageQueue.clear();
it->worker->close(); it->worker->close();
m_controllers.erase(it); m_controllers.erase(it);
qDebug() << "DVSerialEngine::releaseController: closed device at: " << it->device.c_str(); qDebug() << "AMBEEngine::releaseController: closed device at: " << it->device.c_str();
break; break;
} }
@ -247,7 +255,6 @@ void AMBEEngine::releaseController(const std::string& deviceRef)
void AMBEEngine::releaseAll() void AMBEEngine::releaseAll()
{ {
qDebug("AMBEEngine::releaseAll");
std::vector<AMBEController>::iterator it = m_controllers.begin(); std::vector<AMBEController>::iterator it = m_controllers.begin();
while (it != m_controllers.end()) while (it != m_controllers.end())
@ -257,7 +264,7 @@ void AMBEEngine::releaseAll()
it->thread->wait(100); it->thread->wait(100);
it->worker->m_inputMessageQueue.clear(); it->worker->m_inputMessageQueue.clear();
it->worker->close(); it->worker->close();
qDebug() << "DVSerialEngine::release: closed device at: " << it->device.c_str(); qDebug() << "AMBEEngine::release: closed device at: " << it->device.c_str();
++it; ++it;
} }
@ -319,3 +326,47 @@ void AMBEEngine::pushMbeFrame(
} }
} }
} }
QByteArray AMBEEngine::serialize() const
{
QStringList qDeviceList;
std::vector<AMBEController>::const_iterator it = m_controllers.begin();
while (it != m_controllers.end())
{
qDebug("AMBEEngine::serialize: %s", it->device.c_str());
qDeviceList << QString(it->device.c_str());
++it;
}
QByteArray data;
QDataStream *stream = new QDataStream(&data, QIODevice::WriteOnly);
(*stream) << qDeviceList;
delete stream;
return data;
}
bool AMBEEngine::deserialize(const QByteArray& data)
{
if (data.size() <= 0)
{
qDebug("AMBEEngine::deserialize: invalid or no data");
return false;
}
QStringList qDeviceList;
QDataStream *stream = new QDataStream(data);
(*stream) >> qDeviceList;
delete stream;
releaseAll();
for (int i = 0; i < qDeviceList.size(); ++i)
{
qDebug(" AMBEEngine::deserialize: %s", qDeviceList.at(i).toStdString().c_str());
registerController(qDeviceList.at(i).toStdString());
}
return true;
}

View File

@ -21,11 +21,11 @@
#include <vector> #include <vector>
#include <string> #include <string>
#include <list>
#include <QObject> #include <QObject>
#include <QMutex> #include <QMutex>
#include <QString> #include <QString>
#include <QByteArray>
#include "export.h" #include "export.h"
@ -40,7 +40,7 @@ public:
AMBEEngine(); AMBEEngine();
~AMBEEngine(); ~AMBEEngine();
bool scan(std::vector<QString>& ambeDevices); void scan(std::vector<QString>& ambeDevices);
void releaseAll(); void releaseAll();
int getNbDevices() const { return m_controllers.size(); } //!< number of devices used int getNbDevices() const { return m_controllers.size(); } //!< number of devices used
@ -57,9 +57,17 @@ public:
int upsampling, int upsampling,
AudioFifo *audioFifo); AudioFifo *audioFifo);
QByteArray serialize() const;
bool deserialize(const QByteArray& data);
private: private:
struct AMBEController struct AMBEController
{ {
AMBEController() :
thread(nullptr),
worker(nullptr)
{}
QThread *thread; QThread *thread;
AMBEWorker *worker; AMBEWorker *worker;
std::string device; std::string device;
@ -67,14 +75,14 @@ private:
#ifndef __WINDOWS__ #ifndef __WINDOWS__
static std::string get_driver(const std::string& tty); static std::string get_driver(const std::string& tty);
static void register_comport(std::list<std::string>& comList, std::list<std::string>& comList8250, const std::string& dir); static void register_comport(std::vector<std::string>& comList, std::vector<std::string>& comList8250, const std::string& dir);
static void probe_serial8250_comports(std::list<std::string>& comList, std::list<std::string> comList8250); static void probe_serial8250_comports(std::vector<std::string>& comList, std::vector<std::string> comList8250);
#endif #endif
void getComList(); void getComList();
std::list<std::string> m_comList;
std::list<std::string> m_comList8250;
std::vector<AMBEController> m_controllers; std::vector<AMBEController> m_controllers;
std::vector<std::string> m_comList;
std::vector<std::string> m_comList8250;
QMutex m_mutex; QMutex m_mutex;
}; };

View File

@ -200,7 +200,7 @@ void AMBEWorker::noUpsample(short *in, int nbSamplesIn, unsigned char channels)
} }
else else
{ {
qDebug("DVSerialWorker::noUpsample: audio buffer is full check its size"); qDebug("AMBEWorker::noUpsample: audio buffer is full check its size");
} }
} }
} }

View File

@ -155,44 +155,25 @@ DSPDeviceMIMOEngine *DSPEngine::getDeviceMIMOEngineByUID(uint uid)
return nullptr; return nullptr;
} }
#ifdef DSD_USE_SERIALDV
void DSPEngine::setDVSerialSupport(bool support)
{
if (support)
{
m_dvSerialSupport = m_dvSerialEngine.scan();
}
else
{
m_dvSerialEngine.release();
m_dvSerialSupport = false;
}
}
#else
void DSPEngine::setDVSerialSupport(bool support)
{ (void) support; }
#endif
bool DSPEngine::hasDVSerialSupport() bool DSPEngine::hasDVSerialSupport()
{ {
#ifdef DSD_USE_SERIALDV return m_ambeEngine.getNbDevices() > 0;
return m_dvSerialSupport;
#else
return false;
#endif
} }
#ifdef DSD_USE_SERIALDV void DSPEngine::setDVSerialSupport(bool support)
{ (void) support; }
void DSPEngine::getDVSerialNames(std::vector<std::string>& deviceNames) void DSPEngine::getDVSerialNames(std::vector<std::string>& deviceNames)
{ {
m_dvSerialEngine.getDevicesNames(deviceNames); std::vector<QString> qDeviceRefs;
} m_ambeEngine.getDeviceRefs(qDeviceRefs);
#else deviceNames.clear();
void DSPEngine::getDVSerialNames(std::vector<std::string>& deviceNames)
{ (void) deviceNames; } for (std::vector<QString>::const_iterator it = qDeviceRefs.begin(); it != qDeviceRefs.end(); ++it) {
#endif deviceNames.push_back(it->toStdString());
}
}
#ifdef DSD_USE_SERIALDV
void DSPEngine::pushMbeFrame( void DSPEngine::pushMbeFrame(
const unsigned char *mbeFrame, const unsigned char *mbeFrame,
int mbeRateIndex, int mbeRateIndex,
@ -202,24 +183,5 @@ void DSPEngine::pushMbeFrame(
int upsampling, int upsampling,
AudioFifo *audioFifo) AudioFifo *audioFifo)
{ {
m_dvSerialEngine.pushMbeFrame(mbeFrame, mbeRateIndex, mbeVolumeIndex, channels, useHP, upsampling, audioFifo); m_ambeEngine.pushMbeFrame(mbeFrame, mbeRateIndex, mbeVolumeIndex, channels, useHP, upsampling, audioFifo);
} }
#else
void DSPEngine::pushMbeFrame(
const unsigned char *mbeFrame,
int mbeRateIndex,
int mbeVolumeIndex,
unsigned char channels,
bool useHP,
int upsampling,
AudioFifo *audioFifo)
{
(void) mbeFrame;
(void) mbeRateIndex;
(void) mbeVolumeIndex;
(void) channels;
(void) useHP;
(void) upsampling;
(void) audioFifo;
}
#endif

View File

@ -27,9 +27,6 @@
#include "audio/audiooutput.h" #include "audio/audiooutput.h"
#include "audio/audioinput.h" #include "audio/audioinput.h"
#include "export.h" #include "export.h"
#ifdef DSD_USE_SERIALDV
#include "dsp/dvserialengine.h"
#endif
#include "ambe/ambeengine.h" #include "ambe/ambeengine.h"
class DSPDeviceSourceEngine; class DSPDeviceSourceEngine;
@ -56,6 +53,7 @@ public:
void removeLastDeviceMIMOEngine(); void removeLastDeviceMIMOEngine();
AudioDeviceManager *getAudioDeviceManager() { return &m_audioDeviceManager; } AudioDeviceManager *getAudioDeviceManager() { return &m_audioDeviceManager; }
AMBEEngine *getAMBEEngine() { return &m_ambeEngine; }
uint32_t getDeviceSourceEnginesNumber() const { return m_deviceSourceEngines.size(); } uint32_t getDeviceSourceEnginesNumber() const { return m_deviceSourceEngines.size(); }
DSPDeviceSourceEngine *getDeviceSourceEngineByIndex(uint deviceIndex) { return m_deviceSourceEngines[deviceIndex]; } DSPDeviceSourceEngine *getDeviceSourceEngineByIndex(uint deviceIndex) { return m_deviceSourceEngines[deviceIndex]; }
@ -82,7 +80,6 @@ public:
bool useHP, bool useHP,
int upsampling, int upsampling,
AudioFifo *audioFifo); AudioFifo *audioFifo);
AMBEEngine& getAMBEEngine() { return m_ambeEngine; }
const QTimer& getMasterTimer() const { return m_masterTimer; } const QTimer& getMasterTimer() const { return m_masterTimer; }
void setMIMOSupport(bool mimoSupport) { m_mimoSupport = mimoSupport; } void setMIMOSupport(bool mimoSupport) { m_mimoSupport = mimoSupport; }
@ -101,9 +98,6 @@ private:
QTimer m_masterTimer; QTimer m_masterTimer;
bool m_dvSerialSupport; bool m_dvSerialSupport;
bool m_mimoSupport; bool m_mimoSupport;
#ifdef DSD_USE_SERIALDV
DVSerialEngine m_dvSerialEngine;
#endif
AMBEEngine m_ambeEngine; AMBEEngine m_ambeEngine;
}; };

View File

@ -707,7 +707,7 @@ margin-bottom: 20px;
"description" : "1 if device is to be removed from active list" "description" : "1 if device is to be removed from active list"
} }
}, },
"description" : "AMBE devices actibe in the system" "description" : "AMBE devices active in the system"
}; };
defs.AMBEDevices = { defs.AMBEDevices = {
"required" : [ "nbDevices" ], "required" : [ "nbDevices" ],
@ -27046,7 +27046,7 @@ except ApiException as e:
</div> </div>
<div id="generator"> <div id="generator">
<div class="content"> <div class="content">
Generated 2019-07-19T18:33:26.198+02:00 Generated 2019-07-20T20:43:22.760+02:00
</div> </div>
</div> </div>
</div> </div>

View File

@ -1767,7 +1767,7 @@ definitions:
$ref: "#/definitions/AMBEDevice" $ref: "#/definitions/AMBEDevice"
AMBEDevice: AMBEDevice:
description: "AMBE devices actibe in the system" description: "AMBE devices active in the system"
properties: properties:
deviceRef: deviceRef:
description: "Serial device name or server address" description: "Serial device name or server address"

View File

@ -3,8 +3,12 @@
#include "settings/mainsettings.h" #include "settings/mainsettings.h"
#include "commands/command.h" #include "commands/command.h"
#include "audio/audiodevicemanager.h"
#include "ambe/ambeengine.h"
MainSettings::MainSettings() : m_audioDeviceManager(0) MainSettings::MainSettings() :
m_audioDeviceManager(nullptr),
m_ambeEngine(nullptr)
{ {
resetToDefaults(); resetToDefaults();
qInfo("MainSettings::MainSettings: settings file: format: %d location: %s", getFileFormat(), qPrintable(getFileLocation())); qInfo("MainSettings::MainSettings: settings file: format: %d location: %s", getFileFormat(), qPrintable(getFileLocation()));
@ -42,11 +46,14 @@ void MainSettings::load()
m_preferences.deserialize(qUncompress(QByteArray::fromBase64(s.value("preferences").toByteArray()))); m_preferences.deserialize(qUncompress(QByteArray::fromBase64(s.value("preferences").toByteArray())));
m_workingPreset.deserialize(qUncompress(QByteArray::fromBase64(s.value("current").toByteArray()))); m_workingPreset.deserialize(qUncompress(QByteArray::fromBase64(s.value("current").toByteArray())));
if (m_audioDeviceManager) if (m_audioDeviceManager) {
{
m_audioDeviceManager->deserialize(qUncompress(QByteArray::fromBase64(s.value("audio").toByteArray()))); m_audioDeviceManager->deserialize(qUncompress(QByteArray::fromBase64(s.value("audio").toByteArray())));
} }
if (m_ambeEngine) {
m_ambeEngine->deserialize(qUncompress(QByteArray::fromBase64(s.value("ambe").toByteArray())));
}
QStringList groups = s.childGroups(); QStringList groups = s.childGroups();
for(int i = 0; i < groups.size(); ++i) for(int i = 0; i < groups.size(); ++i)
@ -95,11 +102,14 @@ void MainSettings::save() const
s.setValue("preferences", qCompress(m_preferences.serialize()).toBase64()); s.setValue("preferences", qCompress(m_preferences.serialize()).toBase64());
s.setValue("current", qCompress(m_workingPreset.serialize()).toBase64()); s.setValue("current", qCompress(m_workingPreset.serialize()).toBase64());
if (m_audioDeviceManager) if (m_audioDeviceManager) {
{
s.setValue("audio", qCompress(m_audioDeviceManager->serialize()).toBase64()); s.setValue("audio", qCompress(m_audioDeviceManager->serialize()).toBase64());
} }
if (m_ambeEngine) {
s.setValue("ambe", qCompress(m_ambeEngine->serialize()).toBase64());
}
QStringList groups = s.childGroups(); QStringList groups = s.childGroups();
for(int i = 0; i < groups.size(); ++i) for(int i = 0; i < groups.size(); ++i)

View File

@ -2,13 +2,14 @@
#define INCLUDE_SETTINGS_H #define INCLUDE_SETTINGS_H
#include <QString> #include <QString>
#include "audio/audiodevicemanager.h"
#include "device/deviceuserargs.h" #include "device/deviceuserargs.h"
#include "preferences.h" #include "preferences.h"
#include "preset.h" #include "preset.h"
#include "export.h" #include "export.h"
class Command; class Command;
class AudioDeviceManager;
class AMBEEngine;
class SDRBASE_API MainSettings { class SDRBASE_API MainSettings {
public: public:
@ -63,6 +64,7 @@ public:
const AudioDeviceManager *getAudioDeviceManager() const { return m_audioDeviceManager; } const AudioDeviceManager *getAudioDeviceManager() const { return m_audioDeviceManager; }
void setAudioDeviceManager(AudioDeviceManager *audioDeviceManager) { m_audioDeviceManager = audioDeviceManager; } void setAudioDeviceManager(AudioDeviceManager *audioDeviceManager) { m_audioDeviceManager = audioDeviceManager; }
void setAMBEEngine(AMBEEngine *ambeEngine) { m_ambeEngine = ambeEngine; }
protected: protected:
Preferences m_preferences; Preferences m_preferences;
@ -73,6 +75,7 @@ protected:
typedef QList<Command*> Commands; typedef QList<Command*> Commands;
Commands m_commands; Commands m_commands;
DeviceUserArgs m_hardwareDeviceUserArgs; DeviceUserArgs m_hardwareDeviceUserArgs;
AMBEEngine *m_ambeEngine;
}; };
#endif // INCLUDE_SETTINGS_H #endif // INCLUDE_SETTINGS_H

View File

@ -24,7 +24,7 @@
ParserBench::ParserBench() : ParserBench::ParserBench() :
m_testOption(QStringList() << "t" << "test", m_testOption(QStringList() << "t" << "test",
"Test type.", "Test type: decimateii, decimatefi, decimateff, decimateif, decimateinfii, decimatesupii, ambe",
"test", "test",
"decimateii"), "decimateii"),
m_nbSamplesOption(QStringList() << "n" << "nb-samples", m_nbSamplesOption(QStringList() << "n" << "nb-samples",

View File

@ -22,7 +22,7 @@
#include "ambedevicesdialog.h" #include "ambedevicesdialog.h"
#include "ui_ambedevicesdialog.h" #include "ui_ambedevicesdialog.h"
AMBEDevicesDialog::AMBEDevicesDialog(AMBEEngine& ambeEngine, QWidget* parent) : AMBEDevicesDialog::AMBEDevicesDialog(AMBEEngine* ambeEngine, QWidget* parent) :
QDialog(parent), QDialog(parent),
ui(new Ui::AMBEDevicesDialog), ui(new Ui::AMBEDevicesDialog),
m_ambeEngine(ambeEngine) m_ambeEngine(ambeEngine)
@ -40,7 +40,7 @@ AMBEDevicesDialog::~AMBEDevicesDialog()
void AMBEDevicesDialog::populateSerialList() void AMBEDevicesDialog::populateSerialList()
{ {
std::vector<QString> ambeSerialDevices; std::vector<QString> ambeSerialDevices;
m_ambeEngine.scan(ambeSerialDevices); m_ambeEngine->scan(ambeSerialDevices);
ui->ambeSerialDevices->clear(); ui->ambeSerialDevices->clear();
std::vector<QString>::const_iterator it = ambeSerialDevices.begin(); std::vector<QString>::const_iterator it = ambeSerialDevices.begin();
@ -53,7 +53,7 @@ void AMBEDevicesDialog::populateSerialList()
void AMBEDevicesDialog::refreshInUseList() void AMBEDevicesDialog::refreshInUseList()
{ {
std::vector<QString> inUseDevices; std::vector<QString> inUseDevices;
m_ambeEngine.getDeviceRefs(inUseDevices); m_ambeEngine->getDeviceRefs(inUseDevices);
ui->ambeDeviceRefs->clear(); ui->ambeDeviceRefs->clear();
std::vector<QString>::const_iterator it = inUseDevices.begin(); std::vector<QString>::const_iterator it = inUseDevices.begin();
@ -80,7 +80,7 @@ void AMBEDevicesDialog::on_importSerial_clicked(bool checked)
if (foundItems.size() == 0) if (foundItems.size() == 0)
{ {
if (m_ambeEngine.registerController(serialName.toStdString())) if (m_ambeEngine->registerController(serialName.toStdString()))
{ {
ui->ambeDeviceRefs->addItem(serialName); ui->ambeDeviceRefs->addItem(serialName);
ui->statusText->setText(tr("%1 added").arg(serialName)); ui->statusText->setText(tr("%1 added").arg(serialName));
@ -109,7 +109,7 @@ void AMBEDevicesDialog::on_importAllSerial_clicked(bool checked)
if (foundItems.size() == 0) if (foundItems.size() == 0)
{ {
if (m_ambeEngine.registerController(serialName.toStdString())) if (m_ambeEngine->registerController(serialName.toStdString()))
{ {
ui->ambeDeviceRefs->addItem(serialName); ui->ambeDeviceRefs->addItem(serialName);
count++; count++;
@ -132,7 +132,7 @@ void AMBEDevicesDialog::on_removeAmbeDevice_clicked(bool checked)
} }
QString deviceName = deviceItem->text(); QString deviceName = deviceItem->text();
m_ambeEngine.releaseController(deviceName.toStdString()); m_ambeEngine->releaseController(deviceName.toStdString());
ui->statusText->setText(tr("%1 removed").arg(deviceName)); ui->statusText->setText(tr("%1 removed").arg(deviceName));
refreshInUseList(); refreshInUseList();
} }
@ -151,7 +151,7 @@ void AMBEDevicesDialog::on_clearAmbeList_clicked(bool checked)
return; return;
} }
m_ambeEngine.releaseAll(); m_ambeEngine->releaseAll();
ui->ambeDeviceRefs->clear(); ui->ambeDeviceRefs->clear();
ui->statusText->setText("All items released"); ui->statusText->setText("All items released");
} }
@ -164,7 +164,7 @@ void AMBEDevicesDialog::on_importAddress_clicked(bool checked)
if (foundItems.size() == 0) if (foundItems.size() == 0)
{ {
if (m_ambeEngine.registerController(addressAndPort.toStdString())) if (m_ambeEngine->registerController(addressAndPort.toStdString()))
{ {
ui->ambeDeviceRefs->addItem(addressAndPort); ui->ambeDeviceRefs->addItem(addressAndPort);
ui->statusText->setText(tr("%1 added").arg(addressAndPort)); ui->statusText->setText(tr("%1 added").arg(addressAndPort));

View File

@ -34,7 +34,7 @@ class SDRGUI_API AMBEDevicesDialog : public QDialog {
Q_OBJECT Q_OBJECT
public: public:
explicit AMBEDevicesDialog(AMBEEngine& ambeEngine, QWidget* parent = nullptr); explicit AMBEDevicesDialog(AMBEEngine* ambeEngine, QWidget* parent = nullptr);
~AMBEDevicesDialog(); ~AMBEDevicesDialog();
private: private:
@ -42,7 +42,7 @@ private:
void refreshInUseList(); void refreshInUseList();
Ui::AMBEDevicesDialog* ui; Ui::AMBEDevicesDialog* ui;
AMBEEngine& m_ambeEngine; AMBEEngine* m_ambeEngine;
private slots: private slots:
void on_importSerial_clicked(bool checked); void on_importSerial_clicked(bool checked);

View File

@ -123,6 +123,7 @@ MainWindow::MainWindow(qtwebapp::LoggerWithFile *logger, const MainParser& parse
splash->showStatusMessage("starting...", Qt::white); splash->showStatusMessage("starting...", Qt::white);
m_settings.setAudioDeviceManager(m_dspEngine->getAudioDeviceManager()); m_settings.setAudioDeviceManager(m_dspEngine->getAudioDeviceManager());
m_settings.setAMBEEngine(m_dspEngine->getAMBEEngine());
ui->setupUi(this); ui->setupUi(this);
createStatusBar(); createStatusBar();
@ -1628,48 +1629,6 @@ void MainWindow::on_action_AMBE_triggered()
ambeDevicesDialog.exec(); ambeDevicesDialog.exec();
} }
void MainWindow::on_action_DV_Serial_triggered(bool checked)
{
m_dspEngine->setDVSerialSupport(checked);
if (checked)
{
if (m_dspEngine->hasDVSerialSupport())
{
std::vector<std::string> deviceNames;
m_dspEngine->getDVSerialNames(deviceNames);
if (deviceNames.size() == 0)
{
QMessageBox::information(this, tr("Message"), tr("No DV serial devices found"));
qDebug("MainWindow::on_action_DV_Serial_triggered: No DV serial devices found");
}
else
{
std::vector<std::string>::iterator it = deviceNames.begin();
std::string deviceNamesStr = "DV Serial devices found: ";
while (it != deviceNames.end())
{
if (it != deviceNames.begin()) {
deviceNamesStr += ",";
}
deviceNamesStr += *it;
++it;
}
QMessageBox::information(this, tr("Message"), tr(deviceNamesStr.c_str()));
}
}
else
{
QMessageBox::information(this, tr("Message"), tr("No DV serial support"));
qDebug("MainWindow::on_action_DV_Serial_triggered: No DV serial support");
}
}
}
void MainWindow::sampleSourceChanged() void MainWindow::sampleSourceChanged()
{ {
// Do it in the currently selected source tab // Do it in the currently selected source tab

View File

@ -380,7 +380,6 @@ private slots:
void on_action_Audio_triggered(); void on_action_Audio_triggered();
void on_action_Logging_triggered(); void on_action_Logging_triggered();
void on_action_AMBE_triggered(); void on_action_AMBE_triggered();
void on_action_DV_Serial_triggered(bool checked);
void on_action_My_Position_triggered(); void on_action_My_Position_triggered();
void on_action_DeviceUserArguments_triggered(); void on_action_DeviceUserArguments_triggered();
void sampleSourceChanged(); void sampleSourceChanged();

View File

@ -64,7 +64,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1012</width> <width>1012</width>
<height>19</height> <height>20</height>
</rect> </rect>
</property> </property>
<widget class="QMenu" name="menu_File"> <widget class="QMenu" name="menu_File">
@ -126,7 +126,6 @@
<addaction name="action_Audio"/> <addaction name="action_Audio"/>
<addaction name="action_Logging"/> <addaction name="action_Logging"/>
<addaction name="action_AMBE"/> <addaction name="action_AMBE"/>
<addaction name="action_DV_Serial"/>
<addaction name="action_My_Position"/> <addaction name="action_My_Position"/>
<addaction name="menuDevices"/> <addaction name="menuDevices"/>
</widget> </widget>

View File

@ -59,6 +59,7 @@ MainCore::MainCore(qtwebapp::LoggerWithFile *logger, const MainParser& parser, Q
m_instance = this; m_instance = this;
m_settings.setAudioDeviceManager(m_dspEngine->getAudioDeviceManager()); m_settings.setAudioDeviceManager(m_dspEngine->getAudioDeviceManager());
m_settings.setAMBEEngine(m_dspEngine->getAMBEEngine());
m_pluginManager = new PluginManager(this); m_pluginManager = new PluginManager(this);
m_pluginManager->loadPlugins(QString("pluginssrv")); m_pluginManager->loadPlugins(QString("pluginssrv"));

View File

@ -1767,7 +1767,7 @@ definitions:
$ref: "#/definitions/AMBEDevice" $ref: "#/definitions/AMBEDevice"
AMBEDevice: AMBEDevice:
description: "AMBE devices actibe in the system" description: "AMBE devices active in the system"
properties: properties:
deviceRef: deviceRef:
description: "Serial device name or server address" description: "Serial device name or server address"

View File

@ -707,7 +707,7 @@ margin-bottom: 20px;
"description" : "1 if device is to be removed from active list" "description" : "1 if device is to be removed from active list"
} }
}, },
"description" : "AMBE devices actibe in the system" "description" : "AMBE devices active in the system"
}; };
defs.AMBEDevices = { defs.AMBEDevices = {
"required" : [ "nbDevices" ], "required" : [ "nbDevices" ],
@ -27046,7 +27046,7 @@ except ApiException as e:
</div> </div>
<div id="generator"> <div id="generator">
<div class="content"> <div class="content">
Generated 2019-07-19T18:33:26.198+02:00 Generated 2019-07-20T20:43:22.760+02:00
</div> </div>
</div> </div>
</div> </div>

View File

@ -13,7 +13,7 @@
/* /*
* SWGAMBEDevice.h * SWGAMBEDevice.h
* *
* AMBE devices actibe in the system * AMBE devices active in the system
*/ */
#ifndef SWGAMBEDevice_H_ #ifndef SWGAMBEDevice_H_