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

105 lines
2.7 KiB
C
Raw Normal View History

2018-04-25 11:06:38 +03:00
#ifndef MYNTEYE_API_H_ // NOLINT
#define MYNTEYE_API_H_
#pragma once
2018-04-26 09:44:47 +03:00
#include <opencv2/core/core.hpp>
#include <limits>
2018-04-26 04:22:29 +03:00
#include <memory>
2018-04-26 05:33:37 +03:00
#include <string>
#include <vector>
2018-04-26 04:22:29 +03:00
2018-04-25 11:06:38 +03:00
#include "mynteye/mynteye.h"
2018-04-26 05:33:37 +03:00
#include "mynteye/types.h"
2018-04-25 11:06:38 +03:00
MYNTEYE_BEGIN_NAMESPACE
2018-04-26 04:22:29 +03:00
class Device;
2018-04-26 05:33:37 +03:00
class Synthetic;
2018-04-26 04:22:29 +03:00
2018-04-26 09:44:47 +03:00
namespace api {
struct MYNTEYE_API StreamData {
std::shared_ptr<ImgData> img;
cv::Mat frame;
};
struct MYNTEYE_API MotionData {
std::shared_ptr<ImuData> imu;
};
} // namespace api
2018-04-25 11:06:38 +03:00
class MYNTEYE_API API {
public:
2018-04-26 09:44:47 +03:00
using stream_callback_t = std::function<void(const api::StreamData &data)>;
using motion_callback_t = std::function<void(const api::MotionData &data)>;
2018-04-26 04:22:29 +03:00
explicit API(std::shared_ptr<Device> device);
/*virtual*/ ~API();
static std::shared_ptr<API> Create();
static std::shared_ptr<API> Create(std::shared_ptr<Device> device);
2018-05-03 11:33:27 +03:00
static std::shared_ptr<API> Create(int argc, char *argv[]);
static std::shared_ptr<API> Create(
int argc, char *argv[], std::shared_ptr<Device> device);
2018-04-26 04:22:29 +03:00
2018-04-26 05:33:37 +03:00
Model GetModel() const;
bool Supports(const Stream &stream) const;
bool Supports(const Capabilities &capability) const;
bool Supports(const Option &option) const;
const std::vector<StreamRequest> &GetStreamRequests(
const Capabilities &capability) const;
void ConfigStreamRequest(
const Capabilities &capability, const StreamRequest &request);
std::string GetInfo(const Info &info) const;
Intrinsics GetIntrinsics(const Stream &stream) const;
Extrinsics GetExtrinsics(const Stream &from, const Stream &to) const;
MotionIntrinsics GetMotionIntrinsics() const;
Extrinsics GetMotionExtrinsics(const Stream &from) const;
void LogOptionInfos() const;
OptionInfo GetOptionInfo(const Option &option) const;
std::int32_t GetOptionValue(const Option &option) const;
void SetOptionValue(const Option &option, std::int32_t value);
bool RunOptionAction(const Option &option) const;
2018-04-26 09:44:47 +03:00
void SetStreamCallback(const Stream &stream, stream_callback_t callback);
void SetMotionCallback(motion_callback_t callback);
bool HasStreamCallback(const Stream &stream) const;
bool HasMotionCallback() const;
void Start(const Source &source);
void Stop(const Source &source);
void WaitForStreams();
2018-04-27 04:58:53 +03:00
void EnableStreamData(const Stream &stream);
void DisableStreamData(const Stream &stream);
2018-04-26 09:44:47 +03:00
api::StreamData GetStreamData(const Stream &stream);
std::vector<api::StreamData> GetStreamDatas(const Stream &stream);
void EnableMotionDatas(
std::size_t max_size = std::numeric_limits<std::size_t>::max());
std::vector<api::MotionData> GetMotionDatas();
2018-04-26 05:33:37 +03:00
std::shared_ptr<Device> device();
2018-04-26 04:22:29 +03:00
private:
std::shared_ptr<Device> device_;
2018-04-26 05:33:37 +03:00
std::unique_ptr<Synthetic> synthetic_;
2018-04-25 11:06:38 +03:00
};
MYNTEYE_END_NAMESPACE
#endif // MYNTEYE_API_H_ NOLINT