Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
c615f477
Commit
c615f477
authored
Oct 25, 2016
by
Gus Grubba
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Finished. Needs testing and debugging.
parent
4d23912a
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
197 additions
and
55 deletions
+197
-55
MavlinkLogManager.cc
src/uas/MavlinkLogManager.cc
+130
-42
MavlinkLogManager.h
src/uas/MavlinkLogManager.h
+47
-6
MavlinkSettings.qml
src/ui/preferences/MavlinkSettings.qml
+20
-7
No files found.
src/uas/MavlinkLogManager.cc
View file @
c615f477
...
@@ -28,6 +28,7 @@ static const char* kPx4URLKey = "MavlinkLogURL";
...
@@ -28,6 +28,7 @@ static const char* kPx4URLKey = "MavlinkLogURL";
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
=
"EnableAutoUploadKey"
;
static
const
char
*
kEnableAutoStartKey
=
"EnableAutoStartKey"
;
static
const
char
*
kEnableAutoStartKey
=
"EnableAutoStartKey"
;
static
const
char
*
kEnableDeletetKey
=
"EnableDeleteKey"
;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
MavlinkLogFiles
::
MavlinkLogFiles
(
MavlinkLogManager
*
manager
,
const
QString
&
filePath
)
MavlinkLogFiles
::
MavlinkLogFiles
(
MavlinkLogManager
*
manager
,
const
QString
&
filePath
)
...
@@ -42,6 +43,14 @@ MavlinkLogFiles::MavlinkLogFiles(MavlinkLogManager* manager, const QString& file
...
@@ -42,6 +43,14 @@ MavlinkLogFiles::MavlinkLogFiles(MavlinkLogManager* manager, const QString& file
_size
=
(
quint32
)
fi
.
size
();
_size
=
(
quint32
)
fi
.
size
();
}
}
//-----------------------------------------------------------------------------
void
MavlinkLogFiles
::
setSize
(
quint32
size
)
{
_size
=
size
;
emit
sizeChanged
();
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void
void
MavlinkLogFiles
::
setSelected
(
bool
selected
)
MavlinkLogFiles
::
setSelected
(
bool
selected
)
...
@@ -67,6 +76,14 @@ MavlinkLogFiles::setProgress(qreal progress)
...
@@ -67,6 +76,14 @@ MavlinkLogFiles::setProgress(qreal progress)
emit
progressChanged
();
emit
progressChanged
();
}
}
//-----------------------------------------------------------------------------
void
MavlinkLogFiles
::
setWriting
(
bool
writing
)
{
_writing
=
writing
;
emit
writingChanged
();
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
MavlinkLogManager
::
MavlinkLogManager
(
QGCApplication
*
app
)
MavlinkLogManager
::
MavlinkLogManager
(
QGCApplication
*
app
)
:
QGCTool
(
app
)
:
QGCTool
(
app
)
...
@@ -77,8 +94,9 @@ MavlinkLogManager::MavlinkLogManager(QGCApplication* app)
...
@@ -77,8 +94,9 @@ MavlinkLogManager::MavlinkLogManager(QGCApplication* app)
,
_vehicle
(
NULL
)
,
_vehicle
(
NULL
)
,
_logRunning
(
false
)
,
_logRunning
(
false
)
,
_loggingDisabled
(
false
)
,
_loggingDisabled
(
false
)
,
_currentSavingFile
Fd
(
NULL
)
,
_currentSavingFile
(
NULL
)
,
_sequence
(
0
)
,
_sequence
(
0
)
,
_deleteAfterUpload
(
false
)
{
{
//-- Get saved settings
//-- Get saved settings
QSettings
settings
;
QSettings
settings
;
...
@@ -87,6 +105,7 @@ MavlinkLogManager::MavlinkLogManager(QGCApplication* app)
...
@@ -87,6 +105,7 @@ MavlinkLogManager::MavlinkLogManager(QGCApplication* app)
setUploadURL
(
settings
.
value
(
kPx4URLKey
,
QString
(
kDefaultPx4URL
)).
toString
());
setUploadURL
(
settings
.
value
(
kPx4URLKey
,
QString
(
kDefaultPx4URL
)).
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
());
//-- Logging location
//-- Logging location
_logPath
=
QStandardPaths
::
writableLocation
(
QStandardPaths
::
AppDataLocation
);
_logPath
=
QStandardPaths
::
writableLocation
(
QStandardPaths
::
AppDataLocation
);
_logPath
+=
"/MavlinkLogs"
;
_logPath
+=
"/MavlinkLogs"
;
...
@@ -100,7 +119,7 @@ MavlinkLogManager::MavlinkLogManager(QGCApplication* app)
...
@@ -100,7 +119,7 @@ MavlinkLogManager::MavlinkLogManager(QGCApplication* app)
//-- Load current list of logs
//-- Load current list of logs
QDirIterator
it
(
_logPath
,
QStringList
()
<<
"*.ulg"
,
QDir
::
Files
);
QDirIterator
it
(
_logPath
,
QStringList
()
<<
"*.ulg"
,
QDir
::
Files
);
while
(
it
.
hasNext
())
{
while
(
it
.
hasNext
())
{
_
logFiles
.
append
(
new
MavlinkLogFiles
(
this
,
it
.
next
()));
_
insertNewLog
(
new
MavlinkLogFiles
(
this
,
it
.
next
()));
}
}
qCDebug
(
MavlinkLogManagerLog
)
<<
"Mavlink logs directory:"
<<
_logPath
;
qCDebug
(
MavlinkLogManagerLog
)
<<
"Mavlink logs directory:"
<<
_logPath
;
}
}
...
@@ -182,9 +201,19 @@ MavlinkLogManager::setEnableAutoStart(bool enable)
...
@@ -182,9 +201,19 @@ MavlinkLogManager::setEnableAutoStart(bool enable)
emit
enableAutoStartChanged
();
emit
enableAutoStartChanged
();
}
}
//-----------------------------------------------------------------------------
void
MavlinkLogManager
::
setDeleteAfterUpload
(
bool
enable
)
{
_deleteAfterUpload
=
enable
;
QSettings
settings
;
settings
.
setValue
(
kEnableDeletetKey
,
enable
);
emit
deleteAfterUploadChanged
();
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
bool
bool
MavlinkLogManager
::
busy
()
MavlinkLogManager
::
uploading
()
{
{
return
_currentLogfile
!=
NULL
;
return
_currentLogfile
!=
NULL
;
}
}
...
@@ -208,12 +237,32 @@ MavlinkLogManager::uploadLog()
...
@@ -208,12 +237,32 @@ MavlinkLogManager::uploadLog()
filePath
+=
_currentLogfile
->
name
();
filePath
+=
_currentLogfile
->
name
();
filePath
+=
".ulg"
;
filePath
+=
".ulg"
;
_sendLog
(
filePath
);
_sendLog
(
filePath
);
emit
busy
Changed
();
emit
uploading
Changed
();
return
;
return
;
}
}
}
}
_currentLogfile
=
NULL
;
_currentLogfile
=
NULL
;
emit
busyChanged
();
emit
uploadingChanged
();
}
//-----------------------------------------------------------------------------
void
MavlinkLogManager
::
_insertNewLog
(
MavlinkLogFiles
*
newLog
)
{
//-- Simpler than trying to sort this thing
int
count
=
_logFiles
.
count
();
if
(
!
count
)
{
_logFiles
.
append
(
newLog
);
}
else
{
for
(
int
i
=
0
;
i
<
count
;
i
++
)
{
MavlinkLogFiles
*
f
=
qobject_cast
<
MavlinkLogFiles
*>
(
_logFiles
.
get
(
i
));
if
(
newLog
->
name
()
<
f
->
name
())
{
_logFiles
.
insert
(
i
,
newLog
);
return
;
}
}
_logFiles
.
append
(
newLog
);
}
}
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
...
@@ -239,19 +288,26 @@ MavlinkLogManager::deleteLog()
...
@@ -239,19 +288,26 @@ MavlinkLogManager::deleteLog()
if
(
idx
<
0
)
{
if
(
idx
<
0
)
{
break
;
break
;
}
}
MavlinkLogFiles
*
f
=
qobject_cast
<
MavlinkLogFiles
*>
(
_logFiles
.
get
(
idx
));
MavlinkLogFiles
*
log
=
qobject_cast
<
MavlinkLogFiles
*>
(
_logFiles
.
get
(
idx
));
_deleteLog
(
log
);
}
}
//-----------------------------------------------------------------------------
void
MavlinkLogManager
::
_deleteLog
(
MavlinkLogFiles
*
log
)
{
QString
filePath
=
_logPath
;
QString
filePath
=
_logPath
;
filePath
+=
"/"
;
filePath
+=
"/"
;
filePath
+=
f
->
name
();
filePath
+=
log
->
name
();
filePath
+=
".ulg"
;
filePath
+=
".ulg"
;
QFile
gone
(
filePath
);
QFile
gone
(
filePath
);
if
(
!
gone
.
remove
())
{
if
(
!
gone
.
remove
())
{
qCWarning
(
MavlinkLogManagerLog
)
<<
"Could not delete Mavlink log file:"
<<
_logPath
;
qCWarning
(
MavlinkLogManagerLog
)
<<
"Could not delete Mavlink log file:"
<<
_logPath
;
}
}
_logFiles
.
removeAt
(
idx
);
_logFiles
.
removeOne
(
log
);
delete
f
;
delete
log
;
emit
logFilesChanged
();
emit
logFilesChanged
();
}
}
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
...
@@ -288,21 +344,26 @@ void
...
@@ -288,21 +344,26 @@ void
MavlinkLogManager
::
stopLogging
()
MavlinkLogManager
::
stopLogging
()
{
{
if
(
_vehicle
)
{
if
(
_vehicle
)
{
//-- Tell vehicle to stop sending logs
_vehicle
->
stopMavlinkLog
();
_vehicle
->
stopMavlinkLog
();
_logRunning
=
false
;
if
(
_currentSavingFile
)
{
emit
logRunningChanged
();
_currentSavingFile
->
close
();
if
(
_currentSavingFileFd
)
{
if
(
_currentSavingFile
->
record
)
{
fclose
(
_currentSavingFileFd
);
_currentSavingFile
->
record
->
setWriting
(
false
);
_logFiles
.
append
(
new
MavlinkLogFiles
(
this
,
_currentSavingFileStr
));
emit
logFilesChanged
();
_currentSavingFileFd
=
NULL
;
_currentSavingFileStr
.
clear
();
//-- TODO: If auto upload is set, schedule it
if
(
_enableAutoUpload
)
{
if
(
_enableAutoUpload
)
{
//-- Queue log for auto upload
//-- Queue log for auto upload (set selected flag)
_currentSavingFile
->
record
->
setSelected
(
true
);
if
(
!
uploading
())
{
uploadLog
();
}
}
}
}
}
}
delete
_currentSavingFile
;
_currentSavingFile
=
NULL
;
_logRunning
=
false
;
emit
logRunningChanged
();
}
}
}
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
...
@@ -416,8 +477,14 @@ MavlinkLogManager::_uploadFinished()
...
@@ -416,8 +477,14 @@ MavlinkLogManager::_uploadFinished()
if
(
_processUploadResponse
(
http_code
,
data
))
{
if
(
_processUploadResponse
(
http_code
,
data
))
{
qCDebug
(
MavlinkLogManagerLog
)
<<
"Log uploaded."
;
qCDebug
(
MavlinkLogManagerLog
)
<<
"Log uploaded."
;
emit
succeed
();
emit
succeed
();
if
(
_deleteAfterUpload
)
{
if
(
_currentLogfile
)
{
_deleteLog
(
_currentLogfile
);
_currentLogfile
=
NULL
;
}
}
}
else
{
}
else
{
qC
Debu
g
(
MavlinkLogManagerLog
)
<<
QString
(
"Log Upload Error: %1 status: %2"
).
arg
(
reply
->
errorString
(),
reply
->
attribute
(
QNetworkRequest
::
HttpStatusCodeAttribute
).
toString
());
qC
Warnin
g
(
MavlinkLogManagerLog
)
<<
QString
(
"Log Upload Error: %1 status: %2"
).
arg
(
reply
->
errorString
(),
reply
->
attribute
(
QNetworkRequest
::
HttpStatusCodeAttribute
).
toString
());
emit
failed
();
emit
failed
();
}
}
reply
->
deleteLater
();
reply
->
deleteLater
();
...
@@ -466,7 +533,7 @@ MavlinkLogManager::_activeVehicleChanged(Vehicle* vehicle)
...
@@ -466,7 +533,7 @@ MavlinkLogManager::_activeVehicleChanged(Vehicle* vehicle)
void
void
MavlinkLogManager
::
_mavlinkLogData
(
Vehicle
*
/*vehicle*/
,
uint8_t
/*target_system*/
,
uint8_t
/*target_component*/
,
uint16_t
sequence
,
uint8_t
length
,
uint8_t
first_message
,
const
uint8_t
*
data
,
bool
/*acked*/
)
MavlinkLogManager
::
_mavlinkLogData
(
Vehicle
*
/*vehicle*/
,
uint8_t
/*target_system*/
,
uint8_t
/*target_component*/
,
uint16_t
sequence
,
uint8_t
length
,
uint8_t
first_message
,
const
uint8_t
*
data
,
bool
/*acked*/
)
{
{
if
(
_currentSavingFile
Fd
)
{
if
(
_currentSavingFile
)
{
if
(
sequence
!=
_sequence
)
{
if
(
sequence
!=
_sequence
)
{
qCWarning
(
MavlinkLogManagerLog
)
<<
"Dropped Mavlink log data"
;
qCWarning
(
MavlinkLogManagerLog
)
<<
"Dropped Mavlink log data"
;
if
(
first_message
<
255
)
{
if
(
first_message
<
255
)
{
...
@@ -476,17 +543,26 @@ MavlinkLogManager::_mavlinkLogData(Vehicle* /*vehicle*/, uint8_t /*target_system
...
@@ -476,17 +543,26 @@ MavlinkLogManager::_mavlinkLogData(Vehicle* /*vehicle*/, uint8_t /*target_system
return
;
return
;
}
}
}
}
if
(
fwrite
(
data
,
1
,
length
,
_currentSavingFile
F
d
)
!=
(
size_t
)
length
)
{
if
(
fwrite
(
data
,
1
,
length
,
_currentSavingFile
->
f
d
)
!=
(
size_t
)
length
)
{
fclose
(
_currentSavingFileFd
)
;
qCCritical
(
MavlinkLogManagerLog
)
<<
"Error writing Mavlink log file:"
<<
_currentSavingFile
->
fileName
;
_currentSavingFileFd
=
NULL
;
delete
_currentSavingFile
;
qCCritical
(
MavlinkLogManagerLog
)
<<
"Error writing Mavlink log file:"
<<
_currentSavingFileStr
;
_currentSavingFile
=
NULL
;
_logRunning
=
false
;
_logRunning
=
false
;
_vehicle
->
stopMavlinkLog
();
_vehicle
->
stopMavlinkLog
();
emit
logRunningChanged
();
emit
logRunningChanged
();
}
}
}
else
{
}
else
{
length
=
0
;
qCWarning
(
MavlinkLogManagerLog
)
<<
"Mavlink log data received when not expected."
;
qCWarning
(
MavlinkLogManagerLog
)
<<
"Mavlink log data received when not expected."
;
}
}
//-- Update file size
if
(
_currentSavingFile
)
{
_currentSavingFile
->
close
();
if
(
_currentSavingFile
->
record
)
{
quint32
size
=
_currentSavingFile
->
record
->
size
()
+
length
;
_currentSavingFile
->
record
->
setSize
(
size
);
}
}
_sequence
=
sequence
+
1
;
_sequence
=
sequence
+
1
;
}
}
...
@@ -494,17 +570,29 @@ MavlinkLogManager::_mavlinkLogData(Vehicle* /*vehicle*/, uint8_t /*target_system
...
@@ -494,17 +570,29 @@ MavlinkLogManager::_mavlinkLogData(Vehicle* /*vehicle*/, uint8_t /*target_system
bool
bool
MavlinkLogManager
::
_createNewLog
()
MavlinkLogManager
::
_createNewLog
()
{
{
if
(
_currentSavingFileFd
)
{
if
(
_currentSavingFile
)
{
fclose
(
_currentSavingFileFd
);
delete
_currentSavingFile
;
}
_currentSavingFile
=
NULL
;
_currentSavingFileStr
.
sprintf
(
"%s/%03d-%s.ulg"
,
_logPath
.
toLatin1
().
data
(),
_vehicle
->
id
(),
QDateTime
::
currentDateTime
().
toString
(
"yyyy-MM-dd-hh-mm-ss-zzz"
).
toLatin1
().
data
());
}
_currentSavingFileFd
=
fopen
(
_currentSavingFileStr
.
toLatin1
().
data
(),
"wb"
);
_currentSavingFile
=
new
CurrentRunningLog
;
if
(
!
_currentSavingFileFd
)
{
_currentSavingFile
->
fileName
.
sprintf
(
"%s/%03d-%s.ulg"
,
qCCritical
(
MavlinkLogManagerLog
)
<<
"Could not create Mavlink log file:"
<<
_currentSavingFileStr
;
_logPath
.
toLatin1
().
data
(),
_currentSavingFileStr
.
clear
();
_vehicle
->
id
(),
QDateTime
::
currentDateTime
().
toString
(
"yyyy-MM-dd-hh-mm-ss-zzz"
).
toLatin1
().
data
());
_currentSavingFile
->
fd
=
fopen
(
_currentSavingFile
->
fileName
.
toLatin1
().
data
(),
"wb"
);
if
(
_currentSavingFile
->
fd
)
{
MavlinkLogFiles
*
newLog
=
new
MavlinkLogFiles
(
this
,
_currentSavingFile
->
fileName
);
newLog
->
setWriting
(
true
);
_insertNewLog
(
newLog
);
_currentSavingFile
->
record
=
newLog
;
emit
logFilesChanged
();
}
else
{
qCCritical
(
MavlinkLogManagerLog
)
<<
"Could not create Mavlink log file:"
<<
_currentSavingFile
->
fileName
;
delete
_currentSavingFile
;
_currentSavingFile
=
NULL
;
}
}
_sequence
=
0
;
_sequence
=
0
;
return
_currentSavingFile
Fd
!=
NULL
;
return
_currentSavingFile
!=
NULL
;
}
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
...
...
src/uas/MavlinkLogManager.h
View file @
c615f477
...
@@ -31,25 +31,31 @@ public:
...
@@ -31,25 +31,31 @@ public:
MavlinkLogFiles
(
MavlinkLogManager
*
manager
,
const
QString
&
filePath
);
MavlinkLogFiles
(
MavlinkLogManager
*
manager
,
const
QString
&
filePath
);
Q_PROPERTY
(
QString
name
READ
name
CONSTANT
)
Q_PROPERTY
(
QString
name
READ
name
CONSTANT
)
Q_PROPERTY
(
quint32
size
READ
size
CONSTANT
)
Q_PROPERTY
(
quint32
size
READ
size
NOTIFY
sizeChanged
)
Q_PROPERTY
(
bool
selected
READ
selected
WRITE
setSelected
NOTIFY
selectedChanged
)
Q_PROPERTY
(
bool
selected
READ
selected
WRITE
setSelected
NOTIFY
selectedChanged
)
Q_PROPERTY
(
bool
uploading
READ
uploading
NOTIFY
uploadingChanged
)
Q_PROPERTY
(
bool
uploading
READ
uploading
NOTIFY
uploadingChanged
)
Q_PROPERTY
(
qreal
progress
READ
progress
NOTIFY
progressChanged
)
Q_PROPERTY
(
qreal
progress
READ
progress
NOTIFY
progressChanged
)
Q_PROPERTY
(
bool
writing
READ
writing
NOTIFY
writingChanged
)
QString
name
()
{
return
_name
;
}
QString
name
()
{
return
_name
;
}
quint32
size
()
{
return
_size
;
}
quint32
size
()
{
return
_size
;
}
bool
selected
()
{
return
_selected
;
}
bool
selected
()
{
return
_selected
;
}
bool
uploading
()
{
return
_uploading
;
}
bool
uploading
()
{
return
_uploading
;
}
qreal
progress
()
{
return
_progress
;
}
qreal
progress
()
{
return
_progress
;
}
bool
writing
()
{
return
_writing
;
}
void
setSelected
(
bool
selected
);
void
setSelected
(
bool
selected
);
void
setUploading
(
bool
uploading
);
void
setUploading
(
bool
uploading
);
void
setProgress
(
qreal
progress
);
void
setProgress
(
qreal
progress
);
void
setWriting
(
bool
writing
);
void
setSize
(
quint32
size
);
signals:
signals:
void
sizeChanged
();
void
selectedChanged
();
void
selectedChanged
();
void
uploadingChanged
();
void
uploadingChanged
();
void
progressChanged
();
void
progressChanged
();
void
writingChanged
();
private:
private:
MavlinkLogManager
*
_manager
;
MavlinkLogManager
*
_manager
;
...
@@ -58,8 +64,37 @@ private:
...
@@ -58,8 +64,37 @@ private:
bool
_selected
;
bool
_selected
;
bool
_uploading
;
bool
_uploading
;
qreal
_progress
;
qreal
_progress
;
bool
_writing
;
};
};
//-----------------------------------------------------------------------------
class
CurrentRunningLog
{
public:
CurrentRunningLog
()
:
fd
(
NULL
)
,
record
(
NULL
)
,
written
(
0
)
{
}
~
CurrentRunningLog
()
{
close
();
}
void
close
()
{
if
(
fd
)
{
fclose
(
fd
);
fd
=
NULL
;
}
}
FILE
*
fd
;
QString
fileName
;
MavlinkLogFiles
*
record
;
quint32
written
;
};
//-----------------------------------------------------------------------------
class
MavlinkLogManager
:
public
QGCTool
class
MavlinkLogManager
:
public
QGCTool
{
{
Q_OBJECT
Q_OBJECT
...
@@ -73,7 +108,8 @@ public:
...
@@ -73,7 +108,8 @@ public:
Q_PROPERTY
(
QString
uploadURL
READ
uploadURL
WRITE
setUploadURL
NOTIFY
uploadURLChanged
)
Q_PROPERTY
(
QString
uploadURL
READ
uploadURL
WRITE
setUploadURL
NOTIFY
uploadURLChanged
)
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
busy
READ
busy
NOTIFY
busyChanged
)
Q_PROPERTY
(
bool
deleteAfterUpload
READ
deleteAfterUpload
WRITE
setDeleteAfterUpload
NOTIFY
deleteAfterUploadChanged
)
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
)
...
@@ -89,9 +125,10 @@ public:
...
@@ -89,9 +125,10 @@ public:
QString
uploadURL
()
{
return
_uploadURL
;
}
QString
uploadURL
()
{
return
_uploadURL
;
}
bool
enableAutoUpload
()
{
return
_enableAutoUpload
;
}
bool
enableAutoUpload
()
{
return
_enableAutoUpload
;
}
bool
enableAutoStart
()
{
return
_enableAutoStart
;
}
bool
enableAutoStart
()
{
return
_enableAutoStart
;
}
bool
busy
();
bool
uploading
();
bool
logRunning
()
{
return
_logRunning
;
}
bool
logRunning
()
{
return
_logRunning
;
}
bool
canStartLog
()
{
return
_vehicle
!=
NULL
;
}
bool
canStartLog
()
{
return
_vehicle
!=
NULL
;
}
bool
deleteAfterUpload
()
{
return
_deleteAfterUpload
;
}
QmlObjectListModel
*
logFiles
()
{
return
&
_logFiles
;
}
QmlObjectListModel
*
logFiles
()
{
return
&
_logFiles
;
}
...
@@ -100,6 +137,7 @@ public:
...
@@ -100,6 +137,7 @@ public:
void
setUploadURL
(
QString
url
);
void
setUploadURL
(
QString
url
);
void
setEnableAutoUpload
(
bool
enable
);
void
setEnableAutoUpload
(
bool
enable
);
void
setEnableAutoStart
(
bool
enable
);
void
setEnableAutoStart
(
bool
enable
);
void
setDeleteAfterUpload
(
bool
enable
);
// Override from QGCTool
// Override from QGCTool
void
setToolbox
(
QGCToolbox
*
toolbox
);
void
setToolbox
(
QGCToolbox
*
toolbox
);
...
@@ -112,13 +150,14 @@ signals:
...
@@ -112,13 +150,14 @@ signals:
void
enableAutoStartChanged
();
void
enableAutoStartChanged
();
void
logFilesChanged
();
void
logFilesChanged
();
void
selectedCountChanged
();
void
selectedCountChanged
();
void
busy
Changed
();
void
uploading
Changed
();
void
readyRead
(
QByteArray
data
);
void
readyRead
(
QByteArray
data
);
void
failed
();
void
failed
();
void
succeed
();
void
succeed
();
void
abortUpload
();
void
abortUpload
();
void
logRunningChanged
();
void
logRunningChanged
();
void
canStartLogChanged
();
void
canStartLogChanged
();
void
deleteAfterUploadChanged
();
private
slots
:
private
slots
:
void
_uploadFinished
();
void
_uploadFinished
();
...
@@ -133,6 +172,8 @@ private:
...
@@ -133,6 +172,8 @@ private:
bool
_processUploadResponse
(
int
http_code
,
QByteArray
&
data
);
bool
_processUploadResponse
(
int
http_code
,
QByteArray
&
data
);
bool
_createNewLog
();
bool
_createNewLog
();
int
_getFirstSelected
();
int
_getFirstSelected
();
void
_insertNewLog
(
MavlinkLogFiles
*
newLog
);
void
_deleteLog
(
MavlinkLogFiles
*
log
);
private:
private:
QString
_description
;
QString
_description
;
...
@@ -147,9 +188,9 @@ private:
...
@@ -147,9 +188,9 @@ private:
Vehicle
*
_vehicle
;
Vehicle
*
_vehicle
;
bool
_logRunning
;
bool
_logRunning
;
bool
_loggingDisabled
;
bool
_loggingDisabled
;
FILE
*
_currentSavingFileFd
;
CurrentRunningLog
*
_currentSavingFile
;
QString
_currentSavingFileStr
;
uint16_t
_sequence
;
uint16_t
_sequence
;
bool
_deleteAfterUpload
;
};
};
#endif
#endif
src/ui/preferences/MavlinkSettings.qml
View file @
c615f477
...
@@ -262,6 +262,7 @@ Rectangle {
...
@@ -262,6 +262,7 @@ Rectangle {
//-----------------------------------------------------------------
//-----------------------------------------------------------------
//-- Automatic Upload
//-- Automatic Upload
QGCCheckBox
{
QGCCheckBox
{
id
:
autoUploadCheck
text
:
qsTr
(
"
Enable automatic log uploads
"
)
text
:
qsTr
(
"
Enable automatic log uploads
"
)
checked
:
QGroundControl
.
mavlinkLogManager
.
enableAutoUpload
checked
:
QGroundControl
.
mavlinkLogManager
.
enableAutoUpload
enabled
:
emailField
.
text
!==
""
&&
urlField
!==
""
enabled
:
emailField
.
text
!==
""
&&
urlField
!==
""
...
@@ -269,6 +270,16 @@ Rectangle {
...
@@ -269,6 +270,16 @@ Rectangle {
QGroundControl
.
mavlinkLogManager
.
enableAutoUpload
=
checked
QGroundControl
.
mavlinkLogManager
.
enableAutoUpload
=
checked
}
}
}
}
//-----------------------------------------------------------------
//-- Delete log after upload
QGCCheckBox
{
text
:
qsTr
(
"
Delete log file after uploading
"
)
checked
:
QGroundControl
.
mavlinkLogManager
.
deleteAfterUpload
enabled
:
emailField
.
text
!==
""
&&
urlField
!==
""
&&
autoUploadCheck
.
checked
onClicked
:
{
QGroundControl
.
mavlinkLogManager
.
deleteAfterUpload
=
checked
}
}
}
}
}
}
//-----------------------------------------------------------------
//-----------------------------------------------------------------
...
@@ -327,11 +338,13 @@ Rectangle {
...
@@ -327,11 +338,13 @@ Rectangle {
QGCLabel
{
QGCLabel
{
text
:
object
.
name
text
:
object
.
name
width
:
ScreenTools
.
defaultFontPixelWidth
*
28
width
:
ScreenTools
.
defaultFontPixelWidth
*
28
color
:
object
.
writing
?
qgcPal
.
warningText
:
qgcPal
.
text
}
}
QGCLabel
{
QGCLabel
{
text
:
Number
(
object
.
size
).
toLocaleString
(
Qt
.
locale
(),
'
f
'
,
0
)
text
:
Number
(
object
.
size
).
toLocaleString
(
Qt
.
locale
(),
'
f
'
,
0
)
visible
:
!
object
.
uploading
visible
:
!
object
.
uploading
width
:
ScreenTools
.
defaultFontPixelWidth
*
20
;
width
:
ScreenTools
.
defaultFontPixelWidth
*
20
;
color
:
object
.
writing
?
qgcPal
.
warningText
:
qgcPal
.
text
horizontalAlignment
:
Text
.
AlignRight
horizontalAlignment
:
Text
.
AlignRight
}
}
ProgressBar
{
ProgressBar
{
...
@@ -352,7 +365,7 @@ Rectangle {
...
@@ -352,7 +365,7 @@ Rectangle {
anchors.horizontalCenter
:
parent
.
horizontalCenter
anchors.horizontalCenter
:
parent
.
horizontalCenter
QGCButton
{
QGCButton
{
text
:
"
Check All
"
text
:
"
Check All
"
enabled
:
!
QGroundControl
.
mavlinkLogManager
.
busy
enabled
:
!
QGroundControl
.
mavlinkLogManager
.
uploading
&&
!
QGroundControl
.
mavlinkLogManager
.
logRunning
onClicked
:
{
onClicked
:
{
for
(
var
i
=
0
;
i
<
QGroundControl
.
mavlinkLogManager
.
logFiles
.
count
;
i
++
)
{
for
(
var
i
=
0
;
i
<
QGroundControl
.
mavlinkLogManager
.
logFiles
.
count
;
i
++
)
{
var
logFile
=
QGroundControl
.
mavlinkLogManager
.
logFiles
.
get
(
i
)
var
logFile
=
QGroundControl
.
mavlinkLogManager
.
logFiles
.
get
(
i
)
...
@@ -362,7 +375,7 @@ Rectangle {
...
@@ -362,7 +375,7 @@ Rectangle {
}
}
QGCButton
{
QGCButton
{
text
:
"
Check None
"
text
:
"
Check None
"
enabled
:
!
QGroundControl
.
mavlinkLogManager
.
busy
enabled
:
!
QGroundControl
.
mavlinkLogManager
.
uploading
&&
!
QGroundControl
.
mavlinkLogManager
.
logRunning
onClicked
:
{
onClicked
:
{
for
(
var
i
=
0
;
i
<
QGroundControl
.
mavlinkLogManager
.
logFiles
.
count
;
i
++
)
{
for
(
var
i
=
0
;
i
<
QGroundControl
.
mavlinkLogManager
.
logFiles
.
count
;
i
++
)
{
var
logFile
=
QGroundControl
.
mavlinkLogManager
.
logFiles
.
get
(
i
)
var
logFile
=
QGroundControl
.
mavlinkLogManager
.
logFiles
.
get
(
i
)
...
@@ -372,7 +385,7 @@ Rectangle {
...
@@ -372,7 +385,7 @@ Rectangle {
}
}
QGCButton
{
QGCButton
{
text
:
"
Delete Selected
"
text
:
"
Delete Selected
"
enabled
:
_selectedCount
>
0
&&
!
QGroundControl
.
mavlinkLogManager
.
busy
enabled
:
_selectedCount
>
0
&&
!
QGroundControl
.
mavlinkLogManager
.
uploading
&&
!
QGroundControl
.
mavlinkLogManager
.
logRunning
onClicked
:
deleteDialog
.
open
()
onClicked
:
deleteDialog
.
open
()
MessageDialog
{
MessageDialog
{
id
:
deleteDialog
id
:
deleteDialog
...
@@ -388,8 +401,8 @@ Rectangle {
...
@@ -388,8 +401,8 @@ Rectangle {
}
}
QGCButton
{
QGCButton
{
text
:
"
Upload Selected
"
text
:
"
Upload Selected
"
enabled
:
_selectedCount
>
0
&&
!
QGroundControl
.
mavlinkLogManager
.
busy
enabled
:
_selectedCount
>
0
&&
!
QGroundControl
.
mavlinkLogManager
.
uploading
&&
!
QGroundControl
.
mavlinkLogManager
.
logRunning
visible
:
!
QGroundControl
.
mavlinkLogManager
.
busy
visible
:
!
QGroundControl
.
mavlinkLogManager
.
uploading
onClicked
:
{
onClicked
:
{
QGroundControl
.
mavlinkLogManager
.
emailAddress
=
emailField
.
text
QGroundControl
.
mavlinkLogManager
.
emailAddress
=
emailField
.
text
if
(
QGroundControl
.
mavlinkLogManager
.
emailAddress
===
""
)
if
(
QGroundControl
.
mavlinkLogManager
.
emailAddress
===
""
)
...
@@ -411,8 +424,8 @@ Rectangle {
...
@@ -411,8 +424,8 @@ Rectangle {
}
}
QGCButton
{
QGCButton
{
text
:
"
Cancel
"
text
:
"
Cancel
"
enabled
:
QGroundControl
.
mavlinkLogManager
.
busy
enabled
:
QGroundControl
.
mavlinkLogManager
.
uploading
&&
!
QGroundControl
.
mavlinkLogManager
.
logRunning
visible
:
QGroundControl
.
mavlinkLogManager
.
busy
visible
:
QGroundControl
.
mavlinkLogManager
.
uploading
onClicked
:
cancelDialog
.
open
()
onClicked
:
cancelDialog
.
open
()
MessageDialog
{
MessageDialog
{
id
:
cancelDialog
id
:
cancelDialog
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment