REDAC HybridController
Firmware for LUCIDAC/REDAC Teensy
Loading...
Searching...
No Matches
metadata.h
Go to the documentation of this file.
1// Copyright (c) 2024 anabrid GmbH
2// Contact: https://www.anabrid.com/licensing/
3// SPDX-License-Identifier: MIT OR GPL-2.0-or-later
4
5#pragma once
6
7#include <array>
8#include <cstdint>
9
10#include <bus/bus.h>
11#include <bus/functions.h>
12
13namespace metadata {
14
20template <std::size_t dataSize> class MetadataMemory : public functions::DataFunction {
21private:
22 std::array<uint8_t, dataSize> data;
23
24public:
25 explicit MetadataMemory(const unsigned short address, const SPISettings &spi_settings)
27
28 virtual size_t read_from_hardware(size_t byte_offset, size_t length, uint8_t *buffer) const = 0;
29
30 size_t read_from_hardware() { return read_from_hardware(0, data.size(), data.data()); };
31
32 template <class Layout_> const Layout_ &as() const { return *((Layout_ *)(data.data())); }
33};
34
35} // namespace metadata
A DataFunction class wraps SPI communication over the digital bus.
Definition functions.h:47
const SPISettings & spi_settings
Definition functions.h:52
DataFunction(bus::addr_t address, const SPISettings &spiSettings)
Definition functions.cpp:16
const bus::addr_t address
Definition functions.h:23
The abstract metadata memory class allows to represent different EEPROM sizes, for instance does the ...
Definition metadata.h:20
size_t read_from_hardware()
Definition metadata.h:30
virtual size_t read_from_hardware(size_t byte_offset, size_t length, uint8_t *buffer) const =0
MetadataMemory(const unsigned short address, const SPISettings &spi_settings)
Definition metadata.h:25
const Layout_ & as() const
Definition metadata.h:32
namespace for internal helpers
Definition icmd.h:6