Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -r3e7b064885d99793bb56d940bd613555b1cdbdfa --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 3e7b064885d99793bb56d940bd613555b1cdbdfa) @@ -43,33 +43,33 @@ // ********** private data ********** static volatile BOOL modeRequest[NUM_OF_DG_MODES - 1]; ///< Array of mode request flags. -static DG_OP_MODE currentMode = MODE_INIT; ///< The currently active mode. +static DG_OP_MODE_T currentMode = DG_MODE_INIT; ///< The currently active mode. static U32 currentSubMode = 0; ///< The currently active state of the active mode. static U32 broadcastModeIntervalCtr = 11; ///< Interval counter used to determine when to broadcase operation mode. Initialize to 11 to stagger broadcast. /// This matrix determines legal transitions from one mode to another. -static const DG_OP_MODE MODE_TRANSITION_TABLE[NUM_OF_DG_MODES - 1][NUM_OF_DG_MODES - 1] = +static const DG_OP_MODE_T MODE_TRANSITION_TABLE[NUM_OF_DG_MODES - 1][NUM_OF_DG_MODES - 1] = { -// from to-> FAULT SERVICE INIT STANBY STBY-SOLO RE-CIRC FILL DRAIN FLUSH HEAT DIS CHEM DIS - /* FAUL */{ MODE_FAUL, MODE_SERV, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG }, - /* SERV */{ MODE_FAUL, MODE_SERV, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG }, - /* INIT */{ MODE_FAUL, MODE_NLEG, MODE_INIT, MODE_STAN, MODE_SOLO, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG }, - /* STAN */{ MODE_FAUL, MODE_SERV, MODE_NLEG, MODE_STAN, MODE_SOLO, MODE_CIRC, MODE_NLEG, MODE_NLEG, MODE_FLUS, MODE_NLEG, MODE_CHEM }, - /* SOLO */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_STAN, MODE_SOLO, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_FLUS, MODE_HEAT, MODE_NLEG }, - /* CIRC */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_STAN, MODE_NLEG, MODE_CIRC, MODE_FILL, MODE_DRAI, MODE_NLEG, MODE_NLEG, MODE_NLEG }, - /* FILL */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_STAN, MODE_NLEG, MODE_CIRC, MODE_FILL, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG }, - /* DRAI */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_STAN, MODE_NLEG, MODE_CIRC, MODE_NLEG, MODE_DRAI, MODE_NLEG, MODE_NLEG, MODE_NLEG }, - /* FLUS */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_STAN, MODE_SOLO, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_FLUS, MODE_NLEG, MODE_NLEG }, - /* HEAT */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_SOLO, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_HEAT, MODE_NLEG }, - /* CHEM */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_STAN, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_CHEM } +// from to-> FAULT SERVICE INIT STANBY STBY-SOLO RE-CIRC FILL DRAIN FLUSH HEAT DIS CHEM DIS + /* FAUL */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, + /* SERV */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, + /* INIT */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_INIT, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, + /* STAN */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_CIRC, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_FLUS, DG_MODE_NLEG, DG_MODE_CHEM }, + /* SOLO */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_FLUS, DG_MODE_HEAT, DG_MODE_NLEG }, + /* CIRC */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_CIRC, DG_MODE_FILL, DG_MODE_DRAI, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, + /* FILL */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_CIRC, DG_MODE_FILL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, + /* DRAI */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_CIRC, DG_MODE_NLEG, DG_MODE_DRAI, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, + /* FLUS */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_FLUS, DG_MODE_NLEG, DG_MODE_NLEG }, + /* HEAT */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_SOLO, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_HEAT, DG_MODE_NLEG }, + /* CHEM */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_CHEM } }; static U32 dgOpModePublicationTimerCounter = 0; // ********** private function prototypes ********** -static DG_OP_MODE arbitrateModeRequest( void ); -static void transitionToNewOperationMode( DG_OP_MODE newMode ); +static DG_OP_MODE_T arbitrateModeRequest( void ); +static void transitionToNewOperationMode( DG_OP_MODE_T newMode ); static void broadcastOperationMode( void ); /*********************************************************************//** @@ -92,11 +92,11 @@ // start in init mode #ifndef CAN_TEST - currentMode = MODE_INIT; + currentMode = DG_MODE_INIT; #else - currentMode = MODE_FAUL; + currentMode = DG_MODE_FAUL; #endif - transitionToNewOperationMode( MODE_INIT ); + transitionToNewOperationMode( DG_MODE_INIT ); // call initializers for the individual modes initFaultMode(); @@ -125,14 +125,14 @@ *************************************************************************/ void execOperationModes( void ) { - DG_OP_MODE newMode; + DG_OP_MODE_T newMode; // any new mode requests? newMode = arbitrateModeRequest(); // will return current mode if no pending requests newMode = MODE_TRANSITION_TABLE[currentMode][newMode]; // is requested new mode valid and legal at this time? - if ( newMode >= MODE_NLEG ) + if ( newMode >= DG_MODE_NLEG ) { // TODO - s/w fault newMode = currentMode; @@ -149,53 +149,53 @@ // mode specific processing to be done continuously switch ( currentMode ) { - case MODE_FAUL: + case DG_MODE_FAUL: currentSubMode = execFaultMode(); break; - case MODE_SERV: + case DG_MODE_SERV: currentSubMode = execServiceMode(); break; - case MODE_INIT: + case DG_MODE_INIT: currentSubMode = execInitAndPOSTMode(); break; - case MODE_STAN: + case DG_MODE_STAN: currentSubMode = execStandbyMode(); break; - case MODE_SOLO: + case DG_MODE_SOLO: currentSubMode = execSoloMode(); break; - case MODE_CIRC: + case DG_MODE_CIRC: currentSubMode = execRecirculateMode(); break; - case MODE_FILL: + case DG_MODE_FILL: currentSubMode = execFillMode(); break; - case MODE_DRAI: + case DG_MODE_DRAI: currentSubMode = execDrainMode(); break; - case MODE_FLUS: + case DG_MODE_FLUS: currentSubMode = execFlushMode(); break; - case MODE_HEAT: + case DG_MODE_HEAT: currentSubMode = execHeatDisinfectMode(); break; - case MODE_CHEM: + case DG_MODE_CHEM: currentSubMode = execChemicalDisinfectMode(); break; default: // TODO - trigger s/w fault - currentMode = MODE_FAUL; + currentMode = DG_MODE_FAUL; currentSubMode = 0; break; } // end switch @@ -215,10 +215,10 @@ * @param newMode : requested mode * @return none *************************************************************************/ -void requestNewOperationMode( DG_OP_MODE newMode ) +void requestNewOperationMode( DG_OP_MODE_T newMode ) { // validate requested mode - if ( newMode < MODE_NLEG ) + if ( newMode < DG_MODE_NLEG ) { // make request modeRequest[newMode] = TRUE; @@ -237,7 +237,7 @@ * Outputs : Initializes the Operation Modes module. * @return none *************************************************************************/ -DG_OP_MODE getCurrentOperationMode( void ) +DG_OP_MODE_T getCurrentOperationMode( void ) { return currentMode; } @@ -250,26 +250,26 @@ * Outputs : Initializes the Operation Modes module. * @return none *************************************************************************/ -static DG_OP_MODE arbitrateModeRequest( void ) +static DG_OP_MODE_T arbitrateModeRequest( void ) { - DG_OP_MODE reqMode = currentMode; + DG_OP_MODE_T reqMode = currentMode; U32 i; // block additional requests until after mode arbitration _disable_IRQ(); // select highest priority mode request -or- current mode if no requests pending - for ( i = 0; i < MODE_NLEG; i++ ) + for ( i = 0; i < DG_MODE_NLEG; i++ ) { if ( modeRequest[i] != FALSE ) { - reqMode = (DG_OP_MODE)i; + reqMode = (DG_OP_MODE_T)i; break; } } // clear all requests now that an arbitration winner is selected - for ( i = 0; i < MODE_NLEG; i++ ) + for ( i = 0; i < DG_MODE_NLEG; i++ ) { modeRequest[i] = FALSE; } @@ -289,42 +289,42 @@ * @param newMode : new op mode to transition to * @return none *************************************************************************/ -static void transitionToNewOperationMode( DG_OP_MODE newMode ) +static void transitionToNewOperationMode( DG_OP_MODE_T newMode ) { // setup for new operating mode switch ( newMode ) { - case MODE_FAUL: + case DG_MODE_FAUL: transitionToFaultMode(); break; - case MODE_SERV: + case DG_MODE_SERV: transitionToServiceMode(); break; - case MODE_INIT: + case DG_MODE_INIT: transitionToInitAndPOSTMode(); break; - case MODE_STAN: + case DG_MODE_STAN: transitionToStandbyMode(); break; - case MODE_SOLO: + case DG_MODE_SOLO: transitionToSoloMode(); break; - case MODE_CIRC: + case DG_MODE_CIRC: transitionToRecirculateMode(); break; - case MODE_FILL: + case DG_MODE_FILL: transitionToFillMode(); break; - case MODE_DRAI: + case DG_MODE_DRAI: transitionToDrainMode(); break; - case MODE_FLUS: + case DG_MODE_FLUS: transitionToFlushMode(); break; - case MODE_HEAT: + case DG_MODE_HEAT: transitionToHeatDisinfectMode(); break; - case MODE_CHEM: + case DG_MODE_CHEM: transitionToChemicalDisinfectMode(); break; default: