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_