VimbaC.h
Go to the documentation of this file.
00001 /*=============================================================================
00002   Copyright (C) 2012 Allied Vision Technologies.  All Rights Reserved.
00003 
00004   Redistribution of this header file, in original or modified form, without
00005   prior written consent of Allied Vision Technologies is prohibited.
00006 
00007 -------------------------------------------------------------------------------
00008  
00009   File:        VimbaC.h
00010 
00011   Description: Main header file for the VimbaC API.
00012 
00013 -------------------------------------------------------------------------------
00014 
00015   THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
00016   WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
00017   NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR  PURPOSE ARE
00018   DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 
00019   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
00020   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00021   LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED  
00022   AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 
00023   TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
00024   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00025 
00026 =============================================================================*/
00027 
00028 #ifndef VIMBAC_H_INCLUDE_
00029 #define VIMBAC_H_INCLUDE_
00030 
00031 // This file describes all necessary definitions for using AVT's VimbaC API.
00032 // These type definitions are designed to be portable from other languages
00033 //  and other operating systems.
00034 //
00035 // General conventions:
00036 // - Method names are composed in the following manner:
00037 //    - Vmb"Action"                                        example: VmbStartup()
00038 //    - Vmb"Entity""Action" or Vmb"ActionTarget""Action"   example: VmbInterfaceOpen()
00039 //    - Vmb"Entity""SubEntity/ActionTarget""Action"        example: VmbFeatureCommandRun()
00040 // - Methods dealing with features, memory or registers accept a handle from the following
00041 //   module list as first parameter: System, Camera, Interface and AncillaryData.
00042 //   All other methods taking handles accept only a specific handle.
00043 // - Strings (generally declared as "const char *") are assumed to have a trailing 0 character
00044 // - All pointer parameters should of course be valid, except if stated otherwise.
00045 // - To ensure compatibility with older programs linked against a former version of the API,
00046 //   all struct* parameters have an accompanying sizeofstruct parameter.
00047 
00048 //===== #DEFINES ==============================================================
00049 
00050 #if defined (_WIN32)
00051     #if defined AVT_VMBAPI_C_EXPORTS                // DLL exports
00052         #define IMEXPORTC /*__declspec(dllexport)   HINT: We export via the .def file */
00053     #elif defined AVT_VMBAPI_C_LIB                  // static LIB
00054         #define IMEXPORTC
00055     #else                                           // import
00056         #define IMEXPORTC __declspec(dllimport)
00057     #endif
00058     
00059     #ifndef _WIN64
00060         // Calling convention
00061         #define VMB_CALL __stdcall
00062     #else
00063         // Calling convention
00064         #define VMB_CALL
00065     #endif
00066 #elif defined (__GNUC__) && (__GNUC__ >= 4) && defined (__ELF__)
00067     // SO exports (requires compiler option -fvisibility=hidden)
00068     #ifdef AVT_VMBAPI_C_EXPORTS
00069         #define IMEXPORTC __attribute__((visibility("default")))
00070     #else
00071         #define IMEXPORTC
00072     #endif
00073     
00074     #ifdef __i386__
00075         // Calling convention
00076         #define VMB_CALL __attribute__((stdcall))
00077     #else
00078         // Calling convention
00079         #define VMB_CALL
00080     #endif
00081 #elif defined (__APPLE__)
00082     // Calling convention
00083     #define VMB_CALL
00084 #else
00085     #error Unknown platform, file needs adaption
00086 #endif
00087 
00088 //===== TYPES ==============================================================
00089 #include "VmbCommonTypes.h"
00090 
00091 #ifdef __cplusplus
00092 extern "C" {
00093 #endif
00094 
00095 // Timeout parameter signaling a blocking call
00096 #define VMBINFINITE        0xFFFFFFFF
00097 
00098 // Constant for the Vimba handle to be able to access Vimba system features
00099 const VmbHandle_t  gVimbaHandle = (VmbHandle_t)1;
00100 
00101 //
00102 // Camera interface type (for instance FireWire, Ethernet);
00103 //
00104 typedef enum VmbInterfaceType
00105 {
00106     VmbInterfaceUnknown      = 0,           // Interface is not known to this version of the API
00107     VmbInterfaceFirewire     = 1,           // 1394
00108     VmbInterfaceEthernet     = 2,           // GigE
00109     VmbInterfaceUsb          = 3,           // USB 3.0
00110 } VmbInterfaceType;
00111 typedef VmbUint32_t VmbInterface_t;         // Type for an Interface; for values see VmbInterfaceType
00112 
00113 //
00114 // Access mode for configurable devices (interfaces, cameras).
00115 // Used in VmbCameraInfo_t, VmbInterfaceInfo_t as flags, so multiple modes can be
00116 // announced, while in VmbCameraOpen(), no combination must be used.
00117 //
00118 typedef enum VmbAccessModeType
00119 {
00120     VmbAccessModeNone       = 0,            // No access
00121     VmbAccessModeFull       = 1,            // Read and write access
00122     VmbAccessModeRead       = 2,            // Only read access
00123     VmbAccessModeConfig     = 4,            // Device configuration access
00124     VmbAccessModeLite       = 8,            // Device read/write access without feature access (only addresses)
00125 } VmbAccessModeType;
00126 typedef VmbUint32_t VmbAccessMode_t;        // Type for an AccessMode; for values see VmbAccessModeType
00127 
00128 //
00129 // Interface information.
00130 // Holds read-only information about an interface.
00131 //
00132 typedef struct
00133 {
00134     const char*     interfaceIdString;      // Unique identifier for each interface
00135     VmbInterface_t  interfaceType;          // Interface type, see VmbInterfaceType
00136     const char*     interfaceName;          // Interface name, given by the transport layer
00137     const char*     serialString;           // Serial number
00138     VmbAccessMode_t permittedAccess;        // Used access mode, see VmbAccessModeType
00139 
00140 } VmbInterfaceInfo_t;
00141 
00142 //
00143 // Camera information.
00144 // Holds read-only information about a camera.
00145 //
00146 typedef struct
00147 {
00148     const char*     cameraIdString;         // Unique identifier for each camera
00149     const char*     cameraName;             // Name of the camera
00150     const char*     modelName;              // Model name
00151     const char*     serialString;           // Serial number
00152     VmbAccessMode_t permittedAccess;        // Used access mode, see VmbAccessModeType
00153     const char*     interfaceIdString;      // Unique value for each interface or bus
00154 
00155 } VmbCameraInfo_t;
00156 
00157 //
00158 // Supported feature data types
00159 //
00160 typedef enum VmbFeatureDataType
00161 {
00162     VmbFeatureDataUnknown     = 0,          // Unknown feature type
00163     VmbFeatureDataInt         = 1,          // 64 bit integer feature
00164     VmbFeatureDataFloat       = 2,          // 64 bit floating point feature
00165     VmbFeatureDataEnum        = 3,          // Enumeration feature
00166     VmbFeatureDataString      = 4,          // String feature
00167     VmbFeatureDataBool        = 5,          // Boolean feature
00168     VmbFeatureDataCommand     = 6,          // Command feature
00169     VmbFeatureDataRaw         = 7,          // Raw (direct register access) feature
00170     VmbFeatureDataNone        = 8,          // Feature with no data
00171 } VmbFeatureDataType;
00172 typedef VmbUint32_t VmbFeatureData_t;       // Data type for a Feature; for values see VmbFeatureDataType
00173 
00174 //
00175 // Feature visibility
00176 //
00177 typedef enum VmbFeatureVisibilityType
00178 {
00179     VmbFeatureVisibilityUnknown      = 0,
00180     VmbFeatureVisibilityBeginner     = 1,   // Feature is visible in feature list (beginner level)
00181     VmbFeatureVisibilityExpert       = 2,   // Feature is visible in feature list (expert level)
00182     VmbFeatureVisibilityGuru         = 3,   // Feature is visible in feature list (guru level)
00183     VmbFeatureVisibilityInvisible    = 4,   // Feature is not visible in feature list
00184 } VmbFeatureVisibilityType;
00185 typedef VmbUint32_t VmbFeatureVisibility_t; // Type for Feature visibility; for values see VmbFeatureVisibilityType
00186 
00187 //
00188 // Feature flags
00189 //
00190 typedef enum VmbFeatureFlagsType
00191 {
00192     VmbFeatureFlagsNone         = 0,
00193     VmbFeatureFlagsRead         = 1,        // Read access might be permitted (check VmbFeatureAccessQuery())
00194     VmbFeatureFlagsWrite        = 2,        // Write access might be permitted (check VmbFeatureAccessQuery())
00195     VmbFeatureFlagsVolatile     = 8,        // Value may change at any time
00196     VmbFeatureFlagsModifyWrite  = 16,       // Value may change after a write
00197 } VmbFeatureFlagsType;
00198 typedef VmbUint32_t VmbFeatureFlags_t;      // Type for Feature flags; for values see VmbFeatureFlagsType
00199 
00200 //
00201 // Feature information.
00202 // Holds read-only information about a feature.
00203 //
00204 typedef struct VmbFeatureInfo
00205 {
00206     const char*             name;                   // Name used in the API
00207     VmbFeatureData_t        featureDataType;        // Data type of this feature
00208     VmbFeatureFlags_t       featureFlags;           // Access flags for this feature
00209     const char*             category;               // Category this feature can be found in
00210     const char*             displayName;            // Feature name to be used in GUIs
00211     VmbUint32_t             pollingTime;            // Predefined polling time for volatile features
00212     const char*             unit;                   // Measuring unit as given in the XML file
00213     const char*             representation;         // Representation of a numeric feature
00214     VmbFeatureVisibility_t  visibility;             // GUI visibility
00215     const char*             tooltip;                // Short description, e.g. for a tooltip
00216     const char*             description;            // Longer description
00217     const char*             sfncNamespace;          // Namespace this feature resides in
00218     VmbBool_t               isStreamable;           // Indicates if a feature can be stored to / loaded from a file
00219     VmbBool_t               hasAffectedFeatures;    // Indicates if the feature potentially affects other features
00220     VmbBool_t               hasSelectedFeatures;    // Indicates if the feature selects other features
00221 
00222 } VmbFeatureInfo_t;
00223 
00224 //
00225 // Info about possible entries of an enumeration feature
00226 //
00227 typedef struct VmbFeatureEnumEntry
00228 {
00229     const char*             name;           // Name used in the API
00230     const char*             displayName;    // Enumeration entry name to be used in GUIs
00231     VmbFeatureVisibility_t  visibility;     // GUI visibility
00232     const char*             tooltip;        // Short description, e.g. for a tooltip
00233     const char*             description;    // Longer description
00234     const char*             sfncNamespace;  // Namespace this feature resides in
00235     VmbInt64_t              intValue;       // Integer value of this enumeration entry
00236 
00237 } VmbFeatureEnumEntry_t;
00238 
00239 //
00240 // Status of a frame transfer
00241 //
00242 typedef enum VmbFrameStatusType
00243 {
00244     VmbFrameStatusComplete       =  0,      // Frame has been completed without errors
00245     VmbFrameStatusIncomplete     = -1,      // Frame could not be filled to the end
00246     VmbFrameStatusTooSmall       = -2,      // Frame buffer was too small
00247     VmbFrameStatusInvalid        = -3,      // Frame buffer was invalid
00248 } VmbFrameStatusType;
00249 typedef VmbInt32_t VmbFrameStatus_t;        // Type for the frame status; for values see VmbFrameStatusType
00250 
00251 //
00252 // Frame flags
00253 //
00254 typedef enum VmbFrameFlagsType
00255 {
00256     VmbFrameFlagsNone       = 0,
00257     VmbFrameFlagsDimension  = 1,            // Frame's dimension is provided
00258     VmbFrameFlagsOffset     = 2,            // Frame's Offset is provided (ROI)
00259     VmbFrameFlagsFrameID    = 4,            // Frame's ID is provided
00260     VmbFrameFlagsTimestamp  = 8,            // Frame's Timestamp is provided
00261 } VmbFrameFlagsType;
00262 typedef VmbUint32_t VmbFrameFlags_t;        // Type for Frame flags; for values see VmbFrameFlagsType
00263 
00264 //
00265 // Frame delivered by the camera
00266 //
00267 typedef struct
00268 {
00269     //----- In -----
00270 
00271     void*               buffer;             // Comprises image and ancillary data
00272     VmbUint32_t         bufferSize;         // Size of the data buffer
00273 
00274     void*               context[4];         // User context filled during queuing
00275 
00276     //----- Out -----
00277     VmbFrameStatus_t    receiveStatus;      // Resulting status of the receive operation
00278     VmbFrameFlags_t     receiveFlags;       // Resulting flags of the receive operation
00279 
00280     VmbUint32_t         imageSize;          // Size of the image data inside the data buffer
00281     VmbUint32_t         ancillarySize;      // Size of the ancillary data inside the data buffer
00282 
00283     VmbPixelFormat_t    pixelFormat;        // Pixel format of the image
00284 
00285     VmbUint32_t         width;              // Width of an image
00286     VmbUint32_t         height;             // Height of an image
00287     VmbUint32_t         offsetX;            // Horizontal offset of an image
00288     VmbUint32_t         offsetY;            // Vertical offset of an image
00289 
00290     VmbUint64_t         frameID;            // Unique ID of this frame in this stream
00291     VmbUint64_t         timestamp;          // Timestamp of the data transfer
00292 
00293 } VmbFrame_t;
00294 
00295 // ----- Callbacks ------------------------------------------------------------
00296 
00297 //
00298 // Name: VmbInvalidationCallback
00299 //
00300 // Purpose: Invalidation Callback type
00301 //
00302 // Parameters:
00303 //
00304 //  [in ]  const VmbHandle_t    handle          Handle for a module that exposes features
00305 //  [in ]  const char*          name            Name of the feature
00306 //  [in ]  void*                pUserContext    Pointer to the user context, see VmbFeatureInvalidationRegister
00307 //
00308 //  While the callback is run, all feature data is atomic.  After the
00309 //  callback finishes, the feature data might be updated with new values.
00310 //
00311 // Internal:
00312 //
00313 //  Do not spend too much time in this thread – it will prevent the feature values from
00314 //  being updated from any other thread or the lower-level drivers.
00315 //
00316 typedef void (VMB_CALL *VmbInvalidationCallback)(const VmbHandle_t handle, const char* name, void* pUserContext);
00317 
00318 //
00319 // Name: VmbFrameCallback
00320 //
00321 // Purpose: Frame Callback type
00322 //
00323 // Parameters:
00324 //
00325 //  [in ]  const VmbHandle_t    cameraHandle    Handle of the camera
00326 //  [out]  VmbFrame_t*          pFrame          Frame completed
00327 //
00328 typedef void (VMB_CALL *VmbFrameCallback)(const VmbHandle_t cameraHandle, VmbFrame_t* pFrame);
00329 
00330 
00331 //===== FUNCTION PROTOTYPES ===================================================
00332 
00333 //----- API Version -----------------------------------------------------------
00334 
00335 //
00336 // Method:      VmbVersionQuery()
00337 //
00338 // Purpose:     Retrieve the version number of VimbaC.
00339 //
00340 // Parameters:
00341 //
00342 //  [out]  VmbVersionInfo_t*    pVersionInfo        Pointer to the struct where version information
00343 //                                                  is copied
00344 //  [in ]  VmbUint32_t          sizeofVersionInfo   Size of structure in bytes
00345 //
00346 // Returns:
00347 //
00348 //  - VmbErrorSuccess:       If no error
00349 //  - VmbErrorStructSize:    The given struct size is not valid for this version of the API
00350 //  - VmbErrorBadParameter:  "pVersionInfo" is NULL.
00351 //
00352 // Details:    This function can be called at anytime, even before the API is
00353 //             initialized. All other version numbers may be queried via feature access
00354 //
00355 IMEXPORTC VmbError_t VMB_CALL VmbVersionQuery ( VmbVersionInfo_t* pVersionInfo,
00356                                                 VmbUint32_t       sizeofVersionInfo );
00357 
00358 
00359 //----- API Initialization ----------------------------------------------------
00360 
00361 //
00362 // Method:      VmbStartup()
00363 //
00364 // Purpose:     Initialize the VimbaC API.
00365 //
00366 // Parameters:
00367 //
00368 // Returns:
00369 //
00370 //  - VmbErrorSuccess:       If no error
00371 //  - VmbErrorInternalFault: An internal fault occurred
00372 //
00373 // Details:     On successful return, the API is initialized; this is a necessary call.
00374 //
00375 // Internal:
00376 //
00377 //  - Vimba initialization (open log files, ...)
00378 //  - Check system configuration (correct version of Transport Layers, ...)
00379 //  - This method must be called before any VimbaC function other than VmbVersionQuery() is run.
00380 //
00381 IMEXPORTC VmbError_t VMB_CALL VmbStartup ( );
00382 
00383 //
00384 // Method:      VmbShutdown()
00385 //
00386 // Purpose:     Perform a shutdown on the API.
00387 //
00388 // Parameters:  none
00389 //
00390 // Returns:     none
00391 //
00392 // Details:     This will free some resources and deallocate all physical resources if applicable.
00393 //
00394 IMEXPORTC void VMB_CALL VmbShutdown ( );
00395 
00396 
00397 //----- Camera Enumeration & Information --------------------------------------
00398 
00399 //
00400 // Method:      VmbCamerasList()
00401 //
00402 // Purpose:     Retrieve a list of all cameras.
00403 //
00404 // Parameters:
00405 //
00406 //  [out]  VmbCameraInfo_t*  pCameraInfo        Array of VmbCameraInfo_t, allocated by
00407 //                                              the caller. The camera list is
00408 //                                              copied here. May be NULL.
00409 //  [in ]  VmbUint32_t       listLength         Number of VmbCameraInfo_t elements provided
00410 //  [out]  VmbUint32_t*      pNumFound          Number of VmbCameraInfo_t elements found. May be NULL.
00411 //  [in ]  VmbUint32_t       sizeofCameraInfo   Size of the structure
00412 //
00413 // Returns:
00414 //
00415 //  - VmbErrorSuccess:       If no error
00416 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00417 //  - VmbErrorStructSize:    The given struct size is not valid for this API version
00418 //  - VmbErrorMoreData:      More data was returned than space was provided
00419 //
00420 // Details:     Camera detection is started with the first call of VmbCamerasList() or the registration
00421 //              of the "DiscoveryInterfaceEvent" event. The first call of VmbCamerasList() might be delayed
00422 //              if no "DiscoveryInterfaceEvent" event is registered (see GigE Discovery procedure).
00423 //              If "pCameraInfo" is NULL on entry, only the number of interfaces is returned in "pNumFound".
00424 //
00425 IMEXPORTC VmbError_t VMB_CALL VmbCamerasList (   VmbCameraInfo_t*    pCameraInfo,
00426                                                  VmbUint32_t        listLength,
00427                                                  VmbUint32_t*       pNumFound,
00428                                                  VmbUint32_t        sizeofCameraInfo );
00429 
00430 //
00431 // Method:      VmbCameraInfoQuery()
00432 //
00433 // Purpose:     Retrieve information on a camera given by an ID.
00434 //
00435 // Parameters:
00436 //
00437 //  [in ] const char*       idString           Unique ID of the camera
00438 //  [out] VmbCameraInfo_t*  pInfo              Structure where information will be copied. May be NULL.
00439 //  [in ] VmbUint32_t       sizeofCameraInfo   Size of the structure
00440 //
00441 // Returns:
00442 //
00443 //  - VmbErrorSuccess:       If no error
00444 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00445 //  - VmbErrorNotFound:      The designated camera cannot be found
00446 //  - VmbErrorStructSize:    The given struct size is not valid for this API version
00447 //  - VmbErrorMoreData:      More data was returned than space was provided
00448 //
00449 // Details:     May be called if a camera is not yet under control of the application.
00450 //              "idString" might be one of the following:"169.254.12.13"
00451 //              or a plain serial number: "1234567890"
00452 //
00453 IMEXPORTC VmbError_t VMB_CALL VmbCameraInfoQuery (  const char*         idString,
00454                                                     VmbCameraInfo_t*    pInfo,
00455                                                     VmbUint32_t         sizeofCameraInfo );
00456 
00457 //
00458 // Method:      VmbCameraOpen()
00459 //
00460 // Purpose:     Open the specified camera.
00461 //
00462 // Parameters:
00463 //
00464 //  [in ]  const char*      idString        Unique ID of the camera
00465 //  [in ]  VmbAccessMode_t  accessMode      Access mode determines the amount of control you have on the camera
00466 //  [out]  VmbHandle_t*     pCameraHandle   A camera handle
00467 //
00468 // Returns:
00469 //
00470 //  - VmbErrorSuccess:       If no error
00471 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00472 //  - VmbErrorNotFound:      The designated camera cannot be found
00473 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00474 //
00475 // Details:   A camera may be opened in a specific access mode. This mode determines
00476 //            the amount of control you have on a camera.
00477 //            "idString" might be one of the following:"169.254.12.13"
00478 //            or a plain serial number: "1234567890".
00479 //
00480 //
00481 IMEXPORTC VmbError_t VMB_CALL VmbCameraOpen (   const char*     idString,
00482                                                 VmbAccessMode_t accessMode,
00483                                                 VmbHandle_t*    pCameraHandle );
00484 
00485 //
00486 // Method:      VmbCameraClose()
00487 //
00488 // Purpose:     Close the specified camera.
00489 //
00490 // Parameters:
00491 //
00492 //  [in ]  const VmbHandle_t  cameraHandle      A valid camera handle
00493 //
00494 // Returns:
00495 //
00496 //  - VmbErrorSuccess:       If no error
00497 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00498 //
00499 // Details:     Depending on the access mode this camera was opened with, events are killed,
00500 //              callbacks are unregistered, and camera control is released.
00501 //
00502 IMEXPORTC VmbError_t VMB_CALL VmbCameraClose ( const VmbHandle_t cameraHandle );
00503 
00504 
00505 //----- Features ----------------------------------------------------------
00506 
00507 //
00508 // Method:      VmbFeaturesList()
00509 //
00510 // Purpose:     List all the features for this module.
00511 //
00512 // Parameters:
00513 //
00514 //  [in ]  const VmbHandle_t    handle            Handle for a module that exposes features
00515 //  [out]  VmbFeatureInfo_t*    pFeatureInfoList  An array of VmbFeatureInfo_t to be filled by the API. May be NULL.
00516 //  [in ]  VmbUint32_t          listLength        Number of VmbFeatureInfo_t elements provided
00517 //  [out]  VmbUint32_t*         pNumFound         Number of VmbFeatureInfo_t elements found. May be NULL.
00518 //  [in ]  VmbUint32_t          featureInfoSize   Size of an VmbFeatureInfo_t entry
00519 //
00520 // Returns:
00521 //
00522 //  - VmbErrorSuccess:       If no error
00523 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00524 //  - VmbErrorBadHandle:     The given handle is not valid
00525 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00526 //  - VmbErrorStructSize:    The given struct size is not valid for this version of the API
00527 //
00528 // Details:     This method lists all implemented features, whether they are currently available or not.
00529 //              The list of features does not change as long as the camera/interface is connected.
00530 //              "pNumFound" returns the number of VmbFeatureInfo elements.
00531 //
00532 IMEXPORTC VmbError_t VMB_CALL VmbFeaturesList ( const VmbHandle_t   handle,
00533                                                 VmbFeatureInfo_t*   pFeatureInfoList,
00534                                                 VmbUint32_t         listLength,
00535                                                 VmbUint32_t*        pNumFound,
00536                                                 VmbUint32_t         featureInfoSize );
00537 
00538 //
00539 // Method:      VmbFeatureInfoQuery()
00540 //
00541 // Purpose:     Query information about the constant properties of a feature.
00542 //
00543 // Parameters:
00544 //
00545 //  [in ]  const VmbHandle_t        handle              Handle for a module that exposes features
00546 //  [in ]  const char*              name                Name of the feature
00547 //  [out]  VmbFeatureInfo_t*        pFeatureInfo        The feature info to query.
00548 //  [in ]  VmbUint32_t              featureInfoSize     Size of the structure
00549 //
00550 // Returns:
00551 //
00552 //  - VmbErrorSuccess:       If no error
00553 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00554 //  - VmbErrorBadHandle:     The given handle is not valid
00555 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00556 //  - VmbErrorStructSize:    The given struct size is not valid for this version of the API
00557 //
00558 // Details:     Users provide a pointer to VmbFeatureInfo_t which is then set to the internal representation.
00559 //
00560 IMEXPORTC VmbError_t VMB_CALL VmbFeatureInfoQuery ( const VmbHandle_t   handle,
00561                                                     const char*         name,
00562                                                     VmbFeatureInfo_t*   pFeatureInfo,
00563                                                     VmbUint32_t         featureInfoSize );
00564 
00565 //
00566 // Method:      VmbFeatureListAffected()
00567 //
00568 // Purpose:     List all the features that might be affected by changes to this feature.
00569 //
00570 // Parameters:
00571 //
00572 //  [in ]  const VmbHandle_t    handle              Handle for a module that exposes features
00573 //  [in ]  const char*          name                Name of the feature
00574 //  [out]  VmbFeatureInfo_t*    pFeatureInfoList    An array of VmbFeatureInfo_t to be filled by the API. May be NULL.
00575 //  [in ]  VmbUint32_t          listLength          Number of VmbFeatureInfo_t elements provided
00576 //  [out]  VmbUint32_t*         pNumFound           Number of VmbFeatureInfo_t elements found. May be NULL.
00577 //  [in ]  VmbUint32_t          featureInfoSize     Size of an VmbFeatureInfo_t entry
00578 //
00579 // Returns:
00580 //
00581 //  - VmbErrorSuccess:       If no error
00582 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00583 //  - VmbErrorBadHandle:     The given handle is not valid
00584 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00585 //  - VmbErrorStructSize:    The given struct size is not valid for this version of the API
00586 //
00587 // Details:     This method lists all affected features, whether they are currently available or not.
00588 //              The value of affected features depends directly or indirectly on this feature
00589 //              (including all selected features).
00590 //              The list of features does not change as long as the camera/interface is connected.
00591 //              "pNumFound" returns the number of VmbFeatureInfo elements.
00592 //
00593 IMEXPORTC VmbError_t VMB_CALL VmbFeatureListAffected (  const VmbHandle_t   handle,
00594                                                         const char*         name,
00595                                                         VmbFeatureInfo_t*   pFeatureInfoList,
00596                                                         VmbUint32_t         listLength,
00597                                                         VmbUint32_t*        pNumFound,
00598                                                         VmbUint32_t         featureInfoSize );
00599 
00600 //
00601 // Method:      VmbFeatureListSelected()
00602 //
00603 // Purpose:     List all the features selected by a given feature for this module.
00604 //
00605 // Parameters:
00606 //
00607 //  [in ]  const VmbHandle_t    handle              Handle for a module that exposes features
00608 //  [in ]  const char*          name                Name of the feature
00609 //  [out]  VmbFeatureInfo_t*    pFeatureInfoList    An array of VmbFeatureInfo_t to be filled by the API. May be NULL.
00610 //  [in ]  VmbUint32_t          listLength          Number of VmbFeatureInfo_t elements provided
00611 //  [out]  VmbUint32_t*         pNumFound           Number of VmbFeatureInfo_t elements found. May be NULL.
00612 //  [in ]  VmbUint32_t          featureInfoSize     Size of an VmbFeatureInfo_t entry
00613 //
00614 // Returns:
00615 //
00616 //  - VmbErrorSuccess:       If no error
00617 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00618 //  - VmbErrorBadHandle:     The given handle is not valid
00619 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00620 //  - VmbErrorStructSize:    The given struct size is not valid for this version of the API
00621 //
00622 // Details:     This method lists all selected features, whether they are currently available or not.
00623 //              Features having selected features ("selectors") have no direct impact on the camera,
00624 //              but only have an influence on the register address that selected features point to.
00625 //              The list of features does not change as long as the camera/interface is connected.
00626 //              "pNumFound" returns the number of VmbFeatureInfo elements.
00627 //
00628 IMEXPORTC VmbError_t VMB_CALL VmbFeatureListSelected (   const VmbHandle_t   handle,
00629                                                          const char*        name,
00630                                                          VmbFeatureInfo_t*  pFeatureInfoList,
00631                                                          VmbUint32_t        listLength,
00632                                                          VmbUint32_t*       pNumFound,
00633                                                          VmbUint32_t        featureInfoSize );
00634 
00635 //
00636 // Method:      VmbFeatureAccessQuery()
00637 //
00638 // Purpose:     Return the dynamic read and write capabilities of this feature.
00639 //
00640 // Parameters:
00641 //
00642 //  [in ]  const VmbHandle_t  handle          Handle for a module that exposes features.
00643 //  [in ]  const char *       name            Name of the feature.
00644 //  [out]  VmbBool_t *        pIsReadable     Indicates if this feature is readable. May be NULL.
00645 //  [out]  VmbBool_t *        pIsWriteable    Indicates if this feature is writable. May be NULL.
00646 //
00647 // Returns:
00648 //
00649 //  - VmbErrorSuccess:       If no error
00650 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00651 //  - VmbErrorBadHandle:     The given handle is not valid
00652 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00653 //  - VmbErrorBadParameter:  pIsReadable and pIsWriteable were both NULL
00654 //
00655 // Details:     The access mode of a feature may change. For example, if "PacketSize"
00656 //              is locked while image data is streamed, it is only readable.
00657 //
00658 IMEXPORTC VmbError_t VMB_CALL VmbFeatureAccessQuery (   const VmbHandle_t   handle,
00659                                                         const char*         name,
00660                                                         VmbBool_t *         pIsReadable,
00661                                                         VmbBool_t *         pIsWriteable );
00662 
00663 
00664 //-----Integer --------
00665 
00666 //
00667 // Method:      VmbFeatureIntGet()
00668 //
00669 // Purpose:     Get the value of an integer feature.
00670 //
00671 // Parameters:
00672 //
00673 //  [in ]  const VmbHandle_t    handle      Handle for a module that exposes features
00674 //  [in ]  const char*          name        Name of the feature
00675 //  [out]  VmbInt64_t*          pValue      Value to get
00676 //
00677 // Returns:
00678 //
00679 //  - VmbErrorSuccess:       If no error
00680 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00681 //  - VmbErrorBadHandle:     The given handle is not valid
00682 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00683 //  - VmbErrorWrongType:     The type of feature "name" is not Integer
00684 //
00685 IMEXPORTC VmbError_t VMB_CALL VmbFeatureIntGet (    const VmbHandle_t   handle,
00686                                                     const char*         name,
00687                                                     VmbInt64_t*         pValue );
00688 
00689 //
00690 // Method:      VmbFeatureIntSet()
00691 //
00692 // Purpose:     Set the value of an integer feature.
00693 //
00694 // Parameters:
00695 //
00696 //  [in ]  const VmbHandle_t    handle    Handle for a module that exposes features
00697 //  [in ]  const char*          name      Name of the feature
00698 //  [in ]  VmbInt64_t           value     Value to set
00699 //
00700 // Returns:
00701 //
00702 //  - VmbErrorSuccess:       If no error
00703 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00704 //  - VmbErrorBadHandle:     The given handle is not valid
00705 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00706 //  - VmbErrorWrongType:     The type of feature "name" is not Integer
00707 //  - VmbErrorInvalidValue:  "value" is either out of bounds or not an increment of the minimum
00708 //
00709 IMEXPORTC VmbError_t VMB_CALL VmbFeatureIntSet (    const VmbHandle_t   handle,
00710                                                     const char*         name,
00711                                                     VmbInt64_t          value );
00712 
00713 //
00714 // Method:      VmbFeatureIntRangeQuery()
00715 //
00716 // Purpose:     Query the range of an integer feature.
00717 //
00718 // Parameters:
00719 //
00720 //  [in ]  const VmbHandle_t    handle      Handle for a module that exposes features
00721 //  [in ]  const char*          name        Name of the feature
00722 //  [out]  VmbInt64_t*          pMin        Minimum value to be returned. May be NULL.
00723 //  [out]  VmbInt64_t*          pMax        Maximum value to be returned. May be NULL.
00724 //
00725 // Returns:
00726 //
00727 //  - VmbErrorSuccess:       If no error
00728 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00729 //  - VmbErrorBadHandle:     The given handle is not valid
00730 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00731 //  - VmbErrorWrongType:     The type of feature "name" is not Integer
00732 //
00733 IMEXPORTC VmbError_t VMB_CALL VmbFeatureIntRangeQuery ( const VmbHandle_t   handle,
00734                                                         const char*         name,
00735                                                         VmbInt64_t*         pMin,
00736                                                         VmbInt64_t*         pMax );
00737 
00738 //
00739 // Method:      VmbFeatureIntIncrementQuery()
00740 //
00741 // Purpose:     Query the increment of an integer feature.
00742 //
00743 // Parameters:
00744 //
00745 //  [in ]  const VmbHandle_t    handle         Handle for a module that exposes features
00746 //  [in ]  const char*          name           Name of the feature
00747 //  [out]  VmbInt64_t*          pValue         Value of the increment to get.
00748 //
00749 // Returns:
00750 //
00751 //  - VmbErrorSuccess:       If no error
00752 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00753 //  - VmbErrorBadHandle:     The given handle is not valid
00754 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00755 //  - VmbErrorWrongType:     The type of feature "name" is not Integer
00756 //
00757 IMEXPORTC VmbError_t VMB_CALL VmbFeatureIntIncrementQuery ( const VmbHandle_t   handle,
00758                                                             const char*         name,
00759                                                             VmbInt64_t*         pValue );
00760 
00761 //-----Float --------
00762 
00763 //
00764 // Method:      VmbFeatureFloatGet()
00765 //
00766 // Purpose:     Get the value of a float feature.
00767 //
00768 // Parameters:
00769 //
00770 //  [in ]  const VmbHandle_t    handle      Handle for a module that exposes features
00771 //  [in ]  const char*          name        Name of the feature
00772 //  [out]  double*              pValue      Value to get
00773 //
00774 // Returns:
00775 //
00776 //  - VmbErrorSuccess:       If no error
00777 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00778 //  - VmbErrorBadHandle:     The given handle is not valid
00779 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00780 //  - VmbErrorWrongType:     The type of feature "name" is not Float
00781 //
00782 IMEXPORTC VmbError_t VMB_CALL VmbFeatureFloatGet (  const VmbHandle_t   handle,
00783                                                     const char*         name,
00784                                                     double*             pValue );
00785 
00786 //
00787 // Method:      VmbFeatureFloatSet()
00788 //
00789 // Purpose:     Set the value of a float feature.
00790 //
00791 // Parameters:
00792 //
00793 //  [in ]  const VmbHandle_t    handle      Handle for a module that exposes features
00794 //  [in ]  const char*          name        Name of the feature
00795 //  [in ]  double               value       Value to set
00796 //
00797 // Returns:
00798 //
00799 //  - VmbErrorSuccess:       If no error
00800 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00801 //  - VmbErrorBadHandle:     The given handle is not valid
00802 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00803 //  - VmbErrorWrongType:     The type of feature "name" is not Float
00804 //  - VmbErrorInvalidValue:  "value" is not within valid bounds
00805 //
00806 IMEXPORTC VmbError_t VMB_CALL VmbFeatureFloatSet (  const VmbHandle_t   handle,
00807                                                     const char*         name,
00808                                                     double              value );
00809 
00810 //
00811 // Method:      VmbFeatureFloatRangeQuery()
00812 //
00813 // Purpose:     Query the range of a float feature.
00814 //
00815 // Parameters:
00816 //
00817 //  [in ]  const VmbHandle_t    handle      Handle for a module that exposes features
00818 //  [in ]  const char*          name        Name of the feature
00819 //  [out]  double*              pMin        Minimum value to be returned. May be NULL.
00820 //  [out]  double*              pMax        Maximum value to be returned. May be NULL.
00821 //
00822 // Returns:
00823 //
00824 //  - VmbErrorSuccess:       If no error
00825 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00826 //  - VmbErrorBadHandle:     The given handle is not valid
00827 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00828 //  - VmbErrorWrongType:     The type of feature "name" is not Float
00829 //
00830 // Details:     Only one of the values may be queried if the other parameter is set to NULL,
00831 //              but if both parameters are NULL, an error is returned.
00832 //
00833 IMEXPORTC VmbError_t VMB_CALL VmbFeatureFloatRangeQuery (   const VmbHandle_t   handle,
00834                                                             const char*         name,
00835                                                             double*             pMin,
00836                                                             double*             pMax );
00837 
00838 //-----Enum --------
00839 
00840 //
00841 // Method:      VmbFeatureEnumGet()
00842 //
00843 // Purpose:     Get the value of an enumeration feature.
00844 //
00845 // Parameters:
00846 //
00847 //  [in ]  const VmbHandle_t    handle      Handle for a module that exposes features
00848 //  [in ]  const char*          name        Name of the feature
00849 //  [out]  const char**         pValue      The current enumeration value
00850 //
00851 // Returns:
00852 //
00853 //  - VmbErrorSuccess:       If no error
00854 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00855 //  - VmbErrorBadHandle:     The given handle is not valid
00856 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00857 //  - VmbErrorWrongType:     The type of feature "name" is not Enumeration
00858 //
00859 IMEXPORTC VmbError_t VMB_CALL VmbFeatureEnumGet (   const VmbHandle_t   handle,
00860                                                     const char*         name,
00861                                                     const char**        pValue );
00862 
00863 //
00864 // Method:      VmbFeatureEnumSet()
00865 //
00866 // Purpose:     Set the value of an enumeration feature.
00867 //
00868 // Parameters:
00869 //
00870 //  [in ]  const VmbHandle_t    handle      Handle for a module that exposes features
00871 //  [in ]  const char*          name        Name of the feature
00872 //  [in ]  const char*          value       Value to set
00873 //
00874 // Returns:
00875 //
00876 //  - VmbErrorSuccess:       If no error
00877 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00878 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00879 //  - VmbErrorBadHandle:     The given handle is not valid
00880 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00881 //  - VmbErrorWrongType:     The type of feature "name" is not Enumeration
00882 //  - VmbErrorInvalidValue:  "value" is not within valid bounds
00883 //
00884 IMEXPORTC VmbError_t VMB_CALL VmbFeatureEnumSet (   const VmbHandle_t   handle,
00885                                                     const char*         name,
00886                                                     const char*         value );
00887 
00888 //
00889 // Method:      VmbFeatureEnumRangeQuery()
00890 //
00891 // Purpose:     Query the value range of an enumeration feature.
00892 //
00893 // Parameters:
00894 //
00895 //  [in ]  const VmbHandle_t    handle          Handle for a module that exposes features
00896 //  [in ]  const char*          name            Name of the feature
00897 //  [out]  const char* const*   pNameArray      An Array of enumeration value names
00898 //  [in ]  VmbUint32_t          arrayLength     Number of elements in the array
00899 //  [out]  VmbUint32_t *        pNumFilled      Number of filled elements
00900 //
00901 // Returns:
00902 //
00903 //  - VmbErrorSuccess:       If no error
00904 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00905 //  - VmbErrorBadHandle:     The given handle is not valid
00906 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00907 //  - VmbErrorMoreData:      More data was returned than space was provided
00908 //  - VmbErrorWrongType:     The type of feature "name" is not Enumeration
00909 //
00910 IMEXPORTC VmbError_t VMB_CALL VmbFeatureEnumRangeQuery (    const VmbHandle_t   handle,
00911                                                             const char*         name,
00912                                                             const char**        pNameArray,
00913                                                             VmbUint32_t         arrayLength,
00914                                                             VmbUint32_t*        pNumFilled );
00915 
00916 //
00917 // Method:      VmbFeatureEnumIsAvailable()
00918 //
00919 // Purpose:     Check if a certain value of an enumeration is available.
00920 //
00921 // Parameters:
00922 //
00923 //  [in ]  const VmbHandle_t    handle          Handle for a module that exposes features
00924 //  [in ]  const char*          name            Name of the feature
00925 //  [in ]  const char*          value           Value to check
00926 //  [out]  VmbBool_t *          pIsAvailable    Indicates if the given enumeration value is available
00927 //
00928 // Returns:
00929 //
00930 //  - VmbErrorSuccess:       If no error
00931 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00932 //  - VmbErrorBadHandle:     The given handle is not valid
00933 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00934 //  - VmbErrorWrongType:     The type of feature "name" is not Enumeration
00935 //
00936 IMEXPORTC VmbError_t VMB_CALL VmbFeatureEnumIsAvailable (   const VmbHandle_t   handle,
00937                                                             const char*         name,
00938                                                             const char*         value,
00939                                                             VmbBool_t *         pIsAvailable );
00940 
00941 //
00942 // Method:      VmbFeatureEnumAsInt()
00943 //
00944 // Purpose:     Get the integer value for a given enumeration string value.
00945 //
00946 // Parameters:
00947 //
00948 //  [in ]  const VmbHandle_t    handle     Handle for a module that exposes features
00949 //  [in ]  const char*          name       Name of the feature
00950 //  [in ]  const char*          value      The enumeration value to get the integer value for
00951 //  [out]  VmbInt64_t*          pIntVal    The integer value for this enumeration entry
00952 //
00953 // Returns:
00954 //
00955 //  - VmbErrorSuccess:       If no error
00956 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00957 //  - VmbErrorBadHandle:     The given handle is not valid
00958 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00959 //  - VmbErrorWrongType:     The type of feature "name" is not Enumeration
00960 //
00961 // Details:     Converts a name of an enum member into an int value ("Mono12Packed" to 0x10C0006)
00962 //
00963 IMEXPORTC VmbError_t VMB_CALL VmbFeatureEnumAsInt (     const VmbHandle_t   handle,
00964                                                         const char*         name,
00965                                                         const char*         value,
00966                                                         VmbInt64_t*         pIntVal );
00967 
00968 //
00969 // Method:      VmbFeatureEnumAsString()
00970 //
00971 // Purpose:     Get the enumeration string value for a given integer value.
00972 //
00973 // Parameters:
00974 //
00975 //  [in ]  const VmbHandle_t    handle          Handle for a module that exposes features
00976 //  [in ]  const char*          name            Name of the feature
00977 //  [in ]  VmbInt64_t           intValue        The numeric value
00978 //  [out]  const char**         pStringValue    The string value for the numeric value
00979 //
00980 // Returns:
00981 //
00982 //  - VmbErrorSuccess:       If no error
00983 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
00984 //  - VmbErrorBadHandle:     The given handle is not valid
00985 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
00986 //  - VmbErrorWrongType:     The type of feature "name" is not Enumeration
00987 //
00988 // Details:     Converts an int value to a name of an enum member (e.g. 0x10C0006 to "Mono12Packed")
00989 //
00990 IMEXPORTC VmbError_t VMB_CALL VmbFeatureEnumAsString (  const VmbHandle_t   handle,
00991                                                         const char*         name,
00992                                                         VmbInt64_t          intValue,
00993                                                         const char**        pStringValue );
00994 
00995 //
00996 // Method:      VmbFeatureEnumEntryGet()
00997 //
00998 // Purpose:     Get infos about an entry of an enumeration feature.
00999 //
01000 // Parameters:
01001 //
01002 //  [in ]  const VmbHandle_t        handle                  Handle for a module that exposes features
01003 //  [in ]  const char*              featureName             Name of the feature
01004 //  [in ]  const char*              entryName               Name of the enum entry of that feature
01005 //  [out]  VmbFeatureEnumEntry_t*   pFeatureEnumEntry       Infos about that entry returned by the API
01006 //  [in]   VmbUint32_t              featureEnumEntrySize    Size of the structure
01007 //
01008 // Returns:
01009 //
01010 //  - VmbErrorSuccess:       If no error
01011 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01012 //  - VmbErrorBadHandle:     The given handle is not valid
01013 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
01014 //  - VmbErrorWrongType:     The type of feature "name" is not Enumeration
01015 //
01016 IMEXPORTC VmbError_t VMB_CALL VmbFeatureEnumEntryGet (  const VmbHandle_t       handle,
01017                                                         const char*             featureName,
01018                                                         const char*             entryName,
01019                                                         VmbFeatureEnumEntry_t*  pFeatureEnumEntry,
01020                                                         VmbUint32_t             featureEnumEntrySize );
01021 
01022 //-----String --------
01023 
01024 //
01025 // Method:      VmbFeatureStringGet()
01026 //
01027 // Purpose:     Get the value of a string feature.
01028 //
01029 // Parameters:
01030 //
01031 //  [in ]  const VmbHandle_t    handle          Handle for a module that exposes features
01032 //  [in ]  const char*          name            Name of the string feature
01033 //  [out]  char*                buffer          String buffer to fill
01034 //  [in ]  VmbUint32_t          bufferSize      Size of the input buffer
01035 //  [out]  VmbUint32_t*         pSizeFilled     Size actually filled
01036 //
01037 // Returns:
01038 //
01039 //  - VmbErrorSuccess:       If no error
01040 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01041 //  - VmbErrorBadHandle:     The given handle is not valid
01042 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
01043 //  - VmbErrorMoreData:      More data was returned than space was provided
01044 //  - VmbErrorWrongType:     The type of feature "name" is not String
01045 //
01046 IMEXPORTC VmbError_t VMB_CALL VmbFeatureStringGet ( const VmbHandle_t   handle,
01047                                                     const char*         name,
01048                                                     char*               buffer,
01049                                                     VmbUint32_t         bufferSize,
01050                                                     VmbUint32_t*        pSizeFilled );
01051 
01052 //
01053 // Method:    VmbFeatureStringSet()
01054 //
01055 // Purpose:   Set the value of a string feature.
01056 //
01057 // Parameters:
01058 //
01059 //  [in ]  const VmbHandle_t    handle      Handle for a module that exposes features
01060 //  [in ]  const char*          name        Name of the string feature
01061 //  [in ]  const char*          value       Value to set
01062 //
01063 // Returns:
01064 //
01065 //  - VmbErrorSuccess:       If no error
01066 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01067 //  - VmbErrorBadHandle:     The given handle is not valid
01068 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
01069 //  - VmbErrorWrongType:     The type of feature "name" is not String
01070 //  - VmbErrorInvalidValue:  Length of "value" exceeded the maximum length
01071 //
01072 IMEXPORTC VmbError_t VMB_CALL VmbFeatureStringSet ( const VmbHandle_t   handle,
01073                                                     const char*         name,
01074                                                     const char*         value );
01075 
01076 //
01077 // Method:      VmbFeatureStringMaxlengthQuery()
01078 //
01079 // Purpose:     Get the maximum length of a string feature.
01080 //
01081 // Parameters:
01082 //
01083 //  [in ]  const VmbHandle_t    handle        Handle for a module that exposes features
01084 //  [in ]  const char*          name          Name of the string feature
01085 //  [out]  VmbUint32_t*         pMaxLength    Maximum length of this string feature
01086 //
01087 // Returns:
01088 //
01089 //  - VmbErrorSuccess:       If no error
01090 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01091 //  - VmbErrorBadHandle:     The given handle is not valid
01092 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
01093 //  - VmbErrorWrongType:     The type of feature "name" is not String
01094 //
01095 IMEXPORTC VmbError_t VMB_CALL VmbFeatureStringMaxlengthQuery (  const VmbHandle_t   handle,
01096                                                                 const char*         name,
01097                                                                 VmbUint32_t*        pMaxLength );
01098 
01099 //-----Boolean --------
01100 
01101 //
01102 // Method:      VmbFeatureBoolGet()
01103 //
01104 // Purpose:     Get the value of a boolean feature.
01105 //
01106 // Parameters:
01107 //
01108 //  [in ]  const VmbHandle_t    handle    Handle for a module that exposes features
01109 //  [in ]  const char*          name      Name of the boolean feature
01110 //  [out]  VmbBool_t *          pValue    Value to be read
01111 //
01112 // Returns:
01113 //
01114 //  - VmbErrorSuccess:       If no error
01115 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01116 //  - VmbErrorBadHandle:     The given handle is not valid
01117 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
01118 //  - VmbErrorWrongType:     The type of feature "name" is not Boolean
01119 //
01120 IMEXPORTC VmbError_t VMB_CALL VmbFeatureBoolGet (   const VmbHandle_t   handle,
01121                                                     const char*         name,
01122                                                     VmbBool_t *         pValue );
01123 
01124 //
01125 // Method:      VmbFeatureBoolSet()
01126 //
01127 // Purpose:     Set the value of a boolean feature.
01128 //
01129 // Parameters:
01130 //
01131 //  [in ]  const VmbHandle_t    handle      Handle for a module that exposes features
01132 //  [in ]  const char*          name        Name of the boolean feature
01133 //  [in ]  VmbBool_t            value       Value to write
01134 //
01135 // Returns:
01136 //
01137 //  - VmbErrorSuccess:       If no error
01138 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01139 //  - VmbErrorBadHandle:     The given handle is not valid
01140 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
01141 //  - VmbErrorWrongType:     The type of feature "name" is not Boolean
01142 //  - VmbErrorInvalidValue:  "value" is not within valid bounds
01143 //
01144 IMEXPORTC VmbError_t VMB_CALL VmbFeatureBoolSet (   const VmbHandle_t   handle,
01145                                                     const char*         name,
01146                                                     VmbBool_t           value );
01147 
01148 //-----Command ------
01149 
01150 //
01151 // Method:    VmbFeatureCommandRun()
01152 //
01153 // Purpose:   Run a feature command.
01154 //
01155 // Parameters:
01156 //
01157 //  [in ]  const VmbHandle_t    handle      Handle for a module that exposes features
01158 //  [in ]  const char*          name        Name of the command feature
01159 //
01160 // Returns:
01161 //
01162 //  - VmbErrorSuccess:       If no error
01163 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01164 //  - VmbErrorBadHandle:     The given handle is not valid
01165 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
01166 //  - VmbErrorWrongType:     The type of feature "name" is not Command
01167 //
01168 IMEXPORTC VmbError_t VMB_CALL VmbFeatureCommandRun (    const VmbHandle_t   handle,
01169                                                         const char*         name );
01170 
01171 //
01172 // Method:      VmbFeatureCommandIsDone()
01173 //
01174 // Purpose:     Check if a feature command is done.
01175 //
01176 // Parameters:
01177 //
01178 //  [in ]     const VmbHandle_t handle     Handle for a module that exposes features
01179 //  [in ]     const char*       name       Name of the command feature
01180 //  [out]     VmbBool_t *       pIsDone    State of the command.
01181 //
01182 // Returns:
01183 //
01184 //  - VmbErrorSuccess:       If no error
01185 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01186 //  - VmbErrorBadHandle:     The given handle is not valid
01187 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
01188 //  - VmbErrorWrongType:     The type of feature "name" is not Command
01189 //
01190 IMEXPORTC VmbError_t VMB_CALL VmbFeatureCommandIsDone ( const VmbHandle_t   handle,
01191                                                         const char*         name,
01192                                                         VmbBool_t *         pIsDone );
01193 
01194 //-----Raw --------
01195 
01196 //
01197 // Method:      VmbFeatureRawGet()
01198 //
01199 // Purpose:     Read the memory contents of an area given by a feature name.
01200 //
01201 // Parameters:
01202 //
01203 //  [in ]  const VmbHandle_t    handle         Handle for a module that exposes features
01204 //  [in ]  const char*          name           Name of the raw feature
01205 //  [out]  char*                pBuffer        Buffer to fill
01206 //  [in ]  VmbUint32_t          bufferSize     Size of the buffer to be filled
01207 //  [out]  VmbUint32_t*         pSizeFilled    Number of bytes actually filled
01208 //
01209 // Returns:
01210 //
01211 //  - VmbErrorSuccess:       If no error
01212 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01213 //  - VmbErrorBadHandle:     The given handle is not valid
01214 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
01215 //  - VmbErrorMoreData:      More data was returned than space was provided
01216 //  - VmbErrorWrongType:     The type of feature "name" is not Register
01217 //
01218 // Details:     This feature type corresponds to a first-level "Register" node in the XML file.
01219 //              Data transfer is split up by the transport layer if the feature length is too large.
01220 //              You can get the size of the memory area addressed by the feature "name" by VmbFeatureRawLengthQuery().
01221 //
01222 IMEXPORTC VmbError_t VMB_CALL VmbFeatureRawGet (    const VmbHandle_t   handle,
01223                                                     const char*         name,
01224                                                     char*                pBuffer,
01225                                                     VmbUint32_t          bufferSize,
01226                                                     VmbUint32_t*         pSizeFilled );
01227 
01228 //
01229 // Method:      VmbFeatureRawSet()
01230 //
01231 // Purpose:     Write to a memory area given by a feature name.
01232 //
01233 // Parameters:
01234 //
01235 //  [in ]  const VmbHandle_t    handle      Handle for a module that exposes features
01236 //  [in ]  const char*          name        Name of the raw feature
01237 //  [in ]  const char*          pBuffer     Data buffer to use
01238 //  [in ]  VmbUint32_t          bufferSize  Size of the buffer
01239 //
01240 // Returns:
01241 //
01242 //  - VmbErrorSuccess:       If no error
01243 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01244 //  - VmbErrorBadHandle:     The given handle is not valid
01245 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
01246 //  - VmbErrorWrongType:     The type of feature "name" is not Register
01247 //
01248 // Details:     This feature type corresponds to a first-level "Register" node in the XML file.
01249 //              Data transfer is split up by the transport layer if the feature length is too large.
01250 //              You can get the size of the memory area addressed by the feature "name" by VmbFeatureRawLengthQuery().
01251 //
01252 IMEXPORTC VmbError_t VMB_CALL VmbFeatureRawSet (    const VmbHandle_t   handle,
01253                                                     const char*         name,
01254                                                     const char*         pBuffer,
01255                                                     VmbUint32_t         bufferSize );
01256 
01257 //
01258 // Method:      VmbFeatureRawLengthQuery()
01259 //
01260 // Purpose:     Get the length of a raw feature for memory transfers.
01261 //
01262 // Parameters:
01263 //
01264 //  [in ]  const VmbHandle_t    handle      Handle for a module that exposes features
01265 //  [in ]  const char*          name        Name of the raw feature
01266 //  [out]  VmbUint32_t*         pLength     Length of the raw feature area (in bytes)
01267 //
01268 // Returns:
01269 //
01270 //  - VmbErrorSuccess:       If no error
01271 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01272 //  - VmbErrorBadHandle:     The given handle is not valid
01273 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
01274 //  - VmbErrorWrongType:     The type of feature "name" is not Register
01275 //
01276 // Details:     This feature type corresponds to a first-level "Register" node in the XML file.
01277 //
01278 IMEXPORTC VmbError_t VMB_CALL VmbFeatureRawLengthQuery (    const VmbHandle_t   handle,
01279                                                             const char*         name,
01280                                                             VmbUint32_t*        pLength );
01281 
01282 //----- Feature invalidation --------------------------------------------------------
01283 
01284 //
01285 // Method:      VmbFeatureInvalidationRegister()
01286 //
01287 // Purpose:     Register a callback for feature invalidation signaling.
01288 //
01289 // Parameters:
01290 //
01291 //  [in ]  const VmbHandle_t        handle          Handle for a module that emits events
01292 //  [in ]  const char*              name            Name of the event (NULL to register for any feature)
01293 //  [in ]  VmbInvalidationCallback  callback        Callback to be run, when invalidation occurs
01294 //  [in ]  void*                    pUserContext    User context passed to function
01295 //
01296 // Returns:
01297 //
01298 //  - VmbErrorSuccess:       If no error
01299 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01300 //  - VmbErrorBadHandle:     The given handle is not valid
01301 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
01302 //
01303 // Details:     Registering multiple callbacks for one feature invalidation event is possible because
01304 //              only the combination of handle, name, and callback is used as key. If the same
01305 //              combination of handle, name, and callback is registered a second time, it overwrites
01306 //              the previous one.
01307 //
01308 // Todo:        Consider if it could make sense to register the same combination of handle, name, and
01309 //              callback (with different user context) so that the same callback is called multiple times.
01310 //              Callbacks would have to be stored in a queue/stack.
01311 //
01312 IMEXPORTC VmbError_t VMB_CALL VmbFeatureInvalidationRegister (  const VmbHandle_t       handle,
01313                                                                 const char*             name,
01314                                                                 VmbInvalidationCallback callback,
01315                                                                 void*                   pUserContext );
01316 
01317 //
01318 // Method:      VmbFeatureInvalidationUnregister()
01319 //
01320 // Purpose:     Unregister a previously registered feature invalidation callback.
01321 //
01322 // Parameters:
01323 //
01324 //  [in ]  const VmbHandle_t        handle          Handle for a module that emits events
01325 //  [in ]  const char*              name            Name of the event
01326 //  [in ]  VmbInvalidationCallback  callback        Callback to be removed
01327 //
01328 // Returns:
01329 //
01330 //  - VmbErrorSuccess:       If no error
01331 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01332 //  - VmbErrorBadHandle:     The given handle is not valid
01333 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
01334 //
01335 // Details:     Since multiple callbacks may be registered for a feature invalidation event,
01336 //              a combination of handle, name, and callback is needed for unregistering, too.
01337 //
01338 IMEXPORTC VmbError_t VMB_CALL VmbFeatureInvalidationUnregister (    const VmbHandle_t       handle,
01339                                                                     const char*             name,
01340                                                                     VmbInvalidationCallback callback );
01341 
01342 
01343 //-----  Image preparation and acquisition ---------------------------------------------------
01344 
01345 //
01346 // Method:      VmbFrameAnnounce()
01347 //
01348 // Purpose:     Announce frames to the API that may be queued for frame capturing later.
01349 //
01350 // Parameters:
01351 //
01352 //  [in ]  const VmbHandle_t    cameraHandle    Handle for a camera
01353 //  [in ]  const VmbFrame_t*    pFrame          Frame buffer to announce
01354 //  [in ]  VmbUint32_t          sizeofFrame     Size of the frame structure
01355 //
01356 // Returns:
01357 //
01358 //  - VmbErrorSuccess:       If no error
01359 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01360 //  - VmbErrorBadHandle:     The given handle is not valid
01361 //  - VmbErrorStructSize:    The given struct size is not valid for this version of the API
01362 //
01363 // Details:     Allows some preparation for frames like DMA preparation depending on the transport layer.
01364 //              The order in which the frames are announced is not taken into consideration by the API.
01365 //
01366 IMEXPORTC VmbError_t VMB_CALL VmbFrameAnnounce (    const VmbHandle_t   cameraHandle,
01367                                                     const VmbFrame_t*   pFrame,
01368                                                     VmbUint32_t         sizeofFrame );
01369 
01370 
01371 //
01372 // Method:      VmbFrameRevoke()
01373 //
01374 // Purpose:     Revoke a frame from the API.
01375 //
01376 // Parameters:
01377 //
01378 //  [in ]  const VmbHandle_t    cameraHandle    Handle for a camera
01379 //  [in ]  const VmbFrame_t*    pFrame          Frame buffer to be removed from the list of announced frames
01380 //
01381 // Returns:
01382 //
01383 //  - VmbErrorSuccess:       If no error
01384 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01385 //  - VmbErrorBadHandle:     The given frame pointer is not valid
01386 //  - VmbErrorStructSize:    The given struct size is not valid for this version of the API
01387 //
01388 // Details:    The referenced frame is removed from the pool of frames for capturing images.
01389 //
01390 IMEXPORTC VmbError_t VMB_CALL VmbFrameRevoke (  const VmbHandle_t   cameraHandle,
01391                                                 const VmbFrame_t*   pFrame );
01392 
01393 
01394 //
01395 // Method:      VmbFrameRevokeAll()
01396 //
01397 // Purpose:     Revoke all frames assigned to a certain camera.
01398 //
01399 // Parameters:
01400 //
01401 //  [in ]  const VmbHandle_t    cameraHandle    Handle for a camera
01402 //
01403 // Returns:
01404 //
01405 //  - VmbErrorSuccess:       If no error
01406 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01407 //  - VmbErrorBadHandle:     The given handle is not valid
01408 //
01409 IMEXPORTC VmbError_t VMB_CALL VmbFrameRevokeAll ( const VmbHandle_t cameraHandle );
01410 
01411 
01412 //
01413 // Method:      VmbCaptureStart()
01414 //
01415 // Purpose:     Prepare the API for incoming frames.
01416 //
01417 // Parameters:
01418 //
01419 //  [in ]  const VmbHandle_t    cameraHandle    Handle for a camera
01420 //
01421 // Returns:
01422 //
01423 //  - VmbErrorSuccess:       If no error
01424 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01425 //  - VmbErrorBadHandle:     The given handle is not valid
01426 //  - VmbErrorDeviceNotOpen: Camera was not opened for usage
01427 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
01428 //
01429 IMEXPORTC VmbError_t VMB_CALL VmbCaptureStart ( const VmbHandle_t cameraHandle );
01430 
01431 
01432 //
01433 // Method:      VmbCaptureEnd()
01434 //
01435 // Purpose:     Stop the API from being able to receive frames.
01436 //
01437 // Parameters:
01438 //
01439 //  [in ]  const VmbHandle_t  cameraHandle    Handle for a camera
01440 //
01441 // Returns:
01442 //
01443 //  - VmbErrorSuccess:       If no error
01444 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01445 //  - VmbErrorBadHandle:     The given handle is not valid
01446 //
01447 // Details:     Consequences of VmbCaptureEnd():
01448 //                  - The input queue is flushed
01449 //                  - The frame callback will not be called any more
01450 //
01451 IMEXPORTC VmbError_t VMB_CALL VmbCaptureEnd ( const VmbHandle_t cameraHandle );
01452 
01453 
01454 //
01455 // Method:      VmbCaptureFrameQueue()
01456 //
01457 // Purpose:     Queue frames that may be filled during frame capturing.
01458 //
01459 // Parameters:
01460 //
01461 //  [in ]  const VmbHandle_t    cameraHandle    Handle of the camera
01462 //  [in ]  const VmbFrame_t*    pFrame          Pointer to an already announced frame
01463 //  [in ]  VmbFrameCallback     callback        Callback to be run when the frame is complete.  NULL is Ok.
01464 //
01465 // Returns:
01466 //
01467 //  - VmbErrorSuccess:       If no error
01468 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01469 //  - VmbErrorBadHandle:     The given frame is not valid
01470 //  - VmbErrorStructSize:    The given struct size is not valid for this version of the API
01471 //
01472 // Details:     The given frame is put into a queue that will be filled sequentially.
01473 //              The order in which the frames are filled is determined by the order in which they are queued.
01474 //              If the frame was announced with VmbFrameAnnounce() before, the application
01475 //              has to ensure that the frame is also revoked by calling VmbFrameRevoke or VmbFrameRevokeAll
01476 //              when cleaning up.
01477 //
01478 IMEXPORTC VmbError_t VMB_CALL VmbCaptureFrameQueue (    const VmbHandle_t   cameraHandle,
01479                                                         const VmbFrame_t*   pFrame,
01480                                                         VmbFrameCallback    callback );
01481 
01482 
01483 //
01484 // Method:      VmbCaptureFrameWait()
01485 //
01486 // Purpose:     Wait for a queued frame to be filled (or dequeued).
01487 //
01488 // Parameters:
01489 //
01490 //  [in ]  const VmbHandle_t    cameraHandle    Handle of the camera
01491 //  [in ]  const VmbFrame_t*    pFrame          Pointer to an already announced & queued frame
01492 //  [in ]  VmbUint32_t          timeout         Timeout (in milliseconds)
01493 //
01494 // Returns:
01495 //
01496 //  - VmbErrorSuccess:       If no error
01497 //  - VmbErrorTimeout:       Call timed out
01498 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01499 //  - VmbErrorBadHandle:     The given handle is not valid
01500 //
01501 //
01502 IMEXPORTC VmbError_t VMB_CALL VmbCaptureFrameWait ( const VmbHandle_t   cameraHandle,
01503                                                     const VmbFrame_t*   pFrame,
01504                                                     VmbUint32_t         timeout);
01505 
01506 
01507 //
01508 // Method:      VmbCaptureQueueFlush()
01509 //
01510 // Purpose:     Flush the capture queue.
01511 //
01512 // Parameters:
01513 //
01514 //  [in ]  const VmbHandle_t cameraHandle   Handle of the camera to flush
01515 //
01516 // Returns:
01517 //
01518 //  - VmbErrorSuccess:       If no error
01519 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01520 //  - VmbErrorBadHandle:     The given handle is not valid
01521 //
01522 // Details:     All the currently queued frames will be returned to the user, leaving no frames in the input queue.
01523 //              After this call, no frame notification will occur until frames are queued again.
01524 //
01525 IMEXPORTC VmbError_t VMB_CALL VmbCaptureQueueFlush ( const VmbHandle_t cameraHandle );
01526 
01527 
01528 //----- Interface Enumeration & Information --------------------------------------
01529 
01530 //
01531 // Method:      VmbInterfacesList()
01532 //
01533 // Purpose:     List all the interfaces currently visible to VimbaC.
01534 //
01535 // Parameters:
01536 //
01537 //  [out]  VmbInterfaceInfo_t*  pInterfaceInfo          Array of VmbInterfaceInfo_t, allocated by the caller.
01538 //                                                      The interface list is copied here. May be NULL.
01539 //  [in ]  VmbUint32_t          listLength              Number of entries in the caller's pList array
01540 //  [out]  VmbUint32_t*         pNumFound               Number of interfaces found (may be more than
01541 //                                                      listLength!) returned here. May be NULL.
01542 //  [in ]  VmbUint32_t          sizeofInterfaceInfo     Size of one VmbInterfaceInfo_t entry
01543 //
01544 // Returns:
01545 //
01546 //  - VmbErrorSuccess:       If no error
01547 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01548 //  - VmbErrorStructSize:    The given struct size is not valid for this API version
01549 //  - VmbErrorMoreData:      More data was returned than space was provided
01550 //  - VmbErrorBadParameter:  pInterfaceInfo and pNumFound were both NULL
01551 //
01552 // Details:     All the interfaces known via GenICam TransportLayers are listed by this 
01553 //              command and filled into the provided array. Interfaces may correspond to 
01554 //              adapter cards or frame grabber cards or, in the case of FireWire to the 
01555 //              whole 1394 infrastructure, for instance.
01556 //              If "pInterfaceInfo" is NULL on entry, only the number of interfaces is returned in "pNumFound".
01557 //
01558 IMEXPORTC VmbError_t VMB_CALL VmbInterfacesList (   VmbInterfaceInfo_t* pInterfaceInfo,
01559                                                     VmbUint32_t         listLength,
01560                                                     VmbUint32_t*        pNumFound,
01561                                                     VmbUint32_t         sizeofInterfaceInfo );
01562 
01563 //
01564 // Method:      VmbInterfaceOpen()
01565 //
01566 // Purpose:     Open an interface handle for feature access.
01567 //
01568 // Parameters:
01569 //
01570 //  [in ]  const char*      idString           The unique ID of the interface to get the handle for
01571 //  [out]  VmbHandle_t*     pInterfaceHandle   The handle for this interface.
01572 //
01573 // Returns:
01574 //
01575 //  - VmbErrorSuccess:       If no error
01576 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01577 //  - VmbErrorNotFound:      The designated interface cannot be found
01578 //  - VmbErrorBadParameter:  pInterfaceHandle was NULL
01579 //
01580 // Details:     An interface can be opened if interface-specific control or information
01581 //              is required, e.g. the number of devices attached to a specific interface.
01582 //              Access is then possible via feature access methods.
01583 //
01584 IMEXPORTC VmbError_t VMB_CALL VmbInterfaceOpen (    const char*     idString,
01585                                                     VmbHandle_t*    pInterfaceHandle );
01586 
01587 //
01588 // Method:      VmbInterfaceClose()
01589 //
01590 // Purpose:     Close an interface.
01591 //
01592 // Parameters:
01593 //
01594 //  [in ]  const VmbHandle_t   interfaceHandle    The handle of the interface to close.
01595 //
01596 // Returns:
01597 //
01598 //  - VmbErrorSuccess:       If no error
01599 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01600 //  - VmbErrorBadHandle:     The given handle is not valid
01601 //
01602 // Details:     After configuration of the interface, close it by calling this function.
01603 //
01604 IMEXPORTC VmbError_t VMB_CALL VmbInterfaceClose ( const VmbHandle_t interfaceHandle );
01605 
01606 
01607 //----- Ancillary data --------------------------------------------------------
01608 
01609 //
01610 // Method:      VmbAncillaryDataOpen()
01611 //
01612 // Purpose:     Get a working handle to allow access to the elements of the ancillary data via feature access.
01613 //
01614 // Parameters:
01615 //
01616 //  [in ]  VmbFrame_t*   pFrame                 Pointer to a filled frame
01617 //  [out]  VmbHandle_t*  pAncillaryDataHandle   Handle to the ancillary data inside the frame
01618 //
01619 // Returns:
01620 //
01621 //  - VmbErrorSuccess:       If no error
01622 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01623 //
01624 // Details:     This function can only succeed if the given frame has been filled by the API.
01625 //
01626 IMEXPORTC VmbError_t VMB_CALL VmbAncillaryDataOpen (    VmbFrame_t*     pFrame,
01627                                                         VmbHandle_t*    pAncillaryDataHandle );
01628 
01629 //
01630 // Method:      VmbAncillaryDataClose()
01631 //
01632 // Purpose:     Destroy the working handle to the ancillary data inside a frame.
01633 //
01634 // Parameters:
01635 //
01636 //  [in ]  VmbHandle_t  ancillaryDataHandle  Handle to ancillary frame data
01637 //
01638 // Returns:
01639 //
01640 //  - VmbErrorSuccess:       If no error
01641 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01642 //  - VmbErrorBadHandle:     The given handle is not valid
01643 //
01644 // Details:     After reading the ancillary data and before re-queuing the frame, ancillary data
01645 //              must be closed.
01646 //
01647 IMEXPORTC VmbError_t VMB_CALL VmbAncillaryDataClose ( VmbHandle_t ancillaryDataHandle );
01648 
01649 
01650 //----- Raw memory/register access --------------------------------------------
01651 
01652 //
01653 // Method:      VmbMemoryRead()
01654 //
01655 // Purpose:     Read an array of bytes.
01656 //
01657 // Parameters:
01658 //
01659 //  [in ]  const VmbHandle_t    handle          Handle for a module that allows memory access
01660 //  [in ]  VmbUint64_t          address         Address to be used for this read operation
01661 //  [in ]  VmbUint32_t          bufferSize      Size of the data buffer to read
01662 //  [out]  char*                dataBuffer      Buffer to be filled
01663 //  [out]  VmbUint32_t*         pSizeComplete   Size of the data actually read
01664 //
01665 // Returns:
01666 //
01667 //  - VmbErrorSuccess:       If no error
01668 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01669 //  - VmbErrorBadHandle:     The given handle is not valid
01670 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
01671 //
01672 IMEXPORTC VmbError_t VMB_CALL VmbMemoryRead (   const VmbHandle_t   handle,
01673                                                 VmbUint64_t         address,
01674                                                 VmbUint32_t         bufferSize,
01675                                                 char*               dataBuffer,
01676                                                 VmbUint32_t*        pSizeComplete );
01677 
01678 //
01679 // Method:      VmbMemoryWrite()
01680 //
01681 // Purpose:     Write an array of bytes.
01682 //
01683 // Parameters:
01684 //
01685 //  [in ]  const VmbHandle_t    handle          Handle for a module that allows memory access
01686 //  [in ]  VmbUint64_t          address         Address to be used for this read operation
01687 //  [in ]  VmbUint32_t          bufferSize      Size of the data buffer to write
01688 //  [in ]  const char*          dataBuffer      Data to write
01689 //  [out]  VmbUint32_t*         pSizeComplete   Number of bytes successfully written; if an
01690 //                                              error occurs this is less than size
01691 //
01692 // Returns:
01693 //
01694 //  - VmbErrorSuccess:       If no error
01695 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01696 //  - VmbErrorBadHandle:     The given handle is not valid
01697 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
01698 //  - VmbErrorMoreData:      Not all data was written; see pSizeComplete value for the number of bytes written
01699 //
01700 IMEXPORTC VmbError_t VMB_CALL VmbMemoryWrite (  const VmbHandle_t   handle,
01701                                                 VmbUint64_t         address,
01702                                                 VmbUint32_t         bufferSize,
01703                                                 const char*         dataBuffer,
01704                                                 VmbUint32_t*        pSizeComplete );
01705 
01706 //
01707 // Method:      VmbRegistersRead()
01708 //
01709 // Purpose:     Read an array of registers.
01710 //
01711 // Parameters:
01712 //
01713 //  [in ]  const VmbHandle_t    handle              Handle for a module that allows register access
01714 //  [in ]  VmbUint32_t          readCount           Number of registers to be read
01715 //  [in ]  const VmbUint64_t*   pAddressArray       Array of addresses to be used for this read operation
01716 //  [out]  VmbUint64_t*         pDataArray          Array of registers to be used for this read operation
01717 //  [out]  VmbUint32_t*         pNumCompleteReads   Number of reads completed
01718 //
01719 // Returns:
01720 //
01721 //  - VmbErrorSuccess:       If no error
01722 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01723 //  - VmbErrorBadHandle:     The given handle is not valid
01724 //  - VmbErrorIncomplete:    Not all the requested reads could be completed
01725 //
01726 // Details:     Two arrays of data must be provided: an array of register addresses and one
01727 //              for corresponding values to be read. The registers are read consecutively
01728 //              until an error occurs or all registers are written successfully.
01729 //
01730 IMEXPORTC VmbError_t VMB_CALL VmbRegistersRead (    const VmbHandle_t   handle,
01731                                                     VmbUint32_t         readCount,
01732                                                     const VmbUint64_t*  pAddressArray,
01733                                                     VmbUint64_t*        pDataArray,
01734                                                     VmbUint32_t*        pNumCompleteReads );
01735 
01736 //
01737 // Method:      VmbRegistersWrite()
01738 //
01739 // Purpose:     Write an array of registers.
01740 //
01741 // Parameters:
01742 //
01743 //  [in ]  const VmbHandle_t    handle                  Handle for a module that allows register access
01744 //  [in ]  VmbUint32_t          writeCount              Number of registers to be written
01745 //  [in ]  const VmbUint64_t*   pAddressArray           Array of addresses to be used for this write operation
01746 //  [in ]  const VmbUint64_t*   pDataArray              Array of reads to be used for this write operation
01747 //  [out]  VmbUint32_t*         pNumCompleteWrites      Number of writes completed
01748 //
01749 // Returns:
01750 //
01751 //  - VmbErrorSuccess:       If no error
01752 //  - VmbErrorApiNotStarted: VmbStartup() was not called before the current command
01753 //  - VmbErrorBadHandle:     The given handle is not valid
01754 //  - VmbErrorInvalidAccess: Operation is invalid with the current access mode
01755 //  - VmbErrorIncomplete:    Not all the requested writes could be completed
01756 //
01757 // Details:     Two arrays of data must be provided: an array of register addresses and one with the
01758 //              corresponding values to be written to these addresses. The registers are written
01759 //              consecutively until an error occurs or all registers are written successfully.
01760 //
01761 IMEXPORTC VmbError_t VMB_CALL VmbRegistersWrite (   const VmbHandle_t   handle,
01762                                                     VmbUint32_t         writeCount,
01763                                                     const VmbUint64_t*  pAddressArray,
01764                                                     const VmbUint64_t*  pDataArray,
01765                                                     VmbUint32_t*        pNumCompleteWrites );
01766 
01767 #ifdef __cplusplus
01768 }
01769 #endif
01770 
01771 #endif // VIMBAC_H_INCLUDE_


avt_vimba_camera
Author(s): Miquel Massot , Allied Vision Technologies
autogenerated on Thu Aug 27 2015 12:29:49