On this page
article
peary/device/AuxiliaryDevice.hpp
peary/device/AuxiliaryDevice.hpp
Caribou Auxiliary Device Class. More…
Namespaces
| Name |
|---|
| peary |
| peary::device |
Classes
| Name | |
|---|---|
| class | peary::device::AuxiliaryDevice Caribou Auxiliary Device class definition. |
Detailed Description
Caribou Auxiliary Device Class.
Copyright: Copyright (c) 2016-2025 CERN and the Peary Caribou authors. This software is distributed under the terms of the LGPL-3.0-only License, copied verbatim in the file “LICENSE.md”. SPDX-License-Identifier: LGPL-3.0-only
Source code
#pragma once
#include <optional>
#include <string>
#include <string_view>
#include <vector>
#include "peary/config/configuration.hpp"
#include "Device.hpp"
namespace peary::device {
template <typename T> class AuxiliaryDevice : public Device {
public:
template <typename... Args>
AuxiliaryDevice(std::string_view name, const config::Configuration& config, Args&&... args);
virtual ~AuxiliaryDevice();
std::string getType() override;
virtual std::string getFirmwareVersion() override { return std::string(); };
std::optional<utils::pearyRawData> getRawData() override;
std::optional<utils::pearyRawDataVector> getRawData(const unsigned int noFrames) override;
std::optional<utils::pearydata> getData() override;
std::optional<utils::pearydataVector> getData(const unsigned int noFrames) override;
virtual void powerOn() override {};
virtual void powerOff() override {};
virtual void daqStart() override {};
virtual void daqStop() override {};
virtual void setRegister(const std::string&, uintptr_t) override {};
virtual uintptr_t getRegister(const std::string&) override { return uintptr_t(); };
virtual bool hasRegister(const std::string&) const override { return false; }
virtual std::vector<std::pair<std::string, uintptr_t>> getRegisters() override {
return std::vector<std::pair<std::string, uintptr_t>>();
};
virtual std::vector<std::string> listMemories() override { return std::vector<std::string>(); }
virtual std::vector<std::string> listRegisters() override { return std::vector<std::string>(); }
virtual std::vector<std::pair<std::string, std::string>> listResources() override {
return std::vector<std::pair<std::string, std::string>>();
};
virtual void configureClock(const std::string&, const std::any&) override {};
virtual void disableClock(const std::string&) override {};
virtual bool isClockLocked(const std::string&) override { return bool(); };
virtual void setClockFrequency(const std::string&, uint64_t) override {};
virtual void setVoltage(const std::string&, double) override {};
virtual void setCurrentLimit(const std::string&, double) override {};
virtual void setCurrent(const std::string&, double, utils::Polarity) override {};
virtual void switchOn(const std::string&) override {};
virtual void switchOff(const std::string&) override {};
virtual double getVoltage(const std::string&) override { return double(); };
virtual double getCurrent(const std::string&) override { return double(); };
virtual double getPower(const std::string&) override { return double(); };
virtual void configure() override {};
virtual void set(std::string, uintptr_t) {};
virtual double get(std::string) { return double(); };
virtual void reset() override {};
virtual void setMemory(const std::string&, size_t, uintptr_t) override {};
virtual void setMemory(const std::string&, uintptr_t) override {};
virtual uintptr_t getMemory(const std::string&, size_t) override { return uintptr_t(); };
virtual uintptr_t getMemory(const std::string&) override { return uintptr_t(); };
virtual std::vector<std::pair<std::string, uintptr_t>> getMemories() override {
return std::vector<std::pair<std::string, uintptr_t>>();
};
bool hasMemory(const std::string&) const override { return false; };
protected:
typename T::data_t send(const typename T::data_t& data);
std::vector<typename T::data_t> send(const std::vector<typename T::data_t>& data);
std::pair<typename T::reg_t, typename T::data_t> send(const std::pair<typename T::reg_t, typename T::data_t>& data);
std::vector<typename T::data_t> send(const typename T::reg_t& reg, const std::vector<typename T::data_t>& data);
std::vector<std::pair<typename T::reg_t, typename T::data_t>>
send(const std::vector<std::pair<typename T::reg_t, typename T::data_t>>& data);
typename T::vector_t receive(const unsigned int length = 1);
typename T::vector_t receive(const typename T::reg_t reg, const unsigned int length = 1);
config::Configuration _config;
T _interface;
}; // class AuxiliaryDevice
} // namespace peary::device
#include "AuxiliaryDevice.tcc"
Updated on 2026-01-30 at 22:01:05 +0100