From b6ae1c6a5e62f4d81dce255b534aae3f25040576 Mon Sep 17 00:00:00 2001 From: jsiegle <jsiegle@mit.edu> Date: Sat, 15 Jun 2013 15:11:38 -0400 Subject: [PATCH] Spikes are now written to disk through the SpikeDisplayCanvas --- Source/Processors/SpikeDetector.cpp | 2 ++ Source/Processors/Visualization/SpikeDisplayCanvas.cpp | 10 +++++++++- Source/Processors/Visualization/SpikeDisplayCanvas.h | 1 + Source/Processors/Visualization/SpikeObject.cpp | 5 +---- Source/Processors/Visualization/SpikeObject.h | 2 +- 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Source/Processors/SpikeDetector.cpp b/Source/Processors/SpikeDetector.cpp index 48d8c18b0..7ee4348b5 100755 --- a/Source/Processors/SpikeDetector.cpp +++ b/Source/Processors/SpikeDetector.cpp @@ -333,6 +333,8 @@ void SpikeDetector::addSpikeEvent(SpikeObject* s, MidiBuffer& eventBuffer, int p // std::cout << "Adding spike event for index " << peakIndex << std::endl; + s->eventType = SPIKE_EVENT_CODE; + int numBytes = packSpike(s, spikeBuffer, 256); eventBuffer.addEvent(spikeBuffer, numBytes, peakIndex); diff --git a/Source/Processors/Visualization/SpikeDisplayCanvas.cpp b/Source/Processors/Visualization/SpikeDisplayCanvas.cpp index a1654099d..cf904d769 100755 --- a/Source/Processors/Visualization/SpikeDisplayCanvas.cpp +++ b/Source/Processors/Visualization/SpikeDisplayCanvas.cpp @@ -416,6 +416,9 @@ SpikePlot::SpikePlot(SpikeDisplayCanvas* sdc, int elecNum, int p, String name_) rangeButtons.add(rangeButton); } + spikeBuffer = new uint8_t[MAX_SPIKE_BUFFER_LEN]; // MAX_SPIKE_BUFFER_LEN defined in SpikeObject.h + + } SpikePlot::~SpikePlot() @@ -536,7 +539,12 @@ void SpikePlot::closeFile() void SpikePlot::writeSpike(const SpikeObject& s) { - // write spike to the file + + packSpike(&s, spikeBuffer, 256); + + fwrite(spikeBuffer, 1, 256, file); + + } String SpikePlot::generateHeader() diff --git a/Source/Processors/Visualization/SpikeDisplayCanvas.h b/Source/Processors/Visualization/SpikeDisplayCanvas.h index b9ba2eccb..ade7bd6c8 100755 --- a/Source/Processors/Visualization/SpikeDisplayCanvas.h +++ b/Source/Processors/Visualization/SpikeDisplayCanvas.h @@ -236,6 +236,7 @@ private: FILE* file; String filename; File dataDirectory; + uint8_t* spikeBuffer; }; diff --git a/Source/Processors/Visualization/SpikeObject.cpp b/Source/Processors/Visualization/SpikeObject.cpp index c2665d123..bb7ce020b 100755 --- a/Source/Processors/Visualization/SpikeObject.cpp +++ b/Source/Processors/Visualization/SpikeObject.cpp @@ -27,16 +27,13 @@ #include "time.h" // Simple method for serializing a SpikeObject into a string of bytes -int packSpike(SpikeObject* s, uint8_t* buffer, int bufferSize) +int packSpike(const SpikeObject* s, uint8_t* buffer, int bufferSize) { //int reqBytes = 1 + 4 + 2 + 2 + 2 + 2 * s->nChannels * s->nSamples + 2 * s->nChannels * 2; int idx = 0; - s->eventType = SPIKE_EVENT_CODE; - - memcpy(buffer+idx, &(s->eventType), 1); idx += 1; diff --git a/Source/Processors/Visualization/SpikeObject.h b/Source/Processors/Visualization/SpikeObject.h index 1bd73f2ec..5a71b9e5b 100755 --- a/Source/Processors/Visualization/SpikeObject.h +++ b/Source/Processors/Visualization/SpikeObject.h @@ -68,7 +68,7 @@ struct SpikeObject }; /** Simple method for serializing a SpikeObject into a string of bytes, returns true is the packaged spike buffer is valid */ -int packSpike(SpikeObject* s, uint8_t* buffer, int bufferLength); +int packSpike(const SpikeObject* s, uint8_t* buffer, int bufferLength); /** Simple method for deserializing a string of bytes into a Spike object, returns true is the provided spike buffer is valid */ bool unpackSpike(SpikeObject* s, const uint8_t* buffer, int bufferLength); -- GitLab