#include "lasp_streammgr.h" #include #include #include #include #include using std::cerr; namespace py = pybind11; void init_streammgr(py::module &m) { /// The stream manager is a singleton, and the lifetime is managed elsewhere. // It should not be deleted. py::class_> smgr( m, "StreamMgr"); py::enum_(smgr, "StreamType") .value("input", StreamMgr::StreamType::input) .value("output", StreamMgr::StreamType::output); smgr.def("startStream", &StreamMgr::startStream); smgr.def("stopStream", &StreamMgr::stopStream); smgr.def_static("getInstance", []() { return std::unique_ptr(&StreamMgr::getInstance()); }); smgr.def("stopAllStreams", &StreamMgr::stopAllStreams); smgr.def("setSiggen", &StreamMgr::setSiggen); smgr.def("getDeviceInfo", &StreamMgr::getDeviceInfo); smgr.def("getStreamStatus", &StreamMgr::getStreamStatus); smgr.def("isStreamRunningOK", &StreamMgr::isStreamRunningOK); smgr.def("isStreamRunning", &StreamMgr::isStreamRunning); smgr.def("getDaq", &StreamMgr::getDaq, py::return_value_policy::reference); smgr.def( "rescanDAQDevices", [](StreamMgr &smgr, bool background) { // A pure C++ callback is the second argument to rescanDAQDevices, which // cannot be wrapped to Pybind11. Only the one without callback is // forwarded here to Python code. smgr.rescanDAQDevices(background); }, py::arg("background") = false); }