core adjustments for eiger header. more debug msgs

This commit is contained in:
2021-02-17 16:08:59 +01:00
parent 1de8f66bdc
commit 150bf41bf2
15 changed files with 113 additions and 72 deletions
+1 -1
View File
@@ -9,7 +9,7 @@ target_link_libraries(core-buffer-lib
external)
if (USE_EIGER)
target_compile_definitions(core-buffer-lib INTERFACE -DUSE_EIGER)
target_compile_definitions(core-buffer-lib PUBLIC -DUSE_EIGER)
endif (USE_EIGER)
if (DEBUG_OUTPUT)
+4 -8
View File
@@ -140,14 +140,10 @@ BufferUtils::DetectorConfig BufferUtils::read_json_config(
config_parameters.ParseStream(isw);
BufferUtils::DetectorConfig det_config = {
// config_parameters["streamvis_stream"].GetString(),
"",
// config_parameters["streamvis_rate"].GetInt(),
-1,
// config_parameters["live_stream"].GetString(),
"",
// config_parameters["live_rate"].GetInt(),
-1,
config_parameters["streamvis_stream"].GetString(),
config_parameters["streamvis_rate"].GetInt(),
config_parameters["live_stream"].GetString(),
config_parameters["live_rate"].GetInt(),
// config_parameters["pedestal_file"].GetString(),
"",
// config_parameters["gain_file"].GetString(),
+14 -1
View File
@@ -89,6 +89,10 @@ void RamBuffer::write_frame(
cout << " || src_meta.daq_rec " << src_meta.daq_rec;
cout << " || src_meta.module_id " << src_meta.module_id;
cout << " || dst_data " << dst_data;
cout << " || image_buffer_ " << image_buffer_;
cout << " || image_bytes_ " << image_bytes_;
cout << " || slot_n " << slot_n;
cout << " || MODULE_N_BYTES " << MODULE_N_BYTES;
cout << endl;
#endif
@@ -138,7 +142,16 @@ char* RamBuffer::read_image(const uint64_t pulse_id,
}
if (!is_pulse_init) {
#ifdef DEBUG_OUTPUT
using namespace date;
cout << " [" << std::chrono::system_clock::now();
cout << "] [RamBuffer::read_image] !is_pulse_init:";
cout << "Frame_meta pulse id: " << frame_meta->pulse_id;
cout << " || pulse id: " << pulse_id;
cout << " || frame_meta->n_recv_packets " << frame_meta->n_recv_packets;
cout << " || frame_index: " << frame_meta->frame_index;
cout << endl;
#endif
if (frame_meta->pulse_id != pulse_id) {
throw runtime_error("Wrong pulse_id in ram buffer slot.");
}
+4
View File
@@ -1,4 +1,8 @@
{
"streamvis_stream": "tcp://0.0.0.0:9006",
"streamvis_rate": 10,
"live_stream": "tcp://0.0.0.0:9106",
"live_rate": 10,
"detector_name": "Eiger",
"n_modules": 1,
"start_udp_port": 50200
+3 -3
View File
@@ -1,8 +1,8 @@
hostname localhost:2050+
0:udp_dstport 50100
0:udp_dstport2 50101
0:udp_dstport 50200
0:udp_dstport2 50201
0:udp_dstip 127.0.0.1
0:udp_dstmac 90:1b:0e:19:1c:ae
0:udp_srcip 129.129.130.177
0:udp_srcmac 90:1b:0e:19:1c:ae
0:udp_srcmac 90:1b:0e:19:1c:ae
+2
View File
@@ -1,5 +1,7 @@
#!/bin/bash
if [ -z ${SLS_DET_PACKAGE_PATH} ]; then SLS_DET_PACKAGE_PATH="/home/hax_l/software/sf_daq_buffer/slsDetectorPackage/build/bin/"; fi
${SLS_DET_PACKAGE_PATH}sls_detector_put triggers 1
${SLS_DET_PACKAGE_PATH}sls_detector_put timing trigger
${SLS_DET_PACKAGE_PATH}sls_detector_put exptime 0.000005
+4 -5
View File
@@ -3,20 +3,19 @@
if [ $# -lt 1 ]
then
echo "Usage : $0 <port>"
echo " DETECTOR_NAME: Eiger"
echo " tcp port : optional, default 2000"
exit
fi
SLS_DET_PACKAGE_PATH='/home/hax_l/software/sf_daq_buffer/slsDetectorPackage/build/bin/'
port=2000
PORT=2050
if [ $# == 2 ]
then
port=$1
PORT=$1
fi
echo "Starting the server..."
${SLS_DET_PACKAGE_PATH}eigerDetectorServerMaster_virtual -p port
echo ${SLS_DET_PACKAGE_PATH}eigerDetectorServerMaster_virtual -p ${PORT}
+10 -1
View File
@@ -8,7 +8,16 @@ target_link_libraries(jf-live-writer-lib
core-buffer-lib)
add_executable(jf-live-writer src/main.cpp)
set_target_properties(jf-live-writer PROPERTIES OUTPUT_NAME jf_live_writer)
if (USE_EIGER)
set (LIB_NAME_UDP_RECV "eiger_live_writer")
else()
set (LIB_NAME_UDP_RECV "jf_live_writer")
endif()
set_target_properties(jf-live-writer PROPERTIES OUTPUT_NAME ${LIB_NAME_UDP_RECV})
target_link_libraries(jf-live-writer
jf-live-writer-lib
sf-writer-lib
+1
View File
@@ -4,6 +4,7 @@
#include <sstream>
#include <cstring>
#include <fcntl.h>
#include <stdexcept>
#include "BufferUtils.hpp"
#include "buffer_config.hpp"
+5 -5
View File
@@ -53,7 +53,7 @@ void JFH5LiveWriter::init_file(const string& output_file)
image_dataset_ = file_.createDataSet(
"/data/" + detector_name_ + "/data",
H5_UINT16,
H5::PredType::NATIVE_UINT16,
image_dataspace,
image_dataset_properties);
}
@@ -98,10 +98,10 @@ void JFH5LiveWriter::write_dataset(
void JFH5LiveWriter::write_metadata()
{
write_dataset("pulse_id", &b_pulse_id_, H5_UINT64);
write_dataset("frame_index", &b_frame_index_, H5_UINT64);
write_dataset("daq_rec", &b_daq_rec_, H5_UINT32);
write_dataset("is_good_frame", &b_is_good_frame_, H5_UINT8);
write_dataset("pulse_id", &b_pulse_id_, H5::PredType::NATIVE_UINT64);
write_dataset("frame_index", &b_frame_index_, H5::PredType::NATIVE_UINT64);
write_dataset("daq_rec", &b_daq_rec_, H5::PredType::NATIVE_UINT32);
write_dataset("is_good_frame", &b_is_good_frame_, H5::PredType::NATIVE_UINT8);
}
void JFH5LiveWriter::close_file()
+9 -1
View File
@@ -8,7 +8,15 @@ target_link_libraries(jf-udp-recv-lib
core-buffer-lib)
add_executable(jf-udp-recv src/main.cpp)
set_target_properties(jf-udp-recv PROPERTIES OUTPUT_NAME jf_udp_recv)
if (USE_EIGER)
set (LIB_NAME_UDP_RECV "eiger_udp_recv")
else()
set (LIB_NAME_UDP_RECV "jf_udp_recv")
endif()
set_target_properties(jf-udp-recv PROPERTIES OUTPUT_NAME ${LIB_NAME_UDP_RECV})
target_link_libraries(jf-udp-recv
jf-udp-recv-lib
zmq
+11 -8
View File
@@ -47,14 +47,15 @@ inline void FrameUdpReceiver::init_frame(
frame_metadata.frame_index = packet_buffer_[i_packet].framenum;
frame_metadata.daq_rec = (uint64_t) packet_buffer_[i_packet].debug;
frame_metadata.module_id = (int64_t) module_id_;
// #ifdef DEBUG_OUTPUT
// using namespace date;
// cout << " [" << std::chrono::system_clock::now();
// cout << "] [FrameUdpReceiver::init_frame] :";
// cout << " Frame number: " << frame_metadata.frame_index << endl;
// cout << "i_packet" << i_packet << endl;
// cout << endl;
// #endif
#ifdef DEBUG_OUTPUT
using namespace date;
cout << " [" << std::chrono::system_clock::now();
cout << "] [FrameUdpReceiver::init_frame] :";
cout << " Frame number: " << frame_metadata.frame_index << endl;
// cout << " packet_buffer_ " << packet_buffer_[i_packet] << endl;
cout << "i_packet" << i_packet << endl;
cout << endl;
#endif
}
inline void FrameUdpReceiver::copy_packet_to_buffers(
@@ -112,6 +113,8 @@ inline uint64_t FrameUdpReceiver::process_packets(
cout << "] [FrameUdpReceiver::process_packets] :";
cout << " Frame " << metadata.frame_index << " || ";
cout << packet_buffer_[i_packet].packetnum << " packets received.";
cout << " packet_buffer_n_packets_ " << packet_buffer_n_packets_;
cout << " i_packet "<< i_packet;
cout << endl;
#endif
// Buffer is loaded only if this is not the last message.
+7 -1
View File
@@ -14,11 +14,17 @@ using namespace chrono;
using namespace buffer_config;
using namespace BufferUtils;
int main (int argc, char *argv[]) {
if (argc != 3) {
cout << endl;
cout << "Usage: XXX_udp_recv [detector_json_filename] [module_id]";
#ifndef USE_EIGER
cout << "Usage: jf_udp_recv [detector_json_filename] [module_id]";
#else
cout << "Usage: eiger_udp_recv [detector_json_filename] [module_id]";
#endif
cout << endl;
cout << "\tdetector_json_filename: detector config file path." << endl;
cout << "\tmodule_id: id of the module for this process." << endl;
+16 -16
View File
@@ -12,7 +12,7 @@ using namespace std;
TEST(BufferUdpReceiver, simple_recv)
{
auto n_packets = JF_N_PACKETS_PER_FRAME;
auto n_packets = N_PACKETS_PER_FRAME;
int source_id = 1234;
int n_frames = 5;
@@ -26,7 +26,7 @@ TEST(BufferUdpReceiver, simple_recv)
auto handle = async(launch::async, [&](){
for (int i_frame=0; i_frame < n_frames; i_frame++){
for (size_t i_packet=0; i_packet<n_packets; i_packet++) {
jungfrau_packet send_udp_buffer;
det_packet send_udp_buffer;
send_udp_buffer.packetnum = i_packet;
send_udp_buffer.bunchid = i_frame + 1;
send_udp_buffer.framenum = i_frame + 1000;
@@ -35,7 +35,7 @@ TEST(BufferUdpReceiver, simple_recv)
::sendto(
send_socket_fd,
&send_udp_buffer,
JUNGFRAU_BYTES_PER_PACKET,
BYTES_PER_PACKET,
0,
(sockaddr*) &server_address,
sizeof(server_address));
@@ -46,7 +46,7 @@ TEST(BufferUdpReceiver, simple_recv)
handle.wait();
ModuleFrame metadata;
auto frame_buffer = make_unique<char[]>(JUNGFRAU_DATA_BYTES_PER_FRAME);
auto frame_buffer = make_unique<char[]>(DATA_BYTES_PER_FRAME);
for (int i_frame=0; i_frame < n_frames; i_frame++) {
auto pulse_id = udp_receiver.get_frame_from_udp(
@@ -65,7 +65,7 @@ TEST(BufferUdpReceiver, simple_recv)
TEST(BufferUdpReceiver, missing_middle_packet)
{
auto n_packets = JF_N_PACKETS_PER_FRAME;
auto n_packets = N_PACKETS_PER_FRAME;
int source_id = 1234;
int n_frames = 3;
@@ -84,7 +84,7 @@ TEST(BufferUdpReceiver, missing_middle_packet)
continue;
}
jungfrau_packet send_udp_buffer;
det_packet send_udp_buffer;
send_udp_buffer.packetnum = i_packet;
send_udp_buffer.bunchid = i_frame + 1;
send_udp_buffer.framenum = i_frame + 1000;
@@ -93,7 +93,7 @@ TEST(BufferUdpReceiver, missing_middle_packet)
::sendto(
send_socket_fd,
&send_udp_buffer,
JUNGFRAU_BYTES_PER_PACKET,
BYTES_PER_PACKET,
0,
(sockaddr*) &server_address,
sizeof(server_address));
@@ -104,7 +104,7 @@ TEST(BufferUdpReceiver, missing_middle_packet)
handle.wait();
ModuleFrame metadata;
auto frame_buffer = make_unique<char[]>(JUNGFRAU_DATA_BYTES_PER_FRAME);
auto frame_buffer = make_unique<char[]>(DATA_BYTES_PER_FRAME);
for (int i_frame=0; i_frame < n_frames; i_frame++) {
auto pulse_id = udp_receiver.get_frame_from_udp(
@@ -123,7 +123,7 @@ TEST(BufferUdpReceiver, missing_middle_packet)
TEST(BufferUdpReceiver, missing_first_packet)
{
auto n_packets = JF_N_PACKETS_PER_FRAME;
auto n_packets = N_PACKETS_PER_FRAME;
int source_id = 1234;
int n_frames = 3;
@@ -142,7 +142,7 @@ TEST(BufferUdpReceiver, missing_first_packet)
continue;
}
jungfrau_packet send_udp_buffer;
det_packet send_udp_buffer;
send_udp_buffer.packetnum = i_packet;
send_udp_buffer.bunchid = i_frame + 1;
send_udp_buffer.framenum = i_frame + 1000;
@@ -151,7 +151,7 @@ TEST(BufferUdpReceiver, missing_first_packet)
::sendto(
send_socket_fd,
&send_udp_buffer,
JUNGFRAU_BYTES_PER_PACKET,
BYTES_PER_PACKET,
0,
(sockaddr*) &server_address,
sizeof(server_address));
@@ -162,7 +162,7 @@ TEST(BufferUdpReceiver, missing_first_packet)
handle.wait();
ModuleFrame metadata;
auto frame_buffer = make_unique<char[]>(JUNGFRAU_DATA_BYTES_PER_FRAME);
auto frame_buffer = make_unique<char[]>(DATA_BYTES_PER_FRAME);
for (int i_frame=0; i_frame < n_frames; i_frame++) {
auto pulse_id = udp_receiver.get_frame_from_udp(
@@ -181,7 +181,7 @@ TEST(BufferUdpReceiver, missing_first_packet)
TEST(BufferUdpReceiver, missing_last_packet)
{
auto n_packets = JF_N_PACKETS_PER_FRAME;
auto n_packets = N_PACKETS_PER_FRAME;
int source_id = 1234;
int n_frames = 3;
@@ -200,7 +200,7 @@ TEST(BufferUdpReceiver, missing_last_packet)
continue;
}
jungfrau_packet send_udp_buffer;
det_packet send_udp_buffer;
send_udp_buffer.packetnum = i_packet;
send_udp_buffer.bunchid = i_frame + 1;
send_udp_buffer.framenum = i_frame + 1000;
@@ -209,7 +209,7 @@ TEST(BufferUdpReceiver, missing_last_packet)
::sendto(
send_socket_fd,
&send_udp_buffer,
JUNGFRAU_BYTES_PER_PACKET,
BYTES_PER_PACKET,
0,
(sockaddr*) &server_address,
sizeof(server_address));
@@ -220,7 +220,7 @@ TEST(BufferUdpReceiver, missing_last_packet)
handle.wait();
ModuleFrame metadata;
auto frame_buffer = make_unique<char[]>(JUNGFRAU_DATA_BYTES_PER_FRAME);
auto frame_buffer = make_unique<char[]>(DATA_BYTES_PER_FRAME);
// n_frames -1 because the last frame is not complete.
for (int i_frame=0; i_frame < n_frames - 1; i_frame++) {
+22 -22
View File
@@ -19,7 +19,7 @@ TEST(PacketUdpReceiver, simple_recv)
PacketUdpReceiver udp_receiver;
udp_receiver.bind(udp_port);
jungfrau_packet send_udp_buffer;
det_packet send_udp_buffer;
send_udp_buffer.packetnum = 91;
send_udp_buffer.framenum = 92;
send_udp_buffer.bunchid = 93;
@@ -29,16 +29,16 @@ TEST(PacketUdpReceiver, simple_recv)
::sendto(
send_socket_fd,
&send_udp_buffer,
JUNGFRAU_BYTES_PER_PACKET,
BYTES_PER_PACKET,
0,
(sockaddr*) &server_address,
sizeof(server_address));
this_thread::sleep_for(chrono::milliseconds(100));
jungfrau_packet recv_udp_buffer;
det_packet recv_udp_buffer;
ASSERT_TRUE(udp_receiver.receive(
&recv_udp_buffer, JUNGFRAU_BYTES_PER_PACKET));
&recv_udp_buffer, BYTES_PER_PACKET));
EXPECT_EQ(send_udp_buffer.packetnum, recv_udp_buffer.packetnum);
EXPECT_EQ(send_udp_buffer.framenum, recv_udp_buffer.framenum);
@@ -46,7 +46,7 @@ TEST(PacketUdpReceiver, simple_recv)
EXPECT_EQ(send_udp_buffer.debug, recv_udp_buffer.debug);
ASSERT_FALSE(udp_receiver.receive(
&recv_udp_buffer, JUNGFRAU_BYTES_PER_PACKET));
&recv_udp_buffer, BYTES_PER_PACKET));
udp_receiver.disconnect();
::close(send_socket_fd);
@@ -62,43 +62,43 @@ TEST(PacketUdpReceiver, false_recv)
PacketUdpReceiver udp_receiver;
udp_receiver.bind(udp_port);
jungfrau_packet send_udp_buffer;
jungfrau_packet recv_udp_buffer;
det_packet send_udp_buffer;
det_packet recv_udp_buffer;
auto server_address = get_server_address(udp_port);
::sendto(
send_socket_fd,
&send_udp_buffer,
JUNGFRAU_BYTES_PER_PACKET-1,
BYTES_PER_PACKET-1,
0,
(sockaddr*) &server_address,
sizeof(server_address));
ASSERT_FALSE(udp_receiver.receive(
&recv_udp_buffer, JUNGFRAU_BYTES_PER_PACKET));
&recv_udp_buffer, BYTES_PER_PACKET));
::sendto(
send_socket_fd,
&send_udp_buffer,
JUNGFRAU_BYTES_PER_PACKET,
BYTES_PER_PACKET,
0,
(sockaddr*) &server_address,
sizeof(server_address));
ASSERT_TRUE(udp_receiver.receive(
&recv_udp_buffer, JUNGFRAU_BYTES_PER_PACKET));
&recv_udp_buffer, BYTES_PER_PACKET));
::sendto(
send_socket_fd,
&send_udp_buffer,
JUNGFRAU_BYTES_PER_PACKET-1,
BYTES_PER_PACKET-1,
0,
(sockaddr*) &server_address,
sizeof(server_address));
ASSERT_TRUE(udp_receiver.receive(
&recv_udp_buffer, JUNGFRAU_BYTES_PER_PACKET-1));
&recv_udp_buffer, BYTES_PER_PACKET-1));
udp_receiver.disconnect();
::close(send_socket_fd);
@@ -106,15 +106,15 @@ TEST(PacketUdpReceiver, false_recv)
TEST(PacketUdpReceiver, receive_many)
{
auto n_msg_buffer = JF_N_PACKETS_PER_FRAME;
jungfrau_packet recv_buffer[n_msg_buffer];
auto n_msg_buffer = N_PACKETS_PER_FRAME;
det_packet recv_buffer[n_msg_buffer];
iovec recv_buff_ptr[n_msg_buffer];
struct mmsghdr msgs[n_msg_buffer];
struct sockaddr_in sockFrom[n_msg_buffer];
for (int i = 0; i < n_msg_buffer; i++) {
recv_buff_ptr[i].iov_base = (void*) &(recv_buffer[i]);
recv_buff_ptr[i].iov_len = sizeof(jungfrau_packet);
recv_buff_ptr[i].iov_len = sizeof(det_packet);
msgs[i].msg_hdr.msg_iov = &recv_buff_ptr[i];
msgs[i].msg_hdr.msg_iovlen = 1;
@@ -130,7 +130,7 @@ TEST(PacketUdpReceiver, receive_many)
PacketUdpReceiver udp_receiver;
udp_receiver.bind(udp_port);
jungfrau_packet send_udp_buffer;
det_packet send_udp_buffer;
auto server_address = get_server_address(udp_port);
@@ -138,7 +138,7 @@ TEST(PacketUdpReceiver, receive_many)
::sendto(
send_socket_fd,
&send_udp_buffer,
JUNGFRAU_BYTES_PER_PACKET,
BYTES_PER_PACKET,
0,
(sockaddr*) &server_address,
sizeof(server_address));
@@ -147,22 +147,22 @@ TEST(PacketUdpReceiver, receive_many)
::sendto(
send_socket_fd,
&send_udp_buffer,
JUNGFRAU_BYTES_PER_PACKET,
BYTES_PER_PACKET,
0,
(sockaddr*) &server_address,
sizeof(server_address));
this_thread::sleep_for(chrono::milliseconds(10));
auto n_msgs = udp_receiver.receive_many(msgs, JF_N_PACKETS_PER_FRAME);
auto n_msgs = udp_receiver.receive_many(msgs, N_PACKETS_PER_FRAME);
ASSERT_EQ(n_msgs, 2);
for (size_t i=0;i<n_msgs;i++) {
ASSERT_EQ(msgs[i].msg_len, JUNGFRAU_BYTES_PER_PACKET);
ASSERT_EQ(msgs[i].msg_len, BYTES_PER_PACKET);
ASSERT_EQ(recv_buffer[i].bunchid, i);
}
n_msgs = udp_receiver.receive_many(msgs, JF_N_PACKETS_PER_FRAME);
n_msgs = udp_receiver.receive_many(msgs, N_PACKETS_PER_FRAME);
ASSERT_EQ(n_msgs, -1);
udp_receiver.disconnect();