REDAC HybridController
Firmware for LUCIDAC/REDAC Teensy
|
Loading...
Searching...
No Matches
iblock.cpp
Go to the documentation of this file.
16uint8_t functions::ICommandRegisterFunction::chip_cmd_word(uint8_t chip_input_idx, uint8_t chip_output_idx,
21blocks::IBlock::IBlock(IBlockHAL *hardware) : FunctionBlock("I"), hardware(hardware), outputs{0} {
34 return utils::status(hardware->write_upscaling(scaling_factors) and hardware->write_outputs(outputs));
52FLASHMEM bool blocks::IBlock::_is_output_connected(uint8_t output) const { return outputs[output]; }
140 return utils::status("IBlock: Could not disconnect output '%d', probably out of range", output);
153 return utils::status("IBlock: Given array size %d does not meet expected %d", outputs_json.size(),
168FLASHMEM utils::status blocks::IBlock::_config_upscaling_from_json(const JsonVariantConst &cfg) {
196FLASHMEM utils::status blocks::IBlock::_connect_from_json(const JsonVariantConst &input_spec, uint8_t output) {
204 return utils::status("IBlock: Could not connect %d -> %d, probably out of bounds", input, outputs);
237FLASHMEM void blocks::IBlock::set_upscaling(std::bitset<NUM_INPUTS> scales) { scaling_factors = scales; }
272FLASHMEM blocks::IBlock *blocks::IBlock::from_entity_classifier(entities::EntityClassifier classifier,
291FLASHMEM const std::array<uint32_t, blocks::IBlock::NUM_OUTPUTS> &blocks::IBlock::get_outputs() const {
306FLASHMEM bool blocks::IBlockHAL_V_1_2_X::write_outputs(const std::array<uint32_t, 16> &outputs) {
341 command |= functions::ICommandRegisterFunction::chip_cmd_word(iidx_two_four, oidx_one_two) << 8;
348 command |= functions::ICommandRegisterFunction::chip_cmd_word(iidx_one_three, oidx_three_four) << 16;
355 command |= functions::ICommandRegisterFunction::chip_cmd_word(iidx_two_four, oidx_three_four) << 24;
A function block represents one module in a cluster, such as an M-Block, C-Block, I-Block or U-Block.
Definition base.h:29
Definition iblock.h:55
Definition iblock.h:66
bool write_upscaling(std::bitset< 32 > upscaling) override
Definition iblock.cpp:376
IBlockHAL_V_1_2_X(bus::addr_t block_address)
Definition iblock.cpp:299
bool write_outputs(const std::array< uint32_t, 16 > &outputs) override
Definition iblock.cpp:306
Definition iblock.h:44
The Lucidac I-Block (I for Current; the Implicit Summing Block) is represented by this class.
Definition iblock.h:99
void config_self_to_json(JsonObject &cfg) override
Serialize the configuration of this entity to a JsonObject.
Definition iblock.cpp:248
utils::status config_self_from_json(JsonObjectConst cfg) override
Deserialize a new configuration for this entity from a JsonObject.
Definition iblock.cpp:105
static IBlock * from_entity_classifier(entities::EntityClassifier classifier, bus::addr_t block_address)
Definition iblock.cpp:272
bool _is_connected(uint8_t input, uint8_t output) const
Definition iblock.cpp:48
void set_outputs(const std::array< uint32_t, NUM_OUTPUTS > &outputs_)
Definition iblock.cpp:295
bool _is_output_connected(uint8_t output) const
Definition iblock.cpp:52
metadata::eui_t get_entity_eui() const override
Definition iblock.cpp:27
const std::array< uint32_t, NUM_OUTPUTS > & get_outputs() const
Definition iblock.cpp:291
utils::status _connect_from_json(const JsonVariantConst &input_spec, uint8_t output)
Definition iblock.cpp:196
bool is_connected(uint8_t input, uint8_t output) const
Whether an input is connected to an output.
Definition iblock.cpp:54
bool connect(uint8_t input, uint8_t output, bool exclusive=false, bool allow_input_splitting=false)
Connects an input line [0..31] to an output line [0..15] by setting an appropriate bit/switch in the ...
Definition iblock.cpp:67
utils::status _config_upscaling_from_json(const JsonVariantConst &cfg)
Definition iblock.cpp:168
bool disconnect(uint8_t input, uint8_t output)
Disconnect one input from an output. Fails for invalid arguments or if no input is connected.
Definition iblock.cpp:215
bool set_upscaling(uint8_t input, bool upscale)
Sets the input scale of the corresponding output.
Definition iblock.cpp:230
utils::status _config_outputs_from_json(const JsonVariantConst &cfg)
Definition iblock.cpp:125
bool get_upscaling(uint8_t output) const
Returns the input scale of the corresponding output.
Definition iblock.cpp:241
ICommandRegisterFunction(bus::addr_t address)
Definition iblock.cpp:13
static uint8_t chip_cmd_word(uint8_t chip_input_idx, uint8_t chip_output_idx, bool connect=true)
Definition iblock.cpp:16
static const SPISettings DEFAULT_SPI_SETTINGS
Definition iblock.h:10
The SR74HCT595 is an 8-Bit Shift Register with 3-State Output Registers.
Definition SR74HCT595.h:16
A recoverable error, inspired from https://abseil.io/docs/cpp/guides/status and https://github....
Definition error.h:35
bool is_number(const std::string::const_iterator &start, const std::string::const_iterator &end)
Definition is_number.cpp:8
Definition base.h:101