diff --git a/include/user/stimulusBuffer.h b/include/user/stimulusBuffer.h index fe18dcb..9af4c78 100644 --- a/include/user/stimulusBuffer.h +++ b/include/user/stimulusBuffer.h @@ -67,7 +67,7 @@ public: StimulusBuffer& operator=(StimulusBuffer&&) = default; // Control methods - void start() + virtual void start() { std::cout << __func__ << ": Starting stimulus buffer for device " << deviceAttachmentSpec.deviceSelector << std::endl; @@ -76,7 +76,7 @@ public: scheduleNextTimeout(); } - void stop(); + virtual void stop(); protected: // Virtual functions for derived classes to override diff --git a/stimBuffApis/livoxGen1/pcloudStimulusBuffer.cpp b/stimBuffApis/livoxGen1/pcloudStimulusBuffer.cpp index 935d33d..2ce24ab 100644 --- a/stimBuffApis/livoxGen1/pcloudStimulusBuffer.cpp +++ b/stimBuffApis/livoxGen1/pcloudStimulusBuffer.cpp @@ -32,6 +32,22 @@ ioUringAssemblyEngine(*this) { } +void PcloudStimulusBuffer::start() +{ + // Call ioUringAssemblyEngine setup() as the final step + // ioUringAssemblyEngine.setup(); + // Call base class start() as the final step + StimulusBuffer::start(); +} + +void PcloudStimulusBuffer::stop() +{ + // Call base class stop() as the first step + StimulusBuffer::stop(); + // Call ioUringAssemblyEngine stop() as the final step + // ioUringAssemblyEngine.finalize(); +} + void PcloudStimulusBuffer::stimFrameProductionTimesliceInd() { // Release the spinlock for now diff --git a/stimBuffApis/livoxGen1/pcloudStimulusBuffer.h b/stimBuffApis/livoxGen1/pcloudStimulusBuffer.h index b712d7d..a64fff1 100644 --- a/stimBuffApis/livoxGen1/pcloudStimulusBuffer.h +++ b/stimBuffApis/livoxGen1/pcloudStimulusBuffer.h @@ -40,6 +40,10 @@ public: PcloudStimulusBuffer(PcloudStimulusBuffer&&) = default; PcloudStimulusBuffer& operator=(PcloudStimulusBuffer&&) = default; + // Control methods + void start() override; + void stop() override; + protected: void stimFrameProductionTimesliceInd() override;