Commit d8229281 authored by Bill Bonney's avatar Bill Bonney

Terminal Console: Added APM mode to send reset and send the break to enable the CLI on connect

parent d86262ee
...@@ -50,7 +50,8 @@ This file is part of the APM_PLANNER project ...@@ -50,7 +50,8 @@ This file is part of the APM_PLANNER project
TerminalConsole::TerminalConsole(QWidget *parent) : TerminalConsole::TerminalConsole(QWidget *parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::TerminalConsole) ui(new Ui::TerminalConsole),
m_consoleMode(APM)
{ {
ui->setupUi(this); ui->setupUi(this);
...@@ -71,6 +72,7 @@ TerminalConsole::TerminalConsole(QWidget *parent) : ...@@ -71,6 +72,7 @@ TerminalConsole::TerminalConsole(QWidget *parent) :
ui->disconnectButton->setEnabled(false); ui->disconnectButton->setEnabled(false);
ui->settingsButton->setEnabled(true); ui->settingsButton->setEnabled(true);
addBaudComboBoxConfig(); addBaudComboBoxConfig();
fillPortsInfo(*ui->linkComboBox); fillPortsInfo(*ui->linkComboBox);
...@@ -82,12 +84,18 @@ TerminalConsole::TerminalConsole(QWidget *parent) : ...@@ -82,12 +84,18 @@ TerminalConsole::TerminalConsole(QWidget *parent) :
ui->linkComboBox->setCurrentIndex(0); ui->linkComboBox->setCurrentIndex(0);
} }
//setUiControls(m_settingsDialog); addConsoleModesComboBoxConfig();
initConnections(); initConnections();
} }
void TerminalConsole::addBaudComboBoxConfig() 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("115200"), QSerialPort::Baud115200);
ui->baudComboBox->addItem(QLatin1String("57600"), QSerialPort::Baud57600); ui->baudComboBox->addItem(QLatin1String("57600"), QSerialPort::Baud57600);
...@@ -147,6 +155,8 @@ void TerminalConsole::openSerialPort(const SerialSettings &settings) ...@@ -147,6 +155,8 @@ void TerminalConsole::openSerialPort(const SerialSettings &settings)
qDebug() << "Open Terminal Console Serial Port"; qDebug() << "Open Terminal Console Serial Port";
writeSettings(); // Save last successful connection writeSettings(); // Save last successful connection
sendResetCommand();
} else { } else {
m_serial->close(); m_serial->close();
QMessageBox::critical(this, tr("Error"), m_serial->errorString()); QMessageBox::critical(this, tr("Error"), m_serial->errorString());
...@@ -170,6 +180,15 @@ void TerminalConsole::closeSerialPort() ...@@ -170,6 +180,15 @@ void TerminalConsole::closeSerialPort()
m_statusBar->showMessage(tr("Disconnected")); 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) void TerminalConsole::writeData(const QByteArray &data)
{ {
// qDebug() << "writeData:" << data; // qDebug() << "writeData:" << data;
...@@ -181,6 +200,23 @@ void TerminalConsole::readData() ...@@ -181,6 +200,23 @@ void TerminalConsole::readData()
QByteArray data = m_serial->readAll(); QByteArray data = m_serial->readAll();
// qDebug() << "readData:" << data; // qDebug() << "readData:" << data;
m_console->putData(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) void TerminalConsole::handleError(QSerialPort::SerialPortError error)
......
...@@ -54,6 +54,8 @@ class TerminalConsole : public QWidget ...@@ -54,6 +54,8 @@ class TerminalConsole : public QWidget
{ {
Q_OBJECT Q_OBJECT
public:
enum ConsoleMode { APM, PX4 };
public: public:
explicit TerminalConsole(QWidget *parent = 0); explicit TerminalConsole(QWidget *parent = 0);
~TerminalConsole(); ~TerminalConsole();
...@@ -64,6 +66,7 @@ private slots: ...@@ -64,6 +66,7 @@ private slots:
void closeSerialPort(); void closeSerialPort();
void writeData(const QByteArray &data); void writeData(const QByteArray &data);
void readData(); void readData();
void sendResetCommand();
void handleError(QSerialPort::SerialPortError error); void handleError(QSerialPort::SerialPortError error);
...@@ -75,6 +78,7 @@ private: ...@@ -75,6 +78,7 @@ private:
void initConnections(); void initConnections();
void addBaudComboBoxConfig(); void addBaudComboBoxConfig();
void fillPortsInfo(QComboBox &comboxBox); void fillPortsInfo(QComboBox &comboxBox);
void addConsoleModesComboBoxConfig();
void writeSettings(); void writeSettings();
void loadSettings(); void loadSettings();
...@@ -87,6 +91,7 @@ private: ...@@ -87,6 +91,7 @@ private:
SettingsDialog *m_settingsDialog; SettingsDialog *m_settingsDialog;
QSerialPort *m_serial; QSerialPort *m_serial;
SerialSettings m_settings; SerialSettings m_settings;
ConsoleMode m_consoleMode;
}; };
#endif // TERMINALCONSOLE_H #endif // TERMINALCONSOLE_H
...@@ -126,7 +126,7 @@ ...@@ -126,7 +126,7 @@
</widget> </widget>
</item> </item>
<item alignment="Qt::AlignRight"> <item alignment="Qt::AlignRight">
<widget class="QComboBox" name="fmuComboBox"> <widget class="QComboBox" name="consoleModeBox">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed"> <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch> <horstretch>0</horstretch>
...@@ -139,16 +139,6 @@ ...@@ -139,16 +139,6 @@
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
<item>
<property name="text">
<string>APM</string>
</property>
</item>
<item>
<property name="text">
<string>PX4</string>
</property>
</item>
</widget> </widget>
</item> </item>
<item> <item>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment