LivoxProto1: Add en/disablePcloudDataReq()

Untested, but this should enable us to enable and disable data
from the device.
This commit is contained in:
2025-10-22 00:54:28 -04:00
parent 870057a680
commit d9042c6510
4 changed files with 667 additions and 1 deletions
+18
View File
@@ -12,6 +12,7 @@
#include <arpa/inet.h>
#include <unistd.h>
#include <boost/asio/deadline_timer.hpp>
#include <boost/asio/posix/stream_descriptor.hpp>
#include "protocol.h"
#include <callback.h>
@@ -95,6 +96,8 @@ private:
class ConnectByDeviceIdentifierReq;
class ExecuteHandshakeReq;
class DisconnectReq;
class EnablePcloudDataReq;
class DisablePcloudDataReq;
public:
// Utility methods
@@ -110,6 +113,8 @@ public:
connectByDeviceIdentifierReqCbFn;
typedef std::function<void(bool success, int fd)> executeHandshakeReqCbFn;
typedef std::function<void(bool success)> disconnectReqCbFn;
typedef std::function<void(bool success)> enablePcloudDataReqCbFn;
typedef std::function<void(bool success)> disablePcloudDataReqCbFn;
// Async connection methods
void connectReq(smo::Callback<connectReqCbFn> callback);
@@ -121,11 +126,24 @@ public:
const std::string& deviceIP,
smo::Callback<executeHandshakeReqCbFn> callback);
void disconnectReq(smo::Callback<disconnectReqCbFn> callback);
void enablePcloudDataReq(smo::Callback<enablePcloudDataReqCbFn> callback);
void disablePcloudDataReq(smo::Callback<disablePcloudDataReqCbFn> callback);
// Heartbeat state
std::unique_ptr<boost::asio::deadline_timer> heartbeatTimer;
// FIXME: Might be useful to rename this to commandAndHeartbeatFd.
int heartbeatFd; // Socket file descriptor used for heartbeat
std::atomic<bool> heartbeatActive;
// Point cloud data state
std::unique_ptr<boost::asio::posix::stream_descriptor> pcloudDataSocketDesc;
std::atomic<bool> pcloudDataActive;
int pcloudDataFd; // Socket file descriptor for point cloud data reception
private:
// Point cloud data setup
bool setupPcloudDataSocket();
void cleanupPcloudDataSocket();
};
} // namespace livoxProto1