Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -rf7c714a1a09b10d85a8b013712532d37b4d7b97a -r724b64673b719eaac10b0c9dd839ad9675274911 --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision f7c714a1a09b10d85a8b013712532d37b4d7b97a) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 724b64673b719eaac10b0c9dd839ad9675274911) @@ -17,14 +17,16 @@ #include "ModeFault.h" #include "ModeInitPOST.h" +#include "ModeGenDialysate.h" +#include "ModePreGenDialysate.h" +#include "ModePostGenDialysate.h" #include "ModeService.h" #include "ModeStandby.h" #include "MessageSupport.h" #include "Messaging.h" #include "OperationModes.h" #include "TaskGeneral.h" - /** * @addtogroup DDOperationModes * @{ @@ -52,15 +54,17 @@ /// This matrix determines legal transitions from one mode to another. 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 GEND HEAT HCOL 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 }, - /* 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 }, - /* INIT */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_INIT, DD_MODE_STAN, 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, DD_MODE_GEND, DD_MODE_HEAT, DD_MODE_HCOL, DD_MODE_ROPS }, - /* GEND */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_GEND, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, - /* HEAT */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_NLEG, DD_MODE_HEAT, DD_MODE_HCOL, DD_MODE_NLEG }, - /* HCOL */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, 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_ROPS }, + // from to-> FAULT SERVICE INIT STANBY PREG GEND POSG HEAT HCOL 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 }, + /* 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 }, + /* INIT */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_INIT, DD_MODE_STAN, 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, DD_MODE_PREG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_HEAT, DD_MODE_HCOL, DD_MODE_ROPS }, + /* PREG */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_PREG, DD_MODE_GEND, DD_MODE_POSG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, + /* GEND */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_GEND, DD_MODE_POSG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, + /* POSG */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_POSG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, + /* HEAT */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_HEAT, DD_MODE_HCOL, 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_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_ROPS }, }; // ********** private function prototypes ********** @@ -99,10 +103,12 @@ // call initializers for the individual modes initFaultMode(); -// initServiceMode(); + initServiceMode(); initInitAndPOSTMode(); -// initStandbyMode(); -// initGenIdleMode(); + initStandbyMode(); + initGenDialysateMode(); + initPreGenDialysateMode(); + initPostGenDialysateMode(); // initFlushMode(); // initHeatDisinfectMode(); // initHeatDisinfectActiveCoolMode(); @@ -132,7 +138,7 @@ // any new mode requests? newMode = arbitrateModeRequest(); // will return current mode if no pending requests - if ( getTestConfigStatus( TEST_CONFIG_RECOVER_TREATMENT ) != TRUE ) + if ( ( isTestingActivated() != TRUE ) && ( getTestConfigStatus( TEST_CONFIG_RECOVER_TREATMENT ) != TRUE ) ) { // If the test configuration is not enabled check for the legality of the transition request newMode = MODE_TRANSITION_TABLE[ currentMode ][ newMode ]; @@ -177,9 +183,17 @@ currentSubMode = execStandbyMode(); break; -// case DD_MODE_GENE: -// currentSubMode = execGenIdleMode(); -// break; + case DD_MODE_PREG: + currentSubMode = execPreGenDialysateMode(); + break; + + case DD_MODE_GEND: + currentSubMode = execGenDialysateMode(); + break; + + case DD_MODE_POSG: + currentSubMode = execPostGenDialysateMode(); + break; // // case DD_MODE_FLUS: // currentSubMode = execFlushMode(); @@ -351,10 +365,18 @@ currentSubMode = transitionToStandbyMode(); break; -// case DD_MODE_GENE: -// currentSubMode = transitionToGenIdleMode(); -// break; + case DD_MODE_PREG: + currentSubMode = transitionToPreGenDialysateMode(); + break; + case DD_MODE_GEND: + currentSubMode = transitionToGenDialysateMode(); + break; + + case DD_MODE_POSG: + currentSubMode = transitionToPostGenDialysateMode(); + break; + // case DD_MODE_FLUS: // currentSubMode = transitionToFlushMode(); // break; @@ -514,15 +536,25 @@ * mode if the transition is legal. * @details \b Inputs: MODE_TRANSITION_TABLE[][] * @details \b Outputs: modeRequest[], result - * @param newMode ID of requested mode to transition to + * @param message a pointer to the message to handle which includes the + * override value for the new mode change. * @return TRUE if request successful, FALSE if not *************************************************************************/ -BOOL testSetOperationMode( DD_OP_MODE_T newMode ) +BOOL testSetOperationMode( MESSAGE_T *message ) { BOOL result = FALSE; if ( TRUE == isTestingActivated() ) { + U32 data; + DD_OP_MODE_T newMode; + + if( message->hdr.payloadLen == sizeof( U32 ) ) + { + memcpy( &data, message->payload, sizeof( U32 ) ); + newMode = (DD_OP_MODE_T)data; + } + DD_OP_MODE_T check = MODE_TRANSITION_TABLE[ currentMode ][ newMode ]; // Is mode transition legal? @@ -538,49 +570,19 @@ /*********************************************************************//** * @brief - * The testSetDDOpModePublishIntervalOverride function overrides the + * The testDDOpModePublishIntervalOverride function overrides the * DD operation mode publish interval. * @details \b Inputs: none * @details \b Outputs: ddOpModePublishInterval - * @param value override DD operation mode publish interval with (in ms) + * @param Override message from Dialin which includes the interval + * (in ms) to override the DD operation mode publish interval to. * @return TRUE if override successful, FALSE if not *************************************************************************/ -BOOL testSetDDOpModePublishIntervalOverride( U32 value ) +BOOL testDDOpModePublishIntervalOverride( MESSAGE_T *message ) { - BOOL result = FALSE; + BOOL result = u32BroadcastIntervalOverride( message, &ddOpModePublishInterval, TASK_GENERAL_INTERVAL ); - if ( TRUE == isTestingActivated() ) - { - U32 intvl = value / TASK_GENERAL_INTERVAL; - - result = TRUE; - ddOpModePublishInterval.ovData = intvl; - ddOpModePublishInterval.override = OVERRIDE_KEY; - } - return result; } -/*********************************************************************//** - * @brief - * The testResetDDOpModePublishIntervalOverride function resets the - * override of the DD operation mode publish interval. - * @details \b Inputs: none - * @details \b Outputs: ddOpModePublishInterval - * @return TRUE if override reset successful, FALSE if not - *************************************************************************/ -BOOL testResetDDOpModePublishIntervalOverride( void ) -{ - BOOL result = FALSE; - - if ( TRUE == isTestingActivated() ) - { - result = TRUE; - ddOpModePublishInterval.override = OVERRIDE_RESET; - ddOpModePublishInterval.ovData = ddOpModePublishInterval.ovInitData; - } - - return result; -} - /**@}*/