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) : EEPROM25AA02(address) {}
19
20 entities::EntityClassifier read_entity_classifier() const {
21 std::array<uint8_t, sizeof(entities::EntityClassifier)> data{0};
22 read(offsetof(MetadataMemoryLayoutV1, classifier), data.size(), data.data());
23 return {data[0], data[1], data[2], data[3], data[4], data[5]};
24 }
25
26 eui_t read_eui() const {
27 eui_t data{0};
28 read(offsetof(MetadataMemoryLayoutV1, uuid), data.size(), data.data());
29 return data;
30 }
31
32 bool write_entity_classifier(const entities::EntityClassifier &classifier) const {
33 return write(offsetof(MetadataMemoryLayoutV1, classifier), sizeof(classifier),
34 reinterpret_cast<const uint8_t *>(std::addressof(classifier)));
35 }
36
37 // we don't delete functions -- where is the point?
38
39private:
40 bus::addr_t address;
41};
42
43} // namespace metadata
EEPROM25AA02(bus::addr_t address)
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....
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)
Definition meta.h:18
bool write_entity_classifier(const entities::EntityClassifier &classifier) const
Definition meta.h:32
eui_t read_eui() const
Definition meta.h:26
entities::EntityClassifier read_entity_classifier() const
Definition meta.h:20