Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -ra4f5ed3748870d287a4c2c6fcc003fc4d3b9233f -r693f9ed31c3f92b6f71b22ce0ae3a6f29ae92394 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision a4f5ed3748870d287a4c2c6fcc003fc4d3b9233f) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision 693f9ed31c3f92b6f71b22ce0ae3a6f29ae92394) @@ -1051,7 +1051,9 @@ if ( valvesStatus[ valve ].positionOutOfRangeCounter > MAX_POS_DEVIATION_TIME_INTERVAL_COUNTER ) { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_VALVE_CURRENT_OUT_OF_RANGE, (F32)valve, currentPostion ); //TODO is S16 ok with F32? +#ifndef DISABLE_VALVE_ALARMS + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_VALVE_CURRENT_OUT_OF_RANGE, (U32)valve, (U32)currentPostion ); +#endif } else if ( abs( currentPostion - commandedPoistion ) < MAX_DEVIATION_FROM_TARGET_IN_COUNTS && valvesStatus[ valve ].positionOutOfRangeCounter > 0 ) Index: firmware/App/HDCommon.h =================================================================== diff -u -rbd594d51a6487960035f36d516c801de1b4aaff9 -r693f9ed31c3f92b6f71b22ce0ae3a6f29ae92394 --- firmware/App/HDCommon.h (.../HDCommon.h) (revision bd594d51a6487960035f36d516c801de1b4aaff9) +++ firmware/App/HDCommon.h (.../HDCommon.h) (revision 693f9ed31c3f92b6f71b22ce0ae3a6f29ae92394) @@ -30,9 +30,8 @@ // ********** development build switches ********** #ifndef _RELEASE_ -//#define UF_TEST_ENABLED 1 // ultrafiltration test build (hard codes treatment params, re-purposes off/stop buttons) -//#define UF_TEST_WITH_DG 1 // ultrafiltration test build (sets up DG in standby mode) #ifndef _VECTORCAST_ +// #define RUN_WITHOUT_DG 1 // run HD w/o DG // #define DISABLE_UI_TREATMENT_WORKFLOW 1 // disable UI treatment workflow // #define RM46_EVAL_BOARD_TARGET 1 // limited build runs on RM46 eval board // #define BREADBOARD_TARGET 1 // old breadboard system build - no longer used? @@ -50,6 +49,7 @@ #define DISABLE_SALINE_BOLUS_CHECKS 1 // do not error on HD saline bolus checks #define DISABLE_PRESSURE_CHECKS 1 // do not error on HD pressure checks #define DISABLE_UF_ALARMS 1 // do not error on HD ultrafiltration checks + #define DISABLE_VALVE_ALARMS 1 // do not error on HD valve position // #define RUN_PUMPS_OPEN_LOOP 1 // BP and DPi pumps will be run open loop (no flow sensor feedback) // #define RAW_FLOW_SENSOR_DATA 1 // test build will not filter flow sensor data // #define READ_FPGA_ASYNC_DATA 1 // test build reads non-priority register page every other time Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -rbd594d51a6487960035f36d516c801de1b4aaff9 -r693f9ed31c3f92b6f71b22ce0ae3a6f29ae92394 --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision bd594d51a6487960035f36d516c801de1b4aaff9) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 693f9ed31c3f92b6f71b22ce0ae3a6f29ae92394) @@ -1126,7 +1126,9 @@ // check total UF volume error if ( ( fabs( refUFVolume - measUFVolume ) ) >= (F32)MAX_UF_ACCURACY_ERROR_ML ) { +#ifndef DISABLE_UF_ALARMS SET_ALARM_WITH_2_F32_DATA( ALARM_ID_UF_VOLUME_ACCURACY_ERROR, refUFVolume, measUFVolume ); +#endif } } Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r4a22fc18a17947587613273eb8cc08fd8c95beb8 -r693f9ed31c3f92b6f71b22ce0ae3a6f29ae92394 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 4a22fc18a17947587613273eb8cc08fd8c95beb8) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 693f9ed31c3f92b6f71b22ce0ae3a6f29ae92394) @@ -34,6 +34,8 @@ // ********** private data ********** +static BOOL treatStartReqReceived = FALSE; ///< Flag indicates user requests treatment begin. + // ********** private function prototypes ********** /*********************************************************************//** @@ -59,6 +61,8 @@ *************************************************************************/ void transitionToPreTreatmentMode( void ) { + treatStartReqReceived = FALSE; + #ifdef RM46_EVAL_BOARD_TARGET start = getMSTimerCount(); #endif @@ -76,8 +80,8 @@ { BOOL stop = isStopButtonPressed(); -#ifndef UF_TEST_ENABLED - if ( TRUE == stop ) +#ifndef DISABLE_UI_TREATMENT_WORKFLOW + if ( TRUE == treatStartReqReceived ) #endif { requestNewOperationMode( MODE_TREA ); @@ -92,4 +96,26 @@ return 0; // TODO - return current state } +/*********************************************************************//** + * @brief + * The signalUserBeginningTreatment function handles user start of a + * treatment. + * @details Inputs: none + * @details Outputs: requested mode transition to treatment mode + * @return TRUE if signal accepted, FALSE if not + *************************************************************************/ +BOOL signalUserBeginningTreatment( void ) +{ + BOOL result = FALSE; + + if ( MODE_PRET == getCurrentOperationMode() ) + { + treatStartReqReceived = TRUE; + result = TRUE; + } + sendTreatmentStartResponseMsg( result, 0 ); // TODO - provide reason code if rejected + + return result; +} + /**@}*/ Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r4a22fc18a17947587613273eb8cc08fd8c95beb8 -r693f9ed31c3f92b6f71b22ce0ae3a6f29ae92394 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 4a22fc18a17947587613273eb8cc08fd8c95beb8) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 693f9ed31c3f92b6f71b22ce0ae3a6f29ae92394) @@ -108,7 +108,7 @@ DG_OP_MODE_T dgOpMode = getDGOpMode(); // TODO - the DG mode & sub-mode come as a pair at interval - they MUST be kept together. U32 dgSubMode = getDGSubMode(); -#ifdef UF_TEST_WITH_DG +#ifndef RUN_WITHOUT_DG // state machine to get DG to prep a reservoir so we can start a treatment switch ( currentStandbyState ) { @@ -178,21 +178,26 @@ break; case STANDBY_WAIT_FOR_TREATMENT_STATE: - if ( TRUE == treatStartReqReceived ) - { - requestNewOperationMode( MODE_TPAR ); - treatStartReqReceived = FALSE; - } // TODO - test code if ( TRUE == stop ) { if ( DG_MODE_CIRC == dgOpMode ) { if ( DG_RECIRCULATE_MODE_STATE_RECIRC_WATER == dgSubMode ) { +#ifndef DISABLE_UI_TREATMENT_WORKFLOW + if ( TRUE == treatStartReqReceived ) + { + setStartReservoirVolume(); + cmdSetDGActiveReservoir( DG_RESERVOIR_1 ); + requestNewOperationMode( MODE_TPAR ); + treatStartReqReceived = FALSE; + } +#else setStartReservoirVolume(); cmdSetDGActiveReservoir( DG_RESERVOIR_1 ); requestNewOperationMode( MODE_TPAR ); +#endif } } } Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -rbd594d51a6487960035f36d516c801de1b4aaff9 -r693f9ed31c3f92b6f71b22ce0ae3a6f29ae92394 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision bd594d51a6487960035f36d516c801de1b4aaff9) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 693f9ed31c3f92b6f71b22ce0ae3a6f29ae92394) @@ -287,7 +287,7 @@ presTreatmentTimeSecs = SEC_PER_MIN * getTreatmentParameterU32( TREATMENT_PARAM_TREATMENT_DURATION ); presBloodFlowRate = getTreatmentParameterU32( TREATMENT_PARAM_BLOOD_FLOW ); presDialysateFlowRate = getTreatmentParameterU32( TREATMENT_PARAM_DIALYSATE_FLOW ); - presMaxUFVolumeML = getTreatmentParameterF32( TREATMENT_PARAM_UF_VOLUME ) / (F32)ML_PER_LITER; + presMaxUFVolumeML = getTreatmentParameterF32( TREATMENT_PARAM_UF_VOLUME ) * (F32)ML_PER_LITER; presUFRate = presMaxUFVolumeML / (F32)getTreatmentParameterU32( TREATMENT_PARAM_TREATMENT_DURATION ); #else // TODO - test code Index: firmware/App/Modes/ModeTreatmentParams.c =================================================================== diff -u -rbd594d51a6487960035f36d516c801de1b4aaff9 -r693f9ed31c3f92b6f71b22ce0ae3a6f29ae92394 --- firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision bd594d51a6487960035f36d516c801de1b4aaff9) +++ firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision 693f9ed31c3f92b6f71b22ce0ae3a6f29ae92394) @@ -252,7 +252,7 @@ break; } -#ifdef UF_TEST_ENABLED +#ifdef DISABLE_UI_TREATMENT_WORKFLOW requestNewOperationMode( MODE_PRET ); #endif #ifdef RM46_EVAL_BOARD_TARGET