/*****************************************************************************
 * File:       EXP_T_actions.c
 *
 * Description:
 * State actions methods implementation for the following object:
 *
 * Object:     technique  (T)
 * Domain:     EXP
 * Subsystem:  experiment
 * Repository: exp.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 "EXP_objects.h"
#include "A_enums.h"
#include "EXP_T_object.h"
#include "EXP_T_events.h"
#include "A_FBO_bridge.h"
#include "EXP_T_xform.h"


/*****************************************************************************
 * State [1]: 'idle'
 ****************************************************************************/
void
EXP_T_Action_1( EXP_T_s * self, const OoaEvent_t * const event )
{

  /* ASSIGN SELF.current_batch = 0 */
  self->m_current_batch = 0;

  /* TRANSFORM T::done() */
  EXP_T_Xform_done();

}

/*****************************************************************************
 * State [2]: 'running'
 ****************************************************************************/
void
EXP_T_Action_2( EXP_T_s * self, const OoaEvent_t * const event )
{

  /* ASSIGN SELF.current_batch = SELF.current_batch + 1 */
  self->m_current_batch = self->m_current_batch + 1;

  /* IF (SELF.current_batch <= SELF.number_of_batches) */
  if ( (self->m_current_batch <= self->m_number_of_batches) )
  {
    /* BRIDGE A::stopandgo(directive:'go') */
    A_FBO_stopandgo( A_order_go_e );
  }
  /* ELSE */
  else
  {
    /* GENERATE T3:'stop'() TO SELF */
    {
      EXP_T_Event3_s * event1 = (EXP_T_Event3_s *) Escher_NewOoaEvent( (void *) self, &EXP_T_Event3_sc );
      Escher_SendSelfEvent( (OoaEvent_t *)event1 );
    }
  }
  /* END IF */

}