diff --git a/stimBuffApis/livoxGen1/pcloudStimulusBuffer.cpp b/stimBuffApis/livoxGen1/pcloudStimulusBuffer.cpp index 9ee7e62..935d33d 100644 --- a/stimBuffApis/livoxGen1/pcloudStimulusBuffer.cpp +++ b/stimBuffApis/livoxGen1/pcloudStimulusBuffer.cpp @@ -9,7 +9,35 @@ namespace smo { namespace stim_buff { -// Continuation class for assembleAndProduceStimulusFrameReq +// OpenCL kernels are used to collate and produce our StimFrames. +static SpMcRingBuffer::InputEngineConstraints openClInputConstraints( + static_cast(sysconf(_SC_PAGE_SIZE)), sizeof(void *)); + +PcloudStimulusBuffer::PcloudStimulusBuffer( + const device::DeviceAttachmentSpec& deviceAttachmentSpec, + std::shared_ptr &device, + const PcloudFormatDesc& formatDesc, + int histbuffMs, + size_t nDgramsPerStagingBufferFrame) +: StimulusBuffer( + deviceAttachmentSpec, + static_cast(histbuffMs / CONFIG_STIMBUFF_FRAME_PERIOD_MS), + openClInputConstraints, + device->componentThread->getIoService()), +deviceAttachmentSpec(deviceAttachmentSpec), device(device), +formatDesc(formatDesc), stagingBuffer( + StagingBuffer::InputEngineConstraints::ioUringConstraints, + OpenClConstraints(), nDgramsPerStagingBufferFrame), +ioUringAssemblyEngine(*this) +{ +} + +void PcloudStimulusBuffer::stimFrameProductionTimesliceInd() +{ + // Release the spinlock for now + frameAssemblyRateLimiter.release(); +} + class PcloudStimulusBuffer::AssembleAndProduceStimulusFrameReq : public smo::PostedAsynchronousContinuation< assembleAndProduceStimulusFrameReqCbFn> @@ -39,34 +67,6 @@ public: } }; -// OpenCL kernels are used to collate and produce our StimFrames. -static SpMcRingBuffer::InputEngineConstraints openClInputConstraints( - static_cast(sysconf(_SC_PAGE_SIZE)), sizeof(void *)); - -PcloudStimulusBuffer::PcloudStimulusBuffer( - const device::DeviceAttachmentSpec& deviceAttachmentSpec, - std::shared_ptr &device, - const PcloudFormatDesc& formatDesc, - int histbuffMs, - size_t nDgramsPerStagingBufferFrame) -: StimulusBuffer( - deviceAttachmentSpec, - static_cast(histbuffMs / CONFIG_STIMBUFF_FRAME_PERIOD_MS), - openClInputConstraints, - device->componentThread->getIoService()), -deviceAttachmentSpec(deviceAttachmentSpec), device(device), -formatDesc(formatDesc), stagingBuffer( - StagingBuffer::InputEngineConstraints::ioUringConstraints, - OpenClConstraints(), nDgramsPerStagingBufferFrame) -{ -} - -void PcloudStimulusBuffer::stimFrameProductionTimesliceInd() -{ - // Release the spinlock for now - frameAssemblyRateLimiter.release(); -} - void PcloudStimulusBuffer::assembleAndProduceStimulusFrameReq( smo::Callback callback) {