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 - -