From 637b71089969d8f5267fd1a0e4c5eb36692933a2 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Fri, 14 Apr 2023 12:40:09 +0200 Subject: [PATCH] JFJochFrameSerializer: Add bunch_id and jf_info --- frame_serialize/ImageMessage.h | 3 +++ frame_serialize/JFJochFrameDeserializer.cpp | 4 ++++ frame_serialize/JFJochFrameSerializer.cpp | 5 +++-- tests/CBORTest.cpp | 7 ++++++- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/frame_serialize/ImageMessage.h b/frame_serialize/ImageMessage.h index ce7a1659..41233356 100644 --- a/frame_serialize/ImageMessage.h +++ b/frame_serialize/ImageMessage.h @@ -27,6 +27,9 @@ struct DataMessage { std::vector spots; std::vector rad_int_profile; uint64_t indexing_result; // 0 - not tried, 1 - tried and failed, 2 - tried and success + + uint64_t bunch_id; + uint32_t jf_info; }; #endif //JUNGFRAUJOCH_IMAGEMESSAGE_H diff --git a/frame_serialize/JFJochFrameDeserializer.cpp b/frame_serialize/JFJochFrameDeserializer.cpp index b7b1f711..8e4b3694 100644 --- a/frame_serialize/JFJochFrameDeserializer.cpp +++ b/frame_serialize/JFJochFrameDeserializer.cpp @@ -338,6 +338,10 @@ bool JFJochFrameDeserializer::ProcessImageMapElement(CborValue &value) { GetCBORFloatArray(value, data_message.rad_int_profile); else if (key == "indexing_result") data_message.indexing_result = GetCBORUInt(value); + else if (key == "jf_info") + data_message.jf_info = GetCBORUInt(value) & UINT32_MAX; + else if (key == "bunch_id") + data_message.bunch_id = GetCBORUInt(value); else cbor_value_advance(&value); return true; diff --git a/frame_serialize/JFJochFrameSerializer.cpp b/frame_serialize/JFJochFrameSerializer.cpp index d05efab8..67d3bb16 100644 --- a/frame_serialize/JFJochFrameSerializer.cpp +++ b/frame_serialize/JFJochFrameSerializer.cpp @@ -363,7 +363,7 @@ void JFJochFrameSerializer::SerializeImage(const DataMessage& message) { CborEncoder encoder, mapEncoder; cbor_encoder_init(&encoder, buffer.data(), buffer.size(), 0); - cborErr(cbor_encoder_create_map(&encoder, &mapEncoder, 6)); + cborErr(cbor_encoder_create_map(&encoder, &mapEncoder, 8)); CBOR_ENC(mapEncoder, "type", "image"); CBOR_ENC(mapEncoder, "image_id", message.number); @@ -371,7 +371,8 @@ void JFJochFrameSerializer::SerializeImage(const DataMessage& message) { CBOR_ENC(mapEncoder, "spots", message.spots); CBOR_ENC(mapEncoder, "rad_int_profile", message.rad_int_profile); CBOR_ENC(mapEncoder, "indexing_result", message.indexing_result); - + CBOR_ENC(mapEncoder, "bunch_id", message.bunch_id); + CBOR_ENC(mapEncoder, "jf_info", (int64_t) message.jf_info); cborErr(cbor_encoder_close_container(&encoder, &mapEncoder)); buffer.resize(cbor_encoder_get_buffer_size(&encoder, buffer.data())); diff --git a/tests/CBORTest.cpp b/tests/CBORTest.cpp index 1fef64b5..1f10d1c9 100644 --- a/tests/CBORTest.cpp +++ b/tests/CBORTest.cpp @@ -171,7 +171,9 @@ TEST_CASE("CBORSerialize_Image", "[CBOR]") { .number = 456, .image = image, .spots = spots, - .indexing_result = 1 + .indexing_result = 1, + .bunch_id = UINT64_MAX, + .jf_info = UINT32_MAX }; REQUIRE_NOTHROW(serializer.SerializeImage(message)); @@ -192,6 +194,9 @@ TEST_CASE("CBORSerialize_Image", "[CBOR]") { REQUIRE(image_array.indexing_result == message.indexing_result); REQUIRE(image_array.number == 456); REQUIRE(memcmp(image_array.image.data, test.data(), test.size()) == 0); + + REQUIRE(image_array.bunch_id == message.bunch_id); + REQUIRE(image_array.jf_info == message.jf_info); } TEST_CASE("CBORSerialize_Image_2", "[CBOR]") {