// SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #ifndef JUNGFRAUJOCH_TESTIMAGEPUSHER_H #define JUNGFRAUJOCH_TESTIMAGEPUSHER_H #include #include "ImagePusher.h" #include "../common/Logger.h" #include "../common/DiffractionExperiment.h" #include "../jungfrau/JFCalibration.h" #include "../jungfrau/JFModuleGainCalibration.h" class TestImagePusher : public ImagePusher { mutable std::mutex m; std::vector receiver_generated_image; int64_t image_id; bool correct_sequence = true; bool is_running = false; size_t frame_counter = 0; std::optional data_message; public: explicit TestImagePusher(int64_t image_number); void StartDataCollection(StartMessage& message) override; bool EndDataCollection(const EndMessage& message) override; bool SendCalibration(const CompressedImage& message) override; bool SendImage(const uint8_t *image_data, size_t image_size, int64_t image_number) override; bool CheckImage(const DiffractionExperiment &x, const std::vector &raw_reference_image, const JFCalibration &calibration, Logger &logger); [[nodiscard]] bool CheckSequence() const; [[nodiscard]] const std::vector &GetImage() const; [[nodiscard]] size_t GetCounter() const; std::string PrintSetup() const override; ImagePusherType GetType() const override { return ImagePusherType::Test; } }; #endif //JUNGFRAUJOCH_TESTIMAGEPUSHER_H