OrbbecSDK2 2.0.2
OrbbecSDK2: New generation Software-Development-Kit for Orbbec 3D-Sensor devices
载入中...
搜索中...
未找到
OB2Context.hpp
浏览该文件的文档.
1#pragma once
2
3#include "OB2Types.hpp"
4#include "OB2Device.hpp"
5
6extern "C" {
7#include "h/ob2context.h"
8}
9
10#include <memory>
11
12namespace ob2 {
13
26class context {
27public:
45 ob2_status_t status;
46 m_context_handle = ob2_create_context_with_config(config_file_path.c_str(), &status);
48 }
49
61 virtual ~context() noexcept {
62 ob2_status_t status;
63 if(m_context_handle != nullptr) {
65 }
66 }
67
68public:
84 static ob2_version_t get_version() noexcept {
85 return ob2_get_version();
86 }
87
103 static ob2_version_t get_core_version() noexcept {
104 return ob2_get_core_version();
105 }
106
127 ob2_status_t status;
128 ob2_set_log_severity_threshold(logger_type, severity, &status);
130 }
131
150 static void set_log_output_directory(const std::string &directory) {
151 ob2_status_t status;
152 ob2_set_log_output_directory(directory.c_str(), &status);
154 }
155
156public:
177 virtual std::vector<ob2_device_installation_info_t> get_installed_device_info_list() {
178 ob2_status_t status;
181
182 std::vector<ob2_device_installation_info_t> device_info_list;
183 for(uint32_t index = 0; index < count; index++) {
184 auto device_info = ob2_context_get_installed_device_info(m_context_handle, index, &status);
186 device_info_list.push_back(device_info);
187 }
188 return device_info_list;
189 }
190
218 virtual std::shared_ptr<device> open_device(uint32_t index) {
219 ob2_status_t status;
220 auto device_handle = ob2_context_open_device(m_context_handle, index, &status);
222 return std::make_shared<device>(std::move(device_handle));
223 }
224
247 virtual std::shared_ptr<device> open_device_by_serial_number(const std::string &serial_number) {
248 ob2_status_t status;
249 auto device_handle = ob2_context_open_device_by_serial_number(m_context_handle, serial_number.c_str(), &status);
251 return std::make_shared<device>(std::move(device_handle));
252 }
253
280 virtual std::shared_ptr<device> open_device_by_url(const std::string &url) {
281 ob2_status_t status;
282 auto device_handle = ob2_context_open_device_by_url(m_context_handle, url.c_str(), &status);
284 return std::make_shared<device>(std::move(device_handle));
285 }
286
313 virtual std::shared_ptr<device> open_net_device(const std::string &address, uint16_t port = 8090) {
314 ob2_status_t status;
315 auto device_handle = ob2_context_open_net_device(m_context_handle, address.c_str(), port, &status);
317 return std::make_shared<device>(std::move(device_handle));
318 }
319
340
341 ob2_status_t status;
344 }
345
370
371 ob2_status_t status;
374 }
375
376protected:
377 static void device_installed_callback(ob2_device_installation_info_t device_info, void *user_data) {
378 auto ctx = (context *)user_data;
379 if(ctx->m_device_installed_callback != nullptr) {
380 ctx->m_device_installed_callback(device_info);
381 }
382 }
383
384 static void device_removed_callback(ob2_device_installation_info_t device_info, void *user_data) {
385 auto ctx = (context *)user_data;
386 if(ctx->m_device_removed_callback != nullptr) {
387 ctx->m_device_removed_callback(device_info);
388 }
389 }
390
391protected:
395};
396
397} // namespace ob2
#define CHECK_OB2_STATUS_ERROR_THROW(status)
用于将 C API 中的 ob2_status_t 转换成异常抛出
Definition: OB2Types.hpp:22
SDK context (上下文),用于 SDK 的生命周期管理,SDK 内部所有模块的加载及初始化,线程创建都依赖 context 的创建。
Definition: OB2Context.hpp:26
static void device_installed_callback(ob2_device_installation_info_t device_info, void *user_data)
Definition: OB2Context.hpp:377
virtual std::shared_ptr< device > open_device(uint32_t index)
通过索引号打开设备
Definition: OB2Context.hpp:218
static void set_log_output_directory(const std::string &directory)
设置日志输出文件目录
Definition: OB2Context.hpp:150
static ob2_version_t get_version() noexcept
获取 SDK 版本号
Definition: OB2Context.hpp:84
static void device_removed_callback(ob2_device_installation_info_t device_info, void *user_data)
Definition: OB2Context.hpp:384
device_info_cb m_device_removed_callback
Definition: OB2Context.hpp:393
virtual std::shared_ptr< device > open_device_by_serial_number(const std::string &serial_number)
通过序列号打开设备
Definition: OB2Context.hpp:247
virtual std::shared_ptr< device > open_net_device(const std::string &address, uint16_t port=8090)
打开网络设备
Definition: OB2Context.hpp:313
ob2_context_t m_context_handle
Definition: OB2Context.hpp:394
virtual ~context() noexcept
Context 析构函数
Definition: OB2Context.hpp:61
context(std::string config_file_path=OB2_DEFAULT_SDK_CONFIG_FILE_PATH)
context 构造函数
Definition: OB2Context.hpp:44
static void set_log_severity_threshold(ob2_logger_type_t logger_type, ob2_log_severity_t severity)
设置日志等级
Definition: OB2Context.hpp:126
device_info_cb m_device_installed_callback
Definition: OB2Context.hpp:392
virtual void set_device_removed_callback(device_info_cb cb)
设置设备移除(掉线)回调
Definition: OB2Context.hpp:368
virtual std::vector< ob2_device_installation_info_t > get_installed_device_info_list()
获取已安装的设备信息列表
Definition: OB2Context.hpp:177
virtual std::shared_ptr< device > open_device_by_url(const std::string &url)
通过 URL 打开设备
Definition: OB2Context.hpp:280
virtual void set_device_installed_callback(device_info_cb cb)
设置设备安装(上线)回调
Definition: OB2Context.hpp:338
static ob2_version_t get_core_version() noexcept
获取 SDK 核心版本号
Definition: OB2Context.hpp:103
std::function< void(const ob2_device_installation_info_t &)> device_info_cb
设备信息回调(主要用于设备安装和移除回调)
Definition: OB2Types.hpp:61
void ob2_set_log_output_directory(const char *directory, ob2_status_t *status)
设置日志输出文件目录
ob2_version_t ob2_get_core_version(void)
获取 SDK 核心版本号
void ob2_set_log_severity_threshold(ob2_logger_type_t logger_type, ob2_log_severity_t severity, ob2_status_t *status)
设置日志等级
ob2_version_t ob2_get_version(void)
获取 SDK 版本号
void ob2_release_context(ob2_context_t context_handle, ob2_status_t *status)
释放 context
ob2_context_t ob2_create_context_with_config(const char *config_file_path, ob2_status_t *status)
传入配置文件创建 context
void ob2_context_set_device_removed_callback(ob2_context_t context_handle, ob2_device_info_cb_t device_removed_cb, void *user_data, ob2_status_t *status)
设置设备移除(掉线)回调
ob2_device_t ob2_context_open_net_device(ob2_context_t context_handle, const char *address, uint32_t port, ob2_status_t *status)
打开网络设备
ob2_device_t ob2_context_open_device(ob2_context_t context_handle, uint32_t index, ob2_status_t *status)
通过索引号打开设备
ob2_device_installation_info_t ob2_context_get_installed_device_info(ob2_context_t context_handle, uint32_t index, ob2_status_t *status)
通过索引号获取安装设备信息
ob2_device_t ob2_context_open_device_by_url(ob2_context_t context_handle, const char *url, ob2_status_t *status)
通过 URL 打开设备
void ob2_context_set_device_installed_callback(ob2_context_t context_handle, ob2_device_info_cb_t device_installed_cb, void *user_data, ob2_status_t *status)
设置设备安装(上线)回调
ob2_device_t ob2_context_open_device_by_serial_number(ob2_context_t context_handle, const char *serial_number, ob2_status_t *status)
通过序列号打开设备
uint32_t ob2_context_get_installed_device_count(ob2_context_t context_handle, ob2_status_t *status)
获取已安装(上线)的设备数量
ob2_logger_type_t
Definition: ob2types.h:385
#define OB2_DEFAULT_SDK_CONFIG_FILE_PATH
默认 SDK 配置文件路径
Definition: ob2types.h:174
struct OB2ContextImpl * ob2_context_t
context 句柄定义
Definition: ob2types.h:19
ob2_log_severity_t
Definition: ob2types.h:365
设备安装信息,可以用于打开设备
Definition: ob2types.h:398
用户函数调用返回的状态结构体
Definition: ob2types.h:312
版本号
Definition: ob2types.h:350