mirror of
https://github.com/paulscherrerinstitute/sf_daq_buffer.git
synced 2026-04-28 11:22:47 +02:00
65 lines
1.6 KiB
C++
65 lines
1.6 KiB
C++
#include <iostream>
|
|
#include <chrono>
|
|
#include <UdpReceiver.hpp>
|
|
#include "jungfrau.hpp"
|
|
|
|
|
|
using namespace std;
|
|
|
|
int main (int argc, char *argv[]) {
|
|
if (argc != 4) {
|
|
cout << endl;
|
|
cout << "Usage: sf_buffer [device_name] [udp_port] [root_folder]";
|
|
cout << endl;
|
|
cout << "\tdevice_name: Name to write to disk.";
|
|
cout << "\tudp_port: UDP port to connect to." << endl;
|
|
cout << "\troot_folder: FS root folder." << endl;
|
|
cout << endl;
|
|
|
|
exit(-1);
|
|
}
|
|
|
|
string device_name = string(argv[1]);
|
|
int udp_port = atoi(argv[2]);
|
|
string root_folder = string(argv[3]);
|
|
|
|
UdpReceiver receiver;
|
|
receiver.bind(udp_port);
|
|
|
|
jungfrau_packet recv_buffer;
|
|
|
|
uint64_t current_pulse_id = 0;
|
|
uint64_t n_recv_packets = 0;
|
|
uint64_t n_missing_packets = 0;
|
|
uint16_t loop_counter = 0;
|
|
|
|
while (true) {
|
|
if (receiver.receive(&recv_buffer, sizeof(jungfrau_packet))) {
|
|
|
|
loop_counter++;
|
|
|
|
if (recv_buffer.bunchid != current_pulse_id) {
|
|
if (current_pulse_id != 0) {
|
|
n_missing_packets += (128-n_recv_packets);
|
|
}
|
|
n_recv_packets = 0;
|
|
current_pulse_id = recv_buffer.bunchid;
|
|
}
|
|
|
|
n_recv_packets++;
|
|
|
|
if (loop_counter == 1000) {
|
|
|
|
using namespace date;
|
|
using namespace chrono;
|
|
|
|
cout << system_clock::now();
|
|
cout << " miss " << n_missing_packets;
|
|
cout << endl;
|
|
|
|
loop_counter = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|