Files
Jungfraujoch/acquisition_device/AcquisitionDeviceGroup.cpp
2023-12-09 12:08:39 +01:00

36 lines
1.3 KiB
C++

// Copyright (2019-2023) Paul Scherrer Institute
#include "AcquisitionDeviceGroup.h"
#include "PCIExpressDevice.h"
#include "HLSSimulatedDevice.h"
AcquisitionDevice &AcquisitionDeviceGroup::operator[](int idx) {
if ((idx < 0) || (idx >= aq_devices.size()))
throw JFJochException(JFJochExceptionCategory::ArrayOutOfBounds, "Device out of bounds");
if (aq_devices[idx] == nullptr)
throw JFJochException(JFJochExceptionCategory::ArrayOutOfBounds, "Device not initialized");
return *aq_devices[idx];
}
size_t AcquisitionDeviceGroup::size() {
return aq_devices.size();
}
void AcquisitionDeviceGroup::Add(std::unique_ptr<AcquisitionDevice> &&device) {
aq_devices.emplace_back(std::move(device));
}
void AcquisitionDeviceGroup::AddPCIeDevice(const std::string &device_name) {
aq_devices.emplace_back(std::make_unique<PCIExpressDevice>(aq_devices.size(), device_name));
}
void AcquisitionDeviceGroup::AddHLSDevice(int64_t buffer_size_modules) {
aq_devices.emplace_back(std::make_unique<HLSSimulatedDevice>(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;
}