37 lines
1.1 KiB
C++
37 lines
1.1 KiB
C++
|
|
/*
|
|||
|
|
* SignalUpdateAction.cpp
|
|||
|
|
*
|
|||
|
|
* Created on: 21 <EFBFBD><EFBFBD><EFBFBD>. 2020 <EFBFBD>.
|
|||
|
|
* Author: titov
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#include "SignalUpdateAction.hh"
|
|||
|
|
#include "../../schematic/action/ValueUpdateAction.hpp"
|
|||
|
|
|
|||
|
|
bool application::schematic::SignalUpdateAction::input( Environment & env ) {
|
|||
|
|
|
|||
|
|
return ( signal = env.signals.get( links.signal ) )
|
|||
|
|
and grab( action, env.rholder.getShared<Action>( links.action ) );
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void application::schematic::SignalUpdateAction::build( Environment & env ) {
|
|||
|
|
|
|||
|
|
typedef ::schematic::functor::ValueUpdateAction<float> SignalUpdateAction;
|
|||
|
|
|
|||
|
|
SignalUpdateAction * object = memories::instance_object<SignalUpdateAction>( env.static_object_ma, *signal, *action );
|
|||
|
|
|
|||
|
|
systemic::ProcScheduler::ProcessParameter proc = {
|
|||
|
|
.priority = params.priority,
|
|||
|
|
.period = params.period, .phase = params.phase,
|
|||
|
|
.controlled = false
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
env.scheduler.registerProcess( params.processor_id, *object,
|
|||
|
|
proc );
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
application::schematic::SignalUpdateAction::SignalUpdateAction(
|
|||
|
|
const Links & links, const configuration::ProcessConfig & params ) : links(links), params(params) {}
|