On this page
article
peary/interfaces/Loopback/loopback.hpp
peary/interfaces/Loopback/loopback.hpp
Peary Loopback Interface. More…
Namespaces
| Name |
|---|
| peary |
| peary::interface |
Classes
| Name | |
|---|---|
| class | peary::interface::iface_loopback_config Configuration class for Loopback interface. |
| class | peary::interface::iface_loopback Peary Loopback Interface. |
Detailed Description
Peary Loopback Interface.
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 <cstdint>
#include <mutex>
#include <string>
#include <vector>
#include "peary/interfaces/Interface.hpp"
#include "peary/interfaces/InterfaceManager.hpp"
#include "peary/utils/exceptions.hpp"
namespace peary::interface {
class iface_loopback_config : public InterfaceConfiguration {
public:
iface_loopback_config(std::string const& devpath, const uint8_t devaddress);
// The device address for the loopback interface
uint8_t _devaddress;
using InterfaceConfiguration::operator<;
virtual bool operator<(const iface_loopback_config& rhs) const;
};
class iface_loopback : public Interface<uint8_t, uint8_t, iface_loopback_config> {
private:
explicit iface_loopback(const configuration_type& config);
~iface_loopback() override;
// Protects access to the bus
std::mutex mutex;
GENERATE_FRIENDS()
public:
uint8_t devAddress() const { return _devAddress; }
iface_loopback() = delete;
private:
const uint8_t _devAddress;
uint8_t write(const uint8_t& data) override;
dataVector_type write(const dataVector_type& data) override;
std::pair<uint8_t, uint8_t> write(const std::pair<uint8_t, uint8_t>& data) override;
dataVector_type write(const uint8_t& reg, const dataVector_type& data) override;
std::vector<std::pair<uint8_t, uint8_t>> write(const std::vector<std::pair<uint8_t, uint8_t>>& data) override;
dataVector_type read(const unsigned int length) override;
dataVector_type read(const uint8_t& reg, const unsigned int length) override;
friend iface_loopback& InterfaceManager::getInterface<iface_loopback>(const configuration_type&);
friend void InterfaceManager::deleteInterface<iface_loopback>(iface_loopback*);
};
} // namespace peary::interface
Updated on 2025-11-14 at 11:31:23 +0100