From abb26adc764e0b538dda8e83d78f855d3faa9c04 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Tue, 13 Jul 2021 17:14:29 +0200 Subject: [PATCH] fixes --- slsReceiverSoftware/src/HDF5VirtualFile.cpp | 5 +- slsReceiverSoftware/src/MasterAttributes.h | 104 +++++++++++++------- 2 files changed, 70 insertions(+), 39 deletions(-) diff --git a/slsReceiverSoftware/src/HDF5VirtualFile.cpp b/slsReceiverSoftware/src/HDF5VirtualFile.cpp index 6b8b7c74f..9a988e275 100644 --- a/slsReceiverSoftware/src/HDF5VirtualFile.cpp +++ b/slsReceiverSoftware/src/HDF5VirtualFile.cpp @@ -86,11 +86,8 @@ void HDF5VirtualFile::CreateVirtualFile( DSetCreatPropList plist; plist.setFillValue(dataType, &fill_value); - // property list for parameters (fill value and datatype) + // property list for parameters (datatype) std::vector plistPara(paraSize); - for (unsigned int p = 0; p < paraSize; ++p) { - plistPara[p].setFillValue(parameterDataTypes[p], &fill_value); - } // hyperslab int numMajorHyperslab = numImagesCaught / maxFramesPerFile; diff --git a/slsReceiverSoftware/src/MasterAttributes.h b/slsReceiverSoftware/src/MasterAttributes.h index b5b2b2f5c..14ecb1849 100644 --- a/slsReceiverSoftware/src/MasterAttributes.h +++ b/slsReceiverSoftware/src/MasterAttributes.h @@ -127,6 +127,8 @@ struct MasterAttributes { }; void WriteHDF5Attributes(H5File *fd, Group *group) { + char c[1024]; + memset(c, 0, sizeof(c)); // clang-format off // version { @@ -142,24 +144,27 @@ struct MasterAttributes { StrType strdatatype(PredType::C_S1, 256); DataSpace dataspace = DataSpace(H5S_SCALAR); DataSet dataset = - group->createDataSet("Timestamp", strdatatype, dataspace); - dataset.write(std::string(ctime(&t)), strdatatype); + group->createDataSet("Timestamp", strdatatype, dataspace); + sls::strcpy_safe(c, std::string(ctime(&t))); + dataset.write(c, strdatatype); } // detector type { DataSpace dataspace = DataSpace(H5S_SCALAR); StrType strdatatype(PredType::C_S1, 256); DataSet dataset = - group->createDataSet("Detector Type", strdatatype, dataspace); - dataset.write(sls::ToString(detType), strdatatype); + group->createDataSet("Detector Type", strdatatype, dataspace); + sls::strcpy_safe(c, sls::ToString(detType)); + dataset.write(c, strdatatype); } // timing mode { DataSpace dataspace = DataSpace(H5S_SCALAR); StrType strdatatype(PredType::C_S1, 256); DataSet dataset = - group->createDataSet("Timing Mode", strdatatype, dataspace); - dataset.write(sls::ToString(timingMode), strdatatype); + group->createDataSet("Timing Mode", strdatatype, dataspace); + sls::strcpy_safe(c, sls::ToString(timingMode)); + dataset.write(c, strdatatype); } // Image Size { @@ -170,8 +175,9 @@ struct MasterAttributes { DataSpace dataspaceAttr = DataSpace(H5S_SCALAR); StrType strdatatype(PredType::C_S1, 256); Attribute attribute = - dataset.createAttribute("Unit", strdatatype, dataspaceAttr); - attribute.write(strdatatype, std::string("bytes")); + dataset.createAttribute("Unit", strdatatype, dataspaceAttr); + sls::strcpy_safe(c, "bytes"); + attribute.write(strdatatype, c); } //TODO: make this into an array? // x @@ -200,8 +206,9 @@ struct MasterAttributes { DataSpace dataspace = DataSpace(H5S_SCALAR); StrType strdatatype(PredType::C_S1, 256); DataSet dataset = - group->createDataSet("Frame Discard Policy", strdatatype, dataspace); - dataset.write(sls::ToString(frameDiscardMode), strdatatype); + group->createDataSet("Frame Discard Policy", strdatatype, dataspace); + sls::strcpy_safe(c, sls::ToString(frameDiscardMode)); + dataset.write(c, strdatatype); } // Frame Padding { @@ -215,8 +222,9 @@ struct MasterAttributes { DataSpace dataspace = DataSpace(H5S_SCALAR); StrType strdatatype(PredType::C_S1, 256); DataSet dataset = - group->createDataSet("Scan Parameters", strdatatype, dataspace); - dataset.write(sls::ToString(scanParams), strdatatype); + group->createDataSet("Scan Parameters", strdatatype, dataspace); + sls::strcpy_safe(c, sls::ToString(scanParams)); + dataset.write(c, strdatatype); } // Total Frames { @@ -231,8 +239,9 @@ struct MasterAttributes { StrType strdatatype(PredType::C_S1, json.length()); DataSpace dataspace = DataSpace(H5S_SCALAR); DataSet dataset = - group->createDataSet("Additional JSON Header", strdatatype, dataspace); - dataset.write(sls::ToString(additionalJsonHeader), strdatatype); + group->createDataSet("Additional JSON Header", strdatatype, dataspace); + sls::strcpy_safe(c, sls::ToString(additionalJsonHeader)); + dataset.write(c, strdatatype); } }; @@ -240,16 +249,22 @@ struct MasterAttributes { DataSpace dataspace = DataSpace(H5S_SCALAR); StrType strdatatype(PredType::C_S1, 256); DataSet dataset = - group->createDataSet("Exposure Time", strdatatype, dataspace); - dataset.write(sls::ToString(exptime), strdatatype); + group->createDataSet("Exposure Time", strdatatype, dataspace); + char c[1024]; + memset(c, 0, sizeof(c)); + sls::strcpy_safe(c, sls::ToString(exptime)); + dataset.write(c, strdatatype); }; void WriteHDF5Period(H5File *fd, Group *group) { DataSpace dataspace = DataSpace(H5S_SCALAR); StrType strdatatype(PredType::C_S1, 256); DataSet dataset = - group->createDataSet("Acquisition Period", strdatatype, dataspace); - dataset.write(sls::ToString(period), strdatatype); + group->createDataSet("Acquisition Period", strdatatype, dataspace); + char c[1024]; + memset(c, 0, sizeof(c)); + sls::strcpy_safe(c, sls::ToString(period)); + dataset.write(c, strdatatype); }; void WriteHDF5DynamicRange(H5File *fd, Group *group) { @@ -260,8 +275,9 @@ struct MasterAttributes { DataSpace dataspaceAttr = DataSpace(H5S_SCALAR); StrType strdatatype(PredType::C_S1, 256); Attribute attribute = - dataset.createAttribute("Unit", strdatatype, dataspaceAttr); - attribute.write(strdatatype, std::string("bits")); + dataset.createAttribute("Unit", strdatatype, dataspaceAttr); + char c[1024] = "bits"; + attribute.write( strdatatype, c); }; void WriteHDF5TenGiga(H5File *fd, Group *group) { @@ -371,6 +387,8 @@ class EigerMasterAttributes : public MasterAttributes { MasterAttributes::WriteHDF5TenGiga(fd, group); MasterAttributes::WriteHDF5Exptime(fd, group); MasterAttributes::WriteHDF5Period(fd, group); + char c[1024]; + memset(c, 0, sizeof(c)); // threshold { DataSpace dataspace = DataSpace(H5S_SCALAR); @@ -380,8 +398,9 @@ class EigerMasterAttributes : public MasterAttributes { DataSpace dataspaceAttr = DataSpace(H5S_SCALAR); StrType strdatatype(PredType::C_S1, 256); Attribute attribute = - dataset.createAttribute("Unit", strdatatype, dataspaceAttr); - attribute.write(strdatatype, std::string("eV")); + dataset.createAttribute("Unit", strdatatype, dataspaceAttr); + sls::strcpy_safe(c, "eV"); + attribute.write(strdatatype, c); } // SubExptime { @@ -389,21 +408,23 @@ class EigerMasterAttributes : public MasterAttributes { StrType strdatatype(PredType::C_S1, 256); DataSet dataset = group->createDataSet("Sub Exposure Time", strdatatype, dataspace); - dataset.write(sls::ToString(subExptime), strdatatype); + sls::strcpy_safe(c, sls::ToString(subExptime)); + dataset.write(c, strdatatype); } // SubPeriod { DataSpace dataspace = DataSpace(H5S_SCALAR); StrType strdatatype(PredType::C_S1, 256); DataSet dataset = - group->createDataSet("Sub Period", strdatatype, dataspace); - dataset.write(sls::ToString(subPeriod), strdatatype); + group->createDataSet("Sub Period", strdatatype, dataspace); + sls::strcpy_safe(c, sls::ToString(subPeriod)); + dataset.write(c, strdatatype); } // Quad { DataSpace dataspace = DataSpace(H5S_SCALAR); DataSet dataset = - group->createDataSet("Quad", PredType::NATIVE_INT, dataspace); + group->createDataSet("Quad", PredType::NATIVE_INT, dataspace); dataset.write(&quad, PredType::NATIVE_INT); } // numLinesReadout @@ -419,7 +440,8 @@ class EigerMasterAttributes : public MasterAttributes { StrType strdatatype(PredType::C_S1, 1024); DataSet dataset = group->createDataSet("Rate Corrections", strdatatype, dataspace); - dataset.write(sls::ToString(ratecorr), strdatatype); + sls::strcpy_safe(c, sls::ToString(ratecorr)); + dataset.write(c, strdatatype); } }; #endif @@ -462,6 +484,8 @@ class Mythen3MasterAttributes : public MasterAttributes { MasterAttributes::WriteHDF5DynamicRange(fd, group); MasterAttributes::WriteHDF5TenGiga(fd, group); MasterAttributes::WriteHDF5Period(fd, group); + char c[1024]; + memset(c, 0, sizeof(c)); // Counter Mask { DataSpace dataspace = DataSpace(H5S_SCALAR); @@ -475,7 +499,8 @@ class Mythen3MasterAttributes : public MasterAttributes { StrType strdatatype(PredType::C_S1, 256); DataSet dataset = group->createDataSet("Exposure Time1", strdatatype, dataspace); - dataset.write(sls::ToString(exptime1), strdatatype); + sls::strcpy_safe(c, sls::ToString(exptime1)); + dataset.write(c, strdatatype); } // Exptime2 { @@ -483,7 +508,8 @@ class Mythen3MasterAttributes : public MasterAttributes { StrType strdatatype(PredType::C_S1, 256); DataSet dataset = group->createDataSet("Exposure Time2", strdatatype, dataspace); - dataset.write(sls::ToString(exptime2), strdatatype); + sls::strcpy_safe(c, sls::ToString(exptime2)); + dataset.write(c, strdatatype); } // Exptime3 { @@ -491,7 +517,8 @@ class Mythen3MasterAttributes : public MasterAttributes { StrType strdatatype(PredType::C_S1, 256); DataSet dataset = group->createDataSet("Exposure Time3", strdatatype, dataspace); - dataset.write(sls::ToString(exptime3), strdatatype); + sls::strcpy_safe(c, sls::ToString(exptime3)); + dataset.write(c, strdatatype); } // GateDelay1 { @@ -499,7 +526,8 @@ class Mythen3MasterAttributes : public MasterAttributes { StrType strdatatype(PredType::C_S1, 256); DataSet dataset = group->createDataSet("Gate Delay1", strdatatype, dataspace); - dataset.write(sls::ToString(gateDelay1), strdatatype); + sls::strcpy_safe(c, sls::ToString(gateDelay1)); + dataset.write(c, strdatatype); } // GateDelay2 { @@ -507,7 +535,8 @@ class Mythen3MasterAttributes : public MasterAttributes { StrType strdatatype(PredType::C_S1, 256); DataSet dataset = group->createDataSet("Gate Delay2", strdatatype, dataspace); - dataset.write(sls::ToString(gateDelay2), strdatatype); + sls::strcpy_safe(c, sls::ToString(gateDelay2)); + dataset.write(c, strdatatype); } // GateDelay3 { @@ -515,7 +544,8 @@ class Mythen3MasterAttributes : public MasterAttributes { StrType strdatatype(PredType::C_S1, 256); DataSet dataset = group->createDataSet("Gate Delay3", strdatatype, dataspace); - dataset.write(sls::ToString(gateDelay3), strdatatype); + sls::strcpy_safe(c, sls::ToString(gateDelay3)); + dataset.write(c, strdatatype); } // Gates { @@ -530,7 +560,8 @@ class Mythen3MasterAttributes : public MasterAttributes { StrType strdatatype(PredType::C_S1, 1024); DataSet dataset = group->createDataSet("Threshold Energies", strdatatype, dataspace); - dataset.write(sls::ToString(thresholdAllEnergyeV), strdatatype); + sls::strcpy_safe(c, sls::ToString(thresholdAllEnergyeV)); + dataset.write(c, strdatatype); } }; #endif @@ -562,7 +593,10 @@ class Gotthard2MasterAttributes : public MasterAttributes { StrType strdatatype(PredType::C_S1, 256); DataSet dataset = group->createDataSet("Burst Mode", strdatatype, dataspace); - dataset.write(sls::ToString(burstMode), strdatatype); + char c[1024]; + memset(c, 0, sizeof(c)); + sls::strcpy_safe(c, sls::ToString(burstMode)); + dataset.write(c, strdatatype); } }; #endif