FrameSerializer: hide image data in user_data in CBOR

This commit is contained in:
2023-04-18 13:35:58 +02:00
parent 001a7d86fc
commit 962edaa4ad
3 changed files with 46 additions and 26 deletions

View File

@@ -321,8 +321,31 @@ void JFJochFrameDeserializer::ProcessDetTranslation(CborValue &value) {
cborErr(cbor_value_leave_container(&value, &array_value));
}
void JFJochFrameDeserializer::ProcessImageMessageUserDataElement(CborValue &value) {
CborValue map_value;
cborErr(cbor_value_enter_container(&value, &map_value));
while (!cbor_value_at_end(&map_value)) {
auto key = GetCBORString(map_value);
bool JFJochFrameDeserializer::ProcessImageMapElement(CborValue &value) {
if (key == "spots")
GetCBORSpots(map_value);
else if (key == "rad_int_profile")
GetCBORFloatArray(map_value, data_message.rad_int_profile);
else if (key == "indexing_result")
data_message.indexing_result = GetCBORUInt(map_value);
else if (key == "jf_info")
data_message.jf_info = GetCBORUInt(map_value) & UINT32_MAX;
else if (key == "bunch_id")
data_message.bunch_id = GetCBORUInt(map_value);
else if (key == "timestamp")
data_message.timestamp = GetCBORUInt(map_value);
else
cbor_value_advance(&map_value);
}
cborErr(cbor_value_leave_container(&value, &map_value));
}
bool JFJochFrameDeserializer::ProcessImageMessageElement(CborValue &value) {
if (cbor_value_at_end(&value))
return false;
else {
@@ -332,18 +355,8 @@ bool JFJochFrameDeserializer::ProcessImageMapElement(CborValue &value) {
data_message.number = GetCBORInt(value);
else if (key == "data")
ProcessImageData(value);
else if (key == "spots")
GetCBORSpots(value);
else if (key == "rad_int_profile")
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 if (key == "timestamp")
data_message.timestamp = GetCBORUInt(value);
else if (key == "user_data")
ProcessImageMessageUserDataElement(value);
else
cbor_value_advance(&value);
return true;
@@ -408,7 +421,7 @@ void JFJochFrameDeserializer::ProcessUnitCellElement(CborValue &value) {
cborErr(cbor_value_leave_container(&value, &map_value));
}
void JFJochFrameDeserializer::ProcessUserDataElement(CborValue &value) {
void JFJochFrameDeserializer::ProcessStartMessageUserDataElement(CborValue &value) {
CborValue map_value;
cborErr(cbor_value_enter_container(&value, &map_value));
while (!cbor_value_at_end(&map_value)) {
@@ -519,7 +532,7 @@ bool JFJochFrameDeserializer::ProcessStartMessageElement(CborValue &value) {
else if (key == "arm_date")
start_message.arm_date = GetCBORString(value);
else if (key == "user_data")
ProcessUserDataElement(value);
ProcessStartMessageUserDataElement(value);
else
cbor_value_advance(&value);
return true;
@@ -579,7 +592,7 @@ std::unique_lock<std::mutex> ul(m);
DecodeType(map_value);
switch (msg_type) {
case Type::IMAGE:
while (ProcessImageMapElement(map_value));
while (ProcessImageMessageElement(map_value));
break;
case Type::START:
start_message = StartMessage{