mirror of
https://github.com/paulscherrerinstitute/sf_daq_buffer.git
synced 2026-05-09 06:22:03 +02:00
Made interface more simple for sf_live
This commit is contained in:
@@ -2,12 +2,23 @@
|
||||
#define SF_DAQ_BUFFER_LIVEH5READER_HPP
|
||||
|
||||
#include <string>
|
||||
#include <memory>
|
||||
#include "jungfrau.hpp"
|
||||
#include "buffer_config.hpp"
|
||||
|
||||
class LiveH5Reader {
|
||||
|
||||
struct LiveBufferMetadata {
|
||||
uint64_t pulse_id[core_buffer::FILE_MOD];
|
||||
uint64_t frame_index[core_buffer::FILE_MOD];
|
||||
uint32_t daq_rec[core_buffer::FILE_MOD];
|
||||
uint16_t n_received_packets[core_buffer::FILE_MOD];
|
||||
};
|
||||
|
||||
const std::string current_filename_;
|
||||
const uint16_t source_id_;
|
||||
std::unique_ptr<LiveBufferMetadata> metadata_buffer_;
|
||||
std::unique_ptr<uint16_t[]> data_buffer_;
|
||||
|
||||
public:
|
||||
LiveH5Reader(
|
||||
@@ -16,8 +27,10 @@ public:
|
||||
const uint16_t source_id);
|
||||
|
||||
uint64_t get_latest_pulse_id();
|
||||
ModuleFrame* read_frame_metadata(uint64_t pulse_id);
|
||||
char* read_frame_data(uint64_t pulse_id);
|
||||
void load_pulse_id(uint64_t pulse_id);
|
||||
|
||||
ModuleFrame* get_metadata();
|
||||
char* get_data();
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -20,14 +20,16 @@ void sf_live (
|
||||
auto current_pulse_id = reader.get_latest_pulse_id();
|
||||
while (true) {
|
||||
|
||||
auto metadata = reader.read_frame_metadata(current_pulse_id);
|
||||
reader.load_pulse_id(current_pulse_id);
|
||||
|
||||
auto metadata = reader.get_metadata();
|
||||
|
||||
zmq_send(socket,
|
||||
(char*) metadata,
|
||||
sizeof(ModuleFrame),
|
||||
ZMQ_SNDMORE);
|
||||
|
||||
auto data = reader.read_frame_data(current_pulse_id);
|
||||
auto data = reader.get_data();
|
||||
|
||||
zmq_send(socket,
|
||||
data,
|
||||
|
||||
Reference in New Issue
Block a user