/* * MoveToPoint.cpp * * Created on: 8 èþë. 2020 ã. * Author: LeonidTitov */ #include "MoveToPoint.hh" #include "../../systemic/ValueLazyFast.hpp" bool application::procedures::MoveToPoint::input( Environment & env ) { typedef technological::adapter::TieInterface ValueControl; return ( control_system = env.rholder.getShared< ValueControl >( links.positioning_control ) ) and ( torque_limit = env.rholder.getShared( links.torque_limit ) ) and ( acc_limit = env.rholder.getShared( links.acceleration_limit ) ) and ( speed_limit = env.rholder.getShared( links.speed_limit ) ) and ( parameter = systemic::getSetting( env.cparams, provider, links.conditions ) ); } void application::procedures::MoveToPoint::build( Environment & env ) { typedef technological::function::MoveToPoint MTP; systemic::LocalSetting ls( parameter ); MTP * procedure = memories::instance_object( env.static_object_ma, *control_system, *speed_limit, *torque_limit, *acc_limit ); procedure->configure( ls.setting ); systemic::ProcScheduler::ProcessParameter proc = { .priority = params.priority, .period = params.period, .phase = params.phase, .controlled = true }; env.scheduler.registerProcess( params.processor_id, *procedure, proc ); env.rholder.share( *procedure, links.procedure ); typedef systemic::detail::ValueLazyFast SizeError; env.statuses.add( links.size_error, memories::instance_object( env.static_setup_ma, *procedure ) ); typedef systemic::detail::ValueLazyFast InvalidInput; env.statuses.add( links.invalid_input, memories::instance_object( env.static_setup_ma, *procedure ) ); typedef systemic::detail::ValueLazyFast ControlSystemBusy; env.statuses.add( links.control_system_busy, memories::instance_object( env.static_setup_ma, *procedure ) ); }