5#ifndef CCF_COMMON_COM_ADPT_BASE_HPP_H_
6#define CCF_COMMON_COM_ADPT_BASE_HPP_H_
8#include <ifw/core/utils/param/parameter.hpp>
65 const std::string&
GetId()
const;
89 LOG4CPLUS_TRACE_METHOD(
Logger(), __PRETTY_FUNCTION__);
90 std::string tmp_value;
93 ifw::core::utils::conversion::Convert(tmp_value, ret_value);
96 CCFTHROW(
"Requesting undefined device property: " + property);
125 std::string& message);
139 const double timeout = 10);
187 void Read(
const std::string& name,
188 ifw::core::utils::param::Parameter& par);
193 void Read(
const std::vector<std::string>& names,
194 std::vector<ifw::core::utils::param::Parameter>& pars);
199 std::string
Read(
const std::string& name);
203 template <
class TYPE>
204 TYPE
Read(
const std::string& name) {
205 LOG4CPLUS_TRACE_METHOD(
Logger(), __PRETTY_FUNCTION__);
206 ifw::core::utils::param::Parameter par;
209 ifw::core::utils::conversion::Convert(par.GetValue(), native_value);
216 void Write(
const ifw::core::utils::param::Parameter& par);
220 void Write(
const std::vector<ifw::core::utils::param::Parameter>& pars);
224 template <
class TYPE>
225 void Write(
const std::string& name,
const TYPE& value) {
226 LOG4CPLUS_TRACE_METHOD(
Logger(), __PRETTY_FUNCTION__);
227 ifw::core::utils::param::Parameter tmp_par(name, value);
241 bool& frame_received,
242 const double timeout,
246 void Scan(std::vector<ifw::core::utils::param::Parameter>& pars);
303 std::string& message);
331 virtual void ReadUser(
const std::string& name,
332 ifw::core::utils::param::Parameter& par);
337 virtual void ReadUser(
const std::vector<std::string>& names,
338 std::vector<ifw::core::utils::param::Parameter>& pars);
343 bool& frame_received,
344 const double timeout,
353 virtual void ScanUser(std::vector<ifw::core::utils::param::Parameter>& pars);
365 virtual void WriteUser(
const ifw::core::utils::param::Parameter& par);
370 virtual void WriteUser(
const std::vector<ifw::core::utils::param::Parameter>& pars);
403 bool m_initialised{
false};
404 bool m_is_sim_adapter{
false};
405 std::string m_device_address;
406 int16_t m_device_array_width{0};
407 int16_t m_device_array_height{0};
408 int8_t m_device_pixel_resolution{0};
409 std::string m_host_address;
410 bool m_allow_lost_frames{
false};
411 uint64_t m_lost_frames_count{0};
412 bool m_auto_adjust_time_rate{
true};
413 NameMapping m_device_name_mapping;
418 std::map<std::string, std::string> m_status_setup_keys{
419 {
"status.expo.time",
"expo.time"},
422 {
"expo.frame_rate",
"status.expo.frame_rate"},
423 {
"status.expo.win_start_x",
"expo.win_start_x"},
424 {
"status.expo.win_start_y",
"expo.win_start_y"},
425 {
"status.expo.win_width",
"expo.win_width"},
426 {
"status.expo.win_height",
"expo.win_height"}};
428 DeviceInfo m_device_info;
429 std::atomic<double> m_min_acq_period{0};
430 std::atomic<double> m_time_last_frame{0};
431 std::atomic<bool> m_dev_acq_running{
false};
432 std::atomic<uint64_t> m_frame_counter{0};
434 std::map<std::string, ifw::core::utils::param::Parameter> m_device_property_registry;
#define CCFTHROW(msg)
Definition base.hpp:366
Class to be used as parent all CCF classes.
Definition base.hpp:120
Definition comAdptBase.hpp:26
double m_abs_time
Definition comAdptBase.hpp:29
TriggerType m_trigger_type
Definition comAdptBase.hpp:28
std::string m_info
Definition comAdptBase.hpp:31
std::string m_custom_trigger
Definition comAdptBase.hpp:30
bool m_deferred_acq_start_active
Definition comAdptBase.hpp:32
Class to be used as parent for CCF Communication Adapters.
Definition comAdptBase.hpp:46
virtual ~ComAdptBase()
Definition comAdptBase.cpp:28
const int16_t GetDeviceWidth() const
Return the width of the data array from the configuration.
Definition comAdptBase.cpp:580
virtual bool HasDevicePropertyUser(const std::string &property, std::string &value)
Definition comAdptBase.cpp:1065
void SetHostAdddress(const std::string &host_address)
Set the address of the host (network interface) used for communication.
Definition comAdptBase.cpp:1003
virtual void ConnectUser()
Definition comAdptBase.cpp:522
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:966
void Stop()
Stop the image acquisition in the device.
Definition comAdptBase.cpp:433
virtual void ReceiveUser(ifw::ccf::common::DataFrame &frame, bool &frame_received, const double timeout, bool &timed_out)
Definition comAdptBase.cpp:545
void CheckIfConnected() const
Check if the connection is established. If not, throw an exception.
Definition comAdptBase.cpp:52
virtual void WriteDefaultSetupUser()
Definition comAdptBase.cpp:261
virtual void HandleParPostWriteUser(ifw::core::utils::param::Parameter &par)
Definition comAdptBase.cpp:614
void SetIsSimAdapter(const bool is_sim)
Set the Simulation Adapter Flag.
Definition comAdptBase.cpp:32
void Write(const ifw::core::utils::param::Parameter &par)
Definition comAdptBase.cpp:446
uint64_t IncLostFramesCount()
Increment the counter of lost frames. The new value is returned.
Definition comAdptBase.cpp:1086
void SetDeviceAddress(const std::string &address)
Set the internal address, e.g. URI, used for communicating with the device.
Definition comAdptBase.cpp:69
double GetTheoreticFrameRate()
Render the theoritic, possible achievable frame rate (frame/s).
Definition comAdptBase.cpp:1072
virtual double GetTheoreticFrameRateUser()
Definition comAdptBase.cpp:1077
ComAdptBase()
Definition comAdptBase.cpp:23
void SetLostFramesCount(const int64_t count)
Definition comAdptBase.cpp:1091
virtual void HandleParPostReadUser(ifw::core::utils::param::Parameter &par)
Definition comAdptBase.cpp:618
void ResetLostFramesCount()
Reset the lost frames counter.
Definition comAdptBase.cpp:1101
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:605
AcqTrigger m_acq_trigger
Definition comAdptBase.hpp:398
void CheckConnection(bool &connected)
Check if the connection to the device is OK.
Definition comAdptBase.cpp:81
virtual void AddMetaDataUser(ifw::ccf::common::DataFrame &frame)
Definition comAdptBase.cpp:384
virtual void HandleSetupUser()
Definition comAdptBase.cpp:922
const int16_t GetDeviceHeight() const
Return the height of the data array from the configuration.
Definition comAdptBase.cpp:585
bool GetIsSimAdapter() const
Return the Simulation Adapter Flag.
Definition comAdptBase.cpp:37
void ReadMutableSetupPars()
Read setup parameters from the camera device, which may mutate.
Definition comAdptBase.cpp:889
bool IsConnected() const
Returns true if the connection to the device is established and valid.
Definition comAdptBase.cpp:42
void WriteDeviceProps()
Definition comAdptBase.cpp:233
void HandleParPreWrite(ifw::core::utils::param::Parameter &par)
Definition comAdptBase.cpp:595
virtual void ReadUser(const std::string &name, ifw::core::utils::param::Parameter &par)
Definition comAdptBase.cpp:530
virtual void WriteDevicePropsUser()
Definition comAdptBase.cpp:238
virtual void StartUser()
Definition comAdptBase.cpp:556
virtual void ScanUser(std::vector< ifw::core::utils::param::Parameter > &pars)
Definition comAdptBase.cpp:552
TYPE Read(const std::string &name)
Definition comAdptBase.hpp:204
virtual void InitialiseUser()
Definition comAdptBase.cpp:175
double GetMaxFrameRate() const
Get Maximim frame rate (Hz).
Definition comAdptBase.cpp:1106
bool GetAllowLostFrames() const
Return flag (cfg par) indicating if lost frames shall be ignored silently.
Definition comAdptBase.cpp:150
bool m_is_connected
Definition comAdptBase.hpp:397
void Read(const std::string &name, ifw::core::utils::param::Parameter &par)
Definition comAdptBase.cpp:307
double GetTimeForLastFrame() const
Definition comAdptBase.cpp:388
void Receive(ifw::ccf::common::DataFrame &frame, bool &frame_received, const double timeout, bool &timed_out)
Definition comAdptBase.cpp:347
const std::string & GetDeviceAddress() const
Return the address from the configuration.
Definition comAdptBase.cpp:575
const std::string & GetProtocol() const
Return the communication protocol used.
Definition comAdptBase.cpp:59
virtual void SetDeviceAddressUser(const std::string &address)
Definition comAdptBase.cpp:509
virtual void SetAcqTrigger(const AcqTrigger &acq_trigger)
Definition comAdptBase.cpp:155
bool HasDeviceProperty(const std::string &property, std::string &value)
Definition comAdptBase.cpp:1029
const NameMapping & GetNameMapping() const
Definition comAdptBase.cpp:298
void AutoConnect(const uint8_t attempts=5, const double timeout=10)
Definition comAdptBase.cpp:202
ifw::ccf::common::TriggerType GetAcqTriggerType() const
Definition comAdptBase.cpp:170
const std::string & GetId() const
Get the ID of the associated device.
Definition comAdptBase.cpp:64
virtual const std::string & GetHostAddress()
Return the address of the host (network interface) used for communicating with the device.
Definition comAdptBase.cpp:1011
uint64_t GetLostFramesCount() const
Return the number of lost frames currently registered.
Definition comAdptBase.cpp:1096
void CheckStatus(ifw::ccf::HwStatus &status, std::string &message)
Check the status of the device (health status).
Definition comAdptBase.cpp:90
void MapParForDevice(ifw::core::utils::param::Parameter &par) const
Definition comAdptBase.cpp:961
void Write(const std::string &name, const TYPE &value)
Definition comAdptBase.hpp:225
const int8_t GetDeviceResolution() const
Return the resolution of the data elements from the configuration.
Definition comAdptBase.cpp:590
virtual void AdjustExpoTimeFrameRate()
Definition comAdptBase.cpp:781
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:399
virtual void HandleParPreWriteUser(ifw::core::utils::param::Parameter &par)
Definition comAdptBase.cpp:610
void HandleParPostWrite(ifw::core::utils::param::Parameter &par)
Definition comAdptBase.cpp:600
void Initialise(const bool re_init=false)
Definition comAdptBase.cpp:101
virtual void StopUser()
Definition comAdptBase.cpp:560
void Start()
Start the image acquisition in the device.
Definition comAdptBase.cpp:417
virtual void WriteUser(const ifw::core::utils::param::Parameter &par)
Definition comAdptBase.cpp:564
TYPE GetDeviceProperty(const std::string &property)
Definition comAdptBase.hpp:88
AcqTrigger & GetAcqTrigger()
Definition comAdptBase.cpp:165
void MapParFromDevice(ifw::core::utils::param::Parameter &par) const
Definition comAdptBase.cpp:955
virtual void CheckStatusUser(ifw::ccf::HwStatus &status, std::string &message)
Definition comAdptBase.cpp:517
void Disconnect()
Disconnect from the device.
Definition comAdptBase.cpp:285
void Connect()
Definition comAdptBase.cpp:179
void WriteDefaultSetup()
Definition comAdptBase.cpp:255
virtual bool IsConnectedUser() const
Definition comAdptBase.cpp:47
virtual void CheckConnectionUser(bool &connected)
Definition comAdptBase.cpp:513
uint64_t GetFrameCounter() const
Return the internal frame counter.
Definition comAdptBase.cpp:1111
void HandleSetup()
Definition comAdptBase.cpp:622
virtual void DisconnectUser()
Definition comAdptBase.cpp:526
virtual void SetAcqTriggerUser()
Specific implementation of the algorithm to trigger an acquisition.
Definition comAdptBase.cpp:303
void SetIsConnected(const bool connected)
Definition comAdptBase.cpp:392
Frame class used to store the data and metadata for one frames received from the camera.
Definition dataFrame.hpp:18
Implements a name mapping service, based on a Name Mapping File to be loaded and installed.
Definition nameMapping.hpp:24
TriggerType
Definition comAdptBase.hpp:19
std::string GetHostAddress()
log4cplus::Logger & Logger()
Definition base.cpp:23
HwStatus
HW status values.
Definition base.hpp:150