// SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #ifndef JUNGFRAUJOCH_DETECTORWRAPPER_H #define JUNGFRAUJOCH_DETECTORWRAPPER_H #include #include "../common/DiffractionExperiment.h" #include "../common/Logger.h" #include "DetectorWrapper.h" #define BASE_DETECTOR_MAC 0xAABBCCDDEE10 // little-endian! class SLSDetectorWrapper : public DetectorWrapper { Logger logger{"SLSDetectorWrapper"}; DetectorType det_type; sls::Detector det; void InternalStop(); [[nodiscard]] int64_t GetNumberOfTriggersLeft() const; [[nodiscard]] DetectorPowerState GetPowerState() const; int64_t GetFirmwareVersion() const; std::string GetDetectorServerVersion() const; std::vector GetFPGATemperatures() const; std::vector GetHighVoltage() const; public: [[nodiscard]] DetectorState GetState() const override; void Initialize(DiffractionExperiment& experiment, const std::vector& net_config) override; void Configure(const DiffractionExperiment& experiment) override; void Start(const DiffractionExperiment& experiment) override; void Stop() override; void Trigger() override; void Deactivate() override; void LoadPixelMask(PixelMask &mask) override; DetectorStatus GetStatus() const override; }; #endif //JUNGFRAUJOCH_DETECTORWRAPPER_H