diff --git a/StateMachineController.cpp b/StateMachineController.cpp index 1a3da69..32c3bef 100644 --- a/StateMachineController.cpp +++ b/StateMachineController.cpp @@ -64,18 +64,21 @@ StateMachineController::StateMachineController(QObject *parent) // nidaq->DAQmxInitializeInterface(); tdt = new TDTInterface(); - tdt->initializeInterface(); - - logFileThread = new QThread(this); - logFileWriter = new LogFileWriter(); - - /*Thread-safe event communication*/ - connect(this, SIGNAL(openLogFile(QString)), logFileWriter, SLOT(onOpen(QString))); - connect(this, SIGNAL(closeLogFile()), logFileWriter, SLOT(onClose())); - connect(this, SIGNAL(writeToLogFile(QString, uint, uint, QString)), logFileWriter, SLOT(onWrite(QString, uint, uint, QString))); - connect(nidaq, SIGNAL(writeToLogFile(QString, uint, uint, QString)), logFileWriter, SLOT(onWrite(QString, uint, uint, QString))); - logFileWriter->moveToThread(logFileThread); - logFileThread->start(); + if(!tdt->initializeInterface()){ + logFileThread = new QThread(this); + logFileWriter = new LogFileWriter(); + + /*Thread-safe event communication*/ + connect(this, SIGNAL(openLogFile(QString)), logFileWriter, SLOT(onOpen(QString))); + connect(this, SIGNAL(closeLogFile()), logFileWriter, SLOT(onClose())); + connect(this, SIGNAL(writeToLogFile(QString, uint, uint, QString)), logFileWriter, SLOT(onWrite(QString, uint, uint, QString))); + connect(nidaq, SIGNAL(writeToLogFile(QString, uint, uint, QString)), logFileWriter, SLOT(onWrite(QString, uint, uint, QString))); + logFileWriter->moveToThread(logFileThread); + logFileThread->start(); + }else{ + QMessageBox messageBox; + messageBox.critical(0,"Error","Unable to initialize TDT audio interface!"); + } } diff --git a/StateMachineController.h b/StateMachineController.h index 64baeb9..efd1489 100644 --- a/StateMachineController.h +++ b/StateMachineController.h @@ -9,6 +9,7 @@ #include #include #include +#include #include #include //std::random_shuffle diff --git a/TDTInterface.cpp b/TDTInterface.cpp index 22d948d..adbec8e 100644 --- a/TDTInterface.cpp +++ b/TDTInterface.cpp @@ -1,14 +1,14 @@ #include "TDTInterface.h" /* initialize TDT Sound System */ -void TDTInterface::initializeInterface() +int TDTInterface::initializeInterface() { /* connect to RP2 system */ if (!rp.ConnectRP2("USB", 1)) { fprintf(stderr, "TDTError:TDTInterface/TDTInitializeInterface:\n\tfailed to connect to RP2!\n"); - exit(EXIT_FAILURE); + return(EXIT_FAILURE); } /* check status */ @@ -28,7 +28,7 @@ void TDTInterface::initializeInterface() rp.ClearCOF(); } - return; + return 0; } /* destroy TDT Engine */ diff --git a/TDTInterface.h b/TDTInterface.h index 70caed8..cf270e3 100644 --- a/TDTInterface.h +++ b/TDTInterface.h @@ -14,7 +14,7 @@ class TDTInterface static const int TDT_STATUS_CIRCUIT_RUNNING = 0x04; /* funciton prototypes */ - void initializeInterface(); + int initializeInterface(); void loadRCXCircuit(QString fileName); void destroyInterface();