diff --git a/apps/ied_simulator/qml/BrowserReportPane.qml b/apps/ied_simulator/qml/BrowserReportPane.qml index 23817d84b..136d9dff1 100644 --- a/apps/ied_simulator/qml/BrowserReportPane.qml +++ b/apps/ied_simulator/qml/BrowserReportPane.qml @@ -29,9 +29,11 @@ Rectangle { // Preserve selection through repeat snapshots of the same report frame; // reset only when the actual ReportID/sequence/entry identity changes. readonly property string latestReportIdentity: !hasLastReport ? "" : [ - latestReport.reportId || "", latestReport.sequence || "", + latestReport.rcbReference || "", latestReport.reportId || "", latestReport.sequence || "", latestReport.subSequence || "", latestReport.entryId || "" ].join("|") + // A different indexed RCB can legitimately emit the same RptID/SqNum. + // Reset member selection when provenance changes, not only wire sequence. onLatestReportIdentityChanged: selectedReportMemberIndex = -1 function selectedReportMemberEvidence() { if (!hasLastReport || selectedReportMemberIndex < 0 || diff --git a/apps/ied_simulator/src/MmsReportController.cpp b/apps/ied_simulator/src/MmsReportController.cpp index bd4d78a3a..7fbbef210 100644 --- a/apps/ied_simulator/src/MmsReportController.cpp +++ b/apps/ied_simulator/src/MmsReportController.cpp @@ -1615,7 +1615,7 @@ bool MmsReportController::enableSelectedAuthored( "Authored RCB restored to canonical static DataSet; configuration verified and enabled.") : (requestGeneralInterrogation ? QStringLiteral( - "Authored RCB configuration verified; enabled; GI requested.") + "Authored RCB enabled; GI requested (inspect GI write outcome and received reports).") : QStringLiteral( "Authored RCB configuration verified and enabled."))); emit self->inventoryChanged(); @@ -1718,7 +1718,7 @@ bool MmsReportController::enableSelected(const bool requestGeneralInterrogation) self->reportDecodeFailureCount_ = ui.decodeFailureCount; self->state_ = ui.cleanupRequired ? State::cleanup_required : State::active; self->appendDiagnostic(requestGeneralInterrogation - ? QStringLiteral("RCB enabled; GI requested explicitly.") + ? QStringLiteral("RCB enabled; GI requested (inspect GI write outcome; report not yet proven).") : QStringLiteral("RCB enabled without GI.")); emit self->reportsChanged(); emit self->stateChanged(); diff --git a/apps/ied_simulator/test_browser_convergence.py b/apps/ied_simulator/test_browser_convergence.py index d94a17c28..a32613beb 100644 --- a/apps/ied_simulator/test_browser_convergence.py +++ b/apps/ied_simulator/test_browser_convergence.py @@ -249,6 +249,7 @@ 'selectedReportMemberEvidence()', 'root.selectedReportMemberIndex = dataRow.index', 'onLatestReportIdentityChanged: selectedReportMemberIndex = -1', + 'latestReport.rcbReference || ""', 'BrowserEngineeringEvidence {', 'root.latestReport.valuesTruncated === true', 'root.latestReport.valueTextTruncated === true',