ifw-ccf  3.0.0-pre2
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>
11 #include <ccf/common/dataFrame.hpp>
13 #include <ccf/common/config.hpp>
14 #include <ccf/common/db.hpp>
15 
16 
17 namespace ccf::common {
18 
23  std::string GetHostAddress();
24 
25 
31  class ComAdptBase: public Base {
32  public:
33 
34  ComAdptBase();
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 
162  uint64_t GetLostFramesCount() const;
163 
165  void ResetLostFramesCount();
166 
170  void Read(const std::string& name,
171  core::utils::param::Parameter& par);
172 
176  void Read(const std::vector<std::string>& names,
177  std::vector<core::utils::param::Parameter>& pars);
178 
182  std::string Read(const std::string& name);
183 
186  template <class TYPE>
187  TYPE Read(const std::string& name) {
188  LOG4CPLUS_TRACE_METHOD(Logger(), __PRETTY_FUNCTION__);
189  core::utils::param::Parameter par;
190  Read(name, par);
191  TYPE native_value;
192  core::utils::conversion::Convert(par.GetValue(), native_value);
193  return native_value;
194  //return boost::l_exical_cast<TYPE>(par.GetValue());
195  }
196 
199  void Write(const core::utils::param::Parameter& par);
200 
203  void Write(const std::vector<core::utils::param::Parameter>& pars);
204 
207  template <class TYPE>
208  void Write(const std::string& name, const TYPE& value) {
209  LOG4CPLUS_TRACE_METHOD(Logger(), __PRETTY_FUNCTION__);
210  core::utils::param::Parameter tmp_par(name, value);
211  Write(tmp_par);
212  }
213 
223  void Receive(ccf::common::DataFrame& frame,
224  bool& frame_received,
225  const double timeout,
226  bool& timed_out);
227 
229  void Scan(std::vector<core::utils::param::Parameter>& pars);
230 
232  void Start();
233 
235  void Stop();
236 
239  void HandleSetup();
240 
243  void HandleParPreWrite(core::utils::param::Parameter& par);
244 
247  void HandleParPostWrite(core::utils::param::Parameter& par);
248 
250  void HandleParPostRead(core::utils::param::Parameter& par);
251 
255  void MapParForDevice(core::utils::param::Parameter& par) const;
256 
260  void MapParFromDevice(core::utils::param::Parameter& par) const;
261 
263  bool HasNameMapping(const std::string& name) const;
264 
267  virtual void InitialiseUser();
268 
271  virtual void SetDeviceAddressUser(const std::string& address);
272 
275  virtual void CheckConnectionUser(bool& connected);
276 
279  virtual void CheckStatusUser(ccf::HwStatus& status,
280  std::string& message);
281 
285  virtual bool HasDevicePropertyUser(const std::string& property,
286  std::string& value);
287 
291  virtual double GetTheoreticFrameRateUser();
292 
295  virtual void ConnectUser();
296 
299  virtual void DisconnectUser();
300 
304  virtual bool IsConnectedUser() const;
305 
308  virtual void ReadUser(const std::string& name,
309  core::utils::param::Parameter& par);
310 
314  virtual void ReadUser(const std::vector<std::string>& names,
315  std::vector<core::utils::param::Parameter>& pars);
316 
319  virtual void ReceiveUser(ccf::common::DataFrame& frame,
320  bool& frame_received,
321  const double timeout,
322  bool& timed_out);
323 
326  virtual void ScanUser(std::vector<core::utils::param::Parameter>& pars);
327 
330  virtual void StartUser();
331 
334  virtual void StopUser();
335 
338  virtual void WriteUser(const core::utils::param::Parameter& par);
339 
343  virtual void WriteUser(const std::vector<core::utils::param::Parameter>& pars);
344 
347  virtual void HandleSetupUser();
348 
351  virtual void HandleParPreWriteUser(core::utils::param::Parameter& par);
352 
355  virtual void HandleParPostWriteUser(core::utils::param::Parameter& par);
356 
359  virtual void HandleParPostReadUser(core::utils::param::Parameter& par);
360 
361  protected:
363 
364  private:
365  bool m_initialised;
366  bool m_is_sim_adapter;
367  std::string m_device_address;
368  int16_t m_device_array_width;
369  int16_t m_device_array_height;
370  int8_t m_device_pixel_resolution;
371  std::string m_host_address;
372  bool m_allow_lost_frames;
373  uint64_t m_lost_frames_count;
374  NameMapping m_device_name_mapping;
375  DeviceInfo m_device_info;
376  double m_min_acq_period; // Used to delimit the frame acq.
377  double m_time_last_frame; // Time for receiving last frame.
378 
379  std::map<std::string, core::utils::param::Parameter> m_device_property_registry;
380  };
381 
382 }
383 
384 #endif // CCF_COMMON_COM_ADPT_BASE_HPP_H_
#define CCFTHROW(msg)
Guard for TRACE logs. Ensures log text is only generated when the given log level is enabled.
Definition: base.hpp:489
Class to be used as parent all CCF classes.
Definition: base.hpp:151
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:536
const std::string & GetDeviceAddress() const
Return the address from the configuration.
Definition: comAdptBase.cpp:516
ComAdptBase()
Definition: comAdptBase.cpp:24
void HandleParPostWrite(core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:541
virtual void DisconnectUser()
Definition: comAdptBase.cpp:460
virtual void HandleParPostWriteUser(core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:555
virtual bool IsConnectedUser() const
Definition: comAdptBase.cpp:52
virtual void InitialiseUser()
Definition: comAdptBase.cpp:154
virtual void CheckStatusUser(ccf::HwStatus &status, std::string &message)
Definition: comAdptBase.cpp:449
TYPE Read(const std::string &name)
Definition: comAdptBase.hpp:187
const int16_t GetDeviceWidth() const
Return the width of the data array from the configuration.
Definition: comAdptBase.cpp:521
bool m_is_connected
Definition: comAdptBase.hpp:362
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:347
virtual void WriteUser(const core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:504
void Initialise(const bool re_init=false)
Definition: comAdptBase.cpp:106
virtual void CheckConnectionUser(bool &connected)
Definition: comAdptBase.cpp:444
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:390
void WriteDefaultSetup()
Definition: comAdptBase.cpp:233
virtual void SetDeviceAddressUser(const std::string &address)
Definition: comAdptBase.cpp:439
const int16_t GetDeviceHeight() const
Return the height of the data array from the configuration.
Definition: comAdptBase.cpp:526
void Receive(ccf::common::DataFrame &frame, bool &frame_received, const double timeout, bool &timed_out)
Definition: comAdptBase.cpp:309
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:217
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:603
void SetIsConnected(const bool connected)
Definition: comAdptBase.cpp:341
bool GetAllowLostFrames() const
Return flag (cfg par) indicating if lost frames shall be ignored silently.
Definition: comAdptBase.cpp:149
virtual bool HasDevicePropertyUser(const std::string &property, std::string &value)
Definition: comAdptBase.cpp:691
void SetHostAdddress(const std::string &host_address)
Set the address of the host (network interface) used for communication.
Definition: comAdptBase.cpp:640
const int8_t GetDeviceResolution() const
Return the resolution of the data elements. from the configuration.
Definition: comAdptBase.cpp:531
double GetTheoreticFrameRate()
Render the theoritic, possible achievable frame rate (frame/s).
Definition: comAdptBase.cpp:698
uint64_t IncLostFramesCount()
Increment the counter of lost frames. The new value is returned.
Definition: comAdptBase.cpp:712
void Start()
Start the image acquisition in the device.
Definition: comAdptBase.cpp:365
void SetIsSimAdapter(const bool is_sim)
Set the Simulation Adapter Flag.
Definition: comAdptBase.cpp:37
virtual void ConnectUser()
Definition: comAdptBase.cpp:455
virtual void WriteDefaultSetupUser()
Definition: comAdptBase.cpp:239
void ResetLostFramesCount()
Reset the lost frames counter.
Definition: comAdptBase.cpp:722
virtual void HandleParPostReadUser(core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:559
void Stop()
Stop the image acquisition in the device.
Definition: comAdptBase.cpp:378
virtual void ReceiveUser(ccf::common::DataFrame &frame, bool &frame_received, const double timeout, bool &timed_out)
Definition: comAdptBase.cpp:481
void Read(const std::string &name, core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:270
virtual void StartUser()
Definition: comAdptBase.cpp:494
double GetMaxFrameRate() const
Get Maximim frame rate (Hz).
Definition: comAdptBase.cpp:727
virtual void ScanUser(std::vector< core::utils::param::Parameter > &pars)
Definition: comAdptBase.cpp:489
void Connect()
Definition: comAdptBase.cpp:158
virtual void HandleSetupUser()
Definition: comAdptBase.cpp:573
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:499
void MapParForDevice(core::utils::param::Parameter &par) const
Definition: comAdptBase.cpp:598
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:546
virtual ~ComAdptBase()
Definition: comAdptBase.cpp:33
void HandleSetup()
Definition: comAdptBase.cpp:568
void MapParFromDevice(core::utils::param::Parameter &par) const
Definition: comAdptBase.cpp:592
bool HasDeviceProperty(const std::string &property, std::string &value)
Definition: comAdptBase.cpp:655
virtual void ReadUser(const std::string &name, core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:465
virtual const std::string & GetHostAddress()
Return the address of the host (network interface) used for communicating with the device.
Definition: comAdptBase.cpp:647
void AutoConnect(const uint8_t attempts=5, const double timeout=10)
Definition: comAdptBase.cpp:181
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:551
virtual double GetTheoreticFrameRateUser()
Definition: comAdptBase.cpp:703
bool GetIsSimAdapter() const
Return the Simulation Adapter Flag.
Definition: comAdptBase.cpp:42
void Write(const std::string &name, const TYPE &value)
Definition: comAdptBase.hpp:208
void Disconnect()
Disconnect from the device.
Definition: comAdptBase.cpp:257
void WriteDeviceProps()
Definition: comAdptBase.cpp:212
uint64_t GetLostFramesCount() const
Return the number of lost frames currently registered.
Definition: comAdptBase.cpp:717
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:20
Definition: appBase.cpp:8
std::string GetHostAddress()
log4cplus::Logger & Logger()
Definition: base.cpp:9
HwStatus
HW status values.
Definition: base.hpp:195
Definition: config.hpp:28