MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/application/schematic/SignalMathInitializer.cpp

114 lines
3.4 KiB
C++

/*
* SignalMathInitializer.cpp
*
* Created on: 17 ìàð. 2023 ã.
* Author: titov
*/
#include "SignalMath.hh"
bool application::schematic::SignalAbs::input( Environment & env ) {
return ( value_a = env.signals.get( links.a ) );
}
void application::schematic::SignalAbs::build( Environment & env ) {
systemic::detail::SignalAbs * sabs = memories::instance_object<systemic::detail::SignalAbs>( env.static_object_ma, *value_a );
env.signals.add( links.abs, sabs );
}
bool application::schematic::SignalSubtraction::input( Environment & env ) {
return ( value_a = env.signals.get( links.a ) ) and ( value_b = env.signals.get( links.b ) );
}
void application::schematic::SignalSubtraction::build( Environment & env ) {
systemic::detail::SignalSubtraction * sabs = memories::instance_object<systemic::detail::SignalSubtraction>( env.static_object_ma, *value_a, *value_b );
env.signals.add( links.subtraction, sabs );
}
bool application::schematic::SignalAddition::input( Environment & env ) {
return ( value_a = env.signals.get( links.a ) ) and ( value_b = env.signals.get( links.b ) );
}
void application::schematic::SignalAddition::build( Environment & env ) {
systemic::detail::SignalAddition * sadd = memories::instance_object<systemic::detail::SignalAddition>( env.static_object_ma, *value_a, *value_b );
env.signals.add( links.addition, sadd );
}
bool application::schematic::SignalSquareRoot::input( Environment & env ) {
return ( value_a = env.signals.get( links.a ) );
}
void application::schematic::SignalSquareRoot::build( Environment & env ) {
std::pointer_to_unary_function<float, float> pf = std::ptr_fun<float, float>( &std::sqrt );
systemic::detail::SignalUnaryFunction * sabs = memories::instance_object<systemic::detail::SignalUnaryFunction>( env.static_object_ma,
*value_a, pf );
env.signals.add( links.sqrt, sabs );
}
bool application::schematic::SignalMultiplication::input( Environment & env ) {
return ( value_a = env.signals.get( links.a ) ) and ( value_b = env.signals.get( links.b ) );
}
void application::schematic::SignalMultiplication::build( Environment & env ) {
systemic::detail::SignalMultiplication * sabs = memories::instance_object<systemic::detail::SignalMultiplication>( env.static_object_ma, *value_a, *value_b );
env.signals.add( links.multiplication, sabs );
}
bool application::schematic::SignalDivision::input( Environment & env ) {
return ( value_a = env.signals.get( links.a ) ) and ( value_b = env.signals.get( links.b ) );
}
void application::schematic::SignalDivision::build( Environment & env ) {
systemic::detail::SignalDivision * sabs = memories::instance_object<systemic::detail::SignalDivision>( env.static_object_ma, *value_a, *value_b );
env.signals.add( links.division, sabs );
}
bool application::schematic::SignalPower::input( Environment & env ) {
return ( value_a = env.signals.get( links.a ) ) and ( value_b = env.signals.get( links.b ) );
}
void application::schematic::SignalPower::build( Environment & env ) {
using namespace std;
std::pointer_to_binary_function<float, float, float> pointer( &powf );
systemic::detail::SignalBinaryFunction * sabs = memories::instance_object<systemic::detail::SignalBinaryFunction>( env.static_object_ma, *value_a, *value_b, pointer );
env.signals.add( links.power, sabs );
}