ifw-fgf 2.0.0
 
Loading...
Searching...
No Matches
commAdapter.hpp
Go to the documentation of this file.
1
8
9#ifndef FGF_DVC_COM_ADAPTER_HPP_H_
10#define FGF_DVC_COM_ADAPTER_HPP_H_
11
12#include <stdint.h>
13#include <vector>
14#include <cstdint>
15#include <atomic>
16#include <thread>
17#include <condition_variable>
18#include <mutex>
19
20#include <ifw/odp/cppcpl/imageCube.hpp>
21#include <ifw/odp/cppcpl/image.hpp>
22
23#include <ifw/fnd/tools/tools.hpp>
24
30
31
32namespace sbss::fgf::dvc {
33
34 using DevCtrlEnumKey = std::variant<ifw::fgf::common::SetupParam::ParamEnum>;
35
37 std::size_t operator()(const DevCtrlEnumKey& key) const {
38 return std::visit([](auto&& arg) -> std::size_t {
39 return std::hash<std::underlying_type_t<std::decay_t<decltype(arg)>>>()
40 (static_cast<std::underlying_type_t<std::decay_t<decltype(arg)>>>(arg));
41 }, key);
42 }
43 };
44
47
49 std::size_t operator()(const DevStatEnumKey& key) const {
50 return std::visit([](auto&& arg) -> std::size_t {
51 return std::hash<std::underlying_type_t<std::decay_t<decltype(arg)>>>()
52 (static_cast<std::underlying_type_t<std::decay_t<decltype(arg)>>>(arg));
53 }, key);
54 }
55 };
56
57
60 public:
61
62 CommAdapter(ifw::fgf::common::RtmsPublisher& publisher, const std::string& filename);
63
64 virtual ~CommAdapter();
65
67 virtual void Initialise();
68
70 virtual void CheckConnection(bool& connected);
71
73 virtual void Connect();
74
76 virtual void Disconnect();
77
79 virtual bool IsConnected() const;
80
82 virtual void Read(ifw::fgf::common::VectorVariant& params) const override;
83
85 virtual void Read(ifw::fgf::common::PairVariant& param) const override;
86
88 virtual void Write(const ifw::fgf::common::VectorVariant& params) override;
89
91 virtual void Write(const ifw::fgf::common::PairVariant& param) override;
92
94 virtual short Setup() override;
95
97 virtual short Start() override;
98
100 virtual short Stop() override;
101
103 virtual short Reset() override;
104
106 //virtual short GetLoggers() override; // TODO: Return value should be std::string
107 virtual std::string GetLoggers() override;
108
110 virtual short SetLogLevel(std::string& level, std::string& logger) override;
111
112 void WaitForEmptyQueue(const int timeout_ms) const;
113
114 private:
115 virtual void Run();
116 void StartAcqThread();
117 void StopAcqThread();
118 void FillDataVectors();
119 void SerialiseDataInt(const ifw::odp::Image& image, std::vector<uint8_t>& datavec) const;
120 void SetSetupParam(fgf::dvc::DevCtrlEnumKey key,
121 const ifw::fgf::common::Variant& value);
122 void GetParam(fgf::dvc::DevStatEnumKey key,
123 ifw::fgf::common::Variant& value) const;
124
125 protected:
126
127 // Pointer to latest received image
128 std::shared_ptr<ifw::fgf::common::RawImage> m_raw_image;
129 int m_img_bpp{0};
132
133 private:
134 // Reference to the RTMS publisher
136
137 // Vector storing FITS planes to be used for the simulation
138 std::vector<std::vector<uint8_t>> m_image_data_vector;
139
141 static std::atomic<bool> m_stopped;
142 std::atomic<bool> m_acq_active{false};
143 std::atomic<bool> m_acq_running{false};
144
146 std::thread m_acq_thread;
147 std::string m_filename;
150 log4cplus::Logger m_logger;
151
152 double m_sim_im_acq_period{0.0};
153 ifw::fnd::tools::LoopFrequencyCalculator m_frame_rate_calculator;
154 };
155
156}
157
158#endif // FGF_DVC_COM_ADAPTER_HPP_H_
Abstract base class for implementing FGF Communication Adapters.
Definition iCommAdapter.hpp:24
RTMS Publisher.
Definition rtmsPublisher.hpp:39
virtual void Disconnect()
Disconnect from the camera.
Definition commAdaptor.cpp:80
virtual ~CommAdapter()
Definition commAdaptor.cpp:45
CommAdapter(ifw::fgf::common::RtmsPublisher &publisher, const std::string &filename)
Definition commAdaptor.cpp:35
void WaitForEmptyQueue(const int timeout_ms) const
Definition commAdaptor.cpp:730
virtual void Read(ifw::fgf::common::VectorVariant &params) const override
Read a generic set of attributes.
Definition commAdaptor.cpp:450
std::shared_ptr< ifw::fgf::common::RawImage > m_raw_image
Definition commAdapter.hpp:128
virtual void Initialise()
Initialise camera SDK.
Definition commAdaptor.cpp:54
int m_img_bpp
Definition commAdapter.hpp:129
virtual short Reset() override
Reset frame grabber.
Definition commAdaptor.cpp:318
virtual short SetLogLevel(std::string &level, std::string &logger) override
Set the logging level for a (log4cplus) logger.
Definition commAdaptor.cpp:346
virtual short Setup() override
Setup image acquisition.
Definition commAdaptor.cpp:203
int m_img_height
Definition commAdapter.hpp:131
virtual bool IsConnected() const
IsConnected.
Definition commAdaptor.cpp:68
virtual void Connect()
Connect to camera.
Definition commAdaptor.cpp:73
virtual short Stop() override
Stop image acquisition.
Definition commAdaptor.cpp:282
int m_img_width
Definition commAdapter.hpp:130
virtual void CheckConnection(bool &connected)
CheckConnection.
Definition commAdaptor.cpp:64
virtual void Write(const ifw::fgf::common::VectorVariant &params) override
Write a set of attributes.
Definition commAdaptor.cpp:476
virtual std::string GetLoggers() override
Return the set of (log4cplus) loggers currently in use.
Definition commAdaptor.cpp:332
virtual short Start() override
Start image acquisition.
Definition commAdaptor.cpp:234
std::variant< bool, int, unsigned int, short, double, std::string > Variant
Definition setupParam.hpp:21
std::vector< PairVariant > VectorVariant
Definition setupParam.hpp:24
std::pair< std::string, Variant > PairVariant
Definition setupParam.hpp:23
Definition commAdaptor.cpp:28
std::variant< ifw::fgf::common::SetupParam::ParamEnum > DevCtrlEnumKey
Definition commAdapter.hpp:34
std::variant< ifw::fgf::common::StatusParam::StatusEnum, ifw::fgf::common::SetupParam::ParamEnum > DevStatEnumKey
Definition commAdapter.hpp:45
RTMS image publisher class.
Frame Grabber Camera Base Class definitions.
Abstract base class for implementing FGF Communication Adapters.
Logging definitions.
Image class for handling images from the camera.
Structure to hold camera setup parameters.
Definition camBase.hpp:27
Structure to hold camera status parameters.
Definition camBase.hpp:43
ParamEnum
Definition setupParam.hpp:42
StatusEnum
Status ("stat" category) parameters enums.
Definition statusParam.hpp:42
Definition commAdapter.hpp:36
std::size_t operator()(const DevCtrlEnumKey &key) const
Definition commAdapter.hpp:37
Definition commAdapter.hpp:48
std::size_t operator()(const DevStatEnumKey &key) const
Definition commAdapter.hpp:49