diff --git a/Source/Plugins/SpikeSorter/SpikeSorter.cpp b/Source/Plugins/SpikeSorter/SpikeSorter.cpp index f21edd0253c404fed7a5a1877de8de62220e7f88..3e770324f7e0c9eef383383948c33aa62b58101f 100644 --- a/Source/Plugins/SpikeSorter/SpikeSorter.cpp +++ b/Source/Plugins/SpikeSorter/SpikeSorter.cpp @@ -172,6 +172,7 @@ void SpikeSorter::updateSettings() { mut.enter(); + sorterReady = false; int numChannels = getNumInputs(); if (numChannels > 0) overflowBuffer.setSize(getNumInputs(), overflowBufferSize); @@ -191,7 +192,13 @@ void SpikeSorter::updateSettings() Array<const DataChannel*> chans; for (int c = 0; c < nChans; c++) { - chans.add(getDataChannel(elec->channels[c])); + const DataChannel* ch = getDataChannel(elec->channels[c]); + if (!ch) + { + //not enough channels for the electrodes + return; + } + chans.add(ch); } SpikeChannel* spk = new SpikeChannel(SpikeChannel::typeFromNumChannels(nChans), this, chans); @@ -200,7 +207,7 @@ void SpikeSorter::updateSettings() spikeChannelArray.add(spk); } - + sorterReady = true; mut.exit(); } @@ -647,6 +654,12 @@ bool SpikeSorter::enable() { useOverflowBuffer.clear(); + if (!sorterReady) + { + CoreServices::sendStatusMessage("Not enough channels for the configured electrodes"); + std::cout << "SpikeSorter: Not enough channels for the configured electrodes" << std::endl; + return false; + } for (int i = 0; i < electrodes.size(); i++) useOverflowBuffer.add(false); diff --git a/Source/Plugins/SpikeSorter/SpikeSorter.h b/Source/Plugins/SpikeSorter/SpikeSorter.h index c003a1bf386673faa4fef2bdc6cc31a4040fed98..8f93e89a2cb7868ac29b969dbbf9978e16eb1a47 100644 --- a/Source/Plugins/SpikeSorter/SpikeSorter.h +++ b/Source/Plugins/SpikeSorter/SpikeSorter.h @@ -427,6 +427,8 @@ private: // RHD2000Thread* getRhythmAccess(); bool flipSignal; + bool sorterReady{ false }; + Time timer; void addWaveformToSpikeObject(SpikeEvent::SpikeBuffer& s,