REDAC HybridController
Firmware for LUCIDAC/REDAC Teensy
Loading...
Searching...
No Matches
ctrlblock.cpp
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#include "teensy/ctrlblock.h"
7#include <block/ctrlblock.h>
8#include <chips/SR74HCT595.h>
9
10blocks::CTRLBlock *blocks::CTRLBlock::from_entity_classifier(entities::EntityClassifier classifier,
11 bus::addr_t block_address) {
12 if (!classifier or classifier.class_enum != CLASS_ or classifier.type != TYPE)
13 return nullptr;
14
15 // Currently, there are no variants.
16 // TODO: After adapting classifier to (major, minor, patch) version,
17 // fail on v1.0.1, which has missing hardware components and should not be used.
18 return new CTRLBlock(new CTRLBlockHAL_V_1_0_2(block_address));
19}
20
21const SPISettings blocks::CTRLBlockHAL_V_1_0_2::F_SYNC_SPI_SETTINGS{1'000'000, MSBFIRST, SPI_MODE0};
22
24 : CTRLBlockHAL_Parent(block_address, 5), f_adc_mux(bus::address_from_tuple(1, 2), 5, true),
25 f_adc_mux_latch(bus::address_from_tuple(1, 3)),
26 f_sync(bus::address_from_tuple(1, 4), 5, F_SYNC_SPI_SETTINGS) {}
27
29 if (!f_adc_mux.transfer8(static_cast<uint8_t>(adc_bus)))
30 return false;
31 f_adc_mux_latch.trigger();
32 return true;
33}
34
35// float blocks::CTRLBlockHAL_V_1_0_2::read_temperature() { return 0; }
36
38 f_sync.transfer16(0b11110000'00000000 | id);
39 return true;
40}
const functions::SR74HCT595 f_adc_mux
Definition ctrlblock.h:24
CTRLBlockHAL_V_1_0_2(bus::addr_t block_address)
Definition ctrlblock.cpp:23
const functions::SyncFunction f_sync
Definition ctrlblock.h:26
bool write_sync_id(uint8_t id) override
Definition ctrlblock.cpp:37
bool write_adc_bus_muxers(ADCBus adc_bus) override
Definition ctrlblock.cpp:28
const functions::TriggerFunction f_adc_mux_latch
Definition ctrlblock.h:25
static const SPISettings F_SYNC_SPI_SETTINGS
Definition ctrlblock.h:21
entities::EntitySharedHardware< CTRLBlockHALBase > CTRLBlockHAL_Parent
Definition ctrlblock.h:17
Definition bus.h:21