/* * 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( env.cparams, provider_id, links.params ) ); } void application::schematic::SoftSwitch::build( Environment & env ) { systemic::LocalSetting ls( parameter ); processing::logic::SoftSwitch * object = memories::instance_object(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() ); }