JFJochReceiver: ADU histogram saved on per module basis at the end of the measurement (but not on per image basis)

This commit is contained in:
2023-10-21 22:31:43 +02:00
parent 99741ae5c5
commit 624c928c84
10 changed files with 95 additions and 20 deletions
+14 -3
View File
@@ -157,6 +157,16 @@ inline void CBOR_ENC_RAD_INT_RESULT(CborEncoder &encoder, const char* key,
cborErr(cbor_encoder_close_container(&encoder, &mapEncoder));
}
inline void CBOR_ENC_ADU_HIST(CborEncoder &encoder, const char* key,
const std::map<std::string, std::vector<uint64_t>> &adu_histogram) {
CborEncoder mapEncoder;
cborErr(cbor_encode_text_stringz(&encoder, key));
cborErr(cbor_encoder_create_map(&encoder, &mapEncoder, adu_histogram.size()));
for (auto &[map_key, map_val]: adu_histogram)
CBOR_ENC(mapEncoder, map_key.c_str(), map_val);
cborErr(cbor_encoder_close_container(&encoder, &mapEncoder));
}
inline void CBOR_ENC(CborEncoder &encoder, const char* key, const std::vector<SpotToSave>& spots) {
CborEncoder arrayEncoder;
@@ -389,13 +399,15 @@ void JFJochFrameSerializer::SerializeSequenceEnd(const EndMessage& message) {
CBOR_ENC(mapEncoder, "end_date", message.end_date);
cborErr(cbor_encode_text_stringz(&mapEncoder, "user_data"));
cborErr(cbor_encoder_create_map(&mapEncoder, &userDataMapEncoder, 6));
cborErr(cbor_encoder_create_map(&mapEncoder, &userDataMapEncoder, 8));
CBOR_ENC(userDataMapEncoder, "magic_number", user_data_magic_number);
CBOR_ENC(userDataMapEncoder, "number_of_images", message.number_of_images);
CBOR_ENC(userDataMapEncoder, "max_receiver_delay", message.max_receiver_delay);
CBOR_ENC(userDataMapEncoder, "receiver_efficiency", message.efficiency);
CBOR_ENC(userDataMapEncoder, "write_master_file", message.write_master_file);
CBOR_ENC_RAD_INT_RESULT(userDataMapEncoder, "rad_int_result", message.rad_int_result);
CBOR_ENC_ADU_HIST(userDataMapEncoder, "adu_histogram", message.adu_histogram);
CBOR_ENC(userDataMapEncoder, "adu_histogram_bin_width", message.adu_histogram_bin_width);
cborErr(cbor_encoder_close_container(&mapEncoder, &userDataMapEncoder));
cborErr(cbor_encoder_close_container(&encoder, &mapEncoder));
@@ -422,7 +434,7 @@ void JFJochFrameSerializer::SerializeImage(const DataMessage& message) {
message.timestamp_base);
cborErr(cbor_encode_text_stringz(&mapEncoder, "user_data"));
cborErr(cbor_encoder_create_map(&mapEncoder, &userDataMapEncoder, 11));
cborErr(cbor_encoder_create_map(&mapEncoder, &userDataMapEncoder, 10));
CBOR_ENC(userDataMapEncoder, "magic_number", user_data_magic_number);
CBOR_ENC(userDataMapEncoder, "spots", message.spots);
@@ -434,7 +446,6 @@ void JFJochFrameSerializer::SerializeImage(const DataMessage& message) {
CBOR_ENC(userDataMapEncoder, "receiver_available_send_buffers", message.receiver_available_send_buffers);
CBOR_ENC(userDataMapEncoder, "receiver_aq_dev_delay", message.receiver_aq_dev_delay);
CBOR_ENC(userDataMapEncoder, "storage_cell", (uint64_t) message.storage_cell);
CBOR_ENC(userDataMapEncoder, "adu_histogram", message.adu_histogram);
cborErr(cbor_encoder_close_container(&mapEncoder, &userDataMapEncoder));