ifm3d
|
#include <ifm3d/device/device.h>
Public Types | |
enum | boot_mode : int { PRODUCTIVE = 0, RECOVERY = 1 } |
enum | operating_mode : int { RUN = 0, EDIT = 1 } |
enum | trigger_mode : int { FREE_RUN = 1, SW = 2 } |
enum | import_flags : int { GLOBAL = 0x1, NET = 0x2, APPS = 0x10 } |
enum | spatial_filter : int { OFF = 0x0, MEDIAN = 0x1, MEAN = 0x2, BILATERAL = 0x3 } |
enum | temporal_filter : int { OFF = 0x0, MEAN = 0x1, ADAPTIVE_EXP = 0x2 } |
enum | mfilt_mask_size : int { _3x3 = 0, _5x5 = 1 } |
enum | device_family : int { UNKNOWN = 0, O3D = 1, O3X = 2, O3R = 3 } |
enum | swu_version : int { SWU_NOT_SUPPORTED = 0, SWU_V1 = 1, SWU_V2 = 2 } |
using | Ptr = std::shared_ptr< Device > |
Public Member Functions | |
Device (const std::string &ip=ifm3d::DEFAULT_IP, const std::uint16_t xmlrpc_port=ifm3d::DEFAULT_XMLRPC_PORT) | |
virtual | ~Device () |
Device (Device &&)=delete | |
Device & | operator= (Device &&)=delete |
Device (Device &)=delete | |
Device & | operator= (Device &)=delete |
virtual std::string | IP () |
virtual std::uint16_t | XMLRPCPort () |
virtual void | Reboot (const boot_mode &mode=ifm3d::Device::boot_mode::PRODUCTIVE) |
virtual void | ForceTrigger () |
virtual std::string | DeviceType (bool use_cached=true) |
virtual device_family | WhoAmI () |
virtual bool | AmI (device_family family) |
virtual std::string | DeviceParameter (const std::string &key) |
virtual std::vector< std::string > | TraceLogs (int count) |
virtual json | ToJSON () |
virtual std::string | ToJSONStr () |
virtual void | FromJSON (const json &j) |
virtual void | FromJSONStr (const std::string &jstr) |
bool | CheckMinimumFirmwareVersion (unsigned int major, unsigned int minor, unsigned int patch) |
ifm3d::SemVer | FirmwareVersion () |
virtual ifm3d::Device::swu_version | SwUpdateVersion () |
Static Public Member Functions | |
static std::vector< ifm3d::IFMNetworkDevice > | DeviceDiscovery () |
This function Provides a convinent way to find all ifm devices on the network. More... | |
static Ptr | MakeShared (const std::string &ip=ifm3d::DEFAULT_IP, const std::uint16_t xmlrpc_port=ifm3d::DEFAULT_XMLRPC_PORT, const std::string &password=ifm3d::DEFAULT_PASSWORD, bool throwIfUnavailable=true) |
Protected Member Functions | |
int | DeviceID () |
bool | checkDeviceID (int deviceID, int minID, int maxID) |
std::shared_ptr< XMLRPCWrapper > | XWrapper () |
Protected Attributes | |
std::unique_ptr< Impl > | pImpl |
std::string | device_type_ |
Software interface to an ifm 3D device
The Device
class implements the underlying network protocol for communicating with the ifm hardware. Via this communication layer, this class exposes objects that can be used to mutate and tune the device parameters including those of the underlying pmd imager.
|
strong |
Device boot up modes:
Productive: the normal runtime firmware comes up Recovery: allows you to flash new firmware
|
strong |
Import flags used when importing a Vision Assistant configuration
|
strong |
Convenient constants for median filter mask sizes
|
strong |
Device operating modes: run (streaming pixel data), edit (configuring the device/applications).
|
strong |
Convenience constants for spatial filter types
|
strong |
Convenience constants for temporal filter types
|
strong |
Image acquisition trigger modes
ifm3d::Device::Device | ( | const std::string & | ip = ifm3d::DEFAULT_IP , |
const std::uint16_t | xmlrpc_port = ifm3d::DEFAULT_XMLRPC_PORT |
||
) |
Initializes the device interface utilizing library defaults for password, ip, and xmlrpc port unless explicitly passed in.
[in] | ip | The ip address of the device |
[in] | xmlrpc_port | The tcp port the sensor's XMLRPC server is listening on |
[in] | password | Password required for establishing an "edit session" with the sensor. Edit sessions allow for mutating device parameters and persisting those changes. |
|
virtual |
The dtor will cancel any open edit sessions with the device.
|
virtual |
This is a convenience function for checking whether a device is one of the specified device family
[in] | family | The family to check for |
bool ifm3d::Device::CheckMinimumFirmwareVersion | ( | unsigned int | major, |
unsigned int | minor, | ||
unsigned int | patch | ||
) |
Checks for a minimum ifm device software version
[in] | major | Major version of software |
[in] | minor | Minor Version of software |
[in] | patch | Patch Number of software |
return True if current software version is greater or equal to the value passed
|
static |
This function Provides a convinent way to find all ifm devices on the network.
|
protected |
Implements the serialization of the device state to JSON.
[in] | open_session | if false function will work on already opened session |
|
virtual |
Convenience accessor for extracting a device parameters (i.e., no edit session created on the device)
|
virtual |
This is a convenience function for extracting out the device type of the connected device. The primary intention of this function is for internal usage (i.e., to trigger conditional logic based on the model hardware we are talking to) however, it will likely be useful in application-level logic as well, so, it is available in the public interface.
[in] | use_cached | If set to true, a cached lookup of the device type will be used as the return value. If false, it will make a network call to the device to get the "real" device type. The only reason for setting this to false would be if you expect over the lifetime of your camera instance that you will swap out (for example) an O3D for an O3X (or vice versa) – literally, swapping out the network cables while an object instance is still alive. If that is not something you are worried about, leaving this set to true should result in a signficant performance increase. |
ifm3d::SemVer ifm3d::Device::FirmwareVersion | ( | ) |
get the firmware version of the device
|
virtual |
Sends a S/W trigger to the device over XMLRPC.
The O3X does not S/W trigger over PCIC, so, this function has been developed specficially for it. For other sensors, this is a NOOP.
Reimplemented in ifm3d::LegacyDevice.
|
virtual |
Configures the device based on the parameter values of the passed in JSON. This function is the way to tune the device/application/imager/etc. parameters.
[in] | json | A json object encoding a camera configuration to apply to the hardware. |
ifm3d::Error | upon error - if this throws an exception, you are encouraged to check the log file as a best effort is made to be as descriptive as possible as to the specific error that has occured. |
Reimplemented in ifm3d::LegacyDevice, and ifm3d::O3R.
|
virtual |
Accepts a string with properly formatted/escaped JSON text, converts it to a json
object, and call FromJSON()
on it.
|
virtual |
The IP address associated with this Device instance
|
static |
Factory function for instantiating the proper subclass based on h/w probing.
This function provides a convenient way for users of the library to write hardware independent code. This function probes the connected hardware and returns a proper subclass based upon the returned DeviceType
. In the event that the hardware is not connected, the error is trapped and an instance of the base class is returned. The net result of not having an instance of a subclass is: 1) worse performance, 2) errors will come back from the sensor rather than the library – some of which may be hard to debug.
[in] | ip | The ip address of the device |
[in] | xmlrpc_port | The tcp port the sensor's XMLRPC server is listening on |
[in] | password | Password required for establishing an "edit session" with the sensor. Edit sessions allow for mutating device parameters and persisting those changes. |
|
virtual |
Reboot the device
[in] | mode | The system mode to boot into upon restart of the device |
ifm3d::Error | upon error |
Reimplemented in ifm3d::O3R.
|
virtual |
Checks the swupdater version supported by device
Reimplemented in ifm3d::O3R.
|
virtual |
Serializes the state of the device to JSON.
The JSON interface returned here is the excellent JSON for Modern C++.
This function (along with its std::string
equivalent ToJSONStr()
) provides the primary gateway into obtaining the current parameter settings for the device and PMD imager. Data returned from this function can be manipulated as a json
object, then fed into FromJSON(...)
to mutate parameter settings on the device.
ifm3d::Error | upon error |
Reimplemented in ifm3d::LegacyDevice, and ifm3d::O3R.
|
virtual |
|
virtual |
Delivers the trace log from the device A session is not required to call this function.
ifm3d::Error | upon error |
|
virtual |
This function can be used to retrieve the family of the connected device
Reimplemented in ifm3d::O3R, ifm3d::O3D, and ifm3d::O3X.
|
virtual |
The XMLRPC Port associated with this Device instance
|
protected |
The cached device type of the connected device