diff --git a/Source/Processors/DataThreads/RHD2000Thread.cpp b/Source/Processors/DataThreads/RHD2000Thread.cpp index a3f714f105e27f6860559ab99440e0eb9f718a8b..ba0714ac243250ec0b9bff36d72d6b9d5d38c2b2 100644 --- a/Source/Processors/DataThreads/RHD2000Thread.cpp +++ b/Source/Processors/DataThreads/RHD2000Thread.cpp @@ -349,7 +349,7 @@ void RHD2000Thread::initializeBoard() bitfilename = executableDirectory; bitfilename += File::separatorString; - bitfilename += "rhd2000.bit"; + bitfilename += evalBoard->isUSB3() ? "rhd2000_usb3.bit" : "rhd2000.bit"; if (!uploadBitfile(bitfilename)) { @@ -597,13 +597,13 @@ void RHD2000Thread::scanPorts() int chipIdx = 0; for (hs = 0; hs < MAX_NUM_HEADSTAGES; ++hs) { - if ((tmpChipId[hs] > 0) && (enabledStreams.size() < MAX_NUM_DATA_STREAMS)) + if ((tmpChipId[hs] > 0) && (enabledStreams.size() < MAX_NUM_DATA_STREAMS(evalBoard->isUSB3()))) { chipId.set(chipIdx++,tmpChipId[hs]); //std::cout << "Enabling headstage on stream " << stream << std::endl; if (tmpChipId[hs] == CHIP_ID_RHD2164) //RHD2164 { - if (enabledStreams.size() < MAX_NUM_DATA_STREAMS - 1) + if (enabledStreams.size() < MAX_NUM_DATA_STREAMS(evalBoard->isUSB3()) - 1) { enableHeadstage(hs,true,2,32); chipId.set(chipIdx++,CHIP_ID_RHD2164_B); @@ -1072,7 +1072,7 @@ bool RHD2000Thread::enableHeadstage(int hsNum, bool enabled, int nStr, int strCh void RHD2000Thread::updateBoardStreams() { - for (int i=0; i < MAX_NUM_DATA_STREAMS; i++) + for (int i=0; i < MAX_NUM_DATA_STREAMS(evalBoard->isUSB3()); i++) { if (i < enabledStreams.size()) { @@ -2055,7 +2055,7 @@ void RHDImpedanceMeasure::runImpedanceMeasurement() int chOffset; Array<int> enabledStreams; - for (stream = 0; stream < MAX_NUM_DATA_STREAMS; ++stream) + for (stream = 0; stream < MAX_NUM_DATA_STREAMS(board->evalBoard->isUSB3()); ++stream) { CHECK_EXIT; if (board->evalBoard->isStreamEnabled(stream)) diff --git a/Source/Processors/DataThreads/RHD2000Thread.h b/Source/Processors/DataThreads/RHD2000Thread.h index 7b6a5568d10023f30148a6fc4484d28277d70dec..c74fefd8adb6f4d18ec4659442bb22e4303ab8df 100644 --- a/Source/Processors/DataThreads/RHD2000Thread.h +++ b/Source/Processors/DataThreads/RHD2000Thread.h @@ -39,9 +39,12 @@ #include "DataThread.h" #include "../GenericProcessor/GenericProcessor.h" -#define MAX_NUM_DATA_STREAMS 8 +#define MAX_NUM_DATA_STREAMS_USB2 8 +#define MAX_NUM_DATA_STREAMS_USB3 16 #define MAX_NUM_HEADSTAGES 8 +#define MAX_NUM_DATA_STREAMS(u3) (u3 ? MAX_NUM_DATA_STREAMS_USB3 : MAX_NUM_DATA_STREAMS_USB2) + class SourceNode; class RHDHeadstage; class RHDImpedanceMeasure; diff --git a/Source/Processors/DataThreads/rhythm-api/rhd2000evalboard.cpp b/Source/Processors/DataThreads/rhythm-api/rhd2000evalboard.cpp index 0e24f8da2fb4580c8a6761143c3356ca83b591ec..fb302d3ce9f24855fa946d1bfc9446e77a13a132 100755 --- a/Source/Processors/DataThreads/rhythm-api/rhd2000evalboard.cpp +++ b/Source/Processors/DataThreads/rhythm-api/rhd2000evalboard.cpp @@ -44,7 +44,7 @@ Rhd2000EvalBoard::Rhd2000EvalBoard() dev = 0; usb3 = false; - for (i = 0; i < MAX_NUM_DATA_STREAMS; ++i) { + for (i = 0; i < MAX_NUM_DATA_STREAMS_USB3; ++i) { dataStreamEnabled[i] = 0; } @@ -1575,7 +1575,7 @@ void Rhd2000EvalBoard::resetFpga() bool Rhd2000EvalBoard::isStreamEnabled(int streamIndex) { - if (streamIndex < 0 || streamIndex > (MAX_NUM_DATA_STREAMS - 1)) + if (streamIndex < 0 || streamIndex > (MAX_NUM_DATA_STREAMS_USB3 - 1)) return false; return dataStreamEnabled[streamIndex];