CBOR: Keep base for exptime and timestamp in the ImageMessage structure
This commit is contained in:
@@ -156,6 +156,15 @@ inline void CBOR_ENC(CborEncoder &encoder, const char* key, const std::vector<fl
|
||||
cborErr(cbor_encoder_close_container(&encoder, &arrayEncoder));
|
||||
}
|
||||
|
||||
inline void CBOR_ENC_RATIONAL(CborEncoder &encoder, const char* key, uint64_t numerator, uint64_t denominator) {
|
||||
CborEncoder arrayEncoder;
|
||||
cborErr(cbor_encode_text_stringz(&encoder, key));
|
||||
cborErr(cbor_encoder_create_array(&encoder, &arrayEncoder, 2));
|
||||
cborErr(cbor_encode_uint(&arrayEncoder, numerator));
|
||||
cborErr(cbor_encode_uint(&arrayEncoder, denominator));
|
||||
cborErr(cbor_encoder_close_container(&encoder, &arrayEncoder));
|
||||
}
|
||||
|
||||
inline void CBOR_ENC_RAD_INT_RESULT(CborEncoder &encoder, const char* key,
|
||||
const std::map<std::string, std::vector<float>> &rad_int_result) {
|
||||
CborEncoder mapEncoder;
|
||||
@@ -404,24 +413,28 @@ void JFJochFrameSerializer::SerializeImage(const DataMessage& message) {
|
||||
cbor_encoder_init(&encoder, buffer, max_buffer_size, 0);
|
||||
|
||||
cborErr(cbor_encode_tag(&encoder, CborSignatureTag ));
|
||||
cborErr(cbor_encoder_create_map(&encoder, &mapEncoder, 6));
|
||||
cborErr(cbor_encoder_create_map(&encoder, &mapEncoder, 9));
|
||||
|
||||
CBOR_ENC(mapEncoder, "type", "image");
|
||||
CBOR_ENC(mapEncoder, "series_unique_id", message.series_unique_id);
|
||||
CBOR_ENC(mapEncoder, "series_id", message.series_id);
|
||||
CBOR_ENC(mapEncoder, "image_id", message.number);
|
||||
CBOR_ENC_RATIONAL(mapEncoder, "real_time", message.exptime,
|
||||
message.exptime_base);
|
||||
CBOR_ENC_RATIONAL(mapEncoder, "start_time", message.timestamp,
|
||||
message.timestamp_base);
|
||||
CBOR_ENC_RATIONAL(mapEncoder, "end_time", message.timestamp + message.exptime,
|
||||
message.timestamp_base);
|
||||
|
||||
cborErr(cbor_encode_text_stringz(&mapEncoder, "user_data"));
|
||||
cborErr(cbor_encoder_create_map(&mapEncoder, &userDataMapEncoder, 8));
|
||||
cborErr(cbor_encoder_create_map(&mapEncoder, &userDataMapEncoder, 6));
|
||||
|
||||
CBOR_ENC(userDataMapEncoder, "spots", message.spots);
|
||||
CBOR_ENC(userDataMapEncoder, "rad_int_profile", message.rad_int_profile);
|
||||
CBOR_ENC(userDataMapEncoder, "indexing_result", message.indexing_result);
|
||||
CBOR_ENC(userDataMapEncoder, "bunch_id", message.bunch_id);
|
||||
CBOR_ENC(userDataMapEncoder, "jf_info", (uint64_t) message.jf_info);
|
||||
CBOR_ENC(userDataMapEncoder, "timestamp", message.timestamp);
|
||||
CBOR_ENC(userDataMapEncoder, "storage_cell", (uint64_t) message.storage_cell);
|
||||
CBOR_ENC(userDataMapEncoder, "exptime", (uint64_t) message.exptime);
|
||||
cborErr(cbor_encoder_close_container(&mapEncoder, &userDataMapEncoder));
|
||||
|
||||
CBOR_ENC(mapEncoder, "data", message.image);
|
||||
|
||||
Reference in New Issue
Block a user