52 lines
2.0 KiB
C++
52 lines
2.0 KiB
C++
/*
|
|
* AlarmTimer.cpp
|
|
*
|
|
* Created on: 26 ìàÿ 2021 ã.
|
|
* Author: sozonov
|
|
*/
|
|
|
|
#include "../../systemic/MemberFuntion.hpp"
|
|
#include "../../systemic/ValueLazyFast.hpp"
|
|
#include "AlarmTimer.hh"
|
|
|
|
bool application::schematic::AlarmTimer::input( Environment & env ) {
|
|
|
|
return grab( alarm, env.rholder.getShared<Action>( links.alarm) );
|
|
|
|
}
|
|
|
|
void application::schematic::AlarmTimer::build( Environment & env ) {
|
|
|
|
typedef ::schematic::AlarmTimerCallback AlarmTimer;
|
|
|
|
AlarmTimer * alarm_timer = memories::instance_object<AlarmTimer>(env.static_data_ma, *alarm, setting.time_out);
|
|
|
|
typedef systemic::detail::ValueLazyFast< float, AlarmTimerLogic, &AlarmTimerLogic::getCurrentTime > GetCurentTime;
|
|
env.signals.add( links.time, memories::instance_object<GetCurentTime>( env.static_setup_ma, *alarm_timer ) );
|
|
|
|
typedef systemic::detail::MemberFuntion<AlarmTimerLogic, void, &AlarmTimerLogic::start > ActionStart;
|
|
ActionStart * action_start = memories::instance_object<ActionStart>( env.static_setup_ma, *alarm_timer );
|
|
env.rholder.share<Action>( *action_start, links.start );
|
|
|
|
typedef systemic::detail::MemberFuntion<AlarmTimerLogic, void, &AlarmTimerLogic::stop > ActionStop;
|
|
ActionStop * action_stop = memories::instance_object<ActionStop>( env.static_setup_ma, *alarm_timer );
|
|
env.rholder.share<Action>( *action_stop, links.stop );
|
|
|
|
typedef systemic::detail::MemberFuntion<AlarmTimerLogic, void, &AlarmTimerLogic::reset > ActionReset;
|
|
ActionReset * action_reset = memories::instance_object<ActionReset>( env.static_setup_ma, *alarm_timer );
|
|
env.rholder.share<Action>( *action_reset, links.reset );
|
|
|
|
env.statuses.create(links.state, alarm_timer->state());
|
|
|
|
systemic::ProcScheduler::ProcessParameter proc = {
|
|
.priority = params.priority,
|
|
.period = params.period, .phase = params.phase,
|
|
.controlled = false
|
|
};
|
|
|
|
env.scheduler.registerProcess( params.processor_id, *alarm_timer,
|
|
proc );
|
|
}
|
|
|
|
|