With RoiCounter processing without Rois, CtControl get stuck in AcqRunning status
Camera simu;
Interface hw(simu);
CtControl ct(&hw);
// Setup a roi counter
Roi roi = Roi(0, 0, 100, 100);
lima::SoftOpExternalMgr *ext = ct.externalOperation();
SoftOpInstance roi_cnt_op_inst;
ext->addOp(ROICOUNTERS, "RoiCounters", 0, roi_cnt_op_inst);
SoftOpBaseClass *p = roi_cnt_op_inst.m_opt;
SoftOpRoiCounter *roi_cnt_op = static_cast<SoftOpRoiCounter *>(p);
CtAcquisition *acq= ct.acquisition();
acq->setAcqMode(Single);
acq->setAcqExpoTime(expo);
acq->setAcqNbFrames(nframe);
ct.prepareAcq();
ct.startAcq();
std::cout << "SIMUTEST: acq started" << std::endl;
// Pool status
CtControl::Status status;
do
{
ct.getStatus(status);
} while (status.AcquisitionStatus != AcqStatus::AcqReady);
std::cout << "SIMUTEST: acq finished" << std::endl;
ct.stopAcq();
std::cout << "SIMUTEST: acq stopped" << std::endl;
In _calcAcqStatus
, the following condition is always false because LastCounterReady is never incremented.
(!m_op_ext_sink_task_active ||anImageCnt.LastCounterReady == anImageCnt.LastImageAcquired)
_LastCounterReadyCallback is never called.