Commit 106ffa74 authored by Lorenz Meier's avatar Lorenz Meier

Fixed Logging, MAVLink API adjustments

parent a752988b
......@@ -60,8 +60,17 @@ void LogCompressor::run()
return;
}
// outFileName = logFileName;
QString outFileName;
QStringList parts = QFileInfo(infile.fileName()).absoluteFilePath().split(".", QString::SkipEmptyParts);
parts.replace(parts.size()-2, "compressed." + parts.last());
outFileName = parts.join(".");
// Verify that the output file is useable
QFile outTmpFile("processed_" + outFileName);
QFile outTmpFile(outFileName);
if (!outTmpFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
emit logProcessingStatusChanged(tr("Log Compressor: Cannot start/compress log file, since output file %1 is not writable").arg(QFileInfo(outTmpFile.fileName()).absoluteFilePath()));
return;
......@@ -146,11 +155,11 @@ void LogCompressor::run()
// QFile::remove(outFileName);
// outTmpFile.copy(outFileName);
// outTmpFile.close();
emit logProcessingStatusChanged(tr("Log Compressor: Writing output to file %1").arg(QFileInfo(outFileName).absoluteFilePath()));
emit logProcessingStatusChanged(tr("Log Compressor: Writing output to file %1").arg(QFileInfo(outFileName).absoluteFilePath()));
// Clean up and update the status before we return.
currentDataLine = 0;
emit logProcessingStatusChanged(tr("Log compressor: Finished processing file: %1").arg(outFileName));
emit logProcessingStatusChanged(tr("Log compressor: Finished processing file: %1").arg(outFileName));
emit finishedFile(outFileName);
qDebug() << "Done with logfile processing";
running = false;
......
......@@ -766,7 +766,7 @@ void MAVLinkSimulationLink::writeBytes(const char* data, qint64 size)
case MAVLINK_MSG_ID_MANUAL_CONTROL: {
mavlink_manual_control_t control;
mavlink_msg_manual_control_decode(&msg, &control);
qDebug() << "\n" << "ROLL:" << control.roll << "PITCH:" << control.pitch;
qDebug() << "\n" << "ROLL:" << control.x << "PITCH:" << control.y;
}
break;
#endif
......
#include <QDebug>
#include <cmath>
#include <qmath.h>
#include <QGC.h>
#include "MAVLinkSimulationMAV.h"
......@@ -76,7 +77,7 @@ void MAVLinkSimulationMAV::mainloop()
planner.handleMessage(msg);
mavlink_servo_output_raw_t servos;
servos.time_usec = 0;
servos.time_boot_ms = 0;
servos.servo1_raw = 1000;
servos.servo2_raw = 1250;
servos.servo3_raw = 1400;
......
......@@ -1652,7 +1652,7 @@ void UAS::sendMessage(mavlink_message_t message)
foreach (LinkInterface* link, *links)
{
//qDebug() << "ITERATING THROUGH LINKS";
if (link)
if (LinkManager::instance()->getLinks().contains(link))
{
sendMessage(link, message);
//qDebug() << "SENT MESSAGE";
......@@ -2407,8 +2407,10 @@ void UAS::setManualControlCommands(double roll, double pitch, double yaw, double
// If system has manual inputs enabled and is armed
if(((mode & MAV_MODE_FLAG_DECODE_POSITION_MANUAL) && (mode & MAV_MODE_FLAG_DECODE_POSITION_SAFETY)) || (mode & MAV_MODE_FLAG_HIL_ENABLED))
{
// XXX FIXME ADD BUTTON SUPPORT
quint16 buttons = 0;
mavlink_message_t message;
mavlink_msg_manual_control_pack(mavlink->getSystemId(), mavlink->getComponentId(), &message, this->uasId, (float)manualRollAngle, (float)manualPitchAngle, (float)manualYawAngle, (float)manualThrust, controlRollManual, controlPitchManual, controlYawManual, controlThrustManual);
mavlink_msg_manual_control_pack(mavlink->getSystemId(), mavlink->getComponentId(), &message, this->uasId, (float)manualRollAngle, (float)manualPitchAngle, (float)manualThrust, (float)manualYawAngle, buttons);
sendMessage(message);
//qDebug() << __FILE__ << __LINE__ << ": SENT MANUAL CONTROL MESSAGE: roll" << manualRollAngle << " pitch: " << manualPitchAngle << " yaw: " << manualYawAngle << " thrust: " << manualThrust;
......
......@@ -26,7 +26,7 @@ QGCVehicleConfig::QGCVehicleConfig(QWidget *parent) :
setActiveUAS(UASManager::instance()->getActiveUAS());
for (int i = 0; i < chanMax; i++)
for (unsigned int i = 0; i < chanMax; i++)
{
rcValue[i] = 1500;
}
......
......@@ -280,9 +280,9 @@ void LinechartPlot::appendData(QString dataname, quint64 ms, double value)
if(!data.contains(dataname)) {
addCurve(dataname);
enforceGroundTime(m_groundTime);
qDebug() << "ADDING CURVE WITH" << dataname << ms << value;
qDebug() << "MINTIME:" << minTime << "MAXTIME:" << maxTime;
qDebug() << "LASTTIME:" << lastTime;
// qDebug() << "ADDING CURVE WITH" << dataname << ms << value;
// qDebug() << "MINTIME:" << minTime << "MAXTIME:" << maxTime;
// qDebug() << "LASTTIME:" << lastTime;
}
// Add new value
......
......@@ -181,7 +181,8 @@ void LinechartWidget::writeSettings()
{
QSettings settings;
settings.beginGroup("LINECHART");
if (timeButton) settings.setValue("ENFORCE_GROUNDTIME", timeButton->isChecked());
bool enforceGT = (!autoGroundTimeSet && timeButton->isChecked()) ? true : false;
if (timeButton) settings.setValue("ENFORCE_GROUNDTIME", enforceGT);
if (ui.showUnitsCheckBox) settings.setValue("SHOW_UNITS", ui.showUnitsCheckBox->isChecked());
if (ui.shortNameCheckBox) settings.setValue("SHORT_NAMES", ui.shortNameCheckBox->isChecked());
settings.endGroup();
......@@ -197,6 +198,7 @@ void LinechartWidget::readSettings()
timeButton->setChecked(settings.value("ENFORCE_GROUNDTIME", timeButton->isChecked()).toBool());
activePlot->enforceGroundTime(settings.value("ENFORCE_GROUNDTIME", timeButton->isChecked()).toBool());
timeButton->setChecked(settings.value("ENFORCE_GROUNDTIME", timeButton->isChecked()).toBool());
//userGroundTimeSet = settings.value("USER_GROUNDTIME", timeButton->isChecked()).toBool();
}
if (ui.showUnitsCheckBox) ui.showUnitsCheckBox->setChecked(settings.value("SHOW_UNITS", ui.showUnitsCheckBox->isChecked()).toBool());
if (ui.shortNameCheckBox) ui.shortNameCheckBox->setChecked(settings.value("SHORT_NAMES", ui.shortNameCheckBox->isChecked()).toBool());
......@@ -349,18 +351,29 @@ void LinechartWidget::appendData(int uasId, const QString& curve, const QString&
intData.insert(curve+unit, value);
}
if (lastTimestamp == 0 && usec != 0)
{
lastTimestamp = usec;
} else if (usec != 0) {
// Difference larger than 5 secs, enforce ground time
if (abs((int)((qint64)usec - (quint64)lastTimestamp)) > 5000)
{
autoGroundTimeSet = true;
if (activePlot) activePlot->groundTime();
}
}
// Log data
if (logging)
{
if (activePlot->isVisible(curve+unit))
{
if (usec == 0) usec = QGC::groundTimeMilliseconds();
if (usec == 0 || autoGroundTimeSet) usec = QGC::groundTimeMilliseconds();
if (logStartTime == 0) logStartTime = usec;
qint64 time = usec - logStartTime;
if (time < 0) time = 0;
logFile->write(QString(QString::number(time) + "\t" + QString::number(uasId) + "\t" + curve + "\t" + QString::number(value) + "\n").toLatin1());
logFile->flush();
}
}
}
......@@ -384,12 +397,24 @@ void LinechartWidget::appendData(int uasId, const QString& curve, const QString&
intData.insert(curve+unit, value);
}
if (lastTimestamp == 0 && usec != 0)
{
lastTimestamp = usec;
} else if (usec != 0) {
// Difference larger than 5 secs, enforce ground time
if (abs((int)((qint64)usec - (quint64)lastTimestamp)) > 5000)
{
autoGroundTimeSet = true;
if (activePlot) activePlot->groundTime();
}
}
// Log data
if (logging)
{
if (activePlot->isVisible(curve+unit))
{
if (usec == 0) usec = QGC::groundTimeMilliseconds();
if (usec == 0 || autoGroundTimeSet) usec = QGC::groundTimeMilliseconds();
if (logStartTime == 0) logStartTime = usec;
qint64 time = usec - logStartTime;
if (time < 0) time = 0;
......@@ -416,12 +441,24 @@ void LinechartWidget::appendData(int uasId, const QString& curve, const QString&
}
}
if (lastTimestamp == 0 && usec != 0)
{
lastTimestamp = usec;
} else if (usec != 0) {
// Difference larger than 1 sec, enforce ground time
if (abs((int)((qint64)usec - (quint64)lastTimestamp)) > 1000)
{
autoGroundTimeSet = true;
if (activePlot) activePlot->groundTime();
}
}
// Log data
if (logging)
{
if (activePlot->isVisible(curve+unit))
{
if (usec == 0) usec = QGC::groundTimeMilliseconds();
if (usec == 0 || autoGroundTimeSet) usec = QGC::groundTimeMilliseconds();
if (logStartTime == 0) logStartTime = usec;
qint64 time = usec - logStartTime;
if (time < 0) time = 0;
......
......@@ -173,6 +173,9 @@ protected:
LogCompressor* compressor;
QCheckBox* selectAllCheckBox;
int selectedMAV; ///< The MAV for which plot items are accepted, -1 for all systems
quint64 lastTimestamp;
bool userGroundTimeSet;
bool autoGroundTimeSet;
static const int updateInterval = 1000; ///< Time between number updates, in milliseconds
static const int MAX_CURVE_MENUITEM_NUMBER = 8;
......
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