diff --git a/core-buffer/CMakeLists.txt b/core-buffer/CMakeLists.txt index 0e02d76..e34e4fc 100644 --- a/core-buffer/CMakeLists.txt +++ b/core-buffer/CMakeLists.txt @@ -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) diff --git a/core-buffer/src/BufferUtils.cpp b/core-buffer/src/BufferUtils.cpp index a59682c..9358930 100644 --- a/core-buffer/src/BufferUtils.cpp +++ b/core-buffer/src/BufferUtils.cpp @@ -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(), diff --git a/core-buffer/src/RamBuffer.cpp b/core-buffer/src/RamBuffer.cpp index 626d655..13405f9 100644 --- a/core-buffer/src/RamBuffer.cpp +++ b/core-buffer/src/RamBuffer.cpp @@ -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."); } diff --git a/eiger/config/eiger.json b/eiger/config/eiger.json index c2bf6d8..9d01d00 100644 --- a/eiger/config/eiger.json +++ b/eiger/config/eiger.json @@ -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 diff --git a/eiger/config_eiger.txt b/eiger/config_eiger.txt index dbaf7c1..4bdf747 100755 --- a/eiger/config_eiger.txt +++ b/eiger/config_eiger.txt @@ -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 \ No newline at end of file +0:udp_srcmac 90:1b:0e:19:1c:ae diff --git a/eiger/start_eiger_acquisition.sh b/eiger/start_eiger_acquisition.sh index 6f55a10..8eb0ff6 100755 --- a/eiger/start_eiger_acquisition.sh +++ b/eiger/start_eiger_acquisition.sh @@ -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 diff --git a/eiger/start_eiger_server.sh b/eiger/start_eiger_server.sh index 0b81b47..c4ae154 100755 --- a/eiger/start_eiger_server.sh +++ b/eiger/start_eiger_server.sh @@ -3,20 +3,19 @@ if [ $# -lt 1 ] then echo "Usage : $0 " - 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} diff --git a/jf-live-writer/CMakeLists.txt b/jf-live-writer/CMakeLists.txt index 6028bfe..1faa611 100644 --- a/jf-live-writer/CMakeLists.txt +++ b/jf-live-writer/CMakeLists.txt @@ -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 diff --git a/jf-live-writer/src/BinaryReader.cpp b/jf-live-writer/src/BinaryReader.cpp index 0512ac7..07f8149 100644 --- a/jf-live-writer/src/BinaryReader.cpp +++ b/jf-live-writer/src/BinaryReader.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include "BufferUtils.hpp" #include "buffer_config.hpp" diff --git a/jf-live-writer/src/JFH5LiveWriter.cpp b/jf-live-writer/src/JFH5LiveWriter.cpp index 5928a6e..332fc6c 100644 --- a/jf-live-writer/src/JFH5LiveWriter.cpp +++ b/jf-live-writer/src/JFH5LiveWriter.cpp @@ -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() diff --git a/jf-udp-recv/CMakeLists.txt b/jf-udp-recv/CMakeLists.txt index 3c83127..3667afb 100644 --- a/jf-udp-recv/CMakeLists.txt +++ b/jf-udp-recv/CMakeLists.txt @@ -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 diff --git a/jf-udp-recv/src/FrameUdpReceiver.cpp b/jf-udp-recv/src/FrameUdpReceiver.cpp index d522f00..2a5f47a 100644 --- a/jf-udp-recv/src/FrameUdpReceiver.cpp +++ b/jf-udp-recv/src/FrameUdpReceiver.cpp @@ -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. diff --git a/jf-udp-recv/src/main.cpp b/jf-udp-recv/src/main.cpp index 75ea403..177e495 100644 --- a/jf-udp-recv/src/main.cpp +++ b/jf-udp-recv/src/main.cpp @@ -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; diff --git a/jf-udp-recv/test/test_FrameUdpReceiver.cpp b/jf-udp-recv/test/test_FrameUdpReceiver.cpp index 0d1c9ee..e22356d 100644 --- a/jf-udp-recv/test/test_FrameUdpReceiver.cpp +++ b/jf-udp-recv/test/test_FrameUdpReceiver.cpp @@ -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(JUNGFRAU_DATA_BYTES_PER_FRAME); + auto frame_buffer = make_unique(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(JUNGFRAU_DATA_BYTES_PER_FRAME); + auto frame_buffer = make_unique(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(JUNGFRAU_DATA_BYTES_PER_FRAME); + auto frame_buffer = make_unique(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(JUNGFRAU_DATA_BYTES_PER_FRAME); + auto frame_buffer = make_unique(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++) { diff --git a/jf-udp-recv/test/test_PacketUdpReceiver.cpp b/jf-udp-recv/test/test_PacketUdpReceiver.cpp index 1be343a..5bc195f 100644 --- a/jf-udp-recv/test/test_PacketUdpReceiver.cpp +++ b/jf-udp-recv/test/test_PacketUdpReceiver.cpp @@ -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