Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -r8b8fff67b95805272f37855346d600599aaec03d -rcd3af1ebb7396ba3b2bec1d779510d29c30014f4 --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 8b8fff67b95805272f37855346d600599aaec03d) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision cd3af1ebb7396ba3b2bec1d779510d29c30014f4) @@ -51,39 +51,39 @@ // ********** private data ********** -static volatile BOOL modeRequest[ NUM_OF_DG_MODES - 1 ]; ///< Array of mode request flags. -static DG_OP_MODE_T lastMode; ///< Last operation mode prior to current mode. -static DG_OP_MODE_T currentMode; ///< The currently active mode. +static volatile BOOL modeRequest[ NUM_OF_DD_MODES - 1 ]; ///< Array of mode request flags. +static DD_OP_MODE_T lastMode; ///< Last operation mode prior to current mode. +static DD_OP_MODE_T currentMode; ///< The currently active mode. static U32 currentSubMode; ///< The currently active state of the active mode. /// DG operation mode data publish interval. static OVERRIDE_U32_T dgOpModePublishInterval = { BROADCAST_DG_OP_MODE_INTERVAL, BROADCAST_DG_OP_MODE_INTERVAL, 0, 0 }; static U32 dataPublishCounter; ///< Interval counter used to determine when to broadcast operation mode. Initialize to 11 to stagger broadcast. static U32 currentSubState; ///< The currently active sub state. /// This matrix determines legal transitions from one mode to another. -static const DG_OP_MODE_T MODE_TRANSITION_TABLE[ NUM_OF_DG_MODES - 1 ][ NUM_OF_DG_MODES - 1 ] = +static const DD_OP_MODE_T MODE_TRANSITION_TABLE[ NUM_OF_DD_MODES - 1 ][ NUM_OF_DD_MODES - 1 ] = { // from to-> FAULT SERVICE INIT STANBY STBY-SOLO GEN-IDLE FILL DRAIN FLUSH HEAT DIS CHEM DIS CHEM_FLUSH HEAT_COOL RO_PER_SAMPLE - /* 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, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, - /* SERV */{ DG_MODE_NLEG, 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, 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, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, - /* STAN */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_INIT, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_GENE, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_FLUS, DG_MODE_HEAT, DG_MODE_CHEM, DG_MODE_CHFL, DG_MODE_HCOL, DG_MODE_ROPS }, - /* SOLO */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_INIT, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_FLUS, DG_MODE_HEAT, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_HCOL, DG_MODE_ROPS }, - /* GENE */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_GENE, DG_MODE_FILL, DG_MODE_DRAI, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, 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_GENE, DG_MODE_FILL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, 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_GENE, DG_MODE_NLEG, DG_MODE_DRAI, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, 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, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, - /* HEAT */{ 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_NLEG, DG_MODE_HEAT, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_HCOL, 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, DG_MODE_CHFL, DG_MODE_NLEG, DG_MODE_NLEG }, - /* CHFL */{ 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_NLEG, DG_MODE_CHFL, DG_MODE_NLEG, DG_MODE_NLEG }, - /* HCOL */{ 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_NLEG, DG_MODE_NLEG, DG_MODE_HCOL, DG_MODE_NLEG }, - /* ROPS */{ 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_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_ROPS }, + /* FAUL */{ DD_MODE_FAUL, DD_MODE_SERV, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, + /* SERV */{ DD_MODE_NLEG, DD_MODE_SERV, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, + /* INIT *///{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_INIT, DD_MODE_STAN, DG_MODE_SOLO, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, + /* STAN *///{ DD_MODE_FAUL, DD_MODE_SERV, DD_MODE_INIT, DD_MODE_STAN, DG_MODE_SOLO, DG_MODE_GENE, DD_MODE_NLEG, DD_MODE_NLEG, DG_MODE_FLUS, DD_MODE_HEAT, DG_MODE_CHEM, DG_MODE_CHFL, DD_MODE_HCOL, DD_MODE_ROPS }, + /* SOLO *///{ DD_MODE_FAUL, DD_MODE_SERV, DD_MODE_INIT, DD_MODE_STAN, DG_MODE_SOLO, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DG_MODE_FLUS, DD_MODE_HEAT, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_HCOL, DD_MODE_ROPS }, + /* GENE *///{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_NLEG, DG_MODE_GENE, DG_MODE_FILL, DG_MODE_DRAI, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, + /* FILL *///{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_NLEG, DG_MODE_GENE, DG_MODE_FILL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, + /* DRAI *///{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_NLEG, DG_MODE_GENE, DD_MODE_NLEG, DG_MODE_DRAI, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, + /* FLUS *///{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DG_MODE_SOLO, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DG_MODE_FLUS, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, + /* HEAT *///{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DG_MODE_SOLO, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_HEAT, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_HCOL, DD_MODE_NLEG }, + /* CHEM *///{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DG_MODE_CHEM, DG_MODE_CHFL, DD_MODE_NLEG, DD_MODE_NLEG }, + /* CHFL *///{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DG_MODE_CHFL, DD_MODE_NLEG, DD_MODE_NLEG }, + /* HCOL */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_HCOL, DD_MODE_NLEG }, + /* ROPS */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_ROPS }, }; // ********** private function prototypes ********** -static DG_OP_MODE_T arbitrateModeRequest( void ); -static void transitionToNewOperationMode( DG_OP_MODE_T newMode ); +static DD_OP_MODE_T arbitrateModeRequest( void ); +static void transitionToNewOperationMode( DD_OP_MODE_T newMode ); static U32 getDGOpModePublishInterval( void ); static void broadcastOperationMode( void ); static void sendOperationStatusEvent( void ); @@ -101,19 +101,19 @@ U32 i; // initialize mode requests to none pending - for ( i = 0; i < ( NUM_OF_DG_MODES - 1 ); i++ ) + for ( i = 0; i < ( NUM_OF_DD_MODES - 1 ); i++ ) { modeRequest[ i ] = FALSE; } // start in init mode - lastMode = DG_MODE_INIT; - currentMode = DG_MODE_INIT; + lastMode = DD_MODE_INIT; + currentMode = DD_MODE_INIT; currentSubMode = 0; currentSubState = NO_SUB_STATE; dataPublishCounter = DATA_PUBLISH_COUNTER_START_COUNT; - transitionToNewOperationMode( DG_MODE_INIT ); + transitionToNewOperationMode( DD_MODE_INIT ); // call initializers for the individual modes initFaultMode(); @@ -141,7 +141,7 @@ *************************************************************************/ void execOperationModes( void ) { - DG_OP_MODE_T newMode; + DD_OP_MODE_T newMode; U32 priorSubMode = currentSubMode; U32 priorSubState = currentSubState; @@ -155,7 +155,7 @@ } // is requested new mode valid and legal at this time? - if ( newMode >= DG_MODE_NLEG ) + if ( newMode >= DD_MODE_NLEG ) { //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_ILLEGAL_MODE_TRANSITION_REQUESTED, (U32)newMode ) newMode = currentMode; @@ -177,19 +177,19 @@ // mode specific processing to be done continuously switch ( currentMode ) { - case DG_MODE_FAUL: + case DD_MODE_FAUL: currentSubMode = execFaultMode(); break; -// case DG_MODE_SERV: +// case DD_MODE_SERV: // currentSubMode = execServiceMode(); // break; - case DG_MODE_INIT: + case DD_MODE_INIT: currentSubMode = execInitAndPOSTMode(); break; // -// case DG_MODE_STAN: +// case DD_MODE_STAN: // currentSubMode = execStandbyMode(); // break; // @@ -213,29 +213,29 @@ // currentSubMode = execFlushMode(); // break; // -// case DG_MODE_HEAT: +// case DD_MODE_HEAT: // currentSubMode = execHeatDisinfectMode(); // break; // // case DG_MODE_CHEM: // currentSubMode = execChemicalDisinfectMode(); // break; // -// case DG_MODE_HCOL: +// case DD_MODE_HCOL: // currentSubMode = execHeatDisinfectActiveCoolMode(); // break; // // case DG_MODE_CHFL: // currentSubMode = execChemicalDisinfectFlushMode(); // break; // -// case DG_MODE_ROPS: +// case DD_MODE_ROPS: // currentSubMode = execROPermeateSampleMode(); // break; default: //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_STATE, (U32)currentMode ) - currentMode = DG_MODE_FAUL; + currentMode = DD_MODE_FAUL; currentSubMode = 0; break; } @@ -262,10 +262,10 @@ * @param newMode requested mode * @return none *************************************************************************/ -void requestNewOperationMode( DG_OP_MODE_T newMode ) +void requestNewOperationMode( DD_OP_MODE_T newMode ) { // validate requested mode - if ( newMode < DG_MODE_NLEG ) + if ( newMode < DD_MODE_NLEG ) { // make request modeRequest[ newMode ] = TRUE; @@ -283,7 +283,7 @@ * @details Outputs: none * @return current mode *************************************************************************/ -DG_OP_MODE_T getCurrentOperationMode( void ) +DD_OP_MODE_T getCurrentOperationMode( void ) { return currentMode; } @@ -295,7 +295,7 @@ * @details Outputs: none * @return the previous operation mode *************************************************************************/ -DG_OP_MODE_T getPreviousOperationMode( void ) +DD_OP_MODE_T getPreviousOperationMode( void ) { return lastMode; } @@ -320,26 +320,26 @@ * @details Outputs: Arbitrated mode requests * @return highest priority requested mode *************************************************************************/ -static DG_OP_MODE_T arbitrateModeRequest( void ) +static DD_OP_MODE_T arbitrateModeRequest( void ) { - DG_OP_MODE_T reqMode = currentMode; + DD_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 < DG_MODE_NLEG; i++ ) + for ( i = 0; i < DD_MODE_NLEG; i++ ) { if ( modeRequest[i] != FALSE ) { - reqMode = (DG_OP_MODE_T)i; + reqMode = (DD_OP_MODE_T)i; break; } } // clear all requests now that an arbitration winner is selected - for ( i = 0; i < DG_MODE_NLEG; i++ ) + for ( i = 0; i < DD_MODE_NLEG; i++ ) { modeRequest[i] = FALSE; } @@ -359,7 +359,7 @@ * @param newMode new op mode to transition to * @return none *************************************************************************/ -static void transitionToNewOperationMode( DG_OP_MODE_T newMode ) +static void transitionToNewOperationMode( DD_OP_MODE_T newMode ) { U32 priorSubMode = currentSubMode; @@ -368,16 +368,16 @@ // setup for new operating mode switch ( newMode ) { - case DG_MODE_FAUL: + case DD_MODE_FAUL: currentSubMode = transitionToFaultMode(); break; -// case DG_MODE_SERV: +// case DD_MODE_SERV: // currentSubMode = transitionToServiceMode(); // break; - case DG_MODE_INIT: + case DD_MODE_INIT: currentSubMode = transitionToInitAndPOSTMode(); break; -// case DG_MODE_STAN: +// case DD_MODE_STAN: // currentSubMode = transitionToStandbyMode(); // break; // case DG_MODE_SOLO: @@ -395,19 +395,19 @@ // case DG_MODE_FLUS: // currentSubMode = transitionToFlushMode(); // break; -// case DG_MODE_HEAT: +// case DD_MODE_HEAT: // currentSubMode = transitionToHeatDisinfectMode(); // break; // case DG_MODE_CHEM: // currentSubMode = transitionToChemicalDisinfectMode(); // break; -// case DG_MODE_HCOL: +// case DD_MODE_HCOL: // currentSubMode = transitionToHeatDisinfectActiveCoolMode(); // break; // case DG_MODE_CHFL: // currentSubMode = transitionToChemicalDisinfectFlushMode(); // break; -// case DG_MODE_ROPS: +// case DD_MODE_ROPS: // currentSubMode = transitionToROPermeateSampleMode(); // break; default: @@ -439,7 +439,7 @@ data.currentMode = (U32)currentMode; data.currentSubMode = currentSubMode; - broadcastData( MSG_ID_DG_OP_MODE_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( OP_MODES_DATA_T ) ); + broadcastData( MSG_ID_DD_OP_MODE_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( OP_MODES_DATA_T ) ); dataPublishCounter = 0; } @@ -518,13 +518,13 @@ * @param newMode ID of requested mode to transition to * @return TRUE if request successful, FALSE if not *************************************************************************/ -BOOL testSetOperationMode( DG_OP_MODE_T newMode ) +BOOL testSetOperationMode( DD_OP_MODE_T newMode ) { BOOL result = FALSE; if ( TRUE == isTestingActivated() ) { - DG_OP_MODE_T check = MODE_TRANSITION_TABLE[ currentMode ][ newMode ]; + DD_OP_MODE_T check = MODE_TRANSITION_TABLE[ currentMode ][ newMode ]; // Is mode transition legal? if ( check == newMode )