From 30914395828b40b855eb91bc44e550b52fabcaf6 Mon Sep 17 00:00:00 2001
From: Aaron Cuevas Lopez <aacuelo@teleco.upv.es>
Date: Fri, 6 Mar 2015 19:27:30 +0100
Subject: [PATCH] Read proper channels on RHD2132 16ch headstage

---
 Source/Processors/DataThreads/RHD2000Thread.cpp | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/Source/Processors/DataThreads/RHD2000Thread.cpp b/Source/Processors/DataThreads/RHD2000Thread.cpp
index d210a6e02..74d710d4b 100644
--- a/Source/Processors/DataThreads/RHD2000Thread.cpp
+++ b/Source/Processors/DataThreads/RHD2000Thread.cpp
@@ -42,6 +42,7 @@
 #define CHIP_ID_RHD2164_B  1000
 #define REGISTER_59_MISO_A  53
 #define REGISTER_59_MISO_B  58
+#define RHD2132_16CH_OFFSET 8
 
 // Allocates memory for a 3-D array of doubles.
 void allocateDoubleArray3D(std::vector<std::vector<std::vector<double> > >& array3D,
@@ -1456,7 +1457,7 @@ bool RHD2000Thread::stopAcquisition()
 
 bool RHD2000Thread::updateBuffer()
 {
-
+	int chOffset;
     //cout << "Number of 16-bit words in FIFO: " << evalBoard->numWordsInFifo() << endl;
     //cout << "Block size: " << blockSize << endl;
 
@@ -1473,7 +1474,10 @@ bool RHD2000Thread::updateBuffer()
             // do the neural data channels first
             for (int dataStream = 0; dataStream < enabledStreams.size(); dataStream++)
             {
-
+				if ((chipId[dataStream] == CHIP_ID_RHD2132) && (numChannelsPerDataStream[dataStream] == 16)) //RHD2132 16ch. headstage
+					chOffset = RHD2132_16CH_OFFSET;
+				else
+					chOffset = 0;
                 for (int chan = 0; chan < numChannelsPerDataStream[dataStream]; chan++)
                 {
 
@@ -1481,7 +1485,7 @@ bool RHD2000Thread::updateBuffer()
 
                     channel++;
 
-                    int value = dataBlock->amplifierData[dataStream][chan][samp];
+                    int value = dataBlock->amplifierData[dataStream][chan+chOffset][samp];
 
                     thisSample[channel] = float(value-32768)*0.195f;
                 }
-- 
GitLab