Skip to content
⚡ Developer documentation for INFINICAM, the real-time high-speed camera (UC-1.1 / GbE-2)

Common Constants, Enumerations & Type Definitions

Specifications for the common constants, enumerations, and type definitions defined in the header file PUCCONST.h.


Constant name Value Description
PUC_MAX_DEVICE 16 Maximum number of devices that can be connected
PUC_MAX_LEN 256 Maximum number of characters
PUC_Q_COUNT 64 Number of elements in the quantization table (8 x 8)
PUC_MIN_RING_BUF_COUNT 4 Minimum number of ring buffers during continuous transfer
PUC_MAX_RING_BUF_COUNT 65535 Maximum number of ring buffers during continuous transfer
PUC_XFER_TIMEOUT_AUTO 0 Automatically adjusts the timeout duration according to the frame rate
PUC_XFER_TIMEOUT_INFINITE 0xFFFFFFFF Sets the timeout duration to unlimited
PUC_SYNC_OUT_MAGNIFICATION_0_5 0 Constant representing a synchronization signal output magnification of 0.5x
PUC_MAX_DECODE_THREAD_COUNT 32 Maximum number of threads for multithreaded decoding
PUC_MAC_ADDRESS_SIZE 6 Number of bytes in a MAC address

Device search flags (for PUC_DetectDevice2)

Section titled “Device search flags (for PUC_DetectDevice2)”

Search target flags specified in PUC_DETECT_FILTER::nDeviceTypeFlags. Combine with a bitwise OR to search multiple models at once.

Constant name Value Description
PUC_DETECT_TARGET_ALL 0x00000000 Search all models
PUC_DETECT_TARGET_UC1 0x00000001 Search for the UC-1.1 (USB model)
PUC_DETECT_TARGET_GBE2 0x00000002 Search for the GbE-2 (Ethernet model)

Search modes specified in PUC_DETECT_FILTER::nDetectMode (GbE-2 only; ignored on the UC1).

Constant name Value Description
PUC_DETECT_MODE_DISCOVERY 0x00000000 Performs a broadcast search on each adapter (default). Can also discover devices whose IP address is unknown
PUC_DETECT_MODE_TARGET_IP 0x00000001 Searches directly for the IP address specified by nTargetIPAddress

#define PUC_CHK_SUCCEEDED(res) (res == PUC_SUCCEEDED) // Macro that evaluates to true when the error code indicates success
#define PUC_CHK_FAILED(res) (res != PUC_SUCCEEDED) // Macro that evaluates to true when the error code indicates anything other than success

typedef void* PUC_HANDLE; // Handle representing a device
typedef PUC_HANDLE* PPUC_HANDLE; // Pointer to a device handle

typedef enum {
PUC_OFF = 0, // OFF
PUC_ON = 1 // ON
} PUC_MODE;
typedef enum {
PUC_SIGNAL_POSI = 0, // Positive polarity
PUC_SIGNAL_NEGA = 1 // Negative polarity
} PUC_SIGNAL;
typedef enum {
PUC_SYNC_INTERNAL = 0, // Internal operation
PUC_SYNC_EXTERNAL = 1, // Synchronizes to an external signal
PUC_SYNC_EXTERNAL_PTP = 2 // Synchronizes to a PTP (Precision Time Protocol) master clock (GbE-2 only)
} PUC_SYNC_MODE;

PUC_COLOR_TYPE (color / monochrome specification)

Section titled “PUC_COLOR_TYPE (color / monochrome specification)”
typedef enum {
PUC_COLOR_MONO = 0, // Monochrome
PUC_COLOR_COLOR = 1 // Color
} PUC_COLOR_TYPE;

A value stored by search functions (such as PUC_DetectDevice2) in PUC_DETECT_INFO::nDeviceType, also used to determine the target device to open with PUC_OpenDevice2.

typedef enum {
PUC_DEVICE_UC1 = 0, // INFINICAM UC-1.1 (USB connection)
PUC_DEVICE_GBE2 = 1, // INFINICAM GbE-2 (Ethernet connection)
PUC_DEVICE_OTHERS = 2 // Anything other than the above (never returned by search functions; used by applications to represent non-camera sources such as files)
} PUC_DEVICE_TYPE;

PUC_SYNC_OUT_TIMES (synchronization signal output count multiplier)

Section titled “PUC_SYNC_OUT_TIMES (synchronization signal output count multiplier)”

A multiplier relative to the frame rate, specifying how many times the synchronization signal is output per frame (for example, X2 outputs twice per frame).

typedef enum {
X0_5 = 0x0101, // x0.5 (once every 2 frames)
X1 = 1, // x1
X2 = 2, // x2
X4 = 4, // x4
X6 = 6, // x6
X8 = 8, // x8
X10 = 10, // x10
X20 = 20, // x20
X30 = 30, // x30
} PUC_SYNC_OUT_TIMES;

PUC_NETWORK_INFO_TYPE (for PUC_SetNetworkInfo)

Section titled “PUC_NETWORK_INFO_TYPE (for PUC_SetNetworkInfo)”
typedef enum {
IPADDRESS = 0, // IP address (specified as a 32-bit value)
NETMASK = 1, // Subnet mask (specified as a 32-bit value)
GATEWAY = 2, // Default gateway (specified as a 32-bit value)
DHCP_ON = 3, // Enables DHCP (value is unused)
DHCP_OFF = 4, // Disables DHCP (value is unused)
} PUC_NETWORK_INFO_TYPE;

PUC_CAPABILITY (feature types for PUC_IsSupported)

Section titled “PUC_CAPABILITY (feature types for PUC_IsSupported)”

An enumeration for checking, via PUC_IsSupported, whether the connected camera supports a given feature, instead of branching on the model name.

Constant name Corresponding API
PUC_CAP_RESET_DEVICE PUC_ResetDevice
PUC_CAP_COMMAND_PASSTHROUGH Direct command send/receive
PUC_CAP_SYNC_OUT_SIGNAL PUC_Get/SetSyncOutSignal
PUC_CAP_SYNC_OUT_MAGNIFICATION PUC_Get/SetSyncOutMagnification
PUC_CAP_SYNC_OUT_TIMES PUC_Get/SetSyncOutTimes
PUC_CAP_SYNC_IN_DELAY PUC_Get/SetSyncInDelay
PUC_CAP_TRIG_IN_DELAY PUC_Get/SetTrigInDelay
PUC_CAP_TRIG_OUT_WIDTH PUC_Get/SetTrigOutWidth
PUC_CAP_EXPOSE_DELAY PUC_Get/SetExposeDelay
PUC_CAP_PP_OUT PUC_Get/SetPPOutWidth / PUC_Get/SetPPOutDelay
PUC_CAP_EXTERNAL_SYNC_STATUS PUC_GetExternalSyncStatus
PUC_CAP_EPOC_TIME PUC_SetEPOCTime / PUC_SetTimeOfDay
PUC_CAP_MAC_ADDRESS PUC_GetMacAddress
PUC_CAP_NETWORK_INFO PUC_SetNetworkInfo / PUC_GetIPAddress
PUC_CAP_GENERAL_IO PUC_Get/SetGeneralIn/OutSignal
PUC_CAP_XFER_TIMEOUT Whether the PUC_SetXferTimeOut setting takes effect
PUC_CAP_GPU_DECODE PUC_DecodeGPU (whether the camera’s data format is supported)
PUC_CAP_FAN PUC_Get/SetFanState

PUC_GENERAL_OUT_SIGNAL_TYPE / PUC_GENERAL_IN_SIGNAL_TYPE (general-purpose I/O signal types)

Section titled “PUC_GENERAL_OUT_SIGNAL_TYPE / PUC_GENERAL_IN_SIGNAL_TYPE (general-purpose I/O signal types)”

Signal types that can be assigned to the general-purpose I/O (GPIO) ports. The POS/NEG suffix (or substring) in each name represents positive and negative polarity respectively. The available types differ by model, so check in advance with PUC_GetSupportedGeneralOutSignal / PUC_GetSupportedGeneralInSignal.

// General-purpose output port
typedef enum {
VSYNC_POS = 0x0000, VSYNC_NEG = 0x0001, // Vertical synchronization signal
EXPOSE_POS = 0x0002, EXPOSE_NEG = 0x0003, // Exposure period
REC_POS = 0x0004, REC_NEG = 0x0005, // Recording in progress
TRIGGER_POS = 0x0006, TRIGGER_NEG = 0x0007, // Trigger input detection
READY_POS = 0x0008, READY_NEG = 0x0009, // Recording ready
IRIG_RESET_POS = 0x000A, IRIG_RESET_NEG = 0x000B, // IRIG time code reset
STRADDLING_POS = 0x000C, STRADDLING_NEG = 0x000D, // Straddling (double-shutter) exposure
PTP_PP_POS = 0x000E, PTP_PP_NEG = 0x000F, // PTP one-pulse-per-second
} PUC_GENERAL_OUT_SIGNAL_TYPE;
// General-purpose input port
typedef enum {
EVENT_POS_IN = 0x0000, EVENT_NEG_IN = 0x0001, // Event input
TRIG_POS_IN = 0x0002, TRIG_NEG_IN = 0x0003, // Trigger input
READY_POS_IN = 0x0004, READY_NEG_IN = 0x0005, // Recording ready input
SYNC_POS_IN = 0x0006, SYNC_NEG_IN = 0x0007, // External synchronization input
POWER_OFF_POS_IN = 0x0008, POWER_OFF_NEG_IN = 0x0009, // Power-off input
EXPOSE_POS_IN = 0x000A, EXPOSE_NEG_IN = 0x000B, // Exposure control input
} PUC_GENERAL_IN_SIGNAL_TYPE;