// Copyright (2019-2023) Paul Scherrer Institute #include "AcquisitionDeviceGroup.h" #include "PCIExpressDevice.h" #include "MockAcquisitionDevice.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 &&device) { aq_devices.emplace_back(std::move(device)); } void AcquisitionDeviceGroup::AddPCIeDevice(const std::string &device_name) { aq_devices.emplace_back(std::make_unique(aq_devices.size(), device_name)); } void AcquisitionDeviceGroup::AddHLSDevice(int64_t buffer_size_modules) { aq_devices.emplace_back(std::make_unique(aq_devices.size(), buffer_size_modules)); } void AcquisitionDeviceGroup::AddMockDevice(int64_t buffer_size_modules) { aq_devices.emplace_back(std::make_unique(aq_devices.size(), buffer_size_modules)); } std::vector AcquisitionDeviceGroup::GetNetworkConfig() { std::vector ret; for (const auto &i: aq_devices) ret.push_back(i->GetNetConfig()); return ret; }