Skip to content

Pylon::CTlFactory#

Module: Transport Layer

the Transport Layer Factory More…

#include <pylon/TlFactory.h>

Inherits from Pylon::IDeviceFactory

Public Functions#

Name
CTlFactory & GetInstance()
int EnumerateTls(TlInfoList_t & list)
Retrieves a list of available transport layers.
ITransportLayer * CreateTl(const CTlInfo & ti)
Creates a transport layer object from a transport layer info object.
ITransportLayer * CreateTl(const String_t & deviceClass)
Creates a transport layer object from a device class string.
void ReleaseTl(const ITransportLayer * pTl)
Releases a transport layer object created by a call to CreateTl().
virtual int EnumerateDevices(DeviceInfoList_t & list, bool addToList =false)
Retrieves a list of available devices.
virtual int EnumerateDevices(DeviceInfoList_t & list, const DeviceInfoList_t & filter, bool addToList =false)
Retrieves a list of available devices filtered by given properties, usable for looking for specific devices.
virtual IPylonDevice * CreateDevice(const CDeviceInfo & di)
Creates a camera object from a device info object.
virtual IPylonDevice * CreateFirstDevice(const CDeviceInfo & di =CDeviceInfo())
virtual IPylonDevice * CreateDevice(const CDeviceInfo & di, const StringList_t & InjectedXmlStrings)
virtual IPylonDevice * CreateFirstDevice(const CDeviceInfo & di, const StringList_t & InjectedXmlStrings)
virtual IPylonDevice * CreateDevice(const String_t & )
virtual void DestroyDevice(IPylonDevice * )
Destroys a device.
virtual bool IsDeviceAccessible(const CDeviceInfo & deviceInfo, AccessModeSet mode =Control, EDeviceAccessiblityInfo * pAccessibilityInfo =NULL)
This method can be used to check if a camera device can be created and opened.

Protected Functions#

Name
void InternalEnumerateTls(TlInfoList_t & )
virtual IPylonDevice * InternalCreateDevice(const CDeviceInfo & di, const StringList_t & InjectedXmlStrings, bool allowAnyFirstFound)

Protected Attributes#

Name
TlMap * m_pTls
ImplicitTlRefs * m_pImplicitlyCreatedTls
CSimpleMutex * m_pMemberLock

Friends#

Name
void Pylon::PylonInitialize()
void Pylon::PylonTerminate(bool )
void Pylon::SetProperty(int propertyId, const void * pData, size_t size)
void Pylon::GetProperty(int propertyId, void * pData, size_t * pSize)

Detailed Description#

class Pylon::CTlFactory;

the Transport Layer Factory

Creates, Destroys and Enumerates transport layers as well as their devices.

Public Functions Documentation#

GetInstance#

static CTlFactory & GetInstance()

Retrieve the transport layer factory singleton. Throws an exception when Pylon::PylonInitialize() has not been called before.

EnumerateTls#

int EnumerateTls(
    TlInfoList_t & list
)

Retrieves a list of available transport layers.

Parameters:

  • list List to be filled with transport layer info objects.

Return: Number of transport layers found.

The list contains Pylon::CTlInfo objects used for transport layer creation.

CreateTl#

ITransportLayer * CreateTl(
    const CTlInfo & ti
)

Creates a transport layer object from a transport layer info object.

Parameters:

  • ti Transport layer info object specifying which transport layer to create.

Return: Pointer to the transport layer object created. If no matching transport layer could be found, NULL will be returned.

This method accepts a transport layer info object which can be obtained by calling EnumerateTls. For each successfully returned transport layer object, you must call ReleaseTl to free the transport layer object.

If the creation fails, a GenApi::GenericException will be thrown.

CreateTl#

ITransportLayer * CreateTl(
    const String_t & deviceClass
)

Creates a transport layer object from a device class string.

Parameters:

  • deviceClass Transport layer info object specifying which transport layer to create.

Return: Pointer to the transport layer object created. If no matching transport layer could be found, NULL will be returned.

This method accepts a device class string. You can see a list of available device classes in the DeviceClass.h file. For each successfully returned transport layer object, you must call ReleaseTl to free the transport layer object.

If the creation fails, a GenApi::GenericException will be thrown.

ReleaseTl#

void ReleaseTl(
    const ITransportLayer * pTl
)

Releases a transport layer object created by a call to CreateTl().

Parameters:

  • pTl Pointer to the transport layer object to be released.

For each successfully returned transport layer object from any CreateTl() function, you must call this function to free the transport layer object.

EnumerateDevices#

virtual int EnumerateDevices(
    DeviceInfoList_t & list,
    bool addToList =false
)

Retrieves a list of available devices.

Parameters:

  • list List to be filled with device info objects.
  • addToList If true, the devices found will be appended to the list instead of deleting the list. Only newly discovered devices are sorted and not the entire list.

Return: Number of devices found.

Reimplements: Pylon::IDeviceFactory::EnumerateDevices

The list contains Pylon::CDeviceInfo objects used for the device creation and is ordered by device class and serial number using the operator <a href="class_pylon_1_1_c_device_info.html#operator<">Pylon::CDeviceInfo::operator<(). By default, the list will be cleared before the device discovery is started.

EnumerateDevices#

virtual int EnumerateDevices(
    DeviceInfoList_t & list,
    const DeviceInfoList_t & filter,
    bool addToList =false
)

Retrieves a list of available devices filtered by given properties, usable for looking for specific devices.

Parameters:

  • list List to be filled with device info objects.
  • filter A list of device info objects with user-provided properties that a device can match.
  • addToList If true, the devices found will be appended to the list instead of deleting the list. Only newly discovered devices are sorted and not the entire list.

Return: Number of devices found.

Reimplements: Pylon::IDeviceFactory::EnumerateDevices

The list contains Pylon::CDeviceInfo objects used for the device creation and is ordered by device class and serial number using the operator <a href="class_pylon_1_1_c_device_info.html#operator<">Pylon::CDeviceInfo::operator<(). By default, the list will be cleared before the device discovery is started. The filter list can contain a list of device info objects containing properties a device must have, e.g., the user-provided name or the serial number. A device is returned if it matches the properties of any of the device info objects on the filter list. If the device class property is set in the filter device info objects, the search is limited to the required transport layers.

CreateDevice#

virtual IPylonDevice * CreateDevice(
    const CDeviceInfo & di
)

Creates a camera object from a device info object.

Parameters:

  • di Device info object containing all information needed to identify exactly one device.

Reimplements: Pylon::IDeviceFactory::CreateDevice

This method accepts either a device info object from a device enumeration or a user-provided device info object. User-provided device info objects can be preset with properties required for a device, e.g. the user-provided name or the serial number. The implementation tries to find a matching camera by using device enumeration. When the device class property is set, the search is limited to the required transport layer.

If the device creation fails, a GenApi::GenericException will be thrown.

CreateFirstDevice#

virtual IPylonDevice * CreateFirstDevice(
    const CDeviceInfo & di =CDeviceInfo()
)

Reimplements: Pylon::IDeviceFactory::CreateFirstDevice

If multiple devices match the provided properties, the first device found is created. The order in which the devices are found can vary from call to call.

CreateDevice#

virtual IPylonDevice * CreateDevice(
    const CDeviceInfo & di,
    const StringList_t & InjectedXmlStrings
)

Reimplements: Pylon::IDeviceFactory::CreateDevice

Creates a camera object from a device info object, injecting additional GenICam XML definition strings. Currently only one injected xml string is supported.

CreateFirstDevice#

virtual IPylonDevice * CreateFirstDevice(
    const CDeviceInfo & di,
    const StringList_t & InjectedXmlStrings
)

Reimplements: Pylon::IDeviceFactory::CreateFirstDevice

Creates the first found camera device matching the provided properties, injecting additional GenICam XML definition strings. Currently only one injected xml string is supported.

CreateDevice#

virtual IPylonDevice * CreateDevice(
    const String_t & 
)

Reimplements: Pylon::IDeviceFactory::CreateDevice

This method is deprecated. Use CreateDevice and pass a CDeviceInfo object containing the full name as a property. Example: IPylonDevice* device = TlFactory.CreateDevice( CDeviceInfo().SetFullName( fullname)); creates a device that matches its full name (i.e., as returned by CDeviceInfo::GetFullName).

DestroyDevice#

virtual void DestroyDevice(
    IPylonDevice * 
)

Destroys a device.

Note: Never try to delete a pointer to a camera device by calling free or delete. Always use the DestroyDevice method.

Reimplements: Pylon::IDeviceFactory::DestroyDevice

IsDeviceAccessible#

virtual bool IsDeviceAccessible(
    const CDeviceInfo & deviceInfo,
    AccessModeSet mode =Control,
    EDeviceAccessiblityInfo * pAccessibilityInfo =NULL
)

This method can be used to check if a camera device can be created and opened.

Parameters:

  • deviceInfo Properties to find/identify the camera device to check.
  • mode Used for defining how a device is accessed. The use of the mode information is transport layer-specific.

  • For CameraLink, and USB devices, the mode information is ignored.

  • For GigE devices, the Exclusive and Control flags are used for defining how a device is accessed. Other mode information is ignored.
  • For devices of any type that are accessed via the GenICam GenTL transport layer, the mode is ignored.
  • pAccessibilityInfo Optional parameter that provides more information about whether a device is accessible or not.

Return: True if device can be opened with provided access mode.

Precondition: The deviceInfo object properties specify exactly one device. This is the case when the device info object has been obtained using device enumeration.

Error Safety:

Throws a C++ exception, if the preconditions are not met.

Reimplements: Pylon::IDeviceFactory::IsDeviceAccessible

This method accepts either a device info object from a device enumeration or a user-provided device info object. User-provided device info objects can be preset with properties required for a device, e.g. the user-provided name or the serial number. The implementation tries to find a matching camera by using device enumeration. When the device class property is set, see DeviceClass.h header file, the search is limited to the required transport layer. For more information, see Applying a Filter when Enumerating Cameras.

Protected Functions Documentation#

InternalEnumerateTls#

void InternalEnumerateTls(
    TlInfoList_t & 
)

InternalCreateDevice#

virtual IPylonDevice * InternalCreateDevice(
    const CDeviceInfo & di,
    const StringList_t & InjectedXmlStrings,
    bool allowAnyFirstFound
)

Protected Attributes Documentation#

m_pTls#

TlMap * m_pTls;

m_pImplicitlyCreatedTls#

ImplicitTlRefs * m_pImplicitlyCreatedTls;

m_pMemberLock#

CSimpleMutex * m_pMemberLock;

Friends#

friend Pylon::PylonInitialize#

friend void Pylon::PylonInitialize();

friend Pylon::PylonTerminate#

friend void Pylon::PylonTerminate(
    bool 
);

friend Pylon::SetProperty#

friend void Pylon::SetProperty(
    int propertyId,

    const void * pData,

    size_t size
);

friend Pylon::GetProperty#

friend void Pylon::GetProperty(
    int propertyId,

    void * pData,

    size_t * pSize
);

Updated on 5 July 2022 at 15:30:01