17 #ifndef DDTPUBLISHERSIMULATOR_HPP_
18 #define DDTPUBLISHERSIMULATOR_HPP_
20 #include <boost/bind/bind.hpp>
21 #include <boost/filesystem.hpp>
22 #include <boost/signals2/signal.hpp>
37 namespace datatransfer = ::elt::ddt::datatransfer;
40 using namespace boost::filesystem;
78 bool Init(const
int argc,
char** argv);
84 int RunImageTransfer();
90 int RunOscilloscopeTransfer();
96 int RunMultiDimensionalArrayTransfer();
102 int RunNumericalSampleArrayTransfer();
108 int RunSegmentedImageTransfer();
114 int RunUnsignedIntegerTransfer(const
unsigned int numBits);
120 std::
string broker_uri;
121 std::
string data_stream_identifier;
122 int publishing_interval;
123 int num_samples_in_buffer;
124 std::
string image_folder;
128 const
int LATENCY = 10000;
129 const
int DEADLINE = 10;
136 bool CheckBytesPerPixel(std::vector<std::
string>& file_list);
138 void DetermineBytesPerPixelAndDataType(
139 const cpl_propertylist* const property_list, const cpl_image* const image,
141 cpl_type* const cplImageType);
143 bool GetSimulationData(std::vector<std::
string>& file_list,
144 std::vector<cpl_image*>& images);
146 void FillDataVectors(std::vector<std::vector<uint8_t>>& datavecs,
147 int& max_sample_size, std::vector<cpl_image*>& images,
148 const
int num_images, const cpl_type cplImageType,
151 void FillDataVectorInt(std::vector<std::vector<uint8_t>>& datavecs,
152 cpl_image* const image, const
int vec_elems,
155 void FillDataVectorFloat(std::vector<std::vector<uint8_t>>& datavecs,
156 cpl_image* const image, const
int vec_elems,
159 void FillDataVectorDouble(std::vector<std::vector<uint8_t>>& datavecs,
160 cpl_image* const image, const
int vec_elems,
163 void FillMetaDataWCSItems(const cpl_propertylist* const property_list,
202 void PublishData_ImageTransfer(std::vector<cpl_image*>& images,
204 const uint32_t
data_type, const
int num_images,
205 const
int max_sample_size,
207 std::vector<std::vector<uint8_t>>& datavecs);
212 const
int vec_elems);
214 void PublishData_MultiDimension(const uint32_t bytes_per_value,
219 const std::vector<uint8_t>& datavec,
220 std::vector<std::
string>& descriptions);
222 void PublishData_UnsignedIntegerTransfer(
223 const uint32_t bytes_per_value, const
int dim1, const
int dim2,
225 const
int vec_elems, const std::vector<uint8_t>& datavec,
226 std::vector<std::
string>& descriptions);
228 cpl_propertylist* LoadPropertyList(const std::
string file_name);
230 void LogNoSimDataFolder();
231 void LogNoDirectory();
232 void LogNoSimDataFiles();
234 int CreateAndRegPublisher(const
int vec_elems);
237 const std::vector<uint8_t>& datavec,
238 const int32_t sample_id);
247 std::vector<uint8_t> GetDataVectorOscilloscope(const
int dim1);
248 std::vector<uint8_t> GetDataVectorMultiDimension(const
int dim1,
252 void FillDataVectorNumericalSample(const
int dim1, const
int cnt,
253 std::vector<uint8_t>& datavec);
256 const
int chunk_cnt_x,
257 const
int chunk_cnt_y,
259 std::vector<uint8_t>& datavec) const;