feat(simu): cross-platform connection of host serial ports to simu radio (#5584)

This commit is contained in:
Nigel Williams
2024-12-16 20:00:42 +10:00
committed by GitHub
parent 8885016fd5
commit 9109d4f46f
22 changed files with 789 additions and 808 deletions
@@ -32,6 +32,7 @@
#ifdef JOYSTICKS
#include "joystickdialog.h"
#endif
#include "serialportsdialog.h"
#include <QDebug>
#include <QDir>
@@ -82,6 +83,8 @@ SimulatorMainWindow::SimulatorMainWindow(QWidget *parent, const QString & simula
m_simulator->moveToThread(&simuThread);
simuThread.start();
hostSerialConnector = new HostSerialConnector(this, m_simulator);
ui->setupUi(this);
setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea);
@@ -131,6 +134,7 @@ SimulatorMainWindow::SimulatorMainWindow(QWidget *parent, const QString & simula
connect(ui->actionShowKeymap, &QAction::triggered, this, &SimulatorMainWindow::showHelp);
connect(ui->actionJoystickSettings, &QAction::triggered, this, &SimulatorMainWindow::openJoystickDialog);
connect(ui->actionSerialPorts, &QAction::triggered, this, &SimulatorMainWindow::openSerialPortsDialog);
connect(ui->actionToggleMenuBar, &QAction::toggled, this, &SimulatorMainWindow::showMenuBar);
connect(ui->actionFixedRadioWidth, &QAction::toggled, this, &SimulatorMainWindow::showRadioFixedWidth);
connect(ui->actionFixedRadioHeight, &QAction::toggled, this, &SimulatorMainWindow::showRadioFixedHeight);
@@ -150,6 +154,12 @@ SimulatorMainWindow::SimulatorMainWindow(QWidget *parent, const QString & simula
connect(ui->actionScreenshot, &QAction::triggered, m_simulatorWidget, &SimulatorWidget::captureScreenshot);
connect(m_simulatorWidget, &SimulatorWidget::windowTitleChanged, this, &SimulatorMainWindow::setWindowTitle);
}
connect(m_simulator, &SimulatorInterface::auxSerialSendData, hostSerialConnector, &HostSerialConnector::sendSerialData);
connect(m_simulator, &SimulatorInterface::auxSerialSetEncoding, hostSerialConnector, &HostSerialConnector::setSerialEncoding);
connect(m_simulator, &SimulatorInterface::auxSerialSetBaudrate, hostSerialConnector, &HostSerialConnector::setSerialBaudRate);
connect(m_simulator, &SimulatorInterface::auxSerialStart, hostSerialConnector, &HostSerialConnector::serialStart);
connect(m_simulator, &SimulatorInterface::auxSerialStop, hostSerialConnector, &HostSerialConnector::serialStop);
}
SimulatorMainWindow::~SimulatorMainWindow()
@@ -171,6 +181,8 @@ SimulatorMainWindow::~SimulatorMainWindow()
}
delete m_simulator;
}
delete hostSerialConnector;
SimulatorLoader::unloadSimulator(m_simulatorId);
}
@@ -470,6 +482,16 @@ void SimulatorMainWindow::openJoystickDialog(bool)
#endif
}
void SimulatorMainWindow::openSerialPortsDialog(bool)
{
SerialPortsDialog * dialog = new SerialPortsDialog(this, m_simulator, hostSerialConnector);
if (dialog->exec() == QDialog::Accepted && m_simulator) {
hostSerialConnector->connectSerialPort(0, dialog->aux1);
hostSerialConnector->connectSerialPort(1, dialog->aux2);
}
dialog->deleteLater();
}
void SimulatorMainWindow::showHelp(bool show)
{
QString helpText = ""