diff --git a/core-buffer/include/RamBuffer.hpp b/core-buffer/include/RamBuffer.hpp index a202033..45b67a1 100644 --- a/core-buffer/include/RamBuffer.hpp +++ b/core-buffer/include/RamBuffer.hpp @@ -28,8 +28,8 @@ public: void write_frame(const ModuleFrame &src_meta, const char *src_data) const; void read_frame(const uint64_t pulse_id, const uint64_t module_id, - ModuleFrame *&meta, - char *&data) const; + ModuleFrame &meta, + char *data) const; char* read_image(const uint64_t pulse_id, ImageMetadata &image_meta) const; }; diff --git a/core-buffer/src/RamBuffer.cpp b/core-buffer/src/RamBuffer.cpp index 0179528..bcf614b 100644 --- a/core-buffer/src/RamBuffer.cpp +++ b/core-buffer/src/RamBuffer.cpp @@ -69,16 +69,19 @@ void RamBuffer::write_frame( void RamBuffer::read_frame( const uint64_t pulse_id, const uint64_t module_id, - ModuleFrame*& meta, - char*& data) const + ModuleFrame& dst_meta, + char* dst_data) const { const size_t slot_n = pulse_id % n_slots_; - meta = meta_buffer_ + (n_modules_ * slot_n) + module_id; + ModuleFrame *src_meta = meta_buffer_ + (n_modules_ * slot_n) + module_id; - data = image_buffer_ + - (image_bytes_ * slot_n) + - (MODULE_N_BYTES * module_id); + char *src_data = image_buffer_ + + (image_bytes_ * slot_n) + + (MODULE_N_BYTES * module_id); + + memcpy(&dst_meta, src_meta, sizeof(ModuleFrame)); + memcpy(dst_data, src_data, MODULE_N_BYTES); } char* RamBuffer::read_image(const uint64_t pulse_id,