ifw-ccf 4.0.0
Loading...
Searching...
No Matches
comAdptBase.hpp
Go to the documentation of this file.
1
5#ifndef CCF_COMMON_COM_ADPT_BASE_HPP_H_
6#define CCF_COMMON_COM_ADPT_BASE_HPP_H_
7
8#include <core/utils/param/parameter.hpp>
9
10#include <ccf/common/base.hpp>
13#include <ccf/common/config.hpp>
14#include <ccf/common/db.hpp>
15
16
17namespace ccf::common {
18
23 std::string GetHostAddress();
24
25
31 class ComAdptBase: public Base {
32 public:
33
35 virtual ~ComAdptBase();
36
38 const std::string& GetDeviceAddress() const;
39
41 const int16_t GetDeviceWidth() const;
42
44 const int16_t GetDeviceHeight() const;
45
47 const int8_t GetDeviceResolution() const;
48
50 const std::string& GetId() const;
51
53 double GetMaxFrameRate() const;
54
56 void SetHostAdddress(const std::string& host_address);
57
59 virtual const std::string& GetHostAddress();
60
62 void SetIsSimAdapter(const bool is_sim);
63
65 bool GetIsSimAdapter() const;
66
68 const std::string& GetProtocol() const;
69
72 template <class TYPE>
73 TYPE GetDeviceProperty(const std::string& property) {
74 LOG4CPLUS_TRACE_METHOD(Logger(), __PRETTY_FUNCTION__);
75 std::string tmp_value;
76 if (HasDeviceProperty(property, tmp_value)) {
77 TYPE ret_value;
78 core::utils::conversion::Convert(tmp_value, ret_value);
79 return ret_value;
80 } else {
81 CCFTHROW("Requesting undefined device property: " + property);
82 }
83 }
84
92 bool HasDeviceProperty(const std::string& property,
93 std::string& value);
94
96 double GetTheoreticFrameRate();
97
100 //void LoadDeviceNameMapping(const std::string& name_mapping_file);
101
104 void Initialise(const bool re_init = false);
105
107 void SetDeviceAddress(const std::string& address);
108
110 void CheckConnection(bool& connected);
111
113 void CheckStatus(ccf::HwStatus& status,
114 std::string& message);
115
117 bool IsConnected() const;
118
120 void CheckIfConnected() const;
121
122 // Connect to the device. If already connected, it will disconnect and reconnect.
123 void Connect();
124
127 void AutoConnect(const uint8_t attempts = 5,
128 const double timeout = 10);
129
131 void Disconnect();
132
136 void WriteDeviceProps();
137
141 virtual void WriteDevicePropsUser();
142
145 void WriteDefaultSetup();
146
149 virtual void WriteDefaultSetupUser();
150
153 void SetIsConnected(const bool connected);
154
156 bool GetAllowLostFrames() const;
157
159 uint64_t IncLostFramesCount();
160 void SetLostFramesCount(const int64_t count);
161
163 uint64_t GetLostFramesCount() const;
164
167
171 void Read(const std::string& name,
172 core::utils::param::Parameter& par);
173
177 void Read(const std::vector<std::string>& names,
178 std::vector<core::utils::param::Parameter>& pars);
179
183 std::string Read(const std::string& name);
184
187 template <class TYPE>
188 TYPE Read(const std::string& name) {
189 LOG4CPLUS_TRACE_METHOD(Logger(), __PRETTY_FUNCTION__);
190 core::utils::param::Parameter par;
191 Read(name, par);
192 TYPE native_value;
193 core::utils::conversion::Convert(par.GetValue(), native_value);
194 return native_value;
195 //return boost::l_exical_cast<TYPE>(par.GetValue());
196 }
197
200 void Write(const core::utils::param::Parameter& par);
201
204 void Write(const std::vector<core::utils::param::Parameter>& pars);
205
208 template <class TYPE>
209 void Write(const std::string& name, const TYPE& value) {
210 LOG4CPLUS_TRACE_METHOD(Logger(), __PRETTY_FUNCTION__);
211 core::utils::param::Parameter tmp_par(name, value);
212 Write(tmp_par);
213 }
214
225 bool& frame_received,
226 const double timeout,
227 bool& timed_out);
228
230 void Scan(std::vector<core::utils::param::Parameter>& pars);
231
233 void Start();
234
236 void Stop();
237
240 void HandleSetup();
241
244 void HandleParPreWrite(core::utils::param::Parameter& par);
245
248 void HandleParPostWrite(core::utils::param::Parameter& par);
249
251 void HandleParPostRead(core::utils::param::Parameter& par);
252
256 void MapParForDevice(core::utils::param::Parameter& par) const;
257
261 void MapParFromDevice(core::utils::param::Parameter& par) const;
262
264 bool HasNameMapping(const std::string& name) const;
265
268 virtual void InitialiseUser();
269
272 virtual void SetDeviceAddressUser(const std::string& address);
273
276 virtual void CheckConnectionUser(bool& connected);
277
280 virtual void CheckStatusUser(ccf::HwStatus& status,
281 std::string& message);
282
286 virtual bool HasDevicePropertyUser(const std::string& property,
287 std::string& value);
288
292 virtual double GetTheoreticFrameRateUser();
293
296 virtual void ConnectUser();
297
300 virtual void DisconnectUser();
301
305 virtual bool IsConnectedUser() const;
306
309 virtual void ReadUser(const std::string& name,
310 core::utils::param::Parameter& par);
311
315 virtual void ReadUser(const std::vector<std::string>& names,
316 std::vector<core::utils::param::Parameter>& pars);
317
320 virtual void ReceiveUser(ccf::common::DataFrame& frame,
321 bool& frame_received,
322 const double timeout,
323 bool& timed_out);
324
327 virtual void ScanUser(std::vector<core::utils::param::Parameter>& pars);
328
331 virtual void StartUser();
332
335 virtual void StopUser();
336
339 virtual void WriteUser(const core::utils::param::Parameter& par);
340
344 virtual void WriteUser(const std::vector<core::utils::param::Parameter>& pars);
345
348 virtual void HandleSetupUser();
349
352 virtual void HandleParPreWriteUser(core::utils::param::Parameter& par);
353
356 virtual void HandleParPostWriteUser(core::utils::param::Parameter& par);
357
360 virtual void HandleParPostReadUser(core::utils::param::Parameter& par);
361
362 const NameMapping& GetNameMapping() const;
363
364 protected:
366
367 private:
368 bool m_initialised;
369 bool m_is_sim_adapter;
370 std::string m_device_address;
371 int16_t m_device_array_width;
372 int16_t m_device_array_height;
373 int8_t m_device_pixel_resolution;
374 std::string m_host_address{""};
375 bool m_allow_lost_frames;
376 uint64_t m_lost_frames_count;
377 NameMapping m_device_name_mapping;
378 DeviceInfo m_device_info;
379 double m_min_acq_period; // Used to delimit the frame acq.
380 double m_time_last_frame; // Time for receiving last frame.
381
382 std::map<std::string, core::utils::param::Parameter> m_device_property_registry;
383 };
384
385}
386
387#endif // CCF_COMMON_COM_ADPT_BASE_HPP_H_
#define CCFTHROW(msg)
Definition: base.hpp:416
Class to be used as parent all CCF classes.
Definition: base.hpp:107
Class to be used as parent for CCF Communication Adapters.
Definition: comAdptBase.hpp:31
TYPE GetDeviceProperty(const std::string &property)
Definition: comAdptBase.hpp:73
void HandleParPreWrite(core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:553
const std::string & GetDeviceAddress() const
Return the address from the configuration.
Definition: comAdptBase.cpp:533
ComAdptBase()
Definition: comAdptBase.cpp:24
void HandleParPostWrite(core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:558
virtual void DisconnectUser()
Definition: comAdptBase.cpp:477
virtual void HandleParPostWriteUser(core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:572
virtual bool IsConnectedUser() const
Definition: comAdptBase.cpp:52
virtual void InitialiseUser()
Definition: comAdptBase.cpp:155
virtual void CheckStatusUser(ccf::HwStatus &status, std::string &message)
Definition: comAdptBase.cpp:466
TYPE Read(const std::string &name)
Definition: comAdptBase.hpp:188
const int16_t GetDeviceWidth() const
Return the width of the data array from the configuration.
Definition: comAdptBase.cpp:538
bool m_is_connected
Definition: comAdptBase.hpp:365
void Scan(std::vector< core::utils::param::Parameter > &pars)
Scan the address of the associated device and store the parameters in the vector.
Definition: comAdptBase.cpp:356
virtual void WriteUser(const core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:521
void Initialise(const bool re_init=false)
Definition: comAdptBase.cpp:106
virtual void CheckConnectionUser(bool &connected)
Definition: comAdptBase.cpp:461
const std::string & GetProtocol() const
Return the communication protocol used.
Definition: comAdptBase.cpp:64
const std::string & GetId() const
Get the ID of the associated device.
Definition: comAdptBase.cpp:69
void Write(const core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:399
void WriteDefaultSetup()
Definition: comAdptBase.cpp:235
virtual void SetDeviceAddressUser(const std::string &address)
Definition: comAdptBase.cpp:456
const int16_t GetDeviceHeight() const
Return the height of the data array from the configuration.
Definition: comAdptBase.cpp:543
void Receive(ccf::common::DataFrame &frame, bool &frame_received, const double timeout, bool &timed_out)
Definition: comAdptBase.cpp:317
bool IsConnected() const
Returns true if the connection to the device is established and valid.
Definition: comAdptBase.cpp:47
virtual void WriteDevicePropsUser()
Definition: comAdptBase.cpp:218
bool HasNameMapping(const std::string &name) const
Return true if a mapping is defined in the Device Name Mapping for the given name.
Definition: comAdptBase.cpp:616
void SetIsConnected(const bool connected)
Definition: comAdptBase.cpp:349
bool GetAllowLostFrames() const
Return flag (cfg par) indicating if lost frames shall be ignored silently.
Definition: comAdptBase.cpp:150
virtual bool HasDevicePropertyUser(const std::string &property, std::string &value)
Definition: comAdptBase.cpp:715
void SetHostAdddress(const std::string &host_address)
Set the address of the host (network interface) used for communication.
Definition: comAdptBase.cpp:653
const int8_t GetDeviceResolution() const
Return the resolution of the data elements from the configuration.
Definition: comAdptBase.cpp:548
void SetLostFramesCount(const int64_t count)
Definition: comAdptBase.cpp:741
double GetTheoreticFrameRate()
Render the theoritic, possible achievable frame rate (frame/s).
Definition: comAdptBase.cpp:722
uint64_t IncLostFramesCount()
Increment the counter of lost frames. The new value is returned.
Definition: comAdptBase.cpp:736
void Start()
Start the image acquisition in the device.
Definition: comAdptBase.cpp:374
void SetIsSimAdapter(const bool is_sim)
Set the Simulation Adapter Flag.
Definition: comAdptBase.cpp:37
virtual void ConnectUser()
Definition: comAdptBase.cpp:472
virtual void WriteDefaultSetupUser()
Definition: comAdptBase.cpp:241
void ResetLostFramesCount()
Reset the lost frames counter.
Definition: comAdptBase.cpp:751
virtual void HandleParPostReadUser(core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:576
void Stop()
Stop the image acquisition in the device.
Definition: comAdptBase.cpp:387
virtual void ReceiveUser(ccf::common::DataFrame &frame, bool &frame_received, const double timeout, bool &timed_out)
Definition: comAdptBase.cpp:498
void Read(const std::string &name, core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:277
virtual void StartUser()
Definition: comAdptBase.cpp:511
double GetMaxFrameRate() const
Get Maximim frame rate (Hz).
Definition: comAdptBase.cpp:756
virtual void ScanUser(std::vector< core::utils::param::Parameter > &pars)
Definition: comAdptBase.cpp:506
void Connect()
Definition: comAdptBase.cpp:159
virtual void HandleSetupUser()
Definition: comAdptBase.cpp:585
void SetDeviceAddress(const std::string &address)
Set the internal address, e.g. URI, used for communicating with the device.
Definition: comAdptBase.cpp:74
virtual void StopUser()
Definition: comAdptBase.cpp:516
void MapParForDevice(core::utils::param::Parameter &par) const
Definition: comAdptBase.cpp:611
void CheckConnection(bool &connected)
Check if the connection to the device is OK.
Definition: comAdptBase.cpp:86
void HandleParPostRead(core::utils::param::Parameter &par)
Invoked before reading a parameter from the device, in case speciel handling is needed.
Definition: comAdptBase.cpp:563
virtual ~ComAdptBase()
Definition: comAdptBase.cpp:33
void HandleSetup()
Definition: comAdptBase.cpp:580
void MapParFromDevice(core::utils::param::Parameter &par) const
Definition: comAdptBase.cpp:605
bool HasDeviceProperty(const std::string &property, std::string &value)
Definition: comAdptBase.cpp:679
const NameMapping & GetNameMapping() const
Definition: comAdptBase.cpp:272
virtual void ReadUser(const std::string &name, core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:482
virtual const std::string & GetHostAddress()
Return the address of the host (network interface) used for communicating with the device.
Definition: comAdptBase.cpp:661
void AutoConnect(const uint8_t attempts=5, const double timeout=10)
Definition: comAdptBase.cpp:182
void CheckStatus(ccf::HwStatus &status, std::string &message)
Check the status of the device (health status).
Definition: comAdptBase.cpp:95
void CheckIfConnected() const
Check if the connection is established. If not, throw an exception.
Definition: comAdptBase.cpp:57
virtual void HandleParPreWriteUser(core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:568
virtual double GetTheoreticFrameRateUser()
Definition: comAdptBase.cpp:727
bool GetIsSimAdapter() const
Return the Simulation Adapter Flag.
Definition: comAdptBase.cpp:42
void Write(const std::string &name, const TYPE &value)
Definition: comAdptBase.hpp:209
void Disconnect()
Disconnect from the device.
Definition: comAdptBase.cpp:259
void WriteDeviceProps()
Definition: comAdptBase.cpp:213
uint64_t GetLostFramesCount() const
Return the number of lost frames currently registered.
Definition: comAdptBase.cpp:746
Frame class used to store the data and metadata for one frames received from the camera.
Definition: dataFrame.hpp:17
Implements a name mapping service, based on a Name Mapping File to be loaded and installed.
Definition: nameMapping.hpp:21
Definition: appBase.cpp:8
std::string GetHostAddress()
log4cplus::Logger & Logger()
Definition: base.cpp:11
HwStatus
HW status values.
Definition: base.hpp:137
Definition: config.hpp:28