USAcquisition::USAcquisition(AcquisitionPtr base, QObject* parent) : QObject(parent), mBase(base), mReady(true), mInfoText("") { mCore.reset(new USSavingRecorder()); connect(mCore.get(), SIGNAL(saveDataCompleted(QString)), this, SLOT(checkIfReadySlot())); connect(mCore.get(), SIGNAL(saveDataCompleted(QString)), this, SIGNAL(saveDataCompleted(QString))); connect(this->getServices()->tracking().get(), &TrackingService::stateChanged, this, &USAcquisition::checkIfReadySlot); connect(this->getServices()->tracking().get(), SIGNAL(activeToolChanged(const QString&)), this, SLOT(checkIfReadySlot())); connect(this->getServices()->video().get(), SIGNAL(activeVideoSourceChanged()), this, SLOT(checkIfReadySlot())); connect(this->getServices()->video().get(), &VideoService::connected, this, &USAcquisition::checkIfReadySlot); connect(mBase.get(), SIGNAL(started()), this, SLOT(recordStarted())); connect(mBase.get(), SIGNAL(acquisitionStopped()), this, SLOT(recordStopped()), Qt::QueuedConnection); connect(mBase.get(), SIGNAL(cancelled()), this, SLOT(recordCancelled())); this->checkIfReadySlot(); }
void RDCae::DispatchCommand(RDCmdCache *cmd) { int pos; int card; if(!strcmp(cmd->arg(0),"PW")) { // Password Response if(cmd->arg(1)[0]=='+') { emit isConnected(true); } else { emit isConnected(false); } } if(!strcmp(cmd->arg(0),"LP")) { // Load Play int handle=GetHandle(cmd->arg(4)); int card=CardNumber(cmd->arg(1)); int stream=StreamNumber(cmd->arg(3)); syslog(LOG_ERR,"*** RDCae::DispatchCommand: received unhandled play stream from CAE, handle=%d, card=%d, stream=%d, name=\"%s\" ***", handle,card,stream,cmd->arg(2)); unloadPlay(handle); } if(!strcmp(cmd->arg(0),"UP")) { // Unload Play if(cmd->arg(2)[0]=='+') { int handle=GetHandle(cmd->arg(1)); for(int i=0;i<RD_MAX_CARDS;i++) { for(int j=0;j<RD_MAX_STREAMS;j++) { if(cae_handle[i][j]==handle) { cae_handle[i][j]=-1; for(unsigned k=0;k<RD_MAX_PORTS;k++) { cae_output_status_flags[i][k][j]=false; } } } } emit playUnloaded(handle); } } if(!strcmp(cmd->arg(0),"PP")) { // Position Play if(cmd->arg(3)[0]=='+') { int handle=GetHandle(cmd->arg(1)); sscanf(cmd->arg(2),"%u",&pos); for(int i=0;i<RD_MAX_CARDS;i++) { for(int j=0;j<RD_MAX_STREAMS;j++) { if(cae_handle[i][j]==handle) { //emit playPositionChanged(handle,cae_output_positions[i][j]); emit playPositionChanged(handle,pos); } } } emit playPositioned(handle,pos); } } if(!strcmp(cmd->arg(0),"PY")) { // Play if(cmd->arg(4)[0]=='+') { emit playing(GetHandle(cmd->arg(1))); } } if(!strcmp(cmd->arg(0),"SP")) { // Stop Play if(cmd->arg(2)[0]=='+') { emit playStopped(GetHandle(cmd->arg(1))); } } if(!strcmp(cmd->arg(0),"TS")) { // Timescale Supported if(sscanf(cmd->arg(1),"%d",&card)==1) { if(cmd->arg(2)[0]=='+') { emit timescalingSupported(card,true); } else { emit timescalingSupported(card,false); } } } if(!strcmp(cmd->arg(0),"LR")) { // Load Record if(cmd->arg(8)[0]=='+') { emit recordLoaded(CardNumber(cmd->arg(1)),StreamNumber(cmd->arg(2))); } } if(!strcmp(cmd->arg(0),"UR")) { // Unload Record if(cmd->arg(4)[0]=='+') { emit recordUnloaded(CardNumber(cmd->arg(1)),StreamNumber(cmd->arg(2)), QString(cmd->arg(3)).toUInt()); } } if(!strcmp(cmd->arg(0),"RD")) { // Record } if(!strcmp(cmd->arg(0),"RS")) { // Record Start if(cmd->arg(3)[0]=='+') { emit recording(CardNumber(cmd->arg(1)),StreamNumber(cmd->arg(2))); } } if(!strcmp(cmd->arg(0),"SR")) { // Stop Record if(cmd->arg(3)[0]=='+') { emit recordStopped(CardNumber(cmd->arg(1)),StreamNumber(cmd->arg(2))); } } if(!strcmp(cmd->arg(0),"IS")) { // Input Status switch(cmd->arg(3)[0]) { case '0': emit inputStatusChanged(CardNumber(cmd->arg(1)), StreamNumber(cmd->arg(2)),true); input_status[CardNumber(cmd->arg(1))][StreamNumber(cmd->arg(2))]= true; break; case '1': emit inputStatusChanged(CardNumber(cmd->arg(1)), StreamNumber(cmd->arg(2)),false); input_status[CardNumber(cmd->arg(1))][StreamNumber(cmd->arg(2))]= false; break; } } }