ifw-ccf 5.0.2
Loading...
Searching...
No Matches
comAdptAravis.hpp
Go to the documentation of this file.
1
5#ifndef CCF_PROTOCOLS_ARAVIS_LIB_COM_ADPT_HPP_H_
6#define CCF_PROTOCOLS_ARAVIS_LIB_COM_ADPT_HPP_H_
7
8#include <stdint.h>
9#include <vector>
10
13
16
18
20 void FrameReceptionThread(void* com_adapter);
21
27 public:
29 // Constants
32 // @{
33 const double CONNECT_TIMEOUT = 10.0;
34 const double FRAME_REC_THR_SLEEP_TIME = 0.0005;
35 const uint16_t MAX_NB_OF_RECEP_BUFFERS = 100;
36 const uint16_t NB_OF_INPUT_BUFFERS = 5;
37 const int32_t DEFAULT_PACKET_SIZE = 1500;
38 const uint32_t STREAM_BYTES_PER_SECOND_MIN = 1000000;
39 const uint32_t STREAM_BYTES_PER_SECOND_MAX = 248000000; // 12400000;
40 // @}
41
43 // GigE Vision com. parameter names
46 // @{
47 const std::string GIGE_PAR_ACQUISITION_ABORT = "AcquisitionAbort";
48 const std::string GIGE_PAR_ACQUISITION_MODE = "AcquisitionMode";
49 const std::string GIGE_PAR_ACQUISITION_START = "AcquisitionStart";
50 const std::string GIGE_PAR_ACQUISITION_STOP = "AcquisitionStop";
51 const std::string GIGE_PAR_DEVICE_VENDOR_NAME = "DeviceVendorName";
52 const std::string GIGE_PAR_PACKET_SIZE = "PacketSize";
53 const std::string GIGE_PAR_PAYLOAD_SIZE = "PayloadSize";
54 const std::string GIGE_PAR_PIXELFORMAT = "PixelFormat";
55 const std::string GIGE_PAR_SENSOR_BITS = "SensorBits";
56 const std::string GIGE_PAR_SENSOR_HEIGHT = "SensorHeight";
57 const std::string GIGE_PAR_SENSOR_TYPE = "SensorType";
58 const std::string GIGE_PAR_SENSOR_WIDTH = "SensorWidth";
59 const std::string GIGE_PAR_STREAM_BYTES_PER_SECOND = "StreamBytesPerSecond";
60 const std::string GIGE_PAR_TIMESTAMP_TICK_FREQ = "TimestampTickFreq";
61 const std::string GIGE_PAR_FRAME_TRIGGER_MODE = "FrameStartTriggerMode";
62 const std::string GIGE_PAR_TRIGGER_MODE = "TriggerMode";
63 const std::string GIGE_PAR_TRIGGER_SOURCE = "TriggerSource";
64 // @}
66
68 // Status code lookup
70 const std::map<int, std::string> ARV_BUFFER_STATUS_STRING =
71 {
72 {ARV_BUFFER_STATUS_UNKNOWN, "Unknown error"},
73 {ARV_BUFFER_STATUS_SUCCESS, "Success"},
74 {ARV_BUFFER_STATUS_CLEARED, "Buffer cleared"},
75 {ARV_BUFFER_STATUS_TIMEOUT, "Timeout"},
76 {ARV_BUFFER_STATUS_MISSING_PACKETS, "Missing packets"},
77 {ARV_BUFFER_STATUS_WRONG_PACKET_ID, "Wrong packet ID"},
78 {ARV_BUFFER_STATUS_SIZE_MISMATCH, "Size mismatch"},
79 {ARV_BUFFER_STATUS_FILLING, "Buffer filling"},
80 {ARV_BUFFER_STATUS_ABORTED, "Aborted"}
81 };
83
85 virtual ~ComAdptAravis();
86
87 virtual void InitialiseUser() override;
88
89 virtual void CheckConnectionUser(bool& connected) override;
90
91 virtual void CheckStatusUser(ifw::ccf::HwStatus& status,
92 std::string& message) override;
93 virtual void ConnectUser() override;
94
95 virtual void DisconnectUser() override;
96
97 virtual bool IsConnectedUser() const;
98
99 virtual void ReadUser(const std::string& name,
100 ifw::core::utils::param::Parameter& par) override;
101
102 virtual void ReceiveUser(ifw::ccf::common::DataFrame& frame,
103 bool& frame_received,
104 const double timeout,
105 bool& timed_out) override;
106
107 virtual void ScanUser(std::vector<ifw::core::utils::param::Parameter>& pars) override;
108
109 virtual void StartUser() override;
110
111 virtual void StopUser() override;
112
113 virtual void WriteUser(const ifw::core::utils::param::Parameter& par) override;
114
115 virtual double GetTheoreticFrameRateUser() override;
116
117 virtual void _AdjustStreamBytesPerSecHook();
118
119 virtual int8_t _ReadBasicParsHook();
120
121 // TODO: Check if support via aravisComAdpt::HandleParsPreWrite()
122 virtual int8_t _WriteParHook(ifw::core::utils::param::Parameter& par,
123 bool& ignore_unknown);
124
125 // Public member variables to allow FrameReceptionThread to access them.
127 bool p_exec_fr_acq_thr; // p_acq_thr_running;
130 ArvDevice* p_device;
131 ArvFrame p_frame_buffers[100]; // TODO: Allocate from cfg?
137 std::map<ArvBufferStatus, std::string> p_status_map;
138 ArvStream* p_stream;
142 std::thread* p_fr_acq_thr;
143 struct sched_param p_fr_acq_thr_sched_par;
144
145 bool GetAcqThrExecFlag();
146
147 protected:
148 virtual void _Reset();
149 virtual void _ClearCamHandle();
150
152
153 // Current setup installed.
154 //std::map<std::string, ifw::core::utils::param::Parameter> m_setup;
159
160 std::map<std::string, ArvAttributeInfo> m_attributes;
161
162 virtual void _Write(ifw::core::utils::param::Parameter& par);
163
164 virtual void _StartAcq();
165 virtual void _StartAcqThr();
166 virtual void _PauseAcqThr();
167 virtual void _GetIntEnumValue(const std::string& name,
168 ifw::core::utils::param::Parameter& par);
169
170 private:
171 void _GetCameraAttributesList(ArvGc* gen_i_cam);
172 void _GetFlags(ArvGc* gen_i_cam, const std::string& name);
173 void _GetNode(const std::string& name, ArvGc* gen_i_cam, ArvGcNode** node);
174 int16_t _MonoPixelFormatToBits(std::string par_value);
175 int16_t _MonoPixelFormatToBits(ifw::core::utils::param::Parameter& par);
176 bool _PackedPixelFormat(ArvPixelFormat pixel_format);
177
178 std::map<ifw::ccf::protocols::aravis::ArvDatatype, std::vector<std::string>> m_data_type_map;
179
180 double m_delay_start_after_stop;
181 double m_last_frame_recv;
182 gulong m_sig_handler_id;
183 uint32_t m_stream_bytes_max;
184 double m_time_last_stop;
185 std::string m_host_address;
186
187 std::string m_vendor_name;
188 };
189
190 }
191
192 #endif // CCF_PROTOCOLS_ARAVIS_LIB_COM_ADPT_HPP_H_
Class to be used as parent for CCF Communication Adapters.
Definition comAdptBase.hpp:46
Frame class used to store the data and metadata for one frames received from the camera.
Definition dataFrame.hpp:18
CCF Com. Int. implementing communication based on the Aravis open-source glib/gobject-based library f...
Definition comAdptAravis.hpp:26
int m_setup_expo_bin_x
Definition comAdptAravis.hpp:157
const std::string GIGE_PAR_SENSOR_TYPE
Definition comAdptAravis.hpp:57
double m_setup_expo_time
Definition comAdptAravis.hpp:155
const std::string GIGE_PAR_PACKET_SIZE
Definition comAdptAravis.hpp:52
const std::string GIGE_PAR_DEVICE_VENDOR_NAME
Definition comAdptAravis.hpp:51
virtual void _StartAcq()
Definition comAdptAravis.cpp:627
virtual int8_t _ReadBasicParsHook()
Definition hooks.cpp:68
const std::string GIGE_PAR_SENSOR_BITS
Definition comAdptAravis.hpp:55
const std::string GIGE_PAR_TRIGGER_MODE
Definition comAdptAravis.hpp:62
std::map< ArvBufferStatus, std::string > p_status_map
Definition comAdptAravis.hpp:137
double p_timestamp_frequency
Definition comAdptAravis.hpp:141
int32_t p_acq_thr_buf_index
Definition comAdptAravis.hpp:139
const std::string GIGE_PAR_ACQUISITION_MODE
Definition comAdptAravis.hpp:48
const std::string GIGE_PAR_FRAME_TRIGGER_MODE
Definition comAdptAravis.hpp:61
virtual void DisconnectUser() override
Definition comAdptAravis.cpp:354
virtual void StopUser() override
Definition comAdptAravis.cpp:689
const std::string GIGE_PAR_ACQUISITION_STOP
Definition comAdptAravis.hpp:50
virtual void _AdjustStreamBytesPerSecHook()
Definition hooks.cpp:14
ComAdptAravis()
Definition comAdptAravis.cpp:30
virtual void _GetIntEnumValue(const std::string &name, ifw::core::utils::param::Parameter &par)
Definition comAdptAravis.cpp:373
const uint32_t STREAM_BYTES_PER_SECOND_MAX
Definition comAdptAravis.hpp:39
virtual void ReceiveUser(ifw::ccf::common::DataFrame &frame, bool &frame_received, const double timeout, bool &timed_out) override
Definition comAdptAravis.cpp:470
const uint32_t STREAM_BYTES_PER_SECOND_MIN
Definition comAdptAravis.hpp:38
std::map< std::string, ArvAttributeInfo > m_attributes
Definition comAdptAravis.hpp:160
int32_t p_cur_buffer_index
Definition comAdptAravis.hpp:129
virtual void InitialiseUser() override
Definition comAdptAravis.cpp:93
const double CONNECT_TIMEOUT
Definition comAdptAravis.hpp:33
virtual void _Write(ifw::core::utils::param::Parameter &par)
Definition comAdptAravis.cpp:712
virtual int8_t _WriteParHook(ifw::core::utils::param::Parameter &par, bool &ignore_unknown)
Definition hooks.cpp:82
const std::string GIGE_PAR_ACQUISITION_ABORT
Definition comAdptAravis.hpp:47
virtual void _PauseAcqThr()
Definition comAdptAravis.cpp:1061
const std::string GIGE_PAR_TRIGGER_SOURCE
Definition comAdptAravis.hpp:63
const std::string GIGE_PAR_PAYLOAD_SIZE
Definition comAdptAravis.hpp:53
virtual bool IsConnectedUser() const
Definition comAdptAravis.cpp:201
virtual void CheckConnectionUser(bool &connected) override
Definition comAdptAravis.cpp:154
ArvStream * p_stream
Definition comAdptAravis.hpp:138
virtual void CheckStatusUser(ifw::ccf::HwStatus &status, std::string &message) override
Definition comAdptAravis.cpp:185
int32_t p_payload_size
Definition comAdptAravis.hpp:136
virtual void ReadUser(const std::string &name, ifw::core::utils::param::Parameter &par) override
Definition comAdptAravis.cpp:392
double m_stat_expo_time
Definition comAdptAravis.hpp:156
bool GetAcqThrExecFlag()
Definition comAdptAravis.cpp:1073
const std::string GIGE_PAR_STREAM_BYTES_PER_SECOND
Definition comAdptAravis.hpp:59
bool p_ignore_lost_frames
Definition comAdptAravis.hpp:134
ifw::ccf::ExpoMode p_expo_mode
Definition comAdptAravis.hpp:126
ArvFrame p_frame_buffers[100]
Definition comAdptAravis.hpp:131
const uint16_t MAX_NB_OF_RECEP_BUFFERS
Definition comAdptAravis.hpp:35
double p_last_missing_data_log
Definition comAdptAravis.hpp:135
const std::string GIGE_PAR_ACQUISITION_START
Definition comAdptAravis.hpp:49
virtual ~ComAdptAravis()
Definition comAdptAravis.cpp:116
uint32_t p_frame_count
Definition comAdptAravis.hpp:133
virtual void ScanUser(std::vector< ifw::core::utils::param::Parameter > &pars) override
Definition comAdptAravis.cpp:614
bool p_frame_buffers_in_use[100]
Definition comAdptAravis.hpp:132
const std::map< int, std::string > ARV_BUFFER_STATUS_STRING
Definition comAdptAravis.hpp:70
ArvDevice * p_device
Definition comAdptAravis.hpp:130
std::thread * p_fr_acq_thr
Definition comAdptAravis.hpp:142
const std::string GIGE_PAR_TIMESTAMP_TICK_FREQ
Definition comAdptAravis.hpp:60
int m_setup_expo_bin_y
Definition comAdptAravis.hpp:158
const uint16_t NB_OF_INPUT_BUFFERS
Definition comAdptAravis.hpp:36
virtual void _ClearCamHandle()
Definition comAdptAravis.cpp:703
const std::string GIGE_PAR_PIXELFORMAT
Definition comAdptAravis.hpp:54
virtual void ConnectUser() override
Definition comAdptAravis.cpp:218
const int32_t DEFAULT_PACKET_SIZE
Definition comAdptAravis.hpp:37
virtual void WriteUser(const ifw::core::utils::param::Parameter &par) override
Definition comAdptAravis.cpp:952
virtual void StartUser() override
Definition comAdptAravis.cpp:651
const std::string GIGE_PAR_SENSOR_HEIGHT
Definition comAdptAravis.hpp:56
bool p_waiting_for_frame
Definition comAdptAravis.hpp:140
const double FRAME_REC_THR_SLEEP_TIME
Definition comAdptAravis.hpp:34
struct sched_param p_fr_acq_thr_sched_par
Definition comAdptAravis.hpp:143
bool p_term_fr_acq_thr
Definition comAdptAravis.hpp:128
virtual void _StartAcqThr()
Definition comAdptAravis.cpp:1049
virtual double GetTheoreticFrameRateUser() override
Definition comAdptAravis.cpp:1296
int32_t m_bytes_per_pixel
Definition comAdptAravis.hpp:151
bool p_exec_fr_acq_thr
Definition comAdptAravis.hpp:127
const std::string GIGE_PAR_SENSOR_WIDTH
Definition comAdptAravis.hpp:58
virtual void _Reset()
Definition comAdptAravis.cpp:132
Definition comAdptAravis.cpp:28
void FrameReceptionThread(void *com_adapter)
Thread dedicated to receive the image frames to ensure the minimum possible delay in receiving these.
ExpoMode
Exposure modes.
Definition base.hpp:206
HwStatus
HW status values.
Definition base.hpp:150
Image in which to store frames received.
Definition defines.hpp:40