├── lib
├── 64bit
│ ├── libVimbaC.so
│ └── libVimbaCPP.so
├── arm_32bit
│ ├── libVimbaC.so
│ └── libVimbaCPP.so
└── arm_64bit
│ ├── libVimbaC.so
│ └── libVimbaCPP.so
├── include
├── VimbaC
│ └── Include
│ │ └── VmbCommonTypes.h
├── VimbaCPP
│ ├── Source
│ │ ├── Version.h
│ │ ├── BasicLockable.cpp
│ │ ├── Helper.h
│ │ ├── FrameImpl.h
│ │ ├── Clock.h
│ │ ├── MutexGuard.h
│ │ ├── CommandFeature.h
│ │ ├── Semaphore.h
│ │ ├── StringFeature.h
│ │ ├── RawFeature.h
│ │ ├── Condition.h
│ │ ├── BoolFeature.cpp
│ │ ├── CommandFeature.cpp
│ │ ├── FloatFeature.h
│ │ ├── IntFeature.h
│ │ ├── FrameHandler.h
│ │ ├── DefaultCameraFactory.h
│ │ ├── DefaultCameraFactory.cpp
│ │ ├── BoolFeature.h
│ │ ├── StringFeature.cpp
│ │ ├── Mutex.cpp
│ │ ├── Semaphore.cpp
│ │ ├── ConditionHelper.h
│ │ ├── FrameHandler.cpp
│ │ ├── MutexGuard.cpp
│ │ ├── RawFeature.cpp
│ │ ├── EnumFeature.h
│ │ ├── IntFeature.cpp
│ │ ├── Condition.cpp
│ │ ├── AncillaryData.cpp
│ │ ├── ConditionHelper.cpp
│ │ ├── FloatFeature.cpp
│ │ ├── Clock.cpp
│ │ └── FileLogger.cpp
│ └── Include
│ │ ├── VimbaCPP.h
│ │ ├── Mutex.h
│ │ ├── FileLogger.h
│ │ ├── BasicLockable.h
│ │ ├── UserLoggerDefines.h
│ │ ├── LoggerDefines.h
│ │ ├── IFeatureObserver.h
│ │ ├── FeatureContainer.hpp
│ │ ├── IFrameObserver.h
│ │ ├── VimbaCPPCommon.h
│ │ ├── IInterfaceListObserver.h
│ │ ├── ICameraListObserver.h
│ │ ├── VimbaSystem.hpp
│ │ ├── SharedPointerDefines.h
│ │ ├── ICameraFactory.h
│ │ ├── AncillaryData.h
│ │ ├── FeatureContainer.h
│ │ ├── Interface.hpp
│ │ ├── UserSharedPointerDefines.h
│ │ ├── SharedPointer.h
│ │ ├── Interface.h
│ │ └── EnumEntry.hpp
└── avt_vimba_camera
│ ├── mono_camera_nodelet.h
│ ├── trigger.h
│ ├── frame_observer.h
│ ├── mono_camera.h
│ └── avt_vimba_camera.h
├── src
├── nodes
│ ├── trigger_node.cpp
│ ├── mono_camera_node.cpp
│ └── mono_camera_nodelet.cpp
├── frame_observer.cpp
└── trigger.cpp
├── plugins.xml
├── .gitignore
├── calibrations
└── calibration_example.yaml
├── launch
├── trigger_node.launch
├── Mako_G-319.launch
└── stereo_camera.launch
├── .circleci
└── config.yml
├── package.xml
├── LICENSE.md
└── CMakeLists.txt
/lib/64bit/libVimbaC.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/astuff/avt_vimba_camera/HEAD/lib/64bit/libVimbaC.so
--------------------------------------------------------------------------------
/lib/64bit/libVimbaCPP.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/astuff/avt_vimba_camera/HEAD/lib/64bit/libVimbaCPP.so
--------------------------------------------------------------------------------
/lib/arm_32bit/libVimbaC.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/astuff/avt_vimba_camera/HEAD/lib/arm_32bit/libVimbaC.so
--------------------------------------------------------------------------------
/lib/arm_64bit/libVimbaC.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/astuff/avt_vimba_camera/HEAD/lib/arm_64bit/libVimbaC.so
--------------------------------------------------------------------------------
/lib/arm_32bit/libVimbaCPP.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/astuff/avt_vimba_camera/HEAD/lib/arm_32bit/libVimbaCPP.so
--------------------------------------------------------------------------------
/lib/arm_64bit/libVimbaCPP.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/astuff/avt_vimba_camera/HEAD/lib/arm_64bit/libVimbaCPP.so
--------------------------------------------------------------------------------
/include/VimbaC/Include/VmbCommonTypes.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/astuff/avt_vimba_camera/HEAD/include/VimbaC/Include/VmbCommonTypes.h
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/Version.h:
--------------------------------------------------------------------------------
1 | #ifndef AVT_VMBAPI_VERSION_H
2 | #define AVT_VMBAPI_VERSION_H
3 |
4 | #define VIMBACPP_VERSION_MAJOR 1
5 | #define VIMBACPP_VERSION_MINOR 8
6 | #define VIMBACPP_VERSION_PATCH 4
7 |
8 | #endif //AVT_VMBAPI_VERSION_H
9 |
--------------------------------------------------------------------------------
/src/nodes/trigger_node.cpp:
--------------------------------------------------------------------------------
1 | #include "avt_vimba_camera/trigger.h"
2 |
3 | int main(int argc, char* argv[])
4 | {
5 | ros::init(argc, argv, "trigger_node");
6 |
7 | trigger::Trigger trigger;
8 | trigger.Init();
9 |
10 | ros::spin();
11 | return 0;
12 | }
13 |
--------------------------------------------------------------------------------
/plugins.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | MonoCamera Nodelet
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/nodes/mono_camera_node.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 |
4 | int main(int argc, char** argv)
5 | {
6 | ros::init(argc, argv, "mono_camera_node");
7 |
8 | ros::NodeHandle nh;
9 | ros::NodeHandle nhp("~");
10 |
11 | avt_vimba_camera::MonoCamera mc(nh, nhp);
12 |
13 | ros::spin();
14 | return 0;
15 | }
--------------------------------------------------------------------------------
/include/avt_vimba_camera/mono_camera_nodelet.h:
--------------------------------------------------------------------------------
1 | #include "avt_vimba_camera/mono_camera.h"
2 |
3 | #include
4 |
5 | namespace avt_vimba_camera
6 | {
7 | class MonoCameraNodelet : public nodelet::Nodelet
8 | {
9 | public:
10 | virtual void onInit();
11 | virtual ~MonoCameraNodelet();
12 |
13 | private:
14 | MonoCamera* camera_;
15 | };
16 |
17 | } // namespace avt_vimba_camera
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Specific files
2 | src/VimbaCPP/
3 |
4 | # Build objects
5 | lib/
6 | bin/
7 | build/
8 | docs/
9 |
10 | # Auto generated code
11 | cfg/cpp/
12 | cfg/*.cfgc
13 | msg_gen/
14 | msg/lisp/
15 |
16 | # CMake files
17 | CMakeCache.txt
18 | cmake_install.cmake
19 | CMakeFiles/
20 | src/*/Makefile
21 | src/*/cmake_install.cmake
22 | src/*/CMakeFiles/
23 |
24 | # Eclipse temporary files
25 | .cproject
26 | .project
27 | .pydevproject
28 |
29 | # ctags
30 | .tags*
31 | */.tags*
32 |
33 |
34 |
--------------------------------------------------------------------------------
/src/nodes/mono_camera_nodelet.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include "avt_vimba_camera/mono_camera_nodelet.h"
3 |
4 | namespace avt_vimba_camera
5 | {
6 | void MonoCameraNodelet::onInit()
7 | {
8 | NODELET_DEBUG("Initializing nodelet...");
9 | camera_ = new MonoCamera(getMTNodeHandle(), getMTPrivateNodeHandle());
10 | }
11 |
12 | MonoCameraNodelet::~MonoCameraNodelet()
13 | {
14 | delete camera_;
15 | }
16 | } // namespace avt_vimba_camera
17 |
18 | PLUGINLIB_EXPORT_CLASS(avt_vimba_camera::MonoCameraNodelet, nodelet::Nodelet)
19 |
--------------------------------------------------------------------------------
/calibrations/calibration_example.yaml:
--------------------------------------------------------------------------------
1 | # NOTE: This is just an example calibration file, always use your own calibration when doing any image rectification or un-distortion.
2 |
3 | image_width: 1920
4 | image_height: 1440
5 | camera_name: camera
6 | camera_matrix:
7 | rows: 3
8 | cols: 3
9 | data: [1477.37610504879, 0, 966.3836593155506, 0, 1470.959845844984, 721.682892292772, 0, 0, 1]
10 | distortion_model: rational_polynomial
11 | distortion_coefficients:
12 | rows: 1
13 | cols: 8
14 | data: [0.1424740048592687, 2.048769427985746, 0.0008456231435827007, -0.0004816724796356829, -2.834810741450366, -0.1613802969459177, 1.425388415204544, -2.584546591478115]
15 | rectification_matrix:
16 | rows: 3
17 | cols: 3
18 | data: [0.9905132663703519, -0.003683047506279885, 0.1373677702570837, 0.002297487443287912, 0.9999448926725898, 0.01024368925000131, -0.1373979282805399, -0.009830909371423568, 0.9904671435868766]
19 | projection_matrix:
20 | rows: 3
21 | cols: 4
22 | data: [2046.340398990372, 0, 720.5770225524902, 0, 0, 2046.340398990372, 710.3249855041504, 0, 0, 0, 1, 0]
23 |
--------------------------------------------------------------------------------
/launch/trigger_node.launch:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/.circleci/config.yml:
--------------------------------------------------------------------------------
1 | version: 2.1
2 |
3 | commands:
4 | ros_build:
5 | steps:
6 | - checkout
7 | - run:
8 | name: Set Up Container
9 | command: |
10 | apt-get update -qq
11 | source /opt/ros/*/setup.bash
12 | mkdir -p ~/catkin_ws/src
13 | ln -s "$PWD" ~/catkin_ws/src/
14 | cd ~/catkin_ws
15 | rosdep update && rosdep install --from-paths src/ --ignore-src -y
16 | catkin init
17 | catkin config --extend /opt/ros/$ROS_DISTRO
18 | - run:
19 | name: Build
20 | command: |
21 | source /opt/ros/*/setup.bash
22 | cd ~/catkin_ws
23 | catkin build -j 2 --no-status
24 | - run:
25 | name: Run Tests
26 | command: |
27 | source /opt/ros/*/setup.bash
28 | cd ~/catkin_ws
29 | catkin run_tests avt_vimba_camera --no-deps
30 | catkin_test_results
31 | jobs:
32 | noetic:
33 | docker:
34 | - image: autonomoustuff/docker-builds:noetic-ros-base
35 | steps:
36 | - ros_build
37 | working_directory: ~/src
38 |
39 | workflows:
40 | ros_build:
41 | jobs:
42 | - noetic
43 |
--------------------------------------------------------------------------------
/include/avt_vimba_camera/trigger.h:
--------------------------------------------------------------------------------
1 | #ifndef AVT_VIMBA_CAMERA_TRIGGER_H
2 | #define AVT_VIMBA_CAMERA_TRIGGER_H
3 |
4 | #include "VimbaCPP/Include/VimbaCPP.h"
5 |
6 | #include
7 |
8 | #include
9 |
10 | #include
11 |
12 | namespace trigger
13 | {
14 | class Trigger
15 | {
16 | public:
17 | Trigger();
18 | ~Trigger();
19 |
20 | void Init();
21 |
22 | private:
23 | void LoadParams();
24 | void InitializeAddress();
25 | bool PrepareActionCommand();
26 | bool SetIntFeatureValue(const std::string& name, int64_t value);
27 |
28 | void TimerCb(const ros::TimerEvent& event);
29 | void TriggerCb(const std_msgs::Bool::ConstPtr& msg);
30 | void SendActionCommand();
31 |
32 | AVT::VmbAPI::VimbaSystem& vimba_system_;
33 | AVT::VmbAPI::InterfacePtr interface_ptr_;
34 |
35 | ros::NodeHandle pnh_;
36 | ros::NodeHandle nh_;
37 |
38 | ros::Timer trigger_timer_;
39 | ros::Subscriber trigger_sub_;
40 |
41 | // Params
42 | struct in_addr destination_ip_;
43 | std::string trigger_src_;
44 | float timer_period_;
45 | int action_device_key_;
46 | int action_group_key_;
47 | int action_group_mask_;
48 | };
49 |
50 | } // namespace trigger
51 |
52 | #endif // AVT_VIMBA_CAMERA_TRIGGER_H
53 |
--------------------------------------------------------------------------------
/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | avt_vimba_camera
4 | 1.2.0
5 | Camera driver for Allied Vision Technologies (AVT) cameras, based on their Vimba SDK.
6 | BSD
7 |
8 | https://github.com/astuff/avt_vimba_camera
9 | https://github.com/astuff/avt_vimba_camera
10 | https://github.com/astuff/avt_vimba_camera/issues
11 |
12 | Allied Vision Technologies
13 | Miquel Massot
14 | AutonomouStuff Software Team
15 |
16 | catkin
17 | camera_info_manager
18 | diagnostic_updater
19 | dynamic_reconfigure
20 | image_transport
21 | message_filters
22 | roscpp
23 | sensor_msgs
24 | std_msgs
25 | nodelet
26 |
27 | image_proc
28 | stereo_image_proc
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/launch/Mako_G-319.launch:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/launch/stereo_camera.launch:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Include/VimbaCPP.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: VimbaCPP.h
10 |
11 | Description: Main include file for Vimba CPP API.
12 |
13 | -------------------------------------------------------------------------------
14 |
15 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
16 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
17 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
22 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
23 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 |
26 | =============================================================================*/
27 |
28 | #include
29 |
30 | #include
31 | #include
32 | #include
33 | #include
34 | #include
35 | #include
36 | #include
37 | #include
38 | #include
39 | #include
40 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/BasicLockable.cpp:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: BasicLockable.cpp
10 |
11 | Description: Implementation of class AVT::VmbAPI::BasicLockable.
12 |
13 | -------------------------------------------------------------------------------
14 |
15 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
16 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
17 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
22 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
23 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 |
26 | =============================================================================*/
27 |
28 | #include
29 | #include
30 |
31 | namespace AVT {
32 | namespace VmbAPI {
33 |
34 | BasicLockable::BasicLockable()
35 | : m_pMutex( MutexPtr( new Mutex() ))
36 | {
37 | }
38 |
39 | BasicLockable::~BasicLockable()
40 | {
41 | }
42 |
43 | BasicLockable::BasicLockable( MutexPtr pMutex )
44 | : m_pMutex( pMutex )
45 | {
46 | }
47 |
48 | MutexPtr& BasicLockable::GetMutex()
49 | {
50 | return m_pMutex;
51 | }
52 | const MutexPtr& BasicLockable::GetMutex() const
53 | {
54 | return m_pMutex;
55 | }
56 |
57 | }} //namespace AVT::VmbAPI
58 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/Helper.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: Helper.h
10 |
11 | Description: Definition of helper classes (types)
12 | Intended for use in the implementation of Vimba CPP API.
13 |
14 | -------------------------------------------------------------------------------
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
17 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
18 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
24 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 | =============================================================================*/
28 |
29 | #ifndef AVT_VMBAPI_HELPER_H
30 | #define AVT_VMBAPI_HELPER_H
31 |
32 | #include
33 |
34 | namespace AVT {
35 | namespace VmbAPI {
36 |
37 | template
38 | class LockableVector : public virtual BasicLockable
39 | {
40 | public:
41 | std::vector Vector;
42 | };
43 |
44 | template
45 | class LockableMap : public virtual BasicLockable
46 | {
47 | public:
48 | std::map Map;
49 | };
50 |
51 | char const * const AVT_IP_OR_MAC_ADDRESS = "IP_OR_MAC@";
52 |
53 | }} // AVT::VmbAPI
54 |
55 | #endif
56 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/FrameImpl.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: FrameImpl.h
10 |
11 | Description: Definition of pointer to implementation structure used by
12 | AVT::VmbAPI::Frame.
13 | Intended for use in the implementation of Vimba CPP API.
14 |
15 | -------------------------------------------------------------------------------
16 |
17 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
18 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
19 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
21 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
25 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 |
28 | =============================================================================*/
29 |
30 | #ifndef AVT_VMBAPI_FRAMEIMPL_H
31 | #define AVT_VMBAPI_FRAMEIMPL_H
32 |
33 | namespace AVT {
34 | namespace VmbAPI {
35 |
36 | struct Frame::Impl
37 | {
38 | VmbUchar_t *m_pBuffer;
39 | bool m_bIsUserBuffer;
40 |
41 | VmbFrame_t m_frame;
42 |
43 | IFrameObserverPtr m_pObserver;
44 | MutexPtr m_pObserverMutex;
45 |
46 | bool m_bAlreadyAnnounced;
47 | bool m_bAlreadyQueued;
48 |
49 | void Init();
50 | };
51 |
52 | }}
53 |
54 | #endif
55 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/Clock.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: Clock.h
10 |
11 | Description: Definition of a platform independent Sleep.
12 | Intended for use in the implementation of Vimba CPP API.
13 |
14 | -------------------------------------------------------------------------------
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
17 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
18 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
24 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 | =============================================================================*/
28 |
29 | #ifndef AVT_VMBAPI_CLOCK
30 | #define AVT_VMBAPI_CLOCK
31 |
32 | namespace AVT {
33 | namespace VmbAPI {
34 |
35 | class Clock
36 | {
37 | public:
38 | Clock();
39 | virtual ~Clock();
40 |
41 | virtual void Reset();
42 | virtual void SetStartTime();
43 | virtual void SetStartTime( double dStartTime );
44 | virtual double GetTime() const;
45 |
46 | static double GetAbsTime();
47 |
48 | static void Sleep( double dTime );
49 | static void SleepMS( unsigned long nTimeMS );
50 | static void SleepAbs( double dAbsTime );
51 |
52 | protected:
53 | double m_dStartTime;
54 | };
55 |
56 | }} //namespace AVT::VmbAPI
57 |
58 | #endif //AVT_VMBAPI_CLOCK
59 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/MutexGuard.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: MutexGuard.h
10 |
11 | Description: Definition of a mutex helper class for locking and unlocking.
12 | Intended for use in the implementation of Vimba CPP API.
13 |
14 | -------------------------------------------------------------------------------
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
17 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
18 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
24 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 | =============================================================================*/
28 |
29 | #ifndef AVT_VMBAPI_MUTEXGUARD
30 | #define AVT_VMBAPI_MUTEXGUARD
31 |
32 | #include
33 | #include
34 |
35 | namespace AVT
36 | {
37 | namespace VmbAPI
38 | {
39 |
40 | class MutexGuard
41 | {
42 | public:
43 | MutexGuard();
44 | MutexGuard( MutexPtr &pMutex );
45 | MutexGuard( BasicLockablePtr pLockable );
46 | MutexGuard( const BasicLockable &rLockable );
47 | ~MutexGuard();
48 |
49 | void Protect();
50 | bool Release();
51 |
52 | protected:
53 | Mutex *m_pMutex;
54 | };
55 |
56 | } //namespace VmbAPI
57 | } //namespace AVT
58 |
59 | #endif //AVT_VMBAPI_MUTEXGUARD
60 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Include/Mutex.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: Mutex.h
10 |
11 | Description: Definition of class AVT::VmbAPI::Mutex.
12 |
13 | -------------------------------------------------------------------------------
14 |
15 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
16 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
17 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
22 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
23 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 |
26 | =============================================================================*/
27 |
28 | #ifndef AVT_VMBAPI_MUTEX
29 | #define AVT_VMBAPI_MUTEX
30 |
31 | #include
32 |
33 | #ifdef _WIN32
34 | #include
35 | #else
36 | #include
37 | #endif
38 |
39 | namespace AVT {
40 | namespace VmbAPI {
41 |
42 | class Mutex
43 | {
44 | public:
45 | IMEXPORT explicit Mutex( bool bInitLock = false );
46 | IMEXPORT ~Mutex();
47 |
48 | IMEXPORT void Lock();
49 | IMEXPORT void Unlock();
50 |
51 | protected:
52 | #ifdef _WIN32
53 | HANDLE m_hMutex;
54 | #else
55 | pthread_mutex_t m_Mutex;
56 | #endif
57 |
58 | private:
59 | Mutex& operator=( const Mutex& );
60 | Mutex( const Mutex& );
61 | };
62 |
63 | }} //namespace AVT::VmbAPI
64 |
65 | #endif //AVT_VMBAPI_MUTEX
66 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Include/FileLogger.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: FileLogger.h
10 |
11 | Description: Definition of class AVT::VmbAPI::FileLogger.
12 |
13 | -------------------------------------------------------------------------------
14 |
15 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
16 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
17 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
22 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
23 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 |
26 | =============================================================================*/
27 |
28 | #ifndef AVT_VMBAPI_FILELOGGER_H
29 | #define AVT_VMBAPI_FILELOGGER_H
30 |
31 | #include
32 | #include
33 | #include
34 |
35 | #include
36 | #include
37 |
38 | namespace AVT {
39 | namespace VmbAPI {
40 |
41 | class FileLogger
42 | {
43 | public:
44 | FileLogger( const char *pFileName, bool append = true );
45 | virtual ~FileLogger();
46 |
47 | void Log( const std::string &StrMessage );
48 |
49 | private:
50 | std::ofstream m_File;
51 | MutexPtr m_pMutex;
52 |
53 | std::string GetTempPath();
54 | FileLogger( const FileLogger& );
55 | FileLogger& operator=( const FileLogger& );
56 | };
57 |
58 | }} //namespace AVT:VmbAPI
59 |
60 | #endif
61 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/CommandFeature.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: CommandFeature.h
10 |
11 | Description: Definition of class AVT::VmbAPI::CommandFeature.
12 | Intended for use in the implementation of Vimba CPP API.
13 |
14 | -------------------------------------------------------------------------------
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
17 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
18 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
24 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 | =============================================================================*/
28 |
29 | #ifndef AVT_VMBAPI_COMMANDFEATURE_H
30 | #define AVT_VMBAPI_COMMANDFEATURE_H
31 |
32 | #include
33 | #include
34 | #include
35 | #include
36 |
37 | namespace AVT {
38 | namespace VmbAPI {
39 |
40 | class CommandFeature : public BaseFeature
41 | {
42 | public:
43 | CommandFeature( const VmbFeatureInfo_t *featureInfo, FeatureContainer *pFeatureContainer );
44 |
45 | IMEXPORT virtual VmbErrorType RunCommand();
46 |
47 | IMEXPORT virtual VmbErrorType IsCommandDone( bool & isDone ) const;
48 | };
49 |
50 | }} // namespace AVT::VmbAPI
51 |
52 | #endif
53 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Include/BasicLockable.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: BasicLockable.h
10 |
11 | Description: Definition of class AVT::VmbAPI::BasicLockable.
12 |
13 | -------------------------------------------------------------------------------
14 |
15 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
16 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
17 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
22 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
23 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 |
26 | =============================================================================*/
27 |
28 | #ifndef AVT_VMBAPI_BASICLOCKABLE
29 | #define AVT_VMBAPI_BASICLOCKABLE
30 |
31 | #include
32 | #include
33 | #include
34 |
35 | namespace AVT {
36 | namespace VmbAPI {
37 |
38 | class BasicLockable
39 | {
40 | public:
41 | IMEXPORT BasicLockable();
42 | IMEXPORT BasicLockable( MutexPtr pMutex );
43 |
44 | IMEXPORT virtual ~BasicLockable();
45 |
46 | MutexPtr& GetMutex();
47 | const MutexPtr& GetMutex() const;
48 |
49 | void Lock()
50 | {
51 | SP_ACCESS(m_pMutex)->Lock();
52 | }
53 | void Unlock()
54 | {
55 | SP_ACCESS(m_pMutex)->Unlock();
56 | }
57 | private:
58 | MutexPtr m_pMutex;
59 | };
60 |
61 | }} //namespace AVT::VmbAPI
62 |
63 | #endif
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/Semaphore.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: Semaphore.h
10 |
11 | Description: Definition of an semaphore class.
12 | Intended for use in the implementation of Vimba CPP API.
13 |
14 | -------------------------------------------------------------------------------
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
17 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
18 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
24 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 | =============================================================================*/
28 |
29 | #ifndef AVT_VMBAPI_SEMAPHORE
30 | #define AVT_VMBAPI_SEMAPHORE
31 |
32 | #include
33 |
34 | #ifdef WIN32
35 | #include
36 | #else
37 | #include
38 | #endif
39 |
40 | namespace AVT {
41 | namespace VmbAPI {
42 |
43 | class Semaphore
44 | {
45 | public:
46 | Semaphore( int nInit = 0, int nMax = 1 );
47 | ~Semaphore();
48 |
49 | void Acquire();
50 | void Release();
51 |
52 | private:
53 | // No copy ctor
54 | Semaphore( const Semaphore &rSemaphore );
55 | // No assignment
56 | Semaphore& operator=( const Semaphore& );
57 |
58 | #ifdef WIN32
59 | HANDLE m_hSemaphore;
60 | #else
61 | sem_t m_Semaphore;
62 | #endif
63 | };
64 |
65 | }} //namespace AVT::VmbAPI
66 |
67 | #endif //AVT_VMBAPI_MUTEX
68 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/StringFeature.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: StringFeature.h
10 |
11 | Description: Definition of class AVT::VmbAPI::StringFeature.
12 | Intended for use in the implementation of Vimba CPP API.
13 |
14 | -------------------------------------------------------------------------------
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
17 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
18 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
24 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 | =============================================================================*/
28 |
29 | #ifndef AVT_VMBAPI_STRINGFEATURE_H
30 | #define AVT_VMBAPI_STRINGFEATURE_H
31 |
32 | #include
33 | #include
34 | #include
35 | #include
36 |
37 | namespace AVT {
38 | namespace VmbAPI {
39 |
40 | class StringFeature : public BaseFeature
41 | {
42 | public:
43 | StringFeature( const VmbFeatureInfo_t *featureInfo, FeatureContainer* const pFeatureContainer );
44 |
45 | IMEXPORT virtual VmbErrorType SetValue( const char *pValue );
46 |
47 | private:
48 | // Array functions to pass data across DLL boundaries
49 | IMEXPORT virtual VmbErrorType GetValue( char * const pValue, VmbUint32_t &length ) const;
50 | };
51 |
52 | }} // namespace AVT::VmbAPI
53 |
54 | #endif
55 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/RawFeature.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: RawFeature.h
10 |
11 | Description: Definition of class AVT::VmbAPI::RawFeature.
12 | Intended for use in the implementation of Vimba CPP API.
13 |
14 | -------------------------------------------------------------------------------
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
17 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
18 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
24 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 | =============================================================================*/
28 |
29 | #ifndef AVT_VMBAPI_RAWFEATURE_H
30 | #define AVT_VMBAPI_RAWFEATURE_H
31 |
32 | #include
33 | #include
34 | #include
35 | #include
36 |
37 | namespace AVT {
38 | namespace VmbAPI {
39 |
40 | class RawFeature : public BaseFeature
41 | {
42 | public:
43 | RawFeature( const VmbFeatureInfo_t *featureInfo, FeatureContainer *pFeatureContainer );
44 |
45 | private:
46 | // Array functions to pass data across DLL boundaries
47 | IMEXPORT virtual VmbErrorType GetValue( VmbUchar_t *pValue, VmbUint32_t &size, VmbUint32_t &sizeFilled ) const;
48 | IMEXPORT virtual VmbErrorType SetValue( const VmbUchar_t *pValue, VmbUint32_t size );
49 | };
50 |
51 | }} // namespace AVT::VmbAPI
52 |
53 | #endif
54 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/Condition.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: Condition.h
10 |
11 | Description: Definition of a condition class.
12 | Intended for use in the implementation of Vimba CPP API.
13 |
14 | -------------------------------------------------------------------------------
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
17 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
18 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
24 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 | =============================================================================*/
28 |
29 | #ifndef AVT_VMBAPI_CONDITION_H
30 | #define AVT_VMBAPI_CONDITION_H
31 |
32 | #include
33 | #include
34 | #include
35 | #include
36 |
37 | namespace AVT {
38 | namespace VmbAPI {
39 |
40 | class Condition
41 | {
42 | private:
43 | unsigned long m_nReleaseNumber;
44 | unsigned long m_nWaiterNumber;
45 | bool m_bLocked;
46 | SP_DECL( Semaphore ) m_Semaphore; // A binary semaphore (non recursive mutex)
47 |
48 | public:
49 | Condition();
50 |
51 | void Wait( const BasicLockable &rLockable );
52 | void Wait( const MutexPtr &rMutex );
53 |
54 | void Signal( bool bSingle = false );
55 | };
56 |
57 | }} // namespace AVT::VmbAPI
58 |
59 | #endif //CONDITION_H
--------------------------------------------------------------------------------
/include/VimbaCPP/Include/UserLoggerDefines.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: UserLoggerDefines.h
10 |
11 | Description: Definition of macros used for different logging methods.
12 |
13 | -------------------------------------------------------------------------------
14 |
15 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
16 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
17 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
22 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
23 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 |
26 | =============================================================================*/
27 |
28 | #ifndef AVT_VMBAPI_USERLOGGERDEFINES_H
29 | #define AVT_VMBAPI_USERLOGGERDEFINES_H
30 |
31 | //
32 | // To use your own logger implementation add the define USER_LOGGER to your project / compiler settings and complete this header file.
33 | //
34 |
35 | // Add all your required logger implementation headers here.
36 | // HINT: #include is an example and can be safely removed.
37 | #include
38 |
39 | namespace AVT {
40 | namespace VmbAPI {
41 |
42 | #define LOGGER_DECL FileLogger
43 | #define LOGGER_DEF FileLogger( "VimbaCPP.log", true )
44 | #define LOGGER_LOG( logger, loggingInfo ) if ( NULL != (logger) ) (logger)->Log( loggingInfo );
45 |
46 |
47 | // These are all uses of LOGGER_DECL logger declarations
48 | typedef LOGGER_DECL* Logger;
49 |
50 | }} // namespace AVT::VmbAPI
51 |
52 | #endif
53 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/BoolFeature.cpp:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: BoolFeature.cpp
10 |
11 | Description: Implementation of class AVT::VmbAPI::BoolFeature.
12 | Intended for use in the implementation of Vimba CPP API.
13 |
14 | -------------------------------------------------------------------------------
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
17 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
18 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
24 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 | =============================================================================*/
28 |
29 | #include
30 |
31 | namespace AVT {
32 | namespace VmbAPI {
33 |
34 | BoolFeature::BoolFeature( const VmbFeatureInfo_t *featureInfo, FeatureContainer* const pFeatureContainer )
35 | : BaseFeature( featureInfo, pFeatureContainer )
36 | {}
37 |
38 | VmbErrorType BoolFeature::GetValue( bool &rbValue ) const
39 | {
40 | if ( NULL == m_pFeatureContainer )
41 | {
42 | return VmbErrorDeviceNotOpen;
43 | }
44 |
45 | return (VmbErrorType)VmbFeatureBoolGet( m_pFeatureContainer->GetHandle(), m_featureInfo.name.c_str(), &rbValue );
46 | }
47 |
48 | VmbErrorType BoolFeature::SetValue( bool bValue )
49 | {
50 | if ( NULL == m_pFeatureContainer )
51 | {
52 | return VmbErrorDeviceNotOpen;
53 | }
54 |
55 | return (VmbErrorType)VmbFeatureBoolSet( m_pFeatureContainer->GetHandle(), m_featureInfo.name.c_str(), bValue );
56 | }
57 |
58 | }} // namespace AVT::VmbAPI
59 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/CommandFeature.cpp:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: CommandFeature.cpp
10 |
11 | Description: Implementation of class AVT::VmbAPI::CommandFeature.
12 | Intended for use in the implementation of Vimba CPP API.
13 |
14 | -------------------------------------------------------------------------------
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
17 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
18 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
24 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 | =============================================================================*/
28 |
29 | #include
30 |
31 | namespace AVT {
32 | namespace VmbAPI {
33 |
34 | CommandFeature::CommandFeature( const VmbFeatureInfo_t *featureInfo, FeatureContainer *pFeatureContainer )
35 | :BaseFeature( featureInfo, pFeatureContainer )
36 | {
37 | }
38 |
39 | VmbErrorType CommandFeature::RunCommand()
40 | {
41 | if ( NULL == m_pFeatureContainer )
42 | {
43 | return VmbErrorDeviceNotOpen;
44 | }
45 |
46 | return (VmbErrorType)VmbFeatureCommandRun( m_pFeatureContainer->GetHandle(), m_featureInfo.name.c_str() );
47 | }
48 |
49 | VmbErrorType CommandFeature::IsCommandDone( bool &rbIsDone ) const
50 | {
51 | if ( NULL == m_pFeatureContainer )
52 | {
53 | return VmbErrorDeviceNotOpen;
54 | }
55 |
56 | return (VmbErrorType)VmbFeatureCommandIsDone( m_pFeatureContainer->GetHandle(), m_featureInfo.name.c_str(), &rbIsDone );
57 | }
58 |
59 |
60 | }} // namespace AVT::VmbAPI
61 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/FloatFeature.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: FloatFeature.h
10 |
11 | Description: Definition of class AVT::VmbAPI::FloatFeature.
12 | Intended for use in the implementation of Vimba CPP API.
13 |
14 | -------------------------------------------------------------------------------
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
17 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
18 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
24 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 | =============================================================================*/
28 |
29 | #ifndef AVT_VMBAPI_FLOATFEATURE_H
30 | #define AVT_VMBAPI_FLOATFEATURE_H
31 |
32 | #include
33 | #include
34 | #include
35 | #include
36 |
37 | namespace AVT {
38 | namespace VmbAPI {
39 |
40 | class FloatFeature : public BaseFeature
41 | {
42 | public:
43 | FloatFeature( const VmbFeatureInfo_t *featureInfo, FeatureContainer* const pFeatureContainer );
44 |
45 | IMEXPORT virtual VmbErrorType GetValue( double &value ) const;
46 |
47 | IMEXPORT virtual VmbErrorType SetValue( const double &rfValue );
48 |
49 | IMEXPORT virtual VmbErrorType GetRange( double &minimum, double &maximum ) const;
50 |
51 | IMEXPORT virtual VmbErrorType HasIncrement( VmbBool_t &incrementSupported) const;
52 |
53 | IMEXPORT virtual VmbErrorType GetIncrement( double &increment ) const;
54 | };
55 |
56 | }} // namespace AVT::VmbAPI
57 |
58 | #endif
59 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/IntFeature.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: IntFeature.h
10 |
11 | Description: Definition of class AVT::VmbAPI::IntFeature.
12 | Intended for use in the implementation of Vimba CPP API.
13 |
14 | -------------------------------------------------------------------------------
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
17 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
18 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
24 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 | =============================================================================*/
28 |
29 | #ifndef AVT_VMBAPI_INTFEATURE_H
30 | #define AVT_VMBAPI_INTFEATURE_H
31 |
32 | #include
33 | #include
34 | #include
35 | #include
36 |
37 | namespace AVT {
38 | namespace VmbAPI {
39 |
40 | class IntFeature : public BaseFeature
41 | {
42 | public:
43 | IntFeature( const VmbFeatureInfo_t *featureInfo, FeatureContainer* const pFeatureContainer );
44 |
45 | IMEXPORT virtual VmbErrorType GetValue( VmbInt64_t &value ) const;
46 |
47 | IMEXPORT virtual VmbErrorType SetValue( const VmbInt64_t &value );
48 |
49 | IMEXPORT virtual VmbErrorType GetRange( VmbInt64_t &minimum, VmbInt64_t &maximum ) const;
50 |
51 | IMEXPORT virtual VmbErrorType HasIncrement( VmbBool_t &incrementSupported) const;
52 |
53 | IMEXPORT virtual VmbErrorType GetIncrement( VmbInt64_t &increment ) const;
54 | };
55 |
56 | }} // namespace AVT::VmbAPI
57 |
58 | #endif
59 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/FrameHandler.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: FrameHandler.h
10 |
11 | Description: Definition of class AVT::VmbAPI::FrameHandler.
12 |
13 | -------------------------------------------------------------------------------
14 |
15 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
16 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
17 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
22 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
23 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 |
26 | =============================================================================*/
27 |
28 | #ifndef AVT_VMBAPI_FRAMEHANDLER_H
29 | #define AVT_VMBAPI_FRAMEHANDLER_H
30 |
31 | #include
32 |
33 | #include "VimbaC/Include/VmbCommonTypes.h"
34 | #include "VimbaCPP/Include/BasicLockable.h"
35 | #include "VimbaCPP/Include/SharedPointerDefines.h"
36 | #include "VimbaCPP/Include/Frame.h"
37 | #include "VimbaCPP/Include/IFrameObserver.h"
38 | #include "VimbaCPP/Include/Mutex.h"
39 |
40 | namespace AVT {
41 | namespace VmbAPI {
42 |
43 | enum { FRAME_HDL=0, };
44 |
45 | class FrameHandler
46 | {
47 | public:
48 | static void VMB_CALL FrameDoneCallback( const VmbHandle_t handle, VmbFrame_t *pFrame );
49 |
50 | FrameHandler( FramePtr pFrame, IFrameObserverPtr pFrameObserver );
51 |
52 | FramePtr GetFrame() const;
53 | MutexPtr& Mutex() { return m_pMutex; }
54 | private:
55 | IFrameObserverPtr m_pObserver;
56 | FramePtr m_pFrame;
57 | MutexPtr m_pMutex;
58 | };
59 |
60 | typedef std::vector FrameHandlerPtrVector;
61 |
62 | }} // namespace AVT::VmbAPI
63 |
64 | #endif
65 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Include/LoggerDefines.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: LoggerDefines.h
10 |
11 | Description: Definition of macros for logging.
12 |
13 | -------------------------------------------------------------------------------
14 |
15 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
16 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
17 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
22 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
23 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 |
26 | =============================================================================*/
27 |
28 | #ifndef AVT_VMBAPI_LOGGERDEFINES_H
29 | #define AVT_VMBAPI_LOGGERDEFINES_H
30 |
31 | #include
32 |
33 | #ifndef USER_LOGGER
34 |
35 | #include
36 |
37 | namespace AVT {
38 | namespace VmbAPI {
39 |
40 | #define LOGGER_DECL FileLogger
41 | #define LOGGER_DEF FileLogger( "VimbaCPP.log", true )
42 | #define LOGGER_LOG( logger, loggingInfo ) if ( NULL != (logger) ) (logger)->Log( loggingInfo );
43 |
44 |
45 | // These are all uses of LOGGER_DECL logger declarations
46 | typedef LOGGER_DECL* Logger;
47 |
48 | }}
49 |
50 | #else
51 | #include
52 | #endif
53 |
54 | #include
55 |
56 | #define LOG_FREE_TEXT( txt ) std::string strExc( txt );\
57 | strExc.append( " in function: " );\
58 | strExc.append( __FUNCTION__ );\
59 | LOGGER_LOG( VimbaSystem::GetInstance().GetLogger(), strExc );
60 |
61 | #endif
62 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/DefaultCameraFactory.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: DefaultCameraFactory.h
10 |
11 | Description: Definition of class AVT::VmbAPI::DefaultCameraFactory used to
12 | create new Camera objects if no user defined camera factory
13 | class was provided.
14 | Intended for use in the implementation of Vimba CPP API.
15 |
16 | -------------------------------------------------------------------------------
17 |
18 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
19 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
20 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
22 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
25 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
26 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 |
29 | =============================================================================*/
30 |
31 | #ifndef AVT_VMBAPI_DEFAULTCAMERAFACTORY_H
32 | #define AVT_VMBAPI_DEFAULTCAMERAFACTORY_H
33 |
34 | #include
35 |
36 | namespace AVT {
37 | namespace VmbAPI {
38 |
39 | class DefaultCameraFactory : public virtual ICameraFactory
40 | {
41 | public:
42 | virtual CameraPtr CreateCamera( const char *pCameraID,
43 | const char *pCameraName,
44 | const char *pCameraModel,
45 | const char *pCameraSerialNumber,
46 | const char *pInterfaceID,
47 | VmbInterfaceType interfaceType,
48 | const char *pInterfaceName,
49 | const char *pInterfaceSerialNumber,
50 | VmbAccessModeType interfacePermittedAccess );
51 | };
52 |
53 | }} // namespace AVT::VmbAPI
54 |
55 | #endif
56 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/DefaultCameraFactory.cpp:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: DefaultCameraFactory.cpp
10 |
11 | Description: Implementation of class AVT::VmbAPI::DefaultCameraFactory used to
12 | create new Camera objects if no user defined camera factory
13 | class was provided.
14 | Intended for use in the implementation of Vimba CPP API.
15 |
16 | -------------------------------------------------------------------------------
17 |
18 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
19 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
20 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
22 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
25 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
26 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 |
29 | =============================================================================*/
30 |
31 | #include
32 |
33 | namespace AVT {
34 | namespace VmbAPI {
35 |
36 | CameraPtr DefaultCameraFactory::CreateCamera( const char *pCameraID,
37 | const char *pCameraName,
38 | const char *pCameraModel,
39 | const char *pCameraSerialNumber,
40 | const char *pInterfaceID,
41 | VmbInterfaceType eInterfaceType,
42 | const char * /*pInterfaceName*/,
43 | const char * /*pInterfaceSerialNumber*/,
44 | VmbAccessModeType /*interfacePermittedAccess*/ )
45 | {
46 | return CameraPtr( new Camera( pCameraID, pCameraName, pCameraModel, pCameraSerialNumber, pInterfaceID, eInterfaceType ));
47 | }
48 |
49 | }} // namespace AVT::VmbAPI
50 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/BoolFeature.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: BoolFeature.h
10 |
11 | Description: Definition of class AVT::VmbAPI::BoolFeature.
12 | Intended for use in the implementation of Vimba CPP API.
13 |
14 | -------------------------------------------------------------------------------
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
17 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
18 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
24 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 | =============================================================================*/
28 |
29 | #ifndef AVT_VMBAPI_BOOLFEATURE_H
30 | #define AVT_VMBAPI_BOOLFEATURE_H
31 |
32 | #include
33 | #include
34 | #include
35 | #include
36 |
37 | namespace AVT {
38 | namespace VmbAPI {
39 |
40 | class BoolFeature : public BaseFeature
41 | {
42 | public:
43 | BoolFeature( const VmbFeatureInfo_t *featureInfo, FeatureContainer* const pFeatureContainer );
44 |
45 | //
46 | // Method: GetValue()
47 | // Purpose: Get the value of a boolean feature
48 | // Parameters:
49 | // [out] bool& value bool value
50 | // Returns:
51 | // - VmbErrorSuccess: If no error
52 | // - VmbErrorWrongType: Feature is not a bool feature
53 | // - VmbInternalError: Value could not get queried
54 | //
55 | IMEXPORT virtual VmbErrorType GetValue( bool &value ) const;
56 |
57 | //
58 | // Method: SetValue()
59 | // Purpose: Set the value of a boolean feature
60 | //
61 | IMEXPORT virtual VmbErrorType SetValue( bool value );
62 | };
63 |
64 | }} // namespace AVT::VmbAPI
65 |
66 | #endif
67 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Include/IFeatureObserver.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: IFeatureObserver.h
10 |
11 | Description: Definition of interface AVT::VmbAPI::IFeatureObserver.
12 |
13 | -------------------------------------------------------------------------------
14 |
15 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
16 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
17 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
22 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
23 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 |
26 | =============================================================================*/
27 |
28 | #ifndef AVT_VMBAPI_IFEATUREOBSERVER_H
29 | #define AVT_VMBAPI_IFEATUREOBSERVER_H
30 |
31 | #include
32 | #include
33 | #include
34 | #include
35 |
36 | namespace AVT {
37 | namespace VmbAPI {
38 |
39 | class IFeatureObserver
40 | {
41 | public:
42 | //
43 | // Method: FeatureChanged()
44 | //
45 | // Purpose: The event handler function that gets called whenever
46 | // a feature has changed
47 | //
48 | // Parameters:
49 | //
50 | // [in] const FeaturePtr& pFeature The frame that has changed
51 | //
52 | IMEXPORT virtual void FeatureChanged( const FeaturePtr &pFeature ) = 0;
53 |
54 | //
55 | // Method: IFeatureObserver destructor
56 | //
57 | // Purpose: Destroys an instance of class IFeatureObserver
58 | //
59 | IMEXPORT virtual ~IFeatureObserver() {}
60 |
61 | protected:
62 | IMEXPORT IFeatureObserver() {}
63 | IMEXPORT IFeatureObserver( const IFeatureObserver& ) { /* No copy ctor */ }
64 | };
65 | typedef std::vector IFeatureObserverPtrVector;
66 |
67 | }} // namespace AVT::VmbAPI
68 |
69 | #endif
70 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Include/FeatureContainer.hpp:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: FeatureContainer.hpp
10 |
11 | Description: Inline wrapper functions for class
12 | AVT::VmbAPI::FeatureContainer.
13 |
14 | -------------------------------------------------------------------------------
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
17 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
18 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
24 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 | =============================================================================*/
28 |
29 | #ifndef AVT_VMBAPI_FEATURECONTAINER_HPP
30 | #define AVT_VMBAPI_FEATURECONTAINER_HPP
31 |
32 | //
33 | // Inline wrapper functions that allocate memory for STL objects in the application's context
34 | // and to pass data across DLL boundaries using arrays
35 | //
36 |
37 | // HINT: Once queried this information remains static throughout the object's lifetime
38 | inline VmbErrorType FeatureContainer::GetFeatures( FeaturePtrVector &features )
39 | {
40 | VmbErrorType res;
41 | VmbUint32_t nSize;
42 |
43 | res = GetFeatures( NULL, nSize );
44 | if ( VmbErrorSuccess == res )
45 | {
46 | if( 0 != nSize)
47 | {
48 | try
49 | {
50 | FeaturePtrVector tmpFeatures( nSize );
51 | res = GetFeatures( &tmpFeatures[0], nSize );
52 | if( VmbErrorSuccess == res)
53 | {
54 | features.swap( tmpFeatures );
55 | }
56 | }
57 | catch(...)
58 | {
59 | return VmbErrorResources;
60 | }
61 | }
62 | else
63 | {
64 | features.clear();
65 | }
66 | }
67 |
68 | return res;
69 | }
70 |
71 | #endif
72 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Include/IFrameObserver.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: IFrameObserver.h
10 |
11 | Description: Definition of interface AVT::VmbAPI::IFrameObserver.
12 |
13 | -------------------------------------------------------------------------------
14 |
15 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
16 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
17 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
22 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
23 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 |
26 | =============================================================================*/
27 |
28 | #ifndef AVT_VMBAPI_IFRAMEOBSERVER_H
29 | #define AVT_VMBAPI_IFRAMEOBSERVER_H
30 |
31 | #include
32 | #include
33 | #include
34 |
35 | namespace AVT {
36 | namespace VmbAPI {
37 |
38 | class IFrameObserver
39 | {
40 | public:
41 | //
42 | // Method: FrameReceived()
43 | //
44 | // Purpose: The event handler function that gets called whenever
45 | // a new frame is received
46 | //
47 | // Parameters:
48 | //
49 | // [in] const FramePtr pFrame The frame that was received
50 | //
51 | IMEXPORT virtual void FrameReceived( const FramePtr pFrame ) = 0;
52 |
53 | //
54 | // Method: IFrameObserver destructor
55 | //
56 | // Purpose: Destroys an instance of class IFrameObserver
57 | //
58 | IMEXPORT virtual ~IFrameObserver() {}
59 |
60 | protected:
61 | CameraPtr m_pCamera;
62 | IMEXPORT IFrameObserver( CameraPtr pCamera ) : m_pCamera( pCamera ) {}
63 |
64 | IMEXPORT IFrameObserver( IFrameObserver& ) { /* No copy ctor */ }
65 |
66 | private:
67 | IFrameObserver() { /* No default ctor */ }
68 | };
69 |
70 | }} // namespace AVT::VmbAPI
71 |
72 | #endif
73 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/StringFeature.cpp:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: StringFeature.cpp
10 |
11 | Description: Implementation of class AVT::VmbAPI::StringFeature.
12 | Intended for use in the implementation of Vimba CPP API.
13 |
14 | -------------------------------------------------------------------------------
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
17 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
18 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
24 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 | =============================================================================*/
28 |
29 | #include
30 |
31 | namespace AVT {
32 | namespace VmbAPI {
33 |
34 | StringFeature::StringFeature( const VmbFeatureInfo_t *featureInfo, FeatureContainer* const pFeatureContainer )
35 | : BaseFeature( featureInfo, pFeatureContainer )
36 | {
37 | }
38 |
39 | VmbErrorType StringFeature::GetValue( char * const pStrValue, VmbUint32_t &rnLength ) const
40 | {
41 | if ( NULL == m_pFeatureContainer )
42 | {
43 | return VmbErrorDeviceNotOpen;
44 | }
45 |
46 | if ( NULL == pStrValue )
47 | {
48 | return (VmbErrorType)VmbFeatureStringMaxlengthQuery( m_pFeatureContainer->GetHandle(), m_featureInfo.name.c_str(), &rnLength );
49 | }
50 | else
51 | {
52 | return (VmbErrorType)VmbFeatureStringGet( m_pFeatureContainer->GetHandle(), m_featureInfo.name.c_str(), pStrValue, rnLength, &rnLength );
53 | }
54 | }
55 |
56 | VmbErrorType StringFeature::SetValue( const char *pStrValue )
57 | {
58 | if ( NULL == m_pFeatureContainer )
59 | {
60 | return VmbErrorDeviceNotOpen;
61 | }
62 |
63 | return (VmbErrorType)VmbFeatureStringSet( m_pFeatureContainer->GetHandle(), m_featureInfo.name.c_str(), pStrValue );
64 | }
65 |
66 |
67 | }} // namespace AVT::VmbAPI
68 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/Mutex.cpp:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: Mutex.cpp
10 |
11 | Description: Implementation of class AVT::VmbAPI::Mutex.
12 |
13 | -------------------------------------------------------------------------------
14 |
15 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
16 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
17 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
22 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
23 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 |
26 | =============================================================================*/
27 |
28 | #include
29 |
30 | #include
31 | #include
32 |
33 | namespace AVT {
34 | namespace VmbAPI {
35 |
36 | Mutex::Mutex( bool bInitLock )
37 | #ifdef WIN32
38 | : m_hMutex( NULL )
39 | #endif
40 | {
41 | #ifdef WIN32
42 | m_hMutex = CreateMutex( NULL, FALSE, NULL );
43 | if( NULL == m_hMutex )
44 | {
45 | LOG_FREE_TEXT( "Could not create mutex." );
46 | throw std::bad_alloc();
47 | }
48 | #else
49 | pthread_mutex_init(&m_Mutex, NULL);
50 | #endif
51 |
52 | if( true == bInitLock )
53 | {
54 | Lock();
55 | }
56 | }
57 |
58 | Mutex::~Mutex()
59 | {
60 | #ifdef WIN32
61 | CloseHandle( m_hMutex );
62 | #else
63 | pthread_mutex_destroy(&m_Mutex);
64 | #endif
65 | }
66 |
67 | Mutex::Mutex( const Mutex& )
68 | {
69 | // No copy ctor
70 | }
71 |
72 | Mutex& Mutex::operator=( const Mutex& )
73 | {
74 | // No assignment operator
75 | return *this;
76 | }
77 |
78 | void Mutex::Lock()
79 | {
80 | #ifdef WIN32
81 | WaitForSingleObject( m_hMutex, INFINITE );
82 | #else
83 | pthread_mutex_lock( &m_Mutex );
84 | #endif
85 | }
86 |
87 | void Mutex::Unlock()
88 | {
89 | #ifdef WIN32
90 | ReleaseMutex( m_hMutex );
91 | #else
92 | pthread_mutex_unlock( &m_Mutex );
93 | #endif
94 | }
95 |
96 | }} //namespace AVT::VmbAPI
97 |
--------------------------------------------------------------------------------
/include/avt_vimba_camera/frame_observer.h:
--------------------------------------------------------------------------------
1 | /// Copyright (c) 2014,
2 | /// Systems, Robotics and Vision Group
3 | /// University of the Balearican Islands
4 | /// All rights reserved.
5 | ///
6 | /// Redistribution and use in source and binary forms, with or without
7 | /// modification, are permitted provided that the following conditions are met:
8 | /// * Redistributions of source code must retain the above copyright
9 | /// notice, this list of conditions and the following disclaimer.
10 | /// * Redistributions in binary form must reproduce the above copyright
11 | /// notice, this list of conditions and the following disclaimer in the
12 | /// documentation and/or other materials provided with the distribution.
13 | /// * All advertising materials mentioning features or use of this software
14 | /// must display the following acknowledgement:
15 | /// This product includes software developed by
16 | /// Systems, Robotics and Vision Group, Univ. of the Balearican Islands
17 | /// * Neither the name of Systems, Robotics and Vision Group, University of
18 | /// the Balearican Islands nor the names of its contributors may be used
19 | /// to endorse or promote products derived from this software without
20 | /// specific prior written permission.
21 | ///
22 | /// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23 | /// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 | /// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 | /// ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
26 | /// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
27 | /// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28 | /// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
29 | /// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 | /// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
31 | /// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 |
33 | #ifndef FRAME_OBSERVER_H
34 | #define FRAME_OBSERVER_H
35 |
36 | #include
37 |
38 | #include
39 |
40 | using namespace AVT::VmbAPI;
41 |
42 | class FrameObserver : virtual public IFrameObserver
43 | {
44 | public:
45 | typedef std::function Callback;
46 |
47 | // We pass the camera that will deliver the frames to the constructor
48 | FrameObserver(CameraPtr cam_ptr, Callback callback);
49 |
50 | // Destructor
51 | ~FrameObserver(){};
52 |
53 | // This is our callback routine that will be executed on every received frame
54 | virtual void FrameReceived(const FramePtr vimba_frame_ptr);
55 |
56 | private:
57 | // Frame observer stores all FramePtr
58 | CameraPtr cam_ptr_;
59 | Callback callback_;
60 | };
61 |
62 | #endif
63 |
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/Semaphore.cpp:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: Semaphore.cpp
10 |
11 | Description: Implementation of an semaphore class.
12 | Intended for use in the implementation of Vimba CPP API.
13 |
14 | -------------------------------------------------------------------------------
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
17 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
18 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
24 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 | =============================================================================*/
28 |
29 | #include
30 |
31 | #include
32 | #include
33 |
34 | namespace AVT {
35 | namespace VmbAPI {
36 |
37 | Semaphore::Semaphore( int nInit, int nMax )
38 | #ifdef WIN32
39 | : m_hSemaphore( NULL )
40 | #endif
41 | {
42 | #ifdef WIN32
43 | m_hSemaphore = CreateSemaphore( NULL, nInit, nMax, NULL );
44 | if( NULL == m_hSemaphore )
45 | {
46 | LOG_FREE_TEXT( "Could not create semaphore." );
47 | throw std::bad_alloc();
48 | }
49 | #else
50 | sem_init( &m_Semaphore, false, (unsigned int)nInit );
51 | #endif
52 | }
53 |
54 | Semaphore::Semaphore( const Semaphore& )
55 | {
56 | // No compiler generated copy ctor
57 | }
58 |
59 | Semaphore& Semaphore::operator=( const Semaphore& )
60 | {
61 | // No assignment operator
62 | return *this;
63 | }
64 |
65 | Semaphore::~Semaphore()
66 | {
67 | #ifdef WIN32
68 | CloseHandle( m_hSemaphore );
69 | #else
70 | sem_destroy( &m_Semaphore );
71 | #endif
72 | }
73 |
74 | void Semaphore::Acquire()
75 | {
76 | #ifdef WIN32
77 | WaitForSingleObject( m_hSemaphore, INFINITE );
78 | #else
79 | sem_wait( &m_Semaphore );
80 | #endif
81 | }
82 |
83 | void Semaphore::Release()
84 | {
85 | #ifdef WIN32
86 | ReleaseSemaphore( m_hSemaphore, 1, NULL );
87 | #else
88 | sem_post( &m_Semaphore );
89 | #endif
90 | }
91 |
92 | } //namespace VmbAPI
93 | } //namespace AVT
--------------------------------------------------------------------------------
/include/VimbaCPP/Include/VimbaCPPCommon.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 - 2017 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: VimbaCPPCommon.h
10 |
11 | Description: Common type definitions used in Vimba CPP API.
12 |
13 | -------------------------------------------------------------------------------
14 |
15 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
16 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
17 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
22 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
23 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 |
26 | =============================================================================*/
27 |
28 | #ifndef AVT_VMBAPI_CPPCOMMON_H
29 | #define AVT_VMBAPI_CPPCOMMON_H
30 |
31 | #if defined (_WIN32)
32 | #if defined AVT_VMBAPI_CPP_EXPORTS // DLL exports
33 | #define IMEXPORT __declspec(dllexport)
34 | #elif defined AVT_VMBAPI_CPP_LIB // static LIB
35 | #define IMEXPORT
36 | #else // import
37 | #define IMEXPORT __declspec(dllimport)
38 | #endif
39 | #elif defined (__GNUC__) && (__GNUC__ >= 4) && defined (__ELF__)
40 | #define IMEXPORT
41 | #elif defined (__APPLE__)
42 | #define IMEXPORT
43 | #else
44 | #error Unknown platform, file needs adaption
45 | #endif
46 |
47 | #include
48 | #include
49 | #include "VimbaC/Include/VmbCommonTypes.h"
50 |
51 | namespace AVT {
52 | namespace VmbAPI {
53 |
54 | enum UpdateTriggerType
55 | {
56 | UpdateTriggerPluggedIn = 0, // A new camera was discovered by Vimba
57 | UpdateTriggerPluggedOut = 1, // A camera has disappeared from the bus
58 | UpdateTriggerOpenStateChanged = 3 // The possible opening mode of a camera has changed (e.g., because it was opened by another application)
59 | };
60 |
61 | typedef std::vector Uint64Vector;
62 | typedef std::vector Int64Vector;
63 | typedef std::vector UcharVector;
64 | typedef std::vector StringVector;
65 | class EnumEntry;
66 | typedef std::vector EnumEntryVector;
67 |
68 | }} // AVT::VmbAPI
69 |
70 | #endif
--------------------------------------------------------------------------------
/include/VimbaCPP/Source/ConditionHelper.h:
--------------------------------------------------------------------------------
1 | /*=============================================================================
2 | Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 |
4 | Redistribution of this file, in original or modified form, without
5 | prior written consent of Allied Vision Technologies is prohibited.
6 |
7 | -------------------------------------------------------------------------------
8 |
9 | File: ConditionHelper.h
10 |
11 | Description: Definition of helper class for conditions.
12 | Intended for use in the implementation of Vimba CPP API.
13 |
14 | -------------------------------------------------------------------------------
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
17 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
18 | NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
24 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 | =============================================================================*/
28 |
29 | #ifndef AVT_VMBAPI_CONDITIONHELPER_H
30 | #define AVT_VMBAPI_CONDITIONHELPER_H
31 |
32 | #include
33 |
34 | #include