/***************************************************************************** * File: A_PAA_ASG.c * * Object: probe_assignment (PAA) * 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 "A_PAA_ASG.h" /***************************************************************************** * State-Event Matrix (SEM) * Row Index is object's current (MC enumerated) current state. * Row zero is the unitialized state (e.g., for creation event transitions). * Column Index is (MC enumerated) state machine events. *****************************************************************************/ static const Escher_StateNumber_t A_PAA_AssignerStateEventMatrix[4][4] = { /* Row 0: 'Unitialized' */ { EVENT_CANT_HAPPEN, EVENT_CANT_HAPPEN, EVENT_CANT_HAPPEN, EVENT_CANT_HAPPEN }, /* Row 1: A_PAA_ASG_STATE_1 'waiting on row' */ { A_PAA_ASG_STATE_2, EVENT_IS_IGNORED, EVENT_IS_IGNORED, EVENT_IS_IGNORED }, /* Row 2: A_PAA_ASG_STATE_2 'waiting on probe' */ { EVENT_IS_IGNORED, A_PAA_ASG_STATE_3, EVENT_IS_IGNORED, EVENT_IS_IGNORED }, /* Row 3: A_PAA_ASG_STATE_3 'assigning pair' */ { EVENT_IS_IGNORED, EVENT_IS_IGNORED, A_PAA_ASG_STATE_1, EVENT_IS_IGNORED } }; /***************************************************************************** * Array of pointers to the object's state action methods. * Index is the (MC enumerated) number of the state action method to execute. ****************************************************************************/ static const StateAction_t A_PAA_ASG_Actions[4] = { (StateAction_t) 0, (StateAction_t) A_PAA_ASG_Action_1, /* 'waiting on row' */ (StateAction_t) A_PAA_ASG_Action_2, /* 'waiting on probe' */ (StateAction_t) A_PAA_ASG_Action_3 /* 'assigning pair' */ }; /***************************************************************************** * A_PAA_ASG_Dispatch - Assigner State model level event dispatching. ****************************************************************************/ static A_PAA_Asg_s self; void A_PAA_ASG_Dispatch( OoaEvent_t * event ) { Escher_EventNumber_t event_number; Escher_StateNumber_t current_state; Escher_StateNumber_t next_state; event_number = GetOoaEventNumber( event ); current_state = self.mc_current_state; next_state = A_PAA_AssignerStateEventMatrix[ current_state ][ event_number ]; if ( next_state <= 3 ) { /* Execute the state action and update 'current state' */ ( *A_PAA_ASG_Actions[ next_state ] )( &self, event ); self.mc_current_state = next_state; } else { if ( next_state == EVENT_CANT_HAPPEN ) { /* Event can't happen. */ UserEventCantHappenCallout( current_state, next_state, event_number ); } else if ( next_state == EVENT_IS_IGNORED ) { /* Event ignored */ } else { /* Translation/memory/stack error, etc - TBD */ } } } /***************************************************************************** * ****************************************************************************/ void A_PAA_AssignerInit() { self.mc_current_state = A_PAA_ASG_STATE_1; } /***************************************************************************** * ****************************************************************************/ void A_PAA_AssignerFini() { }