Commit 9af23ff7 authored by tstellanova's avatar tstellanova

Begin to connect separate param widgets via data model

still some remaining issues with pending line items bouncing back from
data model
parent fb50a3cd
...@@ -50,6 +50,7 @@ void UASParameterCommsMgr::loadParamCommsSettings() ...@@ -50,6 +50,7 @@ void UASParameterCommsMgr::loadParamCommsSettings()
int val = settings.value("PARAMETER_RETRANSMISSION_TIMEOUT", retransmissionTimeout).toInt(&ok); int val = settings.value("PARAMETER_RETRANSMISSION_TIMEOUT", retransmissionTimeout).toInt(&ok);
if (ok) { if (ok) {
retransmissionTimeout = val; retransmissionTimeout = val;
qDebug() << "retransmissionTimeout" << retransmissionTimeout;
} }
val = settings.value("PARAMETER_REWRITE_TIMEOUT", rewriteTimeout).toInt(&ok); val = settings.value("PARAMETER_REWRITE_TIMEOUT", rewriteTimeout).toInt(&ok);
if (ok) { if (ok) {
...@@ -240,6 +241,8 @@ void UASParameterCommsMgr::retransmissionGuardTick() ...@@ -240,6 +241,8 @@ void UASParameterCommsMgr::retransmissionGuardTick()
setRetransmissionGuardEnabled(true); setRetransmissionGuardEnabled(true);
return; return;
} }
qDebug() << __FILE__ << __LINE__ << "RETRANSMISSION GUARD ACTIVE after" << elapsed;
if (transmissionActive) { if (transmissionActive) {
...@@ -250,6 +253,8 @@ void UASParameterCommsMgr::retransmissionGuardTick() ...@@ -250,6 +253,8 @@ void UASParameterCommsMgr::retransmissionGuardTick()
setParameterStatusMsg(tr("TIMEOUT: Re-requesting param list"),ParamCommsStatusLevel_Warning); setParameterStatusMsg(tr("TIMEOUT: Re-requesting param list"),ParamCommsStatusLevel_Warning);
listRecvTimeout = curTime + 10000; listRecvTimeout = curTime + 10000;
mav->requestParameters(); mav->requestParameters();
//reset the timer
setRetransmissionGuardEnabled(true);
} }
return; return;
} }
...@@ -270,7 +275,6 @@ void UASParameterCommsMgr::retransmissionGuardTick() ...@@ -270,7 +275,6 @@ void UASParameterCommsMgr::retransmissionGuardTick()
return; return;
} }
qDebug() << __FILE__ << __LINE__ << "RETRANSMISSION GUARD ACTIVE, CHECKING FOR DROPS..";
resendReadWriteRequests(); resendReadWriteRequests();
} }
else { else {
...@@ -443,7 +447,7 @@ void UASParameterCommsMgr::receivedParameterUpdate(int uas, int compId, int para ...@@ -443,7 +447,7 @@ void UASParameterCommsMgr::receivedParameterUpdate(int uas, int compId, int para
// 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.
quint64 thisTransmissionTimeout = QGC::groundTimeMilliseconds() + ((paramCount)*retransmissionTimeout); quint64 thisTransmissionTimeout = QGC::groundTimeMilliseconds() + (paramCount*retransmissionTimeout);
if (thisTransmissionTimeout > transmissionTimeout) { if (thisTransmissionTimeout > transmissionTimeout) {
transmissionTimeout = thisTransmissionTimeout; transmissionTimeout = thisTransmissionTimeout;
} }
......
...@@ -202,7 +202,20 @@ void QGCParamWidget::addComponentItem(int compId, QString compName) ...@@ -202,7 +202,20 @@ void QGCParamWidget::addComponentItem(int compId, QString compName)
void QGCParamWidget::handlePendingParamUpdate(int compId, const QString& paramName, QVariant value, bool isPending) void QGCParamWidget::handlePendingParamUpdate(int compId, const QString& paramName, QVariant value, bool isPending)
{ {
qDebug() << "handlePendingParamUpdate:" << paramName << "with updatedLineItem_weak:" << updatedLineItem_weak;
if (updatedLineItem_weak) {
QString key = updatedLineItem_weak->data(0, Qt::DisplayRole).toString();
if (paramName == key) {
//debounce echo from data model
return;
}
}
QTreeWidgetItem* paramItem = updateParameterDisplay(compId,paramName,value); QTreeWidgetItem* paramItem = updateParameterDisplay(compId,paramName,value);
if (updatedLineItem_weak == NULL) {
updatedLineItem_weak = paramItem;
}
if (isPending) { if (isPending) {
paramItem->setBackground(0, QBrush(QColor(QGC::colorOrange))); paramItem->setBackground(0, QBrush(QColor(QGC::colorOrange)));
paramItem->setBackground(1, QBrush(QColor(QGC::colorOrange))); paramItem->setBackground(1, QBrush(QColor(QGC::colorOrange)));
...@@ -327,6 +340,8 @@ QTreeWidgetItem* QGCParamWidget::updateParameterDisplay(int compId, QString para ...@@ -327,6 +340,8 @@ QTreeWidgetItem* QGCParamWidget::updateParameterDisplay(int compId, QString para
parameterItem->setData(1, Qt::DisplayRole, value); parameterItem->setData(1, Qt::DisplayRole, value);
} }
parameterItem->setFlags(parameterItem->flags() | Qt::ItemIsEditable); parameterItem->setFlags(parameterItem->flags() | Qt::ItemIsEditable);
updatedLineItem_weak = parameterItem; //keep a temporary ref to the item that's being updated
//TODO insert alphabetically //TODO insert alphabetically
parentItem->addChild(parameterItem); parentItem->addChild(parameterItem);
...@@ -347,8 +362,9 @@ QTreeWidgetItem* QGCParamWidget::updateParameterDisplay(int compId, QString para ...@@ -347,8 +362,9 @@ QTreeWidgetItem* QGCParamWidget::updateParameterDisplay(int compId, QString para
} }
} }
//update the parameterItem's data
updatedLineItem_weak = parameterItem; //keep a temporary ref to the item that's being updated updatedLineItem_weak = parameterItem; //keep a temporary ref to the item that's being updated
//update the parameterItem's data
if (value.type() == QVariant::Char) { if (value.type() == QVariant::Char) {
parameterItem->setData(1, Qt::DisplayRole, value.toUInt()); parameterItem->setData(1, Qt::DisplayRole, value.toUInt());
} }
...@@ -357,14 +373,16 @@ QTreeWidgetItem* QGCParamWidget::updateParameterDisplay(int compId, QString para ...@@ -357,14 +373,16 @@ QTreeWidgetItem* QGCParamWidget::updateParameterDisplay(int compId, QString para
} }
} }
// Reset background color if (parameterItem) {
parameterItem->setBackground(0, Qt::NoBrush); // Reset background color
parameterItem->setBackground(1, Qt::NoBrush); parameterItem->setBackground(0, Qt::NoBrush);
parameterItem->setBackground(1, Qt::NoBrush);
parameterItem->setTextColor(0, QGC::colorDarkWhite); parameterItem->setTextColor(0, QGC::colorDarkWhite);
parameterItem->setTextColor(1, QGC::colorDarkWhite); parameterItem->setTextColor(1, QGC::colorDarkWhite);
updatedLineItem_weak = NULL; updatedLineItem_weak = NULL;
}
return parameterItem; return parameterItem;
} }
...@@ -374,7 +392,8 @@ QTreeWidgetItem* QGCParamWidget::updateParameterDisplay(int compId, QString para ...@@ -374,7 +392,8 @@ QTreeWidgetItem* QGCParamWidget::updateParameterDisplay(int compId, QString para
void QGCParamWidget::parameterItemChanged(QTreeWidgetItem* paramItem, int column) void QGCParamWidget::parameterItemChanged(QTreeWidgetItem* paramItem, int column)
{ {
if (paramItem && column > 0) { if (paramItem && column > 0) {
if (paramItem == updatedLineItem_weak) {
if (!paramItem->isSelected() || (paramItem == updatedLineItem_weak)) {
//ignore updates reflected back from the data model, to avoid infinite loop //ignore updates reflected back from the data model, to avoid infinite loop
return; return;
} }
......
...@@ -101,6 +101,7 @@ protected: ...@@ -101,6 +101,7 @@ protected:
QMap<int, QTreeWidgetItem*>* componentItems; ///< The tree of component items, stored by component ID QMap<int, QTreeWidgetItem*>* componentItems; ///< The tree of component items, stored by component ID
QMap<int, QMap<QString, QTreeWidgetItem*>* > paramGroups; ///< Parameter groups to organize component items QMap<int, QMap<QString, QTreeWidgetItem*>* > paramGroups; ///< Parameter groups to organize component items
QTreeWidgetItem* updatedLineItem_weak;///< weak ref to user-edited line QTreeWidgetItem* updatedLineItem_weak;///< weak ref to user-edited line
// QTreeWidgetItem* updatedPendingItem_weak;///< weak ref to pending-modified line
}; };
......
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