ifw-ccf 6.0.0
 
Loading...
Searching...
No Matches
comAdptSim.hpp
Go to the documentation of this file.
1
6
7#ifndef CCF_CONTROL_COM_ADPT_SIM_HPP_H_
8#define CCF_CONTROL_COM_ADPT_SIM_HPP_H_
9
10#include <vector>
11
14
16
192
193namespace ifw::ccf::control {
194
200 public:
201 ComAdptSim();
202 virtual ~ComAdptSim();
203
204 virtual void InitialiseUser() override;
205
206 virtual void SetDeviceAddressUser(const std::string& address) override;
207
208 virtual void CheckConnectionUser(bool& connected) override;
209
210 virtual void CheckStatusUser(ifw::ccf::HwStatus& status,
211 std::string& message) override;
212
213 virtual void ConnectUser() override;
214
215 virtual void DisconnectUser() override;
216
217 virtual void ReadUser(const std::string& name,
218 ifw::core::utils::param::Parameter& par) override;
219
220 virtual void ReceiveUser(ifw::ccf::common::DataFrame& frame,
221 bool& frame_received,
222 const double timeout,
223 bool& timed_out) override;
224
225 virtual void ScanUser(std::vector<ifw::core::utils::param::Parameter>& pars) override;
226
227 virtual void StartUser() override;
228
229 virtual void StopUser() override;
230
231 virtual void WriteUser(const ifw::core::utils::param::Parameter& par) override;
232
233 virtual void HandleSetupUser() override;
234
235 virtual void HandleParPreWriteUser(ifw::core::utils::param::Parameter& par) override;
236
237 virtual void HandleParPostWriteUser(ifw::core::utils::param::Parameter& par) override;
238
239 virtual void HandleParPostReadUser(ifw::core::utils::param::Parameter& par) override;
240
241 virtual void SetAcqTriggerUser();
242
243 protected:
244
245
246 private:
247 void LoadSimImage();
248 void GenSequenceFromSingleImage(void* source_image, uint32_t image_size);
249 void ReadPatternParams();
250 void GenSimPattern();
251 void GenNextFrame(ifw::ccf::common::DataFrame& frame);
252 void PreprocessAllFrames();
253
254 ifw::ccf::common::DataFrame m_base_frame;
255
256 // Indicates if acquisition is running
257 bool m_acq_active{false};
258 uint64_t m_cam_frame_count; // Frame count (complete frames)
259 uint64_t m_int_frame_count; // Internal frame count, used to index FITS cubes.
260 ifw::ccf::SimType m_sim_type;
261
263 // Input frame used as basis for the simulation:
265 std::string m_sim_filename;
266 ifw::fnd::fits::BitPix m_bitpix;
267 ifw::fnd::datatype::DataType m_in_image_data_type;
268 uint8_t m_in_bytes_per_pixel;
269
270 int32_t m_in_naxis1;
271 int32_t m_in_naxis2;
272 int32_t m_in_naxis3;
274
276 // Pre-processed frame buffer (windowed + binned):
278 std::vector<uint8_t> m_processed_buffer; // All pre-processed frames concatenated
279 uint32_t m_processed_frame_size{0}; // Size of one processed frame in bytes
280 int32_t m_processed_naxis1{0}; // Width after window+binning
281 int32_t m_processed_naxis2{0}; // Height after window+binning
282 int32_t m_processed_naxis3{1}; // Number of frames (from cube)
284
286 // Output frame parameters:
288
289 double m_time_for_last_frame; // Time for generating last frame.
290 double m_expo_time; // Exposure time in seconds.
291 double m_frame_period; // Period for frame generation (1/frame_rate or expo_time).
292
293 // Current ROI (1-based, as per FITS convention):
294 int32_t m_out_win_offset_x{1}; // First pixel = 1
295 int32_t m_out_win_offset_y{1};
296 int32_t m_out_win_width{0};
297 int32_t m_out_win_height{0};
298
299 // Binning factors:
300 int32_t m_bin_x{1};
301 int32_t m_bin_y{1};
302
303 // Gain/sensitivity for scaling pixel values.
304 // Pixel values in input file are assumed to correspond to expo_time=1s.
305 // Output pixel = input_pixel * expo_time * gain (before binning).
306 double m_gain{1.0};
308
310 // Pattern generation parameters:
312 int16_t m_nb_of_planes{10};
313 int16_t m_pattern_width{512};
314 int16_t m_pattern_height{512};
315 int16_t m_max_shift_pr_frame{5};
316 int16_t m_max_shift{50};
317 int16_t m_noise_level{10};
318
319 // Gaussian/MultiGaussian:
320 double m_amplitude{10000.0};
321 double m_sigma{5.0};
322 int16_t m_nb_stars{1};
323
324 // Flat:
325 double m_flat_intensity{1000.0};
326
327 // Grid:
328 int16_t m_grid_spacing{50};
329 double m_spot_size{3.0};
330
331 // Gradient:
333 double m_gradient_start{0.0};
334 double m_gradient_end{10000.0};
335
336 // Ring (defocused star):
337 double m_ring_inner_radius{5.0};
338 double m_ring_outer_radius{10.0};
339
340 // Checkerboard:
341 int16_t m_checker_size{20};
342
343 // Noise-only:
345 double m_noise_mean{1000.0};
346 double m_noise_std{100.0};
347
348 // Grating:
349 double m_grating_dispersion{1.0};
350 double m_grating_wavelength_min{400.0};
351 double m_grating_wavelength_max{700.0};
352 int16_t m_grating_order{1};
353
354 // Target pixel format (from PixelFormat device property):
355 double m_target_max_pixel{65535.0}; // Max pixel value based on bit depth
357
358 };
359
360}
361
362#endif // CCF_CONTROL_COM_ADPT_SIM_HPP_H_
Class to be used as parent for CCF Communication Adapters.
Definition comAdptBase.hpp:48
Frame class used to store the data and metadata for one frames received from the camera.
Definition dataFrame.hpp:20
virtual void StopUser() override
Definition comAdptSim.cpp:161
virtual void CheckStatusUser(ifw::ccf::HwStatus &status, std::string &message) override
Definition comAdptSim.cpp:73
virtual void DisconnectUser() override
Definition comAdptSim.cpp:83
virtual void HandleSetupUser() override
Definition comAdptSim.cpp:195
virtual void CheckConnectionUser(bool &connected) override
Definition comAdptSim.cpp:68
virtual void ReadUser(const std::string &name, ifw::core::utils::param::Parameter &par) override
Definition comAdptSim.cpp:87
virtual void WriteUser(const ifw::core::utils::param::Parameter &par) override
Definition comAdptSim.cpp:167
virtual ~ComAdptSim()
Definition comAdptSim.cpp:56
virtual void SetAcqTriggerUser()
Specific implementation of the algorithm to trigger an acquisition.
Definition comAdptSim.cpp:1457
virtual void HandleParPostReadUser(ifw::core::utils::param::Parameter &par) override
Definition comAdptSim.cpp:191
virtual void ScanUser(std::vector< ifw::core::utils::param::Parameter > &pars) override
Definition comAdptSim.cpp:148
virtual void StartUser() override
Definition comAdptSim.cpp:153
virtual void ReceiveUser(ifw::ccf::common::DataFrame &frame, bool &frame_received, const double timeout, bool &timed_out) override
Definition comAdptSim.cpp:116
virtual void SetDeviceAddressUser(const std::string &address) override
Definition comAdptSim.cpp:64
virtual void InitialiseUser() override
Definition comAdptSim.cpp:60
virtual void ConnectUser() override
Definition comAdptSim.cpp:79
virtual void HandleParPostWriteUser(ifw::core::utils::param::Parameter &par) override
Definition comAdptSim.cpp:187
ComAdptSim()
Definition comAdptSim.cpp:22
virtual void HandleParPreWriteUser(ifw::core::utils::param::Parameter &par) override
Definition comAdptSim.cpp:183
Definition acqThread.cpp:11
GradientDir
Gradient direction.
Definition base.hpp:328
@ HORIZONTAL
Definition base.hpp:329
SimType
Simulation type.
Definition base.hpp:314
NoiseDist
Noise distribution type.
Definition base.hpp:335
@ GAUSSIAN
Definition base.hpp:336
HwStatus
HW status values.
Definition base.hpp:152