REDAC HybridController
Firmware for LUCIDAC/REDAC Teensy
Loading...
Searching...
No Matches
meta.h
Go to the documentation of this file.
1#pragma once
2
3#include <entity/base.h>
4#include <entity/entity.h>
5
6#include <array>
7
8#include "bus/bus.h"
9#include "entity/base.h"
10#include "utils/logging.h"
11#include <chips/EEPROM25AA02.h>
12#include <metadata/metadata.h>
13
14namespace metadata {
15
17public:
18 explicit MetadataEditor(bus::addr_t address, uint8_t alt_function_idx)
19 : EEPROM25AA02(address, alt_function_idx) {}
20
21 entities::EntityClassifier read_entity_classifier() const {
22 std::array<uint8_t, sizeof(entities::EntityClassifier)> data{0};
23 read(offsetof(MetadataMemoryLayoutV1, classifier), data.size(), data.data());
24 return {data[0], data[1], data[2], data[3], data[4], data[5]};
25 }
26
27 eui_t read_eui() const {
28 eui_t data{0};
29 read(offsetof(MetadataMemoryLayoutV1, uuid), data.size(), data.data());
30 return data;
31 }
32
33 bool write_entity_classifier(const entities::EntityClassifier &classifier) const {
34 return write(offsetof(MetadataMemoryLayoutV1, classifier), sizeof(classifier),
35 reinterpret_cast<const uint8_t *>(std::addressof(classifier)));
36 }
37
38 // we don't delete functions -- where is the point?
39
40private:
41 bus::addr_t address;
42};
43
44} // namespace metadata
size_t read(size_t address, size_t length, uint8_t *buffer) const
Reads the specified number of bytes starting at address into the specified buffer....
EEPROM25AA02(bus::addr_t address, uint8_t alt_function_idx)
size_t write(size_t address, size_t length, const uint8_t *buffer) const
Writes the specified number of bytes starting at address into the specified buffer....
MetadataEditor(bus::addr_t address, uint8_t alt_function_idx)
Definition meta.h:18
bool write_entity_classifier(const entities::EntityClassifier &classifier) const
Definition meta.h:33
eui_t read_eui() const
Definition meta.h:27
entities::EntityClassifier read_entity_classifier() const
Definition meta.h:21