uEye LE USB 3.1 Gen 1 uEye SE USB 3.1 Gen 1 |
uEye LE USB 3.1 Gen 1 uEye SE USB 3.1 Gen 1 |
Syntax
INT is_PowerDelivery(HIDS hCam, UINT nCommand, void* pParam, UINT cbSizeOfParams)
Description
USB Power Delivery (PD) expands the USB system with a very flexible power supply management which is implemented in addition to the data connection via the same cable. The distribution of roles in power supplier and consumer with limited voltage and current thus no longer exists. PD-capable devices negotiate their capabilities and requirements concerning supply voltage over a standardized protocol.
IDS Imaging Development Systems GmbH introduces USB Power Delivery for the first time with the camera families with USB Type-C connectors. The PD-capable camera requests as a PD consumer more power than it needs for itself. The additional voltages are used, for example to power an LED light via the camera's I/O connector.
The prerequisite is that the host PC also supports USB Power Delivery and correspondingly provides more power. Note that power transmission via USB Power Delivery is only possible with "Full Featured" USB Type-C to Type-C cables.
Via the is_PowerDelivery() function, you can query which USB Power Delivery profiles are supported by the camera in combination with the host PC and set the appropriate profile. Note that the profile has to be set again after a reconnect. Switching between power delivery profiles should be performed before image acquisition starts. If image acquisition is already started, it is stopped briefly when switching.
Make sure that the connected peripheral devices does not receive any power when switching between different power delivery profiles. If the power consumption of the peripheral device is too high during switching, the host may turn off the cameras. This will restart the camera with the fallback profile. |
The nCommand input parameter is used to select the function mode. The pParam input parameter depends on the selected function mode. If you select functions for setting or returning a value, pParam contains a pointer to a variable of the UINT type. The size of the memory area to which pParam refers is specified in the cbSizeOfParam input parameter.
Input parameter
hCam |
Camera handle |
pParam |
Pointer to a function parameter, whose function depends on nCommand. |
cbSizeOfParam |
Size (in bytes) of the memory area to which pParam refers. |
Return values
IS_INVALID_PARAMETER |
One of the submitted parameters is outside the valid range or is not supported for this sensor or is not available in this mode. |
IS_NO_SUCCESS |
General error message |
IS_NOT_SUPPORTED |
The camera model used here does not support this function or setting. |
IS_SUCCESS |
Function executed successfully |
Example 1
/* Check if power delivery is supported. Note that value 'BOOL' is not a boolean value but a typedef int! */
BOOL bPowerDeliverySupported = FALSE;
INT nRet = is_PowerDelivery(m_hCam, IS_POWER_DELIVERY_GET_SUPPORTED, (void*)&bPowerDeliverySupported, sizeof(bPowerDeliverySupported));
if ((nRet == IS_SUCCESS) && bPowerDeliverySupported)
{
/* Power delivery supported */
}
Example 2
/* Get the available profiles */
UINT nProfiles = IS_POWER_DELIVERY_PROFILE_INVALID;
INT nRet = is_PowerDelivery(m_hCam, IS_POWER_DELIVERY_CMD_GET_SUPPORTED_PROFILES, (void*)&nProfiles, sizeof(nProfiles));
if (nRet == IS_SUCCESS)
{
if ((nProfiles & IS_POWER_DELIVERY_PROFILE_15V) == IS_POWER_DELIVERY_PROFILE_15V)
{
/* 15V power profile is supported */
}
}
Example 3
/* Get the current power delivery mode */
UINT nProfile = IS_POWER_DELIVERY_PROFILE_INVALID;
INT nRet = is_PowerDelivery(m_hCam, IS_POWER_DELIVERY_CMD_GET_PROFILE, (void*)&nProfile, sizeof(nProfile));
if (nRet == IS_SUCCESS)
{
/* nProfile holdes one of the profiles defined in POWER_DELIVERY_PROFILES in ueye.h, check for your needs e.g. for the 15V profile: */
if ((nProfile & IS_POWER_DELIVERY_PROFILE_15V) == IS_POWER_DELIVERY_PROFILE_15V)
{
/* Current Profile is 15V */
}
}
Example 4
/* Set the selected profile */
UINT nProfile = IS_POWER_DELIVERY_PROFILE_15V;
INT nRet = is_PowerDelivery(m_pMainView->GetCameraHandle(), IS_POWER_DELIVERY_CMD_SET_PROFILE, (void*)&nProfile, sizeof(nProfile));
if (nRet == IS_SUCCESS)
{
/* 15V profile is set */
}