diff --git a/files/ardupilotmega/fixed_wing/calibration/calibration.qgw b/files/ardupilotmega/fixed_wing/calibration/calibration.qgw new file mode 100644 index 0000000000000000000000000000000000000000..2a498a3ebfdd93c12a8a8e89738eb3cf75496281 --- /dev/null +++ b/files/ardupilotmega/fixed_wing/calibration/calibration.qgw @@ -0,0 +1,61 @@ +[PX4%20Calibration%20Tool] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMMANDBUTTON +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_DESCRIPTION=Reboot (only in standby) +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_BUTTONTEXT=REBOOT +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_COMMANDID=246 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM1=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM2=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM4=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM5=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=COMMANDBUTTON +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_DESCRIPTION=Magnetometer calibration +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_BUTTONTEXT=MAG +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_COMMANDID=241 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM1=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM2=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM4=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM5=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=COMMANDBUTTON +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_DESCRIPTION=Accelerometer calibration +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_BUTTONTEXT=ACCEL +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_COMMANDID=241 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM1=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM2=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM4=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM5=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=COMMANDBUTTON +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_DESCRIPTION=Gyroscope calibration +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_BUTTONTEXT=GYRO +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_COMMANDID=241 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM1=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM2=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM4=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM5=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_DESCRIPTION=RC Trim calibration +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_BUTTONTEXT=TRIM +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_COMMANDID=241 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM1=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM2=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM4=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM5=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\size=5 diff --git a/files/ardupilotmega/general/calibration/calibration.qgw b/files/ardupilotmega/general/calibration/calibration.qgw index 04355429c018edb64ebc898a83e3a1438bf22d13..5a54b56dd4accddd9c28906eb517871cf7993a3a 100644 --- a/files/ardupilotmega/general/calibration/calibration.qgw +++ b/files/ardupilotmega/general/calibration/calibration.qgw @@ -12,81 +12,27 @@ QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM5=0 QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM6=0 QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM7=0 + QGC_TOOL_WIDGET_ITEMS\2\TYPE=TEXT QGC_TOOL_WIDGET_ITEMS\2\QGC_TEXT_SOURCE=NONE -QGC_TOOL_WIDGET_ITEMS\2\QGC_TEXT_ID=MAG_LABEL +QGC_TOOL_WIDGET_ITEMS\2\QGC_TEXT_ID=ACCEL_LABEL QGC_TOOL_WIDGET_ITEMS\2\QGC_TEXT_TEXT= QGC_TOOL_WIDGET_ITEMS\3\TYPE=COMMANDBUTTON -QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_DESCRIPTION=Magnetometer calibration -QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_BUTTONTEXT=MAG +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_DESCRIPTION=Accelerometer calibration +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_BUTTONTEXT=ACCEL QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_COMMANDID=241 -QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_LABEL=MAG_TEXT +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_LABEL=ACCEL_TEXT +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_RESPONSE=6 QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM1=0 -QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM2=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM2=0 QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM3=0 QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM4=0 -QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM5=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM5=1 QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM6=0 QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM7=0 QGC_TOOL_WIDGET_ITEMS\4\TYPE=TEXT QGC_TOOL_WIDGET_ITEMS\4\QGC_TEXT_SOURCE=MAV -QGC_TOOL_WIDGET_ITEMS\4\QGC_TEXT_ID=MAG_TEXT +QGC_TOOL_WIDGET_ITEMS\4\QGC_TEXT_ID=ACCEL_TEXT QGC_TOOL_WIDGET_ITEMS\4\QGC_TEXT_TEXT= - -QGC_TOOL_WIDGET_ITEMS\5\TYPE=TEXT -QGC_TOOL_WIDGET_ITEMS\5\QGC_TEXT_SOURCE=NONE -QGC_TOOL_WIDGET_ITEMS\5\QGC_TEXT_ID=ACCEL_LABEL -QGC_TOOL_WIDGET_ITEMS\5\QGC_TEXT_TEXT= -QGC_TOOL_WIDGET_ITEMS\6\TYPE=COMMANDBUTTON -QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_DESCRIPTION=Accelerometer calibration -QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_BUTTONTEXT=ACCEL -QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_COMMANDID=241 -QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_LABEL=ACCEL_TEXT -QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false -QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM1=0 -QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM2=0 -QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM3=0 -QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM4=0 -QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM5=1 -QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM6=0 -QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM7=0 -QGC_TOOL_WIDGET_ITEMS\7\TYPE=TEXT -QGC_TOOL_WIDGET_ITEMS\7\QGC_TEXT_SOURCE=MAV -QGC_TOOL_WIDGET_ITEMS\7\QGC_TEXT_ID=ACCEL_TEXT -QGC_TOOL_WIDGET_ITEMS\7\QGC_TEXT_TEXT= - -QGC_TOOL_WIDGET_ITEMS\8\TYPE=TEXT -QGC_TOOL_WIDGET_ITEMS\8\QGC_TEXT_SOURCE=NONE -QGC_TOOL_WIDGET_ITEMS\8\QGC_TEXT_ID=GYRO_LABEL -QGC_TOOL_WIDGET_ITEMS\8\QGC_TEXT_TEXT= -QGC_TOOL_WIDGET_ITEMS\9\TYPE=COMMANDBUTTON -QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_DESCRIPTION=Gyroscope calibration -QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_BUTTONTEXT=GYRO -QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_COMMANDID=241 -QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_LABEL=GYRO_TEXT -QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false -QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM1=1 -QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM2=0 -QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM3=0 -QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM4=0 -QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM5=0 -QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM6=0 -QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM7=0 -QGC_TOOL_WIDGET_ITEMS\10\TYPE=TEXT -QGC_TOOL_WIDGET_ITEMS\10\QGC_TEXT_SOURCE=MAV -QGC_TOOL_WIDGET_ITEMS\10\QGC_TEXT_ID=GYRO_TEXT -QGC_TOOL_WIDGET_ITEMS\10\QGC_TEXT_TEXT= - -QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_DESCRIPTION=RC Trim calibration -QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_BUTTONTEXT=TRIM -QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_COMMANDID=241 -QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false -QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM1=1 -QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM2=0 -QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM3=0 -QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM4=1 -QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM5=0 -QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM6=0 -QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM7=0 -QGC_TOOL_WIDGET_ITEMS\size=11 +QGC_TOOL_WIDGET_ITEMS\size=4 diff --git a/src/comm/SerialLink.cc b/src/comm/SerialLink.cc index 39b8817f7ec008e743946d33bb10cabf029b356b..e8c4a2a88b6daf8d0e5228436e66f32145f3e023 100644 --- a/src/comm/SerialLink.cc +++ b/src/comm/SerialLink.cc @@ -398,9 +398,11 @@ void SerialLink::run() // Qt way to make clear what a while(1) loop does quint64 msecs = QDateTime::currentMSecsSinceEpoch(); + quint64 initialmsecs = QDateTime::currentMSecsSinceEpoch(); quint64 bytes = 0; bool triedreset = false; bool triedDTR = false; + int timeout = 2500; forever { { @@ -420,10 +422,19 @@ void SerialLink::run() } else { - if (QDateTime::currentMSecsSinceEpoch() - msecs > 10000) + if (QDateTime::currentMSecsSinceEpoch() - msecs > timeout) { //It's been 10 seconds since the last data came in. Reset and try again msecs = QDateTime::currentMSecsSinceEpoch(); + if (msecs - initialmsecs > 25000) + { + //After initial 25 seconds, timeouts are increased to 30 seconds. + //This prevents temporary silences from things like calibration commands + //from screwing things up. In all reality, timeouts should be enabled/disabled + //for events like that on a case by case basis. + //TODO ^^ + timeout = 30000; + } if (!triedDTR && triedreset) { triedDTR = true; diff --git a/src/uas/ArduPilotMegaMAV.cc b/src/uas/ArduPilotMegaMAV.cc index 9dedbeaf6ad07a590aef376d952238ee64dfac8a..2b071f4ba9520994d4c7c7b6e65131244f5f7b81 100644 --- a/src/uas/ArduPilotMegaMAV.cc +++ b/src/uas/ArduPilotMegaMAV.cc @@ -34,6 +34,15 @@ ArduPilotMegaMAV::ArduPilotMegaMAV(MAVLinkProtocol* mavlink, int id) : //This does not seem to work. Manually request each stream type at a specified rate. // Ask for all streams at 4 Hz //enableAllDataTransmission(4); + txReqTimer = new QTimer(this); + connect(txReqTimer,SIGNAL(timeout()),this,SLOT(sendTxRequests())); + + QTimer::singleShot(5000,this,SLOT(sendTxRequests())); //Send an initial TX request in 5 seconds. + + txReqTimer->start(300000); //Resend the TX requests every 5 minutes. +} +void ArduPilotMegaMAV::sendTxRequests() +{ enableExtendedSystemStatusTransmission(2); enablePositionTransmission(3); enableExtra1Transmission(10); diff --git a/src/uas/ArduPilotMegaMAV.h b/src/uas/ArduPilotMegaMAV.h index 9137c4931725de87396346575963840b71dd258c..f0091aa15f29d518c6ab019377c00b39294401fd 100644 --- a/src/uas/ArduPilotMegaMAV.h +++ b/src/uas/ArduPilotMegaMAV.h @@ -40,6 +40,9 @@ public: public slots: /** @brief Receive a MAVLink message from this MAV */ void receiveMessage(LinkInterface* link, mavlink_message_t message); + void sendTxRequests(); +private: + QTimer *txReqTimer; }; #endif // ARDUPILOTMAV_H diff --git a/src/uas/UAS.cc b/src/uas/UAS.cc index 06eddf9bb2f542b85afbcf6e6c580c45358278a5..cc7172cb8cb640a0a42df42d704eb585e7c53155 100644 --- a/src/uas/UAS.cc +++ b/src/uas/UAS.cc @@ -2523,6 +2523,15 @@ void UAS::executeCommand(MAV_CMD command) mavlink_msg_command_long_encode(mavlink->getSystemId(), mavlink->getComponentId(), &msg, &cmd); sendMessage(msg); } +void UAS::executeCommandAck(int num, bool success) +{ + mavlink_message_t msg; + mavlink_command_ack_t ack; + ack.command = num; + ack.result = (success ? 1 : 0); + mavlink_msg_command_ack_encode(mavlink->getSystemId(),mavlink->getComponentId(),&msg,&ack); + sendMessage(msg); +} void UAS::executeCommand(MAV_CMD command, int confirmation, float param1, float param2, float param3, float param4, float param5, float param6, float param7, int component) { diff --git a/src/uas/UAS.h b/src/uas/UAS.h index dabce4b1b7c3208932d8e5c3fb53cf8ff1c8f1e9..c522bf8af6f3a04c1309d835a715255012ba1bad 100644 --- a/src/uas/UAS.h +++ b/src/uas/UAS.h @@ -620,6 +620,8 @@ public slots: void executeCommand(MAV_CMD command); /** @brief Executes a command with 7 params */ void executeCommand(MAV_CMD command, int confirmation, float param1, float param2, float param3, float param4, float param5, float param6, float param7, int component); + /** @brief Executes a command ack, with success boolean **/ + void executeCommandAck(int num, bool success); /** @brief Set the current battery type and voltages */ void setBatterySpecs(const QString& specs); /** @brief Get the current battery type and specs */ diff --git a/src/uas/UASInterface.h b/src/uas/UASInterface.h index b06dfedc555670d0ec37d46c3d137e41a78fb7bb..06a03b70a893929e0a9adc373a429f0f856fca06 100644 --- a/src/uas/UASInterface.h +++ b/src/uas/UASInterface.h @@ -227,6 +227,8 @@ public slots: virtual void executeCommand(MAV_CMD command) = 0; /** @brief Executes a command **/ virtual void executeCommand(MAV_CMD command, int confirmation, float param1, float param2, float param3, float param4, float param5, float param6, float param7, int component) = 0; + /** @brief Executes a command ack, with success boolean **/ + virtual void executeCommandAck(int num, bool success) = 0; /** @brief Selects the airframe */ virtual void setAirframe(int airframe) = 0; diff --git a/src/ui/designer/QGCCommandButton.cc b/src/ui/designer/QGCCommandButton.cc index a237b832b92366c2033004b4aac13ae2955539c6..c42e46ebdad8d6b59f98a28cc905fad3b159750d 100644 --- a/src/ui/designer/QGCCommandButton.cc +++ b/src/ui/designer/QGCCommandButton.cc @@ -13,6 +13,9 @@ QGCCommandButton::QGCCommandButton(QWidget *parent) : { ui->setupUi(this); + responsecount = 0; + responsenum = 0; + connect(ui->commandButton, SIGNAL(clicked()), this, SLOT(sendCommand())); connect(ui->editFinishButton, SIGNAL(clicked()), this, SLOT(endEditMode())); connect(ui->editButtonName, SIGNAL(textChanged(QString)), this, SLOT(setCommandButtonName(QString))); @@ -95,6 +98,29 @@ void QGCCommandButton::sendCommand() { if (QGCToolWidgetItem::uas) { + if (responsenum != 0) + { + if (responsecount == 0) + { + //We're finished. Reset. + qDebug() << "Finished sequence"; + QGCToolWidgetItem::uas->executeCommandAck(responsenum-responsecount,true); + responsecount = responsenum; + return; + } + if (responsecount < responsenum) + { + qDebug() << responsecount << responsenum; + QGCToolWidgetItem::uas->executeCommandAck(responsenum-responsecount,true); + responsecount--; + return; + } + else + { + qDebug() << "No sequence yet, sending command"; + responsecount--; + } + } // Check if command text is a number bool ok; int index = 0; @@ -295,6 +321,9 @@ void QGCCommandButton::readSettings(const QString& pre,const QVariantMap& settin ui->editNameLabel->setText(settings.value(pre + "QGC_COMMAND_BUTTON_DESCRIPTION", "ERROR LOADING BUTTON").toString()); ui->nameLabel->setText(settings.value(pre + "QGC_COMMAND_BUTTON_DESCRIPTION", "ERROR LOADING BUTTON").toString()); + + responsenum = settings.value(pre + "QGC_COMMAND_BUTTON_RESPONSE",0).toInt(); + responsecount = responsenum; } void QGCCommandButton::readSettings(const QSettings& settings) { @@ -349,4 +378,6 @@ void QGCCommandButton::readSettings(const QSettings& settings) ui->editNameLabel->setText(settings.value("QGC_COMMAND_BUTTON_DESCRIPTION", "ERROR LOADING BUTTON").toString()); ui->nameLabel->setText(settings.value("QGC_COMMAND_BUTTON_DESCRIPTION", "ERROR LOADING BUTTON").toString()); + responsenum = settings.value("QGC_COMMAND_BUTTON_RESPONSE",0).toInt(); + responsecount = responsenum; } diff --git a/src/ui/designer/QGCCommandButton.h b/src/ui/designer/QGCCommandButton.h index 0073bae5f1678039b88145a6456c2d97cf38c824..320cc97fbae314bb16de86913f0a9ca9f9d3f20a 100644 --- a/src/ui/designer/QGCCommandButton.h +++ b/src/ui/designer/QGCCommandButton.h @@ -29,6 +29,8 @@ public slots: signals: void showLabel(QString name, int num); private: + int responsenum; + int responsecount; QString showlabelname; Ui::QGCCommandButton *ui; UASInterface* uas;