Files
Jungfraujoch/detector_control/DetectorWrapper.h
2025-05-07 16:24:35 +02:00

40 lines
1.3 KiB
C++

// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
// SPDX-License-Identifier: GPL-3.0-only
#ifndef JFJOCH_DETECTORWRAPPER_H
#define JFJOCH_DETECTORWRAPPER_H
#include <cstdint>
#include <vector>
#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<int64_t> temperature_fpga_degC;
std::vector<int64_t> 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<AcquisitionDeviceNetConfig>& 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