Index: firmware/App/Controllers/Buttons.c =================================================================== diff -u -r8377b4e6ed494cbfc5dfc2bd9ad3c89b85b333cd -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Controllers/Buttons.c (.../Buttons.c) (revision 8377b4e6ed494cbfc5dfc2bd9ad3c89b85b333cd) +++ firmware/App/Controllers/Buttons.c (.../Buttons.c) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -319,7 +319,7 @@ *************************************************************************/ static BOOL isCurrentOpModeOkToTurnOff( void ) { - OP_MODE opMode = getCurrentOperationMode(); + HD_OP_MODE_T opMode = getCurrentOperationMode(); BOOL result = FALSE; if ( ( opMode == MODE_STAN ) || ( opMode == MODE_SERV ) || ( opMode == MODE_FAUL ) ) Index: firmware/App/Controllers/DGInterface.h =================================================================== diff -u -r1017bbc5760a50e20357da1e4f705b3e6157375e -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision 1017bbc5760a50e20357da1e4f705b3e6157375e) +++ firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -18,7 +18,7 @@ #define __DG_H__ #include "HDCommon.h" -#include "DGModes.h" +#include "DGDefs.h" /** * @defgroup DGInterface DGInterface Index: firmware/App/HDCommon.h =================================================================== diff -u -r4b22b45e775c0525bc1d76e83e265af91a59785e -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/HDCommon.h (.../HDCommon.h) (revision 4b22b45e775c0525bc1d76e83e265af91a59785e) +++ firmware/App/HDCommon.h (.../HDCommon.h) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -32,7 +32,7 @@ //#define UF_TEST_WITH_DG 1 #ifndef _RELEASE_ #ifndef _VECTORCAST_ -// #define RM46_EVAL_BOARD_TARGET 1 + #define RM46_EVAL_BOARD_TARGET 1 // #define BREADBOARD_TARGET 1 // #define SIMULATE_UI 1 #define SKIP_POST 1 Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -rcc511a2e779106c4fda8305c25bd1f9d9fbf06ce -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision cc511a2e779106c4fda8305c25bd1f9d9fbf06ce) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -241,22 +241,41 @@ BOOL pauseUF( void ) { BOOL result = FALSE; + REQUEST_REJECT_REASON_CODE_T rejectReason = REQUEST_REJECT_REASON_NONE; TREATMENT_STATE_T trtState = getTreatmentState(); - OP_MODE currMode = getCurrentOperationMode(); + HD_OP_MODE_T currMode = getCurrentOperationMode(); if ( ( MODE_TREA == currMode ) && ( TREATMENT_DIALYSIS_STATE == trtState ) && ( DIALYSIS_UF_STATE == currentDialysisState ) && ( UF_RUNNING_STATE == currentUFState ) ) { + result = TRUE; // set outlet pump to dialysate rate - result = setDialOutPumpTargetRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); - - if ( TRUE == result ) + setDialOutPumpTargetRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); + // go to UF paused state + currentUFState = UF_PAUSED_STATE; + } + else + { + if ( MODE_TREA != currMode ) { - // go to UF paused state - currentUFState = UF_PAUSED_STATE; + rejectReason = REQUEST_REJECT_REASON_NOT_IN_TREATMENT_MODE; } + else if ( TREATMENT_DIALYSIS_STATE != trtState ) + { + rejectReason = REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE; + } + else if ( DIALYSIS_UF_STATE != currentDialysisState ) + { + rejectReason = REQUEST_REJECT_REASON_SALINE_BOLUS_IN_PROGRESS; + } + else + { + rejectReason = REQUEST_REJECT_REASON_UF_NOT_IN_PROGESS; + } } + // TODO - send response w/ reason code if rejected + return result; } @@ -271,24 +290,43 @@ BOOL resumeUF( void ) { BOOL result = FALSE; + REQUEST_REJECT_REASON_CODE_T rejectReason = REQUEST_REJECT_REASON_NONE; TREATMENT_STATE_T trtState = getTreatmentState(); - OP_MODE currMode = getCurrentOperationMode(); + HD_OP_MODE_T currMode = getCurrentOperationMode(); if ( ( MODE_TREA == currMode ) && ( TREATMENT_DIALYSIS_STATE == trtState ) && ( DIALYSIS_UF_STATE == currentDialysisState ) && ( UF_PAUSED_STATE == currentUFState ) ) { + result = TRUE; // set outlet pump to dialysate rate + set UF rate - result = setDialOutPumpTargetRate( setDialysateFlowRate + FLOAT_TO_INT_WITH_ROUND( setUFRate ), MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); - - if ( TRUE == result ) + setDialOutPumpTargetRate( setDialysateFlowRate + FLOAT_TO_INT_WITH_ROUND( setUFRate ), MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); + // restart UF time accumulation for reference volume calculation + lastUFTimeStamp = getMSTimerCount(); + // go to UF paused state + currentUFState = UF_RUNNING_STATE; + } + else + { + if ( MODE_TREA != currMode ) { - // restart UF time accumulation for reference volume calculation - lastUFTimeStamp = getMSTimerCount(); - // go to UF paused state - currentUFState = UF_RUNNING_STATE; + rejectReason = REQUEST_REJECT_REASON_NOT_IN_TREATMENT_MODE; } + else if ( TREATMENT_DIALYSIS_STATE != trtState ) + { + rejectReason = REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE; + } + else if ( DIALYSIS_UF_STATE != currentDialysisState ) + { + rejectReason = REQUEST_REJECT_REASON_SALINE_BOLUS_IN_PROGRESS; + } + else + { + rejectReason = REQUEST_REJECT_REASON_UF_NOT_PAUSED; + } } + // TODO - send response w/ reason code if rejected + return result; } Index: firmware/App/Modes/Dialysis.h =================================================================== diff -u -r1017bbc5760a50e20357da1e4f705b3e6157375e -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/Dialysis.h (.../Dialysis.h) (revision 1017bbc5760a50e20357da1e4f705b3e6157375e) +++ firmware/App/Modes/Dialysis.h (.../Dialysis.h) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -18,6 +18,7 @@ #define __DIALYSIS_H__ #include "HDCommon.h" +#include "HDDefs.h" /** * @defgroup Dialysis Dialysis @@ -29,42 +30,6 @@ // ********** public definitions ********** -/// Enumeration of dialysis sub-mode states. -typedef enum Dialysis_States -{ - DIALYSIS_START_STATE = 0, ///< Start state of the dialysis sub-mode state machine. - DIALYSIS_UF_STATE, ///< Ultrafiltration state of the dialysis sub-mode state machine. - DIALYSIS_SOLUTION_INFUSION_STATE, ///< Solution infusion state of the dialysis sub-mode state machine. - NUM_OF_DIALYSIS_STATES ///< Number of dialysis sub-mode states. -} DIALYSIS_STATE_T; - -/// Enumeration of ultrafiltration states. -typedef enum UF_States -{ - UF_START_STATE = 0, ///< Start state of the ultrafiltration state machine. - UF_PAUSED_STATE, ///< Paused state of the ultrafiltration state machine. - UF_RUNNING_STATE, ///< Running state of the ultrafiltration state machine. - UF_OFF_STATE, ///< Completed/off state of the ultrafiltration state machine. - UF_COMPLETED_STATE, ///< Completed state of ultrafiltration state machine. - NUM_OF_UF_STATES ///< Number of ultrafiltration states. -} UF_STATE_T; - -/// Enumeration of system message IDs. -typedef enum UF_Commands -{ - UF_CMD_PAUSE = 0, ///< Pause UF command. - UF_CMD_RESUME, ///< Resume UF command. - NUM_OF_UF_CMDS ///< Number of UF commands. -} UF_CMD_T; - -/// Enumeration of system message IDs. -typedef enum UF_Adjustments -{ - UF_ADJ_TREATMENT_TIME = 0, ///< Adjust treatment time to achieve new ultrafiltration volume. - UF_ADJ_UF_RATE, ///< Adjust UF rate to achieve new ultrafiltration volume. - NUM_OF_UF_ADJS ///< Number of UF adjustments. -} UF_ADJ_T; - // ********** private function prototypes ********** void initDialysis( void ); Index: firmware/App/Modes/ModeFault.c =================================================================== diff -u -r04334ed8d1e927939718b1d62fb01afef0a2b9a9 -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 04334ed8d1e927939718b1d62fb01afef0a2b9a9) +++ firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -18,6 +18,11 @@ #include "OperationModes.h" #include "ModeFault.h" + /** + * @addtogroup HDFaultMode + * @{ + */ + // ********** private data ********** // ********** private function prototypes ********** @@ -55,9 +60,11 @@ * Inputs : none * Outputs : * @param none - * @return none + * @return current state (sub-mode) *************************************************************************/ -void execFaultMode( void ) +U32 execFaultMode( void ) { + return 0; // TODO - return current state } +/**@}*/ Index: firmware/App/Modes/ModeFault.h =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/ModeFault.h (.../ModeFault.h) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/Modes/ModeFault.h (.../ModeFault.h) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -18,11 +18,22 @@ #define __MODE_FAULT_H__ #include "HDCommon.h" +#include "HDDefs.h" +/** + * @defgroup HDFaultMode HDFaultMode + * @brief FaultMode module. + * + * @addtogroup HDFaultMode + * @{ + */ + // ********** private function prototypes ********** -void initFaultMode( void ); // initialize this module +void initFaultMode( void ); // initialize this module void transitionToFaultMode( void ); // prepares for transition to fault mode -void execFaultMode( void ); // execute the fault mode state machine (call from OperationModes) +U32 execFaultMode( void ); // execute the fault mode state machine (call from OperationModes) +/**@}*/ + #endif Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -rc0d1d149e3b669b0bf424206c725b5c1bfaff797 -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision c0d1d149e3b669b0bf424206c725b5c1bfaff797) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -24,32 +24,23 @@ #include "ModeInitPOST.h" #include "NVDataMgmt.h" + /** + * @addtogroup HDInitAndPOSTMode + * @{ + */ + // ********** private definitions ********** -typedef enum POST_States -{ - POST_STATE_START = 0, - POST_STATE_WATCHDOG, - POST_STATE_ALARM_LAMP, - POST_STATE_FPGA, - POST_STATE_RTC, - POST_STATE_NVDATAMGMT, - POST_STATE_STUCK_BUTTON, - POST_STATE_COMPLETED, - POST_STATE_FAILED, - NUM_OF_POST_STATES -} POST_STATE_T; - // ********** private data ********** -static POST_STATE_T postState = POST_STATE_START; +static HD_POST_STATE_T postState = POST_STATE_START; static BOOL postCompleted = FALSE; static BOOL postPassed = FALSE; static BOOL tempPOSTPassed = TRUE; // ********** private function prototypes ********** -static POST_STATE_T handlePOSTStatus( SELF_TEST_STATUS_T testStatus ); +static HD_POST_STATE_T handlePOSTStatus( SELF_TEST_STATUS_T testStatus ); /************************************************************************* * @brief initInitAndPOSTMode @@ -89,9 +80,9 @@ * Inputs : none * Outputs : * @param none - * @return none + * @return current state (sub-mode) *************************************************************************/ -void execInitAndPOSTMode( void ) +U32 execInitAndPOSTMode( void ) { SELF_TEST_STATUS_T testStatus = SELF_TEST_STATUS_IN_PROGRESS; @@ -166,6 +157,8 @@ postState = POST_STATE_FAILED; break; } + + return postState; } /************************************************************************* @@ -209,13 +202,13 @@ * @param testStatus * @return recommended next POST state *************************************************************************/ -static POST_STATE_T handlePOSTStatus( SELF_TEST_STATUS_T testStatus ) +static HD_POST_STATE_T handlePOSTStatus( SELF_TEST_STATUS_T testStatus ) { - POST_STATE_T result = postState; + HD_POST_STATE_T result = postState; if ( testStatus == SELF_TEST_STATUS_PASSED ) { - result = (POST_STATE_T)((int)postState + 1); // move on to next POST test + result = (HD_POST_STATE_T)((int)postState + 1); // move on to next POST test } else if ( testStatus == SELF_TEST_STATUS_FAILED ) { Index: firmware/App/Modes/ModeInitPOST.h =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/ModeInitPOST.h (.../ModeInitPOST.h) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/Modes/ModeInitPOST.h (.../ModeInitPOST.h) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -18,13 +18,24 @@ #define __MODE_INIT_POST_H__ #include "HDCommon.h" +#include "HDDefs.h" +/** + * @defgroup HDInitAndPOSTMode HDInitAndPOSTMode + * @brief Init&POST mode module. + * + * @addtogroup HDInitAndPOSTMode + * @{ + */ + // ********** private function prototypes ********** void initInitAndPOSTMode( void ); // initialize this module void transitionToInitAndPOSTMode( void ); // prepares for transition to init. & POST mode -void execInitAndPOSTMode( void ); // execute the init. & POST mode state machine (call from OperationModes) +U32 execInitAndPOSTMode( void ); // execute the init. & POST mode state machine (call from OperationModes) BOOL isPOSTCompleted( void ); BOOL isPOSTPassed( void ); +/**@}*/ + #endif Fisheye: Tag 2df21d2472a8d79d78af7e359518acf3614accc5 refers to a dead (removed) revision in file `firmware/App/Modes/ModeOpParams.c'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2df21d2472a8d79d78af7e359518acf3614accc5 refers to a dead (removed) revision in file `firmware/App/Modes/ModeOpParams.h'. Fisheye: No comparison available. Pass `N' to diff? Index: firmware/App/Modes/ModePostTreat.c =================================================================== diff -u -r3c45b8930e1bbd1ff5757ec6d9e37e3d7a464fc3 -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 3c45b8930e1bbd1ff5757ec6d9e37e3d7a464fc3) +++ firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -26,6 +26,11 @@ static U32 start; #endif + /** + * @addtogroup HDPostTreatmentMode + * @{ + */ + // ********** private data ********** // ********** private function prototypes ********** @@ -74,9 +79,9 @@ * Inputs : none * Outputs : * @param none - * @return none + * @return current state (sub-mode) *************************************************************************/ -void execPostTreatmentMode( void ) +U32 execPostTreatmentMode( void ) { BOOL stop = isStopButtonPressed(); @@ -92,5 +97,8 @@ requestNewOperationMode( MODE_STAN ); } #endif + + return 0; // TODO - return current state } +/**@}*/ Index: firmware/App/Modes/ModePostTreat.h =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/ModePostTreat.h (.../ModePostTreat.h) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/Modes/ModePostTreat.h (.../ModePostTreat.h) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -18,11 +18,22 @@ #define __MODE_POST_TREATMENT_H__ #include "HDCommon.h" +#include "HDDefs.h" +/** + * @defgroup HDPostTreatmentMode HDPostTreatmentMode + * @brief Post-treatment Mode module. + * + * @addtogroup HDPostTreatmentMode + * @{ + */ + // ********** private function prototypes ********** void initPostTreatmentMode( void ); // initialize this module void transitionToPostTreatmentMode( void ); // prepares for transition to post-treatment mode -void execPostTreatmentMode( void ); // execute the post-treatment mode state machine (call from OperationModes) +U32 execPostTreatmentMode( void ); // execute the post-treatment mode state machine (call from OperationModes) +/**@}*/ + #endif Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r3c45b8930e1bbd1ff5757ec6d9e37e3d7a464fc3 -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 3c45b8930e1bbd1ff5757ec6d9e37e3d7a464fc3) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -26,6 +26,11 @@ static U32 start; #endif + /** + * @addtogroup HDPreTreatmentMode + * @{ + */ + // ********** private data ********** // ********** private function prototypes ********** @@ -74,9 +79,9 @@ * Inputs : none * Outputs : * @param none - * @return none + * @return current state (sub-mode) *************************************************************************/ -void execPreTreatmentMode( void ) +U32 execPreTreatmentMode( void ) { BOOL stop = isStopButtonPressed(); @@ -92,5 +97,8 @@ requestNewOperationMode( MODE_TREA ); } #endif + + return 0; // TODO - return current state } +/**@}*/ Index: firmware/App/Modes/ModePreTreat.h =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/ModePreTreat.h (.../ModePreTreat.h) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/Modes/ModePreTreat.h (.../ModePreTreat.h) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -18,11 +18,22 @@ #define __MODE_PRE_TREAT_H__ #include "HDCommon.h" +#include "HDDefs.h" +/** + * @defgroup HDPreTreatmentMode HDPreTreatmentMode + * @brief Pre-TreatmentMode module. + * + * @addtogroup HDPreTreatmentMode + * @{ + */ + // ********** private function prototypes ********** void initPreTreatmentMode( void ); // initialize this module void transitionToPreTreatmentMode( void ); // prepares for transition to pre-treatment mode -void execPreTreatmentMode( void ); // execute the pre-treatment mode state machine (call from OperationModes) +U32 execPreTreatmentMode( void ); // execute the pre-treatment mode state machine (call from OperationModes) +/**@}*/ + #endif Fisheye: Tag 2df21d2472a8d79d78af7e359518acf3614accc5 refers to a dead (removed) revision in file `firmware/App/Modes/ModePrescription.c'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2df21d2472a8d79d78af7e359518acf3614accc5 refers to a dead (removed) revision in file `firmware/App/Modes/ModePrescription.h'. Fisheye: No comparison available. Pass `N' to diff? Index: firmware/App/Modes/ModeService.c =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/ModeService.c (.../ModeService.c) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/Modes/ModeService.c (.../ModeService.c) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -17,6 +17,11 @@ #include "OperationModes.h" #include "ModeService.h" + /** + * @addtogroup HDServiceMode + * @{ + */ + // ********** private data ********** // ********** private function prototypes ********** @@ -54,9 +59,12 @@ * Inputs : none * Outputs : * @param none - * @return none + * @return current state (sub-mode) *************************************************************************/ -void execServiceMode( void ) +U32 execServiceMode( void ) { + + return 0; // TODO - return current state } +/**@}*/ Index: firmware/App/Modes/ModeService.h =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/ModeService.h (.../ModeService.h) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/Modes/ModeService.h (.../ModeService.h) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -18,11 +18,22 @@ #define __MODE_SERVICE_H__ #include "HDCommon.h" +#include "HDDefs.h" +/** + * @defgroup HDServiceMode HDServiceMode + * @brief Service mode module. + * + * @addtogroup HDServiceMode + * @{ + */ + // ********** private function prototypes ********** -void initServiceMode( void ); // initialize this module -void transitionToServiceMode( void ); // prepares for transition to service mode -void execServiceMode( void ); // execute the service mode state machine (call from OperationModes) +void initServiceMode( void ); // initialize this module +void transitionToServiceMode( void ); // prepares for transition to service mode +U32 execServiceMode( void ); // execute the service mode state machine (call from OperationModes) +/**@}*/ + #endif Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -rcc511a2e779106c4fda8305c25bd1f9d9fbf06ce -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision cc511a2e779106c4fda8305c25bd1f9d9fbf06ce) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -30,23 +30,16 @@ static U32 start; #endif -// ********** private definitions ********** + /** + * @addtogroup HDStandbyMode + * @{ + */ -/// Sub-mode states while in standby mode -typedef enum Standby_States -{ - STANDBY_START_STATE = 0, ///< Start standby - STANDBY_FLUSH_DG_LINES_STATE, ///< - STANDBY_DRAIN_RESERVOIR_STATE, ///< - STANDBY_WAIT_FOR_PRIME_STATE, ///< - STANDBY_FILL_RESERVOIR_STATE, ///< - STANDBY_WAIT_FOR_TREATMENT_STATE, ///< - NUM_OF_STANDBY_STATES ///< Number of standby states (sub-modes). -} STANDBY_STATE_T; + // ********** private definitions ********** // ********** private data ********** -static STANDBY_STATE_T currentStandbyState; ///< Current state (sub-mode) of standby mode. +static HD_STANDBY_STATE_T currentStandbyState; ///< Current state (sub-mode) of standby mode. // ********** private function prototypes ********** @@ -95,9 +88,9 @@ * Inputs : none * Outputs : * @param none - * @return none + * @return current state (sub-mode) *************************************************************************/ -void execStandbyMode( void ) +U32 execStandbyMode( void ) { BOOL stop = isStopButtonPressed(); DG_OP_MODE_T dgOpMode = getDGOpMode(); // TODO - the DG mode & sub-mode come as a pair at interval - they MUST be kept together. @@ -209,7 +202,7 @@ // TODO - test code if ( TRUE == stop ) { - requestNewOperationMode( MODE_PRES ); + requestNewOperationMode( MODE_TPAR ); } break; @@ -223,8 +216,11 @@ #ifdef RM46_EVAL_BOARD_TARGET if ( TRUE == didTimeout( start, 5000U ) ) { - requestNewOperationMode( MODE_PRES ); + requestNewOperationMode( MODE_TPAR ); } #endif + + return currentStandbyState; } +/**@}*/ Index: firmware/App/Modes/ModeStandby.h =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/ModeStandby.h (.../ModeStandby.h) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/Modes/ModeStandby.h (.../ModeStandby.h) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -18,11 +18,22 @@ #define __MODE_STANDBY_H__ #include "HDCommon.h" +#include "HDDefs.h" +/** + * @defgroup HDStandbyMode HDStandbyMode + * @brief StandbyMode module. + * + * @addtogroup HDStandbyMode + * @{ + */ + // ********** private function prototypes ********** -void initStandbyMode( void ); // initialize this module -void transitionToStandbyMode( void ); // prepares for transition to standby mode -void execStandbyMode( void ); // execute the standby mode state machine (call from OperationModes) +void initStandbyMode( void ); // initialize this module +void transitionToStandbyMode( void ); // prepares for transition to standby mode +U32 execStandbyMode( void ); // execute the standby mode state machine (call from OperationModes) +/**@}*/ + #endif Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r2112e3143003eaf9584d4be068f7ca89b33c941a -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 2112e3143003eaf9584d4be068f7ca89b33c941a) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -33,7 +33,7 @@ #endif /** - * @addtogroup TreatmentMode + * @addtogroup HDTreatmentMode * @{ */ @@ -163,9 +163,9 @@ * Inputs : none * Outputs : * @param none - * @return none + * @return current state (sub-mode) *************************************************************************/ -void execTreatmentMode( void ) +U32 execTreatmentMode( void ) { #ifndef UF_TEST_ENABLED BOOL stop = isStopButtonPressed(); @@ -241,6 +241,8 @@ requestNewOperationMode( MODE_POST ); } #endif + + return currentTreatmentState; } /*********************************************************************//** @@ -368,7 +370,7 @@ { BOOL result = FALSE; REQUEST_REJECT_REASON_CODE_T rejectReason = REQUEST_REJECT_REASON_NONE; - OP_MODE currMode = getCurrentOperationMode(); + HD_OP_MODE_T currMode = getCurrentOperationMode(); // check if we are in an appropriate treatment state for settings adjustment if ( ( MODE_TREA == currMode ) && @@ -447,7 +449,7 @@ REQUEST_REJECT_REASON_CODE_T rejectReason = REQUEST_REJECT_REASON_NONE; S32 timeDiff = 0; F32 rateDiff = 0.0; - OP_MODE currMode = getCurrentOperationMode(); + HD_OP_MODE_T currMode = getCurrentOperationMode(); // reset pending UF/time settings changes to current values in case request is rejected pendingUFVolumeChange = presMaxUFVolumeML; @@ -519,7 +521,7 @@ } } // respond to UF settings change request - sendChangeUFSettingsResponse( result, rejectReason, pendingUFVolumeChange, pendingTreatmentTimeChange, pendingUFRateChange, timeDiff, rateDiff ); + sendChangeUFSettingsResponse( result, rejectReason, pendingUFVolumeChange, pendingTreatmentTimeChange, pendingUFRateChange, timeDiff, rateDiff, presUFRate ); return result; } @@ -539,7 +541,8 @@ { BOOL result = FALSE; REQUEST_REJECT_REASON_CODE_T rejectReason = REQUEST_REJECT_REASON_NONE; - OP_MODE currMode = getCurrentOperationMode(); + HD_OP_MODE_T currMode = getCurrentOperationMode(); + F32 oldUFRate = presUFRate; // user confirmed UF settings change(s)? if ( ( MODE_TREA == currMode ) && ( FALSE == didTimeout( pendingParamChangesTimer, USER_CONFIRM_CHANGE_TIMEOUT_MS ) ) ) @@ -581,7 +584,7 @@ } } // respond to UF settings change confirmation - sendChangeUFSettingsResponse( result, rejectReason, presMaxUFVolumeML, presTreatmentTimeSecs / SEC_PER_MIN, presUFRate, 0, 0 ); + sendChangeUFSettingsResponse( result, rejectReason, presMaxUFVolumeML, presTreatmentTimeSecs / SEC_PER_MIN, presUFRate, 0, 0, oldUFRate ); return result; } @@ -601,7 +604,7 @@ { BOOL result = FALSE; REQUEST_REJECT_REASON_CODE_T rejectReason = REQUEST_REJECT_REASON_NONE; - OP_MODE currMode = getCurrentOperationMode(); + HD_OP_MODE_T currMode = getCurrentOperationMode(); // check if we are in treatment mode for settings change if ( MODE_TREA == currMode ) Index: firmware/App/Modes/ModeTreatment.h =================================================================== diff -u -r744b177ec4114c62303e976aed1677b820f7a281 -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/ModeTreatment.h (.../ModeTreatment.h) (revision 744b177ec4114c62303e976aed1677b820f7a281) +++ firmware/App/Modes/ModeTreatment.h (.../ModeTreatment.h) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -18,40 +18,24 @@ #define __MODE_TREATMENT_H__ #include "HDCommon.h" +#include "HDDefs.h" #include "Dialysis.h" /** - * @defgroup TreatmentMode TreatmentMode + * @defgroup HDTreatmentMode HDTreatmentMode * @brief TreatmentMode module. * - * @addtogroup TreatmentMode + * @addtogroup HDTreatmentMode * @{ */ // ********** public definitions ********** -/// Sub-mode states while in treatment mode -typedef enum Treatment_States -{ - TREATMENT_START_STATE = 0, ///< Start treatment, prime blood side with gradual ramp for 1 min. while dialyzer is bypassed. No dialysis or UF taking place. - TREATMENT_DIALYSIS_STATE, ///< Perform dialysis. Deliver Heparin as prescribed. Deliver UF as prescribed. Handle saline boluses as requested. - TREATMENT_STOP_STATE, ///< Treatment stopped. All pumps off. Dializer bypassed. - TREATMENT_RINSEBACK_STATE, ///< Perform rinseback with saline. Dialyzer bypassed. Dialysate recirculating. - TREATMENT_RINSEBACK_PAUSE_STATE, ///< Rinseback paused. Blood pump off. Dialyzer bypassed. Dialysate recirculating. - TREATMENT_RECIRC_SETUP_STATE, ///< Rinseback complete. Blood pump off. Blood lines closed. User to disconnect and shunt blood lines. - TREATMENT_RECIRC_STATE, ///< Recirculate saline and dialysate while patient disconnected. Blood lines open and shunted. Dialyzer is bypassed. - TREATMENT_RECIRC_PAUSE_STATE, ///< Recirculate paused. Blood pump off. Blood lines closed and shunted. Dialyzer is bypassed. - TREATMENT_RECIRC_STOP_STATE, ///< Recirculate stopped. Blood pump off. Blood lines open. Waiting for patient to unshunt and connect and resume treatment. - TREATMENT_DIALYSIS_END_STATE, ///< Dialysis has ended. Blood pump slowed. Dialyzer is bypassed. Dialysate is recirculated. User can rinseback. - TREATMENT_END_STATE, ///< Treatment has ended. All pumps off. Dialyzer is bypassed. Blood lines are closed. User to disconnect. - NUM_OF_TREATMENT_STATES ///< Number of treatment states (sub-modes). -} TREATMENT_STATE_T; - // ********** private function prototypes ********** void initTreatmentMode( void ); // initialize this module void transitionToTreatmentMode( void ); // prepares for transition to treatment mode -void execTreatmentMode( void ); // execute the treatment mode state machine (call from OperationModes) +U32 execTreatmentMode( void ); // execute the treatment mode state machine (call from OperationModes) TREATMENT_STATE_T getTreatmentState( void ); Index: firmware/App/Modes/ModeTreatmentParams.c =================================================================== diff -u --- firmware/App/Modes/ModeTreatmentParams.c (revision 0) +++ firmware/App/Modes/ModeTreatmentParams.c (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -0,0 +1,103 @@ +/************************************************************************** + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * @file ModeOpParams.c + * + * @date 19-Sep-2019 + * @author S. Nash + * + * @brief Top-level state machine for the operating parameters mode. + * + **************************************************************************/ + +#include "AlarmLamp.h" +#include "BloodFlow.h" +#include "DialInFlow.h" +#include "DialOutFlow.h" +#include "Buttons.h" +#include "OperationModes.h" +#ifdef RM46_EVAL_BOARD_TARGET + #include "Timers.h" + static U32 start; +#endif + + /** + * @addtogroup HDTreatmentParamsMode + * @{ + */ + +// ********** private data ********** + +// ********** private function prototypes ********** + +/************************************************************************* + * @brief initOpParamsMode + * The initOpParamsMode function initializes the Operating Parameters Mode module. + * @details + * Inputs : none + * Outputs : Operating Parameters Mode module initialized. + * @param none + * @return none + *************************************************************************/ +void initTreatParamsMode( void ) +{ +} + +/************************************************************************* + * @brief transitionToOpParamsMode + * The transitionToOpParamsMode function prepares for transition to operating \n + * parameters mode. + * @details + * Inputs : none + * Outputs : + * @param none + * @return none + *************************************************************************/ +void transitionToTreatParamsMode( void ) +{ + // temporary test code. TODO - remove later +#ifndef UF_TEST_ENABLED + setBloodPumpTargetFlowRate( 300, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); + setDialInPumpTargetFlowRate( 300, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); + setDialOutPumpTargetRate( 325, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); +#else +#endif +#ifdef RM46_EVAL_BOARD_TARGET + start = getMSTimerCount(); +#endif +} + +/************************************************************************* + * @brief execOpParamsMode + * The execFaultMode function executes the Operating Parameters Mode state machine. + * @details + * Inputs : none + * Outputs : + * @param none + * @return current state (sub-mode) + *************************************************************************/ +U32 execTreatParamsMode( void ) +{ + BOOL stop = isStopButtonPressed(); + +#ifndef UF_TEST_ENABLED + if ( TRUE == stop ) +#endif + { + requestNewOperationMode( MODE_PRET ); + } +#ifdef RM46_EVAL_BOARD_TARGET + if ( TRUE == didTimeout( start, 5000U ) ) + { + requestNewOperationMode( MODE_PRET ); + } +#endif + + return 0; // TODO - return current state +} + +/**@}*/ Index: firmware/App/Modes/ModeTreatmentParams.h =================================================================== diff -u --- firmware/App/Modes/ModeTreatmentParams.h (revision 0) +++ firmware/App/Modes/ModeTreatmentParams.h (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -0,0 +1,39 @@ +/************************************************************************** + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * @file ModeOpParams.h + * + * @date 19-Sep-2019 + * @author S. Nash + * + * @brief Header file for Operating Parameters Mode. + * + **************************************************************************/ + +#ifndef __MODE_OP_PARAMS_H__ +#define __MODE_OP_PARAMS_H__ + +#include "HDCommon.h" +#include "HDDefs.h" + +/** + * @defgroup HDTreatmentParamsMode HDTreatmentParamsMode + * @brief Treatment parameters mode module. + * + * @addtogroup HDTreatmentParamsMode + * @{ + */ + +// ********** private function prototypes ********** + +void initTreatParamsMode( void ); // initialize this module +void transitionToTreatParamsMode( void ); // prepares for transition to treatment parameters mode +U32 execTreatParamsMode( void ); // execute the treatment parameters mode state machine (call from OperationModes) + +/**@}*/ + +#endif Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -rc0d1d149e3b669b0bf424206c725b5c1bfaff797 -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision c0d1d149e3b669b0bf424206c725b5c1bfaff797) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -25,39 +25,43 @@ #include "ModeService.h" #include "ModeFault.h" #include "ModeStandby.h" -#include "ModePrescription.h" -#include "ModeOpParams.h" +#include "ModeTreatmentParams.h" #include "ModePreTreat.h" #include "ModeTreatment.h" #include "ModePostTreat.h" +/** + * @addtogroup HDOperationModes + * @{ + */ + // ********** private data ********** #define BROADCAST_HD_OP_MODE_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< HD operation mode broadcast interval (in task interval/sec). // ********** private data ********** -static volatile BOOL modeRequest[ NUM_OF_MODES - 1 ]; ///< Pending operation mode change requests. -static OP_MODE currentMode = MODE_INIT; ///< Current operation mode. -static U32 broadcastModeIntervalCtr = 11; ///< Interval counter used to determine when to broadcase operation mode. Initialize to 11 to stagger broadcast. +static volatile BOOL modeRequest[ NUM_OF_MODES - 1 ]; ///< Pending operation mode change requests. +static HD_OP_MODE_T currentMode = MODE_INIT; ///< Current operation mode. +static U32 currentSubMode = 0; ///< The currently active state of the active mode. +static U32 broadcastModeIntervalCtr = 11; ///< Interval counter used to determine when to broadcast operation mode. Initialize to 11 to stagger broadcast. /// This matrix determines legal transitions from one mode to another -static const OP_MODE MODE_TRANSITION_TABLE[ NUM_OF_MODES - 1 ][ NUM_OF_MODES - 1 ] = { -// from to-> FAULT SERVICE INIT STANBY PRESCRIP. OP.PARAMS PRE-TREAT TREATMENT POST_TREA -/* FAUL */{ MODE_FAUL, MODE_SERV, 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, }, -/* INIT */{ MODE_FAUL, MODE_NLEG, MODE_INIT, MODE_STAN, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, }, -/* STAN */{ MODE_FAUL, MODE_SERV, MODE_NLEG, MODE_STAN, MODE_PRES, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, }, -/* PRES */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_PRES, MODE_OPAR, MODE_NLEG, MODE_NLEG, MODE_NLEG, }, -/* OPAR */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_PRES, MODE_OPAR, MODE_PRET, MODE_NLEG, MODE_NLEG, }, -/* PRET */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_PRET, MODE_TREA, MODE_NLEG, }, -/* TREA */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_TREA, MODE_POST, }, -/* POST */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_STAN, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_POST, }, }; +static const HD_OP_MODE_T MODE_TRANSITION_TABLE[ NUM_OF_MODES - 1 ][ NUM_OF_MODES - 1 ] = { +// from to-> FAULT SERVICE INIT STANBY TRT.PARAMS PRE-TREAT TREATMENT POST_TREA +/* FAUL */{ MODE_FAUL, MODE_SERV, 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, }, +/* INIT */{ MODE_FAUL, MODE_NLEG, MODE_INIT, MODE_STAN, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, }, +/* STAN */{ MODE_FAUL, MODE_SERV, MODE_NLEG, MODE_STAN, MODE_TPAR, MODE_NLEG, MODE_NLEG, MODE_NLEG, }, +/* TPAR */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_TPAR, MODE_PRET, MODE_NLEG, MODE_NLEG, }, +/* PRET */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_PRET, MODE_TREA, MODE_NLEG, }, +/* TREA */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_TREA, MODE_POST, }, +/* POST */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_STAN, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_POST, }, }; // ********** private function prototypes ********** -static OP_MODE arbitrateModeRequest( void ); -static void transitionToNewOperationMode( OP_MODE newMode ); +static HD_OP_MODE_T arbitrateModeRequest( void ); +static void transitionToNewOperationMode( HD_OP_MODE_T newMode ); static void broadcastOperationMode( void ); /************************************************************************* @@ -81,15 +85,15 @@ // start in init mode currentMode = MODE_INIT; + currentSubMode = 0; transitionToNewOperationMode( MODE_INIT ); // call initializers for the individual modes initFaultMode(); initServiceMode(); initInitAndPOSTMode(); initStandbyMode(); - initPrescriptionMode(); - initOpParamsMode(); + initTreatParamsMode(); initPreTreatmentMode(); initTreatmentMode(); initPostTreatmentMode(); @@ -106,7 +110,7 @@ *************************************************************************/ void execOperationModes( void ) { - OP_MODE newMode; + HD_OP_MODE_T newMode; // any new mode requests? newMode = arbitrateModeRequest(); // will return current mode if no pending requests @@ -131,43 +135,40 @@ switch ( currentMode ) { case MODE_FAUL: - execFaultMode(); + currentSubMode = execFaultMode(); break; case MODE_SERV: - execServiceMode(); + currentSubMode = execServiceMode(); break; case MODE_INIT: - execInitAndPOSTMode(); + currentSubMode = execInitAndPOSTMode(); break; case MODE_STAN: - execStandbyMode(); + currentSubMode = execStandbyMode(); break; - case MODE_PRES: - execPrescriptionMode(); + case MODE_TPAR: + currentSubMode = execTreatParamsMode(); break; - case MODE_OPAR: - execOpParamsMode(); - break; - case MODE_PRET: - execPreTreatmentMode(); + currentSubMode = execPreTreatmentMode(); break; case MODE_TREA: - execTreatmentMode(); + currentSubMode = execTreatmentMode(); break; case MODE_POST: - execPostTreatmentMode(); + currentSubMode = execPostTreatmentMode(); break; default: currentMode = MODE_FAUL; + currentSubMode = 0; SET_ALARM_WITH_2_U32_DATA( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_STATE, currentMode ) break; } // end switch @@ -185,7 +186,7 @@ * @param none * @return none *************************************************************************/ -void requestNewOperationMode( OP_MODE newMode ) +void requestNewOperationMode( HD_OP_MODE_T newMode ) { // validate requested mode if ( newMode < MODE_NLEG ) @@ -208,7 +209,7 @@ * @param none * @return none *************************************************************************/ -OP_MODE getCurrentOperationMode( void ) +HD_OP_MODE_T getCurrentOperationMode( void ) { return currentMode; } @@ -222,9 +223,9 @@ * @param none * @return none *************************************************************************/ -static OP_MODE arbitrateModeRequest( void ) +static HD_OP_MODE_T arbitrateModeRequest( void ) { - OP_MODE reqMode = currentMode; + HD_OP_MODE_T reqMode = currentMode; U32 i; // block additional requests until after mode arbitration @@ -235,7 +236,7 @@ { if ( modeRequest[ i ] != FALSE ) { - reqMode = (OP_MODE)i; + reqMode = (HD_OP_MODE_T)i; break; } } @@ -261,7 +262,7 @@ * @param none * @return none *************************************************************************/ -static void transitionToNewOperationMode( OP_MODE newMode ) +static void transitionToNewOperationMode( HD_OP_MODE_T newMode ) { // setup for new operating mode switch ( newMode ) @@ -278,12 +279,9 @@ case MODE_STAN: transitionToStandbyMode(); break; - case MODE_PRES: - transitionToPrescriptionMode(); + case MODE_TPAR: + transitionToTreatParamsMode(); break; - case MODE_OPAR: - transitionToOpParamsMode(); - break; case MODE_PRET: transitionToPreTreatmentMode(); break; @@ -313,6 +311,8 @@ if ( ++broadcastModeIntervalCtr >= BROADCAST_HD_OP_MODE_INTERVAL ) { broadcastModeIntervalCtr = 0; - broadcastHDOperationMode( currentMode ); + broadcastHDOperationMode( (U32)currentMode, currentSubMode ); } } + +/**@}*/ Index: firmware/App/Modes/OperationModes.h =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/OperationModes.h (.../OperationModes.h) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/Modes/OperationModes.h (.../OperationModes.h) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -18,29 +18,25 @@ #define __OP_MODES_H__ #include "HDCommon.h" +#include "HDDefs.h" +/** + * @defgroup HDOperationModes HDOperationModes + * @brief Operation Modes module. + * + * @addtogroup HDOperationModes + * @{ + */ + // ********** public definitions ********** -typedef enum Op_Modes // These are in order of priority (highest to lowest) -{ - MODE_FAUL = 0, // Fault - MODE_SERV, // Service - MODE_INIT, // Initialization & POST - MODE_STAN, // Standby - MODE_PRES, // Prescription - MODE_OPAR, // Operating Parameters - MODE_PRET, // Pre-Treatment - MODE_TREA, // Treatment - MODE_POST, // Post-Treatment - MODE_NLEG, // Not legal - NUM_OF_MODES -} OP_MODE; - // ********** public function prototypes ********** -void initOperationModes( void ); // initialize this module -void execOperationModes( void ); // execute the operation modes state machine (scheduled periodic call) -void requestNewOperationMode( OP_MODE newMode ); // request a transition to a new operation mode -OP_MODE getCurrentOperationMode( void ); // get the current operation mode +void initOperationModes( void ); // initialize this module +void execOperationModes( void ); // execute the operation modes state machine (scheduled periodic call) +void requestNewOperationMode( HD_OP_MODE_T newMode ); // request a transition to a new operation mode +HD_OP_MODE_T getCurrentOperationMode( void ); // get the current operation mode +/**@}*/ + #endif Index: firmware/App/Modes/TreatmentStop.h =================================================================== diff -u -ref5af6dd03da43ed68e147403f5923a9e1d8de8b -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/TreatmentStop.h (.../TreatmentStop.h) (revision ef5af6dd03da43ed68e147403f5923a9e1d8de8b) +++ firmware/App/Modes/TreatmentStop.h (.../TreatmentStop.h) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -18,6 +18,7 @@ #define __TREATMENT_STOP_H__ #include "HDCommon.h" +#include "HDDefs.h" /** * @defgroup TreatmentStop TreatmentStop Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r2112e3143003eaf9584d4be068f7ca89b33c941a -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 2112e3143003eaf9584d4be068f7ca89b33c941a) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -329,14 +329,15 @@ * Outputs : UF change settings response msg constructed and queued. * @param accepted : alarm status record * @param reason : reason rejected (if not accepted) - * @param volume_mL : alarm status record - * @param time_min : alarm status record - * @param ufRate_mL_min : alarm status record - * @param timeDiff : alarm status record - * @param rateDiff : alarm status record + * @param volume_mL : + * @param time_min : + * @param ufRate_mL_min : + * @param timeDiff : + * @param rateDiff : + * @param oldUFRate_mL_min : * @return TRUE if msg successfully queued for transmit, FALSE if not *************************************************************************/ -BOOL sendChangeUFSettingsResponse( BOOL accepted, U32 reason, F32 volume_mL, U32 time_min, F32 ufRate_mL_min, S32 timeDiff, F32 rateDiff ) +BOOL sendChangeUFSettingsResponse( BOOL accepted, U32 reason, F32 volume_mL, U32 time_min, F32 ufRate_mL_min, S32 timeDiff, F32 rateDiff, F32 oldUFRate_mL_min ) { BOOL result; F32 volume_L = volume_mL / (F32)ML_PER_LITER; @@ -346,7 +347,7 @@ // create a message record blankMessage( &msg ); msg.hdr.msgID = MSG_ID_USER_UF_SETTINGS_CHANGE_RESPONSE; - msg.hdr.payloadLen = sizeof( BOOL ) + sizeof( U32 ) + sizeof( F32 ) + sizeof( U32 ) + sizeof( U32 ) + sizeof( F32 ) + sizeof ( F32 ); + msg.hdr.payloadLen = sizeof( BOOL ) + sizeof( U32 ) + sizeof( F32 ) + sizeof( U32 ) + sizeof( S32 ) + sizeof( F32 ) + sizeof( F32 ) + sizeof( F32 ); memcpy( payloadPtr, &accepted, sizeof( BOOL ) ); payloadPtr += sizeof( BOOL ); @@ -356,11 +357,13 @@ payloadPtr += sizeof( F32 ); memcpy( payloadPtr, &time_min, sizeof( U32 ) ); payloadPtr += sizeof( U32 ); - memcpy( payloadPtr, &timeDiff, sizeof( U32 ) ); - payloadPtr += sizeof( U32 ); + memcpy( payloadPtr, &timeDiff, sizeof( S32 ) ); + payloadPtr += sizeof( S32 ); memcpy( payloadPtr, &ufRate_mL_min, sizeof( F32 ) ); payloadPtr += sizeof( F32 ); memcpy( payloadPtr, &rateDiff, sizeof( F32 ) ); + payloadPtr += sizeof( F32 ); + memcpy( payloadPtr, &oldUFRate_mL_min, sizeof( F32 ) ); // serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_REQUIRED ); @@ -1095,7 +1098,7 @@ * @param mode : current HD operation mode. * @return TRUE if msg successfully queued for transmit, FALSE if not *************************************************************************/ -BOOL broadcastHDOperationMode( U32 mode ) +BOOL broadcastHDOperationMode( U32 mode, U32 subMode ) { BOOL result; MESSAGE_T msg; @@ -1104,9 +1107,11 @@ // create a message record blankMessage( &msg ); msg.hdr.msgID = MSG_ID_HD_OP_MODE; - msg.hdr.payloadLen = sizeof( U32 ); + msg.hdr.payloadLen = sizeof( U32 ) + sizeof( U32 ); memcpy( payloadPtr, &mode, sizeof( U32 ) ); + payloadPtr += sizeof( U32 ); + memcpy( payloadPtr, &subMode, sizeof( U32 ) ); // serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_BROADCAST, ACK_NOT_REQUIRED ); Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -r1017bbc5760a50e20357da1e4f705b3e6157375e -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 1017bbc5760a50e20357da1e4f705b3e6157375e) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -61,7 +61,7 @@ // MSG_ID_USER_UF_SETTINGS_CHANGE_REQUEST void handleChangeUFSettingsRequest( MESSAGE_T *message ); // MSG_ID_USER_UF_SETTINGS_CHANGE_RESPONSE -BOOL sendChangeUFSettingsResponse( BOOL accepted, U32 reason, F32 volume_mL, U32 time_min, F32 ufRate_mL_min, S32 timeDiff, F32 rateDiff ); +BOOL sendChangeUFSettingsResponse( BOOL accepted, U32 reason, F32 volume_mL, U32 time_min, F32 ufRate_mL_min, S32 timeDiff, F32 rateDiff, F32 oldUFRate_mL_min ); // MSG_ID_USER_CONFIRM_UF_SETTINGS_CHANGE void handleChangeUFSettingsConfirmation( MESSAGE_T *message ); @@ -134,7 +134,7 @@ BOOL broadcastPowerOffWarning( void ); // MSG_ID_HD_OP_MODE -BOOL broadcastHDOperationMode( U32 mode ); +BOOL broadcastHDOperationMode( U32 mode, U32 subMode ); // *********** public test support message functions **********