From 5438ae5f7abb97036ea17cb7acd5add9c8a53b98 Mon Sep 17 00:00:00 2001 From: Andrej Babic Date: Wed, 11 Nov 2020 15:45:30 +0100 Subject: [PATCH] Finish buffer reader --- sf_daq_broker/detector/buffer_reader.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/sf_daq_broker/detector/buffer_reader.py b/sf_daq_broker/detector/buffer_reader.py index 56969c1..7e030b7 100644 --- a/sf_daq_broker/detector/buffer_reader.py +++ b/sf_daq_broker/detector/buffer_reader.py @@ -34,7 +34,7 @@ class BufferReader(object): self._file = None self._filename = None - def read_frame(self, pulse_id): + def load_frame(self, pulse_id): pulse_filename, pulse_index = self._get_pulse_id_location(pulse_id) if pulse_filename != self._filename: @@ -89,8 +89,21 @@ class RamBuffer(object): self.raw_buffer = bytearray(self.n_modules * self.n_slots * BUFFER_FRAME_BYTES) - def get_raw_buffer(self, module_id, pulse_id): - buffer_index_start = pulse_id % self.n_slots - buffer_index_end = buffer_index_start + BUFFER_FRAME_BYTES + def get_buffers(self, module_id, pulse_id): + # pulse_id index in RAM buffer + buffer_index = pulse_id % self.n_slots + # pulse_id index bytes offset in RAM buffer + pulse_id_offset = buffer_index * self.n_modules * BUFFER_FRAME_BYTES - return memoryview(self.raw_buffer)[buffer_index_start:buffer_index_end] + # Pulse_id slot offset + module_id offset in meta buffer. + meta_offset_start = pulse_id_offset + (module_id * META_FRAME_BYTES) + meta_offset_end = meta_offset_start + META_FRAME_BYTES + + # Pulse_id slot offset + metadata buffer offset + module_id offset in data buffer. + data_offset_start = pulse_id_offset + (self.n_modules * META_FRAME_BYTES) + (module_id * DATA_FRAME_BYTES) + data_offset_end = data_offset_start + DATA_FRAME_BYTES + + meta_buffer = memoryview(self.raw_buffer)[meta_offset_start:meta_offset_end] + data_buffer = memoryview(self.raw_buffer)[data_offset_start:data_offset_end] + + return meta_buffer, data_buffer