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
13ecf819
Commit
13ecf819
authored
Aug 08, 2013
by
tstellanova
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
keep the received params list clean
parent
c6ebc6b2
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
31 additions
and
24 deletions
+31
-24
UASParameterCommsMgr.cc
src/uas/UASParameterCommsMgr.cc
+25
-18
UASParameterDataModel.h
src/uas/UASParameterDataModel.h
+4
-4
QGCParamWidget.cc
src/ui/QGCParamWidget.cc
+2
-2
No files found.
src/uas/UASParameterCommsMgr.cc
View file @
13ecf819
...
...
@@ -99,15 +99,14 @@ void UASParameterCommsMgr::requestParameterList()
void
UASParameterCommsMgr
::
retransmissionGuardTick
()
{
if
(
transmissionActive
)
{
if
(
transmissionListMode
)
{
if
(
transmissionListSizeKnown
.
isEmpty
()
)
{
//we are still waitin for the first parameter list response
if
(
QGC
::
groundTimeMilliseconds
()
>
this
->
listRecvTimeout
)
{
//re-request parameters
setParameterStatusMsg
(
tr
(
"TIMEOUT: Re-requesting param list"
),
ParamCommsStatusLevel_Warning
);
listRecvTimeout
=
QGC
::
groundTimeMilliseconds
()
+
10000
;
mav
->
requestParameters
();
}
if
(
transmissionListMode
&&
transmissionListSizeKnown
.
isEmpty
()
)
{
//we are still waitin for the first parameter list response
if
(
QGC
::
groundTimeMilliseconds
()
>
this
->
listRecvTimeout
)
{
//re-request parameters
setParameterStatusMsg
(
tr
(
"TIMEOUT: Re-requesting param list"
),
ParamCommsStatusLevel_Warning
);
listRecvTimeout
=
QGC
::
groundTimeMilliseconds
()
+
10000
;
mav
->
requestParameters
();
}
return
;
}
...
...
@@ -142,8 +141,8 @@ void UASParameterCommsMgr::retransmissionGuardTick()
// Re-request at maximum retransmissionBurstRequestSize parameters at once
// to prevent link flooding
QMap
<
int
,
QMap
<
QString
,
QVariant
>*>::
iterator
i
;
QMap
<
int
,
QMap
<
QString
,
QVariant
>*>
onboardParams
=
paramDataModel
->
getOnboardParameters
();
for
(
i
=
onboardParams
.
begin
();
i
!=
onboardParams
.
end
();
++
i
)
{
QMap
<
int
,
QMap
<
QString
,
QVariant
>*>
*
onboardParams
=
paramDataModel
->
getOnboardParameters
();
for
(
i
=
onboardParams
->
begin
();
i
!=
onboardParams
->
end
();
++
i
)
{
// Iterate through the parameters of the component
int
component
=
i
.
key
();
// Request n parameters from this component (at maximum)
...
...
@@ -175,7 +174,7 @@ void UASParameterCommsMgr::retransmissionGuardTick()
if
(
count
<
retransmissionBurstRequestSize
)
{
// Re-request write operation
QVariant
value
=
missingParams
->
value
(
key
);
switch
((
int
)
onboardParams
.
value
(
component
)
->
value
(
key
).
type
())
switch
((
int
)
onboardParams
->
value
(
component
)
->
value
(
key
).
type
())
{
case
QVariant
:
:
Int
:
{
...
...
@@ -395,13 +394,20 @@ void UASParameterCommsMgr::receivedParameterUpdate(int uas, int compId, int para
// Mark list size as known
transmissionListSizeKnown
.
insert
(
compId
,
true
);
// Mark all parameters as missing
qDebug
()
<<
"Mark all parameters as missing"
;
QList
<
int
>*
compParamList
=
transmissionMissingPackets
.
value
(
compId
);
for
(
int
i
=
0
;
i
<
paramCount
;
++
i
)
{
if
(
!
transmissionMissingPackets
.
value
(
compId
)
->
contains
(
i
))
{
transmissionMissingPackets
.
value
(
compId
)
->
append
(
i
);
if
(
!
compParamList
->
contains
(
i
))
{
if
(
i
!=
paramId
)
{
compParamList
->
append
(
i
);
}
else
{
qDebug
()
<<
"Already received "
<<
paramId
;
}
}
}
// There is only one transmission timeout for all components
// since components do not manage their transmission,
// the longest timeout is safe for all components.
...
...
@@ -491,7 +497,8 @@ void UASParameterCommsMgr::receivedParameterUpdate(int uas, int compId, int para
else
{
qDebug
()
<<
"missCount:"
<<
missCount
<<
"missWriteCount:"
<<
missWriteCount
;
foreach
(
int
key
,
transmissionMissingPackets
.
keys
())
{
qDebug
()
<<
"Missing:"
<<
key
;
QList
<
int
>*
list
=
transmissionMissingPackets
.
value
(
key
);
qDebug
()
<<
"Component"
<<
key
<<
"missing numParams:"
<<
list
->
count
()
;
}
}
}
...
...
@@ -509,9 +516,9 @@ void UASParameterCommsMgr::sendPendingParameters()
{
// Iterate through all components, through all pending parameters and send them to UAS
int
parametersSent
=
0
;
QMap
<
int
,
QMap
<
QString
,
QVariant
>*>
changedValues
=
paramDataModel
->
getPendingParameters
();
QMap
<
int
,
QMap
<
QString
,
QVariant
>*>
*
changedValues
=
paramDataModel
->
getPendingParameters
();
QMap
<
int
,
QMap
<
QString
,
QVariant
>*>::
iterator
i
;
for
(
i
=
changedValues
.
begin
();
i
!=
changedValues
.
end
();
++
i
)
{
for
(
i
=
changedValues
->
begin
();
i
!=
changedValues
->
end
();
++
i
)
{
// Iterate through the parameters of the component
int
compid
=
i
.
key
();
QMap
<
QString
,
QVariant
>*
comp
=
i
.
value
();
...
...
src/uas/UASParameterDataModel.h
View file @
13ecf819
...
...
@@ -69,12 +69,12 @@ public:
return
onboardParameters
.
value
(
componentId
);
}
QMap
<
int
,
QMap
<
QString
,
QVariant
>*
>
getPendingParameters
()
{
return
pendingParameters
;
QMap
<
int
,
QMap
<
QString
,
QVariant
>*
>
*
getPendingParameters
()
{
return
&
pendingParameters
;
}
QMap
<
int
,
QMap
<
QString
,
QVariant
>*
>
getOnboardParameters
()
{
return
onboardParameters
;
QMap
<
int
,
QMap
<
QString
,
QVariant
>*
>
*
getOnboardParameters
()
{
return
&
onboardParameters
;
}
...
...
src/ui/QGCParamWidget.cc
View file @
13ecf819
...
...
@@ -432,9 +432,9 @@ void QGCParamWidget::writeParameters()
int
changedParamCount
=
0
;
QMap
<
int
,
QMap
<
QString
,
QVariant
>*>::
iterator
i
;
QMap
<
int
,
QMap
<
QString
,
QVariant
>*>
changedValues
=
paramDataModel
->
getPendingParameters
();
QMap
<
int
,
QMap
<
QString
,
QVariant
>*>
*
changedValues
=
paramDataModel
->
getPendingParameters
();
for
(
i
=
changedValues
.
begin
();
i
!=
changedValues
.
end
()
,
(
0
==
changedParamCount
);
++
i
)
{
for
(
i
=
changedValues
->
begin
();
(
i
!=
changedValues
->
end
())
&&
(
0
==
changedParamCount
);
++
i
)
{
// Iterate through the parameters of the component
QMap
<
QString
,
QVariant
>*
compPending
=
i
.
value
();
changedParamCount
+=
compPending
->
count
();
...
...
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