70 dev.m_device_handle =
nullptr;
163 std::vector<ob2_camera_type_t> camera_list;
164 for(uint32_t index = 0; index < count; index++) {
167 camera_list.emplace_back(camera_type);
199 std::vector<ob2_camera_stream_profile_t> profile_list;
200 for(uint32_t index = 0; index < count; index++) {
203 profile_list.emplace_back(std::move(profile));
271 std::vector<ob2_camera_stream_profile_t> profile_list;
272 for(uint32_t index = 0; index < count; index++) {
275 profile_list.emplace_back(std::move(profile));
309 return std::make_shared<cameras_config>(std::move(cameras_config_handle));
344 cameras_config_handle = cam_config->get_handle();
386 cameras_config_handle = cam_config->get_handle();
501 virtual std::shared_ptr<capture>
get_capture(int32_t timeout_msec) {
505 if(
nullptr != capture_handle) {
506 return std::make_shared<capture>(std::move(capture_handle));
535 std::vector<ob2_imu_sensor_type_t> imu_sensor_list;
536 for(uint32_t index = 0; index < count; index++) {
538 imu_sensor_list.push_back(sensor_type);
540 return imu_sensor_list;
565 std::vector<ob2_accel_stream_profile_t> profile_list;
566 for(uint32_t index = 0; index < count; index++) {
569 profile_list.emplace_back(std::move(profile));
596 std::vector<ob2_gyro_stream_profile_t> profile_list;
597 for(uint32_t index = 0; index < count; index++) {
600 profile_list.emplace_back(std::move(profile));
626 return std::make_shared<imu_config>(std::move(imu_config_handle));
769 return std::make_shared<imu_sample>(std::move(imu_sample_handle));
905 std::vector<ob2_command_info_t> command_info_list;
906 for(uint32_t index = 0; index < count; index++) {
909 command_info_list.emplace_back(std::move(command_info));
912 return command_info_list;
1313 auto dev = (
device *)user_data;
1314 if(dev->m_firmware_update_state_cb !=
nullptr) {
1315 dev->m_firmware_update_state_cb(state, std::string(message), percent);
1320 auto dev = (
device *)user_data;
1321 if(dev->m_capture_cb !=
nullptr) {
1322 dev->m_capture_cb(std::make_shared<capture>(std::move(capture_handle)));
1327 auto dev = (
device *)user_data;
1328 if(dev->m_imu_sample_cb !=
nullptr) {
1329 dev->m_imu_sample_cb(std::make_shared<imu_sample>(std::move(imu_sample_handle)));
#define CHECK_OB2_STATUS_ERROR_THROW(status)
用于将 C API 中的 ob2_status_t 转换成异常抛出
#define VALIDATE_NOT_NULL(ARG)
用户参数非空校验
设备类定义,设备类代表着与物理设备的通信连接,可通过设备类访问和控制物理设备。
virtual void update_firmware(const char *firmware_file_path, firmware_update_state_cb callback, ob2_enable_ctrl_t enable_async_mode)
升级设备固件
virtual void sync_clock_with_host()
同步设备时钟
std::shared_ptr< imu_sample > get_imu_sample(int32_t timeout_msec)
获取 IMU 采样数据
virtual float get_float_property_value(ob2_command_id_t command_id)
获取设备浮点类型属性值
static void release_data_bundle(ob2_data_bundle_t *data_bundle)
释放数据捆
static void capture_callback(ob2_capture_t capture_handle, void *user_data)
firmware_update_state_cb m_firmware_update_state_cb
virtual void start_imu_with_callback(std::shared_ptr< imu_config > imu_config, imu_sample_cb cb)
通过回调返回 imu_sample 的方式启动设备 IMU 工作(开流)
virtual void stop_cameras()
停止设备内相机工作(关流)
imu_sample_cb m_imu_sample_cb
virtual std::vector< ob2_accel_stream_profile_t > get_accel_stream_profile_list()
获取加速度计流配置列表
virtual void update_cameras_config(std::shared_ptr< cameras_config > cam_config)
更新设备相机配置
virtual std::vector< ob2_camera_type_t > get_supported_camera_type_list()
获取支持的相机类型列表
virtual std::shared_ptr< cameras_config > create_cameras_config()
创建设备的相机配置
virtual void set_float_property_value(ob2_command_id_t command_id, float value)
设置设备浮点类型属性值
virtual std::shared_ptr< imu_config > create_imu_config()
创建 IMU 配置
virtual void set_int_property_value(ob2_command_id_t command_id, int value)
设置设备整型类型属性值
device(ob2_device_t &&device_handle)
通过传入设备句柄构造(主要用于 context 打开设备接口的实现)
virtual ob2_data_bundle_t * get_structured_data(ob2_command_id_t command_id)
获取结构体类型数据
virtual std::vector< ob2_camera_stream_profile_t > get_alignable_camera_stream_profile_list(ob2_images_align_mode_t align_mode, const ob2_camera_stream_profile_t &target_camera_stream_profile)
获取支持对齐的相机数据流配置列表
device(device &&dev)
通过其他设备对象构造(移动构造,主要用于派生类的实现)
virtual int get_int_property_value(ob2_command_id_t command_id)
获取设备整型类型属性值
static void imu_sample_callback(ob2_imu_sample_t imu_sample_handle, void *user_data)
virtual void start_cameras_with_callback(std::shared_ptr< cameras_config > cam_config, capture_cb cb)
通过回调返回 capture 的方式启动设备内相机工作(开流)
virtual void stop_imu()
停止设备内 IMU 工作(关流)
virtual ob2_cameras_calibration_t get_cameras_calibration(std::shared_ptr< cameras_config > cam_config)
获取当前配置下的相机标定参数
virtual std::vector< ob2_imu_sensor_type_t > get_supported_imu_sensor_type_list()
获取设备支持的 IMU 传感器列表
virtual std::vector< ob2_command_info_t > get_supported_command_info_list()
获取设备支持的命令信息列表
virtual ob2_device_t get_handle()
获取设备句柄
virtual void update_structured_data(ob2_command_id_t command_id, ob2_data_bundle_t *data_bundle)
设置结构体类型数据
virtual bool get_bool_property_default_value(ob2_command_id_t command_id)
设置设备布尔类型属性默认值
virtual std::shared_ptr< capture > get_capture(int32_t timeout_msec)
获取 capture
virtual ob2_command_info_t get_supported_command_info_by_id(ob2_command_id_t command_id)
通过命令 id 获取设备支持的命令信息
virtual void set_bool_property_value(ob2_command_id_t command_id, bool value)
设置设备布尔类型属性值
virtual bool check_command_access_permission(ob2_command_id_t command_id, ob2_access_permission_t permission)
检查设备命令访问权限
virtual void reboot()
设备重启
virtual ob2_device_info_t get_info()
获取设备信息
virtual std::vector< ob2_gyro_stream_profile_t > get_gyro_stream_profile_list()
获取陀螺仪流配置列表
virtual void start_cameras(std::shared_ptr< cameras_config > cam_config)
启动设备内相机工作(开流)
void update_imu_config(std::shared_ptr< imu_config > config)
更新设备 IMU 配置
static void firmware_update_state_callback(ob2_update_state_t state, const char *message, uint8_t percent, void *user_data)
virtual ob2_float_property_capability_t get_float_property_capability(ob2_command_id_t command_id)
获取设备浮点类型属性能力
virtual std::vector< ob2_camera_stream_profile_t > get_camera_stream_profile_list(ob2_camera_type_t camera_type)
获取指定相机类型支持的流配置列表
virtual ob2_camera_stream_profile_t get_default_camera_stream_profile(ob2_camera_type_t camera_type)
获取指定相机类型的默认流配置列表
virtual ob2_int_property_capability_t get_int_property_capability(ob2_command_id_t command_id)
获取设备整型类型属性能力
virtual bool get_bool_property_value(ob2_command_id_t command_id)
获取设备布尔类型属性值
virtual void start_imu(std::shared_ptr< imu_config > imu_config)
启动设备内 IMU 工作(开流)
virtual ~device() noexcept
设备析构函数
ob2_device_t m_device_handle
IMU 配置,用于设备内各 IMU Sensor 的工作配置及设备内与 IMU 工作相关模块、SDK 内与 IMU 工作相关相关模块的工作配置。
virtual ob2_imu_config_t get_handle()
获取 IMU 配置句柄
std::function< void(ob2_update_state_t state, std::string message, uint8_t percent)> firmware_update_state_cb
设备升级状态回调
std::function< void(std::shared_ptr< imu_sample >)> imu_sample_cb
IMU 采样回调
std::function< void(std::shared_ptr< capture >)> capture_cb
capture 回调函数
ob2_camera_type_t ob2_device_get_supported_camera_type(ob2_device_t device_handle, uint32_t index, ob2_status_t *status)
获取设备内指定索引号绑定的相机类型
void ob2_device_start_cameras_with_callback(ob2_device_t device_handle, const ob2_cameras_config_t cameras_config_handle, ob2_capture_cb_t cb, void *user_data, ob2_status_t *status)
通过回调返回 capture 的方式启动设备内相机工作(开流)
ob2_camera_stream_profile_t ob2_device_get_camera_stream_profile(ob2_device_t device_handle, ob2_camera_type_t camera_type, uint32_t index, ob2_status_t *status)
通过索引号获取指定相机类型的数据流配置
ob2_camera_stream_profile_t ob2_device_get_alignable_camera_stream_profile(ob2_device_t device_handle, ob2_images_align_mode_t align_mode, ob2_camera_stream_profile_t target_camera_stream_profile, uint32_t index, ob2_status_t *status)
通过索引号获取支持对齐的相机数据流配置
ob2_capture_t ob2_device_get_capture(ob2_device_t device_handle, int32_t timeout_msec, ob2_status_t *status)
获取 capture
uint32_t ob2_device_get_alignable_camera_stream_profile_count(ob2_device_t device_handle, ob2_images_align_mode_t image_align_mode, ob2_camera_stream_profile_t target_camera_stream_profile, ob2_status_t *status)
获取支持对齐的相机数据流配置个数
void ob2_device_update_cameras_config(ob2_device_t device_handle, const ob2_cameras_config_t cameras_config_handle, ob2_status_t *status)
更新设备相机配置
ob2_cameras_config_t ob2_device_create_cameras_config(ob2_device_t device_handle, ob2_status_t *status)
创建设备的相机配置
uint32_t ob2_device_get_camera_stream_profile_count(ob2_device_t device_handle, ob2_camera_type_t camera_type, ob2_status_t *status)
获取指定相机类型支持的数据流配置个数
void ob2_device_stop_cameras(ob2_device_t device_handle, ob2_status_t *status)
停止设备内相机工作(关流)
ob2_cameras_calibration_t ob2_device_get_cameras_calibration(ob2_device_t device_handle, const ob2_cameras_config_t cameras_config_handle, ob2_status_t *status)
获取当前配置下的相机标定参数
uint32_t ob2_device_get_supported_camera_count(ob2_device_t device_handle, ob2_status_t *status)
获取设备支持的相机个数
void ob2_device_start_cameras(ob2_device_t device_handle, const ob2_cameras_config_t cameras_config_handle, ob2_status_t *status)
启动设备内相机工作(开流)
void ob2_device_update_structured_data(ob2_device_t device_handle, ob2_command_id_t command_id, ob2_data_bundle_t *data_bundle, ob2_status_t *status)
设置结构体类型数据
void ob2_data_bundle_release(ob2_data_bundle_t *data_bundle, ob2_status_t *status)
释放数据捆
ob2_data_bundle_t * ob2_device_get_structured_data(ob2_device_t device_handle, ob2_command_id_t command_id, ob2_status_t *status)
获取结构体类型数据
ob2_float_property_capability_t ob2_device_get_float_property_capability(ob2_device_t device_handle, ob2_command_id_t command_id, ob2_status_t *status)
获取设备浮点类型属性能力
float ob2_device_get_float_property_value(ob2_device_t device_handle, ob2_command_id_t command_id, ob2_status_t *status)
获取设备浮点类型属性值
int ob2_device_get_int_property_value(ob2_device_t device_handle, ob2_command_id_t command_id, ob2_status_t *status)
获取设备整型类型属性值
bool ob2_device_get_bool_property_value(ob2_device_t device_handle, ob2_command_id_t command_id, ob2_status_t *status)
获取设备布尔类型属性值
bool ob2_device_check_command_access_permission(ob2_device_t device_handle, ob2_command_id_t command_id, ob2_access_permission_t permission, ob2_status_t *status)
检查设备命令访问权限
void ob2_device_set_bool_property_value(ob2_device_t device_handle, ob2_command_id_t command_id, bool value, ob2_status_t *status)
设置设备布尔类型属性值
void ob2_device_set_float_property_value(ob2_device_t device_handle, ob2_command_id_t command_id, float value, ob2_status_t *status)
设置设备浮点类型属性值
void ob2_device_set_int_property_value(ob2_device_t device_handle, ob2_command_id_t command_id, int value, ob2_status_t *status)
设置设备整型类型属性值
bool ob2_device_get_bool_property_default_value(ob2_device_t device_handle, ob2_command_id_t command_id, ob2_status_t *status)
设置设备布尔类型属性默认值
ob2_int_property_capability_t ob2_device_get_int_property_capability(ob2_device_t device_handle, ob2_command_id_t command_id, ob2_status_t *status)
获取设备整型类型属性能力
ob2_command_info_t ob2_device_get_supported_command_info_by_id(ob2_device_t device_handle, ob2_command_id_t command_id, ob2_status_t *status)
通过命令 id 获取设备支持的命令信息
uint32_t ob2_device_get_supported_command_count(ob2_device_t device_handle, ob2_status_t *status)
获取设备支持的命令个数
ob2_command_info_t ob2_device_get_supported_command_info(ob2_device_t device_handle, uint32_t index, ob2_status_t *status)
通过索引号获取设备支持的命令信息
void ob2_device_close(ob2_device_t device_handle, ob2_status_t *status)
关闭设备
void ob2_device_sync_clock_with_host(ob2_device_t device_handle, ob2_status_t *status)
同步设备时钟
ob2_device_info_t ob2_device_get_info(ob2_device_t device_handle, ob2_status_t *status)
获取设备信息
void ob2_device_update_firmware(ob2_device_t device_handle, const char *firmware_file_path, ob2_firmware_update_state_cb_t callback, void *user_data, ob2_enable_ctrl_t enable_async_mode, ob2_status_t *status)
升级设备固件
void ob2_device_reboot(ob2_device_t device_handle, ob2_status_t *status)
设备重启
ob2_imu_sensor_type_t ob2_device_get_supported_imu_sensor_type(ob2_device_t device_handle, uint32_t index, ob2_status_t *status)
通过索引号获取设备支持的 IMU 的传感器类型
void ob2_device_start_imu(ob2_device_t device_handle, const ob2_imu_config_t imu_config_handle, ob2_status_t *status)
启动设备内 IMU 工作(开流)
uint32_t ob2_device_get_gyro_stream_profile_count(ob2_device_t device_handle, ob2_status_t *status)
获取陀螺仪流配置个数
ob2_imu_config_t ob2_device_create_imu_config(ob2_device_t device_handle, ob2_status_t *status)
创建 IMU 配置
ob2_imu_sample_t ob2_device_get_imu_sample(ob2_device_t device_handle, int32_t timeout_msec, ob2_status_t *status)
获取 IMU 采样数据
uint32_t ob2_device_get_supported_imu_sensor_count(ob2_device_t device_handle, ob2_status_t *status)
获取设备支持的 IMU 传感器个数
void ob2_device_stop_imu(ob2_device_t device_handle, ob2_status_t *status)
停止设备内 IMU 工作
void ob2_device_update_imu_config(ob2_device_t device_handle, const ob2_imu_config_t imu_config_handle, ob2_status_t *status)
更新设备 IMU 配置
void ob2_device_start_imu_with_callback(ob2_device_t device_handle, const ob2_imu_config_t imu_config_handle, ob2_imu_sample_cb_t cb, void *user_data, ob2_status_t *status)
通过回调返回 imu_sample 的方式启动设备 IMU 工作
ob2_accel_stream_profile_t ob2_device_get_accel_stream_profile(ob2_device_t device_handle, uint32_t index, ob2_status_t *status)
通过索引号获取加速度计流配置
ob2_gyro_stream_profile_t ob2_device_get_gyro_stream_profile(ob2_device_t device_handle, uint32_t index, ob2_status_t *status)
通过索引号获取陀螺仪流配置
uint32_t ob2_device_get_accel_stream_profile_count(ob2_device_t device_handle, ob2_status_t *status)
获取加速度计流配置个数
struct OB2ImuSampleImpl * ob2_imu_sample_t
IMU 采样数据句柄定义
ob2_update_state_t
设备固件升级状态
ob2_enable_ctrl_t
使能 / 去使能定义
ob2_images_align_mode_t
图像对齐模式
#define OB2_DEFAULT_IMU_CONFIG
默认 IMU 配置
struct OB2DeviceImpl * ob2_device_t
设备句柄定义
#define OB2_DEFAULT_CAMERAS_CONFIG
默认相机配置
struct OB2CaptureImpl * ob2_capture_t
capture 句柄定义
ob2_access_permission_t
访问权限(主要用户命令)
struct OB2ImuConfigImpl * ob2_imu_config_t
IMU 配置句柄定义
struct OB2CamerasConfigImpl * ob2_cameras_config_t
相机配置句柄定义
#define OB2_DEFAULT_STREAM_PROFILE
默认流配置索引