REDAC HybridController
Firmware for LUCIDAC/REDAC Teensy
|
Loading...
Searching...
No Matches
mblock_int.cpp
Go to the documentation of this file.
41FLASHMEM const std::array<float, 8> &blocks::MIntBlock::get_ic_values() const { return ic_values; }
72FLASHMEM void blocks::MIntBlock::reset_ic_values() { std::fill(ic_values.begin(), ic_values.end(), 0.0f); }
84FLASHMEM bool blocks::MIntBlock::set_time_factors(const std::array<unsigned int, 8> &time_factors_) {
164FLASHMEM utils::status blocks::MIntBlock::_config_elements_from_json(const JsonVariantConst &cfg) {
205 return utils::status("MIntBlock: Integrator %d time factor k illegal: %d", int_idx, int_cfg["k"]);
223FLASHMEM blocks::MIntBlock *blocks::MIntBlock::from_entity_classifier(entities::EntityClassifier classifier,
265FLASHMEM blocks::IntegratorCalibration blocks::MIntBlock_V_1_1_X::get_calibration(uint8_t int_idx) const {
279FLASHMEM bool blocks::MIntBlock_V_1_1_X::calibrate(platform::Cluster *cluster, carrier::Carrier *carrier) {
293 // Connect +0.1 to all integrator inputs. 0.1 because we have high precision and a long integration time.
295 if (!cluster->add_constant(UBlock::Transmission_Mode::POS_REF, slot_to_global_io_index(idx), 1.0f,
351 if (!mode::FlexIOControl::init(use_slow_integration ? mode::DEFAULT_IC_TIME * 100 : mode::DEFAULT_IC_TIME,
426FLASHMEM bool blocks::MIntBlockHAL_V_1_0_X::write_time_factor_switches(std::bitset<8> switches) {
437FLASHMEM void blocks::MIntBlockHAL_V_1_0_X::reset_overload_flags() { f_overload_flags_reset.trigger(); }
440 : MIntBlockHAL_V_1_0_X(block_address), f_time_factor_gain_0_3(bus::replace_function_idx(block_address, 8)),
443FLASHMEM bool blocks::MIntBlockHAL_V_1_1_X::write_time_factor_switches(std::bitset<8> switches) {
444 // In version 1.1, a new shift register has been chained behind the time factors shift register,
476blocks::MIntBlockHAL_V_1_1_X::write_time_factor_switches_and_limiters_enable(std::bitset<8> switches,
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_int.h:40
std::bitset< 8 > read_overload_flags() override
Definition mblock_int.cpp:433
MIntBlockHAL_V_1_0_X(bus::addr_t block_address)
Definition mblock_int.cpp:405
bool write_ic(uint8_t idx, float ic) override
Definition mblock_int.cpp:419
bool write_time_factor_switches(std::bitset< 8 > switches) override
Definition mblock_int.cpp:426
void reset_overload_flags() override
Definition mblock_int.cpp:437
Definition mblock_int.h:64
virtual bool write_time_factor_gain(uint8_t idx, uint8_t gain)
Definition mblock_int.cpp:494
virtual bool write_limiters_enable(std::bitset< 8 > limiters)
Definition mblock_int.cpp:459
bool write_time_factor_switches(std::bitset< 8 > switches) override
Definition mblock_int.cpp:443
MIntBlockHAL_V_1_1_X(bus::addr_t block_address)
Definition mblock_int.cpp:439
bool write_ic(uint8_t idx, float ic) override
Definition mblock_int.cpp:487
virtual bool write_time_factor_switches_and_limiters_enable(std::bitset< 8 > switches, std::bitset< 8 > limiters)
Definition mblock_int.cpp:476
Definition mblock_int.h:19
Definition mblock_int.h:143
utils::status write_calibration_to_hardware()
Definition mblock_int.cpp:329
void reset(entities::ResetAction action) override
Definition mblock_int.cpp:250
MIntBlock_V_1_1_X(SLOT slot, MIntBlockHAL_V_1_1_X *hardware)
Definition mblock_int.cpp:400
bool _gain_calibration(bool use_slow_integration)
Definition mblock_int.cpp:338
const std::array< IntegratorCalibration, NUM_INTEGRATORS > & get_calibration() const
Definition mblock_int.cpp:261
utils::status write_to_hardware() override
returns true in case of success
Definition mblock_int.cpp:271
bool calibrate(platform::Cluster *cluster, carrier::Carrier *carrier) override
Definition mblock_int.cpp:279
Definition mblock_int.h:84
void config_self_to_json(JsonObject &cfg) override
Serialize the configuration of this entity to a JsonObject.
Definition mblock_int.cpp:213
const std::array< unsigned int, 8 > & get_time_factors() const
Definition mblock_int.cpp:74
static MIntBlock * from_entity_classifier(entities::EntityClassifier classifier, bus::addr_t block_address)
Definition mblock_int.cpp:223
utils::status _config_elements_from_json(const JsonVariantConst &cfg)
Definition mblock_int.cpp:164
MIntBlock(SLOT slot, MIntBlockHAL *hardware)
Definition mblock_int.cpp:26
bool set_time_factor(uint8_t int_idx, unsigned int k)
Definition mblock_int.cpp:98
const std::array< float, 8 > & get_ic_values() const
Definition mblock_int.cpp:41
bool set_ic_value(uint8_t idx, float value)
Definition mblock_int.cpp:63
void reset(entities::ResetAction action) override
Definition mblock_int.cpp:132
metadata::eui_t get_entity_eui() const override
Definition mblock_int.cpp:20
bool set_time_factors(unsigned int k)
Definition mblock_int.cpp:91
utils::status config_self_from_json(JsonObjectConst cfg) override
Deserialize a new configuration for this entity from a JsonObject.
Definition mblock_int.cpp:148
unsigned int get_time_factor(uint8_t idx) const
Definition mblock_int.cpp:78
static constexpr uint8_t NUM_INTEGRATORS
Definition mblock_int.h:92
utils::status write_to_hardware() override
returns true in case of success
Definition mblock_int.cpp:113
void change_reference_magnitude(Reference_Magnitude ref)
Definition ublock.cpp:229
static bool init(unsigned long long ic_time_ns, unsigned long long op_time_ns, mode::OnOverload on_overload=mode::OnOverload::HALT, mode::OnExtHalt on_ext_halt=mode::OnExtHalt::IGNORE, mode::Sync sync=mode::Sync::NONE)
Definition mode.cpp:89
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
@ IGNORE
@ IGNORE
Definition base.h:101
static constexpr uint8_t CALIBRATION_RESET
Definition base.h:103