diff --git a/Source/Processors/SpikeDetector.cpp b/Source/Processors/SpikeDetector.cpp index 48d8c18b0b77755867ec5bd5ca74e9f0019882e2..7ee4348b5d249bb15f5467c8f61004af599ea905 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 a1654099d2902937e6ddc40df0deee9afaa4f4a2..cf904d76971b00497d37da260b8c413dfe337bcd 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 b9ba2eccbfdddb24df3e8a4fb0e8690ed6a51e7a..ade7bd6c87f6e441a1e798be39209d796dc9488e 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 c2665d123aca88f6505a8b9432228b22d30d8be2..bb7ce020b4f4ddc6ec1e19f0eb6db375f2c857d3 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 1bd73f2ec990f3f2293f7808e7163191f97ff46e..5a71b9e5b9b8a74e553b7a926a15003b63e44fbb 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);