46 lines
1.6 KiB
C++
46 lines
1.6 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;
|
|
}
|
|
|
|
void AcquisitionDeviceGroup::SetDefaultDataSource(AcquisitionDeviceSource id) {
|
|
for (auto &i: aq_devices)
|
|
i->SetDefaultDataSource(id);
|
|
}
|
|
|
|
void AcquisitionDeviceGroup::EnableLogging(Logger *logger) {
|
|
for (auto &i: aq_devices)
|
|
i->EnableLogging(logger);
|
|
} |