diff --git a/src/ui/configuration/terminalconsole.cpp b/src/ui/configuration/terminalconsole.cpp
index e3d890d7b5d341c45e6a11fdcb124ec325054f8e..919c646671f269d21114b6b47161a2ce26236829 100644
--- a/src/ui/configuration/terminalconsole.cpp
+++ b/src/ui/configuration/terminalconsole.cpp
@@ -50,7 +50,8 @@ This file is part of the APM_PLANNER project
TerminalConsole::TerminalConsole(QWidget *parent) :
QWidget(parent),
- ui(new Ui::TerminalConsole)
+ ui(new Ui::TerminalConsole),
+ m_consoleMode(APM)
{
ui->setupUi(this);
@@ -71,6 +72,7 @@ TerminalConsole::TerminalConsole(QWidget *parent) :
ui->disconnectButton->setEnabled(false);
ui->settingsButton->setEnabled(true);
+
addBaudComboBoxConfig();
fillPortsInfo(*ui->linkComboBox);
@@ -82,12 +84,18 @@ TerminalConsole::TerminalConsole(QWidget *parent) :
ui->linkComboBox->setCurrentIndex(0);
}
- //setUiControls(m_settingsDialog);
+ addConsoleModesComboBoxConfig();
initConnections();
}
void TerminalConsole::addBaudComboBoxConfig()
+{
+ ui->consoleModeBox->addItem(QLatin1String("APM"), APM);
+ ui->consoleModeBox->addItem(QLatin1String("PX4"), PX4);
+}
+
+void TerminalConsole::addConsoleModesComboBoxConfig()
{
ui->baudComboBox->addItem(QLatin1String("115200"), QSerialPort::Baud115200);
ui->baudComboBox->addItem(QLatin1String("57600"), QSerialPort::Baud57600);
@@ -147,6 +155,8 @@ void TerminalConsole::openSerialPort(const SerialSettings &settings)
qDebug() << "Open Terminal Console Serial Port";
writeSettings(); // Save last successful connection
+ sendResetCommand();
+
} else {
m_serial->close();
QMessageBox::critical(this, tr("Error"), m_serial->errorString());
@@ -170,6 +180,15 @@ void TerminalConsole::closeSerialPort()
m_statusBar->showMessage(tr("Disconnected"));
}
+void TerminalConsole::sendResetCommand()
+{
+ if (m_serial->isOpen()) {
+ m_serial->setDataTerminalReady(true);
+ m_serial->waitForBytesWritten(250);
+ m_serial->setDataTerminalReady(false);
+ }
+}
+
void TerminalConsole::writeData(const QByteArray &data)
{
// qDebug() << "writeData:" << data;
@@ -181,6 +200,23 @@ void TerminalConsole::readData()
QByteArray data = m_serial->readAll();
// qDebug() << "readData:" << data;
m_console->putData(data);
+
+ switch(m_consoleMode)
+ {
+ case APM: // APM
+ // On reset, send the break sequence and display help
+ if (data.contains("ENTER 3")) {
+ m_serial->write("\r\r\r");
+ m_serial->waitForBytesWritten(10);
+ m_serial->write("HELP\r");
+ }
+ break;
+ case PX4:
+ // Do nothing
+ default:
+ qDebug() << "Mode not yet implemented";
+ }
+
}
void TerminalConsole::handleError(QSerialPort::SerialPortError error)
diff --git a/src/ui/configuration/terminalconsole.h b/src/ui/configuration/terminalconsole.h
index 5c8a91182b07aa0dc7bee526ae2a319f6d16296f..85a5643946c001a1ea2929c72a3078d501aae419 100644
--- a/src/ui/configuration/terminalconsole.h
+++ b/src/ui/configuration/terminalconsole.h
@@ -54,6 +54,8 @@ class TerminalConsole : public QWidget
{
Q_OBJECT
+public:
+ enum ConsoleMode { APM, PX4 };
public:
explicit TerminalConsole(QWidget *parent = 0);
~TerminalConsole();
@@ -64,6 +66,7 @@ private slots:
void closeSerialPort();
void writeData(const QByteArray &data);
void readData();
+ void sendResetCommand();
void handleError(QSerialPort::SerialPortError error);
@@ -75,6 +78,7 @@ private:
void initConnections();
void addBaudComboBoxConfig();
void fillPortsInfo(QComboBox &comboxBox);
+ void addConsoleModesComboBoxConfig();
void writeSettings();
void loadSettings();
@@ -87,6 +91,7 @@ private:
SettingsDialog *m_settingsDialog;
QSerialPort *m_serial;
SerialSettings m_settings;
+ ConsoleMode m_consoleMode;
};
#endif // TERMINALCONSOLE_H
diff --git a/src/ui/configuration/terminalconsole.ui b/src/ui/configuration/terminalconsole.ui
index 1ee9ec87cce830b679d6595a36ffad6f2b08ff81..455cfc1e7abfe3871af0b0ff70f588af15bded16 100644
--- a/src/ui/configuration/terminalconsole.ui
+++ b/src/ui/configuration/terminalconsole.ui
@@ -126,7 +126,7 @@
-
-
+
0
@@ -139,16 +139,6 @@
0
-
-
-
- APM
-
-
- -
-
- PX4
-
-
-