diff --git a/include/TriggerFanOut.h b/include/TriggerFanOut.h index 4269513b49e6058fe9686d309005f0884563274a..9df4faffc8e21b4df41de5c884e982232ad030d8 100644 --- a/include/TriggerFanOut.h +++ b/include/TriggerFanOut.h @@ -18,6 +18,8 @@ #include "Profiler.h" #include "DeviceModule.h" +constexpr useconds_t DeviceOpenTimeout = 500; + namespace ChimeraTK { /** InternalModule which waits for a trigger, then reads a number of variables @@ -77,6 +79,14 @@ namespace ChimeraTK { auto lastValidity = DataValidity::ok; retry: try { + if(!_deviceModule.device.isOpened()) { + auto version = externalTrigger->getVersionNumber(); + //boost::fusion::for_each(fanOutMap.table, SendDataToConsumers(version, DataValidity::faulty)); + Application::getInstance().testableModeUnlock("waitForDeviceOpen"); + boost::this_thread::sleep(boost::posix_time::millisec(DeviceOpenTimeout)); + Application::getInstance().testableModeLock("waitForDeviceOpen"); + goto retry; + } transferGroup.read(); } catch(ChimeraTK::runtime_error& e) {