Commit 51e1fe0d authored by Gus Grubba's avatar Gus Grubba

Updated MAVLink logging to the new “flightreport" form upload.

parent 36ce0c1d
...@@ -21,16 +21,23 @@ ...@@ -21,16 +21,23 @@
QGC_LOGGING_CATEGORY(MAVLinkLogManagerLog, "MAVLinkLogManagerLog") QGC_LOGGING_CATEGORY(MAVLinkLogManagerLog, "MAVLinkLogManagerLog")
static const char* kEmailAddressKey = "MAVLinkLogEmail"; static const char* kMAVLinkLogGroup = "MAVLinkLogGroup";
static const char* kDescriptionsKey = "MAVLinkLogDescription"; static const char* kEmailAddressKey = "Email";
static const char* kDescriptionsKey = "Description";
static const char* kDefaultDescr = "QGroundControl Session"; static const char* kDefaultDescr = "QGroundControl Session";
static const char* kPx4URLKey = "MAVLinkLogURL"; static const char* kPx4URLKey = "LogURL";
static const char* kDefaultPx4URL = "http://logs.px4.io/upload"; static const char* kDefaultPx4URL = "http://logs.px4.io/upload";
static const char* kEnableAutoUploadKey = "EnableAutoUploadKey"; static const char* kEnableAutoUploadKey = "EnableAutoUpload";
static const char* kEnableAutoStartKey = "EnableAutoStartKey"; static const char* kEnableAutoStartKey = "EnableAutoStart";
static const char* kEnableDeletetKey = "EnableDeleteKey"; static const char* kEnableDeletetKey = "EnableDelete";
static const char* kUlogExtension = ".ulg"; static const char* kUlogExtension = ".ulg";
static const char* kSidecarExtension = ".uploaded"; static const char* kSidecarExtension = ".uploaded";
static const char* kVideoURLKey = "VideoURL";
static const char* kWindSpeedKey = "WindSpeed";
static const char* kRateKey = "RateKey";
static const char* kPublicLogKey = "PublicLog";
static const char* kFeedback = "feedback";
static const char* kVideoURL = "videoUrl";
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
MAVLinkLogFiles::MAVLinkLogFiles(MAVLinkLogManager* manager, const QString& filePath, bool newFile) MAVLinkLogFiles::MAVLinkLogFiles(MAVLinkLogManager* manager, const QString& filePath, bool newFile)
...@@ -299,15 +306,22 @@ MAVLinkLogManager::MAVLinkLogManager(QGCApplication* app) ...@@ -299,15 +306,22 @@ MAVLinkLogManager::MAVLinkLogManager(QGCApplication* app)
, _loggingDisabled(false) , _loggingDisabled(false)
, _logProcessor(NULL) , _logProcessor(NULL)
, _deleteAfterUpload(false) , _deleteAfterUpload(false)
, _windSpeed(-1)
, _publicLog(false)
{ {
//-- Get saved settings //-- Get saved settings
QSettings settings; QSettings settings;
settings.beginGroup(kMAVLinkLogGroup);
setEmailAddress(settings.value(kEmailAddressKey, QString()).toString()); setEmailAddress(settings.value(kEmailAddressKey, QString()).toString());
setDescription(settings.value(kDescriptionsKey, QString(kDefaultDescr)).toString()); setDescription(settings.value(kDescriptionsKey, QString(kDefaultDescr)).toString());
setUploadURL(settings.value(kPx4URLKey, QString(kDefaultPx4URL)).toString()); setUploadURL(settings.value(kPx4URLKey, QString(kDefaultPx4URL)).toString());
setVideoURL(settings.value(kVideoURLKey, QString()).toString());
setEnableAutoUpload(settings.value(kEnableAutoUploadKey, true).toBool()); setEnableAutoUpload(settings.value(kEnableAutoUploadKey, true).toBool());
setEnableAutoStart(settings.value(kEnableAutoStartKey, true).toBool()); setEnableAutoStart(settings.value(kEnableAutoStartKey, true).toBool());
setDeleteAfterUpload(settings.value(kEnableDeletetKey, false).toBool()); setDeleteAfterUpload(settings.value(kEnableDeletetKey, false).toBool());
setWindSpeed(settings.value(kWindSpeedKey, -1).toInt());
setRating(settings.value(kRateKey, "notset").toString());
setPublicLog(settings.value(kPublicLogKey, true).toBool());
//-- Logging location //-- Logging location
_logPath = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); _logPath = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
_logPath += "/MAVLinkLogs"; _logPath += "/MAVLinkLogs";
...@@ -353,6 +367,7 @@ MAVLinkLogManager::setEmailAddress(QString email) ...@@ -353,6 +367,7 @@ MAVLinkLogManager::setEmailAddress(QString email)
{ {
_emailAddress = email; _emailAddress = email;
QSettings settings; QSettings settings;
settings.beginGroup(kMAVLinkLogGroup);
settings.setValue(kEmailAddressKey, email); settings.setValue(kEmailAddressKey, email);
emit emailAddressChanged(); emit emailAddressChanged();
} }
...@@ -363,6 +378,7 @@ MAVLinkLogManager::setDescription(QString description) ...@@ -363,6 +378,7 @@ MAVLinkLogManager::setDescription(QString description)
{ {
_description = description; _description = description;
QSettings settings; QSettings settings;
settings.beginGroup(kMAVLinkLogGroup);
settings.setValue(kDescriptionsKey, description); settings.setValue(kDescriptionsKey, description);
emit descriptionChanged(); emit descriptionChanged();
} }
...@@ -376,16 +392,37 @@ MAVLinkLogManager::setUploadURL(QString url) ...@@ -376,16 +392,37 @@ MAVLinkLogManager::setUploadURL(QString url)
_uploadURL = kDefaultPx4URL; _uploadURL = kDefaultPx4URL;
} }
QSettings settings; QSettings settings;
settings.beginGroup(kMAVLinkLogGroup);
settings.setValue(kPx4URLKey, _uploadURL); settings.setValue(kPx4URLKey, _uploadURL);
emit uploadURLChanged(); emit uploadURLChanged();
} }
//-----------------------------------------------------------------------------
void
MAVLinkLogManager::setFeedback(QString fb)
{
_feedback = fb;
emit feedbackChanged();
}
//-----------------------------------------------------------------------------
void
MAVLinkLogManager::setVideoURL(QString url)
{
_videoURL = url;
QSettings settings;
settings.beginGroup(kMAVLinkLogGroup);
settings.setValue(kVideoURLKey, url);
emit videoURLChanged();
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void void
MAVLinkLogManager::setEnableAutoUpload(bool enable) MAVLinkLogManager::setEnableAutoUpload(bool enable)
{ {
_enableAutoUpload = enable; _enableAutoUpload = enable;
QSettings settings; QSettings settings;
settings.beginGroup(kMAVLinkLogGroup);
settings.setValue(kEnableAutoUploadKey, enable); settings.setValue(kEnableAutoUploadKey, enable);
emit enableAutoUploadChanged(); emit enableAutoUploadChanged();
} }
...@@ -396,6 +433,7 @@ MAVLinkLogManager::setEnableAutoStart(bool enable) ...@@ -396,6 +433,7 @@ MAVLinkLogManager::setEnableAutoStart(bool enable)
{ {
_enableAutoStart = enable; _enableAutoStart = enable;
QSettings settings; QSettings settings;
settings.beginGroup(kMAVLinkLogGroup);
settings.setValue(kEnableAutoStartKey, enable); settings.setValue(kEnableAutoStartKey, enable);
emit enableAutoStartChanged(); emit enableAutoStartChanged();
} }
...@@ -406,10 +444,44 @@ MAVLinkLogManager::setDeleteAfterUpload(bool enable) ...@@ -406,10 +444,44 @@ MAVLinkLogManager::setDeleteAfterUpload(bool enable)
{ {
_deleteAfterUpload = enable; _deleteAfterUpload = enable;
QSettings settings; QSettings settings;
settings.beginGroup(kMAVLinkLogGroup);
settings.setValue(kEnableDeletetKey, enable); settings.setValue(kEnableDeletetKey, enable);
emit deleteAfterUploadChanged(); emit deleteAfterUploadChanged();
} }
//-----------------------------------------------------------------------------
void
MAVLinkLogManager::setWindSpeed(int speed)
{
_windSpeed = speed;
QSettings settings;
settings.beginGroup(kMAVLinkLogGroup);
settings.setValue(kWindSpeedKey, speed);
emit windSpeedChanged();
}
//-----------------------------------------------------------------------------
void
MAVLinkLogManager::setRating(QString rate)
{
_rating = rate;
QSettings settings;
settings.beginGroup(kMAVLinkLogGroup);
settings.setValue(kRateKey, rate);
emit ratingChanged();
}
//-----------------------------------------------------------------------------
void
MAVLinkLogManager::setPublicLog(bool pub)
{
_publicLog = pub;
QSettings settings;
settings.beginGroup(kMAVLinkLogGroup);
settings.setValue(kPublicLogKey, pub);
emit publicLogChanged();
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool bool
MAVLinkLogManager::uploading() MAVLinkLogManager::uploading()
...@@ -619,17 +691,41 @@ MAVLinkLogManager::_sendLog(const QString& logFile) ...@@ -619,17 +691,41 @@ MAVLinkLogManager::_sendLog(const QString& logFile)
QHttpMultiPart* multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpMultiPart* multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
QHttpPart emailPart = create_form_part("email", _emailAddress); QHttpPart emailPart = create_form_part("email", _emailAddress);
QHttpPart descriptionPart = create_form_part("description", _description); QHttpPart descriptionPart = create_form_part("description", _description);
QHttpPart sourcePart = create_form_part("source", "QGroundControl"); QHttpPart sourcePart = create_form_part("source", "QGroundControl");
QHttpPart versionPart = create_form_part("version", _app->applicationVersion()); QHttpPart versionPart = create_form_part("version", _app->applicationVersion());
QHttpPart logPart; QHttpPart typePart = create_form_part("type", "flightreport");
logPart.setHeader(QNetworkRequest::ContentTypeHeader, "application/octet-stream"); QHttpPart windPart = create_form_part("windSpeed", QString::number(_windSpeed));
logPart.setHeader(QNetworkRequest::ContentDispositionHeader, QString("form-data; name=\"filearg\"; filename=\"%1\"").arg(fi.fileName())); QHttpPart ratingPart = create_form_part("rating", _rating);
logPart.setBodyDevice(file); QHttpPart publicPart = create_form_part("public", _publicLog ? "true" : "false");
//-- Assemble request and POST it //-- Assemble request and POST it
multiPart->append(emailPart); multiPart->append(emailPart);
multiPart->append(descriptionPart); multiPart->append(descriptionPart);
multiPart->append(sourcePart); multiPart->append(sourcePart);
multiPart->append(versionPart); multiPart->append(versionPart);
multiPart->append(typePart);
multiPart->append(windPart);
multiPart->append(ratingPart);
multiPart->append(publicPart);
//-- Optional
QHttpPart feedbackPart;
if(_feedback.isEmpty()) {
feedbackPart = create_form_part(kFeedback, "None Given");
} else {
feedbackPart = create_form_part(kFeedback, _feedback);
}
multiPart->append(feedbackPart);
QHttpPart videoPart;
if(_videoURL.isEmpty()) {
videoPart = create_form_part(kVideoURL, "None");
} else {
videoPart = create_form_part(kVideoURL, _videoURL);
}
multiPart->append(videoPart);
//-- Actual Log File
QHttpPart logPart;
logPart.setHeader(QNetworkRequest::ContentTypeHeader, "application/octet-stream");
logPart.setHeader(QNetworkRequest::ContentDispositionHeader, QString("form-data; name=\"filearg\"; filename=\"%1\"").arg(fi.fileName()));
logPart.setBodyDevice(file);
multiPart->append(logPart); multiPart->append(logPart);
file->setParent(multiPart); file->setParent(multiPart);
QNetworkRequest request(_uploadURL); QNetworkRequest request(_uploadURL);
......
...@@ -112,13 +112,18 @@ public: ...@@ -112,13 +112,18 @@ public:
Q_PROPERTY(QString emailAddress READ emailAddress WRITE setEmailAddress NOTIFY emailAddressChanged) Q_PROPERTY(QString emailAddress READ emailAddress WRITE setEmailAddress NOTIFY emailAddressChanged)
Q_PROPERTY(QString description READ description WRITE setDescription NOTIFY descriptionChanged) Q_PROPERTY(QString description READ description WRITE setDescription NOTIFY descriptionChanged)
Q_PROPERTY(QString uploadURL READ uploadURL WRITE setUploadURL NOTIFY uploadURLChanged) Q_PROPERTY(QString uploadURL READ uploadURL WRITE setUploadURL NOTIFY uploadURLChanged)
Q_PROPERTY(QString feedback READ feedback WRITE setFeedback NOTIFY feedbackChanged)
Q_PROPERTY(QString videoURL READ videoURL WRITE setVideoURL NOTIFY videoURLChanged)
Q_PROPERTY(bool enableAutoUpload READ enableAutoUpload WRITE setEnableAutoUpload NOTIFY enableAutoUploadChanged) Q_PROPERTY(bool enableAutoUpload READ enableAutoUpload WRITE setEnableAutoUpload NOTIFY enableAutoUploadChanged)
Q_PROPERTY(bool enableAutoStart READ enableAutoStart WRITE setEnableAutoStart NOTIFY enableAutoStartChanged) Q_PROPERTY(bool enableAutoStart READ enableAutoStart WRITE setEnableAutoStart NOTIFY enableAutoStartChanged)
Q_PROPERTY(bool deleteAfterUpload READ deleteAfterUpload WRITE setDeleteAfterUpload NOTIFY deleteAfterUploadChanged) Q_PROPERTY(bool deleteAfterUpload READ deleteAfterUpload WRITE setDeleteAfterUpload NOTIFY deleteAfterUploadChanged)
Q_PROPERTY(bool publicLog READ publicLog WRITE setPublicLog NOTIFY publicLogChanged)
Q_PROPERTY(bool uploading READ uploading NOTIFY uploadingChanged) Q_PROPERTY(bool uploading READ uploading NOTIFY uploadingChanged)
Q_PROPERTY(bool logRunning READ logRunning NOTIFY logRunningChanged) Q_PROPERTY(bool logRunning READ logRunning NOTIFY logRunningChanged)
Q_PROPERTY(bool canStartLog READ canStartLog NOTIFY canStartLogChanged) Q_PROPERTY(bool canStartLog READ canStartLog NOTIFY canStartLogChanged)
Q_PROPERTY(QmlObjectListModel* logFiles READ logFiles NOTIFY logFilesChanged) Q_PROPERTY(QmlObjectListModel* logFiles READ logFiles NOTIFY logFilesChanged)
Q_PROPERTY(int windSpeed READ windSpeed WRITE setWindSpeed NOTIFY windSpeedChanged)
Q_PROPERTY(QString rating READ rating WRITE setRating NOTIFY ratingChanged)
Q_INVOKABLE void uploadLog (); Q_INVOKABLE void uploadLog ();
Q_INVOKABLE void deleteLog (); Q_INVOKABLE void deleteLog ();
...@@ -129,21 +134,31 @@ public: ...@@ -129,21 +134,31 @@ public:
QString emailAddress () { return _emailAddress; } QString emailAddress () { return _emailAddress; }
QString description () { return _description; } QString description () { return _description; }
QString uploadURL () { return _uploadURL; } QString uploadURL () { return _uploadURL; }
QString feedback () { return _feedback; }
QString videoURL () { return _videoURL; }
bool enableAutoUpload () { return _enableAutoUpload; } bool enableAutoUpload () { return _enableAutoUpload; }
bool enableAutoStart () { return _enableAutoStart; } bool enableAutoStart () { return _enableAutoStart; }
bool uploading (); bool uploading ();
bool logRunning () { return _logRunning; } bool logRunning () { return _logRunning; }
bool canStartLog () { return _vehicle != NULL; } bool canStartLog () { return _vehicle != NULL; }
bool deleteAfterUpload () { return _deleteAfterUpload; } bool deleteAfterUpload () { return _deleteAfterUpload; }
bool publicLog () { return _publicLog; }
int windSpeed () { return _windSpeed; }
QString rating () { return _rating; }
QmlObjectListModel* logFiles () { return &_logFiles; } QmlObjectListModel* logFiles () { return &_logFiles; }
void setEmailAddress (QString email); void setEmailAddress (QString email);
void setDescription (QString description); void setDescription (QString description);
void setUploadURL (QString url); void setUploadURL (QString url);
void setFeedback (QString feedback);
void setVideoURL (QString url);
void setEnableAutoUpload (bool enable); void setEnableAutoUpload (bool enable);
void setEnableAutoStart (bool enable); void setEnableAutoStart (bool enable);
void setDeleteAfterUpload(bool enable); void setDeleteAfterUpload(bool enable);
void setWindSpeed (int speed);
void setRating (QString rate);
void setPublicLog (bool publicLog);
// Override from QGCTool // Override from QGCTool
void setToolbox (QGCToolbox *toolbox); void setToolbox (QGCToolbox *toolbox);
...@@ -152,6 +167,7 @@ signals: ...@@ -152,6 +167,7 @@ signals:
void emailAddressChanged (); void emailAddressChanged ();
void descriptionChanged (); void descriptionChanged ();
void uploadURLChanged (); void uploadURLChanged ();
void feedbackChanged ();
void enableAutoUploadChanged (); void enableAutoUploadChanged ();
void enableAutoStartChanged (); void enableAutoStartChanged ();
void logFilesChanged (); void logFilesChanged ();
...@@ -164,6 +180,10 @@ signals: ...@@ -164,6 +180,10 @@ signals:
void logRunningChanged (); void logRunningChanged ();
void canStartLogChanged (); void canStartLogChanged ();
void deleteAfterUploadChanged (); void deleteAfterUploadChanged ();
void windSpeedChanged ();
void ratingChanged ();
void videoURLChanged ();
void publicLogChanged ();
private slots: private slots:
void _uploadFinished (); void _uploadFinished ();
...@@ -188,7 +208,9 @@ private: ...@@ -188,7 +208,9 @@ private:
QString _description; QString _description;
QString _emailAddress; QString _emailAddress;
QString _uploadURL; QString _uploadURL;
QString _feedback;
QString _logPath; QString _logPath;
QString _videoURL;
bool _enableAutoUpload; bool _enableAutoUpload;
bool _enableAutoStart; bool _enableAutoStart;
QNetworkAccessManager* _nam; QNetworkAccessManager* _nam;
...@@ -199,6 +221,9 @@ private: ...@@ -199,6 +221,9 @@ private:
bool _loggingDisabled; bool _loggingDisabled;
MAVLinkLogProcessor* _logProcessor; MAVLinkLogProcessor* _logProcessor;
bool _deleteAfterUpload; bool _deleteAfterUpload;
int _windSpeed;
QString _rating;
bool _publicLog;
}; };
#endif #endif
This diff is collapsed.
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