diff --git a/Core/modulemessage.cpp b/Core/modulemessage.cpp
index 1f938f08da869482b5bfadb0228f51d3460edf8e..f4b5654cfe984c723250926d09046c6bc1dd47d4 100644
--- a/Core/modulemessage.cpp
+++ b/Core/modulemessage.cpp
@@ -1,5 +1,7 @@
#include "modulemessage.h"
+#include <QDateTime>
+
ModuleMessage::ModuleMessage()
{
setTimestamp(QDateTime::currentDateTime());
@@ -142,6 +144,17 @@ bool ModuleMessage::getFloatPayload(float &value) const
return false;
}
+QString ModuleMessage::toString() const
+{
+ QString line = QDateTime::currentDateTime().toString("hh.mm.ss (zzz): ") + "(Topic) " + this->originalTopic() + " -> " + this->payload() + " (payload)";
+ auto i = this->getOptions().attributesIterator();
+ while(i.hasNext()){
+ i.next();
+ line = line + ", " + i.value() + " ("+i.key()+")";
+ }
+ return line;
+}
+
void ModuleMessage::copy(const ModuleMessage &msg)
{
setPayload(msg.payload());
diff --git a/Core/modulemessage.h b/Core/modulemessage.h
index bc9a8878cf9523a2366a15431178e99f588a7e17..d5877f886dab1f2220ac917613c8b0f52d30a94b 100644
--- a/Core/modulemessage.h
+++ b/Core/modulemessage.h
@@ -49,6 +49,8 @@ public:
bool getFloatPayload(float &value) const;
+ QString toString() const;
+
private:
void copy(const ModuleMessage &msg);
diff --git a/Modules/FileStream/filestreammodule.cpp b/Modules/FileStream/filestreammodule.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2be76fa2467a91208cfe6553fe32f4484a9315ab
--- /dev/null
+++ b/Modules/FileStream/filestreammodule.cpp
@@ -0,0 +1,205 @@
+#include "filestreammodule.h"
+#include "ui_filestreammodule.h"
+
+#include "Core/modulemessagesbroker.h"
+#include <QDebug>
+#include <QMessageBox>
+#include "Modules/skywardhubstrings.h"
+#include <QDir>
+#include <QDesktopServices>
+#include <QUrl>
+
+FileStreamModule::FileStreamModule(QWidget *parent) : DefaultModule(parent), ui(new Ui::FileStreamModule)
+{
+ ui->setupUi(this);
+ defaultContextMenuSetup();
+ connectUI();
+
+ ui->filePath_lineEdit->setText(SkywardHubStrings::defaultStreamFile);
+}
+
+FileStreamModule::~FileStreamModule()
+{
+ if(file.isOpen())
+ file.close();
+ deleteAllTopicViews();
+ delete ui;
+}
+
+QWidget *FileStreamModule::toWidget()
+{
+ return this;
+}
+
+XmlObject FileStreamModule::toXmlObject()
+{
+ XmlObject obj(getName(ModuleId::FILESTREAM));
+
+ if(getFilePath() != "")
+ obj.addAttribute("FilePath", getFilePath());
+
+ for(int i = 0; i < topicViewsList.count();i++){
+ XmlObject subscription("Subscription");
+ subscription.setTextValue(topicViewsList[i]->text().trimmed());
+ obj.addChild(subscription);
+ }
+ return obj;
+}
+
+void FileStreamModule::fromXmlObject(const XmlObject &xmlObject)
+{
+ if(xmlObject.getObjectName() == getName(ModuleId::FILESTREAM)){
+
+ if(xmlObject.hasAttribute("FilePath")){
+ ui->filePath_lineEdit->setText(xmlObject.getAttribute("FilePath"));
+ }
+
+ for(int i = 0; i < xmlObject.childCount(); i++){
+ XmlObject child = xmlObject.childAt(i);
+ if(child.getObjectName() == "Subscription" && child.getTextValue() != ""){
+ addTopic(child.getTextValue());
+ }
+ }
+ }
+}
+
+void FileStreamModule::connectUI()
+{
+ connect(ui->start_button, &QPushButton::clicked, this, &FileStreamModule::onStartClicked);
+ connect(ui->stop_button, &QPushButton::clicked, this, &FileStreamModule::onStopClicked);
+ connect(ui->addTopic_button, &QPushButton::clicked, this, &FileStreamModule::onAddTopicClicked);
+ connect(ui->showFile_button, &QPushButton::clicked, this, &FileStreamModule::onShowFileClick);
+}
+
+QString FileStreamModule::getFilePath() const
+{
+ return ui->filePath_lineEdit->text().trimmed();
+}
+
+QString FileStreamModule::getTopicName() const
+{
+ return ui->topicName_lineEdit->text().trimmed();
+}
+
+void FileStreamModule::resetTopicName()
+{
+ ui->topicName_lineEdit->clear();
+}
+
+void FileStreamModule::onMsgReceived(const ModuleMessage &msg)
+{
+ if(file.isOpen() ){
+ QTextStream out(&file);
+ out << msg.toString() << Qt::endl;
+ }
+}
+
+void FileStreamModule::onAddTopicClicked()
+{
+ QString topicName = getTopicName();
+ resetTopicName();
+ if(topicName != ""){
+ addTopic(topicName);
+ }
+}
+
+void FileStreamModule::onStartClicked()
+{
+ file.setFileName(getFilePath());
+ if(!file.open(QIODevice::ReadWrite)){
+ QString msg = "FileStream: Error occurred while opening file " + getFilePath();
+ QMessageBox msgBox;
+ msgBox.setText(msg);
+ msgBox.exec();
+ return;
+ }
+
+ file.resize(0);
+ disableOnStartElement();
+ for(int i = 0; i < topicViewsList.count() ; i++ ){
+ getCore()->getModuleMessagesBroker()->subscribe(topicViewsList[i]->text().trimmed(), this, [this](const ModuleMessage &msg){
+ onMsgReceived(msg);
+ });
+ topicViewsList[i]->setEnabled(false);
+ }
+
+}
+
+void FileStreamModule::onStopClicked()
+{
+ if(file.isOpen())
+ file.close();
+ enableElementOnStop();
+
+ for(int i = 0; i < topicViewsList.count(); i++ ){
+ getCore()->getModuleMessagesBroker()->unsubscribe(topicViewsList[i]->text().trimmed(), this);
+ topicViewsList[i]->setEnabled(true);
+ }
+}
+
+void FileStreamModule::onTopicEdit()
+{
+ for(int i = topicViewsList.count() - 1 ; i >= 0; i-- ){
+ if(topicViewsList[i]->text().trimmed() == ""){
+ topicViewsList[i]->deleteLater();
+ topicViewsList.removeAt(i);
+ }
+ }
+}
+
+void FileStreamModule::disableOnStartElement()
+{
+ ui->start_button->setEnabled(false);
+ ui->addTopic_button->setEnabled(false);
+ ui->filePath_lineEdit->setEnabled(false);
+}
+
+void FileStreamModule::enableElementOnStop()
+{
+ ui->start_button->setEnabled(true);
+ ui->addTopic_button->setEnabled(true);
+ ui->filePath_lineEdit->setEnabled(true);
+ ui->writeOnFile_radioButton->setEnabled(true);
+}
+
+void FileStreamModule::onShowFileClick()
+{
+ QDir dir(SkywardHubStrings::defaultLogsFolder);
+ if (dir.exists()){
+ QDesktopServices::openUrl( QUrl::fromLocalFile(getFilePath()) );
+ }
+ else{
+ QString msg = "The file does not exist." + getFilePath();
+ QMessageBox msgBox;
+ msgBox.setText(msg);
+ msgBox.exec();
+ }
+}
+
+void FileStreamModule::addTopic(const QString &topic)
+{
+ QLineEdit* topicView = createTopicView(topic);
+
+ topicViewsList.append(topicView);
+ ui->topics_layout->addWidget(topicView);
+}
+
+QLineEdit *FileStreamModule::createTopicView(const QString &topic) const
+{
+ QLineEdit* topicView = new QLineEdit();
+ topicView->setText(topic);
+
+ connect(topicView, &QLineEdit::textEdited, this, &FileStreamModule::onTopicEdit);
+ return topicView;
+}
+
+void FileStreamModule::deleteAllTopicViews()
+{
+ for(int i = 0; i < topicViewsList.count(); i++ ){
+ getCore()->getModuleMessagesBroker()->unsubscribe(topicViewsList[i]->text().trimmed(), this);
+ ui->topics_layout->removeWidget(topicViewsList[i]);
+ topicViewsList[i]->deleteLater();
+ }
+ topicViewsList.clear();
+}
+
diff --git a/Modules/FileStream/filestreammodule.h b/Modules/FileStream/filestreammodule.h
new file mode 100644
index 0000000000000000000000000000000000000000..74bb8cd0d7de82dcca0232d8a4e05db9294785b6
--- /dev/null
+++ b/Modules/FileStream/filestreammodule.h
@@ -0,0 +1,57 @@
+#ifndef FILESTREAMMODULE_H
+#define FILESTREAMMODULE_H
+
+#include <QWidget>
+#include "Modules/DefaultModule/defaultmodule.h"
+#include "Core/modulemessage.h"
+
+#include <QLineEdit>
+#include <QFile>
+
+namespace Ui {
+class FileStreamModule;
+}
+
+class FileStreamModule : public DefaultModule
+{
+ Q_OBJECT
+
+public:
+ explicit FileStreamModule(QWidget *parent = nullptr);
+ ~FileStreamModule();
+
+ QWidget *toWidget() override;
+
+ XmlObject toXmlObject() override;
+ void fromXmlObject(const XmlObject &xmlObject) override;
+
+
+protected:
+ void connectUI();
+ QString getFilePath() const;
+ QString getTopicName() const;
+ void resetTopicName();
+ void onMsgReceived(const ModuleMessage &msg);
+
+ void onAddTopicClicked();
+ void onStartClicked();
+ void onStopClicked();
+ void onTopicEdit();
+ void disableOnStartElement();
+ void enableElementOnStop();
+ void onFileChanged();
+ void onShowFileClick();
+
+ void addTopic(const QString &topic);
+ QLineEdit* createTopicView(const QString &topic) const;
+
+ void deleteAllTopicViews();
+
+private:
+ Ui::FileStreamModule *ui;
+
+ QList<QLineEdit*> topicViewsList;
+ QFile file;
+};
+
+#endif // FILESTREAMMODULE_H
diff --git a/Modules/FileStream/filestreammodule.ui b/Modules/FileStream/filestreammodule.ui
new file mode 100644
index 0000000000000000000000000000000000000000..85693220457cc6d9b16ac3231d87d1d4e0186018
--- /dev/null
+++ b/Modules/FileStream/filestreammodule.ui
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>FileStreamModule</class>
+ <widget class="QWidget" name="FileStreamModule">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>508</width>
+ <height>209</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="2">
+ <widget class="QScrollArea" name="scrollArea">
+ <property name="widgetResizable">
+ <bool>true</bool>
+ </property>
+ <widget class="QWidget" name="scrollAreaWidgetContents">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>486</width>
+ <height>187</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QRadioButton" name="writeOnFile_radioButton">
+ <property name="text">
+ <string>Write the messages received from the topic into the specified file</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QLineEdit" name="filePath_lineEdit">
+ <property name="placeholderText">
+ <string>File path</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="showFile_button">
+ <property name="text">
+ <string>Show</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="topics_layout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Topic List </string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="topicName_lineEdit">
+ <property name="placeholderText">
+ <string>Topic name</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="addTopic_button">
+ <property name="text">
+ <string>Add</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>To remove a topic, clear the Line Edit control</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="stop_button">
+ <property name="text">
+ <string>Stop</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="start_button">
+ <property name="text">
+ <string>Start</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/Modules/Mavlink/mavlinkmodule.cpp b/Modules/Mavlink/mavlinkmodule.cpp
index 16bc1aab5f9581d9cc3c7c81f7f27ff9d4c35efa..94dba2d597e43deb899c4f8c4449e3ba85c4ea85 100644
--- a/Modules/Mavlink/mavlinkmodule.cpp
+++ b/Modules/Mavlink/mavlinkmodule.cpp
@@ -156,6 +156,11 @@ void MavlinkModule::onStartClicked()
if(startReadingOnSerialPort()){
portOpen = true;
mavlinkReader.setPortNumber(portNumber);
+
+ if(ui->logEnabled_checkBox->isChecked()){
+ mavlinkReader.openLogFile();
+ }
+
mavlinkReader.startAsyncReading();
mavlinkCommandAdapter.setPortNumber(portNumber);
//mavlinkReader.startAsyncReadingWithSignal(&serialPort);
@@ -213,8 +218,6 @@ void MavlinkModule::updateLinkSignalIndicator(int msgArrived, float ratio)
publish(linkQualityMsgRatio);
}
-
-
void MavlinkModule::onOpenLogFolderClick()
{
QDir dir(SkywardHubStrings::defaultLogsFolder);
diff --git a/Modules/Mavlink/mavlinkmodule.ui b/Modules/Mavlink/mavlinkmodule.ui
index 3b7b057c7f1da0b1104587686de59e51e4e3b635..acaf86a5abee6f296060a57dc7d0ec56651730bf 100644
--- a/Modules/Mavlink/mavlinkmodule.ui
+++ b/Modules/Mavlink/mavlinkmodule.ui
@@ -196,6 +196,16 @@
<item row="1" column="3">
<widget class="QComboBox" name="comboBox_baudRate"/>
</item>
+ <item row="0" column="6">
+ <widget class="QCheckBox" name="logEnabled_checkBox">
+ <property name="text">
+ <string>Enable Log</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
diff --git a/Modules/Mavlink/mavlinkreader.cpp b/Modules/Mavlink/mavlinkreader.cpp
index 0c3f6ac4effa340db81372035000594ad2ea7955..9150a1f70ec2fee8057298c081364ef2c45245db 100644
--- a/Modules/Mavlink/mavlinkreader.cpp
+++ b/Modules/Mavlink/mavlinkreader.cpp
@@ -21,7 +21,6 @@ MavlinkReader::~MavlinkReader()
void MavlinkReader::startAsyncReading()
{
stop = false;
- openLogFile();
this->start(); // Chiama run()
}
diff --git a/Modules/SerialStream/serialstreammodule.cpp b/Modules/SerialStream/serialstreammodule.cpp
deleted file mode 100644
index 063be98b42c1610bd3d8c0b4f28c7896d1f9fab1..0000000000000000000000000000000000000000
--- a/Modules/SerialStream/serialstreammodule.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-#include "serialstreammodule.h"
-#include "ui_serialstreammodule.h"
-
-#include <QSerialPort>
-#include <QSerialPortInfo>
-
-
-SerialStreamModule::SerialStreamModule(QWidget *parent) : DefaultModule(parent), ui(new Ui::SerialStreamModule)
-{
- ui->setupUi(this);
- defaultContextMenuSetup();
- initializeSerialPortView();
-
- connectUiSlots();
- //qRegisterMetaType<ModuleMessage>();
-}
-
-SerialStreamModule::~SerialStreamModule()
-{
- delete ui;
-}
-
-QWidget *SerialStreamModule::toWidget()
-{
- return this;
-}
-
-XmlObject SerialStreamModule::toXmlObject()
-{
- XmlObject obj(getName(ModuleId::SERIALSTREAM));
- obj.addAttribute("BaudRateIndex",QString::number(ui->comboBox_baudRate->currentIndex()));
- return obj;
-}
-
-void SerialStreamModule::fromXmlObject(const XmlObject &xmlObject)
-{
- if(xmlObject.getObjectName() == getName(ModuleId::SERIALSTREAM)){
- bool ok;
- int index = xmlObject.getAttribute("BaudRateIndex").toInt(&ok);
- if(ok){
- ui->comboBox_baudRate->setCurrentIndex(index);
- }
- }
-}
-
-void SerialStreamModule::initializeSerialPortView()
-{
- //fill the baud rate combo box
- QString baudPrefix = "BaudRate: ";
- ui->comboBox_baudRate->addItem(baudPrefix + "115200", QSerialPort::Baud115200);
- ui->comboBox_baudRate->addItem(baudPrefix + "57600", QSerialPort::Baud57600);
- ui->comboBox_baudRate->addItem(baudPrefix + "38400", QSerialPort::Baud38400);
- ui->comboBox_baudRate->addItem(baudPrefix + "19200", QSerialPort::Baud19200);
- ui->comboBox_baudRate->addItem(baudPrefix + "9600", QSerialPort::Baud9600);
- ui->comboBox_baudRate->addItem(baudPrefix + "4800", QSerialPort::Baud4800);
- ui->comboBox_baudRate->addItem(baudPrefix + "2400", QSerialPort::Baud2400);
- ui->comboBox_baudRate->addItem(baudPrefix + "1200", QSerialPort::Baud1200);
-
-
- //Check available port
- const auto serialPortInfos = QSerialPortInfo::availablePorts();
- for (const QSerialPortInfo &serialPortInfo : serialPortInfos) {
-// QString serialNumber = serialPortInfo.serialNumber();
-// QVariant data = (!serialNumber.isEmpty() ? serialNumber : "N/A");
- QVariant data(serialPortInfo.portName());
- ui->comboBox_serialPort->addItem(serialPortInfo.portName(), data);
- }
-}
-
-void SerialStreamModule::connectUiSlots()
-{
- connect(ui->button_start,&QPushButton::clicked,this, &SerialStreamModule::onStartClicked);
- connect(ui->button_stop,&QPushButton::clicked,this, &SerialStreamModule::onStopClicked);
- connect(ui->comboBox_serialPort, SIGNAL(currentIndexChanged(int)), this, SLOT(onSerialPortIndexChanged(int)));
-}
-
-void SerialStreamModule::onStartClicked()
-{
-
-}
-
-void SerialStreamModule::onStopClicked()
-{
-
-}
-
-void SerialStreamModule::onSerialPortIndexChanged(int index)
-{
- QVariant data = ui->comboBox_serialPort->itemData(index);
- ui->lineEdit_serialPort->setText(data.toString());
-}
diff --git a/Modules/SerialStream/serialstreammodule.h b/Modules/SerialStream/serialstreammodule.h
deleted file mode 100644
index e9f495aa0aa56ce72920ca333057a5eabcc87fc8..0000000000000000000000000000000000000000
--- a/Modules/SerialStream/serialstreammodule.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef SERIALSTREAMMODULE_H
-#define SERIALSTREAMMODULE_H
-
-#include "Modules/DefaultModule/defaultmodule.h"
-#include "Core/modulemessage.h"
-
-//Q_DECLARE_METATYPE(ModuleMessage);
-
-namespace Ui {
-class SerialStreamModule;
-}
-
-class SerialStreamModule : public DefaultModule
-{
- Q_OBJECT
-
-public:
- explicit SerialStreamModule(QWidget *parent = nullptr);
- ~SerialStreamModule();
-
- QWidget *toWidget() override;
- XmlObject toXmlObject() override;
- void fromXmlObject(const XmlObject &xmlObject) override;
-
-protected:
- void initializeSerialPortView();
- void connectUiSlots();
- void onStartClicked();
- void onStopClicked();
-
-protected slots:
- void onSerialPortIndexChanged(int index);
-
-private:
- Ui::SerialStreamModule *ui;
-};
-
-#endif // SERIALSTREAMMODULE_H
diff --git a/Modules/SerialStream/serialstreammodule.ui b/Modules/SerialStream/serialstreammodule.ui
deleted file mode 100644
index f941bf8a08b53fa9e7ac530a7d8adc69d968c02b..0000000000000000000000000000000000000000
--- a/Modules/SerialStream/serialstreammodule.ui
+++ /dev/null
@@ -1,169 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>SerialStreamModule</class>
- <widget class="QWidget" name="SerialStreamModule">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>405</width>
- <height>350</height>
- </rect>
- </property>
- <property name="minimumSize">
- <size>
- <width>0</width>
- <height>350</height>
- </size>
- </property>
- <property name="windowTitle">
- <string>Form</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <item>
- <widget class="QLabel" name="label_2">
- <property name="text">
- <string>Write Topic</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLineEdit" name="lineEdit_writeTopic"/>
- </item>
- <item>
- <widget class="QPushButton" name="button_start">
- <property name="text">
- <string>Start Writing</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="button_stop">
- <property name="text">
- <string>Stop Writing</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_3">
- <item>
- <widget class="QLabel" name="label">
- <property name="text">
- <string>Read Topic</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLineEdit" name="lineEdit_readTopic"/>
- </item>
- <item>
- <widget class="QPushButton" name="pushButton">
- <property name="text">
- <string>Start Reading</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="pushButton_2">
- <property name="text">
- <string>Stop Reading</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <item>
- <widget class="QLabel" name="label_3">
- <property name="text">
- <string>Port</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QComboBox" name="comboBox_serialPort"/>
- </item>
- <item>
- <widget class="QLineEdit" name="lineEdit_serialPort"/>
- </item>
- <item>
- <spacer name="horizontalSpacer">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_4">
- <item>
- <widget class="QComboBox" name="comboBox_baudRate"/>
- </item>
- <item>
- <widget class="QLabel" name="label_4">
- <property name="text">
- <string>Timeout [s]</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QDoubleSpinBox" name="doubleSpinBox"/>
- </item>
- <item>
- <spacer name="horizontalSpacer_2">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </item>
- <item>
- <spacer name="verticalSpacer_2">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/Modules/moduleinfo.h b/Modules/moduleinfo.h
index 103dd9f015ba733591f9ccdb37fe3f6772e8b987..528d53e8550654b44339bea73b02d7b11db81818 100644
--- a/Modules/moduleinfo.h
+++ b/Modules/moduleinfo.h
@@ -20,7 +20,7 @@ enum ModuleId{
FSMVIEWER,
TREEVIEWER,
SCROLLAREA,
- SERIALSTREAM,
+ FILESTREAM,
MAVLINK_RCK_TESTING
};
diff --git a/Modules/moduleslist.cpp b/Modules/moduleslist.cpp
index e3e7c578a321d0bbc50061b66e9dc6d55709d51e..e7d34341b8a7c8c08651cd0517a3ea4e7417c8bc 100644
--- a/Modules/moduleslist.cpp
+++ b/Modules/moduleslist.cpp
@@ -17,7 +17,7 @@
#include "Modules/Fsm/fsmviewermodule.h"
#include "Modules/TreeViewer/treeviewermodule.h"
#include "Modules/ScrollArea/scrollareamodule.h"
-#include "Modules/SerialStream/serialstreammodule.h"
+#include "Modules/FileStream/filestreammodule.h"
#include "Modules/Mavlink/mavlinkrocketmsgtestingmodule.h"
void ModulesList::createModuleList()
@@ -112,7 +112,7 @@ void ModulesList::createModuleList()
addModuleInfo(mavlink);
#endif
- #ifdef SERIALSTREAMMODULE_H
+ #ifdef MAVLINKROCKETMSGTESTINGMODULE_H
ModuleInfo mvkRckTesting(ModuleId::MAVLINK_RCK_TESTING, "MavlinkRocketMsgTesting", ModuleCategory::DEFAULT);
mvkRckTesting.setFactory([](){return new MavlinkRocketMsgTestingModule();});
addModuleInfo(mvkRckTesting);
@@ -139,11 +139,11 @@ void ModulesList::createModuleList()
addModuleInfo(scrollArea);
#endif
- #ifdef SERIALSTREAMMODULE_H
- ModuleInfo serialStream(ModuleId::SERIALSTREAM, "SerialStream", ModuleCategory::DATASOURCE);
- serialStream.setFactory([](){return new SerialStreamModule();});
- serialStream.addModuleSourceFiles("Modules/SerialStream/");
- addModuleInfo(serialStream);
+ #ifdef FILESTREAMMODULE_H
+ ModuleInfo fileStream(ModuleId::FILESTREAM, "FileStream", ModuleCategory::DATASOURCE);
+ fileStream.setFactory([](){return new FileStreamModule();});
+ fileStream.addModuleSourceFiles("Modules/FileStream/");
+ addModuleInfo(fileStream);
#endif
}
diff --git a/Modules/skywardhubstrings.cpp b/Modules/skywardhubstrings.cpp
index 8099e019eec3e4994456a0ccf8b18ed9da5e40b8..5c131144431eee8983c10ed9917a77c47a33e348 100644
--- a/Modules/skywardhubstrings.cpp
+++ b/Modules/skywardhubstrings.cpp
@@ -6,6 +6,7 @@ const QString SkywardHubStrings::defaultConfigurationFolder = "SkywardHubConfig"
const QString SkywardHubStrings::defaultSettingsFilePath = defaultConfigurationFolder + "/" + "settings.xml";
const QString SkywardHubStrings::defaultPrefabsFolderName = "Prefabs";
const QString SkywardHubStrings::defaultLogsFolder = defaultConfigurationFolder + "/" + "Logs";
+const QString SkywardHubStrings::defaultStreamFile = defaultConfigurationFolder + "/" + "StreamFile.txt";
const QString SkywardHubStrings::defaultPrefabsFolder = defaultConfigurationFolder + "/" + defaultPrefabsFolderName +"/";
const QString SkywardHubStrings::defaultConfigurationFileName = "default.xml";
const QString SkywardHubStrings::defaultConfigurationIconPath = defaultConfigurationFolder + "/" + "defaultConfigIcon.svg";
diff --git a/Modules/skywardhubstrings.h b/Modules/skywardhubstrings.h
index a631c0f4d5fa503b6b286be81f79744f8969c3dd..9d4359699f31f3edca9fa3cfc4bf4d6166e3791c 100644
--- a/Modules/skywardhubstrings.h
+++ b/Modules/skywardhubstrings.h
@@ -15,6 +15,7 @@ public:
static const QString defaultConfigurationFileName;
static const QString defaultConfigurationIconPath;
static const QString defaultLogsFolder;
+ static const QString defaultStreamFile;
// Xml Tags Name
static const QString settingsObjectName;
diff --git a/SkywardHub.pro b/SkywardHub.pro
index 2fb40d62c8759387e531a73a4e6ec7cf6ddca550..a375acafd0729eb0808dc2847b952ec6340cef31 100644
--- a/SkywardHub.pro
+++ b/SkywardHub.pro
@@ -20,6 +20,7 @@ SOURCES += \
Modules/CommandPad/telemetryrequestmodule.cpp \
Modules/DefaultModule/defaultmodule.cpp \
Modules/Empty/emptymodule.cpp \
+ Modules/FileStream/filestreammodule.cpp \
Modules/Fsm/Model/model.cpp \
Modules/Fsm/Model/scxml.cpp \
Modules/Fsm/Model/state.cpp \
@@ -50,7 +51,6 @@ SOURCES += \
Modules/Mavlink/rs232.c \
Modules/MessageViewer/messagesviewermodule.cpp \
Modules/ScrollArea/scrollareamodule.cpp \
- Modules/SerialStream/serialstreammodule.cpp \
Modules/SkywardHub/deployer.cpp \
Modules/SkywardHub/deployerpathpicker.cpp \
Modules/SkywardHub/prefabdialog.cpp \
@@ -83,6 +83,7 @@ HEADERS += \
Modules/CommandPad/telemetryrequestmodule.h \
Modules/DefaultModule/defaultmodule.h \
Modules/Empty/emptymodule.h \
+ Modules/FileStream/filestreammodule.h \
Modules/Fsm/Model/model.h \
Modules/Fsm/Model/scxml.h \
Modules/Fsm/Model/state.h \
@@ -115,7 +116,6 @@ HEADERS += \
Modules/Mavlink/rs232.h \
Modules/MessageViewer/messagesviewermodule.h \
Modules/ScrollArea/scrollareamodule.h \
- Modules/SerialStream/serialstreammodule.h \
Modules/SkywardHub/deployer.h \
Modules/SkywardHub/deployerpathpicker.h \
Modules/SkywardHub/prefabdialog.h \
@@ -139,6 +139,7 @@ FORMS += \
Modules/CommandPad/commandpadmodule.ui \
Modules/CommandPad/telemetryrequestmodule.ui \
Modules/Empty/emptymodule.ui \
+ Modules/FileStream/filestreammodule.ui \
Modules/Fsm/View/mainwindow.ui \
Modules/Fsm/View/statedialog.ui \
Modules/Fsm/View/transitiondialog.ui \
@@ -152,7 +153,6 @@ FORMS += \
Modules/Mavlink/mavlinkrocketmsgtestingmodule.ui \
Modules/MessageViewer/messagesviewermodule.ui \
Modules/ScrollArea/scrollareamodule.ui \
- Modules/SerialStream/serialstreammodule.ui \
Modules/SkywardHub/deployerpathpicker.ui \
Modules/SkywardHub/prefabdialog.ui \
Modules/SkywardHub/prefabviewelement.ui \
diff --git a/SkywardHub.pro.user b/SkywardHub.pro.user
index 29cabb50dd0a0376e569d59300dfdeec5094e4a8..f0ffb8befa8acb04c535fd7818cc7c6c4fde392c 100644
--- a/SkywardHub.pro.user
+++ b/SkywardHub.pro.user
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 4.14.2, 2021-07-14T12:55:11. -->
+<!-- Written by QtCreator 4.14.2, 2021-07-14T18:16:08. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>