2021-04-04 21:04:12 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
|
#include <memory>
|
|
|
|
|
#include <atomic>
|
|
|
|
|
#include <optional>
|
2021-08-19 22:06:59 +01:00
|
|
|
#include <cstdint>
|
2021-04-04 21:04:12 +01:00
|
|
|
|
|
|
|
|
#include "src/Helpers/DateTime.hpp"
|
|
|
|
|
|
|
|
|
|
namespace Bloom::Events
|
|
|
|
|
{
|
|
|
|
|
static_assert(std::atomic<int>::is_always_lock_free);
|
|
|
|
|
|
2021-09-12 23:29:49 +01:00
|
|
|
enum EventType: std::uint8_t
|
2021-08-19 22:06:59 +01:00
|
|
|
{
|
|
|
|
|
GENERIC,
|
|
|
|
|
STOP_TARGET_EXECUTION,
|
|
|
|
|
RESUME_TARGET_EXECUTION,
|
|
|
|
|
RESET_TARGET,
|
|
|
|
|
DEBUG_SESSION_STARTED,
|
|
|
|
|
DEBUG_SESSION_FINISHED,
|
|
|
|
|
TARGET_CONTROLLER_THREAD_STATE_CHANGED,
|
|
|
|
|
REPORT_TARGET_CONTROLLER_STATE,
|
|
|
|
|
TARGET_CONTROLLER_STATE_REPORTED,
|
|
|
|
|
SHUTDOWN_TARGET_CONTROLLER,
|
|
|
|
|
TARGET_CONTROLLER_ERROR_OCCURRED,
|
|
|
|
|
SHUTDOWN_APPLICATION,
|
|
|
|
|
DEBUG_SERVER_THREAD_STATE_CHANGED,
|
|
|
|
|
SHUTDOWN_DEBUG_SERVER,
|
|
|
|
|
RETRIEVE_REGISTERS_FROM_TARGET,
|
|
|
|
|
REGISTERS_RETRIEVED_FROM_TARGET,
|
|
|
|
|
WRITE_REGISTERS_TO_TARGET,
|
|
|
|
|
REGISTERS_WRITTEN_TO_TARGET,
|
|
|
|
|
TARGET_EXECUTION_RESUMED,
|
|
|
|
|
TARGET_EXECUTION_STOPPED,
|
|
|
|
|
RETRIEVE_MEMORY_FROM_TARGET,
|
|
|
|
|
MEMORY_RETRIEVED_FROM_TARGET,
|
|
|
|
|
WRITE_MEMORY_TO_TARGET,
|
|
|
|
|
MEMORY_WRITTEN_TO_TARGET,
|
|
|
|
|
SET_BREAKPOINT_ON_TARGET,
|
|
|
|
|
REMOVE_BREAKPOINT_ON_TARGET,
|
|
|
|
|
BREAKPOINT_SET_ON_TARGET,
|
|
|
|
|
BREAKPOINT_REMOVED_ON_TARGET,
|
|
|
|
|
STEP_TARGET_EXECUTION,
|
|
|
|
|
SET_PROGRAM_COUNTER_ON_TARGET,
|
|
|
|
|
PROGRAM_COUNTER_SET_ON_TARGET,
|
|
|
|
|
EXTRACT_TARGET_DESCRIPTOR,
|
|
|
|
|
TARGET_DESCRIPTOR_EXTRACTED,
|
|
|
|
|
INSIGHT_THREAD_STATE_CHANGED,
|
|
|
|
|
RETRIEVE_TARGET_PIN_STATES,
|
|
|
|
|
TARGET_PIN_STATES_RETRIEVED,
|
|
|
|
|
SET_TARGET_PIN_STATE,
|
2021-11-11 19:05:24 +00:00
|
|
|
RETRIEVE_STACK_POINTER_FROM_TARGET,
|
|
|
|
|
STACK_POINTER_RETRIEVED_FROM_TARGET,
|
2021-08-19 22:06:59 +01:00
|
|
|
};
|
|
|
|
|
|
2021-04-04 21:04:12 +01:00
|
|
|
class Event
|
|
|
|
|
{
|
|
|
|
|
public:
|
2021-06-22 03:06:20 +01:00
|
|
|
int id = ++(Event::lastEventId);
|
|
|
|
|
QDateTime createdTimestamp = DateTime::currentDateTime();
|
2021-04-04 21:04:12 +01:00
|
|
|
std::optional<int> correlationId;
|
|
|
|
|
|
2021-08-19 22:06:59 +01:00
|
|
|
static inline EventType type = EventType::GENERIC;
|
2021-04-04 21:04:12 +01:00
|
|
|
static inline const std::string name = "GenericEvent";
|
|
|
|
|
|
2021-06-22 03:06:20 +01:00
|
|
|
[[nodiscard]] virtual std::string getName() const {
|
2021-04-04 21:04:12 +01:00
|
|
|
return Event::name;
|
|
|
|
|
}
|
2021-08-19 22:06:59 +01:00
|
|
|
|
|
|
|
|
[[nodiscard]] virtual EventType getType() const {
|
|
|
|
|
return Event::type;
|
|
|
|
|
}
|
2021-10-06 21:12:31 +01:00
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
static inline std::atomic<int> lastEventId = 0;
|
2021-04-04 21:04:12 +01:00
|
|
|
};
|
|
|
|
|
}
|