41 lines
1.4 KiB
C++
41 lines
1.4 KiB
C++
/*
|
|
* SoftSwitch.cpp
|
|
*
|
|
* Created on: 3 èþë. 2020 ã.
|
|
* Author: LeonidTitov
|
|
*/
|
|
|
|
#include "SoftSwitch.hh"
|
|
|
|
bool application::schematic::SoftSwitch::input( Environment & env ) {
|
|
|
|
return ( input_a = env.signals.get( links.value_a ) ) and ( input_b = env.signals.get( links.value_b ) )
|
|
and ( valid_a = env.statuses.get( links.valid_a ) ) and ( valid_b = env.statuses.get( links.valid_b ) )
|
|
and ( parameter = systemic::getSetting<processing::logic::SoftSwitch>( env.cparams, provider_id, links.params ) );
|
|
|
|
}
|
|
|
|
void application::schematic::SoftSwitch::build( Environment & env ) {
|
|
|
|
systemic::LocalSetting<processing::logic::SoftSwitch> ls( parameter );
|
|
|
|
processing::logic::SoftSwitch * object = memories::instance_object<processing::logic::SoftSwitch>(env.static_object_ma, *input_a, *valid_a, *input_b, *valid_b );
|
|
|
|
object->configure( ls.setting );
|
|
|
|
systemic::ProcScheduler::ProcessParameter proc = {
|
|
.priority = params.priority,
|
|
.period = params.period, .phase = params.phase,
|
|
.controlled = false
|
|
};
|
|
|
|
env.scheduler.registerProcess( params.processor_id, *object,
|
|
proc );
|
|
|
|
env.signals.create( links.summary, object->summary() );
|
|
|
|
env.statuses.create(links.active_a, object->activeSignalA() );
|
|
env.statuses.create(links.active_b, object->activeSignalB() );
|
|
|
|
}
|