RTC Toolkit 5.0.0
Loading...
Searching...
No Matches
fitsConverterIf.hpp
Go to the documentation of this file.
1
13#ifndef RTCTK_STANDALONETOOLS_RAWRECORDER_FITSCONVERTERIF_HPP
14#define RTCTK_STANDALONETOOLS_RAWRECORDER_FITSCONVERTERIF_HPP
15
16#include <taiclock/taiClock.hpp>
17
18#include <gsl/span>
19
20#include <CCfits/CCfits.h>
21#include <CCfits/FITS.h>
22
23#include <llnetio/mudpi/mudpi.hpp>
24#include <llnetio/rtms/rtms.hpp>
25
26#include <cstdint>
27#include <variant>
28#include <vector>
29
30using RtmsHeaderVariant = std::variant<llnetio::rtms::LeaderHeader,
31 llnetio::rtms::PayloadHeader,
32 llnetio::rtms::TrailerHeader>;
33
34struct PacketData {
35 llnetio::mudpi::Header mudpi_header;
36 llnetio::rtms::CommonHeader rtms_header;
38 taiclock::TaiClock::time_point pcap_timestamp;
39 gsl::span<const uint8_t> payload;
40};
41
43public:
49 FitsConverterIf(const std::string& directory, bool split_files);
50 virtual ~FitsConverterIf();
55 virtual void WriteData(const PacketData& data) = 0;
60 void SetStoreSampleIds(bool store) {
61 m_store_sampleids = store;
62 }
67 void SetStoreTimestamps(bool store) {
68 m_store_timestamps = store;
69 }
74 return m_store_sampleids;
75 }
80 return m_store_timestamps;
81 }
86 return m_split_files;
87 }
88
92 const std::string& GetDirectory() {
93 return m_directory;
94 }
95
96protected:
97 const bool IsOpen() {
98 return m_fits_handle != nullptr;
99 }
100 void Open(const std::string& file);
101 void Close();
102 void SetFitsHandle(std::unique_ptr<CCfits::FITS>&& handle);
103 CCfits::FITS& GetFitsHandle();
104
105private:
106 std::unique_ptr<CCfits::FITS> m_fits_handle;
107 std::string m_directory;
108 bool m_split_files;
109 bool m_store_timestamps;
110 bool m_store_sampleids;
111};
112
113#endif // RTCTK_STANDALONETOOLS_RAWRECORDER_FITSCONVERTERIF_HPP
Definition fitsConverterIf.hpp:42
bool GetStoreSampleIds()
Get current setting for storing sample ids as keywords.
Definition fitsConverterIf.hpp:73
void SetStoreSampleIds(bool store)
Enable or disable storage of sample ids as keywords.
Definition fitsConverterIf.hpp:60
bool GetSplitFiles()
Get the setting for splitting files.
Definition fitsConverterIf.hpp:85
void SetFitsHandle(std::unique_ptr< CCfits::FITS > &&handle)
Definition fitsConverterIf.cpp:38
const bool IsOpen()
Definition fitsConverterIf.hpp:97
void Close()
Definition fitsConverterIf.cpp:31
bool GetStoreTimestamps()
Get current setting for storing timestamps as keywords.
Definition fitsConverterIf.hpp:79
virtual void WriteData(const PacketData &data)=0
Write data into the FITS file(s).
void Open(const std::string &file)
Definition fitsConverterIf.cpp:27
CCfits::FITS & GetFitsHandle()
Definition fitsConverterIf.cpp:42
virtual ~FitsConverterIf()
Definition fitsConverterIf.cpp:46
FitsConverterIf(const std::string &directory, bool split_files)
Construct a FITS converter.
Definition fitsConverterIf.cpp:16
const std::string & GetDirectory()
Get the path to the output directory.
Definition fitsConverterIf.hpp:92
void SetStoreTimestamps(bool store)
Enable or disable storage of timestamps as keywords.
Definition fitsConverterIf.hpp:67
std::variant< llnetio::rtms::LeaderHeader, llnetio::rtms::PayloadHeader, llnetio::rtms::TrailerHeader > RtmsHeaderVariant
Definition fitsConverterIf.hpp:30
Definition fitsConverterIf.hpp:34
llnetio::mudpi::Header mudpi_header
Definition fitsConverterIf.hpp:35
gsl::span< const uint8_t > payload
Definition fitsConverterIf.hpp:39
taiclock::TaiClock::time_point pcap_timestamp
Definition fitsConverterIf.hpp:38
llnetio::rtms::CommonHeader rtms_header
Definition fitsConverterIf.hpp:36
RtmsHeaderVariant rtms_variant
Definition fitsConverterIf.hpp:37