ifw-ccf  2.1.0-pre1
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 
119  // Connect to the device. If already connected, it will disconnect and reconnect.
120  void Connect();
121 
123  void Disconnect();
124 
128  void WriteDeviceProps();
129 
133  virtual void WriteDevicePropsUser();
134 
137  void WriteDefaultSetup();
138 
141  virtual void WriteDefaultSetupUser();
142 
145  void SetIsConnected(const bool connected);
146 
148  bool GetAllowLostFrames() const;
149 
151  uint64_t IncLostFramesCount();
152 
154  uint64_t GetLostFramesCount() const;
155 
157  void ResetLostFramesCount();
158 
162  void Read(const std::string& name,
163  core::utils::param::Parameter& par);
164 
168  void Read(const std::vector<std::string>& names,
169  std::vector<core::utils::param::Parameter>& pars);
170 
174  std::string Read(const std::string& name);
175 
178  template <class TYPE>
179  TYPE Read(const std::string& name) {
180  LOG4CPLUS_TRACE_METHOD(Logger(), __PRETTY_FUNCTION__);
181  core::utils::param::Parameter par;
182  Read(name, par);
183  TYPE native_value;
184  core::utils::conversion::Convert(par.GetValue(), native_value);
185  return native_value;
186  //return boost::l_exical_cast<TYPE>(par.GetValue());
187  }
188 
191  void Write(const core::utils::param::Parameter& par);
192 
195  void Write(const std::vector<core::utils::param::Parameter>& pars);
196 
198  template <class TYPE>
199  void Write(const std::string& name, const TYPE& value) {
200  LOG4CPLUS_TRACE_METHOD(Logger(), __PRETTY_FUNCTION__);
201  core::utils::param::Parameter tmp_par(name, value);
202  Write(tmp_par);
203  }
204 
214  void Receive(ccf::common::DataFrame& frame,
215  bool& frame_received,
216  const double timeout,
217  bool& timed_out);
218 
220  void Scan(std::vector<core::utils::param::Parameter>& pars);
221 
223  void Start();
224 
226  void Stop();
227 
230  void HandleSetup();
231 
234  void HandleParPreWrite(core::utils::param::Parameter& par);
235 
238  void HandleParPostWrite(core::utils::param::Parameter& par);
239 
241  void HandleParPostRead(core::utils::param::Parameter& par);
242 
246  void MapParForDevice(core::utils::param::Parameter& par) const;
247 
251  void MapParFromDevice(core::utils::param::Parameter& par) const;
252 
254  bool HasNameMapping(const std::string& name) const;
255 
258  virtual void InitialiseUser();
259 
262  virtual void SetDeviceAddressUser(const std::string& address);
263 
266  virtual void CheckConnectionUser(bool& connected);
267 
270  virtual void CheckStatusUser(ccf::HwStatus& status,
271  std::string& message);
272 
276  virtual bool HasDevicePropertyUser(const std::string& property,
277  std::string& value);
278 
282  virtual double GetTheoreticFrameRateUser();
283 
286  virtual void ConnectUser();
287 
290  virtual void DisconnectUser();
291 
295  virtual bool IsConnectedUser() const;
296 
299  virtual void ReadUser(const std::string& name,
300  core::utils::param::Parameter& par);
301 
305  virtual void ReadUser(const std::vector<std::string>& names,
306  std::vector<core::utils::param::Parameter>& pars);
307 
310  virtual void ReceiveUser(ccf::common::DataFrame& frame,
311  bool& frame_received,
312  const double timeout,
313  bool& timed_out);
314 
317  virtual void ScanUser(std::vector<core::utils::param::Parameter>& pars);
318 
321  virtual void StartUser();
322 
325  virtual void StopUser();
326 
329  virtual void WriteUser(const core::utils::param::Parameter& par);
330 
334  virtual void WriteUser(const std::vector<core::utils::param::Parameter>& pars);
335 
338  virtual void HandleSetupUser();
339 
342  virtual void HandleParPreWriteUser(core::utils::param::Parameter& par);
343 
346  virtual void HandleParPostWriteUser(core::utils::param::Parameter& par);
347 
350  virtual void HandleParPostReadUser(core::utils::param::Parameter& par);
351 
352  protected:
354 
355  private:
356  bool m_initialised;
357  bool m_is_sim_adapter;
358  std::string m_device_address;
359  int16_t m_device_array_width;
360  int16_t m_device_array_height;
361  int8_t m_device_pixel_resolution;
362  std::string m_host_address;
363  bool m_allow_lost_frames;
364  uint64_t m_lost_frames_count;
365  NameMapping m_device_name_mapping;
366  DeviceInfo m_device_info;
367  double m_min_acq_period; // Used to delimit the frame acq.
368  double m_time_last_frame; // Time for receiving last frame.
369 
370  std::map<std::string, core::utils::param::Parameter> m_device_property_registry;
371  };
372 
373 }
374 
375 #endif // CCF_COMMON_COM_ADPT_BASE_HPP_H_
ccf::Base
Class to be used as parent all CCF classes.
Definition: base.hpp:151
ccf::common::ComAdptBase::GetDeviceAddress
const std::string & GetDeviceAddress() const
Return the address from the configuration.
Definition: comAdptBase.cpp:467
ccf::common::ComAdptBase::DisconnectUser
virtual void DisconnectUser()
Definition: comAdptBase.cpp:411
CCFTHROW
#define CCFTHROW(msg)
Guard for TRACE logs. Ensures log text is only generated when the given log level is enabled.
Definition: base.hpp:501
ccf::common::ComAdptBase::HandleSetupUser
virtual void HandleSetupUser()
Definition: comAdptBase.cpp:524
ccf::common::ComAdptBase::GetDeviceHeight
const int16_t GetDeviceHeight() const
Return the height of the data array from the configuration.
Definition: comAdptBase.cpp:477
ccf::common::ComAdptBase::SetIsConnected
void SetIsConnected(const bool connected)
Definition: comAdptBase.cpp:292
ccf::common::ComAdptBase::SetDeviceAddress
void SetDeviceAddress(const std::string &address)
Set the internal address, e.g. URI, used for communicating with the device.
Definition: comAdptBase.cpp:64
ccf::common::ComAdptBase::Receive
void Receive(ccf::common::DataFrame &frame, bool &frame_received, const double timeout, bool &timed_out)
Definition: comAdptBase.cpp:260
ccf::common::ComAdptBase::Stop
void Stop()
Stop the image acquisition in the device.
Definition: comAdptBase.cpp:329
db.hpp
ccf::common::ComAdptBase::WriteDefaultSetupUser
virtual void WriteDefaultSetupUser()
Definition: comAdptBase.cpp:191
ccf::common::ComAdptBase::WriteUser
virtual void WriteUser(const core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:455
ccf::common::ComAdptBase::ResetLostFramesCount
void ResetLostFramesCount()
Reset the lost frames counter.
Definition: comAdptBase.cpp:673
ccf::common::ComAdptBase::Disconnect
void Disconnect()
Disconnect from the device.
Definition: comAdptBase.cpp:208
ccf::common::ComAdptBase::Read
TYPE Read(const std::string &name)
Definition: comAdptBase.hpp:179
ccf::common::ComAdptBase::HandleSetup
void HandleSetup()
Definition: comAdptBase.cpp:519
ccf::common::ComAdptBase::MapParFromDevice
void MapParFromDevice(core::utils::param::Parameter &par) const
Definition: comAdptBase.cpp:543
ccf::common::ComAdptBase::m_is_connected
bool m_is_connected
Definition: comAdptBase.hpp:353
ccf::common::ComAdptBase::HandleParPostRead
void HandleParPostRead(core::utils::param::Parameter &par)
Invoked before reading a parameter from the device, in case speciel handling is needed.
Definition: comAdptBase.cpp:497
ccf::common::ComAdptBase::IncLostFramesCount
uint64_t IncLostFramesCount()
Increment the counter of lost frames. The new value is returned.
Definition: comAdptBase.cpp:663
ccf::common::DeviceInfo
Definition: config.hpp:20
ccf::common::ComAdptBase::CheckConnection
void CheckConnection(bool &connected)
Check if the connection to the device is OK.
Definition: comAdptBase.cpp:76
config.hpp
ccf::common::ComAdptBase::InitialiseUser
virtual void InitialiseUser()
Definition: comAdptBase.cpp:141
ccf::common::ComAdptBase::WriteDevicePropsUser
virtual void WriteDevicePropsUser()
Definition: comAdptBase.cpp:173
ccf::common::ComAdptBase::Initialise
void Initialise(const bool re_init=false)
Definition: comAdptBase.cpp:96
ccf::common::ComAdptBase::ScanUser
virtual void ScanUser(std::vector< core::utils::param::Parameter > &pars)
Definition: comAdptBase.cpp:440
ccf::common::ComAdptBase::GetIsSimAdapter
bool GetIsSimAdapter() const
Return the Simulation Adapter Flag.
Definition: comAdptBase.cpp:39
ccf::common::ComAdptBase::GetDeviceWidth
const int16_t GetDeviceWidth() const
Return the width of the data array from the configuration.
Definition: comAdptBase.cpp:472
ccf::common::ComAdptBase::IsConnectedUser
virtual bool IsConnectedUser() const
Definition: comAdptBase.cpp:49
ccf::common::ComAdptBase::HandleParPreWrite
void HandleParPreWrite(core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:487
ccf::common::ComAdptBase::ConnectUser
virtual void ConnectUser()
Definition: comAdptBase.cpp:406
ccf::HwStatus
HwStatus
HW status values.
Definition: base.hpp:195
ccf::common::ComAdptBase::ReadUser
virtual void ReadUser(const std::string &name, core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:416
ccf::common::ComAdptBase::GetProtocol
const std::string & GetProtocol() const
Return the communication protocol used.
Definition: comAdptBase.cpp:54
ccf::common::ComAdptBase::SetDeviceAddressUser
virtual void SetDeviceAddressUser(const std::string &address)
Definition: comAdptBase.cpp:390
ccf::common::ComAdptBase::GetDeviceResolution
const int8_t GetDeviceResolution() const
Return the resolution of the data elements. from the configuration.
Definition: comAdptBase.cpp:482
ccf::common::ComAdptBase::StartUser
virtual void StartUser()
Definition: comAdptBase.cpp:445
ccf::common::ComAdptBase::HasDevicePropertyUser
virtual bool HasDevicePropertyUser(const std::string &property, std::string &value)
Definition: comAdptBase.cpp:642
ccf::common::ComAdptBase::HasNameMapping
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:554
ccf::common::ComAdptBase::HandleParPostWrite
void HandleParPostWrite(core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:492
ccf::common::ComAdptBase::Write
void Write(const std::string &name, const TYPE &value)
Template method to write a parameter, taking care of converting the user data into the internal type.
Definition: comAdptBase.hpp:199
ccf::common::GetHostAddress
std::string GetHostAddress()
ccf::common::ComAdptBase::WriteDefaultSetup
void WriteDefaultSetup()
Definition: comAdptBase.cpp:185
ccf::common::ComAdptBase::CheckStatus
void CheckStatus(ccf::HwStatus &status, std::string &message)
Check the status of the device (health status).
Definition: comAdptBase.cpp:85
dataFrame.hpp
ccf::common::ComAdptBase::ComAdptBase
ComAdptBase()
Definition: comAdptBase.cpp:21
nameMapping.hpp
ccf::common::ComAdptBase::Start
void Start()
Start the image acquisition in the device.
Definition: comAdptBase.cpp:316
ccf::common::ComAdptBase::GetTheoreticFrameRate
double GetTheoreticFrameRate()
Render the theoritic, possible achievable frame rate (frame/s).
Definition: comAdptBase.cpp:649
ccf::common::NameMapping
Implements a name mapping service, based on a Name Mapping File to be loaded and installed.
Definition: nameMapping.hpp:20
ccf::common::ComAdptBase::StopUser
virtual void StopUser()
Definition: comAdptBase.cpp:450
base.hpp
ccf::common::ComAdptBase::CheckStatusUser
virtual void CheckStatusUser(ccf::HwStatus &status, std::string &message)
Definition: comAdptBase.cpp:400
ccf::common::ComAdptBase::LoadDeviceNameMapping
void LoadDeviceNameMapping(const std::string &name_mapping_file)
Definition: comAdptBase.cpp:514
ccf::common::ComAdptBase::GetAllowLostFrames
bool GetAllowLostFrames() const
Return flag (cfg par) indicating if lost frames shall be ignored silently.
Definition: comAdptBase.cpp:136
ccf::common
Definition: appBase.cpp:8
ccf::common::ComAdptBase::GetTheoreticFrameRateUser
virtual double GetTheoreticFrameRateUser()
Definition: comAdptBase.cpp:654
ccf::common::ComAdptBase::ReceiveUser
virtual void ReceiveUser(ccf::common::DataFrame &frame, bool &frame_received, const double timeout, bool &timed_out)
Definition: comAdptBase.cpp:432
ccf::common::ComAdptBase::GetId
const std::string & GetId() const
Get the ID of the associated device.
Definition: comAdptBase.cpp:59
ccf::common::ComAdptBase::Write
void Write(const core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:341
ccf::common::ComAdptBase::HandleParPostWriteUser
virtual void HandleParPostWriteUser(core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:506
ccf::common::ComAdptBase::~ComAdptBase
virtual ~ComAdptBase()
Definition: comAdptBase.cpp:30
ccf::common::ComAdptBase::Connect
void Connect()
Definition: comAdptBase.cpp:145
ccf::common::ComAdptBase::GetMaxFrameRate
double GetMaxFrameRate() const
Get Maximim frame rate (Hz).
Definition: comAdptBase.cpp:678
ccf::common::ComAdptBase::IsConnected
bool IsConnected() const
Returns true if the connection to the device is established and valid.
Definition: comAdptBase.cpp:44
ccf::common::ComAdptBase::HasDeviceProperty
bool HasDeviceProperty(const std::string &property, std::string &value)
Definition: comAdptBase.cpp:606
ccf::common::ComAdptBase::HandleParPostReadUser
virtual void HandleParPostReadUser(core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:510
ccf::common::ComAdptBase::Scan
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:298
ccf::common::ComAdptBase::WriteDeviceProps
void WriteDeviceProps()
Definition: comAdptBase.cpp:168
ccf::common::ComAdptBase::SetHostAdddress
void SetHostAdddress(const std::string &host_address)
Set the address of the host (network interface) used for communication.
Definition: comAdptBase.cpp:591
ccf::common::ComAdptBase::HandleParPreWriteUser
virtual void HandleParPreWriteUser(core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:502
ccf::common::ComAdptBase::SetIsSimAdapter
void SetIsSimAdapter(const bool is_sim)
Set the Simulation Adapter Flag.
Definition: comAdptBase.cpp:34
ccf::common::ComAdptBase::CheckConnectionUser
virtual void CheckConnectionUser(bool &connected)
Definition: comAdptBase.cpp:395
ccf::common::ComAdptBase::GetLostFramesCount
uint64_t GetLostFramesCount() const
Return the number of lost frames currently registered.
Definition: comAdptBase.cpp:668
ccf::common::DataFrame
Frame class used to store the data and metadata for one frames received from the camera.
Definition: dataFrame.hpp:17
ccf::common::ComAdptBase::GetDeviceProperty
TYPE GetDeviceProperty(const std::string &property)
Definition: comAdptBase.hpp:73
ccf::common::ComAdptBase::Read
void Read(const std::string &name, core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:221
ccf::common::ComAdptBase::MapParForDevice
void MapParForDevice(core::utils::param::Parameter &par) const
Definition: comAdptBase.cpp:549
ccf::Logger
log4cplus::Logger & Logger()
Definition: base.cpp:9
ccf::common::ComAdptBase::GetHostAddress
virtual const std::string & GetHostAddress()
Return the address of the host (network interface) used for communicating with the device.
Definition: comAdptBase.cpp:598
ccf::common::ComAdptBase
Class to be used as parent for CCF Communication Adapters.
Definition: comAdptBase.hpp:31