From dd80c5ec007d50faf0d63e5504315ba20a96fa15 Mon Sep 17 00:00:00 2001
From: Aaron Cuevas Lopez <aacuelo@teleco.upv.es>
Date: Tue, 29 Aug 2017 20:41:57 +0200
Subject: [PATCH] Update event channel handling in recordnode

---
 Source/Plugins/NWBFormat/NWBRecording.cpp        | 16 +++++++---------
 Source/Plugins/NWBFormat/NWBRecording.h          |  1 -
 .../Processors/RecordNode/EngineConfigWindow.cpp |  2 +-
 Source/Processors/RecordNode/OriginalRecording.h |  2 +-
 Source/Processors/RecordNode/RecordEngine.cpp    |  9 +++++++++
 Source/Processors/RecordNode/RecordEngine.h      |  7 ++++---
 6 files changed, 22 insertions(+), 15 deletions(-)

diff --git a/Source/Plugins/NWBFormat/NWBRecording.cpp b/Source/Plugins/NWBFormat/NWBRecording.cpp
index 081a4ff9b..e729934bb 100644
--- a/Source/Plugins/NWBFormat/NWBRecording.cpp
+++ b/Source/Plugins/NWBFormat/NWBRecording.cpp
@@ -98,6 +98,10 @@
 	 for (int i = 0; i < nEvents; i++)
 		 eventChannels.add(getEventChannel(i));
 
+	 int nSpikes = getNumRecordedSpikes();
+	 for (int i = 0; i < nSpikes; i++)
+		 spikeChannels.add(getSpikeChannel(i));
+
 	 //open the file
 	 recordFile->open(getNumRecordedChannels() + continuousChannels.size() + eventChannels.size() + spikeChannels.size()); //total channels + timestamp arrays, to create a big enough buffer
 
@@ -113,19 +117,14 @@
 	 recordFile->stopRecording();
 	 recordFile->close();
 	 recordFile = nullptr;
-	 resetChannels(false);
+	 resetChannels();
  }
 
- void NWBRecordEngine::resetChannels()
- {
-	 resetChannels(true);
- }
 
  
- void NWBRecordEngine::resetChannels(bool resetSpikes)
+ void NWBRecordEngine::resetChannels()
  {
-	 if (resetSpikes)
-		 spikeChannels.clear();
+	 spikeChannels.clear();
 	 eventChannels.clear();
 	 continuousChannels.clear();
 	 datasetIndexes.clear();
@@ -171,7 +170,6 @@ void NWBRecordEngine::writeTimestampSyncText(uint16 sourceID, uint16 sourceIdx,
 
 void NWBRecordEngine::addSpikeElectrode(int index,const  SpikeChannel* elec) 
 {
-	spikeChannels.add(elec);
 }
 
 void NWBRecordEngine::writeSpike(int electrodeIndex, const SpikeEvent* spike) 
diff --git a/Source/Plugins/NWBFormat/NWBRecording.h b/Source/Plugins/NWBFormat/NWBRecording.h
index e521a34c3..e74219d6c 100644
--- a/Source/Plugins/NWBFormat/NWBRecording.h
+++ b/Source/Plugins/NWBFormat/NWBRecording.h
@@ -48,7 +48,6 @@
 			static RecordEngineManager* getEngineManager();
 			
 		private:
-			void resetChannels(bool resetSpikes);
 			ScopedPointer<NWBFile> recordFile;
 			Array<int> datasetIndexes;
 			Array<int> writeChannelIndexes;
diff --git a/Source/Processors/RecordNode/EngineConfigWindow.cpp b/Source/Processors/RecordNode/EngineConfigWindow.cpp
index 309748230..ffd7e0054 100644
--- a/Source/Processors/RecordNode/EngineConfigWindow.cpp
+++ b/Source/Processors/RecordNode/EngineConfigWindow.cpp
@@ -78,7 +78,7 @@ EngineParameterComponent::EngineParameterComponent(EngineParameter& param)
         addAndMakeVisible(lab);
         control = lab;
     }
-    this->setTooltip(param.name);
+    this->setTooltip(name);
 }
 
 EngineParameterComponent::~EngineParameterComponent()
diff --git a/Source/Processors/RecordNode/OriginalRecording.h b/Source/Processors/RecordNode/OriginalRecording.h
index 3730992ec..849e479f1 100644
--- a/Source/Processors/RecordNode/OriginalRecording.h
+++ b/Source/Processors/RecordNode/OriginalRecording.h
@@ -44,7 +44,7 @@ public:
     OriginalRecording();
     ~OriginalRecording();
 
-    void setParameter(EngineParameter& parameter);
+    void setParameter(EngineParameter& parameter) override;
     String getEngineID() const override;
     void openFiles(File rootFolder, int experimentNumber, int recordingNumber) override;
 	void closeFiles() override;
diff --git a/Source/Processors/RecordNode/RecordEngine.cpp b/Source/Processors/RecordNode/RecordEngine.cpp
index fc9a8db2b..c627fd54b 100644
--- a/Source/Processors/RecordNode/RecordEngine.cpp
+++ b/Source/Processors/RecordNode/RecordEngine.cpp
@@ -108,6 +108,11 @@ int RecordEngine::getNumRecordedEvents() const
 	return AccessClass::getProcessorGraph()->getRecordNode()->getTotalEventChannels();
 }
 
+int RecordEngine::getNumRecordedSpikes() const
+{
+	return AccessClass::getProcessorGraph()->getRecordNode()->getTotalSpikeChannels();
+}
+
 void RecordEngine::registerSpikeSource (const GenericProcessor* processor) {}
 
 int RecordEngine::getNumRecordedProcessors() const
@@ -186,6 +191,10 @@ EngineParameter::EngineParameter (EngineParameter::EngineParameterType paramType
     {
         strParam.value = defaultValue;
     }
+	else if (paramType == MULTI)
+	{
+		multiParam.value = defaultValue;
+	}
 }
 
 
diff --git a/Source/Processors/RecordNode/RecordEngine.h b/Source/Processors/RecordNode/RecordEngine.h
index b75e45e06..d6234c07d 100644
--- a/Source/Processors/RecordNode/RecordEngine.h
+++ b/Source/Processors/RecordNode/RecordEngine.h
@@ -167,7 +167,7 @@ protected:
     /** Generate a Matlab-compatible datestring */
     String generateDateString() const;
 
-    /** Gets the current block's first timestamp for a given channel */
+    /** Gets the current block's first timestamp for a given recorded channel */
     int64 getTimestamp (int channel) const;
 
     /** Gets the actual channel number from a recorded channel index */
@@ -180,8 +180,9 @@ protected:
 	 (right now all channels are recorded) */
 	int getNumRecordedEvents() const;
 
-	/** TODO: to fill when the probe system is implemented*/
-	//int getNumRecordedSpikes() const;
+	/** Gets the number of recorded spike channels
+	(right now all channels are recorded) */
+	int getNumRecordedSpikes() const;
 
     /** Gets the number of processors being recorded
     */
-- 
GitLab