/*****************************************************************************
* File: CARPIO_bridge.c
*
* Description:
*
* External Entity: 'PIO_1' (CARPIO)
****************************************************************************/
#include "e_mechs.h"
#include "e_events.h"
#include "A_objects.h"
#include "A_CAR_object.h"
#include "A_CAR_events.h"
#include "A_SP_object.h"
#include "A_SP_events.h"
#include "CARPIO_bridge.h"
/* Dummy up instance handle for event generation. */
static Escher_InstanceHandle_t self = &self;
/*****************************************************************************
* Bridge: current_position
****************************************************************************/
int
CARPIO_current_position(
const int ee_car_id )
{
int result = 0;
/* Replace the following instructions with your specific code. */
{
A_CAR_s * v2; /* car */
/* SELECT ANY car FROM INSTANCES OF CAR
WHERE SELECTED.carousel_ID == PARAM.car_id */
v2 = (A_CAR_s *)0;
{ /* Begin selection scope */
A_CAR_s * w1;
Escher_Iterator_s iter3_CAR;
Escher_IteratorReset( &iter3_CAR, pG_A_CAR_extent );
while ( (w1 = (A_CAR_s *)Escher_IteratorNext( &iter3_CAR )) != 0 )
{
if ( w1->m_carousel_ID == ee_car_id )
{
v2 = w1;
break;
}
}
} /* End selection scope */
return v2->m_destination;
}
return result;
}
/*****************************************************************************
* Bridge: carousel_spin
****************************************************************************/
void
CARPIO_carousel_spin(
const int ee_car_id,
const int ee_destination )
{
/* Replace the following instructions with your implementation code. */
{
A_CAR_s * v5; /* car */
/* SELECT ANY car FROM INSTANCES OF CAR
WHERE SELECTED.carousel_ID == PARAM.car_id */
v5 = (A_CAR_s *)0;
{ /* Begin selection scope */
A_CAR_s * w4;
Escher_Iterator_s iter6_CAR;
Escher_IteratorReset( &iter6_CAR, pG_A_CAR_extent );
while ( (w4 = (A_CAR_s *)Escher_IteratorNext( &iter6_CAR )) != 0 )
{
if ( w4->m_carousel_ID == ee_car_id )
{
v5 = w4;
break;
}
}
} /* End selection scope */
/* GENERATE CAR2:'there'() TO car */
{
A_CAR_Event2_s * event7 = (A_CAR_Event2_s *) Escher_NewOoaEvent( (void *) v5, &A_CAR_Event2_sc );
SetEventSendingInstance( event7, self );
Escher_SendEvent( (OoaEvent_t *)event7 );
}
}
}