16#include <condition_variable>
22#include <ifw/odp/cppcpl/imageCube.hpp>
23#include <ifw/odp/cppcpl/image.hpp>
25#include <ifw/fnd/tools/tools.hpp>
31#include <ifw/rtmslib_llnetio/rtmsSender.hpp>
43 using DevCtrlEnumKey = std::variant<ifw::fgf::common::SetupParam::ParamEnum>;
45 struct DevCtrlEnumKeyHash {
47 return std::visit([](
auto&& arg) -> std::size_t {
48 return std::hash<std::underlying_type_t<std::decay_t<
decltype(arg)>>>()
49 (
static_cast<std::underlying_type_t<std::decay_t<decltype(arg)
>>>(arg));
57 struct DevStatEnumKeyHash {
59 return std::visit([](
auto&& arg) -> std::size_t {
60 return std::hash<std::underlying_type_t<std::decay_t<
decltype(arg)>>>()
61 (
static_cast<std::underlying_type_t<std::decay_t<decltype(arg)
>>>(arg));
71 CommAdapter(
const RtmsNetworkConfig& rtms_cfg,
const std::string& filename);
119 virtual short SetLogLevel(std::string& level, std::string& logger)
override;
123 void StartAcqThread();
124 void StopAcqThread();
125 void FillDataVectors();
126 void SerialiseDataInt(
const ifw::odp::Image& image, std::vector<uint8_t>& datavec)
const;
131 void EnsureRtmsSender(
int width,
int height,
int bpp);
132 void PublishFrame(
const std::shared_ptr<ifw::fgf::common::RawImage>& raw_image);
137 std::shared_ptr<ifw::fgf::common::RawImage>
m_raw_image;
144 std::vector<std::vector<uint8_t>> m_image_data_vector;
145 mutable std::mutex m_image_data_mtx;
148 static std::atomic<bool> m_stopped;
149 std::atomic<bool> m_acq_active{
false};
150 std::atomic<bool> m_acq_running{
false};
153 std::thread m_acq_thread;
154 std::string m_filename;
155 ifw::fgf::common::CameraSetup m_cam_setup;
156 ifw::fgf::common::CameraStatus m_cam_status;
157 log4cplus::Logger m_logger;
158 RtmsNetworkConfig m_rtms_cfg;
159 std::unique_ptr<ifw::rtmslib::RtmsSender> m_rtms_sender;
160 int m_active_sender_bpp{0};
161 size_t m_active_sender_size{0};
163 double m_sim_im_acq_period{0.0};
164 ifw::fnd::tools::LoopFrequencyCalculator m_frame_rate_calculator;
Abstract base class for implementing FGF Communication Adapters.
Definition iCommAdapter.hpp:24
CommAdapter(ifw::fgf::common::RtmsPublisher &publisher, const std::string &filename)
Definition commAdaptor.cpp:35
virtual short SetLogLevel(std::string &level, std::string &logger) override
Set the logging level for a (log4cplus) logger.
virtual bool IsConnected() const
IsConnected.
virtual std::string GetLoggers() override
Return the set of (log4cplus) loggers currently in use.
virtual short Stop() override
Stop image acquisition.
virtual void Initialise()
Initialise camera SDK.
virtual void Read(ifw::fgf::common::VectorVariant ¶ms) const override
Read a generic set of attributes.
std::shared_ptr< ifw::fgf::common::RawImage > m_raw_image
Definition commAdapter.hpp:128
virtual void Connect()
Connect to camera.
int m_img_bpp
Definition commAdapter.hpp:129
virtual short Reset() override
Reset frame grabber.
int m_img_height
Definition commAdapter.hpp:131
virtual void Write(const ifw::fgf::common::VectorVariant ¶ms) override
Write a set of attributes.
virtual void Read(ifw::fgf::common::PairVariant ¶m) const override
Read a single attribute.
virtual void Disconnect()
Disconnect from the camera.
int m_img_width
Definition commAdapter.hpp:130
virtual short Setup() override
Setup image acquisition.
virtual void CheckConnection(bool &connected)
CheckConnection.
virtual short Start() override
Start image acquisition.
virtual void Write(const ifw::fgf::common::PairVariant ¶m) override
Write a single attribute.
Frame Grabber Camera Base Class definitions.
Abstract base class for implementing FGF Communication Adapters.
Image class for handling images from the camera.
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
ParamEnum
Definition setupParam.hpp:42
StatusEnum
Status ("stat" category) parameters enums.
Definition statusParam.hpp:42
std::size_t operator()(const DevCtrlEnumKey &key) const
Definition commAdapter.hpp:46
std::size_t operator()(const DevStatEnumKey &key) const
Definition commAdapter.hpp:58
Definition commAdapter.hpp:36
int dest_port
Definition commAdapter.hpp:39
ifw::rtmslib::SenderConfig sender_cfg
Definition commAdapter.hpp:40
std::string src_ip
Definition commAdapter.hpp:37
std::string dest_ip
Definition commAdapter.hpp:38