/***************************************************************************** * File: A_ROW_actions.c * * Description: * State actions methods implementation for the following object: * * Object: row (ROW) * Domain: A * Subsystem: autosampler * Repository: as2.ooa * * Notice: * (C) Copyright 1999, 2000 ROX Software, Inc. * All rights reserved. * * Model Compiler: MC3020 V1.3.0 * * Warnings: * !!! THIS IS AN AUTO-GENERATED FILE. PLEASE DO NOT EDIT. !!! ****************************************************************************/ #include "e_mechs.h" #include "e_events.h" #include "A_objects.h" #include "A_CAR_object.h" #include "A_CAR_events.h" #include "A_ROW_object.h" #include "A_ROW_events.h" #include "A_SP_object.h" #include "A_SP_events.h" #include "A_PAA_object.h" #include "A_PAA_ASG.h" #include "A_PAA_ASG_events.h" #include "EXP_FBO_bridge.h" #include "A_ROW_xform.h" /***************************************************************************** * State [1]: 'idle' ****************************************************************************/ void A_ROW_Action_1( A_ROW_s * self, const OoaEvent_t * const event ) { A_PAA_s * v13; /* assignment */ A_SP_s * v16; /* probe */ /* ASSIGN SELF.current_sampling_position = 0 */ self->m_current_sampling_position = 0; /* SELECT ONE assignment RELATED BY SELF->PAA[R2] */ v13 = self->mc_PAA_R2; /* SELECT ONE probe RELATED BY assignment->SP[R2] */ v16 = v13->mc_SP_R2; /* ASSIGN probe.available = TRUE */ v16->m_available = true; /* UNRELATE SELF FROM probe ACROSS R2 USING assignment */ A_PAA_R2_Unlink( self, v16, v13 ); /* DELETE OBJECT INSTANCE assignment */ A_PAA_Delete( v13 ); /* BRIDGE EXP::done() */ EXP_FBO_done(); } /***************************************************************************** * State [2]: 'waiting' ****************************************************************************/ void A_ROW_Action_2( A_ROW_s * self, const OoaEvent_t * const event ) { /* ASSIGN SELF.needs_probe = TRUE */ self->m_needs_probe = true; /* GENERATE PAA_A1:'row_needs_probe'() TO PAA ASSIGNER */ { A_PAA_AsgEvent1_s * event17 = (A_PAA_AsgEvent1_s *) Escher_NewOoaEvent( (void *) 0, &A_PAA_AsgEvent1_sc ); SetEventSendingInstance( event17, self ); Escher_SendEvent( (OoaEvent_t *)event17 ); } } /***************************************************************************** * State [3]: 'positioning' ****************************************************************************/ void A_ROW_Action_3( A_ROW_s * self, const OoaEvent_t * const event ) { A_CAR_s * v20; /* car */ int v21; /* next */ /* SELECT ONE car RELATED BY SELF->CAR[R1] */ v20 = self->mc_CAR_R1; /* ASSIGN SELF.next_sampling_position = SELF.current_sampling_position + 1 */ self->m_next_sampling_position = self->m_current_sampling_position + 1; /* ASSIGN next = ROW::convert_dest(radius:SELF.radius, next_sampling_position:SELF.next_sampling_position) */ v21 = A_ROW_Xform_convert_dest( self->m_next_sampling_position, self->m_radius ); /* GENERATE CAR1:'go'(destination:next) TO car */ { A_CAR_Event1_s * event22 = (A_CAR_Event1_s *) Escher_NewOoaEvent( (void *) v20, &A_CAR_Event1_sc ); event22->m_destination = v21; SetEventSendingInstance( event22, self ); Escher_SendEvent( (OoaEvent_t *)event22 ); } } /***************************************************************************** * State [4]: 'sampling' ****************************************************************************/ void A_ROW_Action_4( A_ROW_s * self, const OoaEvent_t * const event ) { A_SP_s * v26; /* probe */ /* SELECT ONE probe RELATED BY SELF->PAA[R2]->SP[R2] */ v26 = (A_SP_s *)0; { /* Begin navigation scope */ A_PAA_s * p24_PAA_R2 = self->mc_PAA_R2; if ( p24_PAA_R2 ) { A_SP_s * p25_SP_R2 = p24_PAA_R2->mc_SP_R2; v26 = p25_SP_R2; } } /* End navigation scope */ /* ASSIGN SELF.current_sampling_position = SELF.current_sampling_position + 1 */ self->m_current_sampling_position = self->m_current_sampling_position + 1; /* GENERATE SP2:'begin_sampling'() TO probe */ { A_SP_Event2_s * event27 = (A_SP_Event2_s *) Escher_NewOoaEvent( (void *) v26, &A_SP_Event2_sc ); SetEventSendingInstance( event27, self ); Escher_SendEvent( (OoaEvent_t *)event27 ); } } /***************************************************************************** * State [5]: 'checking' ****************************************************************************/ void A_ROW_Action_5( A_ROW_s * self, const OoaEvent_t * const event ) { /* IF (SELF.next_sampling_position < SELF.maximum_sampling_positions) */ if ( (self->m_next_sampling_position < self->m_maximum_sampling_positions) ) { /* GENERATE ROW5:'next_sample'() TO SELF */ { A_ROW_Event5_s * event28 = (A_ROW_Event5_s *) Escher_NewOoaEvent( (void *) self, &A_ROW_Event5_sc ); Escher_SendSelfEvent( (OoaEvent_t *)event28 ); } } /* ELSE */ else { /* GENERATE ROW6:'sampling_complete'() TO SELF */ { A_ROW_Event6_s * event29 = (A_ROW_Event6_s *) Escher_NewOoaEvent( (void *) self, &A_ROW_Event6_sc ); Escher_SendSelfEvent( (OoaEvent_t *)event29 ); } } /* END IF */ }