Replaced targetProgramCounterUpdated signal with new ReadProgramCounter Insight worker task.
Also some other bits of tidying
This commit is contained in:
@@ -15,6 +15,8 @@
|
||||
#include "src/Helpers/Paths.hpp"
|
||||
#include "src/Targets/TargetDescriptor.hpp"
|
||||
|
||||
#include "src/Insight/InsightWorker/Tasks/ReadProgramCounter.hpp"
|
||||
|
||||
namespace Bloom
|
||||
{
|
||||
using namespace Bloom::Exceptions;
|
||||
@@ -262,9 +264,11 @@ namespace Bloom
|
||||
);
|
||||
QObject::connect(
|
||||
&(this->insightWorker),
|
||||
&InsightWorker::targetProgramCounterUpdated,
|
||||
&InsightWorker::targetReset,
|
||||
this,
|
||||
&InsightWindow::onTargetProgramCounterUpdate
|
||||
[this] {
|
||||
this->refreshProgramCounter();
|
||||
}
|
||||
);
|
||||
|
||||
QObject::connect(
|
||||
@@ -533,11 +537,7 @@ namespace Bloom
|
||||
this->targetPackageWidget->setTargetState(this->targetState);
|
||||
|
||||
if (this->targetState == TargetState::STOPPED) {
|
||||
this->targetPackageWidget->refreshPinStates([this] {
|
||||
if (this->targetState == TargetState::STOPPED) {
|
||||
this->targetPackageWidget->setDisabled(false);
|
||||
}
|
||||
});
|
||||
this->refreshPinStates();
|
||||
}
|
||||
|
||||
this->adjustPanels();
|
||||
@@ -840,49 +840,79 @@ namespace Bloom
|
||||
this->programCounterValueLabel->setText("-");
|
||||
this->setUiDisabled(true);
|
||||
|
||||
if (this->targetPackageWidget != nullptr) {
|
||||
this->targetPackageWidget->setDisabled(true);
|
||||
}
|
||||
|
||||
} else if (newState == TargetState::STOPPED) {
|
||||
this->targetStatusLabel->setText("Stopped");
|
||||
this->setUiDisabled(false);
|
||||
this->refresh();
|
||||
|
||||
} else {
|
||||
this->targetStatusLabel->setText("Unknown");
|
||||
}
|
||||
}
|
||||
|
||||
void InsightWindow::onTargetProgramCounterUpdate(quint32 programCounter) {
|
||||
this->programCounterValueLabel->setText(
|
||||
"0x" + QString::number(programCounter, 16).toUpper() + " (" + QString::number(programCounter) + ")"
|
||||
);
|
||||
}
|
||||
|
||||
void InsightWindow::refresh() {
|
||||
if (this->targetState != TargetState::STOPPED || this->selectedVariant == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
this->setUiDisabled(true);
|
||||
this->refreshIoInspectionButton->startSpin();
|
||||
this->refreshIoInspectionButton->setDisabled(true);
|
||||
|
||||
if (this->targetPackageWidget != nullptr) {
|
||||
this->targetPackageWidget->setDisabled(true);
|
||||
this->targetPackageWidget->refreshPinStates([this] {
|
||||
if (this->targetState == TargetState::STOPPED) {
|
||||
this->targetPackageWidget->setDisabled(false);
|
||||
|
||||
if (this->targetRegistersSidePane == nullptr || !this->targetRegistersSidePane->state.activated) {
|
||||
this->refreshIoInspectionButton->stopSpin();
|
||||
this->setUiDisabled(false);
|
||||
}
|
||||
}
|
||||
});
|
||||
this->refreshPinStates();
|
||||
}
|
||||
|
||||
if (this->targetRegistersSidePane != nullptr && this->targetRegistersSidePane->state.activated) {
|
||||
this->targetRegistersSidePane->refreshRegisterValues([this] {
|
||||
this->refreshIoInspectionButton->stopSpin();
|
||||
this->setUiDisabled(false);
|
||||
});
|
||||
if (this->targetRegistersSidePane != nullptr) {
|
||||
this->targetRegistersSidePane->refreshRegisterValues();
|
||||
}
|
||||
|
||||
this->refreshProgramCounter([this] {
|
||||
this->refreshIoInspectionButton->stopSpin();
|
||||
|
||||
if (this->targetState == TargetState::STOPPED) {
|
||||
this->refreshIoInspectionButton->setDisabled(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void InsightWindow::refreshPinStates() {
|
||||
this->targetPackageWidget->setDisabled(true);
|
||||
|
||||
this->targetPackageWidget->refreshPinStates([this] {
|
||||
if (this->targetState == TargetState::STOPPED) {
|
||||
this->targetPackageWidget->setDisabled(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void InsightWindow::refreshProgramCounter(std::optional<std::function<void(void)>> callback) {
|
||||
auto* readProgramCounterTask = new ReadProgramCounter();
|
||||
|
||||
QObject::connect(
|
||||
readProgramCounterTask,
|
||||
&ReadProgramCounter::programCounterRead,
|
||||
this,
|
||||
[this] (std::uint32_t programCounter) {
|
||||
this->programCounterValueLabel->setText(
|
||||
"0x" + QString::number(programCounter, 16).toUpper() + " (" + QString::number(programCounter) + ")"
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
if (callback.has_value()) {
|
||||
QObject::connect(
|
||||
readProgramCounterTask,
|
||||
&ReadProgramCounter::finished,
|
||||
this,
|
||||
callback.value()
|
||||
);
|
||||
}
|
||||
|
||||
this->insightWorker.queueTask(readProgramCounterTask);
|
||||
}
|
||||
|
||||
void InsightWindow::openReportIssuesUrl() {
|
||||
@@ -985,6 +1015,10 @@ namespace Bloom
|
||||
|
||||
void InsightWindow::onRegistersPaneStateChanged() {
|
||||
this->targetRegistersButton->setChecked(this->targetRegistersSidePane->state.activated);
|
||||
|
||||
if (this->targetState == Targets::TargetState::STOPPED && this->targetRegistersSidePane->state.activated) {
|
||||
this->targetRegistersSidePane->refreshRegisterValues();
|
||||
}
|
||||
}
|
||||
|
||||
void InsightWindow::onRamInspectionPaneStateChanged() {
|
||||
|
||||
@@ -131,8 +131,9 @@ namespace Bloom
|
||||
void onTargetControllerSuspended();
|
||||
void onTargetControllerResumed(const Bloom::Targets::TargetDescriptor& targetDescriptor);
|
||||
void onTargetStateUpdate(Targets::TargetState newState);
|
||||
void onTargetProgramCounterUpdate(quint32 programCounter);
|
||||
void refresh();
|
||||
void refreshPinStates();
|
||||
void refreshProgramCounter(std::optional<std::function<void(void)>> callback = std::nullopt);
|
||||
void openReportIssuesUrl();
|
||||
void openGettingStartedUrl();
|
||||
void openAboutWindow();
|
||||
|
||||
@@ -229,9 +229,5 @@ namespace Bloom::Widgets
|
||||
|
||||
void RegisterWidget::onTargetStateChange(Targets::TargetState newState) {
|
||||
this->targetState = newState;
|
||||
|
||||
if (this->targetState == Targets::TargetState::RUNNING) {
|
||||
this->clearInlineValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,20 +115,6 @@ namespace Bloom::Widgets
|
||||
|
||||
itemLayout->addStretch(1);
|
||||
|
||||
QObject::connect(
|
||||
this,
|
||||
&PaneWidget::paneActivated,
|
||||
this,
|
||||
&TargetRegistersPaneWidget::postActivate
|
||||
);
|
||||
|
||||
QObject::connect(
|
||||
this,
|
||||
&PaneWidget::paneDeactivated,
|
||||
this,
|
||||
&TargetRegistersPaneWidget::postDeactivate
|
||||
);
|
||||
|
||||
QObject::connect(
|
||||
&insightWorker,
|
||||
&InsightWorker::targetStateUpdated,
|
||||
@@ -240,26 +226,15 @@ namespace Bloom::Widgets
|
||||
PaneWidget::resizeEvent(event);
|
||||
}
|
||||
|
||||
void TargetRegistersPaneWidget::postActivate() {
|
||||
if (this->targetState == Targets::TargetState::STOPPED) {
|
||||
this->refreshRegisterValues();
|
||||
}
|
||||
}
|
||||
|
||||
void TargetRegistersPaneWidget::postDeactivate() {
|
||||
|
||||
}
|
||||
|
||||
void TargetRegistersPaneWidget::onTargetStateChanged(Targets::TargetState newState) {
|
||||
if (this->targetState == newState) {
|
||||
return;
|
||||
}
|
||||
|
||||
using Targets::TargetState;
|
||||
this->targetState = newState;
|
||||
|
||||
if (newState == TargetState::STOPPED && this->state.activated) {
|
||||
this->refreshRegisterValues();
|
||||
if (this->targetState == Targets::TargetState::RUNNING) {
|
||||
this->clearInlineRegisterValues();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -277,4 +252,12 @@ namespace Bloom::Widgets
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TargetRegistersPaneWidget::clearInlineRegisterValues() {
|
||||
for (const auto& registerGroupWidget : this->registerGroupWidgets) {
|
||||
for (auto* registerWidget : registerGroupWidget->registerWidgets) {
|
||||
registerWidget->clearInlineValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,9 +44,6 @@ namespace Bloom::Widgets
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent* event) override;
|
||||
|
||||
void postActivate();
|
||||
void postDeactivate();
|
||||
|
||||
private:
|
||||
const Targets::TargetDescriptor& targetDescriptor;
|
||||
InsightWorker& insightWorker;
|
||||
@@ -70,5 +67,6 @@ namespace Bloom::Widgets
|
||||
|
||||
void onTargetStateChanged(Targets::TargetState newState);
|
||||
void onRegistersRead(const Targets::TargetRegisters& registers);
|
||||
void clearInlineRegisterValues();
|
||||
};
|
||||
}
|
||||
|
||||
@@ -86,17 +86,6 @@ namespace Bloom::Widgets::InsightTargetWidgets
|
||||
}
|
||||
|
||||
this->targetState = newState;
|
||||
|
||||
if (newState == TargetState::RUNNING) {
|
||||
this->setDisabled(true);
|
||||
|
||||
} else if (newState == TargetState::STOPPED) {
|
||||
this->refreshPinStates([this] {
|
||||
if (this->targetState == TargetState::STOPPED) {
|
||||
this->setDisabled(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void TargetPackageWidget::onProgrammingModeEnabled() {
|
||||
|
||||
Reference in New Issue
Block a user