AcquisitionDeviceGroup: added GetNetworkConfig()

This commit is contained in:
2023-11-13 13:01:37 +01:00
parent b270b8857a
commit 13d22493c1
8 changed files with 67 additions and 21 deletions
+8
View File
@@ -233,4 +233,12 @@ void AcquisitionDevice::SetIPv4Address(uint32_t ipv4_addr_network_order) {
void AcquisitionDevice::SetMACAddress(uint64_t mac_addr_network_order) {
mac_addr = mac_addr_network_order;
}
AcquisitionDeviceNetConfig AcquisitionDevice::GetNetConfig() const {
return {
.mac_addr = GetMACAddress(),
.ipv4_addr = GetIPv4Address(),
.udp_port = GetUDPPort()
};
}
+7 -2
View File
@@ -55,6 +55,12 @@ struct AcquisitionDeviceStatistics {
std::vector<uint64_t> packets_received_per_module;
};
struct AcquisitionDeviceNetConfig {
std::string mac_addr;
std::string ipv4_addr;
uint64_t udp_port;
};
class AcquisitionDevice {
std::vector<int16_t> buffer_err;
@@ -133,8 +139,7 @@ public:
virtual std::vector<uint16_t> GetInternalGeneratorFrame() const {
return {};
}
AcquisitionDeviceNetConfig GetNetConfig() const;
};
@@ -32,3 +32,10 @@ void AcquisitionDeviceGroup::AddHLSDevice(int64_t buffer_size_modules) {
void AcquisitionDeviceGroup::AddMockDevice(int64_t buffer_size_modules) {
aq_devices.emplace_back(std::make_unique<MockAcquisitionDevice>(aq_devices.size(), buffer_size_modules));
}
std::vector<AcquisitionDeviceNetConfig> AcquisitionDeviceGroup::GetNetworkConfig() {
std::vector<AcquisitionDeviceNetConfig> ret;
for (const auto &i: aq_devices)
ret.push_back(i->GetNetConfig());
return ret;
}
@@ -16,6 +16,7 @@ public:
void AddPCIeDevice(const std::string &device_name);
void AddHLSDevice(int64_t buffer_size_modules);
void AddMockDevice(int64_t buffer_size_modules);
std::vector<AcquisitionDeviceNetConfig> GetNetworkConfig();
};
#endif //JUNGFRAUJOCH_ACQUISITIONDEVICEGROUP_H
+8
View File
@@ -721,3 +721,11 @@ void JFJochReceiver::UpdateMaxDelay(int64_t delay) {
float JFJochReceiver::GetAvailableSendBuffers() const {
return static_cast<float>(send_buffer_avail.Size()) / static_cast<float>(send_buffer_count);
}
JFJochReceiverStatus JFJochReceiver::GetStatus() const {
return {
.progress = GetProgress(),
.indexing_rate = GetIndexingRate(),
.send_buffers_avail = GetAvailableSendBuffers()
};
}
+9
View File
@@ -31,6 +31,12 @@
#include "../common/ADUHistogram.h"
#include "../common/Plot.h"
struct JFJochReceiverStatus {
float progress;
float indexing_rate;
float send_buffers_avail;
};
struct JFJochReceiverOutput {
std::vector<JFModulePedestal> pedestal_result;
std::vector<uint64_t> received_packets;
@@ -149,6 +155,9 @@ public:
void Cancel();
float GetProgress() const;
float GetIndexingRate() const;
JFJochReceiverStatus GetStatus() const;
void SetDataProcessingSettings(const DataProcessingSettings &data_processing_settings);
float GetAvailableSendBuffers() const;
+25 -19
View File
@@ -171,25 +171,26 @@ grpc::Status JFJochReceiverService::Abort(grpc::ServerContext *context, const JF
}
}
grpc::Status JFJochReceiverService::GetStatus(grpc::ServerContext *context, const JFJochProtoBuf::Empty *request,
JFJochProtoBuf::ReceiverStatus *response) {
JFJochReceiverStatus JFJochReceiverService::GetStatus() {
// Need to hold mutex, as receiver might not exist here, if state is idle
std::unique_lock<std::mutex> ul(state_mutex);
response->set_progress(-1);
response->set_send_buffers_avail(-1);
response->set_indexing_rate(-1);
if (state == ReceiverState::Running) {
response->set_progress(receiver->GetProgress());
response->set_send_buffers_avail(receiver->GetAvailableSendBuffers());
}
if (receiver) {
double indexing_rate = receiver->GetIndexingRate();
if (!std::isnan(indexing_rate))
response->set_indexing_rate(indexing_rate);
}
if (state == ReceiverState::Running)
return receiver->GetStatus();
else
return {
.progress = -1,
.indexing_rate = -1,
.send_buffers_avail = -1
};
}
grpc::Status JFJochReceiverService::GetStatus(grpc::ServerContext *context, const JFJochProtoBuf::Empty *request,
JFJochProtoBuf::ReceiverStatus *response) {
auto tmp = GetStatus();
response->set_send_buffers_avail(tmp.send_buffers_avail);
response->set_indexing_rate(tmp.indexing_rate);
response->set_progress(tmp.progress);
return grpc::Status::OK;
}
@@ -230,11 +231,13 @@ grpc::Status JFJochReceiverService::SetDataProcessingSettings(grpc::ServerContex
grpc::Status JFJochReceiverService::GetNetworkConfig(grpc::ServerContext *context, const JFJochProtoBuf::Empty *request,
JFJochProtoBuf::ReceiverNetworkConfig *response) {
for (int i = 0; i < aq_devices.size(); i++) {
auto v = GetNetworkConfig();
for (const auto &i: v) {
auto dev_net_cfg = response->add_device();
dev_net_cfg->set_mac_addr(aq_devices[i].GetMACAddress());
dev_net_cfg->set_ipv4_addr(aq_devices[i].GetIPv4Address());
dev_net_cfg->set_udp_port(aq_devices[i].GetUDPPort());
dev_net_cfg->set_mac_addr(i.mac_addr);
dev_net_cfg->set_ipv4_addr(i.ipv4_addr);
dev_net_cfg->set_udp_port(i.udp_port);
}
return grpc::Status::OK;
}
@@ -336,3 +339,6 @@ RadialIntegrationProfiles JFJochReceiverService::GetRadialIntegrationProfiles()
return {};
}
std::vector<AcquisitionDeviceNetConfig> JFJochReceiverService::GetNetworkConfig() {
return aq_devices.GetNetworkConfig();
}
+2
View File
@@ -47,6 +47,8 @@ public:
void SetDataProcessingSettings(const DataProcessingSettings& settings);
Plot GetDataProcessingPlot(const PlotRequest& request);
RadialIntegrationProfiles GetRadialIntegrationProfiles();
JFJochReceiverStatus GetStatus();
std::vector<AcquisitionDeviceNetConfig> GetNetworkConfig();
grpc::Status Start(grpc::ServerContext* context, const JFJochProtoBuf::ReceiverInput* request,
JFJochProtoBuf::Empty* response) override;