This repository has been archived on 2020-09-21. You can view files and clone it, but cannot push or open issues or pull requests.
FRC2016-old/wpilib/cpp/current/include/NIIMAQdx.h

951 lines
48 KiB
C
Raw Permalink Normal View History

2016-01-28 11:33:19 -05:00
//==============================================================================
//
// Title : NIIMAQdx.h
// Created : 1403685834 seconds after 1/1/1970 12:00:00 UTC
// Copyright : <20> Copyright 2006, National Instruments Corporation, All rights
// reserved
// Purpose : Include file for NI-IMAQdx library support.
//
//==============================================================================
#ifndef ___niimaqdx_h___
#define ___niimaqdx_h___
#ifdef __cplusplus
extern "C" {
#endif
#if !defined(niimaqdx_types)
#define niimaqdx_types
#ifdef _CVI_
#pragma EnableLibraryRuntimeChecking
#endif
//==============================================================================
// Typedefs
//==============================================================================
#ifndef _NI_uInt8_DEFINED_
#define _NI_uInt8_DEFINED_
typedef unsigned char uInt8;
#endif
#ifndef _NI_uInt16_DEFINED_
#define _NI_uInt16_DEFINED_
typedef unsigned short int uInt16;
#endif
#ifndef _NI_uInt32_DEFINED_
#define _NI_uInt32_DEFINED_
#if defined(_MSC_VER)
typedef unsigned long uInt32;
#elif __GNUC__
#if __x86_64__
typedef unsigned int uInt32;
#else
typedef unsigned long uInt32;
#endif
#endif
#endif
#ifndef _NI_uInt64_DEFINED_
#define _NI_uInt64_DEFINED_
#if defined(_MSC_VER) || _CVI_ >= 700
typedef unsigned __int64 uInt64;
#elif __GNUC__
typedef unsigned long long uInt64;
#endif
#endif
#ifndef _NI_Int8_DEFINED_
#define _NI_Int8_DEFINED_
typedef char Int8;
#endif
#ifndef _NI_Int16_DEFINED_
#define _NI_Int16_DEFINED_
typedef short int Int16;
#endif
#ifndef _NI_Int32_DEFINED_
#define _NI_Int32_DEFINED_
#if defined(_MSC_VER)
typedef long Int32;
#elif __GNUC__
#if __x86_64__
typedef int Int32;
#else
typedef long Int32;
#endif
#endif
#endif
#ifndef _NI_Int64_DEFINED_
#define _NI_Int64_DEFINED_
#if defined(_MSC_VER) || _CVI_ >= 700
typedef __int64 Int64;
#elif __GNUC__
typedef long long int Int64;
#endif
#endif
#ifndef _NI_float32_DEFINED_
#define _NI_float32_DEFINED_
typedef float float32;
#endif
#ifndef _NI_float64_DEFINED_
#define _NI_float64_DEFINED_
typedef double float64;
#endif
#ifndef TRUE
#define TRUE (1L)
#endif
#ifndef FALSE
#define FALSE (0L)
#endif
#ifndef _NI_GUIDHNDL_DEFINED
typedef uInt32 GUIHNDL;
#endif
#if (defined(_MSC_VER) || defined(_CVI_))
#ifndef _NI_FUNC_DEFINED
#define NI_FUNC __stdcall
#endif
#ifndef _NI_FUNCC_DEFINED
#define NI_FUNCC __cdecl
#endif
#elif defined(__GNUC__)
#ifndef _NI_FUNC_DEFINED
#define NI_FUNC
#endif
#ifndef _NI_FUNCC_DEFINED
#define NI_FUNCC
#endif
#endif
#ifndef _NI_bool32_DEFINED_
#define _NI_bool32_DEFINED_
typedef uInt32 bool32;
#endif
#ifndef _NI_IMAQdxSession_DEFINED_
#define _NI_IMAQdxSession_DEFINED_
typedef uInt32 IMAQdxSession;
#endif
#define IMAQDX_MAX_API_STRING_LENGTH 512
//==============================================================================
// Forward Declare Data Structures
//==============================================================================
typedef struct Image_struct Image;
//==============================================================================
// Error Codes Enumeration
//==============================================================================
typedef enum IMAQdxError_enum {
IMAQdxErrorSuccess = 0x0, // Success
IMAQdxErrorSystemMemoryFull = 0xBFF69000, // Not enough memory
IMAQdxErrorInternal, // Internal error
IMAQdxErrorInvalidParameter, // Invalid parameter
IMAQdxErrorInvalidPointer, // Invalid pointer
IMAQdxErrorInvalidInterface, // Invalid camera session
IMAQdxErrorInvalidRegistryKey, // Invalid registry key
IMAQdxErrorInvalidAddress, // Invalid address
IMAQdxErrorInvalidDeviceType, // Invalid device type
IMAQdxErrorNotImplemented, // Not implemented
IMAQdxErrorCameraNotFound, // Camera not found
IMAQdxErrorCameraInUse, // Camera is already in use.
IMAQdxErrorCameraNotInitialized, // Camera is not initialized.
IMAQdxErrorCameraRemoved, // Camera has been removed.
IMAQdxErrorCameraRunning, // Acquisition in progress.
IMAQdxErrorCameraNotRunning, // No acquisition in progress.
IMAQdxErrorAttributeNotSupported, // Attribute not supported by the camera.
IMAQdxErrorAttributeNotSettable, // Unable to set attribute.
IMAQdxErrorAttributeNotReadable, // Unable to get attribute.
IMAQdxErrorAttributeOutOfRange, // Attribute value is out of range.
IMAQdxErrorBufferNotAvailable, // Requested buffer is unavailable.
IMAQdxErrorBufferListEmpty, // Buffer list is empty. Add one or more buffers.
IMAQdxErrorBufferListLocked, // Buffer list is already locked. Reconfigure
// acquisition and try again.
IMAQdxErrorBufferListNotLocked, // No buffer list. Reconfigure acquisition
// and try again.
IMAQdxErrorResourcesAllocated, // Transfer engine resources already
// allocated. Reconfigure acquisition and try
// again.
IMAQdxErrorResourcesUnavailable, // Insufficient transfer engine resources.
IMAQdxErrorAsyncWrite, // Unable to perform asychronous register write.
IMAQdxErrorAsyncRead, // Unable to perform asychronous register read.
IMAQdxErrorTimeout, // Timeout.
IMAQdxErrorBusReset, // Bus reset occurred during a transaction.
IMAQdxErrorInvalidXML, // Unable to load camera's XML file.
IMAQdxErrorFileAccess, // Unable to read/write to file.
IMAQdxErrorInvalidCameraURLString, // Camera has malformed URL string.
IMAQdxErrorInvalidCameraFile, // Invalid camera file.
IMAQdxErrorGenICamError, // Unknown Genicam error.
IMAQdxErrorFormat7Parameters, // For format 7: The combination of speed,
// image position, image size, and color coding
// is incorrect.
IMAQdxErrorInvalidAttributeType, // The attribute type is not compatible with
// the passed variable type.
IMAQdxErrorDLLNotFound, // The DLL could not be found.
IMAQdxErrorFunctionNotFound, // The function could not be found.
IMAQdxErrorLicenseNotActivated, // License not activated.
IMAQdxErrorCameraNotConfiguredForListener, // The camera is not configured
// properly to support a listener.
IMAQdxErrorCameraMulticastNotAvailable, // Unable to configure the system for
// multicast support.
IMAQdxErrorBufferHasLostPackets, // The requested buffer has lost packets and
// the user requested an error to be
// generated.
IMAQdxErrorGiGEVisionError, // Unknown GiGE Vision error.
IMAQdxErrorNetworkError, // Unknown network error.
IMAQdxErrorCameraUnreachable, // Unable to connect to the camera.
IMAQdxErrorHighPerformanceNotSupported, // High performance acquisition is
// not supported on the specified
// network interface. Connect the
// camera to a network interface
// running the high performance
// driver.
IMAQdxErrorInterfaceNotRenamed, // Unable to rename interface. Invalid or
// duplicate name specified.
IMAQdxErrorNoSupportedVideoModes, // The camera does not have any video modes
// which are supported.
IMAQdxErrorSoftwareTriggerOverrun, // Software trigger overrun.
IMAQdxErrorTestPacketNotReceived, // The system did not receive a test packet
// from the camera. The packet size may be
// too large for the network configuration
// or a firewall may be enabled.
IMAQdxErrorCorruptedImageReceived, // The camera returned a corrupted image.
IMAQdxErrorCameraConfigurationHasChanged, // The camera did not return an
// image of the correct type it was
// configured for previously.
IMAQdxErrorCameraInvalidAuthentication, // The camera is configured with
// password authentication and either
// the user name and password were
// not configured or they are
// incorrect.
IMAQdxErrorUnknownHTTPError, // The camera returned an unknown HTTP error.
IMAQdxErrorKernelDriverUnavailable, // Unable to attach to the kernel mode
// driver.
IMAQdxErrorPixelFormatDecoderUnavailable, // No decoder available for
// selected pixel format.
IMAQdxErrorFirmwareUpdateNeeded, // The acquisition hardware needs a firmware
// update before it can be used.
IMAQdxErrorFirmwareUpdateRebootNeeded, // The firmware on the acquisition
// hardware has been updated and the
// system must be rebooted before use.
IMAQdxErrorLightingCurrentOutOfRange, // The requested current level from the
// lighting controller is not possible.
IMAQdxErrorUSB3VisionError, // Unknown USB3 Vision error.
IMAQdxErrorInvalidU3VUSBDescriptor, // The camera has a USB descriptor that
// is incompatible with the USB3 Vision
// specification.
IMAQdxErrorU3VInvalidControlInterface, // The USB3 Vision control interface
// is not implemented or is invalid on
// this camera.
IMAQdxErrorU3VControlInterfaceError, // There was an error from the control
// interface of the USB3 Vision camera.
IMAQdxErrorU3VInvalidEventInterface, // The USB3 Vision event interface is
// not implemented or is invalid on this
// camera.
IMAQdxErrorU3VEventInterfaceError, // There was an error from the event
// interface of the USB3 Vision camera.
IMAQdxErrorU3VInvalidStreamInterface, // The USB3 Vision stream interface is
// not implemented or is invalid on
// this camera.
IMAQdxErrorU3VStreamInterfaceError, // There was an error from the stream
// interface of the USB3 Vision camera.
IMAQdxErrorU3VUnsupportedConnectionSpeed, // The USB connection speed is not
// supported by the camera. Check
// whether the camera is plugged
// into a USB 2.0 port instead of a
// USB 3.0 port. If so, verify
// that the camera supports this
// use case.
IMAQdxErrorU3VInsufficientPower, // The USB3 Vision camera requires more
// current than can be supplied by the USB
// port in use.
IMAQdxErrorU3VInvalidMaxCurrent, // The U3V_MaximumCurrentUSB20_mA registry
// value is not valid for the connected USB3
// Vision camera.
IMAQdxErrorBufferIncompleteData, // The requested buffer has incomplete data
// and the user requested an error to be
// generated.
IMAQdxErrorCameraAcquisitionConfigFailed, // The camera returned an error
// starting the acquisition.
IMAQdxErrorCameraClosePending, // The camera still has outstanding references
// and will be closed when these operations
// complete.
IMAQdxErrorSoftwareFault, // An unexpected software error occurred.
IMAQdxErrorCameraPropertyInvalid, // The value for an invalid camera property
// was requested.
IMAQdxErrorJumboFramesNotEnabled, // Jumbo frames are not enabled on the
// host. Maximum packet size is 1500
// bytes.
IMAQdxErrorBayerPixelFormatNotSelected, // This operation requires that the
// camera has a Bayer pixel format
// selected.
IMAQdxErrorGuard = 0xFFFFFFFF,
} IMAQdxError;
//==============================================================================
// Bus Type Enumeration
//==============================================================================
typedef enum IMAQdxBusType_enum {
IMAQdxBusTypeFireWire = 0x31333934,
IMAQdxBusTypeEthernet = 0x69707634,
IMAQdxBusTypeSimulator = 0x2073696D,
IMAQdxBusTypeDirectShow = 0x64736877,
IMAQdxBusTypeIP = 0x4950636D,
IMAQdxBusTypeSmartCam2 = 0x53436132,
IMAQdxBusTypeUSB3Vision = 0x55534233,
IMAQdxBusTypeUVC = 0x55564320,
IMAQdxBusTypeGuard = 0xFFFFFFFF,
} IMAQdxBusType;
//==============================================================================
// Camera Control Mode Enumeration
//==============================================================================
typedef enum IMAQdxCameraControlMode_enum {
IMAQdxCameraControlModeController,
IMAQdxCameraControlModeListener,
IMAQdxCameraControlModeGuard = 0xFFFFFFFF,
} IMAQdxCameraControlMode;
//==============================================================================
// Buffer Number Mode Enumeration
//==============================================================================
typedef enum IMAQdxBufferNumberMode_enum {
IMAQdxBufferNumberModeNext,
IMAQdxBufferNumberModeLast,
IMAQdxBufferNumberModeBufferNumber,
IMAQdxBufferNumberModeGuard = 0xFFFFFFFF,
} IMAQdxBufferNumberMode;
//==============================================================================
// Plug n Play Event Enumeration
//==============================================================================
typedef enum IMAQdxPnpEvent_enum {
IMAQdxPnpEventCameraAttached,
IMAQdxPnpEventCameraDetached,
IMAQdxPnpEventBusReset,
IMAQdxPnpEventGuard = 0xFFFFFFFF,
} IMAQdxPnpEvent;
//==============================================================================
// Bayer Pattern Enumeration
//==============================================================================
typedef enum IMAQdxBayerPattern_enum {
IMAQdxBayerPatternNone,
IMAQdxBayerPatternGB,
IMAQdxBayerPatternGR,
IMAQdxBayerPatternBG,
IMAQdxBayerPatternRG,
IMAQdxBayerPatternHardware,
IMAQdxBayerPatternGuard = 0xFFFFFFFF,
} IMAQdxBayerPattern;
//==============================================================================
// Bayer Decode Algorithm Enumeration
//==============================================================================
typedef enum IMAQdxBayerAlgorithm_enum {
IMAQdxBayerAlgorithmBilinear,
IMAQdxBayerAlgorithmVNG,
IMAQdxBayerAlgorithmGuard = 0xFFFFFFFF,
} IMAQdxBayerAlgorithm;
//==============================================================================
// Output Image Types -- Values match Vision Development Module image types
//==============================================================================
typedef enum IMAQdxOutputImageType_enum {
IMAQdxOutputImageTypeU8 = 0,
IMAQdxOutputImageTypeI16 = 1,
IMAQdxOutputImageTypeU16 = 7,
IMAQdxOutputImageTypeRGB32 = 4,
IMAQdxOutputImageTypeRGB64 = 6,
IMAQdxOutputImageTypeAuto = 0x7FFFFFFF,
IMAQdxOutputImageTypeGuard = 0xFFFFFFFF,
} IMAQdxOutputImageType;
//==============================================================================
// Controller Destination Mode Enumeration
//==============================================================================
typedef enum IMAQdxDestinationMode_enum {
IMAQdxDestinationModeUnicast,
IMAQdxDestinationModeBroadcast,
IMAQdxDestinationModeMulticast,
IMAQdxDestinationModeGuard = 0xFFFFFFFF,
} IMAQdxDestinationMode;
//==============================================================================
// Attribute Type Enumeration
//==============================================================================
typedef enum IMAQdxAttributeType_enum {
IMAQdxAttributeTypeU32,
IMAQdxAttributeTypeI64,
IMAQdxAttributeTypeF64,
IMAQdxAttributeTypeString,
IMAQdxAttributeTypeEnum,
IMAQdxAttributeTypeBool,
IMAQdxAttributeTypeCommand,
IMAQdxAttributeTypeBlob,
IMAQdxAttributeTypeGuard = 0xFFFFFFFF,
} IMAQdxAttributeType;
//==============================================================================
// Value Type Enumeration
//==============================================================================
typedef enum IMAQdxValueType_enum {
IMAQdxValueTypeU32,
IMAQdxValueTypeI64,
IMAQdxValueTypeF64,
IMAQdxValueTypeString,
IMAQdxValueTypeEnumItem,
IMAQdxValueTypeBool,
IMAQdxValueTypeDisposableString,
IMAQdxValueTypeGuard = 0xFFFFFFFF,
} IMAQdxValueType;
//==============================================================================
// Interface File Flags Enumeration
//==============================================================================
typedef enum IMAQdxInterfaceFileFlags_enum {
IMAQdxInterfaceFileFlagsConnected = 0x1,
IMAQdxInterfaceFileFlagsDirty = 0x2,
IMAQdxInterfaceFileFlagsGuard = 0xFFFFFFFF,
} IMAQdxInterfaceFileFlags;
//==============================================================================
// Overwrite Mode Enumeration
//==============================================================================
typedef enum IMAQdxOverwriteMode_enum {
IMAQdxOverwriteModeGetOldest = 0x0,
IMAQdxOverwriteModeFail = 0x2,
IMAQdxOverwriteModeGetNewest = 0x3,
IMAQdxOverwriteModeGuard = 0xFFFFFFFF,
} IMAQdxOverwriteMode;
//==============================================================================
// Incomplete Buffer Mode Enumeration
//==============================================================================
typedef enum IMAQdxIncompleteBufferMode_enum {
IMAQdxIncompleteBufferModeIgnore,
IMAQdxIncompleteBufferModeFail,
IMAQdxIncompleteBufferModeGuard = 0xFFFFFFFF,
} IMAQdxIncompleteBufferMode;
//==============================================================================
// Lost Packet Mode Enumeration
//==============================================================================
typedef enum IMAQdxLostPacketMode_enum {
IMAQdxLostPacketModeIgnore,
IMAQdxLostPacketModeFail,
IMAQdxLostPacketModeGuard = 0xFFFFFFFF,
} IMAQdxLostPacketMode;
//==============================================================================
// Attribute Visibility Enumeration
//==============================================================================
typedef enum IMAQdxAttributeVisibility_enum {
IMAQdxAttributeVisibilitySimple = 0x00001000,
IMAQdxAttributeVisibilityIntermediate = 0x00002000,
IMAQdxAttributeVisibilityAdvanced = 0x00004000,
IMAQdxAttributeVisibilityGuard = 0xFFFFFFFF,
} IMAQdxAttributeVisibility;
//==============================================================================
// Stream Channel Mode Enumeration
//==============================================================================
typedef enum IMAQdxStreamChannelMode_enum {
IMAQdxStreamChannelModeAutomatic,
IMAQdxStreamChannelModeManual,
IMAQdxStreamChannelModeGuard = 0xFFFFFFFF,
} IMAQdxStreamChannelMode;
//==============================================================================
// Pixel Signedness Enumeration
//==============================================================================
typedef enum IMAQdxPixelSignedness_enum {
IMAQdxPixelSignednessUnsigned,
IMAQdxPixelSignednessSigned,
IMAQdxPixelSignednessHardware,
IMAQdxPixelSignednessGuard = 0xFFFFFFFF,
} IMAQdxPixelSignedness;
//==============================================================================
// USB Connection Speed Enumeration
//==============================================================================
typedef enum IMAQdxUSBConnectionSpeed_enum {
IMAQdxUSBConnectionSpeedLow = 1,
IMAQdxUSBConnectionSpeedFull = 2,
IMAQdxUSBConnectionSpeedHigh = 4,
IMAQdxUSBConnectionSpeedSuper = 8,
IMAQdxUSBConnectionSpeedGuard = 0xFFFFFFFF,
} IMAQdxUSBConnectionSpeed;
//==============================================================================
// CVI Structures
//==============================================================================
#pragma pack(push, 4)
//==============================================================================
// Camera Information Structure
//==============================================================================
typedef struct IMAQdxCameraInformation_struct {
uInt32 Type;
uInt32 Version;
uInt32 Flags;
uInt32 SerialNumberHi;
uInt32 SerialNumberLo;
IMAQdxBusType BusType;
char InterfaceName[IMAQDX_MAX_API_STRING_LENGTH];
char VendorName[IMAQDX_MAX_API_STRING_LENGTH];
char ModelName[IMAQDX_MAX_API_STRING_LENGTH];
char CameraFileName[IMAQDX_MAX_API_STRING_LENGTH];
char CameraAttributeURL[IMAQDX_MAX_API_STRING_LENGTH];
} IMAQdxCameraInformation;
//==============================================================================
// Camera File Structure
//==============================================================================
typedef struct IMAQdxCameraFile_struct {
uInt32 Type;
uInt32 Version;
char FileName[IMAQDX_MAX_API_STRING_LENGTH];
} IMAQdxCameraFile;
//==============================================================================
// Attribute Information Structure
//==============================================================================
typedef struct IMAQdxAttributeInformation_struct {
IMAQdxAttributeType Type;
bool32 Readable;
bool32 Writable;
char Name[IMAQDX_MAX_API_STRING_LENGTH];
} IMAQdxAttributeInformation;
//==============================================================================
// Enumeration Item Structure
//==============================================================================
typedef struct IMAQdxEnumItem_struct {
uInt32 Value;
uInt32 Reserved;
char Name[IMAQDX_MAX_API_STRING_LENGTH];
} IMAQdxEnumItem;
//==============================================================================
// Camera Information Structure
//==============================================================================
typedef IMAQdxEnumItem IMAQdxVideoMode;
#pragma pack(pop)
//==============================================================================
// Callbacks
//==============================================================================
typedef uInt32(NI_FUNC* FrameDoneEventCallbackPtr)(IMAQdxSession id,
uInt32 bufferNumber,
void* callbackData);
typedef uInt32(NI_FUNC* PnpEventCallbackPtr)(IMAQdxSession id,
IMAQdxPnpEvent pnpEvent,
void* callbackData);
typedef void(NI_FUNC* AttributeUpdatedEventCallbackPtr)(IMAQdxSession id,
const char* name,
void* callbackData);
#endif // niimaqdx_types
//==============================================================================
// Attributes
//==============================================================================
#define IMAQdxAttributeBaseAddress \
"CameraInformation::BaseAddress" // Read only. Gets the base address of the
// camera registers.
#define IMAQdxAttributeBusType \
"CameraInformation::BusType" // Read only. Gets the bus type of the camera.
#define IMAQdxAttributeModelName \
"CameraInformation::ModelName" // Read only. Returns the model name.
#define IMAQdxAttributeSerialNumberHigh \
"CameraInformation::SerialNumberHigh" // Read only. Gets the upper 32-bits of
// the camera 64-bit serial number.
#define IMAQdxAttributeSerialNumberLow \
"CameraInformation::SerialNumberLow" // Read only. Gets the lower 32-bits of
// the camera 64-bit serial number.
#define IMAQdxAttributeVendorName \
"CameraInformation::VendorName" // Read only. Returns the vendor name.
#define IMAQdxAttributeHostIPAddress \
"CameraInformation::HostIPAddress" // Read only. Returns the host adapter IP
// address.
#define IMAQdxAttributeIPAddress \
"CameraInformation::IPAddress" // Read only. Returns the IP address.
#define IMAQdxAttributePrimaryURLString \
"CameraInformation::PrimaryURLString" // Read only. Gets the camera's primary
// URL string.
#define IMAQdxAttributeSecondaryURLString \
"CameraInformation::SecondaryURLString" // Read only. Gets the camera's
// secondary URL string.
#define IMAQdxAttributeAcqInProgress \
"StatusInformation::AcqInProgress" // Read only. Gets the current state of
// the acquisition. TRUE if acquiring;
// otherwise FALSE.
#define IMAQdxAttributeLastBufferCount \
"StatusInformation::LastBufferCount" // Read only. Gets the number of
// transferred buffers.
#define IMAQdxAttributeLastBufferNumber \
"StatusInformation::LastBufferNumber" // Read only. Gets the last cumulative
// buffer number transferred.
#define IMAQdxAttributeLostBufferCount \
"StatusInformation::LostBufferCount" // Read only. Gets the number of lost
// buffers during an acquisition
// session.
#define IMAQdxAttributeLostPacketCount \
"StatusInformation::LostPacketCount" // Read only. Gets the number of lost
// packets during an acquisition
// session.
#define IMAQdxAttributeRequestedResendPackets \
"StatusInformation::RequestedResendPacketCount" // Read only. Gets the number
// of packets requested to be
// resent during an
// acquisition session.
#define IMAQdxAttributeReceivedResendPackets \
"StatusInformation::ReceivedResendPackets" // Read only. Gets the number of
// packets that were requested to
// be resent during an acquisition
// session and were completed.
#define IMAQdxAttributeHandledEventCount \
"StatusInformation::HandledEventCount" // Read only. Gets the number of
// handled events during an
// acquisition session.
#define IMAQdxAttributeLostEventCount \
"StatusInformation::LostEventCount" // Read only. Gets the number of lost
// events during an acquisition session.
#define IMAQdxAttributeBayerGainB \
"AcquisitionAttributes::Bayer::GainB" // Sets/gets the white balance gain for
// the blue component of the Bayer
// conversion.
#define IMAQdxAttributeBayerGainG \
"AcquisitionAttributes::Bayer::GainG" // Sets/gets the white balance gain for
// the green component of the Bayer
// conversion.
#define IMAQdxAttributeBayerGainR \
"AcquisitionAttributes::Bayer::GainR" // Sets/gets the white balance gain for
// the red component of the Bayer
// conversion.
#define IMAQdxAttributeBayerPattern \
"AcquisitionAttributes::Bayer::Pattern" // Sets/gets the Bayer pattern to
// use.
#define IMAQdxAttributeStreamChannelMode \
"AcquisitionAttributes::Controller::StreamChannelMode" // Gets/sets the mode
// for allocating a
// FireWire stream
// channel.
#define IMAQdxAttributeDesiredStreamChannel \
"AcquisitionAttributes::Controller::DesiredStreamChannel" // Gets/sets the
// stream channel
// to manually
// allocate.
#define IMAQdxAttributeFrameInterval \
"AcquisitionAttributes::FrameInterval" // Read only. Gets the duration in
// milliseconds between successive
// frames.
#define IMAQdxAttributeIgnoreFirstFrame \
"AcquisitionAttributes::IgnoreFirstFrame" // Gets/sets the video delay of one
// frame between starting the
// camera and receiving the video
// feed.
#define IMAQdxAttributeOffsetX \
"OffsetX" // Gets/sets the left offset of the image.
#define IMAQdxAttributeOffsetY \
"OffsetY" // Gets/sets the top offset of the image.
#define IMAQdxAttributeWidth "Width" // Gets/sets the width of the image.
#define IMAQdxAttributeHeight "Height" // Gets/sets the height of the image.
#define IMAQdxAttributePixelFormat \
"PixelFormat" // Gets/sets the pixel format of the source sensor.
#define IMAQdxAttributePacketSize \
"PacketSize" // Gets/sets the packet size in bytes.
#define IMAQdxAttributePayloadSize \
"PayloadSize" // Gets/sets the frame size in bytes.
#define IMAQdxAttributeSpeed \
"AcquisitionAttributes::Speed" // Gets/sets the transfer speed in Mbps for a
// FireWire packet.
#define IMAQdxAttributeShiftPixelBits \
"AcquisitionAttributes::ShiftPixelBits" // Gets/sets the alignment of 16-bit
// cameras. Downshift the pixel bits
// if the camera returns most
// significant bit-aligned data.
#define IMAQdxAttributeSwapPixelBytes \
"AcquisitionAttributes::SwapPixelBytes" // Gets/sets the endianness of 16-bit
// cameras. Swap the pixel bytes if
// the camera returns little endian
// data.
#define IMAQdxAttributeOverwriteMode \
"AcquisitionAttributes::OverwriteMode" // Gets/sets the overwrite mode, used
// to determine acquisition when an
// image transfer cannot be completed
// due to an overwritten internal
// buffer.
#define IMAQdxAttributeTimeout \
"AcquisitionAttributes::Timeout" // Gets/sets the timeout value in
// milliseconds, used to abort an
// acquisition when the image transfer
// cannot be completed within the delay.
#define IMAQdxAttributeVideoMode \
"AcquisitionAttributes::VideoMode" // Gets/sets the video mode for a camera.
#define IMAQdxAttributeBitsPerPixel \
"AcquisitionAttributes::BitsPerPixel" // Gets/sets the actual bits per pixel.
// For 16-bit components, this
// represents the actual bit depth
// (10-, 12-, 14-, or 16-bit).
#define IMAQdxAttributePixelSignedness \
"AcquisitionAttributes::PixelSignedness" // Gets/sets the signedness of the
// pixel. For 16-bit components,
// this represents the actual pixel
// signedness (Signed, or Unsigned).
#define IMAQdxAttributeReserveDualPackets \
"AcquisitionAttributes::ReserveDualPackets" // Gets/sets if dual packets will
// be reserved for a very large
// FireWire packet.
#define IMAQdxAttributeReceiveTimestampMode \
"AcquisitionAttributes::ReceiveTimestampMode" // Gets/sets the mode for
// timestamping images received
// by the driver.
#define IMAQdxAttributeActualPeakBandwidth \
"AcquisitionAttributes::AdvancedEthernet::BandwidthControl::" \
"ActualPeakBandwidth" // Read only. Returns the actual maximum peak bandwidth
// the camera will be configured to use.
#define IMAQdxAttributeDesiredPeakBandwidth \
"AcquisitionAttributes::AdvancedEthernet::BandwidthControl::" \
"DesiredPeakBandwidth" // Gets/sets the desired maximum peak bandwidth the
// camera should use.
#define IMAQdxAttributeDestinationMode \
"AcquisitionAttributes::AdvancedEthernet::Controller::DestinationMode" // Gets/Sets
// where
// the
// camera
// is
// instructed
// to
// send
// the
// image
// stream.
#define IMAQdxAttributeDestinationMulticastAddress \
"AcquisitionAttributes::AdvancedEthernet::Controller::" \
"DestinationMulticastAddress" // Gets/Sets the multicast address the camera
// should send data in multicast mode.
#define IMAQdxAttributeEventsEnabled \
"AcquisitionAttributes::AdvancedEthernet::EventParameters::EventsEnabled" // Gets/Sets if events will be handled.
#define IMAQdxAttributeMaxOutstandingEvents \
"AcquisitionAttributes::AdvancedEthernet::EventParameters::" \
"MaxOutstandingEvents" // Gets/Sets the maximum number of outstanding events
// to queue.
#define IMAQdxAttributeTestPacketEnabled \
"AcquisitionAttributes::AdvancedEthernet::TestPacketParameters::" \
"TestPacketEnabled" // Gets/Sets whether the driver will validate the image
// streaming settings using test packets prior to an
// acquisition
#define IMAQdxAttributeTestPacketTimeout \
"AcquisitionAttributes::AdvancedEthernet::TestPacketParameters::" \
"TestPacketTimeout" // Gets/Sets the timeout for validating test packet
// reception (if enabled)
#define IMAQdxAttributeMaxTestPacketRetries \
"AcquisitionAttributes::AdvancedEthernet::TestPacketParameters::" \
"MaxTestPacketRetries" // Gets/Sets the number of retries for validating test
// packet reception (if enabled)
#define IMAQdxAttributeChunkDataDecodingEnabled \
"AcquisitionAttributes::ChunkDataDecoding::ChunkDataDecodingEnabled" // Gets/Sets
// whether
// the
// driver
// will
// decode
// any
// chunk
// data
// in
// the
// image
// stream
#define IMAQdxAttributeChunkDataDecodingMaxElementSize \
"AcquisitionAttributes::ChunkDataDecoding::MaximumChunkCopySize" // Gets/Sets
// the
// maximum
// size of
// any
// single
// chunk
// data
// element
// that will
// be made
// available
#define IMAQdxAttributeLostPacketMode \
"AcquisitionAttributes::AdvancedEthernet::LostPacketMode" // Gets/sets the
// behavior when
// the user
// extracts a
// buffer that has
// missing packets.
#define IMAQdxAttributeMemoryWindowSize \
"AcquisitionAttributes::AdvancedEthernet::ResendParameters::" \
"MemoryWindowSize" // Gets/sets the size of the memory window of the camera
// in kilobytes. Should match the camera's internal buffer
// size.
#define IMAQdxAttributeResendsEnabled \
"AcquisitionAttributes::AdvancedEthernet::ResendParameters::ResendsEnabled" // Gets/sets if resends will be issued for missing packets.
#define IMAQdxAttributeResendThresholdPercentage \
"AcquisitionAttributes::AdvancedEthernet::ResendParameters::" \
"ResendThresholdPercentage" // Gets/sets the threshold of the packet
// processing window that will trigger packets to
// be resent.
#define IMAQdxAttributeResendBatchingPercentage \
"AcquisitionAttributes::AdvancedEthernet::ResendParameters::" \
"ResendBatchingPercentage" // Gets/sets the percent of the packet resend
// threshold that will be issued as one group past
// the initial threshold sent in a single request.
#define IMAQdxAttributeMaxResendsPerPacket \
"AcquisitionAttributes::AdvancedEthernet::ResendParameters::" \
"MaxResendsPerPacket" // Gets/sets the maximum number of resend requests that
// will be issued for a missing packet.
#define IMAQdxAttributeResendResponseTimeout \
"AcquisitionAttributes::AdvancedEthernet::ResendParameters::" \
"ResendResponseTimeout" // Gets/sets the time to wait for a resend request to
// be satisfied before sending another.
#define IMAQdxAttributeNewPacketTimeout \
"AcquisitionAttributes::AdvancedEthernet::ResendParameters::" \
"NewPacketTimeout" // Gets/sets the time to wait for new packets to arrive in
// a partially completed image before assuming the rest of
// the image was lost.
#define IMAQdxAttributeMissingPacketTimeout \
"AcquisitionAttributes::AdvancedEthernet::ResendParameters::" \
"MissingPacketTimeout" // Gets/sets the time to wait for a missing packet
// before issuing a resend.
#define IMAQdxAttributeResendTimerResolution \
"AcquisitionAttributes::AdvancedEthernet::ResendParameters::" \
"ResendTimerResolution" // Gets/sets the resolution of the packet processing
// system that is used for all packet-related
// timeouts.
//==============================================================================
// Functions
//==============================================================================
IMAQdxError NI_FUNC IMAQdxSnap(IMAQdxSession id, Image* image);
IMAQdxError NI_FUNC IMAQdxConfigureGrab(IMAQdxSession id);
IMAQdxError NI_FUNC IMAQdxGrab(IMAQdxSession id, Image* image,
bool32 waitForNextBuffer,
uInt32* actualBufferNumber);
IMAQdxError NI_FUNC
IMAQdxSequence(IMAQdxSession id, Image* images[], uInt32 count);
IMAQdxError NI_FUNC
IMAQdxDiscoverEthernetCameras(const char* address, uInt32 timeout);
IMAQdxError NI_FUNC
IMAQdxEnumerateCameras(IMAQdxCameraInformation cameraInformationArray[],
uInt32* count, bool32 connectedOnly);
IMAQdxError NI_FUNC IMAQdxResetCamera(const char* name, bool32 resetAll);
IMAQdxError NI_FUNC IMAQdxOpenCamera(const char* name,
IMAQdxCameraControlMode mode,
IMAQdxSession* id);
IMAQdxError NI_FUNC IMAQdxCloseCamera(IMAQdxSession id);
IMAQdxError NI_FUNC IMAQdxConfigureAcquisition(IMAQdxSession id,
bool32 continuous,
uInt32 bufferCount);
IMAQdxError NI_FUNC IMAQdxStartAcquisition(IMAQdxSession id);
IMAQdxError NI_FUNC
IMAQdxGetImage(IMAQdxSession id, Image* image, IMAQdxBufferNumberMode mode,
uInt32 desiredBufferNumber, uInt32* actualBufferNumber);
IMAQdxError NI_FUNC
IMAQdxGetImageData(IMAQdxSession id, void* buffer, uInt32 bufferSize,
IMAQdxBufferNumberMode mode, uInt32 desiredBufferNumber,
uInt32* actualBufferNumber);
IMAQdxError NI_FUNC IMAQdxStopAcquisition(IMAQdxSession id);
IMAQdxError NI_FUNC IMAQdxUnconfigureAcquisition(IMAQdxSession id);
IMAQdxError NI_FUNC
IMAQdxEnumerateVideoModes(IMAQdxSession id, IMAQdxVideoMode videoModeArray[],
uInt32* count, uInt32* currentMode);
IMAQdxError NI_FUNC IMAQdxEnumerateAttributes(
IMAQdxSession id, IMAQdxAttributeInformation attributeInformationArray[],
uInt32* count, const char* root);
IMAQdxError NI_FUNC IMAQdxGetAttribute(IMAQdxSession id, const char* name,
IMAQdxValueType type, void* value);
IMAQdxError NI_FUNCC IMAQdxSetAttribute(IMAQdxSession id, const char* name,
IMAQdxValueType type, ...);
IMAQdxError NI_FUNC
IMAQdxGetAttributeMinimum(IMAQdxSession id, const char* name,
IMAQdxValueType type, void* value);
IMAQdxError NI_FUNC
IMAQdxGetAttributeMaximum(IMAQdxSession id, const char* name,
IMAQdxValueType type, void* value);
IMAQdxError NI_FUNC
IMAQdxGetAttributeIncrement(IMAQdxSession id, const char* name,
IMAQdxValueType type, void* value);
IMAQdxError NI_FUNC IMAQdxGetAttributeType(IMAQdxSession id, const char* name,
IMAQdxAttributeType* type);
IMAQdxError NI_FUNC
IMAQdxIsAttributeReadable(IMAQdxSession id, const char* name, bool32* readable);
IMAQdxError NI_FUNC
IMAQdxIsAttributeWritable(IMAQdxSession id, const char* name, bool32* writable);
IMAQdxError NI_FUNC
IMAQdxEnumerateAttributeValues(IMAQdxSession id, const char* name,
IMAQdxEnumItem list[], uInt32* size);
IMAQdxError NI_FUNC IMAQdxGetAttributeTooltip(IMAQdxSession id,
const char* name, char* tooltip,
uInt32 length);
IMAQdxError NI_FUNC IMAQdxGetAttributeUnits(IMAQdxSession id, const char* name,
char* units, uInt32 length);
IMAQdxError NI_FUNC
IMAQdxRegisterFrameDoneEvent(IMAQdxSession id, uInt32 bufferInterval,
FrameDoneEventCallbackPtr callbackFunction,
void* callbackData);
IMAQdxError NI_FUNC IMAQdxRegisterPnpEvent(IMAQdxSession id,
IMAQdxPnpEvent event,
PnpEventCallbackPtr callbackFunction,
void* callbackData);
IMAQdxError NI_FUNC
IMAQdxWriteRegister(IMAQdxSession id, uInt32 offset, uInt32 value);
IMAQdxError NI_FUNC
IMAQdxReadRegister(IMAQdxSession id, uInt32 offset, uInt32* value);
IMAQdxError NI_FUNC IMAQdxWriteMemory(IMAQdxSession id, uInt32 offset,
const char* values, uInt32 count);
IMAQdxError NI_FUNC
IMAQdxReadMemory(IMAQdxSession id, uInt32 offset, char* values, uInt32 count);
IMAQdxError NI_FUNC
IMAQdxGetErrorString(IMAQdxError error, char* message, uInt32 messageLength);
IMAQdxError NI_FUNC
IMAQdxWriteAttributes(IMAQdxSession id, const char* filename);
IMAQdxError NI_FUNC
IMAQdxReadAttributes(IMAQdxSession id, const char* filename);
IMAQdxError NI_FUNC
IMAQdxResetEthernetCameraAddress(const char* name, const char* address,
const char* subnet, const char* gateway,
uInt32 timeout);
IMAQdxError NI_FUNC IMAQdxEnumerateAttributes2(
IMAQdxSession id, IMAQdxAttributeInformation attributeInformationArray[],
uInt32* count, const char* root, IMAQdxAttributeVisibility visibility);
IMAQdxError NI_FUNC
IMAQdxGetAttributeVisibility(IMAQdxSession id, const char* name,
IMAQdxAttributeVisibility* visibility);
IMAQdxError NI_FUNC
IMAQdxGetAttributeDescription(IMAQdxSession id, const char* name,
char* description, uInt32 length);
IMAQdxError NI_FUNC
IMAQdxGetAttributeDisplayName(IMAQdxSession id, const char* name,
char* displayName, uInt32 length);
IMAQdxError NI_FUNC IMAQdxDispose(void* buffer);
IMAQdxError NI_FUNC IMAQdxRegisterAttributeUpdatedEvent(
IMAQdxSession id, const char* name,
AttributeUpdatedEventCallbackPtr callbackFunction, void* callbackData);
IMAQdxError NI_FUNC IMAQdxEnumerateAttributes3(
IMAQdxSession id, IMAQdxAttributeInformation attributeInformationArray[],
uInt32* count, const char* root, IMAQdxAttributeVisibility visibility);
#ifdef __cplusplus
}
#endif
#endif // ___niimaqdx_h___