📄 cuwarmer.cpp
字号:
// {{{RME classifier 'Logical View::ControlUnits::CUWarmer'#if defined( PRAGMA ) && ! defined( PRAGMA_IMPLEMENTED )#pragma implementation "rtg/CUWarmer.h"#endif#include <RTSystem/AutoTestMarkI_x86VisualCpp60.h>#include <rtg/CUWarmer.h>// {{{RME tool 'OT::Cpp' property 'ImplementationPreface'// {{{USR// }}}USR// }}}RMEstatic const RTRelayDescriptor rtg_relays[] ={ { "warmer" , &Warmer::Conjugate::rt_class , 1 // cardinality } , { "coffeeControl" , &CUControl_Warmer::Base::rt_class , 1 // cardinality }};static RTActor * new_CUWarmer_Actor( RTController * _rts, RTActorRef * _ref ){ return new CUWarmer_Actor( _rts, _ref );}const RTActorClass CUWarmer ={ (const RTActorClass *)0 , "CUWarmer" , (RTVersionId)0 , 2 , rtg_relays , new_CUWarmer_Actor};static const char * const rtg_state_names[] ={ "TOP" , "PotEmpty" , "Warming" , "NoPot"};#define SUPER RTActorCUWarmer_Actor::CUWarmer_Actor( RTController * rtg_rts, RTActorRef * rtg_ref ) : RTActor( rtg_rts, rtg_ref ){}CUWarmer_Actor::~CUWarmer_Actor( void ){}int CUWarmer_Actor::_followInV( RTBindingEnd & rtg_end, int rtg_portId, int rtg_repIndex ){ switch( rtg_portId ) { case 0: // warmer if( rtg_repIndex < 1 ) { rtg_end.port = &warmer; rtg_end.index = rtg_repIndex; return 1; } break; case 1: // coffeeControl if( rtg_repIndex < 1 ) { rtg_end.port = &coffeeControl; rtg_end.index = rtg_repIndex; return 1; } break; default: break; } return RTActor::_followInV( rtg_end, rtg_portId, rtg_repIndex );}// {{{RME transition ':TOP:PotEmpty:Junction2:pot_not_empty'INLINE_METHODS void CUWarmer_Actor::transition2_pot_not_empty( const void * rtdata, Warmer::Conjugate * rtport ){ // {{{USR warmer.warmerOn().send();#ifdef DEBUG cout << "(Warmer) Turning warmer plate on.\n";#endif // }}}USR}// }}}RME// {{{RME transition ':TOP:Warming:Junction2:no_pot'INLINE_METHODS void CUWarmer_Actor::transition3_no_pot( const void * rtdata, Warmer::Conjugate * rtport ){ // {{{USR warmer.warmerOff().send(); coffeeControl.NoPot().send();#ifdef DEBUG cout << "(Warmer) Turning warmer plate off.\n";#endif // }}}USR}// }}}RME// {{{RME transition ':TOP:PotEmpty:Junction4:ready'INLINE_METHODS void CUWarmer_Actor::transition4_ready( const void * rtdata, CUControl_Warmer::Base * rtport ){ // {{{USR coffeeControl.Ready().reply(); // }}}USR}// }}}RME// {{{RME transition ':TOP:Junction1:not_ready'INLINE_METHODS void CUWarmer_Actor::transition5_not_ready( const void * rtdata, CUControl_Warmer::Base * rtport ){ // {{{USR coffeeControl.NotReady().reply(); // }}}USR}// }}}RME// {{{RME transition ':TOP:NoPot:Junction2:pot_not_empty'INLINE_METHODS void CUWarmer_Actor::transition6_pot_not_empty( const void * rtdata, Warmer::Conjugate * rtport ){ // {{{USR warmer.warmerOn().send(); coffeeControl.Pot().send(); // }}}USR}// }}}RME// {{{RME transition ':TOP:NoPot:Junction3:pot_empty'INLINE_METHODS void CUWarmer_Actor::transition7_pot_empty( const void * rtdata, Warmer::Conjugate * rtport ){ // {{{USR // coffeeControl.send( Pot ); coffeeControl.Pot().send(); // }}}USR}// }}}RME// {{{RME transition ':TOP:PotEmpty:Junction6:no_pot'INLINE_METHODS void CUWarmer_Actor::transition8_no_pot( const void * rtdata, Warmer::Conjugate * rtport ){ // {{{USR // coffeeControl.send( NoPot ); coffeeControl.NoPot().send(); // }}}USR}// }}}RME// {{{RME transition ':TOP:Warming:Junction3:pot_empty'INLINE_METHODS void CUWarmer_Actor::transition9_pot_empty( const void * rtdata, Warmer::Conjugate * rtport ){ // {{{USR warmer.warmerOff().send();#ifdef DEBUG cout << "(Warmer) Turning warmer plate off.\n";#endif // }}}USR}// }}}RMEINLINE_CHAINS void CUWarmer_Actor::chain1_Initial( void ){ // transition ':TOP:Initial:Initial' rtgChainBegin( 1, "Initial" ); rtgTransitionBegin(); rtgTransitionEnd(); enterState( 2 );}INLINE_CHAINS void CUWarmer_Actor::chain5_not_ready( void ){ // transition ':TOP:Junction1:not_ready' rtgChainBegin( 1, "not_ready" ); exitToChainState( 1, rtg_parent_state ); rtgTransitionBegin(); transition5_not_ready( msg->data, (CUControl_Warmer::Base *)msg->sap() ); rtgTransitionEnd(); processHistory();}INLINE_CHAINS void CUWarmer_Actor::chain2_pot_not_empty( void ){ // transition ':TOP:PotEmpty:Junction2:pot_not_empty' rtgChainBegin( 2, "pot_not_empty" ); exitState( rtg_parent_state ); rtgTransitionBegin(); transition2_pot_not_empty( msg->data, (Warmer::Conjugate *)msg->sap() ); rtgTransitionEnd(); enterState( 3 );}INLINE_CHAINS void CUWarmer_Actor::chain10_PotEmpty( void ){ // transition ':TOP:PotEmpty:Junction8:PotEmpty' rtgChainBegin( 2, "PotEmpty" ); exitState( rtg_parent_state ); rtgTransitionBegin(); rtgTransitionEnd(); enterState( 2 );}INLINE_CHAINS void CUWarmer_Actor::chain8_no_pot( void ){ // transition ':TOP:PotEmpty:Junction6:no_pot' rtgChainBegin( 2, "no_pot" ); exitState( rtg_parent_state ); rtgTransitionBegin(); transition8_no_pot( msg->data, (Warmer::Conjugate *)msg->sap() ); rtgTransitionEnd(); enterState( 4 );}INLINE_CHAINS void CUWarmer_Actor::chain4_ready( void ){ // transition ':TOP:PotEmpty:Junction4:ready' rtgChainBegin( 2, "ready" ); exitState( rtg_parent_state ); rtgTransitionBegin(); transition4_ready( msg->data, (CUControl_Warmer::Base *)msg->sap() ); rtgTransitionEnd(); enterState( 2 );}INLINE_CHAINS void CUWarmer_Actor::chain12_PotNotEmpty( void ){ // transition ':TOP:Warming:Junction4:PotNotEmpty' rtgChainBegin( 3, "PotNotEmpty" ); exitState( rtg_parent_state ); rtgTransitionBegin(); rtgTransitionEnd(); enterState( 3 );}INLINE_CHAINS void CUWarmer_Actor::chain9_pot_empty( void ){ // transition ':TOP:Warming:Junction3:pot_empty' rtgChainBegin( 3, "pot_empty" ); exitState( rtg_parent_state ); rtgTransitionBegin(); transition9_pot_empty( msg->data, (Warmer::Conjugate *)msg->sap() ); rtgTransitionEnd(); enterState( 2 );}INLINE_CHAINS void CUWarmer_Actor::chain3_no_pot( void ){ // transition ':TOP:Warming:Junction2:no_pot' rtgChainBegin( 3, "no_pot" ); exitState( rtg_parent_state ); rtgTransitionBegin(); transition3_no_pot( msg->data, (Warmer::Conjugate *)msg->sap() ); rtgTransitionEnd(); enterState( 4 );}INLINE_CHAINS void CUWarmer_Actor::chain6_pot_not_empty( void ){ // transition ':TOP:NoPot:Junction2:pot_not_empty' rtgChainBegin( 4, "pot_not_empty" ); exitState( rtg_parent_state ); rtgTransitionBegin(); transition6_pot_not_empty( msg->data, (Warmer::Conjugate *)msg->sap() ); rtgTransitionEnd(); enterState( 3 );}INLINE_CHAINS void CUWarmer_Actor::chain7_pot_empty( void ){ // transition ':TOP:NoPot:Junction3:pot_empty' rtgChainBegin( 4, "pot_empty" ); exitState( rtg_parent_state ); rtgTransitionBegin(); transition7_pot_empty( msg->data, (Warmer::Conjugate *)msg->sap() ); rtgTransitionEnd(); enterState( 2 );}INLINE_CHAINS void CUWarmer_Actor::chain11_NoPot( void ){ // transition ':TOP:NoPot:Junction5:NoPot' rtgChainBegin( 4, "NoPot" ); exitState( rtg_parent_state ); rtgTransitionBegin(); rtgTransitionEnd(); enterState( 4 );}void CUWarmer_Actor::rtsBehavior( int signalIndex, int portIndex ){ for( int stateIndex = getCurrentState(); ; stateIndex = rtg_parent_state[ stateIndex - 1 ] ) switch( stateIndex ) { case 1: // {{{RME state ':TOP' switch( portIndex ) { case 0: switch( signalIndex ) { case 1: chain1_Initial(); return; default: break; } break; case 2: // {{{RME port 'coffeeControl' switch( signalIndex ) { case CUControl_Warmer::Base::rti_CheckReady: chain5_not_ready(); return; default: break; } break; // }}}RME default: break; } unexpectedMessage(); return; // }}}RME case 2: // {{{RME state ':TOP:PotEmpty' switch( portIndex ) { case 0: switch( signalIndex ) { case 1: return; default: break; } break; case 1: // {{{RME port 'warmer' switch( signalIndex ) { case Warmer::Conjugate::rti_potNotEmpty: chain2_pot_not_empty(); return; case Warmer::Conjugate::rti_potEmpty: chain10_PotEmpty(); return; case Warmer::Conjugate::rti_warmerEmpty: chain8_no_pot(); return; default: break; } break; // }}}RME case 2: // {{{RME port 'coffeeControl' switch( signalIndex ) { case CUControl_Warmer::Base::rti_CheckReady: chain4_ready(); return; default: break; } break; // }}}RME default: break; } break; // }}}RME case 3: // {{{RME state ':TOP:Warming' switch( portIndex ) { case 0: switch( signalIndex ) { case 1: return; default: break; } break; case 1: // {{{RME port 'warmer' switch( signalIndex ) { case Warmer::Conjugate::rti_potNotEmpty: chain12_PotNotEmpty(); return; case Warmer::Conjugate::rti_potEmpty: chain9_pot_empty(); return; case Warmer::Conjugate::rti_warmerEmpty: chain3_no_pot(); return; default: break; } break; // }}}RME default: break; } break; // }}}RME case 4: // {{{RME state ':TOP:NoPot' switch( portIndex ) { case 0: switch( signalIndex ) { case 1: return; default: break; } break; case 1: // {{{RME port 'warmer' switch( signalIndex ) { case Warmer::Conjugate::rti_potNotEmpty: chain6_pot_not_empty(); return; case Warmer::Conjugate::rti_potEmpty: chain7_pot_empty(); return; case Warmer::Conjugate::rti_warmerEmpty: chain11_NoPot(); return; default: break; } break; // }}}RME default: break; } break; // }}}RME default: unexpectedState(); return; }}const RTActor_class * CUWarmer_Actor::getActorData( void ) const{ return &CUWarmer_Actor::rtg_class;}const RTActor_class CUWarmer_Actor::rtg_class ={ (const RTActor_class *)0 , rtg_state_names , 4 , CUWarmer_Actor::rtg_parent_state , &CUWarmer , 0 , (const RTComponentDescriptor *)0 , 2 , CUWarmer_Actor::rtg_ports , 0 , (const RTLocalBindingDescriptor *)0 , 0 , (const RTFieldDescriptor *)0};const RTStateId CUWarmer_Actor::rtg_parent_state[] ={ 0 , 1 , 1 , 1};const RTPortDescriptor CUWarmer_Actor::rtg_ports[] ={ { "warmer" , (const char *)0 , &Warmer::Conjugate::rt_class , RTOffsetOf( CUWarmer_Actor, CUWarmer_Actor::warmer ) , 1 // cardinality , 1 , RTPortDescriptor::KindWired + RTPortDescriptor::NotificationDisabled + RTPortDescriptor::RegisterNotPermitted + RTPortDescriptor::VisibilityPublic } , { "coffeeControl" , (const char *)0 , &CUControl_Warmer::Base::rt_class , RTOffsetOf( CUWarmer_Actor, CUWarmer_Actor::coffeeControl ) , 1 // cardinality , 2 , RTPortDescriptor::KindWired + RTPortDescriptor::NotificationDisabled + RTPortDescriptor::RegisterNotPermitted + RTPortDescriptor::VisibilityPublic }};#undef SUPER// {{{RME tool 'OT::Cpp' property 'ImplementationEnding'// {{{USR// }}}USR// }}}RME// }}}RME
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -