Index: firmware/App/Controllers/DGInterface.c =================================================================== diff -u -r477515fb4a6518b538fd218a1638ba2958e82d1c -r8a18b5d1fb4598c6b7facb3e7e233252941eaded --- firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 477515fb4a6518b538fd218a1638ba2958e82d1c) +++ firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 8a18b5d1fb4598c6b7facb3e7e233252941eaded) @@ -95,7 +95,31 @@ *************************************************************************/ void initDGInterface( void ) { + dgStarted = FALSE; + dgTrimmerHeaterOn = FALSE; + dgWaterSampled = FALSE; + dgPrimaryTempSet = 0.0; + dgTrimmerTempSet = 0.0; + dgActiveReservoirSet = DG_RESERVOIR_2; + dgReservoirFillVolumeTargetSet = 0; + dgReservoirDrainVolumeTargetSet = 0; +} + +/*********************************************************************//** + * @brief + * The initTreatmentReservoirMgmt function initializes the treatment reservoir \n + * management state machine. + * @details + * Inputs : none + * Outputs : treatment reservoir management state machine initialized. + * @return none + *************************************************************************/ +void initTreatmentReservoirMgmt( void ) +{ currentTrtResMgmtState = TREATMENT_RESERVOIR_MGMT_START_STATE; + resMgmtTimer = 0; + resUseTimer = getMSTimerCount(); + resUseVolumeMl = 0.0; } /*********************************************************************//** @@ -116,13 +140,12 @@ // calculate volume used from active reservoir resUseVolumeMl += ( flowRateMlPerMs * msSinceLastVolumeCalc ); // TODO - should this calc be done and kept by Dialysis sub-mode? + resUseTimer = getMSTimerCount(); // treatment reservoir mgmt. state machine switch ( currentTrtResMgmtState ) { case TREATMENT_RESERVOIR_MGMT_START_STATE: - resUseTimer = getMSTimerCount(); - resUseVolumeMl = 0.0; currentTrtResMgmtState = TREATMENT_RESERVOIR_MGMT_FLUSH_DG_LINES_STATE; break; @@ -203,6 +226,7 @@ cmdSetDGActiveReservoir( inactiveRes ); // signal dialysis sub-mode to switch reservoirs signalReservoirsSwitched(); + resUseVolumeMl = 0.0; // wait for used reservoir to settle resMgmtTimer = getMSTimerCount(); currentTrtResMgmtState = TREATMENT_RESERVOIR_MGMT_WAIT_FOR_SWITCH_SETTLE_STATE; @@ -285,7 +309,7 @@ } else { - // TODO - s/w fault + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_DG_PRESSURE_ID, sensorID ) } return result; @@ -357,6 +381,10 @@ dgCurrentOpMode = (DG_OP_MODE_T)opMode; dgSubMode = subMode; } + else + { + // TODO + } } /*********************************************************************//** @@ -396,6 +424,10 @@ dgReservoirFillVolumeTarget = fillVol; dgReservoirDrainVolumeTarget = drainVol; } + else + { + // TODO + } } /*********************************************************************//** @@ -425,13 +457,13 @@ * Inputs : none * Outputs : dgROPumpPressureSetPtPSI, dgROPumpFlowRateMlMin * @param presSetPt : latest RO pump pressure set point reported by DG. - * @param flowRate : latest RO pump flow rate reported by DG. + * @param flowRate : latest RO pump flow rate (LPM) reported by DG. * @return none *************************************************************************/ void setDGROPumpData( U32 presSetPt, F32 flowRate ) { dgROPumpPressureSetPtPSI = presSetPt; - dgROPumpFlowRateMlMin = flowRate; + dgROPumpFlowRateMlMin = flowRate * ML_PER_LITER; } /*********************************************************************//** @@ -542,8 +574,6 @@ { dgActiveReservoirSet = resID; sendDGSwitchReservoirCommand( (U32)resID ); - // reset treatment reservoir mgmt. state machine on reservoir switch - currentTrtResMgmtState = TREATMENT_RESERVOIR_MGMT_START_STATE; } else {