📄 marki_brewer.cpp
字号:
// {{{RME classifier 'Logical View::Brewers::MarkI_Brewer'#if defined( PRAGMA ) && ! defined( PRAGMA_IMPLEMENTED )#pragma implementation "rtg/MarkI_Brewer.h"#endif#include <RTSystem/AutoTestMarkI_x86VisualCpp60.h>#include <rtg/MarkI_Brewer.h>// {{{RME tool 'OT::Cpp' property 'ImplementationPreface'// {{{USR// }}}USR// }}}RMEstatic const RTRelayDescriptor rtg_relays[] ={ { "warmer" , &CUControl_Warmer::Conjugate::rt_class , 1 // cardinality } , { "sprayer" , &CUControl_Sprayer::Conjugate::rt_class , 1 // cardinality } , { "frontpanel" , &CUControl_FrontPanel::Conjugate::rt_class , 1 // cardinality }};static RTActor * new_MarkI_Brewer_Actor( RTController * _rts, RTActorRef * _ref ){ return new MarkI_Brewer_Actor( _rts, _ref );}const RTActorClass MarkI_Brewer ={ (const RTActorClass *)0 , "MarkI_Brewer" , (RTVersionId)0 , 3 , rtg_relays , new_MarkI_Brewer_Actor};static const char * const rtg_state_names[] ={ "TOP" , "Forwarder"};#define SUPER RTActorMarkI_Brewer_Actor::MarkI_Brewer_Actor( RTController * rtg_rts, RTActorRef * rtg_ref ) : RTActor( rtg_rts, rtg_ref ){}MarkI_Brewer_Actor::~MarkI_Brewer_Actor( void ){}// {{{RME operation 'AreDevicesReady()'int MarkI_Brewer_Actor::AreDevicesReady( void ){ // {{{USR RTMessage rsprayer, rwarmer; int retval = 0; sprayer.CheckReady().invoke( &rsprayer ); warmer.CheckReady().invoke( &rwarmer ); if( rsprayer.isValid() && rwarmer.isValid() ) { if ((rsprayer.getSignal() == sprayer.Ready()._signal) && (rwarmer.getSignal() == warmer.Ready()._signal )) retval = 1; } return retval; // }}}USR}// }}}RMEint MarkI_Brewer_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: // sprayer if( rtg_repIndex < 1 ) { rtg_end.port = &sprayer; rtg_end.index = rtg_repIndex; return 1; } break; case 2: // frontpanel if( rtg_repIndex < 1 ) { rtg_end.port = &frontpanel; rtg_end.index = rtg_repIndex; return 1; } break; default: break; } return RTActor::_followInV( rtg_end, rtg_portId, rtg_repIndex );}// {{{RME transition ':TOP:Forwarder:Junction6:Pot'INLINE_METHODS void MarkI_Brewer_Actor::transition1_Pot( const void * rtdata, CUControl_Warmer::Conjugate * rtport ){ // {{{USR sprayer.Pot().send(); // }}}USR}// }}}RME// {{{RME transition ':TOP:Forwarder:Junction8:NoPot'INLINE_METHODS void MarkI_Brewer_Actor::transition2_NoPot( const void * rtdata, CUControl_Warmer::Conjugate * rtport ){ // {{{USR // When the pot has been removed, notify the sprayer // he may have to stop brewing, or pause. sprayer.NoPot().send(); // }}}USR}// }}}RME// {{{RME transition ':TOP:Forwarder:Junction10:BrewComplete'INLINE_METHODS void MarkI_Brewer_Actor::transition3_BrewComplete( const void * rtdata, CUControl_Sprayer::Conjugate * rtport ){ // {{{USR // when the spayer is completed the brew, notify the user frontpanel.BrewingComplete().send(); // }}}USR}// }}}RME// {{{RME transition ':TOP:Forwarder:Junction1:BrewRequest'INLINE_METHODS void MarkI_Brewer_Actor::transition5_BrewRequest( const void * rtdata, CUControl_FrontPanel::Conjugate * rtport ){ // {{{USR if( AreDevicesReady() ) { frontpanel.Brew().send(); sprayer.Brew().send(); } else frontpanel.BrewDenied().send(); // }}}USR}// }}}RMEINLINE_CHAINS void MarkI_Brewer_Actor::chain4_Initial( void ){ // transition ':TOP:Initial:Initial' rtgChainBegin( 1, "Initial" ); rtgTransitionBegin(); rtgTransitionEnd(); enterState( 2 );}INLINE_CHAINS void MarkI_Brewer_Actor::chain1_Pot( void ){ // transition ':TOP:Forwarder:Junction6:Pot' rtgChainBegin( 2, "Pot" ); exitState( rtg_parent_state ); rtgTransitionBegin(); transition1_Pot( msg->data, (CUControl_Warmer::Conjugate *)msg->sap() ); rtgTransitionEnd(); enterState( 2 );}INLINE_CHAINS void MarkI_Brewer_Actor::chain2_NoPot( void ){ // transition ':TOP:Forwarder:Junction8:NoPot' rtgChainBegin( 2, "NoPot" ); exitState( rtg_parent_state ); rtgTransitionBegin(); transition2_NoPot( msg->data, (CUControl_Warmer::Conjugate *)msg->sap() ); rtgTransitionEnd(); enterState( 2 );}INLINE_CHAINS void MarkI_Brewer_Actor::chain3_BrewComplete( void ){ // transition ':TOP:Forwarder:Junction10:BrewComplete' rtgChainBegin( 2, "BrewComplete" ); exitState( rtg_parent_state ); rtgTransitionBegin(); transition3_BrewComplete( msg->data, (CUControl_Sprayer::Conjugate *)msg->sap() ); rtgTransitionEnd(); enterState( 2 );}INLINE_CHAINS void MarkI_Brewer_Actor::chain5_BrewRequest( void ){ // transition ':TOP:Forwarder:Junction1:BrewRequest' rtgChainBegin( 2, "BrewRequest" ); exitState( rtg_parent_state ); rtgTransitionBegin(); transition5_BrewRequest( msg->data, (CUControl_FrontPanel::Conjugate *)msg->sap() ); rtgTransitionEnd(); enterState( 2 );}void MarkI_Brewer_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: chain4_Initial(); return; default: break; } break; default: break; } unexpectedMessage(); return; // }}}RME case 2: // {{{RME state ':TOP:Forwarder' switch( portIndex ) { case 0: switch( signalIndex ) { case 1: return; default: break; } break; case 1: // {{{RME port 'warmer' switch( signalIndex ) { case CUControl_Warmer::Conjugate::rti_Pot: chain1_Pot(); return; case CUControl_Warmer::Conjugate::rti_NoPot: chain2_NoPot(); return; default: break; } break; // }}}RME case 2: // {{{RME port 'sprayer' switch( signalIndex ) { case CUControl_Sprayer::Conjugate::rti_BrewingComplete: chain3_BrewComplete(); return; default: break; } break; // }}}RME case 3: // {{{RME port 'frontpanel' switch( signalIndex ) { case CUControl_FrontPanel::Conjugate::rti_BrewRequested: chain5_BrewRequest(); return; default: break; } break; // }}}RME default: break; } break; // }}}RME default: unexpectedState(); return; }}const RTActor_class * MarkI_Brewer_Actor::getActorData( void ) const{ return &MarkI_Brewer_Actor::rtg_class;}const RTActor_class MarkI_Brewer_Actor::rtg_class ={ (const RTActor_class *)0 , rtg_state_names , 2 , MarkI_Brewer_Actor::rtg_parent_state , &MarkI_Brewer , 0 , (const RTComponentDescriptor *)0 , 4 , MarkI_Brewer_Actor::rtg_ports , 0 , (const RTLocalBindingDescriptor *)0 , 1 , MarkI_Brewer_Actor::rtg_MarkI_Brewer_fields};const RTStateId MarkI_Brewer_Actor::rtg_parent_state[] ={ 0 , 1};const RTPortDescriptor MarkI_Brewer_Actor::rtg_ports[] ={ { "warmer" , (const char *)0 , &CUControl_Warmer::Conjugate::rt_class , RTOffsetOf( MarkI_Brewer_Actor, MarkI_Brewer_Actor::warmer ) , 1 // cardinality , 1 , RTPortDescriptor::KindWired + RTPortDescriptor::NotificationDisabled + RTPortDescriptor::RegisterNotPermitted + RTPortDescriptor::VisibilityPublic } , { "sprayer" , (const char *)0 , &CUControl_Sprayer::Conjugate::rt_class , RTOffsetOf( MarkI_Brewer_Actor, MarkI_Brewer_Actor::sprayer ) , 1 // cardinality , 2 , RTPortDescriptor::KindWired + RTPortDescriptor::NotificationDisabled + RTPortDescriptor::RegisterNotPermitted + RTPortDescriptor::VisibilityPublic } , { "frontpanel" , (const char *)0 , &CUControl_FrontPanel::Conjugate::rt_class , RTOffsetOf( MarkI_Brewer_Actor, MarkI_Brewer_Actor::frontpanel ) , 1 // cardinality , 3 , RTPortDescriptor::KindWired + RTPortDescriptor::NotificationDisabled + RTPortDescriptor::RegisterNotPermitted + RTPortDescriptor::VisibilityPublic } , { "timer" , (const char *)0 , &Timing::Base::rt_class , RTOffsetOf( MarkI_Brewer_Actor, MarkI_Brewer_Actor::timer ) , 1 // cardinality , 4 , RTPortDescriptor::KindSpecial + RTPortDescriptor::NotificationDisabled + RTPortDescriptor::RegisterNotPermitted + RTPortDescriptor::VisibilityProtected }};const RTFieldDescriptor MarkI_Brewer_Actor::rtg_MarkI_Brewer_fields[] ={ // {{{RME classAttribute 'tid' { "tid" , RTOffsetOf( MarkI_Brewer_Actor, tid ) // {{{RME tool 'OT::CppTargetRTS' property 'TypeDescriptor' , &RTType_RTTimerId // }}}RME // {{{RME tool 'OT::CppTargetRTS' property 'GenerateTypeModifier' , (const RTTypeModifier *)0 // }}}RME } // }}}RME};#undef SUPER// {{{RME tool 'OT::Cpp' property 'ImplementationEnding'// {{{USR// }}}USR// }}}RME// }}}RME
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -