diff --git a/frame_serialize/JFJochFrameDeserializer.cpp b/frame_serialize/JFJochFrameDeserializer.cpp index a7c46eb5..b89e3f8f 100644 --- a/frame_serialize/JFJochFrameDeserializer.cpp +++ b/frame_serialize/JFJochFrameDeserializer.cpp @@ -472,6 +472,8 @@ void JFJochFrameDeserializer::ProcessStartMessageUserDataElement(CborValue &valu start_message.min_value = GetCBORInt(map_value); else if (key == "rad_int_bin_number") start_message.rad_int_bin_number = GetCBORInt(map_value); + else if (key == "rad_int_bin_to_q") + GetCBORFloatArray(map_value, start_message.rad_int_bin_to_q); else if (key == "summation") start_message.summation = GetCBORUInt(map_value); else if (key == "storage_cell_number") diff --git a/frame_serialize/JFJochFrameSerializer.cpp b/frame_serialize/JFJochFrameSerializer.cpp index 51d59eb8..786a9e98 100644 --- a/frame_serialize/JFJochFrameSerializer.cpp +++ b/frame_serialize/JFJochFrameSerializer.cpp @@ -251,7 +251,7 @@ inline void CBOR_ENC_USER_DATA(CborEncoder &encoder, const StartMessage& message CborEncoder mapEncoder; cborErr(cbor_encode_text_stringz(&encoder, "user_data")); - cborErr(cbor_encoder_create_map(&encoder, &mapEncoder, 18)); + cborErr(cbor_encoder_create_map(&encoder, &mapEncoder, 19)); CBOR_ENC(mapEncoder, "file_prefix", message.file_prefix); CBOR_ENC(mapEncoder, "sample_name", message.sample_name); @@ -283,6 +283,7 @@ inline void CBOR_ENC_USER_DATA(CborEncoder &encoder, const StartMessage& message CBOR_ENC(mapEncoder, "instrument_name", message.instrument_name); CBOR_ENC(mapEncoder, "instrument_name_short", message.instrument_name_short); CBOR_ENC(mapEncoder, "rad_int_bin_number", message.rad_int_bin_number); + CBOR_ENC(mapEncoder, "rad_int_bin_to_q", message.rad_int_bin_to_q); CBOR_ENC(mapEncoder, "summation", message.summation); cborErr(cbor_encoder_close_container(&encoder, &mapEncoder)); } diff --git a/frame_serialize/StartMessage.h b/frame_serialize/StartMessage.h index c77330fa..e2a669e3 100644 --- a/frame_serialize/StartMessage.h +++ b/frame_serialize/StartMessage.h @@ -77,6 +77,8 @@ struct StartMessage { uint64_t rad_int_bin_number; uint64_t summation; + + std::vector rad_int_bin_to_q; }; #endif //JUNGFRAUJOCH_STARTMESSAGE_H diff --git a/receiver/JFJochReceiver.cpp b/receiver/JFJochReceiver.cpp index 6201bbce..7b6a8c6b 100644 --- a/receiver/JFJochReceiver.cpp +++ b/receiver/JFJochReceiver.cpp @@ -141,9 +141,10 @@ JFJochReceiver::JFJochReceiver(const JFJochProtoBuf::ReceiverInput &settings, if (calib) message.pixel_mask["sc0"] = calib->CalculateNexusMask(experiment, 0); - if (rad_int_mapping) + if (rad_int_mapping) { message.rad_int_bin_number = rad_int_mapping->GetBinNumber(); - else + message.rad_int_bin_to_q = rad_int_mapping->GetBinToQ(); + } else message.rad_int_bin_number = 0; image_pusher.StartDataCollection(message); diff --git a/tests/CBORTest.cpp b/tests/CBORTest.cpp index e82c91a6..29ff78eb 100644 --- a/tests/CBORTest.cpp +++ b/tests/CBORTest.cpp @@ -57,7 +57,8 @@ TEST_CASE("CBORSerialize_Start", "[CBOR]") { .instrument_name = "X06SA", .instrument_name_short = "PXIII", .rad_int_bin_number = 35, - .summation = 567 + .summation = 567, + .rad_int_bin_to_q = {0.1, 0.2, 0.3, 0.5} }; message.pixel_mask["sc0"] = std::vector(456*457, 15); @@ -110,6 +111,7 @@ TEST_CASE("CBORSerialize_Start", "[CBOR]") { CHECK(output_message.instrument_name_short == message.instrument_name_short); CHECK(output_message.rad_int_bin_number == message.rad_int_bin_number); CHECK(output_message.summation == message.summation); + CHECK(output_message.rad_int_bin_to_q == message.rad_int_bin_to_q); for (int i = 0; i < 3; i++) CHECK(output_message.detector_translation[i] == message.detector_translation[i]); @@ -119,6 +121,7 @@ TEST_CASE("CBORSerialize_Start", "[CBOR]") { REQUIRE(output_message.goniometer.contains("omega")); CHECK(output_message.goniometer["omega"].increment == 0.1f); CHECK(output_message.goniometer["omega"].start == 10.0f); + } TEST_CASE("CBORSerialize_End", "[CBOR]") {