ifw-ccf  2.0.0
pubFits.hpp
Go to the documentation of this file.
1 
5 #ifndef CCF_STDPUB_PUB_FITS_HPP_H_
6 #define CCF_STDPUB_PUB_FITS_HPP_H_
7 
8 #define BOOST_BIND_NO_PLACEHOLDERS
9 
10 #include <fitsio.h>
11 #include <CCfits/CCfits.h>
12 #include <CCfits/FITS.h>
13 #include <CCfits/PHDU.h>
14 
15 #include <dit/fits/fits.hpp>
16 
17 #include "ccf/common/pubBase.hpp"
18 
19 namespace ccf::stdpub {
20 
22  class PubFits: public ccf::common::PubBase {
23  public:
24 
25  static bool s_initialised;
26  static char s_padding_bytes[2880];
27 
28  // Setup keys.
29  const std::string SETUP_KEY_NB_OF_FRAMES = "nb_of_frames";
30  const std::string SETUP_KEY_OVERWRITE = "overwrite";
31  const std::string SETUP_KEY_REC_MODE = "rec_mode";
32 
33  enum class Format {
34  SINGLE = 1,
35  CUBE,
36  MEF
37  };
38 
39  const std::string FORMAT_SINGLE = "Single";
40  const std::string FORMAT_CUBE = "Cube";
41  const std::string FORMAT_MEF = "MEF";
42 
43  enum class RecordingMode {
44  ALL = 1,
45  INTERVAL,
46  PERIODIC
47  };
48 
49  const std::string RECORDING_MODE_ALL = "ALL";
50  const std::string RECORDING_MODE_INTERVAL = "INTERVAL";
51  const std::string RECORDING_MODE_PERIODIC = "PERIODIC";
52 
53  PubFits(const std::string& proc_thread_name,
54  const std::string& pub_thread_name);
55 
56  PubFits();
57 
58  virtual ~PubFits();
59 
60  virtual void InitialiseUser();
61 
62  virtual void PublishUser(ccf::common::DataFrame& frame);
63 
64  virtual void CheckForDeactivationUser();
65 
66  virtual void ActivateUser();
67 
68  virtual void DeactivateUser();
69 
70  // virtual void CreateObjectUser(const std::string& proc_thread_name,
71  // const std::string& pub_thread_name,
72  // std::shared_ptr<PubBase>& new_object);
73 
74  virtual void CreateObjectUser(const std::string& proc_thread_name,
75  const std::string& pub_thread_name,
76  PubBase** new_object);
77 
78  virtual void EstimateExecutionUser(double& duration,
79  int64_t& nb_of_frames);
80 
81  Format FormatToNb(const std::string& format);
82 
83  std::string FormatToStr(const Format format);
84 
85  void DecodeRecMode(const std::string& rec_mode_specifier);
86 
87  std::string RecordingModeToStr(const RecordingMode mode);
88 
89  protected:
90 
91  private:
92  void StoreImage_(ccf::common::DataFrame& frame);
93  void AddStdKeys_(ccf::common::DataFrame& frame);
94 
95  // Setup parameters.
96  std::string m_setup_file_basename;
97  int32_t m_setup_max_size;
98  int32_t m_setup_nb_of_frames;
99  Format m_setup_format;
100  bool m_setup_overwrite;
101  RecordingMode m_setup_rec_mode;
102  int32_t m_setup_frame_interval;
103  double m_setup_frame_period;
104  ccf::ExpoMode m_setup_expo_mode;
105  int32_t m_setup_expo_nb;
106 
107  std::string m_stat_cur_filename;
108  std::string m_stat_prev_filename;
109 
110  int32_t m_stat_frames_stored;
111  double m_stat_last_frame_storage_time;
112  int32_t m_stat_size_frames_stored;
113 
114  // Total number of frames made available to this Data Publisher.
115  uint32_t m_stat_frame_count;
116 
117  std::shared_ptr<CCfits::FITS> m_fits_handle;
118 
119  // Fix metadata values.
120  std::string m_det_system;
121  std::string m_det_cam_name;
122  std::string m_det_cam_id;
123  std::string m_det_cam_model;
124  std::string m_det_cam_chip_model;
125  std::string m_det_cam_type;
126  };
127 
128 }
129 
130 #endif // CCF_STDPUB_PUB_FITS_HPP_H_
ccf::stdpub::PubFits::PublishUser
virtual void PublishUser(ccf::common::DataFrame &frame)
Definition: pubFits.cpp:122
ccf::stdpub::PubFits::SETUP_KEY_NB_OF_FRAMES
const std::string SETUP_KEY_NB_OF_FRAMES
Definition: pubFits.hpp:29
ccf::stdpub::PubFits::s_initialised
static bool s_initialised
Definition: pubFits.hpp:25
ccf::stdpub::PubFits::s_padding_bytes
static char s_padding_bytes[2880]
Definition: pubFits.hpp:26
ccf::stdpub::PubFits::ActivateUser
virtual void ActivateUser()
Definition: pubFits.cpp:149
ccf::stdpub::PubFits::SETUP_KEY_REC_MODE
const std::string SETUP_KEY_REC_MODE
Definition: pubFits.hpp:31
ccf::stdpub::PubFits::RECORDING_MODE_ALL
const std::string RECORDING_MODE_ALL
Definition: pubFits.hpp:49
ccf::stdpub::PubFits::DeactivateUser
virtual void DeactivateUser()
Definition: pubFits.cpp:160
ccf::stdpub::PubFits::RecordingMode::ALL
@ ALL
ccf::stdpub::PubFits::CheckForDeactivationUser
virtual void CheckForDeactivationUser()
Definition: pubFits.cpp:442
ccf::stdpub::PubFits
Standard FITS Publisher.
Definition: pubFits.hpp:22
ccf::stdpub::PubFits::RECORDING_MODE_INTERVAL
const std::string RECORDING_MODE_INTERVAL
Definition: pubFits.hpp:50
ccf::stdpub::PubFits::FORMAT_MEF
const std::string FORMAT_MEF
Definition: pubFits.hpp:41
ccf::stdpub::PubFits::Format::CUBE
@ CUBE
ccf::stdpub::PubFits::Format::SINGLE
@ SINGLE
ccf::stdpub::PubFits::EstimateExecutionUser
virtual void EstimateExecutionUser(double &duration, int64_t &nb_of_frames)
Definition: pubFits.cpp:488
ccf::stdpub::PubFits::RecordingMode
RecordingMode
Definition: pubFits.hpp:43
pubBase.hpp
ccf::stdpub::PubFits::FormatToStr
std::string FormatToStr(const Format format)
Definition: pubFits.cpp:192
ccf::stdpub::PubFits::RECORDING_MODE_PERIODIC
const std::string RECORDING_MODE_PERIODIC
Definition: pubFits.hpp:51
ccf::stdpub::PubFits::RecordingModeToStr
std::string RecordingModeToStr(const RecordingMode mode)
Definition: pubFits.cpp:227
ccf::stdpub::PubFits::Format::MEF
@ MEF
ccf::stdpub::PubFits::InitialiseUser
virtual void InitialiseUser()
Definition: pubFits.cpp:61
ccf::stdpub::PubFits::RecordingMode::INTERVAL
@ INTERVAL
ccf::common::PubBase::PubBase
PubBase()
Definition: pubBase.cpp:414
ccf::stdpub::PubFits::Format
Format
Definition: pubFits.hpp:33
ccf::common::PubBase
Class for implementing CCF Data Publishers.
Definition: pubBase.hpp:114
ccf::stdpub::PubFits::PubFits
PubFits()
Definition: pubFits.cpp:52
ccf::stdpub::PubFits::SETUP_KEY_OVERWRITE
const std::string SETUP_KEY_OVERWRITE
Definition: pubFits.hpp:30
ccf::ExpoMode
ExpoMode
Exposure modes.
Definition: base.hpp:313
ccf::stdpub::PubFits::FormatToNb
Format FormatToNb(const std::string &format)
Definition: pubFits.cpp:179
ccf::stdpub::PubFits::FORMAT_CUBE
const std::string FORMAT_CUBE
Definition: pubFits.hpp:40
ccf::stdpub::PubFits::~PubFits
virtual ~PubFits()
Definition: pubFits.cpp:57
ccf::stdpub::PubFits::FORMAT_SINGLE
const std::string FORMAT_SINGLE
Definition: pubFits.hpp:39
ccf::stdpub::PubFits::CreateObjectUser
virtual void CreateObjectUser(const std::string &proc_thread_name, const std::string &pub_thread_name, PubBase **new_object)
Definition: pubFits.cpp:172
ccf::stdpub::PubFits::DecodeRecMode
void DecodeRecMode(const std::string &rec_mode_specifier)
Definition: pubFits.cpp:201
ccf::stdpub::PubFits::RecordingMode::PERIODIC
@ PERIODIC
ccf::stdpub
MudpiCreator source file.
Definition: mudpiCreator.hpp:22
ccf::common::DataFrame
Frame class used to store the data and metadata for one frames received from the camera.
Definition: dataFrame.hpp:17