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