123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- //-----------------------------------------------------------------------------
- // Basler pylon SDK
- // Copyright (c) 2009-2021 Basler AG
- // http://www.baslerweb.com
- // Author: Andreas Gau
- //-----------------------------------------------------------------------------
- /*!
- \file
- \brief Contains the support for SFNC version handling.
- */
- #ifndef INCLUDED_SFNCVERSION_H_3193628
- #define INCLUDED_SFNCVERSION_H_3193628
- #include <pylon/Platform.h>
- #include <pylon/PylonVersionInfo.h>
- #ifdef PYLON_LINUX_BUILD
- # undef GCC_VERSION
- # define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
- # undef GCC_DIAGNOSTIC_AWARE
- # define GCC_DIAGNOSTIC_AWARE (GCC_VERSION >= 40200)
- # undef GCC_DIAGNOSTIC_PUSH_POP_AWARE
- # define GCC_DIAGNOSTIC_PUSH_POP_AWARE (GCC_VERSION >= 40600)
- #else
- # undef GCC_DIAGNOSTIC_AWARE
- # define GCC_DIAGNOSTIC_AWARE 0
- #endif
- #if defined (PYLON_OSX_BUILD)
- # pragma clang diagnostic push
- # pragma clang diagnostic ignored "-Wunused-variable"
- # pragma clang diagnostic ignored "-Wunknown-pragmas"
- #endif
- #if GCC_DIAGNOSTIC_AWARE
- # if GCC_DIAGNOSTIC_PUSH_POP_AWARE
- # pragma GCC diagnostic push
- # endif
- # pragma GCC diagnostic ignored "-Wunknown-pragmas"
- # pragma GCC diagnostic ignored "-Wpragmas" // gcc < 4.6 doesn't know the following pragma
- # pragma GCC diagnostic ignored "-Wunused-but-set-variable"
- #endif
- #include <GenApi/GenApi.h>
- #if GCC_DIAGNOSTIC_AWARE
- # if GCC_DIAGNOSTIC_PUSH_POP_AWARE
- # pragma GCC diagnostic pop
- # else
- # pragma GCC diagnostic warning "-Wunknown-pragmas"
- # pragma GCC diagnostic warning "-Wunused-but-set-variable"
- # pragma GCC diagnostic warning "-Wpragmas" // gcc < 4.6 doesn't know the pragma
- # endif
- #endif
- #include <GenApi/Pointer.h>
- #include <GenApi/INodeMap.h>
- #if defined (PYLON_OSX_BUILD)
- # pragma clang diagnostic pop
- #endif
- namespace Pylon
- {
- /** \addtogroup Pylon_InstantCameraApiGeneric
- * @{
- */
- /// Constant for undefined SFNC version.
- static const VersionInfo Sfnc_VersionUndefined( 0, 0, 0 );
- /// Constant for SFNC version 1.2.1.
- static const VersionInfo Sfnc_1_2_1( 1, 2, 1 );
- /// Constant for SFNC version 1.3.0.
- static const VersionInfo Sfnc_1_3_0( 1, 3, 0 );
- /// Constant for SFNC version 1.4.0.
- static const VersionInfo Sfnc_1_4_0( 1, 4, 0 );
- /// Constant for SFNC version 1.5.0.
- static const VersionInfo Sfnc_1_5_0( 1, 5, 0 );
- /// Constant for SFNC version 1.5.1.
- static const VersionInfo Sfnc_1_5_1( 1, 5, 1 );
- /// Constant for SFNC version 2.0.0. This version or a later version is used by USB camera devices.
- static const VersionInfo Sfnc_2_0_0( 2, 0, 0 );
- /// Constant for SFNC version 2.1.0
- static const VersionInfo Sfnc_2_1_0( 2, 1, 0 );
- /// Constant for SFNC version 2.2.0
- static const VersionInfo Sfnc_2_2_0( 2, 2, 0 );
- /// Constant for SFNC version 2.3.0
- static const VersionInfo Sfnc_2_3_0( 2, 3, 0 );
- /// Constant for SFNC version 2.4.0
- static const VersionInfo Sfnc_2_4_0( 2, 4, 0 );
- /// Constant for SFNC version 2.5.0
- static const VersionInfo Sfnc_2_5_0( 2, 5, 0 );
- /**
- * @}
- */
- /// Helper function for getting the SFNC version from the camera device node map.
- inline VersionInfo GetSfncVersion( GenApi::INodeMap* pNodeMap )
- {
- // If pNodeMap is a valid node map.
- if (pNodeMap)
- {
- // Check to see whether node for major version exists.
- GenApi::CIntegerPtr major = pNodeMap->GetNode( "DeviceSFNCVersionMajor" );
- if (major)
- {
- // Get further version Info.
- GenApi::CIntegerPtr minor = pNodeMap->GetNode( "DeviceSFNCVersionMinor" );
- GenApi::CIntegerPtr subminor = pNodeMap->GetNode( "DeviceSFNCVersionSubMinor" );
- if (!IsReadable( major ) || !IsReadable( minor ) || !IsReadable( subminor ))
- {
- throw RUNTIME_EXCEPTION( "Failed to read SFNC version from camera device node map." );
- }
- VersionInfo v( static_cast<unsigned int>(major->GetValue()),
- static_cast<unsigned int>(minor->GetValue()),
- static_cast<unsigned int>(subminor->GetValue()) );
- return v;
- }
- }
- return Sfnc_VersionUndefined;
- }
- }
- #endif /* INCLUDED_SFNCVERSION_H_3193628 */
|