ifw-ccf  1.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 <ctd/param/Parameter.hpp>
9 
10 #include <ccf/common/base.hpp>
11 #include <ccf/common/dataFrame.hpp>
14 #include <ccf/common/db.hpp>
15 
16 // TODO: Check if some of the methods are missing "const" declaration.
17 
18 namespace ccf::common {
19 
24  std::string GetHostAddress();
25 
31  class ComAdptBase: public Base {
32  public:
33 
34  ComAdptBase();
35  virtual ~ComAdptBase();
36 
39 
41  const std::string& GetCameraAddress() const;
42 
44  const std::string& GetId() const;
45 
47  void SetHostAdddress(const std::string& host_address);
48 
50  const std::string& GetHostAddress();
51 
53  void SetIsSimAdapter(const bool is_sim);
54 
56  bool GetIsSimAdapter() const;
57 
59  void SetProtocol(const std::string& protocol);
60 
62  const std::string& GetProtocol() const;
63 
66  template <class TYPE>
67  TYPE GetCameraProperty(const std::string& property) {
68  CCFTRACE;
69  std::string tmp_value;
70  if (HasCameraProperty(property, tmp_value)) {
71  TYPE ret_value;
72  ctd::conversion::Convert(tmp_value, ret_value);
73  return ret_value;
74  } else {
75  CCFTHROW("Requesting undefined camera property: " + property);
76  }
77  }
78 
81  bool HasCameraProperty(const std::string& property,
82  std::string& value);
83 
85  double GetTheoreticFrameRate();
86 
89  void LoadCameraNameMapping(const std::string& name_mapping_file);
90 
93  void Initialise(const bool re_init = false);
94 
96  void SetCameraAddress(const std::string& address);
97 
99  void CheckConnection(bool& connected);
100 
102  void CheckStatus(ccf::common::HwStatus& status,
103  std::string& message);
104 
106  bool IsConnected() const;
107 
108  // Connect to the camera. If already connected, it will disconnect and reconnect.
109  void Connect();
110 
112  void Disconnect();
113 
116  void WriteAdapterProps();
117 
121  virtual void WriteAdapterPropsUser();
122 
125  void SetIsConnected(const bool connected);
126 
128  bool GetAllowLostFrames() const;
129 
131  uint64_t IncLostFramesCount();
132 
134  uint64_t GetLostFramesCount() const;
135 
137  void ResetLostFramesCount();
138 
141  void Read(const std::string& name,
142  ctd::param::Parameter& par);
143 
146  void Read(const std::vector<std::string>& names,
147  std::vector<ctd::param::Parameter>& pars);
148 
151  std::string Read(const std::string& name);
152 
154  template <class TYPE>
155  TYPE Read(const std::string& name) {
156  CCFTRACE;
157  ctd::param::Parameter par;
158  Read(name, par);
159  TYPE native_value;
160  ctd::conversion::Convert(par.GetValue(), native_value);
161  return native_value;
162  }
163 
166  void Write(const ctd::param::Parameter& par);
167 
170  void Write(const std::vector<ctd::param::Parameter>& pars);
171 
173  template <class TYPE>
174  void Write(const std::string& name, const TYPE& value) {
175  CCFTRACE;
176  ctd::param::Parameter tmp_par(name, value);
177  Write(tmp_par);
178  }
179 
189  void Receive(ccf::common::DataFrame& frame,
190  bool& frame_received,
191  const double timeout,
192  bool& timed_out);
193 
195  void Scan(std::vector<ctd::param::Parameter>& pars);
196 
198  void Start();
199 
201  void Stop();
202 
205  void HandleSetup();
206 
209  void HandleParPreWrite(ctd::param::Parameter& par);
210 
212  void HandleParPostWrite(ctd::param::Parameter& par);
213 
215  void HandleParPostRead(ctd::param::Parameter& par);
216 
219  void MapParForDevice(ctd::param::Parameter& par) const;
220 
223  void MapParFromDevice(ctd::param::Parameter& par) const;
224 
226  bool HasNameMapping(const std::string& name) const;
227 
230  virtual void InitialiseUser();
231 
234  virtual void SetCameraAddressUser(const std::string& address);
235 
238  virtual void CheckConnectionUser(bool& connected);
239 
242  virtual void CheckStatusUser(ccf::common::HwStatus& status,
243  std::string& message);
244 
248  virtual bool HasCameraPropertyUser(const std::string& property,
249  std::string& value);
250 
254  virtual double GetTheoreticFrameRateUser();
255 
258  virtual void ConnectUser();
259 
262  virtual void DisconnectUser();
263 
266  virtual bool IsConnectedUser() const;
267 
270  virtual void ReadUser(const std::string& name,
271  ctd::param::Parameter& par);
272 
276  virtual void ReadUser(const std::vector<std::string>& names,
277  std::vector<ctd::param::Parameter>& pars);
278 
281  virtual void ReceiveUser(ccf::common::DataFrame& frame,
282  bool& frame_received,
283  const double timeout,
284  bool& timed_out);
285 
288  virtual void ScanUser(std::vector<ctd::param::Parameter>& pars);
289 
292  virtual void StartUser();
293 
296  virtual void StopUser();
297 
300  virtual void WriteUser(const ctd::param::Parameter& par);
301 
305  virtual void WriteUser(const std::vector<ctd::param::Parameter>& pars);
306 
309  virtual void HandleSetupUser();
310 
313  virtual void HandleParPreWriteUser(ctd::param::Parameter& par);
314 
317  virtual void HandleParPostWriteUser(ctd::param::Parameter& par);
318 
321  virtual void HandleParPostReadUser(ctd::param::Parameter& par);
322 
323  protected:
325 
326  private:
327  bool m_initialised;
328  bool m_is_sim_adapter;
329  std::string m_protocol;
330  std::string m_camera_address;
331  std::string m_host_address;
332  std::string m_id;
333  bool m_allow_lost_frames;
334  uint64_t m_lost_frames_count;
335  NameMapping m_cam_name_mapping;
336 
337  std::map<std::string, ctd::param::Parameter> m_cam_property_registry;
338  };
339 
340 }
341 
342 #endif // CCF_COMMON_COM_ADPT_BASE_HPP_H_
ccf::common::ComAdptBase::DisconnectUser
virtual void DisconnectUser()
Definition: comAdptBase.cpp:367
CCFTHROW
#define CCFTHROW(msg)
Throw a "rad::Exception()". The location ("CCFLOC") for the throw statement is added to the message.
Definition: base.hpp:410
ccf::common::ComAdptBase::HandleSetupUser
virtual void HandleSetupUser()
Definition: comAdptBase.cpp:471
ccf::common::ComAdptBase::MapParFromDevice
void MapParFromDevice(ctd::param::Parameter &par) const
Definition: comAdptBase.cpp:485
ccf::common::ComAdptBase::SetIsConnected
void SetIsConnected(const bool connected)
Definition: comAdptBase.cpp:250
ccf::common::ComAdptBase::HasCameraPropertyUser
virtual bool HasCameraPropertyUser(const std::string &property, std::string &value)
Definition: comAdptBase.cpp:588
ccf::common::ComAdptBase::HasCameraProperty
bool HasCameraProperty(const std::string &property, std::string &value)
Definition: comAdptBase.cpp:547
ccf::common::ComAdptBase::Receive
void Receive(ccf::common::DataFrame &frame, bool &frame_received, const double timeout, bool &timed_out)
Definition: comAdptBase.cpp:232
ccf::common::ComAdptBase::Stop
void Stop()
Stop the image acquisition in the camera.
Definition: comAdptBase.cpp:287
ccf::common::ComAdptBase::HandleParPostWriteUser
virtual void HandleParPostWriteUser(ctd::param::Parameter &par)
Definition: comAdptBase.cpp:453
ccf::common::ConfigBase
Config class for CCF applications.
Definition: configBase.hpp:84
db.hpp
ccf::common::ComAdptBase::WriteAdapterProps
void WriteAdapterProps()
Definition: comAdptBase.cpp:151
ccf::common::ComAdptBase::HandleParPreWrite
void HandleParPreWrite(ctd::param::Parameter &par)
Definition: comAdptBase.cpp:434
ccf::common::ComAdptBase::ResetLostFramesCount
void ResetLostFramesCount()
Reset the lost frames counter.
Definition: comAdptBase.cpp:617
ccf::common::ComAdptBase::SetProtocol
void SetProtocol(const std::string &protocol)
Set the communication protocol used.
Definition: comAdptBase.cpp:423
ccf::common::ComAdptBase::Disconnect
void Disconnect()
Disconnect from the camera.
Definition: comAdptBase.cpp:180
ccf::common::ComAdptBase::Read
TYPE Read(const std::string &name)
Template method to read a parameter, taking care of the conversion to the desired user representation...
Definition: comAdptBase.hpp:155
ccf::common::ComAdptBase::GetCameraAddress
const std::string & GetCameraAddress() const
Return the address of the camera from the configuration.
Definition: comAdptBase.cpp:429
ccf::common::ComAdptBase::GetCameraProperty
TYPE GetCameraProperty(const std::string &property)
Definition: comAdptBase.hpp:67
ccf::common::ComAdptBase::HandleSetup
void HandleSetup()
Definition: comAdptBase.cpp:466
ccf::common::ComAdptBase::m_is_connected
bool m_is_connected
Definition: comAdptBase.hpp:324
ccf::common::ComAdptBase::WriteAdapterPropsUser
virtual void WriteAdapterPropsUser()
Definition: comAdptBase.cpp:156
ccf::common::ComAdptBase::IncLostFramesCount
uint64_t IncLostFramesCount()
Increment the counter of lost frames. The new value is returned.
Definition: comAdptBase.cpp:607
ccf::common::ComAdptBase::CheckStatus
void CheckStatus(ccf::common::HwStatus &status, std::string &message)
Check the status of the camera (health status).
Definition: comAdptBase.cpp:82
ccf::common::ComAdptBase::Read
void Read(const std::string &name, ctd::param::Parameter &par)
Definition: comAdptBase.cpp:193
ccf::common::ComAdptBase::CheckConnection
void CheckConnection(bool &connected)
Check if the connection to the camera is OK.
Definition: comAdptBase.cpp:73
ccf::common::ComAdptBase::InitialiseUser
virtual void InitialiseUser()
Definition: comAdptBase.cpp:127
ccf::common::Base
Class to be used as parent all CCF classes.
Definition: base.hpp:93
ccf::common::ComAdptBase::Initialise
void Initialise(const bool re_init=false)
Definition: comAdptBase.cpp:98
ccf::common::ComAdptBase::WriteUser
virtual void WriteUser(const ctd::param::Parameter &par)
Definition: comAdptBase.cpp:411
ccf::common::ComAdptBase::GetIsSimAdapter
bool GetIsSimAdapter() const
Return the Simulation Adapter Flag.
Definition: comAdptBase.cpp:37
ccf::common::ComAdptBase::IsConnectedUser
virtual bool IsConnectedUser() const
Definition: comAdptBase.cpp:47
ccf::common::ComAdptBase::ConnectUser
virtual void ConnectUser()
Definition: comAdptBase.cpp:362
ccf::common::ComAdptBase::LoadCameraNameMapping
void LoadCameraNameMapping(const std::string &name_mapping_file)
Definition: comAdptBase.cpp:461
ccf::common::ComAdptBase::HandleParPostReadUser
virtual void HandleParPostReadUser(ctd::param::Parameter &par)
Definition: comAdptBase.cpp:457
ccf::common::ComAdptBase::GetProtocol
const std::string & GetProtocol() const
Return the communication protocol used.
Definition: comAdptBase.cpp:52
ccf::common::ComAdptBase::StartUser
virtual void StartUser()
Definition: comAdptBase.cpp:401
ccf::common::ComAdptBase::HasNameMapping
bool HasNameMapping(const std::string &name) const
Return true if a mapping is defined in the Camera Name Mapping for the given name.
Definition: comAdptBase.cpp:496
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:174
ccf::common::GetHostAddress
std::string GetHostAddress()
ccf::common::ComAdptBase::HandleParPostWrite
void HandleParPostWrite(ctd::param::Parameter &par)
Invoked after writing to the camera in case additional processing and downloading of parameters is ne...
Definition: comAdptBase.cpp:439
dataFrame.hpp
ccf::common::ComAdptBase::Write
void Write(const ctd::param::Parameter &par)
Definition: comAdptBase.cpp:299
ccf::common::ComAdptBase::SetCameraAddressUser
virtual void SetCameraAddressUser(const std::string &address)
Definition: comAdptBase.cpp:346
ccf::common::ComAdptBase::ComAdptBase
ComAdptBase()
Definition: comAdptBase.cpp:18
nameMapping.hpp
ccf::common::ComAdptBase::Start
void Start()
Start the image acquisition in the camera.
Definition: comAdptBase.cpp:274
ccf::common::ComAdptBase::CheckStatusUser
virtual void CheckStatusUser(ccf::common::HwStatus &status, std::string &message)
Definition: comAdptBase.cpp:356
ccf::common::ComAdptBase::GetTheoreticFrameRate
double GetTheoreticFrameRate()
Render the theoritic, possible achievable frame rate (frame/s).
Definition: comAdptBase.cpp:595
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:406
base.hpp
ccf::common::ComAdptBase::GetAllowLostFrames
bool GetAllowLostFrames() const
Return flag (cfg par) indicating if lost frames shall be ignored silently.
Definition: comAdptBase.cpp:122
ccf::common::ComAdptBase::Scan
void Scan(std::vector< ctd::param::Parameter > &pars)
Scan the address of the associated camera and store the parameters in the vector.
Definition: comAdptBase.cpp:256
ccf::common::ComAdptBase::MapParForDevice
void MapParForDevice(ctd::param::Parameter &par) const
Definition: comAdptBase.cpp:491
ccf::common::ComAdptBase::HandleParPreWriteUser
virtual void HandleParPreWriteUser(ctd::param::Parameter &par)
Definition: comAdptBase.cpp:449
ccf::common
Definition: appBase.cpp:8
ccf::common::ComAdptBase::GetTheoreticFrameRateUser
virtual double GetTheoreticFrameRateUser()
Definition: comAdptBase.cpp:600
ccf::common::ComAdptBase::ReceiveUser
virtual void ReceiveUser(ccf::common::DataFrame &frame, bool &frame_received, const double timeout, bool &timed_out)
Definition: comAdptBase.cpp:388
ccf::common::ComAdptBase::GetId
const std::string & GetId() const
Get the ID of the associated camera.
Definition: comAdptBase.cpp:57
ccf::common::ComAdptBase::HandleParPostRead
void HandleParPostRead(ctd::param::Parameter &par)
Invoked before reading a parameter from the camera, in case speciel handling is needed.
Definition: comAdptBase.cpp:444
ccf::common::ComAdptBase::ScanUser
virtual void ScanUser(std::vector< ctd::param::Parameter > &pars)
Definition: comAdptBase.cpp:396
ccf::common::ComAdptBase::~ComAdptBase
virtual ~ComAdptBase()
Definition: comAdptBase.cpp:28
ccf::common::ComAdptBase::Connect
void Connect()
Definition: comAdptBase.cpp:131
ccf::common::ComAdptBase::IsConnected
bool IsConnected() const
Returns true if the connection to the camera is established and valid.
Definition: comAdptBase.cpp:42
CCFTRACE
#define CCFTRACE
TRACE log macro. Includes the location ("CCFLOC") in the log message.
Definition: base.hpp:403
ccf::common::ComAdptBase::SetHostAdddress
void SetHostAdddress(const std::string &host_address)
Set the address of the host (network interface) used for communicating with the camera.
Definition: comAdptBase.cpp:532
ccf::common::ComAdptBase::Cfg
ccf::common::ConfigBase & Cfg()
Return reference to general configuration object (singleton).
Definition: comAdptBase.cpp:93
ccf::common::ComAdptBase::ReadUser
virtual void ReadUser(const std::string &name, ctd::param::Parameter &par)
Definition: comAdptBase.cpp:372
ccf::common::ComAdptBase::SetCameraAddress
void SetCameraAddress(const std::string &address)
Set the internal address, e.g. URI, used for communicating with the camera.
Definition: comAdptBase.cpp:62
ccf::common::ComAdptBase::SetIsSimAdapter
void SetIsSimAdapter(const bool is_sim)
Set the Simulation Adapter Flag.
Definition: comAdptBase.cpp:32
ccf::common::ComAdptBase::CheckConnectionUser
virtual void CheckConnectionUser(bool &connected)
Definition: comAdptBase.cpp:351
ccf::common::ComAdptBase::GetLostFramesCount
uint64_t GetLostFramesCount() const
Return the number of lost frames currently registered.
Definition: comAdptBase.cpp:612
ccf::common::DataFrame
Frame class used to store the data and metadata for one frames received from the camera.
Definition: dataFrame.hpp:15
ccf::common::HwStatus
HwStatus
HW status values.
Definition: base.hpp:132
configBase.hpp
ccf::common::ComAdptBase::GetHostAddress
const std::string & GetHostAddress()
Return the address of the host (network interface) used for communicating with the camera.
Definition: comAdptBase.cpp:539
ccf::common::ComAdptBase
Class to be used as parent for CCF Communication Adapters.
Definition: comAdptBase.hpp:31