7#ifndef CCF_COMMON_COM_ADPT_BASE_HPP_H_
8#define CCF_COMMON_COM_ADPT_BASE_HPP_H_
10#include <ifw/core/utils/param/parameter.hpp>
76 const std::string&
GetId()
const;
100 LOG4CPLUS_TRACE_METHOD(
Logger(), __PRETTY_FUNCTION__);
101 std::string tmp_value;
104 ifw::core::utils::conversion::Convert(tmp_value, ret_value);
107 CCFTHROW(
"Requesting undefined device property: " + property);
136 std::string& message);
150 const double timeout = 10);
198 void Read(
const std::string& name,
199 ifw::core::utils::param::Parameter& par);
204 void Read(
const std::vector<std::string>& names,
205 std::vector<ifw::core::utils::param::Parameter>& pars);
210 std::string
Read(
const std::string& name);
214 template <
class TYPE>
215 TYPE
Read(
const std::string& name) {
216 LOG4CPLUS_TRACE_METHOD(
Logger(), __PRETTY_FUNCTION__);
217 ifw::core::utils::param::Parameter par;
220 ifw::core::utils::conversion::Convert(par.GetValue(), native_value);
227 void Write(
const ifw::core::utils::param::Parameter& par);
231 void Write(
const std::vector<ifw::core::utils::param::Parameter>& pars);
235 template <
class TYPE>
236 void Write(
const std::string& name,
const TYPE& value) {
237 LOG4CPLUS_TRACE_METHOD(
Logger(), __PRETTY_FUNCTION__);
238 ifw::core::utils::param::Parameter tmp_par(name, value);
252 bool& frame_received,
253 const double timeout,
257 void Scan(std::vector<ifw::core::utils::param::Parameter>& pars);
314 std::string& message);
342 virtual void ReadUser(
const std::string& name,
343 ifw::core::utils::param::Parameter& par);
348 virtual void ReadUser(
const std::vector<std::string>& names,
349 std::vector<ifw::core::utils::param::Parameter>& pars);
354 bool& frame_received,
355 const double timeout,
364 virtual void ScanUser(std::vector<ifw::core::utils::param::Parameter>& pars);
376 virtual void WriteUser(
const ifw::core::utils::param::Parameter& par);
381 virtual void WriteUser(
const std::vector<ifw::core::utils::param::Parameter>& pars);
414 bool m_initialised{
false};
415 bool m_is_sim_adapter{
false};
416 std::string m_device_address;
417 int16_t m_device_array_width{0};
418 int16_t m_device_array_height{0};
419 int8_t m_device_pixel_resolution{0};
420 std::string m_host_address;
421 bool m_allow_lost_frames{
false};
422 uint64_t m_lost_frames_count{0};
423 bool m_auto_adjust_time_rate{
true};
424 NameMapping m_device_name_mapping;
429 std::map<std::string, std::string> m_status_setup_keys{
430 {
"status.expo.time",
"expo.time"},
433 {
"expo.frame_rate",
"status.expo.frame_rate"},
434 {
"status.expo.win_start_x",
"expo.win_start_x"},
435 {
"status.expo.win_start_y",
"expo.win_start_y"},
436 {
"status.expo.win_width",
"expo.win_width"},
437 {
"status.expo.win_height",
"expo.win_height"}};
439 DeviceInfo m_device_info;
440 std::atomic<double> m_min_acq_period{0};
441 std::atomic<double> m_time_last_frame{0};
442 std::atomic<bool> m_dev_acq_running{
false};
443 std::atomic<uint64_t> m_frame_counter{0};
445 std::map<std::string, ifw::core::utils::param::Parameter> m_device_property_registry;
#define CCFTHROW(msg)
Definition base.hpp:399
Base()
Definition base.cpp:121
Definition comAdptBase.hpp:28
double m_abs_time
Definition comAdptBase.hpp:31
TriggerType m_trigger_type
Definition comAdptBase.hpp:30
std::string m_info
Definition comAdptBase.hpp:33
std::string m_custom_trigger
Definition comAdptBase.hpp:32
bool m_deferred_acq_start_active
Definition comAdptBase.hpp:34
virtual ~ComAdptBase()
Definition comAdptBase.cpp:31
const int16_t GetDeviceWidth() const
Return the width of the data array from the configuration.
Definition comAdptBase.cpp:641
virtual bool HasDevicePropertyUser(const std::string &property, std::string &value)
Definition comAdptBase.cpp:1134
void SetHostAdddress(const std::string &host_address)
Set the address of the host (network interface) used for communication.
Definition comAdptBase.cpp:1072
virtual void ConnectUser()
Definition comAdptBase.cpp:543
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:1035
void Stop()
Stop the image acquisition in the device.
Definition comAdptBase.cpp:454
virtual void ReceiveUser(ifw::ccf::common::DataFrame &frame, bool &frame_received, const double timeout, bool &timed_out)
Definition comAdptBase.cpp:566
void CheckIfConnected() const
Check if the connection is established. If not, throw an exception.
Definition comAdptBase.cpp:55
virtual void WriteDefaultSetupUser()
Definition comAdptBase.cpp:264
virtual void HandleParPostWriteUser(ifw::core::utils::param::Parameter &par)
Definition comAdptBase.cpp:675
void SetIsSimAdapter(const bool is_sim)
Set the Simulation Adapter Flag.
Definition comAdptBase.cpp:35
void Write(const ifw::core::utils::param::Parameter &par)
Definition comAdptBase.cpp:467
uint64_t IncLostFramesCount()
Increment the counter of lost frames. The new value is returned.
Definition comAdptBase.cpp:1155
void SetDeviceAddress(const std::string &address)
Set the internal address, e.g. URI, used for communicating with the device.
Definition comAdptBase.cpp:72
double GetTheoreticFrameRate()
Render the theoritic, possible achievable frame rate (frame/s).
Definition comAdptBase.cpp:1141
virtual double GetTheoreticFrameRateUser()
Definition comAdptBase.cpp:1146
ComAdptBase()
Definition comAdptBase.cpp:26
void SetLostFramesCount(const int64_t count)
Definition comAdptBase.cpp:1160
virtual void HandleParPostReadUser(ifw::core::utils::param::Parameter &par)
Definition comAdptBase.cpp:679
void ResetLostFramesCount()
Reset the lost frames counter.
Definition comAdptBase.cpp:1170
void HandleParPostRead(ifw::core::utils::param::Parameter &par)
Invoked before reading a parameter from the device, in case speciel handling is needed.
Definition comAdptBase.cpp:666
AcqTrigger m_acq_trigger
Definition comAdptBase.hpp:409
void CheckConnection(bool &connected)
Check if the connection to the device is OK.
Definition comAdptBase.cpp:84
virtual void AddMetaDataUser(ifw::ccf::common::DataFrame &frame)
Definition comAdptBase.cpp:405
virtual void HandleSetupUser()
Definition comAdptBase.cpp:991
const int16_t GetDeviceHeight() const
Return the height of the data array from the configuration.
Definition comAdptBase.cpp:646
bool GetIsSimAdapter() const
Return the Simulation Adapter Flag.
Definition comAdptBase.cpp:40
void ReadMutableSetupPars()
Read setup parameters from the camera device, which may mutate.
Definition comAdptBase.cpp:958
bool IsConnected() const
Returns true if the connection to the device is established and valid.
Definition comAdptBase.cpp:45
void WriteDeviceProps()
Definition comAdptBase.cpp:236
void HandleParPreWrite(ifw::core::utils::param::Parameter &par)
Definition comAdptBase.cpp:656
virtual void ReadUser(const std::string &name, ifw::core::utils::param::Parameter &par)
Definition comAdptBase.cpp:551
virtual void WriteDevicePropsUser()
Definition comAdptBase.cpp:241
virtual void StartUser()
Definition comAdptBase.cpp:577
virtual void ScanUser(std::vector< ifw::core::utils::param::Parameter > &pars)
Definition comAdptBase.cpp:573
TYPE Read(const std::string &name)
Definition comAdptBase.hpp:215
virtual void InitialiseUser()
Definition comAdptBase.cpp:178
double GetMaxFrameRate() const
Get Maximim frame rate (Hz).
Definition comAdptBase.cpp:1175
bool GetAllowLostFrames() const
Return flag (cfg par) indicating if lost frames shall be ignored silently.
Definition comAdptBase.cpp:153
bool m_is_connected
Definition comAdptBase.hpp:408
void Read(const std::string &name, ifw::core::utils::param::Parameter &par)
Definition comAdptBase.cpp:327
double GetTimeForLastFrame() const
Definition comAdptBase.cpp:409
void Receive(ifw::ccf::common::DataFrame &frame, bool &frame_received, const double timeout, bool &timed_out)
Definition comAdptBase.cpp:367
const std::string & GetDeviceAddress() const
Return the address from the configuration.
Definition comAdptBase.cpp:596
const std::string & GetProtocol() const
Return the communication protocol used.
Definition comAdptBase.cpp:62
virtual void SetDeviceAddressUser(const std::string &address)
Definition comAdptBase.cpp:530
virtual void SetAcqTrigger(const AcqTrigger &acq_trigger)
Definition comAdptBase.cpp:158
bool HasDeviceProperty(const std::string &property, std::string &value)
Definition comAdptBase.cpp:1098
const NameMapping & GetNameMapping() const
Definition comAdptBase.cpp:315
void AutoConnect(const uint8_t attempts=5, const double timeout=10)
Definition comAdptBase.cpp:205
ifw::ccf::common::TriggerType GetAcqTriggerType() const
Definition comAdptBase.cpp:173
static std::string ResolveHostname(const std::string &address)
Definition comAdptBase.cpp:601
const std::string & GetId() const
Get the ID of the associated device.
Definition comAdptBase.cpp:67
virtual const std::string & GetHostAddress()
Return the address of the host (network interface) used for communicating with the device.
Definition comAdptBase.cpp:1080
uint64_t GetLostFramesCount() const
Return the number of lost frames currently registered.
Definition comAdptBase.cpp:1165
void CheckStatus(ifw::ccf::HwStatus &status, std::string &message)
Check the status of the device (health status).
Definition comAdptBase.cpp:93
void MapParForDevice(ifw::core::utils::param::Parameter &par) const
Definition comAdptBase.cpp:1030
void Write(const std::string &name, const TYPE &value)
Definition comAdptBase.hpp:236
const int8_t GetDeviceResolution() const
Return the resolution of the data elements from the configuration.
Definition comAdptBase.cpp:651
virtual void AdjustExpoTimeFrameRate()
Definition comAdptBase.cpp:842
void Scan(std::vector< ifw::core::utils::param::Parameter > &pars)
Scan the address of the associated device and store the parameters in the vector.
Definition comAdptBase.cpp:420
virtual void HandleParPreWriteUser(ifw::core::utils::param::Parameter &par)
Definition comAdptBase.cpp:671
void HandleParPostWrite(ifw::core::utils::param::Parameter &par)
Definition comAdptBase.cpp:661
void Initialise(const bool re_init=false)
Definition comAdptBase.cpp:104
virtual void StopUser()
Definition comAdptBase.cpp:581
void Start()
Start the image acquisition in the device.
Definition comAdptBase.cpp:438
virtual void WriteUser(const ifw::core::utils::param::Parameter &par)
Definition comAdptBase.cpp:585
TYPE GetDeviceProperty(const std::string &property)
Definition comAdptBase.hpp:99
AcqTrigger & GetAcqTrigger()
Definition comAdptBase.cpp:168
void MapParFromDevice(ifw::core::utils::param::Parameter &par) const
Definition comAdptBase.cpp:1024
virtual void CheckStatusUser(ifw::ccf::HwStatus &status, std::string &message)
Definition comAdptBase.cpp:538
void Disconnect()
Disconnect from the device.
Definition comAdptBase.cpp:302
void Connect()
Definition comAdptBase.cpp:182
void WriteDefaultSetup()
Definition comAdptBase.cpp:258
virtual bool IsConnectedUser() const
Definition comAdptBase.cpp:50
virtual void CheckConnectionUser(bool &connected)
Definition comAdptBase.cpp:534
uint64_t GetFrameCounter() const
Return the internal frame counter.
Definition comAdptBase.cpp:1180
void HandleSetup()
Definition comAdptBase.cpp:683
virtual void DisconnectUser()
Definition comAdptBase.cpp:547
virtual void SetAcqTriggerUser()
Specific implementation of the algorithm to trigger an acquisition.
Definition comAdptBase.cpp:320
void SetIsConnected(const bool connected)
Definition comAdptBase.cpp:413
Frame class used to store the data and metadata for one frames received from the camera.
Definition dataFrame.hpp:20
Implements a name mapping service, based on a Name Mapping File to be loaded and installed.
Definition nameMapping.hpp:26
Definition appBase.cpp:10
TriggerType
Definition comAdptBase.hpp:21
@ NOT_USED
Definition comAdptBase.hpp:25
@ ABS_TIME
Definition comAdptBase.hpp:23
@ CUSTOM
Definition comAdptBase.hpp:24
@ SIGNAL
Definition comAdptBase.hpp:22
std::string GetHostAddress()
log4cplus::Logger & Logger()
Definition base.cpp:24
HwStatus
HW status values.
Definition base.hpp:152