Point Cloud Library (PCL) 1.13.0
Loading...
Searching...
No Matches
openni2_device_manager.h
1/*
2 * Copyright (c) 2013, Willow Garage, Inc.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
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 * * Neither the name of the Willow Garage, Inc. nor the names of its
14 * contributors may be used to endorse or promote products derived from
15 * this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 * POSSIBILITY OF SUCH DAMAGE.
28 *
29 * Author: Julius Kammerl (jkammerl@willowgarage.com)
30 */
31
32#pragma once
33
34#include <pcl/memory.h>
35#include <pcl/pcl_exports.h>
36#include <pcl/io/openni2/openni2_device.h>
37#include <pcl/io/openni2/openni2_device_info.h>
38
39#include <memory>
40#include <ostream>
41#include <string>
42#include <vector>
43
44namespace pcl
45{
46 namespace io
47 {
48 namespace openni2
49 {
50
51 class OpenNI2DeviceListener;
52
53 class PCL_EXPORTS OpenNI2DeviceManager
54 {
55 public:
58
59 // This may not actually be a singleton yet. Need to work out cross-dll incerface.
60 // Based on http://stackoverflow.com/a/13431981/1789618
61 static shared_ptr<OpenNI2DeviceManager> getInstance ()
62 {
63 static auto instance = pcl::make_shared<OpenNI2DeviceManager>();
64 return (instance);
65 }
66
67 std::shared_ptr<std::vector<OpenNI2DeviceInfo>>
69
70 std::shared_ptr<std::vector<std::string>>
72
73 std::size_t
75
78
80 getDevice (const std::string& device_URI);
81
83 getDeviceByIndex (int index) const;
84
86 getFileDevice (const std::string& path);
87
88 protected:
89 std::shared_ptr<OpenNI2DeviceListener> device_listener_;
90 };
91
92 std::ostream&
93 operator<< (std::ostream& stream, const OpenNI2DeviceManager& device_manager);
94
95 } // namespace
96 }
97}
shared_ptr< OpenNI2Device > Ptr
OpenNI2Device::Ptr getDevice(const std::string &device_URI)
std::size_t getNumOfConnectedDevices() const
std::shared_ptr< std::vector< std::string > > getConnectedDeviceURIs() const
OpenNI2Device::Ptr getDeviceByIndex(int index) const
std::shared_ptr< OpenNI2DeviceListener > device_listener_
std::shared_ptr< std::vector< OpenNI2DeviceInfo > > getConnectedDeviceInfos() const
OpenNI2Device::Ptr getFileDevice(const std::string &path)
static shared_ptr< OpenNI2DeviceManager > getInstance()
Defines functions, macros and traits for allocating and using memory.
PCL_EXPORTS std::ostream & operator<<(std::ostream &stream, const OpenNI2Device &device)