|
|
@ -99,15 +99,14 @@ void UASParameterCommsMgr::requestParameterList() |
|
|
|
void UASParameterCommsMgr::retransmissionGuardTick() |
|
|
|
void UASParameterCommsMgr::retransmissionGuardTick() |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (transmissionActive) { |
|
|
|
if (transmissionActive) { |
|
|
|
if (transmissionListMode) { |
|
|
|
|
|
|
|
if (transmissionListSizeKnown.isEmpty() ) { |
|
|
|
if (transmissionListMode && transmissionListSizeKnown.isEmpty() ) { |
|
|
|
//we are still waitin for the first parameter list response
|
|
|
|
//we are still waitin for the first parameter list response
|
|
|
|
if (QGC::groundTimeMilliseconds() > this->listRecvTimeout) { |
|
|
|
if (QGC::groundTimeMilliseconds() > this->listRecvTimeout) { |
|
|
|
//re-request parameters
|
|
|
|
//re-request parameters
|
|
|
|
setParameterStatusMsg(tr("TIMEOUT: Re-requesting param list"),ParamCommsStatusLevel_Warning); |
|
|
|
setParameterStatusMsg(tr("TIMEOUT: Re-requesting param list"),ParamCommsStatusLevel_Warning); |
|
|
|
listRecvTimeout = QGC::groundTimeMilliseconds() + 10000; |
|
|
|
listRecvTimeout = QGC::groundTimeMilliseconds() + 10000; |
|
|
|
mav->requestParameters(); |
|
|
|
mav->requestParameters(); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
@ -142,8 +141,8 @@ void UASParameterCommsMgr::retransmissionGuardTick() |
|
|
|
// Re-request at maximum retransmissionBurstRequestSize parameters at once
|
|
|
|
// Re-request at maximum retransmissionBurstRequestSize parameters at once
|
|
|
|
// to prevent link flooding
|
|
|
|
// to prevent link flooding
|
|
|
|
QMap<int, QMap<QString, QVariant>*>::iterator i; |
|
|
|
QMap<int, QMap<QString, QVariant>*>::iterator i; |
|
|
|
QMap<int, QMap<QString, QVariant>*> onboardParams = paramDataModel->getOnboardParameters(); |
|
|
|
QMap<int, QMap<QString, QVariant>*>* onboardParams = paramDataModel->getOnboardParameters(); |
|
|
|
for (i = onboardParams.begin(); i != onboardParams.end(); ++i) { |
|
|
|
for (i = onboardParams->begin(); i != onboardParams->end(); ++i) { |
|
|
|
// Iterate through the parameters of the component
|
|
|
|
// Iterate through the parameters of the component
|
|
|
|
int component = i.key(); |
|
|
|
int component = i.key(); |
|
|
|
// Request n parameters from this component (at maximum)
|
|
|
|
// Request n parameters from this component (at maximum)
|
|
|
@ -175,7 +174,7 @@ void UASParameterCommsMgr::retransmissionGuardTick() |
|
|
|
if (count < retransmissionBurstRequestSize) { |
|
|
|
if (count < retransmissionBurstRequestSize) { |
|
|
|
// Re-request write operation
|
|
|
|
// Re-request write operation
|
|
|
|
QVariant value = missingParams->value(key); |
|
|
|
QVariant value = missingParams->value(key); |
|
|
|
switch ((int)onboardParams.value(component)->value(key).type()) |
|
|
|
switch ((int)onboardParams->value(component)->value(key).type()) |
|
|
|
{ |
|
|
|
{ |
|
|
|
case QVariant::Int: |
|
|
|
case QVariant::Int: |
|
|
|
{ |
|
|
|
{ |
|
|
@ -395,13 +394,20 @@ void UASParameterCommsMgr::receivedParameterUpdate(int uas, int compId, int para |
|
|
|
// Mark list size as known
|
|
|
|
// Mark list size as known
|
|
|
|
transmissionListSizeKnown.insert(compId, true); |
|
|
|
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) { |
|
|
|
for (int i = 0; i < paramCount; ++i) { |
|
|
|
if (!transmissionMissingPackets.value(compId)->contains(i)) { |
|
|
|
if (!compParamList->contains(i)) { |
|
|
|
transmissionMissingPackets.value(compId)->append(i); |
|
|
|
if (i != paramId) { |
|
|
|
|
|
|
|
compParamList->append(i); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else { |
|
|
|
|
|
|
|
qDebug() << "Already received " << paramId; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// There is only one transmission timeout for all components
|
|
|
|
// There is only one transmission timeout for all components
|
|
|
|
// since components do not manage their transmission,
|
|
|
|
// since components do not manage their transmission,
|
|
|
|
// the longest timeout is safe for all components.
|
|
|
|
// the longest timeout is safe for all components.
|
|
|
@ -491,7 +497,8 @@ void UASParameterCommsMgr::receivedParameterUpdate(int uas, int compId, int para |
|
|
|
else { |
|
|
|
else { |
|
|
|
qDebug() << "missCount:" << missCount << "missWriteCount:" << missWriteCount; |
|
|
|
qDebug() << "missCount:" << missCount << "missWriteCount:" << missWriteCount; |
|
|
|
foreach (int key, transmissionMissingPackets.keys()) { |
|
|
|
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
|
|
|
|
// Iterate through all components, through all pending parameters and send them to UAS
|
|
|
|
int parametersSent = 0; |
|
|
|
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; |
|
|
|
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
|
|
|
|
// Iterate through the parameters of the component
|
|
|
|
int compid = i.key(); |
|
|
|
int compid = i.key(); |
|
|
|
QMap<QString, QVariant>* comp = i.value(); |
|
|
|
QMap<QString, QVariant>* comp = i.value(); |
|
|
|