PcloudStimBuff: Add skeleton assembleAndProduceStimulusFrameReq impl
This commit is contained in:
@@ -9,6 +9,36 @@
|
|||||||
namespace smo {
|
namespace smo {
|
||||||
namespace stim_buff {
|
namespace stim_buff {
|
||||||
|
|
||||||
|
// Continuation class for assembleAndProduceStimulusFrameReq
|
||||||
|
class PcloudStimulusBuffer::AssembleAndProduceStimulusFrameReq
|
||||||
|
: public smo::PostedAsynchronousContinuation<
|
||||||
|
assembleAndProduceStimulusFrameReqCbFn>
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
PcloudStimulusBuffer& stimBuff;
|
||||||
|
|
||||||
|
public:
|
||||||
|
AssembleAndProduceStimulusFrameReq(
|
||||||
|
PcloudStimulusBuffer& buffer,
|
||||||
|
Callback<assembleAndProduceStimulusFrameReqCbFn> callback)
|
||||||
|
: PostedAsynchronousContinuation<assembleAndProduceStimulusFrameReqCbFn>(
|
||||||
|
buffer.device->componentThread, std::move(callback)),
|
||||||
|
stimBuff(buffer)
|
||||||
|
{}
|
||||||
|
|
||||||
|
void callOriginalCallback()
|
||||||
|
{
|
||||||
|
stimBuff.frameAssemblyRateLimiter.release();
|
||||||
|
callOriginalCb(static_cast<SimultaneityStamp>(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
void callOriginalCallbackWithFailure()
|
||||||
|
{
|
||||||
|
stimBuff.frameAssemblyRateLimiter.release();
|
||||||
|
callOriginalCb(static_cast<SimultaneityStamp>(0));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// OpenCL kernels are used to collate and produce our StimFrames.
|
// OpenCL kernels are used to collate and produce our StimFrames.
|
||||||
static SpMcRingBuffer::InputEngineConstraints openClInputConstraints(
|
static SpMcRingBuffer::InputEngineConstraints openClInputConstraints(
|
||||||
static_cast<size_t>(sysconf(_SC_PAGE_SIZE)), sizeof(void *));
|
static_cast<size_t>(sysconf(_SC_PAGE_SIZE)), sizeof(void *));
|
||||||
@@ -37,5 +67,12 @@ void PcloudStimulusBuffer::stimFrameProductionTimesliceInd()
|
|||||||
frameAssemblyRateLimiter.release();
|
frameAssemblyRateLimiter.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PcloudStimulusBuffer::assembleAndProduceStimulusFrameReq(
|
||||||
|
smo::Callback<assembleAndProduceStimulusFrameReqCbFn> callback)
|
||||||
|
{
|
||||||
|
// Wireframe implementation - do nothing for now
|
||||||
|
(void)callback;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace stim_buff
|
} // namespace stim_buff
|
||||||
} // namespace smo
|
} // namespace smo
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
#ifndef _LIVOX_GEN1_PCLOUD_STIMULUS_BUFFER_H
|
#ifndef _LIVOX_GEN1_PCLOUD_STIMULUS_BUFFER_H
|
||||||
#define _LIVOX_GEN1_PCLOUD_STIMULUS_BUFFER_H
|
#define _LIVOX_GEN1_PCLOUD_STIMULUS_BUFFER_H
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
#include <user/stimulusBuffer.h>
|
#include <user/stimulusBuffer.h>
|
||||||
#include <user/stimFrame.h>
|
#include <user/stimFrame.h>
|
||||||
#include <livoxProto1/device.h>
|
#include <livoxProto1/device.h>
|
||||||
|
#include <asynchronousContinuation.h>
|
||||||
|
#include <callback.h>
|
||||||
#include "stagingBuffer.h"
|
#include "stagingBuffer.h"
|
||||||
#include "ioUringAssemblyEngine.h"
|
#include "ioUringAssemblyEngine.h"
|
||||||
|
|
||||||
@@ -40,12 +43,22 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
void stimFrameProductionTimesliceInd() override;
|
void stimFrameProductionTimesliceInd() override;
|
||||||
|
|
||||||
|
// Callback function type for assembleAndProduceStimulusFrameReq
|
||||||
|
typedef std::function<void(SimultaneityStamp)>
|
||||||
|
assembleAndProduceStimulusFrameReqCbFn;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
void assembleAndProduceStimulusFrameReq(
|
||||||
|
smo::Callback<assembleAndProduceStimulusFrameReqCbFn> callback);
|
||||||
|
|
||||||
device::DeviceAttachmentSpec deviceAttachmentSpec;
|
device::DeviceAttachmentSpec deviceAttachmentSpec;
|
||||||
std::shared_ptr<livoxProto1::Device> device;
|
std::shared_ptr<livoxProto1::Device> device;
|
||||||
PcloudFormatDesc formatDesc;
|
PcloudFormatDesc formatDesc;
|
||||||
StagingBuffer stagingBuffer;
|
StagingBuffer stagingBuffer;
|
||||||
IoUringAssemblyEngine ioUringAssemblyEngine;
|
IoUringAssemblyEngine ioUringAssemblyEngine;
|
||||||
|
|
||||||
|
private:
|
||||||
|
class AssembleAndProduceStimulusFrameReq;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace stim_buff
|
} // namespace stim_buff
|
||||||
|
|||||||
Reference in New Issue
Block a user