MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/application/safety/AddPwmOverrideTermination.hh

62 lines
1.7 KiB
C++
Raw Normal View History

/*
* AddPwmOverrideTermination.h
*
* Created on: 8 <EFBFBD><EFBFBD><EFBFBD>. 2019 <EFBFBD>.
* Author: titov
*/
#ifndef SOURCE_APPLICATION_SAFETY_ADDPWMOVERRIDETERMINATION_H_
#define SOURCE_APPLICATION_SAFETY_ADDPWMOVERRIDETERMINATION_H_
#include "../ISetupStep.hh"
#include "../../driver/safety/FailureTermination.hh"
#include "../../peripheral/IPwmOverride.hh"
namespace application { namespace safety {
//!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
struct AddPwmOverrideTermination : public ISetupStep {
typedef driver::safety::FailureTermination FT;
FT * terminator = nullptr;
peripheral::IPwmOverride * pwm_override = nullptr;
struct Links {
Environment::Id failure_term_id; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
Environment::Id pwm_override_id; //!<<3C><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
};
bool input( Environment & env );
void build( Environment & env );
const Links & links;
AddPwmOverrideTermination( const Links & links ) : links(links) {}
};
}
}
inline bool application::safety::AddPwmOverrideTermination::input(
Environment & env ) {
return grab( terminator, env.rholder.getShared<FT>(links.failure_term_id) )
and grab( pwm_override, env.rholder.getShared<peripheral::IPwmOverride>(links.pwm_override_id) );
}
inline void application::safety::AddPwmOverrideTermination::build(
Environment & env ) {
Local<FT> term( terminator, *env.rholder.getShared<FT>(links.failure_term_id) );
Local<peripheral::IPwmOverride> pwm( pwm_override, *env.rholder.getShared<peripheral::IPwmOverride>(links.pwm_override_id) );
term->addTerminate( pwm_override );
}
#endif /* SOURCE_APPLICATION_SAFETY_ADDPWMOVERRIDETERMINATION_H_ */