// SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #pragma once #include #include #include #include #include "../common/SpotToSave.h" #include "tinycbor/cbor.h" #include "../common/JFJochMessages.h" #include struct CBORStream2DeserializerOutput { CBORImageType msg_type = CBORImageType::NONE; std::optional data_message; std::optional start_message; std::optional end_message; std::optional calibration; std::optional metadata; CBORStream2DeserializerOutput() = default; explicit CBORStream2DeserializerOutput(const StartMessage& msg) { msg_type = CBORImageType::START; start_message = msg; } explicit CBORStream2DeserializerOutput(const EndMessage& msg) { msg_type = CBORImageType::END; end_message = msg; } explicit CBORStream2DeserializerOutput(const DataMessage& msg) { msg_type = CBORImageType::IMAGE; data_message = msg; } }; std::shared_ptr CBORStream2Deserialize(const uint8_t *msg, size_t msg_size); std::shared_ptr CBORStream2Deserialize(const std::vector& msg); std::shared_ptr CBORStream2Deserialize(const std::string& msg);