ifw-ccf  2.0.0
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 std::string& GetId() const;
42 
44  void SetHostAdddress(const std::string& host_address);
45 
47  virtual const std::string& GetHostAddress();
48 
50  void SetIsSimAdapter(const bool is_sim);
51 
53  bool GetIsSimAdapter() const;
54 
56  const std::string& GetProtocol() const;
57 
60  template <class TYPE>
61  TYPE GetDeviceProperty(const std::string& property) {
62  LOG4CPLUS_TRACE_METHOD(Logger(), __PRETTY_FUNCTION__);
63  std::string tmp_value;
64  if (HasDeviceProperty(property, tmp_value)) {
65  TYPE ret_value;
66  core::utils::conversion::Convert(tmp_value, ret_value);
67  return ret_value;
68  } else {
69  CCFTHROW("Requesting undefined device property: " + property);
70  }
71  }
72 
81  bool HasDeviceProperty(const std::string& property,
82  std::string& value);
83 
85  double GetTheoreticFrameRate();
86 
89  void LoadDeviceNameMapping(const std::string& name_mapping_file);
90 
93  void Initialise(const bool re_init = false);
94 
96  void SetDeviceAddress(const std::string& address);
97 
99  void CheckConnection(bool& connected);
100 
102  void CheckStatus(ccf::HwStatus& status,
103  std::string& message);
104 
106  bool IsConnected() const;
107 
108  // Connect to the device. If already connected, it will disconnect and reconnect.
109  void Connect();
110 
112  void Disconnect();
113 
117  void WriteDeviceProps();
118 
122  virtual void WriteDevicePropsUser();
123 
126  void WriteDefaultSetup();
127 
130  virtual void WriteDefaultSetupUser();
131 
134  void SetIsConnected(const bool connected);
135 
137  bool GetAllowLostFrames() const;
138 
140  uint64_t IncLostFramesCount();
141 
143  uint64_t GetLostFramesCount() const;
144 
146  void ResetLostFramesCount();
147 
151  void Read(const std::string& name,
152  core::utils::param::Parameter& par);
153 
157  void Read(const std::vector<std::string>& names,
158  std::vector<core::utils::param::Parameter>& pars);
159 
163  std::string Read(const std::string& name);
164 
167  template <class TYPE>
168  TYPE Read(const std::string& name) {
169  LOG4CPLUS_TRACE_METHOD(Logger(), __PRETTY_FUNCTION__);
170  core::utils::param::Parameter par;
171  Read(name, par);
172  TYPE native_value;
173  core::utils::conversion::Convert(par.GetValue(), native_value);
174  return native_value;
175  //return boost::l_exical_cast<TYPE>(par.GetValue());
176  }
177 
180  void Write(const core::utils::param::Parameter& par);
181 
184  void Write(const std::vector<core::utils::param::Parameter>& pars);
185 
187  template <class TYPE>
188  void Write(const std::string& name, const TYPE& value) {
189  LOG4CPLUS_TRACE_METHOD(Logger(), __PRETTY_FUNCTION__);
190  core::utils::param::Parameter tmp_par(name, value);
191  Write(tmp_par);
192  }
193 
203  void Receive(ccf::common::DataFrame& frame,
204  bool& frame_received,
205  const double timeout,
206  bool& timed_out);
207 
209  void Scan(std::vector<core::utils::param::Parameter>& pars);
210 
212  void Start();
213 
215  void Stop();
216 
219  void HandleSetup();
220 
223  void HandleParPreWrite(core::utils::param::Parameter& par);
224 
227  void HandleParPostWrite(core::utils::param::Parameter& par);
228 
230  void HandleParPostRead(core::utils::param::Parameter& par);
231 
235  void MapParForDevice(core::utils::param::Parameter& par) const;
236 
240  void MapParFromDevice(core::utils::param::Parameter& par) const;
241 
243  bool HasNameMapping(const std::string& name) const;
244 
247  virtual void InitialiseUser();
248 
251  virtual void SetDeviceAddressUser(const std::string& address);
252 
255  virtual void CheckConnectionUser(bool& connected);
256 
259  virtual void CheckStatusUser(ccf::HwStatus& status,
260  std::string& message);
261 
265  virtual bool HasDevicePropertyUser(const std::string& property,
266  std::string& value);
267 
271  virtual double GetTheoreticFrameRateUser();
272 
275  virtual void ConnectUser();
276 
279  virtual void DisconnectUser();
280 
284  virtual bool IsConnectedUser() const;
285 
288  virtual void ReadUser(const std::string& name,
289  core::utils::param::Parameter& par);
290 
294  virtual void ReadUser(const std::vector<std::string>& names,
295  std::vector<core::utils::param::Parameter>& pars);
296 
299  virtual void ReceiveUser(ccf::common::DataFrame& frame,
300  bool& frame_received,
301  const double timeout,
302  bool& timed_out);
303 
306  virtual void ScanUser(std::vector<core::utils::param::Parameter>& pars);
307 
310  virtual void StartUser();
311 
314  virtual void StopUser();
315 
318  virtual void WriteUser(const core::utils::param::Parameter& par);
319 
323  virtual void WriteUser(const std::vector<core::utils::param::Parameter>& pars);
324 
327  virtual void HandleSetupUser();
328 
331  virtual void HandleParPreWriteUser(core::utils::param::Parameter& par);
332 
335  virtual void HandleParPostWriteUser(core::utils::param::Parameter& par);
336 
339  virtual void HandleParPostReadUser(core::utils::param::Parameter& par);
340 
341  protected:
343 
344  private:
345  bool m_initialised;
346  bool m_is_sim_adapter;
347  std::string m_device_address;
348  std::string m_host_address;
349  bool m_allow_lost_frames;
350  uint64_t m_lost_frames_count;
351  NameMapping m_device_name_mapping;
352  DeviceInfo m_device_info;
353 
354  std::map<std::string, core::utils::param::Parameter> m_device_property_registry;
355  };
356 
357 }
358 
359 #endif // CCF_COMMON_COM_ADPT_BASE_HPP_H_
ccf::Base
Class to be used as parent all CCF classes.
Definition: base.hpp:152
ccf::common::ComAdptBase::GetDeviceAddress
const std::string & GetDeviceAddress() const
Return the address from the configuration.
Definition: comAdptBase.cpp:442
ccf::common::ComAdptBase::DisconnectUser
virtual void DisconnectUser()
Definition: comAdptBase.cpp:386
CCFTHROW
#define CCFTHROW(msg)
Definition: base.hpp:568
ccf::common::ComAdptBase::HandleSetupUser
virtual void HandleSetupUser()
Definition: comAdptBase.cpp:484
ccf::common::ComAdptBase::SetIsConnected
void SetIsConnected(const bool connected)
Definition: comAdptBase.cpp:267
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:60
ccf::common::ComAdptBase::Receive
void Receive(ccf::common::DataFrame &frame, bool &frame_received, const double timeout, bool &timed_out)
Definition: comAdptBase.cpp:249
ccf::common::ComAdptBase::Stop
void Stop()
Stop the image acquisition in the device.
Definition: comAdptBase.cpp:304
db.hpp
ccf::common::ComAdptBase::WriteDefaultSetupUser
virtual void WriteDefaultSetupUser()
Definition: comAdptBase.cpp:180
ccf::common::ComAdptBase::WriteUser
virtual void WriteUser(const core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:430
ccf::common::ComAdptBase::ResetLostFramesCount
void ResetLostFramesCount()
Reset the lost frames counter.
Definition: comAdptBase.cpp:641
ccf::common::ComAdptBase::Disconnect
void Disconnect()
Disconnect from the device.
Definition: comAdptBase.cpp:197
ccf::common::ComAdptBase::Read
TYPE Read(const std::string &name)
Definition: comAdptBase.hpp:168
ccf::common::ComAdptBase::HandleSetup
void HandleSetup()
Definition: comAdptBase.cpp:479
ccf::common::ComAdptBase::MapParFromDevice
void MapParFromDevice(core::utils::param::Parameter &par) const
Definition: comAdptBase.cpp:503
ccf::common::ComAdptBase::m_is_connected
bool m_is_connected
Definition: comAdptBase.hpp:342
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:457
ccf::common::ComAdptBase::IncLostFramesCount
uint64_t IncLostFramesCount()
Increment the counter of lost frames. The new value is returned.
Definition: comAdptBase.cpp:631
ccf::common::DeviceInfo
Definition: config.hpp:19
ccf::common::ComAdptBase::CheckConnection
void CheckConnection(bool &connected)
Check if the connection to the device is OK.
Definition: comAdptBase.cpp:72
config.hpp
ccf::common::ComAdptBase::InitialiseUser
virtual void InitialiseUser()
Definition: comAdptBase.cpp:130
ccf::common::ComAdptBase::WriteDevicePropsUser
virtual void WriteDevicePropsUser()
Definition: comAdptBase.cpp:162
ccf::common::ComAdptBase::Initialise
void Initialise(const bool re_init=false)
Definition: comAdptBase.cpp:92
ccf::common::ComAdptBase::ScanUser
virtual void ScanUser(std::vector< core::utils::param::Parameter > &pars)
Definition: comAdptBase.cpp:415
ccf::common::ComAdptBase::GetIsSimAdapter
bool GetIsSimAdapter() const
Return the Simulation Adapter Flag.
Definition: comAdptBase.cpp:35
ccf::common::ComAdptBase::IsConnectedUser
virtual bool IsConnectedUser() const
Definition: comAdptBase.cpp:45
ccf::common::ComAdptBase::HandleParPreWrite
void HandleParPreWrite(core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:447
ccf::common::ComAdptBase::ConnectUser
virtual void ConnectUser()
Definition: comAdptBase.cpp:381
ccf::HwStatus
HwStatus
HW status values.
Definition: base.hpp:196
ccf::common::ComAdptBase::ReadUser
virtual void ReadUser(const std::string &name, core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:391
ccf::common::ComAdptBase::GetProtocol
const std::string & GetProtocol() const
Return the communication protocol used.
Definition: comAdptBase.cpp:50
ccf::common::ComAdptBase::SetDeviceAddressUser
virtual void SetDeviceAddressUser(const std::string &address)
Definition: comAdptBase.cpp:365
ccf::common::ComAdptBase::StartUser
virtual void StartUser()
Definition: comAdptBase.cpp:420
ccf::common::ComAdptBase::HasDevicePropertyUser
virtual bool HasDevicePropertyUser(const std::string &property, std::string &value)
Definition: comAdptBase.cpp:612
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:514
ccf::common::ComAdptBase::HandleParPostWrite
void HandleParPostWrite(core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:452
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:188
ccf::common::GetHostAddress
std::string GetHostAddress()
ccf::common::ComAdptBase::WriteDefaultSetup
void WriteDefaultSetup()
Definition: comAdptBase.cpp:174
ccf::common::ComAdptBase::CheckStatus
void CheckStatus(ccf::HwStatus &status, std::string &message)
Check the status of the device (health status).
Definition: comAdptBase.cpp:81
dataFrame.hpp
ccf::common::ComAdptBase::ComAdptBase
ComAdptBase()
Definition: comAdptBase.cpp:18
nameMapping.hpp
ccf::common::ComAdptBase::Start
void Start()
Start the image acquisition in the device.
Definition: comAdptBase.cpp:291
ccf::common::ComAdptBase::GetTheoreticFrameRate
double GetTheoreticFrameRate()
Render the theoritic, possible achievable frame rate (frame/s).
Definition: comAdptBase.cpp:619
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:425
base.hpp
ccf::common::ComAdptBase::CheckStatusUser
virtual void CheckStatusUser(ccf::HwStatus &status, std::string &message)
Definition: comAdptBase.cpp:375
ccf::common::ComAdptBase::LoadDeviceNameMapping
void LoadDeviceNameMapping(const std::string &name_mapping_file)
Definition: comAdptBase.cpp:474
ccf::common::ComAdptBase::GetAllowLostFrames
bool GetAllowLostFrames() const
Return flag (cfg par) indicating if lost frames shall be ignored silently.
Definition: comAdptBase.cpp:125
ccf::common
Definition: appBase.cpp:8
ccf::common::ComAdptBase::GetTheoreticFrameRateUser
virtual double GetTheoreticFrameRateUser()
Definition: comAdptBase.cpp:624
ccf::common::ComAdptBase::ReceiveUser
virtual void ReceiveUser(ccf::common::DataFrame &frame, bool &frame_received, const double timeout, bool &timed_out)
Definition: comAdptBase.cpp:407
ccf::common::ComAdptBase::GetId
const std::string & GetId() const
Get the ID of the associated device.
Definition: comAdptBase.cpp:55
ccf::common::ComAdptBase::Write
void Write(const core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:316
ccf::common::ComAdptBase::HandleParPostWriteUser
virtual void HandleParPostWriteUser(core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:466
ccf::common::ComAdptBase::~ComAdptBase
virtual ~ComAdptBase()
Definition: comAdptBase.cpp:26
ccf::common::ComAdptBase::Connect
void Connect()
Definition: comAdptBase.cpp:134
ccf::common::ComAdptBase::IsConnected
bool IsConnected() const
Returns true if the connection to the device is established and valid.
Definition: comAdptBase.cpp:40
ccf::common::ComAdptBase::HasDeviceProperty
bool HasDeviceProperty(const std::string &property, std::string &value)
Definition: comAdptBase.cpp:566
ccf::common::ComAdptBase::HandleParPostReadUser
virtual void HandleParPostReadUser(core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:470
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:273
ccf::common::ComAdptBase::WriteDeviceProps
void WriteDeviceProps()
Definition: comAdptBase.cpp:157
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:551
ccf::common::ComAdptBase::HandleParPreWriteUser
virtual void HandleParPreWriteUser(core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:462
ccf::common::ComAdptBase::SetIsSimAdapter
void SetIsSimAdapter(const bool is_sim)
Set the Simulation Adapter Flag.
Definition: comAdptBase.cpp:30
ccf::common::ComAdptBase::CheckConnectionUser
virtual void CheckConnectionUser(bool &connected)
Definition: comAdptBase.cpp:370
ccf::common::ComAdptBase::GetLostFramesCount
uint64_t GetLostFramesCount() const
Return the number of lost frames currently registered.
Definition: comAdptBase.cpp:636
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:61
ccf::common::ComAdptBase::Read
void Read(const std::string &name, core::utils::param::Parameter &par)
Definition: comAdptBase.cpp:210
ccf::common::ComAdptBase::MapParForDevice
void MapParForDevice(core::utils::param::Parameter &par) const
Definition: comAdptBase.cpp:509
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:558
ccf::common::ComAdptBase
Class to be used as parent for CCF Communication Adapters.
Definition: comAdptBase.hpp:31