MYNT-EYE-S-SDK/src/device/device.h

93 lines
2.1 KiB
C
Raw Normal View History

2018-04-04 05:50:27 +03:00
#ifndef MYNTEYE_DEVICE_H_ // NOLINT
#define MYNTEYE_DEVICE_H_
#pragma once
2018-04-06 04:12:09 +03:00
#include <map>
2018-04-04 05:50:27 +03:00
#include <memory>
#include <string>
#include "mynteye/mynteye.h"
2018-04-04 10:52:10 +03:00
#include "mynteye/types.h"
2018-04-04 05:50:27 +03:00
2018-04-06 04:12:09 +03:00
#include "internal/callbacks.h"
2018-04-04 05:50:27 +03:00
MYNTEYE_BEGIN_NAMESPACE
namespace uvc {
struct device;
} // namespace uvc
2018-04-04 10:52:10 +03:00
struct DeviceInfo;
2018-04-04 05:50:27 +03:00
class Device {
public:
2018-04-06 04:12:09 +03:00
using stream_callback_t = device::StreamCallback;
using motion_callback_t = device::MotionCallback;
using stream_callbacks_t = std::map<Stream, stream_callback_t>;
2018-04-04 10:52:10 +03:00
Device(const Model &model, std::shared_ptr<uvc::device> device);
2018-04-04 05:50:27 +03:00
virtual ~Device();
static std::shared_ptr<Device> Create(
const std::string &name, std::shared_ptr<uvc::device> device);
2018-04-06 04:12:09 +03:00
Model GetModel() const {
return model_;
}
2018-04-04 10:52:10 +03:00
bool Supports(const Stream &stream) const;
bool Supports(const Capabilities &capability) const;
bool Supports(const Option &option) const;
std::shared_ptr<DeviceInfo> GetInfo() const;
std::string GetInfo(const Info &info) const;
2018-04-06 04:12:09 +03:00
ImgIntrinsics GetImgIntrinsics() const;
ImgExtrinsics GetImgExtrinsics() const;
ImuIntrinsics GetImuIntrinsics() const;
ImuExtrinsics GetImuExtrinsics() const;
void SetStreamCallback(const Stream &stream, stream_callback_t callback);
void SetMotionCallback(motion_callback_t callback);
2018-04-04 10:52:10 +03:00
protected:
std::shared_ptr<uvc::device> device() const {
return device_;
}
2018-04-06 04:12:09 +03:00
std::shared_ptr<DeviceInfo> device_info() const {
return device_info_;
}
2018-04-04 05:50:27 +03:00
private:
2018-04-04 10:52:10 +03:00
Model model_;
std::shared_ptr<uvc::device> device_;
std::shared_ptr<DeviceInfo> device_info_;
2018-04-06 04:12:09 +03:00
ImgIntrinsics img_intrinsics_;
ImgExtrinsics img_extrinsics_;
ImuIntrinsics imu_intrinsics_;
ImuExtrinsics imu_extrinsics_;
stream_callbacks_t stream_callbacks_;
motion_callback_t motion_callback_;
void ReadDeviceInfo();
void WriteImgIntrinsics(const ImgIntrinsics &intrinsics);
void WriteImgExtrinsics(const ImgExtrinsics &extrinsics);
void WriteImuIntrinsics(const ImuIntrinsics &intrinsics);
void WriteImuExtrinsics(const ImuExtrinsics &extrinsics);
// friend DeviceWriter;
2018-04-04 05:50:27 +03:00
};
MYNTEYE_END_NAMESPACE
#endif // MYNTEYE_DEVICE_H_ NOLINT