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