36 lines
1007 B
C++
36 lines
1007 B
C++
// Copyright (2019-2023) Paul Scherrer Institute
|
|
|
|
#ifndef JUNGFRAUJOCH_LINUXSOCKETDEVICE_H
|
|
#define JUNGFRAUJOCH_LINUXSOCKETDEVICE_H
|
|
|
|
#include <future>
|
|
#include "../jungfrau/ProcessJFPacket.h"
|
|
#include "AcquisitionDevice.h"
|
|
|
|
class LinuxSocketDevice : public AcquisitionDevice {
|
|
int32_t rcv_buf_size;
|
|
uint16_t udp_port;
|
|
const int16_t numa_node;
|
|
|
|
std::future<void> measure;
|
|
|
|
volatile bool cancel = false;
|
|
|
|
void Start(const DiffractionExperiment& experiment) override;
|
|
|
|
void Finalize() override;
|
|
void MeasureThread(int fd);
|
|
void FindMACAddress();
|
|
public:
|
|
LinuxSocketDevice(uint32_t ipv4_addr, uint16_t udp_port,
|
|
uint16_t data_stream, size_t frame_buffer_size_modules,
|
|
int32_t rcv_buf_size = -1, int16_t in_numa_node = -1);
|
|
~LinuxSocketDevice() override = default;
|
|
|
|
int32_t GetNUMANode() const override;
|
|
uint16_t GetUDPPort() const override;
|
|
void Cancel() override;
|
|
};
|
|
|
|
#endif //JUNGFRAUJOCH_LINUXSOCKETDEVICE_H
|