REDAC HybridController
Firmware for LUCIDAC/REDAC Teensy
|
Loading...
Searching...
No Matches
mblock_mul.cpp
Go to the documentation of this file.
41FLASHMEM utils::status blocks::MMulBlock::_config_elements_from_json(const JsonVariantConst &cfg) {
68FLASHMEM utils::status blocks::MMulBlock::write_to_hardware() { return write_calibration_to_hardware(); }
72 if (!hardware->write_calibration_input_offsets(i, calibration[i].offset_x, calibration[i].offset_y))
95FLASHMEM blocks::MMulBlock *blocks::MMulBlock::from_entity_classifier(entities::EntityClassifier classifier,
97 if (!classifier or classifier.class_enum != CLASS_ or classifier.type != static_cast<uint8_t>(TYPE))
114 auto *new_block = new MMulBlock_FullAutoCalibration(slot, new MMulBlockHAL_V_1_1_X(block_address));
119 auto *new_block = new MMulBlock_FullAutoCalibration(slot, new MMulBlockHAL_V_1_M1_X(block_address));
149FLASHMEM bool blocks::MMulBlock::calibrate(platform::Cluster *cluster, carrier::Carrier *carrier) {
172 if (!cluster->add_constant(UBlock::Transmission_Mode::GROUND, slot_to_global_io_index(idx), 0.0f,
194 cluster->ublock->change_b_side_transmission_mode(UBlock::Transmission_Mode::POS_REF); // Set constant source
196 if (!cluster->cblock->set_factor(slot_to_global_io_index(idx * 2), 1.0f)) // Setting 1.0 to Y inputs
230 std::clamp(calibration[idx].offset_x, functions::DAC60508::RAW_ZERO, functions::DAC60508::RAW_MAX);
252 if (!cluster->cblock->set_factor(slot_to_global_io_index(idx * 2 + 1), 1.0f)) // Setting 1.0 to X inputs
285 std::clamp(calibration[idx].offset_y, functions::DAC60508::RAW_ZERO, functions::DAC60508::RAW_MAX);
310FLASHMEM blocks::MultiplierCalibration blocks::MMulBlock::get_calibration(uint8_t mul_idx) const {
325 return utils::status(777, "MMulBlock::calibration from json for multiplier %d values gain not accepted",
423FLASHMEM void blocks::MMulBlockHAL_V_1_0_X::reset_overload_flags() { f_overload_flags_reset.trigger(); }
425FLASHMEM bool blocks::MMulBlockHAL_V_1_0_X::write_calibration_input_offsets(uint8_t idx, uint16_t offset_x,
431FLASHMEM bool blocks::MMulBlockHAL_V_1_0_X::write_calibration_output_offset(uint8_t idx, uint16_t offset_z) {
458 : MMulBlockHAL_FullAutoCalibration(block_address), f_gain(bus::replace_function_idx(block_address, 6)) {}
virtual std::array< uint8_t, 8 > get_entity_eui() const =0
virtual bool calibrate(platform::Cluster *cluster, carrier::Carrier *carrier)
Definition mblock.h:111
Definition mblock_mul.h:19
std::bitset< 8 > read_overload_flags() override
Definition mblock_mul.cpp:435
bool write_calibration_output_offset(uint8_t idx, uint16_t offset_z) override
Definition mblock_mul.cpp:431
MMulBlockHAL_V_1_0_X(bus::addr_t block_address)
Definition mblock_mul.cpp:403
void reset_overload_flags() override
Definition mblock_mul.cpp:423
bool write_calibration_input_offsets(uint8_t idx, uint16_t offset_x, uint16_t offset_y) override
Definition mblock_mul.cpp:425
static uint16_t float_to_raw_calibration(float value)
Takes in voltage recieved by multiplier, returns DAC raw value.
Definition mblock_mul.h:48
Definition mblock_mul.h:75
MMulBlockHAL_V_1_1_X(bus::addr_t block_address)
Definition mblock_mul.cpp:457
bool write_calibration_gain(uint8_t idx, uint8_t gain) override
Definition mblock_mul.cpp:460
Definition mblock_mul.h:64
bool write_calibration_gain(uint8_t idx, uint8_t gain) override
Definition mblock_mul.cpp:448
MMulBlockHAL_V_1_M1_X(bus::addr_t block_address)
Definition mblock_mul.cpp:443
Definition mblock_mul.h:11
MMulBlock_FullAutoCalibration(SLOT slot, blocks::MMulBlockHAL_FullAutoCalibration *hardware)
Definition mblock_mul.cpp:439
bool calibrate(platform::Cluster *cluster, carrier::Carrier *carrier) override
Definition mblock_mul.cpp:331
utils::status write_calibration_to_hardware() override
Definition mblock_mul.cpp:318
Multplier Math Block (or: Math Multplier Block, hence MMulBlock).
Definition mblock_mul.h:105
void config_self_to_json(JsonObject &cfg) override
Definition mblock_mul.cpp:82
static MMulBlock * from_entity_classifier(entities::EntityClassifier classifier, bus::addr_t block_address)
Definition mblock_mul.cpp:95
const std::array< MultiplierCalibration, NUM_MULTIPLIERS > & get_calibration() const
Definition mblock_mul.cpp:306
utils::status config_self_from_json(JsonObjectConst cfg) override
Definition mblock_mul.cpp:25
utils::status _config_elements_from_json(const JsonVariantConst &cfg)
Definition mblock_mul.cpp:41
static constexpr uint8_t NUM_MULTIPLIERS
Definition mblock_mul.h:113
MMulBlock(SLOT slot, MMulBlockHAL *hardware)
Definition mblock_mul.cpp:126
virtual utils::status write_calibration_to_hardware()
Definition mblock_mul.cpp:70
utils::status write_to_hardware() override
Definition mblock_mul.cpp:68
metadata::eui_t get_entity_eui() const override
Definition mblock_mul.cpp:19
bool calibrate(platform::Cluster *cluster, carrier::Carrier *carrier) override
Definition mblock_mul.cpp:149
void change_b_side_transmission_mode(const Transmission_Mode mode)
Changes the transmission mode of the alternative ublock switches.
Definition ublock.cpp:205
bool add_constant(blocks::UBlock::Transmission_Mode signal_type, uint8_t u_out, float c_factor, uint8_t i_out)
Definition cluster.cpp:246
A recoverable error, inspired from https://abseil.io/docs/cpp/guides/status and https://github....
Definition error.h:35
Definition protocol.h:20
std::array< T, NUM_CHANNELS > average(std::array< T, NUM_CHANNELS >(*sample_function)(), size_t samples=100, unsigned int delay_us=33)
Acquire an averaged sample (either raw or float).
Definition daq.h:96
std::array< float, NUM_CHANNELS > sample()
Acquire one one-demand sample. Can not be used during a continuous acquisition.
Definition daq.cpp:519
Definition base.h:101
static constexpr uint8_t CALIBRATION_RESET
Definition base.h:103