diff --git a/Modules/CommandPad/commandpadmodule.cpp b/Modules/CommandPad/commandpadmodule.cpp index 18045167386ddf5ebd0e0e14a3d3d1f8f01da245..80566dcffc537e9b2eff1891e54db2e9e9d15975 100644 --- a/Modules/CommandPad/commandpadmodule.cpp +++ b/Modules/CommandPad/commandpadmodule.cpp @@ -62,6 +62,10 @@ void CommandPadModule::buildUI() connect(ui->noseconeOpen_button, &QPushButton::clicked, this, &CommandPadModule::onNoseconeOpenClicked); connect(ui->endMission_button, &QPushButton::clicked, this, &CommandPadModule::onEndMissionClicked); connect(ui->rawEventSend_button, &QPushButton::clicked, this, &CommandPadModule::onRawEventSendClicked); + + connect(ui->cutDrogue_button, &QPushButton::clicked, this, &CommandPadModule::onCutDrogueClicked); + connect(ui->primaryCut_button, &QPushButton::clicked, this, &CommandPadModule::onPrimaryCutClicked); + connect(ui->backupCut_button, &QPushButton::clicked, this, &CommandPadModule::onBackupClicked); } //void CommandPadModule::buildMsgKeyList() @@ -269,3 +273,18 @@ void CommandPadModule::onRawEventSendClicked() send(createRawEventMsg("RAW_EVENT_TC", event_id, topic_id)); } +void CommandPadModule::onCutDrogueClicked() +{ + send(createCommandMsg("MAV_CMD_CUT_DROGUE")); +} + +void CommandPadModule::onPrimaryCutClicked() +{ + send(createCommandMsg("MAV_CMD_CUT_PRIMARY")); +} + +void CommandPadModule::onBackupClicked() +{ + send(createCommandMsg("MAV_CMD_CUT_BACKUP")); +} + diff --git a/Modules/CommandPad/commandpadmodule.h b/Modules/CommandPad/commandpadmodule.h index baba81965dd6525c3b5f27b8d370dcbdc7757a79..561f33b46cfbeba3a0cc231338334661922185de 100644 --- a/Modules/CommandPad/commandpadmodule.h +++ b/Modules/CommandPad/commandpadmodule.h @@ -52,6 +52,9 @@ protected: void onNoseconeOpenClicked(); void onEndMissionClicked(); void onRawEventSendClicked(); + void onCutDrogueClicked(); + void onPrimaryCutClicked(); + void onBackupClicked(); private: Ui::CommandPadModule *ui; diff --git a/Modules/CommandPad/commandpadmodule.ui b/Modules/CommandPad/commandpadmodule.ui index a46c463e0a63ecf47168673818a847ab3bd9be8f..4815133a6eb3c0098b93f24d1dee4e5678ccccea 100644 --- a/Modules/CommandPad/commandpadmodule.ui +++ b/Modules/CommandPad/commandpadmodule.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>338</width> - <height>883</height> + <width>405</width> + <height>980</height> </rect> </property> <property name="windowTitle"> @@ -121,6 +121,13 @@ <set>Qt::AlignCenter</set> </property> <layout class="QGridLayout" name="gridLayout"> + <item row="1" column="1"> + <widget class="QPushButton" name="boardReset_button"> + <property name="text"> + <string>BOARD RESET</string> + </property> + </widget> + </item> <item row="1" column="0"> <widget class="QPushButton" name="resetDPLServo_button"> <property name="text"> @@ -142,13 +149,6 @@ </property> </widget> </item> - <item row="1" column="1"> - <widget class="QPushButton" name="boardReset_button"> - <property name="text"> - <string>BOARD RESET</string> - </property> - </widget> - </item> </layout> </widget> </item> @@ -157,18 +157,35 @@ <property name="title"> <string>Cutter</string> </property> - <layout class="QVBoxLayout" name="verticalLayout_5"> - <item> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="1" column="0"> <widget class="QPushButton" name="testBackupCut_button"> <property name="text"> <string>TEST BACKUP CUT</string> </property> </widget> </item> - <item> + <item row="2" column="0"> <widget class="QPushButton" name="testPrimaryCut_button"> <property name="text"> - <string>TEST PRIMARY CUT</string> + <string>TEST PRIMARY CUT</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QPushButton" name="primaryCut_button"> + <property name="text"> + <string>CUT PRIMARY</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QPushButton" name="backupCut_button"> + <property name="text"> + <string>CUT BACKUP</string> </property> </widget> </item> @@ -183,35 +200,35 @@ <property name="alignment"> <set>Qt::AlignCenter</set> </property> - <layout class="QHBoxLayout" name="horizontalLayout_10"> - <item> + <layout class="QGridLayout" name="gridLayout_5"> + <item row="0" column="0"> <widget class="QPushButton" name="testAerobrakest_button"> <property name="text"> <string>TEST</string> </property> </widget> </item> - <item> - <widget class="QPushButton" name="resetARBServo_button"> - <property name="text"> - <string>RESET ARB SERVO</string> - </property> - </widget> - </item> - <item> + <item row="0" column="2"> <widget class="QPushButton" name="wiggleARBServo_button"> <property name="text"> <string>WIGGLE ARB SERVO</string> </property> </widget> </item> - <item> + <item row="1" column="0"> <widget class="QPushButton" name="disableAerobrakes_button"> <property name="text"> <string>Disable</string> </property> </widget> </item> + <item row="1" column="2"> + <widget class="QPushButton" name="resetARBServo_button"> + <property name="text"> + <string>RESET ARB SERVO</string> + </property> + </widget> + </item> </layout> </widget> </item> @@ -529,18 +546,43 @@ <property name="alignment"> <set>Qt::AlignCenter</set> </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> + <layout class="QGridLayout" name="gridLayout_3"> + <item row="1" column="0"> + <widget class="QPushButton" name="endMission_button"> + <property name="minimumSize"> + <size> + <width>50</width> + <height>50</height> + </size> + </property> + <property name="text"> + <string>END MISSION</string> + </property> + </widget> + </item> + <item row="1" column="1"> <widget class="QPushButton" name="noseconeOpen_button"> + <property name="minimumSize"> + <size> + <width>50</width> + <height>50</height> + </size> + </property> <property name="text"> <string>NOSECONE OPEN</string> </property> </widget> </item> - <item> - <widget class="QPushButton" name="endMission_button"> + <item row="1" column="2"> + <widget class="QPushButton" name="cutDrogue_button"> + <property name="minimumSize"> + <size> + <width>50</width> + <height>50</height> + </size> + </property> <property name="text"> - <string>END MISSION</string> + <string>CUT DROGUE</string> </property> </widget> </item> diff --git a/Modules/Mavlink/mavlinkmodule.cpp b/Modules/Mavlink/mavlinkmodule.cpp index 820e35f410ea206968bbdf8c66e9396513f2ed53..3980fb11914fbd5093f33eff4d40982171fb2605 100644 --- a/Modules/Mavlink/mavlinkmodule.cpp +++ b/Modules/Mavlink/mavlinkmodule.cpp @@ -171,13 +171,6 @@ void MavlinkModule::initializeSerialPortView() // //connect(customPlot,SIGNAL(selectionChangedByUser()),this,SLOT(selectedGraphChange())); //} -void MavlinkModule::onStartClicked() -{ - if(startReadingOnSerialPort()){ - mavlinkReader.startAsyncReading(&serialPort); - } -} - bool MavlinkModule::startReadingOnSerialPort() { @@ -196,7 +189,24 @@ bool MavlinkModule::startReadingOnSerialPort() return false; } +void MavlinkModule::onStartStreamToggled(bool state) +{ + onLinkQualityIndicatorClicked(ui->linkQuality_groupBox->isChecked()); + if(state){ + onStartClicked(); + } + else{ + onStopClicked(); + } +} + +void MavlinkModule::onStartClicked() +{ + if(startReadingOnSerialPort()){ + mavlinkReader.startAsyncReading(&serialPort); + } +} void MavlinkModule::onStopClicked() { @@ -229,6 +239,7 @@ void MavlinkModule::onLinkQualityTimerTick() void MavlinkModule::updateLinkSignalIndicator(int msgArrived, float ratio) { + ui->msgPerSecond_label->setText(QString::number(msgArrived)); ModuleMessage linkQualityMsgNumber(SkywardHubStrings::mavlink_quality_link_topic + "/ReceivedMsgNumber", QString::number(msgArrived)); ModuleMessage linkQualityMsgRatio(SkywardHubStrings::mavlink_quality_link_topic + "/ReceivedRatio", QString::number(ratio)); @@ -238,8 +249,11 @@ void MavlinkModule::updateLinkSignalIndicator(int msgArrived, float ratio) void MavlinkModule::connectUiSlots() { - connect(ui->button_start,&QPushButton::clicked,this, &MavlinkModule::onStartClicked); - connect(ui->button_stop,&QPushButton::clicked,this, &MavlinkModule::onStopClicked); + ui->startStop_button_layout->insertWidget(0, &startSerialStreamToggleButton); + connect(&startSerialStreamToggleButton, &ToggleButton::toggled, this, &MavlinkModule::onStartStreamToggled); + +// connect(ui->button_start,&QPushButton::clicked,this, &MavlinkModule::onStartClicked); +// connect(ui->button_stop,&QPushButton::clicked,this, &MavlinkModule::onStopClicked); // connect(ui->spinBox_maxPackets,SIGNAL(valueChanged(int)),this,SLOT(onMaxPackedValueChanged(int))); connect(ui->comboBox_serialPort, SIGNAL(currentIndexChanged(int)), this, SLOT(onSerialPortIndexChanged(int))); connect(ui->linkQuality_groupBox, &QGroupBox::clicked, this, &MavlinkModule::onLinkQualityIndicatorClicked); diff --git a/Modules/Mavlink/mavlinkmodule.h b/Modules/Mavlink/mavlinkmodule.h index 8102aa80fd82532e5cbf96aa5bbc77b7d8834e23..fe8e652faebd716506a77deb2443697ea3dd827a 100644 --- a/Modules/Mavlink/mavlinkmodule.h +++ b/Modules/Mavlink/mavlinkmodule.h @@ -3,7 +3,9 @@ #include <QWidget> #include "Core/module.h" -#include "Modules/Graph/qcustomplot.h" +//#include "Modules/Graph/qcustomplot.h" +#include "Modules/Utility/togglebutton.h" +#include <QTimer> #include "Core/modulemessage.h" #include "mavlinkreader.h" #include "mavlinkcommandadapter.h" @@ -56,13 +58,15 @@ protected: private slots: void onSerialPortIndexChanged(int index); bool startReadingOnSerialPort(); + void onStartStreamToggled(bool state); private: Ui::MavlinkModule *ui; - QCustomPlot graphCentralView; - QCPGraph *linkGraph = nullptr; +// QCustomPlot graphCentralView; +// QCPGraph *linkGraph = nullptr; + ToggleButton startSerialStreamToggleButton; QString dateFormat = "HH:mm:ss\n(zzz)"; MavlinkReader mavlinkReader; MavlinkCommandAdapter mavlinkCommandAdapter; diff --git a/Modules/Mavlink/mavlinkmodule.ui b/Modules/Mavlink/mavlinkmodule.ui index 32df501892189d5ab110ad7ae545572fa5fe78b2..a37cbb825333364a9b3daa2d07245af17f55834e 100644 --- a/Modules/Mavlink/mavlinkmodule.ui +++ b/Modules/Mavlink/mavlinkmodule.ui @@ -6,14 +6,14 @@ <rect> <x>0</x> <y>0</y> - <width>401</width> - <height>541</height> + <width>545</width> + <height>256</height> </rect> </property> <property name="windowTitle"> <string>Form</string> </property> - <layout class="QVBoxLayout" name="verticalLayout" stretch="0,1,0,1"> + <layout class="QVBoxLayout" name="verticalLayout" stretch="0,1,1"> <item> <widget class="QLabel" name="module_title"> <property name="text"> @@ -38,49 +38,59 @@ <property name="checkable"> <bool>true</bool> </property> - <layout class="QVBoxLayout" name="verticalLayout_3" stretch="0"> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_4" stretch="0,0,0"> - <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="QLabel" name="label_5"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Maximum Packets/second</string> - </property> - </widget> - </item> - <item> - <widget class="QSpinBox" name="spinBox_maxPackets"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimum"> - <number>1</number> - </property> - </widget> - </item> - </layout> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="1" column="3"> + <widget class="QLabel" name="label_7"> + <property name="text"> + <string>Msg Received/s</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLabel" name="label_5"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Maximum Packets/second</string> + </property> + </widget> + </item> + <item row="1" column="4"> + <widget class="QLabel" name="msgPerSecond_label"> + <property name="text"> + <string>msgpersecond value</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QSpinBox" name="spinBox_maxPackets"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimum"> + <number>1</number> + </property> + </widget> + </item> + <item row="1" column="2"> + <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> </widget> @@ -90,118 +100,110 @@ <property name="title"> <string>Setup</string> </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> + <item row="1" column="2"> + <widget class="QLineEdit" name="lineEdit_serialPort"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="1" column="5"> + <layout class="QHBoxLayout" name="startStop_button_layout"/> + </item> + <item row="0" column="5"> + <widget class="QLabel" name="label_6"> + <property name="text"> + <string>Start/Stop</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="0" column="1"> <widget class="QLabel" name="label_2"> <property name="text"> - <string>TextLabel</string> + <string>Available Port</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> </property> </widget> </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox"> - <property name="title"> - <string>Setup Serial Input</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - <property name="checkable"> - <bool>false</bool> - </property> - <property name="checked"> - <bool>false</bool> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <layout class="QHBoxLayout" name="horizontalLayout" stretch="0,0,0,0,0"> - <item> - <widget class="QLabel" name="label_4"> - <property name="text"> - <string>Port</string> - </property> - </widget> - </item> - <item> - <widget class="QComboBox" name="comboBox_serialPort"/> - </item> - <item> - <widget class="QLineEdit" name="lineEdit_serialPort"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </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> - <item> - <widget class="QPushButton" name="button_start"> - <property name="text"> - <string>Start</string> - </property> - </widget> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0,0,0,0,0"> - <item> - <widget class="QComboBox" name="comboBox_baudRate"/> - </item> - <item> - <widget class="QLabel" name="label"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Timeout [s]</string> - </property> - </widget> - </item> - <item> - <widget class="QDoubleSpinBox" name="doubleSpinBox"/> - </item> - <item> - <spacer name="horizontalSpacer_3"> - <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="button_stop"> - <property name="text"> - <string>Stop</string> - </property> - </widget> - </item> - </layout> + <item row="0" column="2"> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string>Selected Port</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item row="1" column="4"> + <widget class="QDoubleSpinBox" name="doubleSpinBox"/> + </item> + <item row="0" column="3"> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Baud Rate</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QComboBox" name="comboBox_serialPort"/> + </item> + <item row="0" column="4"> + <widget class="QLabel" name="label"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Timeout [s]</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item row="1" column="6"> + <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> + <item row="1" column="3"> + <widget class="QComboBox" name="comboBox_baudRate"/> + </item> + <item row="1" column="0"> + <spacer name="horizontalSpacer_3"> + <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> </widget> diff --git a/SkywardHub.pro.user b/SkywardHub.pro.user index 46b0555c43e397b8cde084dd374c3f1990187cb1..774f237a712cf985d109ea797fc2238c7d4451b3 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-05-26T12:01:02. --> +<!-- Written by QtCreator 4.14.2, 2021-05-26T19:42:19. --> <qtcreator> <data> <variable>EnvironmentId</variable>