// Copyright (2019-2022) Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-or-later #ifndef JUNGFRAUJOCH_PROCESSJFPACKET_H #define JUNGFRAUJOCH_PROCESSJFPACKET_H #include "../common/ThreadSafeFIFO.h" #include "../receiver/host/Completion.h" #include "JFConversion.h" #include "jf_packet.h" #include struct ModuleInfo { uint16_t *ptr; Completion c; }; class ProcessJFPacket { std::vector m; ThreadSafeFIFO &c_fifo; ThreadSafeFIFO &wr_fifo; std::vector module_info; std::atomic packet_counter = 0; public: ProcessJFPacket(ThreadSafeFIFO &c, ThreadSafeFIFO &wr, uint32_t nmodules); ~ProcessJFPacket(); void ProcessPacket(jf_udp_payload *datagram); uint64_t GetCounter(); }; #endif //JUNGFRAUJOCH_PROCESSJFPACKET_H