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
c5e4c183
Commit
c5e4c183
authored
Jan 06, 2016
by
dogmaphobic
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
APM Log Download "Fix"
parent
ca2d5812
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
48 additions
and
15 deletions
+48
-15
LogDownload.qml
src/ViewWidgets/LogDownload.qml
+1
-1
LogDownloadController.cc
src/ViewWidgets/LogDownloadController.cc
+45
-13
LogDownloadController.h
src/ViewWidgets/LogDownloadController.h
+2
-1
No files found.
src/ViewWidgets/LogDownload.qml
View file @
c5e4c183
...
@@ -94,7 +94,7 @@ QGCView {
...
@@ -94,7 +94,7 @@ QGCView {
//-- Have we received this entry already?
//-- Have we received this entry already?
if
(
controller
.
model
.
get
(
styleData
.
row
).
received
)
{
if
(
controller
.
model
.
get
(
styleData
.
row
).
received
)
{
var
d
=
controller
.
model
.
get
(
styleData
.
row
).
time
var
d
=
controller
.
model
.
get
(
styleData
.
row
).
time
if
(
d
.
getUTCFullYear
()
<
198
0
)
if
(
d
.
getUTCFullYear
()
<
201
0
)
return
"
Date Unknown
"
return
"
Date Unknown
"
else
else
return
d
.
toLocaleString
()
return
d
.
toLocaleString
()
...
...
src/ViewWidgets/LogDownloadController.cc
View file @
c5e4c183
...
@@ -67,6 +67,7 @@ LogDownloadController::LogDownloadController(void)
...
@@ -67,6 +67,7 @@ LogDownloadController::LogDownloadController(void)
,
_requestingLogEntries
(
false
)
,
_requestingLogEntries
(
false
)
,
_downloadingLogs
(
false
)
,
_downloadingLogs
(
false
)
,
_retries
(
0
)
,
_retries
(
0
)
,
_apmOneBased
(
0
)
{
{
MultiVehicleManager
*
manager
=
qgcApp
()
->
toolbox
()
->
multiVehicleManager
();
MultiVehicleManager
*
manager
=
qgcApp
()
->
toolbox
()
->
multiVehicleManager
();
connect
(
manager
,
&
MultiVehicleManager
::
activeVehicleChanged
,
this
,
&
LogDownloadController
::
_setActiveVehicle
);
connect
(
manager
,
&
MultiVehicleManager
::
activeVehicleChanged
,
this
,
&
LogDownloadController
::
_setActiveVehicle
);
...
@@ -114,6 +115,11 @@ LogDownloadController::_logEntry(UASInterface* uas, uint32_t time_utc, uint32_t
...
@@ -114,6 +115,11 @@ LogDownloadController::_logEntry(UASInterface* uas, uint32_t time_utc, uint32_t
}
}
//-- If this is the first, pre-fill it
//-- If this is the first, pre-fill it
if
(
!
_logEntriesModel
.
count
()
&&
num_logs
>
0
)
{
if
(
!
_logEntriesModel
.
count
()
&&
num_logs
>
0
)
{
//-- Is this APM? They send a first entry with bogus ID and only the
// count is valid. From now on, all entries are 1-based.
if
(
_vehicle
->
firmwareType
()
==
MAV_AUTOPILOT_ARDUPILOTMEGA
)
{
_apmOneBased
=
1
;
}
for
(
int
i
=
0
;
i
<
num_logs
;
i
++
)
{
for
(
int
i
=
0
;
i
<
num_logs
;
i
++
)
{
QGCLogEntry
*
entry
=
new
QGCLogEntry
(
i
);
QGCLogEntry
*
entry
=
new
QGCLogEntry
(
i
);
_logEntriesModel
.
append
(
entry
);
_logEntriesModel
.
append
(
entry
);
...
@@ -121,14 +127,18 @@ LogDownloadController::_logEntry(UASInterface* uas, uint32_t time_utc, uint32_t
...
@@ -121,14 +127,18 @@ LogDownloadController::_logEntry(UASInterface* uas, uint32_t time_utc, uint32_t
}
}
//-- Update this log record
//-- Update this log record
if
(
num_logs
>
0
)
{
if
(
num_logs
>
0
)
{
if
(
id
<
_logEntriesModel
.
count
())
{
//-- Skip if empty (APM first packet)
QGCLogEntry
*
entry
=
_logEntriesModel
[
id
];
if
(
size
)
{
entry
->
setSize
(
size
);
id
-=
_apmOneBased
;
entry
->
setTime
(
QDateTime
::
fromTime_t
(
time_utc
));
if
(
id
<
_logEntriesModel
.
count
())
{
entry
->
setReceived
(
true
);
QGCLogEntry
*
entry
=
_logEntriesModel
[
id
];
entry
->
setStatus
(
QString
(
"Available"
));
entry
->
setSize
(
size
);
}
else
{
entry
->
setTime
(
QDateTime
::
fromTime_t
(
time_utc
));
qWarning
()
<<
"Received log entry for out-of-bound index:"
<<
id
;
entry
->
setReceived
(
true
);
entry
->
setStatus
(
QString
(
"Available"
));
}
else
{
qWarning
()
<<
"Received log entry for out-of-bound index:"
<<
id
;
}
}
}
}
else
{
}
else
{
//-- No logs to list
//-- No logs to list
...
@@ -164,13 +174,18 @@ LogDownloadController::_entriesComplete()
...
@@ -164,13 +174,18 @@ LogDownloadController::_entriesComplete()
//----------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------
void
void
LogDownloadController
::
_resetSelection
()
LogDownloadController
::
_resetSelection
(
bool
canceled
)
{
{
int
num_logs
=
_logEntriesModel
.
count
();
int
num_logs
=
_logEntriesModel
.
count
();
for
(
int
i
=
0
;
i
<
num_logs
;
i
++
)
{
for
(
int
i
=
0
;
i
<
num_logs
;
i
++
)
{
QGCLogEntry
*
entry
=
_logEntriesModel
[
i
];
QGCLogEntry
*
entry
=
_logEntriesModel
[
i
];
if
(
entry
)
{
if
(
entry
)
{
entry
->
setSelected
(
false
);
if
(
entry
->
selected
())
{
if
(
canceled
)
{
entry
->
setStatus
(
QString
(
"Canceled"
));
}
entry
->
setSelected
(
false
);
}
}
}
}
}
emit
selectionChanged
();
emit
selectionChanged
();
...
@@ -227,6 +242,9 @@ LogDownloadController::_findMissingEntries()
...
@@ -227,6 +242,9 @@ LogDownloadController::_findMissingEntries()
if
(
end
<
0
)
{
if
(
end
<
0
)
{
end
=
start
;
end
=
start
;
}
}
//-- APM "Fix"
start
+=
_apmOneBased
;
end
+=
_apmOneBased
;
//-- Request these entries again
//-- Request these entries again
_requestLogList
((
uint32_t
)
start
,
(
uint32_t
)
end
);
_requestLogList
((
uint32_t
)
start
,
(
uint32_t
)
end
);
}
else
{
}
else
{
...
@@ -241,6 +259,8 @@ LogDownloadController::_logData(UASInterface* uas, uint32_t ofs, uint16_t id, ui
...
@@ -241,6 +259,8 @@ LogDownloadController::_logData(UASInterface* uas, uint32_t ofs, uint16_t id, ui
if
(
!
_uas
||
uas
!=
_uas
||
!
_downloadData
)
{
if
(
!
_uas
||
uas
!=
_uas
||
!
_downloadData
)
{
return
;
return
;
}
}
//-- APM "Fix"
id
-=
_apmOneBased
;
if
(
_downloadData
->
ID
!=
id
)
{
if
(
_downloadData
->
ID
!=
id
)
{
qWarning
()
<<
"Received log data for wrong log"
;
qWarning
()
<<
"Received log data for wrong log"
;
return
;
return
;
...
@@ -360,6 +380,8 @@ void
...
@@ -360,6 +380,8 @@ void
LogDownloadController
::
_requestLogData
(
uint8_t
id
,
uint32_t
offset
,
uint32_t
count
)
LogDownloadController
::
_requestLogData
(
uint8_t
id
,
uint32_t
offset
,
uint32_t
count
)
{
{
if
(
_vehicle
)
{
if
(
_vehicle
)
{
//-- APM "Fix"
id
+=
_apmOneBased
;
qCDebug
(
LogDownloadLog
)
<<
"Request log data (id:"
<<
id
<<
"offset:"
<<
offset
<<
"size:"
<<
count
<<
")"
;
qCDebug
(
LogDownloadLog
)
<<
"Request log data (id:"
<<
id
<<
"offset:"
<<
offset
<<
"size:"
<<
count
<<
")"
;
mavlink_message_t
msg
;
mavlink_message_t
msg
;
mavlink_msg_log_request_data_pack
(
mavlink_msg_log_request_data_pack
(
...
@@ -423,6 +445,16 @@ LogDownloadController::download(void)
...
@@ -423,6 +445,16 @@ LogDownloadController::download(void)
if
(
!
_downloadPath
.
isEmpty
())
{
if
(
!
_downloadPath
.
isEmpty
())
{
if
(
!
_downloadPath
.
endsWith
(
QDir
::
separator
()))
if
(
!
_downloadPath
.
endsWith
(
QDir
::
separator
()))
_downloadPath
+=
QDir
::
separator
();
_downloadPath
+=
QDir
::
separator
();
//-- Iterate selected entries and shown them as waiting
int
num_logs
=
_logEntriesModel
.
count
();
for
(
int
i
=
0
;
i
<
num_logs
;
i
++
)
{
QGCLogEntry
*
entry
=
_logEntriesModel
[
i
];
if
(
entry
)
{
if
(
entry
->
selected
())
{
entry
->
setStatus
(
QString
(
"Waiting"
));
}
}
}
//-- Start download process
//-- Start download process
_downloadingLogs
=
true
;
_downloadingLogs
=
true
;
emit
downloadingLogsChanged
();
emit
downloadingLogsChanged
();
...
@@ -464,13 +496,13 @@ LogDownloadController::_prepareLogDownload()
...
@@ -464,13 +496,13 @@ LogDownloadController::_prepareLogDownload()
emit
selectionChanged
();
emit
selectionChanged
();
bool
result
=
false
;
bool
result
=
false
;
QString
ftime
;
QString
ftime
;
if
(
entry
->
time
().
date
().
year
()
<
198
0
)
{
if
(
entry
->
time
().
date
().
year
()
<
201
0
)
{
ftime
=
"UnknownDate"
;
ftime
=
"UnknownDate"
;
}
else
{
}
else
{
ftime
=
entry
->
time
().
toString
(
"yyyy-M-d-hh-mm-ss"
);
ftime
=
entry
->
time
().
toString
(
"yyyy-M-d-hh-mm-ss"
);
}
}
_downloadData
=
new
LogDownloadData
(
entry
);
_downloadData
=
new
LogDownloadData
(
entry
);
_downloadData
->
filename
=
QString
(
"log_"
)
+
QString
::
number
(
entry
->
id
())
+
"_"
+
ftime
+
".
txt
"
;
_downloadData
->
filename
=
QString
(
"log_"
)
+
QString
::
number
(
entry
->
id
())
+
"_"
+
ftime
+
".
mavlink
"
;
_downloadData
->
file
.
setFileName
(
_downloadPath
+
_downloadData
->
filename
);
_downloadData
->
file
.
setFileName
(
_downloadPath
+
_downloadData
->
filename
);
//-- Append a number to the end if the filename already exists
//-- Append a number to the end if the filename already exists
if
(
_downloadData
->
file
.
exists
()){
if
(
_downloadData
->
file
.
exists
()){
...
@@ -539,7 +571,7 @@ LogDownloadController::cancel(void)
...
@@ -539,7 +571,7 @@ LogDownloadController::cancel(void)
delete
_downloadData
;
delete
_downloadData
;
_downloadData
=
0
;
_downloadData
=
0
;
}
}
_resetSelection
();
_resetSelection
(
true
);
_downloadingLogs
=
false
;
_downloadingLogs
=
false
;
emit
downloadingLogsChanged
();
emit
downloadingLogsChanged
();
}
}
...
...
src/ViewWidgets/LogDownloadController.h
View file @
c5e4c183
...
@@ -171,7 +171,7 @@ private:
...
@@ -171,7 +171,7 @@ private:
void
_findMissingEntries
();
void
_findMissingEntries
();
void
_receivedAllEntries
();
void
_receivedAllEntries
();
void
_receivedAllData
();
void
_receivedAllData
();
void
_resetSelection
();
void
_resetSelection
(
bool
canceled
=
false
);
void
_findMissingData
();
void
_findMissingData
();
void
_requestLogList
(
uint32_t
start
=
0
,
uint32_t
end
=
0xFFFF
);
void
_requestLogList
(
uint32_t
start
=
0
,
uint32_t
end
=
0xFFFF
);
void
_requestLogData
(
uint8_t
id
,
uint32_t
offset
=
0
,
uint32_t
count
=
0xFFFFFFFF
);
void
_requestLogData
(
uint8_t
id
,
uint32_t
offset
=
0
,
uint32_t
count
=
0xFFFFFFFF
);
...
@@ -187,6 +187,7 @@ private:
...
@@ -187,6 +187,7 @@ private:
bool
_requestingLogEntries
;
bool
_requestingLogEntries
;
bool
_downloadingLogs
;
bool
_downloadingLogs
;
int
_retries
;
int
_retries
;
int
_apmOneBased
;
QString
_downloadPath
;
QString
_downloadPath
;
};
};
...
...
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