REDAC HybridController
Firmware for LUCIDAC/REDAC Teensy
Loading...
Searching...
No Matches
back_panel.h
Go to the documentation of this file.
1// Copyright (c) 2024 anabrid GmbH
2// Contact: https://www.anabrid.com/licensing/
3//
4// SPDX-License-Identifier: MIT OR GPL-2.0-or-later
5
6#pragma once
7
8#include "block/base.h"
9#include "bus/functions.h"
10#include "chips/TMP127Q1.h"
11
12
21namespace platform {
22
26 static BackPanelIdentifier fromRaw(uint16_t raw);
27};
28
29void convertToJson(const BackPanelIdentifier &id, JsonObject dst);
30
35protected:
36 static const SPISettings F_ID_SPI_SETTINGS;
40
41public:
42 explicit BackPanelHAL(bus::addr_t block_address);
43 uint16_t read_backplane_and_slot_id() const;
45};
46
48 BackPanelHAL* hardware;
49public:
51
52 static REDACBackPanel *from_entity_classifier(entities::EntityClassifier classifier,
53 __attribute__((__unused__)) bus::addr_t block_address);
54
55 utils::status config_self_from_json(JsonObjectConst cfg) override { return utils::status::success(); }
56
57 metadata::eui_t get_entity_eui() const override;
58
59 Entity *get_child_entity(const std::string &child_id) override { return nullptr; }
60
61 std::vector<Entity *> get_child_entities() override { return {}; };
62
63 explicit REDACBackPanel(BackPanelHAL* hardware);
64
65 uint16_t read_backplane_and_slot_id() const;
66
67 // only further method to list here is read_temperature(), cf. #220
68 // https://lab.analogparadigm.com/lucidac/firmware/hybrid-controller/-/merge_requests/75
69};
70
71} // namespace platform
EntityClassifier classifier
Definition base.h:217
Entity()=default
A DataFunction class wraps SPI communication over the digital bus.
Definition functions.h:47
eui_t read_eui() const
Definition entity.h:42
Base HAL class Backplane.
Definition back_panel.h:34
const metadata::MetadataEditor f_meta
Definition back_panel.h:37
static const SPISettings F_ID_SPI_SETTINGS
Definition back_panel.h:3
const functions::DataFunction f_id
Definition back_panel.h:39
uint16_t read_backplane_and_slot_id() const
metadata::eui_t get_entity_eui() const
Definition back_panel.h:44
BackPanelHAL(bus::addr_t block_address)
Definition back_panel.cpp:7
const functions::TMP127Q1 f_temperature
Definition back_panel.h:38
utils::status config_self_from_json(JsonObjectConst cfg) override
Deserialize a new configuration for this entity from a JsonObject.
Definition back_panel.h:55
Entity * get_child_entity(const std::string &child_id) override
Definition back_panel.h:59
uint16_t read_backplane_and_slot_id() const
std::vector< Entity * > get_child_entities() override
Definition back_panel.h:61
metadata::eui_t get_entity_eui() const override
static REDACBackPanel * from_entity_classifier(entities::EntityClassifier classifier, __attribute__((__unused__)) bus::addr_t block_address)
static constexpr auto CLASS_
Definition back_panel.h:50
REDACBackPanel(BackPanelHAL *hardware)
A recoverable error, inspired from https://abseil.io/docs/cpp/guides/status and https://github....
Definition error.h:35
static status success()
Syntactic sugar for success.
Definition error.h:104
__attribute__((section(".fastrun"), noinline, noclone, optimize("Os"))) int flash_sector_not_erased(uint32_t address)
Definition flasher.cpp:114
uint16_t addr_t
Definition bus.h:27
std::array< uint8_t, 8 > eui_t
Definition base.h:20
This concept of Backpanel / Backplane refers to the address decoder and periphery reachable by every ...
Definition cblock.h:15
void convertToJson(const BackPanelIdentifier &id, JsonObject dst)
static BackPanelIdentifier fromRaw(uint16_t raw)