Files
salmanoff/stimBuffApis/livoxGen1/pcloudStimulusBuffer.h
T

72 lines
2.0 KiB
C++
Raw Normal View History

#ifndef _LIVOX_GEN1_PCLOUD_STIMULUS_BUFFER_H
#define _LIVOX_GEN1_PCLOUD_STIMULUS_BUFFER_H
#include <functional>
#include <user/stimulusBuffer.h>
#include <user/stimFrame.h>
#include <livoxProto1/device.h>
#include <asynchronousContinuation.h>
#include <callback.h>
2025-10-30 00:39:34 -04:00
#include "stagingBuffer.h"
#include "ioUringAssemblyEngine.h"
namespace smo {
namespace stim_buff {
/**
* PcloudStimulusBuffer is a specialized StimulusBuffer for point cloud data.
*
* This class extends StimulusBuffer to handle point cloud-specific stimulus
* frames, particularly those generated from LiDAR point cloud data. It
* provides additional functionality for managing point cloud frame metadata
* and processing.
*/
class PcloudStimulusBuffer
: public StimulusBuffer
{
public:
2025-10-25 19:42:48 -04:00
explicit PcloudStimulusBuffer(
const device::DeviceAttachmentSpec& deviceAttachmentSpec,
std::shared_ptr<livoxProto1::Device> &device,
2025-10-30 00:39:34 -04:00
const PcloudFormatDesc& formatDesc,
int histbuffMs,
size_t nDgramsPerStagingBufferFrame);
2025-10-25 19:42:48 -04:00
~PcloudStimulusBuffer() = default;
// Non-copyable, movable
PcloudStimulusBuffer(const PcloudStimulusBuffer&) = delete;
PcloudStimulusBuffer& operator=(const PcloudStimulusBuffer&) = delete;
PcloudStimulusBuffer(PcloudStimulusBuffer&&) = default;
PcloudStimulusBuffer& operator=(PcloudStimulusBuffer&&) = default;
2025-10-25 19:32:10 -04:00
2025-11-01 22:03:28 -04:00
// Control methods
void start() override;
void stop() override;
protected:
void stimFrameProductionTimesliceInd() override;
// Callback function type for assembleAndProduceStimulusFrameReq
typedef std::function<void(SimultaneityStamp)>
assembleAndProduceStimulusFrameReqCbFn;
public:
void assembleAndProduceStimulusFrameReq(
smo::Callback<assembleAndProduceStimulusFrameReqCbFn> callback);
device::DeviceAttachmentSpec deviceAttachmentSpec;
std::shared_ptr<livoxProto1::Device> device;
2025-10-25 19:32:10 -04:00
PcloudFormatDesc formatDesc;
2025-10-30 00:39:34 -04:00
StagingBuffer stagingBuffer;
IoUringAssemblyEngine ioUringAssemblyEngine;
private:
class AssembleAndProduceStimulusFrameReq;
};
} // namespace stim_buff
} // namespace smo
#endif // _LIVOX_GEN1_PCLOUD_STIMULUS_BUFFER_H