Skip to content

Commit 1e8d6c4

Browse files
committed
Track connected status of probes in settings
1 parent 792283d commit 1e8d6c4

File tree

4 files changed

+26
-13
lines changed

4 files changed

+26
-13
lines changed

Source/Devices/Neuropixels1e.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,8 @@ int Neuropixels1e::configureDevice()
135135

136136
LOGD ("Probe SN: ", probeMetadata.getProbeSerialNumber());
137137

138+
settings[0]->connected = probeMetadata.getProbeSerialNumber() != 0;
139+
138140
return ONI_ESUCCESS;
139141
}
140142

Source/Devices/Neuropixels1f.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ int Neuropixels1f::configureDevice()
127127

128128
LOGD ("Probe SN: ", probeMetadata.getProbeSerialNumber());
129129

130+
settings[0]->connected = probeMetadata.getProbeSerialNumber() != 0;
131+
130132
// Enable device streaming
131133
rc = deviceContext->writeRegister (deviceIdx, 0x8000, 1);
132134
if (rc != ONI_ESUCCESS)

Source/Devices/Neuropixels2e.cpp

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -316,18 +316,22 @@ int Neuropixels2e::configureDevice()
316316
LOGD ("Probe A SN: ", probeMetadata[0].getProbeSerialNumber());
317317
LOGD ("Probe B SN: ", probeMetadata[1].getProbeSerialNumber());
318318

319-
if (probeMetadata[0].getProbeSerialNumber() == 0 && probeMetadata[1].getProbeSerialNumber() == 0)
320-
{
321-
m_numProbes = 0;
322-
throw error_str ("No probes were found connected at address " + std::to_string (getDeviceIdx()));
323-
}
324-
else if (probeMetadata[0].getProbeSerialNumber() != 0 && probeMetadata[1].getProbeSerialNumber() != 0)
319+
m_numProbes = 0;
320+
321+
for(int i = 0; i < NumberOfProbes; i++)
325322
{
326-
m_numProbes = 2;
323+
if (probeMetadata[i].getProbeSerialNumber() != 0)
324+
{
325+
settings[i]->connected = true;
326+
m_numProbes++;
327+
}
328+
else
329+
settings[i]->connected = false;
327330
}
328-
else
331+
332+
if (m_numProbes == 0)
329333
{
330-
m_numProbes = 1;
334+
throw error_str ("No probes were found connected at address " + std::to_string (getDeviceIdx()));
331335
}
332336

333337
streamInfos.clear();
@@ -342,9 +346,9 @@ int Neuropixels2e::configureDevice()
342346

343347
bool Neuropixels2e::updateSettings()
344348
{
345-
for (int i = 0; i < 2; i++)
349+
for (int i = 0; i < NumberOfProbes; i++)
346350
{
347-
if (probeMetadata[i].getProbeSerialNumber() != 0)
351+
if (settings[i]->connected)
348352
{
349353
if (! NeuropixelsProbeMetadata::validateProbeTypeAndPartNumber (settings[i]->probeType, probeMetadata[i]))
350354
{
@@ -416,7 +420,7 @@ bool Neuropixels2e::updateSettings()
416420

417421
for (int i = 0; i < NumberOfProbes; i++)
418422
{
419-
if (probeMetadata[i].getProbeSerialNumber() != 0)
423+
if (settings[i]->connected)
420424
{
421425
selectProbe (serializer.get(), i == 0 ? ProbeASelected : ProbeBSelected);
422426
writeConfiguration (settings[i].get());
@@ -554,7 +558,7 @@ void Neuropixels2e::addSourceBuffers (OwnedArray<DataBuffer>& sourceBuffers)
554558
if (m_numProbes == 1)
555559
{
556560
sourceBuffers.add (new DataBuffer (streamInfos.getFirst().getNumChannels(), (int) streamInfos.getFirst().getSampleRate() * bufferSizeInSeconds));
557-
auto bufferIndex = probeMetadata[0].getProbeSerialNumber() != 0 ? 0 : 1;
561+
auto bufferIndex = settings[0]->connected ? 0 : 1;
558562
amplifierBuffer[bufferIndex] = sourceBuffers.getLast();
559563
}
560564
else

Source/NeuropixelsComponents.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@ struct ProbeSettings
287287
lfpGainIndex = newSettings->lfpGainIndex;
288288
referenceIndex = newSettings->referenceIndex;
289289
apFilterState = newSettings->apFilterState;
290+
connected = newSettings->connected;
290291

291292
selectedBank = newSettings->selectedBank;
292293
selectedShank = newSettings->selectedShank;
@@ -344,6 +345,7 @@ struct ProbeSettings
344345
int lfpGainIndex = 0;
345346
int referenceIndex = 0;
346347
bool apFilterState = false;
348+
bool connected = false;
347349

348350
std::vector<Bank> selectedBank;
349351
std::vector<int> selectedShank;
@@ -576,6 +578,9 @@ static class NeuropixelsHelpers
576578
{
577579
ProbeSettings* probeSetting = it->get();
578580

581+
if (! probeSetting->connected)
582+
continue;
583+
579584
for (int i = probeSetting->numberOfChannels - 1; i >= 0; i--)
580585
{
581586
auto channel = *channels--;

0 commit comments

Comments
 (0)