mirror of
https://github.com/paulscherrerinstitute/sf_daq_buffer.git
synced 2026-04-29 18:22:23 +02:00
Buffer metadata until the end when you flush the file
This commit is contained in:
+46
-25
@@ -43,6 +43,21 @@ int main (int argc, char *argv[]) {
|
||||
uint64_t n_missed_frames = 0;
|
||||
uint64_t last_pulse_id = 0;
|
||||
|
||||
auto* buffer_pulse_id = new uint64_t[FILE_MOD];
|
||||
memset(buffer_pulse_id, 0, FILE_MOD);
|
||||
|
||||
auto* buffer_frame_id = new uint64_t[FILE_MOD];
|
||||
memset(buffer_frame_id, 0, FILE_MOD);
|
||||
|
||||
auto* buffer_daq_rec = new uint32_t[FILE_MOD];
|
||||
memset(buffer_daq_rec, 0, FILE_MOD);
|
||||
|
||||
auto* buffer_recv_packets_1 = new uint64_t[FILE_MOD];
|
||||
memset(buffer_recv_packets_1, 0, FILE_MOD);
|
||||
|
||||
auto* buffer_recv_packets_2 = new uint64_t[FILE_MOD];
|
||||
memset(buffer_recv_packets_2, 0, FILE_MOD);
|
||||
|
||||
while (true) {
|
||||
auto data = ring_buffer.read();
|
||||
|
||||
@@ -61,43 +76,49 @@ int main (int argc, char *argv[]) {
|
||||
if (current_file != frame_file) {
|
||||
current_file = frame_file;
|
||||
|
||||
writer.write_data("pulse_id", 0, (char*) buffer_pulse_id,
|
||||
{1}, 8*FILE_MOD, "uint64", "little");
|
||||
|
||||
writer.write_data("frame_id", 0, (char*) buffer_frame_id,
|
||||
{1}, 8*FILE_MOD, "uint64", "little");
|
||||
|
||||
writer.write_data("daq_rec", 0, (char*) buffer_daq_rec,
|
||||
{1}, 8*FILE_MOD, "uint32", "little");
|
||||
|
||||
writer.write_data("recv_packets_1", 0, (char*) buffer_recv_packets_1,
|
||||
{1}, 8*FILE_MOD, "uint64", "little");
|
||||
|
||||
writer.write_data("recv_packets_2", 0, (char*) buffer_recv_packets_2,
|
||||
{1}, 8*FILE_MOD, "uint64", "little");
|
||||
|
||||
writer.close_file();
|
||||
|
||||
memset(buffer_pulse_id, 0, FILE_MOD);
|
||||
memset(buffer_frame_id, 0, FILE_MOD);
|
||||
memset(buffer_daq_rec, 0, FILE_MOD);
|
||||
memset(buffer_recv_packets_1, 0, FILE_MOD);
|
||||
memset(buffer_recv_packets_2, 0, FILE_MOD);
|
||||
|
||||
WriterUtils::create_destination_folder(current_file);
|
||||
writer.create_file(current_file);
|
||||
}
|
||||
|
||||
auto file_frame_index = get_file_frame_index(pulse_id);
|
||||
|
||||
writer.write_data(
|
||||
"image", file_frame_index,
|
||||
data.second, {512,1024},
|
||||
JUNGFRAU_DATA_BYTES_PER_FRAME, "uint16", "little");
|
||||
memcpy((void*) buffer_pulse_id[file_frame_index],
|
||||
(void*) (&data.first->pulse_id), 8);
|
||||
|
||||
writer.write_data(
|
||||
"pulse_id", file_frame_index,
|
||||
(char*)(&data.first->pulse_id), {1}, 8,
|
||||
"uint64", "little");
|
||||
memcpy((void*) buffer_frame_id[file_frame_index],
|
||||
(void*) (&data.first->frame_index), 8);
|
||||
|
||||
writer.write_data(
|
||||
"frame_id", file_frame_index,
|
||||
(char*)(&data.first->frame_index), {1}, 8,
|
||||
"uint64", "little");
|
||||
memcpy((void*) buffer_daq_rec[file_frame_index],
|
||||
(void*) (&data.first->daq_rec), 8);
|
||||
|
||||
writer.write_data(
|
||||
"daq_rec", file_frame_index,
|
||||
(char*)(&data.first->daq_rec), {1}, 8,
|
||||
"uint32", "little");
|
||||
memcpy((void*) buffer_recv_packets_1[file_frame_index],
|
||||
(void*) (&data.first->recv_packets_1), 8);
|
||||
|
||||
writer.write_data(
|
||||
"recv_packets_1", file_frame_index,
|
||||
(char*)(&data.first->recv_packets_1), {1}, 8,
|
||||
"uint64", "little");
|
||||
|
||||
writer.write_data(
|
||||
"recv_packets_2", file_frame_index,
|
||||
(char*)(&data.first->recv_packets_2), {1}, 8,
|
||||
"uint64", "little");
|
||||
memcpy((void*) buffer_recv_packets_2[file_frame_index],
|
||||
(void*) (&data.first->recv_packets_2), 8);
|
||||
|
||||
ring_buffer.release(data.first->buffer_slot_index);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user