/***************************************************************************** * File: A_SP_actions.c * * Description: * State actions methods implementation for the following object: * * Object: sampling_probe (SP) * 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 "sys_init.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 "TIM_bridge.h" #include "SPPIO_bridge.h" #include "UI_bridge.h" /***************************************************************************** * State [1]: 'up' ****************************************************************************/ void A_SP_Action_1( A_SP_s * self, const OoaEvent_t * const event ) { A_SP_Event3_s * rcvd_evt = (A_SP_Event3_s *)event; A_ROW_s * v33; /* row */ /* ASSIGN SELF.current_position = RCVD_EVT.altitude */ self->m_current_position = rcvd_evt->m_altitude; /* SELECT ONE row RELATED BY SELF->ROW[R2] */ v33 = (A_ROW_s *)0; { /* Begin navigation scope */ A_PAA_s * p31_PAA_R2 = self->mc_PAA_R2; if ( p31_PAA_R2 ) { A_ROW_s * p32_ROW_R2 = p31_PAA_R2->mc_ROW_R2; v33 = p32_ROW_R2; } } /* End navigation scope */ /* GENERATE ROW4:'sample_complete'() TO row */ { A_ROW_Event4_s * event34 = (A_ROW_Event4_s *) Escher_NewOoaEvent( (void *) v33, &A_ROW_Event4_sc ); SetEventSendingInstance( event34, self ); Escher_SendEvent( (OoaEvent_t *)event34 ); } /* BRIDGE UI::display_position(s:'top', length:3) */ UI_display_position( 3, "top" ); } /***************************************************************************** * State [2]: 'down' ****************************************************************************/ void A_SP_Action_2( A_SP_s * self, const OoaEvent_t * const event ) { A_SP_Event3_s * rcvd_evt = (A_SP_Event3_s *)event; A_ROW_s * v38; /* row */ A_SP_Event1_s * v40; /* move_on */ Escher_Timer_t * v41; /* mo_timer */ int v39; /* st */ /* SELECT ONE row RELATED BY SELF->ROW[R2] */ v38 = (A_ROW_s *)0; { /* Begin navigation scope */ A_PAA_s * p36_PAA_R2 = self->mc_PAA_R2; if ( p36_PAA_R2 ) { A_ROW_s * p37_ROW_R2 = p36_PAA_R2->mc_ROW_R2; v38 = p37_ROW_R2; } } /* End navigation scope */ /* ASSIGN st = row.sampling_time */ v39 = v38->m_sampling_time; /* CREATE EVENT INSTANCE move_on SP1:'finished_sampling'() TO SELF */ v40 = (A_SP_Event1_s *) Escher_NewOoaEvent( (void *) self, &A_SP_Event1_sc ); /* ASSIGN mo_timer = TIM::timer_start(microseconds:st, event_inst:move_on) */ v41 = TIM_timer_start( (OoaEvent_t *)v40, v39 ); } /***************************************************************************** * State [3]: 'raising' ****************************************************************************/ void A_SP_Action_3( A_SP_s * self, const OoaEvent_t * const event ) { unsigned char v42; /* p */ /* ASSIGN p = SPPIO::raise_needle(radial_position:SELF.radial_position, theta_offset:SELF.theta_offset, probe_id:SELF.probe_ID) */ v42 = SPPIO_raise_needle( self->m_probe_ID, self->m_radial_position, self->m_theta_offset ); } /***************************************************************************** * State [4]: 'lowering' ****************************************************************************/ void A_SP_Action_4( A_SP_s * self, const OoaEvent_t * const event ) { A_PAA_s * v44; /* assignment */ unsigned char v46; /* p */ /* SELECT ANY assignment FROM INSTANCES OF PAA WHERE (SELECTED.probe_ID == SELF.probe_ID) */ v44 = (A_PAA_s *)0; { /* Begin selection scope */ A_PAA_s * w43; Escher_Iterator_s iter45_PAA; Escher_IteratorReset( &iter45_PAA, pG_A_PAA_extent ); while ( (w43 = (A_PAA_s *)Escher_IteratorNext( &iter45_PAA )) != 0 ) { if ( (w43->m_probe_ID == self->m_probe_ID) ) { v44 = w43; break; } } } /* End selection scope */ /* ASSIGN p = SPPIO::lower_needle(radial_position:SELF.radial_position, theta_offset:SELF.theta_offset, probe_id:SELF.probe_ID) */ v46 = SPPIO_lower_needle( self->m_probe_ID, self->m_radial_position, self->m_theta_offset ); /* ASSIGN SELF.current_position = 'down' */ self->m_current_position = A_position_down_e; /* BRIDGE UI::display_position(s:'low', length:3) */ UI_display_position( 3, "low" ); }