181 if ( NULL == pInterfaces )
193 pInterfaces[i] = iter->second;
213 if ( NULL == pStrID )
226 rInterface = iter->second;
231 std::vector<VmbInterfaceInfo_t> interfaceInfos;
236 for ( std::vector<VmbInterfaceInfo_t>::iterator iterInfo = interfaceInfos.begin();
237 interfaceInfos.end() != iterInfo;
240 if ( 0 == strcmp( iterInfo->interfaceIdString, pStrID ))
250 rInterface = iter->second;
268 if ( NULL == pStrID )
293 if ( NULL == pCameras )
305 pCameras[i] = iter->second;
325 if ( NULL == pStrID )
339 rCamera = iter->second;
349 const char *pDiscoveryStatus = NULL;
355 if ( 1 != discoveryValue )
374 rCamera = iter->second;
380 std::string cameraIdString;
392 rCamera = iter->second;
411 if ( NULL == pStrID )
419 return SP_ACCESS( rCamera )->Open( eAccessMode );
436 if (
SP_ACCESS( iter->second )->GetHandle() == handle )
457 std::vector<char> strID;
465 strID.resize( nCount );
470 const char* pReason = NULL;
512 if (
false == bFound )
518 LOG_FREE_TEXT(
"Could not find a known camera in camera list")
532 SP_ACCESS(( *iter ))->CameraListChanged( pCam, reason );
551 LOG_FREE_TEXT(
"Could not get integer representation of enum string" )
566 LOG_FREE_TEXT(
"Could not get length of camera ID or length is 0" )
573 std::vector<char> strID;
581 strID.resize( nCount );
591 InterfacePtr pInterface;
598 pInterface = iter->second;
624 if (
true == bFound )
641 pInterface = iter->second;
648 LOG_FREE_TEXT(
"Could not find interface in interface list." )
664 SP_ACCESS(( *iter ))->InterfaceListChanged( pInterface, reason );
723 const char *pDiscoveryStatus = NULL;
731 if ( 1 != discoveryValue )
786 const char *pDiscoveryStatus = NULL;
794 if ( 0 != discoveryValue )
875 LOG_FREE_TEXT(
"Could not register interface list observer" )
997 std::vector<VmbInterfaceInfo_t> interfaceInfos;
1003 InterfacePtrMap::iterator iter = m_interfaces.Map.begin();
1004 std::vector<VmbInterfaceInfo_t>::iterator iterInfo = interfaceInfos.begin();
1005 bool bFound =
false;
1008 while ( m_interfaces.Map.end() != iter )
1010 for (
VmbUint32_t i=0; i<nCount; ++i, ++iterInfo )
1012 if ( iterInfo->interfaceIdString == iter->first )
1019 if (
false == bFound )
1021 m_interfaces.Map.erase( iter++ );
1029 iterInfo = interfaceInfos.begin();
1033 while ( 0 < nCount-- )
1035 iter = m_interfaces.Map.find( iterInfo->interfaceIdString );
1037 if ( m_interfaces.Map.end() == iter )
1039 SP_SET( m_interfaces.Map[iterInfo->interfaceIdString],
new Interface( &(*iterInfo) ));
1056 std::vector<VmbCameraInfo_t> cameraInfos( 10 );
1059 if (
true == m_bGeVTLPresent )
1062 const char *pDiscoveryStatus = NULL;
1070 if ( 1 != discoveryValue )
1075 m_bGeVDiscoveryAutoOn =
true;
1091 cameraInfos.resize( nCount );
1100 if( nCount < cameraInfos.size() )
1102 cameraInfos.resize( nCount );
1104 CameraPtrMap::iterator mapPos = m_cameras.Map.begin();
1105 typedef std::vector<VmbCameraInfo_t>::const_iterator const_info_iterator;
1108 while ( m_cameras.Map.end() != mapPos )
1110 bool bFound =
false;
1111 for( const_info_iterator infoPos = cameraInfos.begin(); cameraInfos.end() != infoPos; ++infoPos )
1113 if ( infoPos->cameraIdString == mapPos->first )
1120 if (
false == bFound )
1122 m_cameras.Map.erase( mapPos++ );
1131 for (const_info_iterator infoPos= cameraInfos.begin(); infoPos != cameraInfos.end(); ++infoPos )
1133 CameraPtrMap::const_iterator findPos = m_cameras.Map.find( infoPos->cameraIdString );
1135 if ( m_cameras.Map.end() == findPos )
1137 AppendCamToMap( *infoPos );
1143 m_cameras.Map.clear();
1147 catch(
const std::bad_alloc& )
1165 if( NULL == pStrID )
1173 while( pStrID[nIndex] !=
'\0' )
1175 if( isdigit( pStrID[nIndex] ) != 0 )
1183 else if(
'.' == pStrID[nIndex] )
1213 InterfacePtr pInterface;
1214 std::string strInterfaceName,
1220 if ( m_cameras.Map.end() == m_cameras.Map.find( camInfo.
cameraIdString ))
1238 strInterfaceName.c_str(),
1239 strInterfaceSerial.c_str(),
1255 CameraPtrMap::iterator iter = m_cameras.Map.find( camInfo.
cameraIdString );
1256 if ( m_cameras.Map.end() != iter
1259 m_cameras.Map.erase( iter );
1286 rInterfaceInfos.resize( nCount );
IMEXPORTC VmbError_t VMB_CALL VmbFeatureCommandRun(const VmbHandle_t handle, const char *name)
IMEXPORT VmbErrorType GetCameraByID(const char *pID, CameraPtr &pCamera)
static IMEXPORT VimbaSystem & GetInstance()
std::map< std::string, CameraPtr > CameraPtrMap
bool EnterWriteLock(BasicLockable &rLockable, bool bExclusive=false)
const char * cameraIdString
VmbErrorType GetInterfaceList(std::vector< VmbInterfaceInfo_t > &interfaceInfos)
IMEXPORTC VmbError_t VMB_CALL VmbFeatureStringMaxlengthQuery(const VmbHandle_t handle, const char *name, VmbUint32_t *pMaxLength)
#define VIMBACPP_VERSION_PATCH
IMEXPORTC VmbError_t VMB_CALL VmbFeatureStringGet(const VmbHandle_t handle, const char *name, char *buffer, VmbUint32_t bufferSize, VmbUint32_t *pSizeFilled)
IMEXPORT VmbErrorType Startup()
IMEXPORT VmbErrorType RegisterCameraListObserver(const ICameraListObserverPtr &pObserver)
VmbErrorType GetInterfaces(InterfacePtrVector &interfaces)
char const *const AVT_IP_OR_MAC_ADDRESS
static void VMB_CALL InterfaceDiscoveryCallback(const VmbHandle_t handle, const char *name, void *context)
LockableMap< std::string, InterfacePtr > m_interfaces
std::map< std::string, InterfacePtr > InterfacePtrMap
void ExitWriteLock(BasicLockable &rLockable)
VmbErrorType UpdateInterfaceList()
IMEXPORT VmbErrorType OpenCameraByID(const char *pID, VmbAccessModeType eAccessMode, CameraPtr &pCamera)
static const VmbHandle_t gVimbaHandle
IMEXPORTC VmbError_t VMB_CALL VmbFeatureInvalidationRegister(const VmbHandle_t handle, const char *name, VmbInvalidationCallback callback, void *pUserContext)
static VimbaSystem _instance
#define LOG_FREE_TEXT(txt)
ConditionHelper m_cameraObserversConditionHelper
VmbErrorType GetCameras(CameraPtrVector &cameras)
IMEXPORTC VmbError_t VMB_CALL VmbFeatureInvalidationUnregister(const VmbHandle_t handle, const char *name, VmbInvalidationCallback callback)
IMEXPORTC VmbError_t VMB_CALL VmbCameraInfoQuery(const char *idString, VmbCameraInfo_t *pInfo, VmbUint32_t sizeofCameraInfo)
VimbaSystem & operator=(const VimbaSystem &system)
IMEXPORT VmbErrorType RegisterInterfaceListObserver(const IInterfaceListObserverPtr &pObserver)
IMEXPORT VmbErrorType RegisterCameraFactory(const ICameraFactoryPtr &pCameraFactory)
const char * interfaceIdString
ConditionHelper m_interfaceObserversConditionHelper
LockableMap< std::string, CameraPtr > m_cameras
void AppendCamToMap(VmbCameraInfo_t camInfo)
IMEXPORTC VmbError_t VMB_CALL VmbInterfacesList(VmbInterfaceInfo_t *pInterfaceInfo, VmbUint32_t listLength, VmbUint32_t *pNumFound, VmbUint32_t sizeofInterfaceInfo)
const char * serialString
IMEXPORTC VmbError_t VMB_CALL VmbStartup(void)
IMEXPORT VmbErrorType UnregisterInterfaceListObserver(const IInterfaceListObserverPtr &pObserver)
IMEXPORTC VmbError_t VMB_CALL VmbFeatureEnumAsInt(const VmbHandle_t handle, const char *name, const char *value, VmbInt64_t *pIntVal)
IMEXPORT VmbErrorType QueryVersion(VmbVersionInfo_t &version)
#define SP_SET(sp, rawPtr)
#define SP_ISEQUAL(sp1, sp2)
bool m_bGeVDiscoveryAutoOn
void ExitReadLock(BasicLockable &rLockable)
ConditionHelper m_camerasConditionHelper
bool EnterReadLock(BasicLockable &rLockable)
IMEXPORTC VmbError_t VMB_CALL VmbFeatureEnumGet(const VmbHandle_t handle, const char *name, const char **pValue)
IMEXPORTC VmbError_t VMB_CALL VmbFeatureBoolGet(const VmbHandle_t handle, const char *name, VmbBool_t *pValue)
LockableVector< ICameraListObserverPtr > m_cameraObservers
IMEXPORTC VmbError_t VMB_CALL VmbCamerasList(VmbCameraInfo_t *pCameraInfo, VmbUint32_t listLength, VmbUint32_t *pNumFound, VmbUint32_t sizeofCameraInfo)
IMEXPORT VmbErrorType UnregisterCameraFactory()
IMEXPORTC void VMB_CALL VmbShutdown(void)
ConditionHelper m_interfacesConditionHelper
#define VIMBACPP_VERSION_MAJOR
void SetHandle(const VmbHandle_t handle)
IMEXPORT VmbErrorType Shutdown()
VmbErrorType UpdateCameraList()
IMEXPORT VmbErrorType UnregisterCameraListObserver(const ICameraListObserverPtr &pObserver)
static void VMB_CALL CameraDiscoveryCallback(const VmbHandle_t handle, const char *name, void *context)
#define VIMBACPP_VERSION_MINOR
bool IsIPAddress(const char *pStrID)
ICameraFactoryPtr m_pCameraFactory
LockableVector< IInterfaceListObserverPtr > m_interfaceObservers
IMEXPORT VmbErrorType GetInterfaceByID(const char *pID, InterfacePtr &pInterface)
CameraPtr GetCameraPtrByHandle(const VmbHandle_t handle) const
IMEXPORT VmbErrorType OpenInterfaceByID(const char *pID, InterfacePtr &pInterface)