diff --git a/src/Application.cpp b/src/Application.cpp index ebb7bb38..eedf9c18 100644 --- a/src/Application.cpp +++ b/src/Application.cpp @@ -156,8 +156,8 @@ int Application::presentHelpText() { throw Exception("Failed to open help file - please report this issue at https://bloom.oscillate.io/report-issue"); } - std::cout << "Bloom v" << Application::VERSION_STR << std::endl; - std::cout << QTextStream(&helpFile).readAll().toUtf8().constData() << std::endl; + std::cout << "Bloom v" << Application::VERSION_STR << "\n"; + std::cout << QTextStream(&helpFile).readAll().toUtf8().constData() << "\n"; return EXIT_SUCCESS; } @@ -170,8 +170,8 @@ int Application::presentVersionText() { std::cout << "DEBUG BUILD - Compilation timestamp: " << __DATE__ << " " << __TIME__ << "\n"; #endif - std::cout << "https://bloom.oscillate.io/" << "\n"; - std::cout << "Nav Mohammed" << std::endl; + std::cout << "https://bloom.oscillate.io/\n"; + std::cout << "Nav Mohammed\n"; return EXIT_SUCCESS; } diff --git a/src/EventManager/EventListener.hpp b/src/EventManager/EventListener.hpp index 6f0f7c10..d3f20324 100644 --- a/src/EventManager/EventListener.hpp +++ b/src/EventManager/EventListener.hpp @@ -63,10 +63,11 @@ namespace Bloom /** * A mapping of event type names to a vector of callback functions. Events will be dispatched to these - * callback functions, during a call to EventListener::waiteAndDispatch(). + * callback functions, during a call to EventListener::dispatchEvent(). * - * Each callback will be passed an std::shared_ptr of the event (we downcast the events in - * EventListener::waiteAndDispatch() before dispatching them). + * Each callback will be passed an std::shared_ptr of the event (we wrap all registered + * callbacks in a lambda, where we perform a downcast before invoking the callback. + * See EventListener::registerCallbackForEventType() for more) */ SyncSafe>>> eventTypeToCallbacksMapping; SyncSafe> registeredEventTypes; diff --git a/src/EventManager/Events/BreakpointRemovedOnTarget.hpp b/src/EventManager/Events/BreakpointRemovedOnTarget.hpp index 81c6b1c9..782c873a 100644 --- a/src/EventManager/Events/BreakpointRemovedOnTarget.hpp +++ b/src/EventManager/Events/BreakpointRemovedOnTarget.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include "Event.hpp" namespace Bloom::Events diff --git a/src/EventManager/Events/BreakpointSetOnTarget.hpp b/src/EventManager/Events/BreakpointSetOnTarget.hpp index cab75bc9..7f5c9bf3 100644 --- a/src/EventManager/Events/BreakpointSetOnTarget.hpp +++ b/src/EventManager/Events/BreakpointSetOnTarget.hpp @@ -1,6 +1,7 @@ #pragma once -#include +#include + #include "Event.hpp" namespace Bloom::Events diff --git a/src/EventManager/Events/DebugServerThreadStateChanged.hpp b/src/EventManager/Events/DebugServerThreadStateChanged.hpp index 2b65a15f..deffdea8 100644 --- a/src/EventManager/Events/DebugServerThreadStateChanged.hpp +++ b/src/EventManager/Events/DebugServerThreadStateChanged.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include "Event.hpp" #include "src/Helpers/Thread.hpp" diff --git a/src/EventManager/Events/DebugSessionFinished.hpp b/src/EventManager/Events/DebugSessionFinished.hpp index b7e2f1c7..ae6c858a 100644 --- a/src/EventManager/Events/DebugSessionFinished.hpp +++ b/src/EventManager/Events/DebugSessionFinished.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include "Event.hpp" namespace Bloom::Events diff --git a/src/EventManager/Events/DebugSessionStarted.hpp b/src/EventManager/Events/DebugSessionStarted.hpp index 9639d5c9..29b87752 100644 --- a/src/EventManager/Events/DebugSessionStarted.hpp +++ b/src/EventManager/Events/DebugSessionStarted.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include "Event.hpp" namespace Bloom::Events diff --git a/src/EventManager/Events/Events.hpp b/src/EventManager/Events/Events.hpp index c9a476b6..84eb6b65 100644 --- a/src/EventManager/Events/Events.hpp +++ b/src/EventManager/Events/Events.hpp @@ -9,7 +9,6 @@ #include "DebugSessionStarted.hpp" #include "DebugSessionFinished.hpp" #include "TargetControllerThreadStateChanged.hpp" -#include "TargetControllerStopped.hpp" #include "ShutdownTargetController.hpp" #include "TargetControllerErrorOccurred.hpp" #include "ShutdownApplication.hpp" diff --git a/src/EventManager/Events/ExtractTargetDescriptor.hpp b/src/EventManager/Events/ExtractTargetDescriptor.hpp index 04c744ac..2c1be576 100644 --- a/src/EventManager/Events/ExtractTargetDescriptor.hpp +++ b/src/EventManager/Events/ExtractTargetDescriptor.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include #include "Event.hpp" diff --git a/src/EventManager/Events/InsightStateChanged.hpp b/src/EventManager/Events/InsightStateChanged.hpp index 886bc6d3..27e80c84 100644 --- a/src/EventManager/Events/InsightStateChanged.hpp +++ b/src/EventManager/Events/InsightStateChanged.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include "Event.hpp" #include "src/Helpers/Thread.hpp" diff --git a/src/EventManager/Events/MemoryRetrievedFromTarget.hpp b/src/EventManager/Events/MemoryRetrievedFromTarget.hpp index 20c06fa4..ccdebfde 100644 --- a/src/EventManager/Events/MemoryRetrievedFromTarget.hpp +++ b/src/EventManager/Events/MemoryRetrievedFromTarget.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include #include "Event.hpp" #include "src/Targets/TargetMemory.hpp" diff --git a/src/EventManager/Events/MemoryWrittenToTarget.hpp b/src/EventManager/Events/MemoryWrittenToTarget.hpp index 38047a34..2554bb1c 100644 --- a/src/EventManager/Events/MemoryWrittenToTarget.hpp +++ b/src/EventManager/Events/MemoryWrittenToTarget.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include "Event.hpp" #include "src/Targets/TargetMemory.hpp" diff --git a/src/EventManager/Events/ProgramCounterSetOnTarget.hpp b/src/EventManager/Events/ProgramCounterSetOnTarget.hpp index 00a0e9db..d9eed22d 100644 --- a/src/EventManager/Events/ProgramCounterSetOnTarget.hpp +++ b/src/EventManager/Events/ProgramCounterSetOnTarget.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include "Event.hpp" namespace Bloom::Events diff --git a/src/EventManager/Events/RegistersRetrievedFromTarget.hpp b/src/EventManager/Events/RegistersRetrievedFromTarget.hpp index 8df1f719..1339e560 100644 --- a/src/EventManager/Events/RegistersRetrievedFromTarget.hpp +++ b/src/EventManager/Events/RegistersRetrievedFromTarget.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include #include "Event.hpp" #include "src/Targets/TargetRegister.hpp" diff --git a/src/EventManager/Events/RegistersWrittenToTarget.hpp b/src/EventManager/Events/RegistersWrittenToTarget.hpp index 58a6cdb9..5fdd2a57 100644 --- a/src/EventManager/Events/RegistersWrittenToTarget.hpp +++ b/src/EventManager/Events/RegistersWrittenToTarget.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include #include "Event.hpp" diff --git a/src/EventManager/Events/RemoveBreakpointOnTarget.hpp b/src/EventManager/Events/RemoveBreakpointOnTarget.hpp index 221005a6..668d6908 100644 --- a/src/EventManager/Events/RemoveBreakpointOnTarget.hpp +++ b/src/EventManager/Events/RemoveBreakpointOnTarget.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include "Event.hpp" #include "src/Targets/TargetBreakpoint.hpp" diff --git a/src/EventManager/Events/ResetTarget.hpp b/src/EventManager/Events/ResetTarget.hpp index 368c66ac..db5ac783 100644 --- a/src/EventManager/Events/ResetTarget.hpp +++ b/src/EventManager/Events/ResetTarget.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include "Event.hpp" namespace Bloom::Events diff --git a/src/EventManager/Events/ResumeTargetExecution.hpp b/src/EventManager/Events/ResumeTargetExecution.hpp index 46b61aca..81753edf 100644 --- a/src/EventManager/Events/ResumeTargetExecution.hpp +++ b/src/EventManager/Events/ResumeTargetExecution.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include "Event.hpp" diff --git a/src/EventManager/Events/RetrieveMemoryFromTarget.hpp b/src/EventManager/Events/RetrieveMemoryFromTarget.hpp index aabff146..cac6a9e3 100644 --- a/src/EventManager/Events/RetrieveMemoryFromTarget.hpp +++ b/src/EventManager/Events/RetrieveMemoryFromTarget.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include "Event.hpp" #include "src/Targets/TargetMemory.hpp" diff --git a/src/EventManager/Events/RetrieveRegistersFromTarget.hpp b/src/EventManager/Events/RetrieveRegistersFromTarget.hpp index 26d3782c..bc93e910 100644 --- a/src/EventManager/Events/RetrieveRegistersFromTarget.hpp +++ b/src/EventManager/Events/RetrieveRegistersFromTarget.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include #include "Event.hpp" #include "src/Targets/TargetRegister.hpp" diff --git a/src/EventManager/Events/RetrieveTargetPinStates.hpp b/src/EventManager/Events/RetrieveTargetPinStates.hpp index 99849d98..ab38cfec 100644 --- a/src/EventManager/Events/RetrieveTargetPinStates.hpp +++ b/src/EventManager/Events/RetrieveTargetPinStates.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include #include "Event.hpp" diff --git a/src/EventManager/Events/SetBreakpointOnTarget.hpp b/src/EventManager/Events/SetBreakpointOnTarget.hpp index 18b98ef6..397b1a36 100644 --- a/src/EventManager/Events/SetBreakpointOnTarget.hpp +++ b/src/EventManager/Events/SetBreakpointOnTarget.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include "Event.hpp" #include "src/Targets/TargetBreakpoint.hpp" diff --git a/src/EventManager/Events/SetProgramCounterOnTarget.hpp b/src/EventManager/Events/SetProgramCounterOnTarget.hpp index 1f319e6f..16845e20 100644 --- a/src/EventManager/Events/SetProgramCounterOnTarget.hpp +++ b/src/EventManager/Events/SetProgramCounterOnTarget.hpp @@ -1,5 +1,8 @@ #pragma once +#include +#include + #include "Event.hpp" namespace Bloom::Events diff --git a/src/EventManager/Events/SetTargetPinState.hpp b/src/EventManager/Events/SetTargetPinState.hpp index 08b1778d..3dfcf026 100644 --- a/src/EventManager/Events/SetTargetPinState.hpp +++ b/src/EventManager/Events/SetTargetPinState.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include #include "Event.hpp" #include "src/Targets/TargetPinDescriptor.hpp" diff --git a/src/EventManager/Events/ShutdownApplication.hpp b/src/EventManager/Events/ShutdownApplication.hpp index 1cf2b882..b210ac1b 100644 --- a/src/EventManager/Events/ShutdownApplication.hpp +++ b/src/EventManager/Events/ShutdownApplication.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include "Event.hpp" namespace Bloom::Events diff --git a/src/EventManager/Events/ShutdownDebugServer.hpp b/src/EventManager/Events/ShutdownDebugServer.hpp index 470b8e07..7f724cd6 100644 --- a/src/EventManager/Events/ShutdownDebugServer.hpp +++ b/src/EventManager/Events/ShutdownDebugServer.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include "Event.hpp" namespace Bloom::Events diff --git a/src/EventManager/Events/ShutdownTargetController.hpp b/src/EventManager/Events/ShutdownTargetController.hpp index 2618c661..ade0b446 100644 --- a/src/EventManager/Events/ShutdownTargetController.hpp +++ b/src/EventManager/Events/ShutdownTargetController.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include "Event.hpp" namespace Bloom::Events diff --git a/src/EventManager/Events/StepTargetExecution.hpp b/src/EventManager/Events/StepTargetExecution.hpp index 93b7ea57..8e316dd6 100644 --- a/src/EventManager/Events/StepTargetExecution.hpp +++ b/src/EventManager/Events/StepTargetExecution.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include "Event.hpp" diff --git a/src/EventManager/Events/StopTargetExecution.hpp b/src/EventManager/Events/StopTargetExecution.hpp index d1440d9e..eeb5227b 100644 --- a/src/EventManager/Events/StopTargetExecution.hpp +++ b/src/EventManager/Events/StopTargetExecution.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include "Event.hpp" namespace Bloom::Events diff --git a/src/EventManager/Events/TargetControllerErrorOccurred.hpp b/src/EventManager/Events/TargetControllerErrorOccurred.hpp index 7ca9dd21..30941332 100644 --- a/src/EventManager/Events/TargetControllerErrorOccurred.hpp +++ b/src/EventManager/Events/TargetControllerErrorOccurred.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include "Event.hpp" namespace Bloom::Events diff --git a/src/EventManager/Events/TargetControllerStopped.hpp b/src/EventManager/Events/TargetControllerStopped.hpp deleted file mode 100644 index 142b2be2..00000000 --- a/src/EventManager/Events/TargetControllerStopped.hpp +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once - -#include "Event.hpp" -#include "src/Exceptions/Exception.hpp" - -namespace Bloom::Events -{ - class TargetControllerStopped: public Event - { - private: - bool stoppedAbruptly = false; - std::optional caughtException; - - public: - static inline const std::string name = "TargetControllerStoppedEvent"; - - std::string getName() const override { - return TargetControllerStopped::name; - } - }; -} diff --git a/src/EventManager/Events/TargetDescriptorExtracted.hpp b/src/EventManager/Events/TargetDescriptorExtracted.hpp index 1469c40c..7fc67c8b 100644 --- a/src/EventManager/Events/TargetDescriptorExtracted.hpp +++ b/src/EventManager/Events/TargetDescriptorExtracted.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include #include "Event.hpp" #include "src/Targets/TargetDescriptor.hpp" diff --git a/src/EventManager/Events/TargetExecutionResumed.hpp b/src/EventManager/Events/TargetExecutionResumed.hpp index 39d593d8..d1361e6e 100644 --- a/src/EventManager/Events/TargetExecutionResumed.hpp +++ b/src/EventManager/Events/TargetExecutionResumed.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include "Event.hpp" namespace Bloom::Events diff --git a/src/EventManager/Events/TargetExecutionStopped.hpp b/src/EventManager/Events/TargetExecutionStopped.hpp index 1b854255..bd0886e7 100644 --- a/src/EventManager/Events/TargetExecutionStopped.hpp +++ b/src/EventManager/Events/TargetExecutionStopped.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include "Event.hpp" #include "src/Targets/Target.hpp" diff --git a/src/EventManager/Events/TargetPinStatesRetrieved.hpp b/src/EventManager/Events/TargetPinStatesRetrieved.hpp index 2dd7d52d..bf238b9f 100644 --- a/src/EventManager/Events/TargetPinStatesRetrieved.hpp +++ b/src/EventManager/Events/TargetPinStatesRetrieved.hpp @@ -1,7 +1,7 @@ #pragma once -#include #include +#include #include "Event.hpp" #include "src/Targets/TargetPinDescriptor.hpp" diff --git a/src/EventManager/Events/WriteMemoryToTarget.hpp b/src/EventManager/Events/WriteMemoryToTarget.hpp index 6049c888..434d5f7e 100644 --- a/src/EventManager/Events/WriteMemoryToTarget.hpp +++ b/src/EventManager/Events/WriteMemoryToTarget.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include "Event.hpp" #include "src/Targets/TargetMemory.hpp" diff --git a/src/EventManager/Events/WriteRegistersToTarget.hpp b/src/EventManager/Events/WriteRegistersToTarget.hpp index ed81a1d5..666c5d5e 100644 --- a/src/EventManager/Events/WriteRegistersToTarget.hpp +++ b/src/EventManager/Events/WriteRegistersToTarget.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include #include "Event.hpp" #include "src/Targets/TargetRegister.hpp" diff --git a/src/Insight/InsightWorker.cpp b/src/Insight/InsightWorker.cpp index 1aeb6ef7..310a01e2 100644 --- a/src/Insight/InsightWorker.cpp +++ b/src/Insight/InsightWorker.cpp @@ -4,7 +4,6 @@ #include #include -#include "src/Application.hpp" #include "InsightWorker.hpp" #include "src/Logger/Logger.hpp" #include "src/Helpers/Thread.hpp" @@ -58,7 +57,30 @@ void InsightWorker::requestPinStateUpdate( } void InsightWorker::onTargetStoppedEvent(EventPointer event) { - auto resumedEvent = this->eventListener->waitForEvent(std::chrono::milliseconds(650)); + /* + * When we report a target halt to Insight, Insight will immediately seek more data from the target (such as GPIO + * pin states). This can be problematic for cases where the target had halted due to a conditional breakpoint. + * + * For conditional breakpoints, a software breakpoint is employed to halt target execution and give the debug + * client an opportunity to check the condition. In cases where the condition is not met, the client will + * immediately request for execution to be resumed. It's important that Insight does not get in the way of this + * process, as it could end up slowing things down significantly. + * + * For the above reason, we don't want to report any target halts to Insight, unless we can be sure that the client + * isn't going to immediately resume execution upon checking the condition. + * + * We do this by providing a time window for the TargetExecutionResumed event. If the event is triggered within + * that time window, we won't report the target halt to Insight, thus preventing Insight from needlessly seeking + * data from the target and slowing things down. + * + * This isn't the best approach, TBH, as it introduces a delay to Insight's response to the target halting. The + * problem is, we cannot differentiate a conditional breakpoint with a software breakpoint, so this seems to be the + * only way. It would be nice if the debug client gave us some form of indication of whether the breakpoint is a + * conditional one. + */ + auto resumedEvent = this->eventListener->waitForEvent( + std::chrono::milliseconds(650) + ); if (!resumedEvent.has_value()) { emit this->targetStateUpdated(TargetState::STOPPED); diff --git a/src/Logger/Logger.hpp b/src/Logger/Logger.hpp index 3c4e8f0c..6929e74b 100644 --- a/src/Logger/Logger.hpp +++ b/src/Logger/Logger.hpp @@ -20,7 +20,8 @@ namespace Bloom DEBUG = 4, }; - struct LogEntry { + struct LogEntry + { std::string threadName; std::string message; LogLevel logLevel; diff --git a/src/SignalHandler/SignalHandler.cpp b/src/SignalHandler/SignalHandler.cpp index f404467c..753dabaa 100644 --- a/src/SignalHandler/SignalHandler.cpp +++ b/src/SignalHandler/SignalHandler.cpp @@ -17,9 +17,9 @@ void SignalHandler::run() { while(Thread::getState() == ThreadState::READY) { if (sigwait(&signalSet, &signalNumber) == 0) { Logger::debug("SIGNAL " + std::to_string(signalNumber) + " received"); - if (this->handlersMappedBySignalNum.find(signalNumber) != this->handlersMappedBySignalNum.end()) { + if (this->handlersMappedBySignalNum.contains(signalNumber)) { // We have a registered handler for this signal. - this->handlersMappedBySignalNum.find(signalNumber)->second(); + this->handlersMappedBySignalNum.at(signalNumber)(); } } } diff --git a/src/Targets/TargetPinDescriptor.hpp b/src/Targets/TargetPinDescriptor.hpp index 6bf9ecbd..1bacaab5 100644 --- a/src/Targets/TargetPinDescriptor.hpp +++ b/src/Targets/TargetPinDescriptor.hpp @@ -8,7 +8,8 @@ namespace Bloom::Targets { - enum class TargetPinType: int { + enum class TargetPinType: int + { UNKNOWN, GPIO, GND, @@ -28,12 +29,14 @@ namespace Bloom::Targets struct TargetPinState { - enum class IoState: int { + enum class IoState: int + { HIGH, LOW, }; - enum class IoDirection: int { + enum class IoDirection: int + { INPUT, OUTPUT, }; diff --git a/src/Targets/TargetVariant.hpp b/src/Targets/TargetVariant.hpp index 9e4aa9e8..68712164 100644 --- a/src/Targets/TargetVariant.hpp +++ b/src/Targets/TargetVariant.hpp @@ -8,7 +8,8 @@ namespace Bloom::Targets { - enum class TargetPackage: int { + enum class TargetPackage: int + { UNKNOWN, /** diff --git a/src/resources.qrc b/src/resources.qrc index dcaccc1d..b2ba1e0a 100644 --- a/src/resources.qrc +++ b/src/resources.qrc @@ -1,14 +1,23 @@ + ../resources/help.txt + + ../resources/bloom.template.json + + ./Insight/UserInterfaces/InsightWindow/UiFiles/InsightWindow.ui ./Insight/UserInterfaces/InsightWindow/UiFiles/AboutWindow.ui + + ./Insight/UserInterfaces/InsightWindow/Stylesheets/InsightWindow.qss ./Insight/UserInterfaces/InsightWindow/Stylesheets/AboutWindow.qss ./Insight/UserInterfaces/InsightWindow/TargetWidgets/DIP/Stylesheets/DualInlinePackage.qss ./Insight/UserInterfaces/InsightWindow/TargetWidgets/QFP/Stylesheets/QuadFlatPackage.qss + + ./Insight/UserInterfaces/InsightWindow/Images/BloomIcon.svg ./Insight/UserInterfaces/InsightWindow/Images/RAM.svg ./Insight/UserInterfaces/InsightWindow/Images/refresh.svg