GrabBag/Module/BinocularMarkReceiver/Inc/IBinocularMarkReceiver.h

114 lines
3.1 KiB
C
Raw Normal View History

2025-12-10 00:01:32 +08:00
#ifndef IBINOCULARMARKRECEIVER_H
#define IBINOCULARMARKRECEIVER_H
#include <functional>
#include <vector>
#include <string>
#include <QtGlobal> // 提供qint64、quint16等Qt基本类型
/**
* @brief Mark 3D
* Mark
*/
struct VrMark3D
{
int markID; // Mark ID
double x; // X 坐标
double y; // Y 坐标
double z; // Z 坐标
VrMark3D() : markID(-1), x(0.0), y(0.0), z(0.0) {}
VrMark3D(int id, double _x, double _y, double _z)
: markID(id), x(_x), y(_y), z(_z) {}
};
/**
* @brief Mark数据接收器接口
* BinocularMarkApp接收3D Mark检测结果
*/
class IBinocularMarkReceiver
{
public:
virtual ~IBinocularMarkReceiver() = default;
/**
* @brief Mark结果回调函数类型
* @param marks 3D标记列表
* @param timestamp
* @param errorCode 0
*/
using MarkResultCallback = std::function<void(const std::vector<VrMark3D>& marks,
qint64 timestamp,
int errorCode)>;
/**
* @brief
* @param connected true-false-
*/
using ConnectionStatusCallback = std::function<void(bool connected)>;
/**
* @brief TCP客户端并连接到服务器
* @param serverIp IP地址
* @param serverPort
* @return 0--
*/
virtual int Connect(const std::string& serverIp, quint16 serverPort) = 0;
/**
* @brief
* @return 0--
*/
virtual int Disconnect() = 0;
/**
* @brief
* @return true-false-
*/
virtual bool IsConnected() const = 0;
/**
* @brief
* @return 0--
*/
virtual int SendHeartbeat() = 0;
/**
* @brief
* @return 0--
*/
virtual int TriggerDetection() = 0;
/**
* @brief Mark结果回调
* @param callback
*/
virtual void SetMarkResultCallback(MarkResultCallback callback) = 0;
/**
* @brief
* @param callback
*/
virtual void SetConnectionStatusCallback(ConnectionStatusCallback callback) = 0;
/**
* @brief
* @param intervalSeconds 30
*/
virtual void StartHeartbeat(int intervalSeconds = 30) = 0;
/**
* @brief
*/
virtual void StopHeartbeat() = 0;
/**
* @brief BinocularMarkReceiver实例
* @param ppReceiver
* @return 0--
*/
static int CreateInstance(IBinocularMarkReceiver** ppReceiver);
};
#endif // IBINOCULARMARKRECEIVER_H