/***************************************************************************** * File: A_FBO_bridge.c * * Description: * Bridge implementation for the following application analysis object: * * Object: bridge (FBO) * 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 "A_FBO_bridge.h" /***************************************************************************** * Bridge method: INIT ****************************************************************************/ void A_FBO_INIT( void ) { /* Dummy up instance handle for event generation. */ static Escher_InstanceHandle_t self = &self; A_CAR_s * v1; /* car */ A_ROW_s * v2; /* row */ A_SP_s * v3; /* probe */ /* CREATE OBJECT INSTANCE car OF CAR */ v1 = A_CAR_Create(); /* ASSIGN car.carousel_ID = 10 */ v1->m_carousel_ID = 10; /* ASSIGN car.current_position = 10 */ v1->m_current_position = 10; /* CREATE OBJECT INSTANCE row OF ROW */ v2 = A_ROW_Create(); /* RELATE row TO car ACROSS R1 */ A_ROW_R1_Link( v1, v2 ); /* ASSIGN row.radius = 10 */ v2->m_radius = 10; /* ASSIGN row.current_sampling_position = 0 */ v2->m_current_sampling_position = 0; /* ASSIGN row.maximum_sampling_positions = 20 */ v2->m_maximum_sampling_positions = 20; /* ASSIGN row.sampling_time = 3000000 */ v2->m_sampling_time = 3000000; /* ASSIGN row.needs_probe = FALSE */ v2->m_needs_probe = false; /* CREATE OBJECT INSTANCE probe OF SP */ v3 = A_SP_Create(); /* ASSIGN probe.probe_ID = 1 */ v3->m_probe_ID = 1; /* ASSIGN probe.radial_position = 20 */ v3->m_radial_position = 20; /* ASSIGN probe.theta_offset = 40 */ v3->m_theta_offset = 40; /* ASSIGN probe.current_position = 'up' */ v3->m_current_position = A_position_up_e; /* ASSIGN probe.available = TRUE */ v3->m_available = true; } /***************************************************************************** * Bridge method: genC2there ****************************************************************************/ static void A_FBO_genC2there2( void ); /* Declare posted routine. */ void A_FBO_genC2there( void ) { InterleaveBridge( A_FBO_genC2there2 ); } static void A_FBO_genC2there2( void ) { /* Dummy up instance handle for event generation. */ static Escher_InstanceHandle_t self = &self; A_CAR_s * v4; /* c */ /* SELECT ANY c FROM INSTANCES OF CAR */ v4 = (A_CAR_s *)Escher_SetGetAny( pG_A_CAR_extent ); /* GENERATE CAR2:'there'() TO c */ { A_CAR_Event2_s * event5 = (A_CAR_Event2_s *) Escher_NewOoaEvent( (void *) v4, &A_CAR_Event2_sc ); SetEventSendingInstance( event5, self ); Escher_SendEvent( (OoaEvent_t *)event5 ); } } /***************************************************************************** * Bridge method: genP3pip ****************************************************************************/ static void A_FBO_genP3pip2( void ); /* Declare posted routine. */ void A_FBO_genP3pip( void ) { InterleaveBridge( A_FBO_genP3pip2 ); } static void A_FBO_genP3pip2( void ) { /* Dummy up instance handle for event generation. */ static Escher_InstanceHandle_t self = &self; A_SP_s * v6; /* p */ /* SELECT ANY p FROM INSTANCES OF SP */ v6 = (A_SP_s *)Escher_SetGetAny( pG_A_SP_extent ); /* GENERATE SP3:'probe_in_position'(altitude:p.current_position) TO p */ { A_SP_Event3_s * event7 = (A_SP_Event3_s *) Escher_NewOoaEvent( (void *) v6, &A_SP_Event3_sc ); event7->m_altitude = v6->m_current_position; SetEventSendingInstance( event7, self ); Escher_SendEvent( (OoaEvent_t *)event7 ); } } /***************************************************************************** * Bridge method: stopandgo ****************************************************************************/ void A_FBO_stopandgo( const int s_directive ) { /* Dummy up instance handle for event generation. */ static Escher_InstanceHandle_t self = &self; A_ROW_s * v8; /* row */ /* IF (RCVD_EVT.directive == 'go') */ if ( (s_directive == A_order_go_e) ) { /* SELECT ANY row FROM INSTANCES OF ROW */ v8 = (A_ROW_s *)Escher_SetGetAny( pG_A_ROW_extent ); /* GENERATE ROW1:'probe_request'() TO row */ { A_ROW_Event1_s * event9 = (A_ROW_Event1_s *) Escher_NewOoaEvent( (void *) v8, &A_ROW_Event1_sc ); SetEventSendingInstance( event9, self ); Escher_SendEvent( (OoaEvent_t *)event9 ); } } /* END IF */ }