/***************************************************************************** * File: A_CAR_actions.c * * Description: * State actions methods implementation for the following object: * * Object: carousel (CAR) * 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_enums.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 "CARPIO_bridge.h" /***************************************************************************** * State [1]: 'resting' ****************************************************************************/ void A_CAR_Action_1( A_CAR_s * self, const OoaEvent_t * const event ) { A_ROW_s * v3; /* row */ /* ASSIGN SELF.current_position = CARPIO::current_position(car_id:SELF.carousel_ID) */ self->m_current_position = CARPIO_current_position( self->m_carousel_ID ); /* IF (SELF.current_position != SELF.destination) */ if ( (self->m_current_position != self->m_destination) ) { } /* END IF */ /* SELECT ONE row RELATED BY SELF->ROW[R1] */ v3 = self->mc_ROW_R1; /* GENERATE ROW3:'carousel_move_complete'() TO row */ { A_ROW_Event3_s * event4 = (A_ROW_Event3_s *) Escher_NewOoaEvent( (void *) v3, &A_ROW_Event3_sc ); SetEventSendingInstance( event4, self ); Escher_SendEvent( (OoaEvent_t *)event4 ); } } /***************************************************************************** * State [2]: 'going' ****************************************************************************/ void A_CAR_Action_2( A_CAR_s * self, const OoaEvent_t * const event ) { A_CAR_Event1_s * rcvd_evt = (A_CAR_Event1_s *)event; A_SP_s * v8; /* probe */ int v5; /* delta */ /* ASSIGN SELF.destination = RCVD_EVT.destination */ self->m_destination = rcvd_evt->m_destination; /* ASSIGN delta = SELF.destination - SELF.current_position */ v5 = self->m_destination - self->m_current_position; /* IF (delta == 0) */ if ( (v5 == 0) ) { /* GENERATE CAR2:'there'() TO SELF */ { A_CAR_Event2_s * event6 = (A_CAR_Event2_s *) Escher_NewOoaEvent( (void *) self, &A_CAR_Event2_sc ); Escher_SendSelfEvent( (OoaEvent_t *)event6 ); } } /* ELSE */ else { /* SELECT ANY probe FROM INSTANCES OF SP WHERE (SELECTED.current_position == 'down') */ v8 = (A_SP_s *)0; { /* Begin selection scope */ A_SP_s * w7; Escher_Iterator_s iter9_SP; Escher_IteratorReset( &iter9_SP, pG_A_SP_extent ); while ( (w7 = (A_SP_s *)Escher_IteratorNext( &iter9_SP )) != 0 ) { if ( (w7->m_current_position == A_position_down_e) ) { v8 = w7; break; } } } /* End selection scope */ /* IF (NOT_EMPTY probe) */ if ( (((v8 != 0) ? true : false)) ) { /* GENERATE CAR2:'there'() TO SELF */ { A_CAR_Event2_s * event10 = (A_CAR_Event2_s *) Escher_NewOoaEvent( (void *) self, &A_CAR_Event2_sc ); Escher_SendSelfEvent( (OoaEvent_t *)event10 ); } } /* ELSE */ else { /* BRIDGE CARPIO::carousel_spin(car_id:SELF.carousel_ID, destination:delta) */ CARPIO_carousel_spin( self->m_carousel_ID, v5 ); } /* END IF */ } /* END IF */ }