// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #ifndef JFJOCH_DETECTORWRAPPER_H #define JFJOCH_DETECTORWRAPPER_H #include #include #include "../common/DiffractionExperiment.h" #include "../common/PixelMask.h" enum class DetectorState {IDLE, ERROR, BUSY, WAITING, NOT_CONNECTED}; enum class DetectorPowerState {ON, OFF, PARTIAL}; struct DetectorStatus { std::vector temperature_fpga_degC; std::vector high_voltage_V; DetectorState detector_state; DetectorPowerState power_state; std::string detector_server_version; int64_t remaining_triggers; }; class DetectorWrapper { public: [[nodiscard]] virtual DetectorState GetState() const = 0; virtual void Initialize(DiffractionExperiment& experiment, const std::vector& net_config) = 0; virtual void Configure(const DiffractionExperiment& experiment) = 0; virtual void Start(const DiffractionExperiment& experiment) = 0; virtual void Stop() = 0; virtual void Trigger() = 0; virtual void Deactivate() = 0; virtual void LoadPixelMask(PixelMask &mask) = 0; [[nodiscard]] virtual DetectorStatus GetStatus() const = 0; }; #endif //JFJOCH_DETECTORWRAPPER_H