From 9e92e230baa92dd42ac158aab2b7bd265396d43e Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Thu, 6 Jul 2023 10:44:01 +0200 Subject: [PATCH] JFJochFrameSerializer: Single header for all the messages --- common/DiffractionExperiment.h | 3 +- common/ImagePusher.h | 3 +- common/ZMQPreviewPublisher.h | 2 +- .../{StartMessage.h => CBORMessages.h} | 62 +++++++++++++++++-- frame_serialize/CMakeLists.txt | 3 +- frame_serialize/EndMessage.h | 25 -------- frame_serialize/ImageMessage.h | 51 --------------- frame_serialize/JFJochFrameDeserializer.h | 4 +- frame_serialize/JFJochFrameSerializer.h | 4 +- writer/HDF5DataFile.h | 2 +- writer/HDF5NXmx.h | 3 +- writer/HDF5Writer.h | 3 +- 12 files changed, 66 insertions(+), 99 deletions(-) rename frame_serialize/{StartMessage.h => CBORMessages.h} (62%) delete mode 100644 frame_serialize/EndMessage.h delete mode 100644 frame_serialize/ImageMessage.h diff --git a/common/DiffractionExperiment.h b/common/DiffractionExperiment.h index 322fe262..20e79896 100644 --- a/common/DiffractionExperiment.h +++ b/common/DiffractionExperiment.h @@ -15,8 +15,7 @@ #include "UnitCell.h" #include "Coord.h" #include "Definitions.h" -#include "../frame_serialize/StartMessage.h" -#include "../frame_serialize/EndMessage.h" +#include "../frame_serialize/CBORMessages.h" #include "DetectorSetup.h" #include "ROIFilter.h" diff --git a/common/ImagePusher.h b/common/ImagePusher.h index bde64161..51aaf76f 100644 --- a/common/ImagePusher.h +++ b/common/ImagePusher.h @@ -10,8 +10,7 @@ #include "DiffractionExperiment.h" #include "DiffractionSpot.h" #include "../frame_serialize/JFJochFrameSerializer.h" -#include "../frame_serialize/StartMessage.h" -#include "../frame_serialize/EndMessage.h" +#include "../frame_serialize/CBORMessages.h" #include "ZeroCopyReturnValue.h" void PrepareCBORImage(DataMessage& message, diff --git a/common/ZMQPreviewPublisher.h b/common/ZMQPreviewPublisher.h index 489ee898..aea24872 100644 --- a/common/ZMQPreviewPublisher.h +++ b/common/ZMQPreviewPublisher.h @@ -9,7 +9,7 @@ #include "ZMQWrappers.h" #include "DiffractionExperiment.h" #include "../jungfrau/JFCalibration.h" -#include "../frame_serialize/ImageMessage.h" +#include "../frame_serialize/CBORMessages.h" class ZMQPreviewPublisher { ZMQSocket socket; diff --git a/frame_serialize/StartMessage.h b/frame_serialize/CBORMessages.h similarity index 62% rename from frame_serialize/StartMessage.h rename to frame_serialize/CBORMessages.h index 463a2102..9f1b09c6 100644 --- a/frame_serialize/StartMessage.h +++ b/frame_serialize/CBORMessages.h @@ -1,15 +1,52 @@ -// Copyright (2019-2022) Paul Scherrer Institute +// Copyright (2019-2023) Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-or-later -#ifndef JUNGFRAUJOCH_STARTMESSAGE_H -#define JUNGFRAUJOCH_STARTMESSAGE_H +#ifndef JUNGFRAUJOCH_CBORMESSAGES_H +#define JUNGFRAUJOCH_CBORMESSAGES_H #include #include #include #include #include "../compression/CompressionAlgorithmEnum.h" -#include "ImageMessage.h" +#include "../common/SpotToSave.h" + +struct CBORImage { + const uint8_t *data; + size_t size; // Including compression + size_t xpixel; + size_t ypixel; + size_t pixel_depth_bytes; + bool pixel_is_signed; + bool pixel_is_float = false; + CompressionAlgorithm algorithm; + std::string channel; +}; + +struct DataMessage { + int64_t number = INT64_MIN; + CBORImage image; + std::vector spots; + std::vector rad_int_profile; + uint64_t indexing_result; // 0 - not tried, 1 - tried and failed, 2 - tried and success + std::vector indexing_lattice; + + uint64_t bunch_id; + uint32_t jf_info; + float receiver_available_send_buffers; + int64_t receiver_aq_dev_delay; + + uint64_t timestamp; + uint32_t timestamp_base; + + uint32_t storage_cell; + + uint32_t exptime; + uint32_t exptime_base; + + std::string series_unique_id; + uint64_t series_id; +}; struct GoniometerAxis { float increment; @@ -99,4 +136,19 @@ struct StartMessage { } }; -#endif //JUNGFRAUJOCH_STARTMESSAGE_H +struct EndMessage { + uint64_t number_of_images; + uint64_t max_receiver_delay; + float efficiency; + + bool write_master_file; + + std::string end_date; + + std::string series_unique_id; + uint64_t series_id; + + std::map> rad_int_result; +}; + +#endif //JUNGFRAUJOCH_CBORMESSAGES_H diff --git a/frame_serialize/CMakeLists.txt b/frame_serialize/CMakeLists.txt index 0d9b62ee..c4d541f8 100644 --- a/frame_serialize/CMakeLists.txt +++ b/frame_serialize/CMakeLists.txt @@ -1,7 +1,6 @@ ADD_LIBRARY(FrameSerialize STATIC JFJochFrameSerializer.cpp JFJochFrameSerializer.h JFJochFrameDeserializer.cpp JFJochFrameDeserializer.h - ImageMessage.h tinycbor/src/cborparser_dup_string.c tinycbor/src/cborencoder.c tinycbor/src/cborencoder_close_container_checked.c @@ -11,4 +10,4 @@ ADD_LIBRARY(FrameSerialize STATIC tinycbor/src/cborpretty.c tinycbor/src/cborerrorstrings.c tinycbor/src/cbor.h - tinycbor/src/tinycbor-version.h CborErr.h StartMessage.h EndMessage.h CborUtil.h) + tinycbor/src/tinycbor-version.h CborErr.h CborUtil.h CBORMessages.h) diff --git a/frame_serialize/EndMessage.h b/frame_serialize/EndMessage.h deleted file mode 100644 index e6bb462c..00000000 --- a/frame_serialize/EndMessage.h +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (2019-2022) Paul Scherrer Institute -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef JUNGFRAUJOCH_ENDMESSAGE_H -#define JUNGFRAUJOCH_ENDMESSAGE_H - -#include -#include - -struct EndMessage { - uint64_t number_of_images; - uint64_t max_receiver_delay; - float efficiency; - - bool write_master_file; - - std::string end_date; - - std::string series_unique_id; - uint64_t series_id; - - std::map> rad_int_result; -}; - -#endif //JUNGFRAUJOCH_ENDMESSAGE_H diff --git a/frame_serialize/ImageMessage.h b/frame_serialize/ImageMessage.h deleted file mode 100644 index 741e668f..00000000 --- a/frame_serialize/ImageMessage.h +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (2019-2022) Paul Scherrer Institute -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef JUNGFRAUJOCH_IMAGEMESSAGE_H -#define JUNGFRAUJOCH_IMAGEMESSAGE_H - -#include -#include -#include -#include -#include "../compression/CompressionAlgorithmEnum.h" -#include "../common/SpotToSave.h" - -struct CBORImage { - const uint8_t *data; - size_t size; // Including compression - size_t xpixel; - size_t ypixel; - size_t pixel_depth_bytes; - bool pixel_is_signed; - bool pixel_is_float = false; - CompressionAlgorithm algorithm; - std::string channel; -}; - -struct DataMessage { - int64_t number = INT64_MIN; - CBORImage image; - std::vector spots; - std::vector rad_int_profile; - uint64_t indexing_result; // 0 - not tried, 1 - tried and failed, 2 - tried and success - std::vector indexing_lattice; - - uint64_t bunch_id; - uint32_t jf_info; - float receiver_available_send_buffers; - int64_t receiver_aq_dev_delay; - - uint64_t timestamp; - uint32_t timestamp_base; - - uint32_t storage_cell; - - uint32_t exptime; - uint32_t exptime_base; - - std::string series_unique_id; - uint64_t series_id; -}; - -#endif //JUNGFRAUJOCH_IMAGEMESSAGE_H diff --git a/frame_serialize/JFJochFrameDeserializer.h b/frame_serialize/JFJochFrameDeserializer.h index 748b1948..04ac9aee 100644 --- a/frame_serialize/JFJochFrameDeserializer.h +++ b/frame_serialize/JFJochFrameDeserializer.h @@ -11,9 +11,7 @@ #include "../common/SpotToSave.h" #include "tinycbor/src/cbor.h" -#include "EndMessage.h" -#include "StartMessage.h" -#include "ImageMessage.h" +#include "CBORMessages.h" #include class JFJochFrameDeserializer { diff --git a/frame_serialize/JFJochFrameSerializer.h b/frame_serialize/JFJochFrameSerializer.h index 8ecc5472..96a751a7 100644 --- a/frame_serialize/JFJochFrameSerializer.h +++ b/frame_serialize/JFJochFrameSerializer.h @@ -8,9 +8,7 @@ #include #include #include "../common/SpotToSave.h" -#include "StartMessage.h" -#include "EndMessage.h" -#include "ImageMessage.h" +#include "CBORMessages.h" class JFJochFrameSerializer { uint8_t *buffer = nullptr; diff --git a/writer/HDF5DataFile.h b/writer/HDF5DataFile.h index bd43a00e..18924b9d 100644 --- a/writer/HDF5DataFile.h +++ b/writer/HDF5DataFile.h @@ -10,7 +10,7 @@ #include "HDF5Objects.h" #include "../common/SpotToSave.h" -#include "../frame_serialize/ImageMessage.h" +#include "../frame_serialize/CBORMessages.h" struct HDF5DataFileStatistics { std::string filename; diff --git a/writer/HDF5NXmx.h b/writer/HDF5NXmx.h index 291fb895..19c80771 100644 --- a/writer/HDF5NXmx.h +++ b/writer/HDF5NXmx.h @@ -4,8 +4,7 @@ #ifndef JUNGFRAUJOCH_HDF5NXMX_H #define JUNGFRAUJOCH_HDF5NXMX_H -#include "../frame_serialize/StartMessage.h" -#include "../frame_serialize/EndMessage.h" +#include "../frame_serialize/CBORMessages.h" #include "HDF5Objects.h" diff --git a/writer/HDF5Writer.h b/writer/HDF5Writer.h index a85fbd10..d23d78f3 100644 --- a/writer/HDF5Writer.h +++ b/writer/HDF5Writer.h @@ -7,8 +7,7 @@ #include #include "HDF5DataFile.h" -#include "../frame_serialize/StartMessage.h" -#include "../frame_serialize/ImageMessage.h" +#include "../frame_serialize/CBORMessages.h" class HDF5Writer { std::vector > files;