Files
salmanoff/stimBuffApis/lcameraBuff/lcameraBuffInternal.h
T
hayodea 63532a6ee2 Resolve device selector on detach and add YuvStimProducer state tests.
Detach finds the shared producer via lcameraDev_resolveDeviceSelectorCReq
then removes buffers by attach identity; unit tests cover quale guards.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 11:04:22 -04:00

61 lines
1.9 KiB
C++

#ifndef LCAMERA_BUFF_INTERNAL_H
#define LCAMERA_BUFF_INTERNAL_H
#include <lcameraDev.h>
#include <memory>
#include <user/deviceAttachmentSpec.h>
#include <user/senseApiDesc.h>
#include <vector>
#include <spinscale/co/invokers.h>
namespace smo::stim_buff::lcamera_buff {
class YuvStimProducer;
struct LcameraDevDllState
{
struct DlCloser
{
void operator()(void *handle);
};
LcameraDevDllState();
std::unique_ptr<void, DlCloser> dlopenHandle;
lcameraDev_mainFn *lcameraDev_main;
lcameraDev_exitFn *lcameraDev_exit;
lcameraDev_getOrCreateDeviceCReqFn *lcameraDev_getOrCreateDeviceCReq;
lcameraDev_resolveDeviceSelectorCReqFn *lcameraDev_resolveDeviceSelectorCReq;
lcameraDev_releaseDeviceCReqFn *lcameraDev_releaseDeviceCReq;
lcameraDev_configureSessionModeCReqFn *lcameraDev_configureSessionModeCReq;
};
extern const SmoCallbacks *lcameraBuffSmoHooksPtr;
extern SmoThreadingModelDesc lcameraBuffThreadingModelDesc;
extern LcameraDevDllState lcameraDevDll;
extern std::vector<std::shared_ptr<YuvStimProducer>> attachedStimulusProducers;
std::shared_ptr<YuvStimProducer> findStimProducerByCameraId(
const std::string& resolvedCameraId);
bool validateAttachRequest(
const std::shared_ptr<device::DeviceAttachmentSpec>& spec);
sscl::co::ViralNonPostingInvoker<int> lcameraBuff_initializeCInd();
sscl::co::ViralNonPostingInvoker<int> lcameraBuff_finalizeCInd();
sscl::co::DynamicViralPostingInvoker<StimBuffDeviceOpResult>
lcameraBuff_attachDeviceCReq(
sscl::co::ExplicitPostTarget postTarget,
const std::shared_ptr<device::DeviceAttachmentSpec>& desc,
const std::shared_ptr<sscl::ComponentThread>& componentThread);
sscl::co::DynamicViralPostingInvoker<StimBuffDeviceOpResult>
lcameraBuff_detachDeviceCReq(
sscl::co::ExplicitPostTarget postTarget,
const std::shared_ptr<device::DeviceAttachmentSpec>& desc);
} // namespace smo::stim_buff::lcamera_buff
#endif // LCAMERA_BUFF_INTERNAL_H