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 { Index: firmware/App/Controllers/DGInterface.h =================================================================== diff -u -rf861c4c5ab64f429e0b8b9cc456e2ed14e472f2b -r8a18b5d1fb4598c6b7facb3e7e233252941eaded --- firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision f861c4c5ab64f429e0b8b9cc456e2ed14e472f2b) +++ firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision 8a18b5d1fb4598c6b7facb3e7e233252941eaded) @@ -55,6 +55,7 @@ // ********** public function prototypes ********** void initDGInterface( void ); +void initTreatmentReservoirMgmt( void ); void execTreatmentReservoirMgmt( void ); DG_OP_MODE_T getDGOpMode( void ); Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -ra60ec05d359c0d3f014015e9080b6dbcef0fea28 -r8a18b5d1fb4598c6b7facb3e7e233252941eaded --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision a60ec05d359c0d3f014015e9080b6dbcef0fea28) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 8a18b5d1fb4598c6b7facb3e7e233252941eaded) @@ -70,6 +70,7 @@ { // re-initialize when transitioning to standby mode initStandbyMode(); + initDGInterface(); #ifndef UF_TEST_ENABLED setBloodPumpTargetFlowRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -ra60ec05d359c0d3f014015e9080b6dbcef0fea28 -r8a18b5d1fb4598c6b7facb3e7e233252941eaded --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision a60ec05d359c0d3f014015e9080b6dbcef0fea28) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 8a18b5d1fb4598c6b7facb3e7e233252941eaded) @@ -128,6 +128,7 @@ { // initialize treatment mode each time we transition to it initTreatmentMode(); + initTreatmentReservoirMgmt(); // initialize treatment sub-modes each time we transition to treatment mode initDialysis(); initTreatmentStop(); Index: firmware/App/Services/AlarmMgmt.h =================================================================== diff -u -r186d10f0644b9726f1a632197a0ccfba7b00bf48 -r8a18b5d1fb4598c6b7facb3e7e233252941eaded --- firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 186d10f0644b9726f1a632197a0ccfba7b00bf48) +++ firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 8a18b5d1fb4598c6b7facb3e7e233252941eaded) @@ -170,6 +170,7 @@ SW_FAULT_ID_NVDATAMGMT_EXEC_INVALID_STATE, SW_FAULT_ID_MODE_TREATMENT_INVALID_STATE, SW_FAULT_ID_INTERRUPTS_INVALID_EDGE_DETECTED, // 60 + SW_FAULT_ID_INVALID_DG_PRESSURE_ID, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r477515fb4a6518b538fd218a1638ba2958e82d1c -r8a18b5d1fb4598c6b7facb3e7e233252941eaded --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 477515fb4a6518b538fd218a1638ba2958e82d1c) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 8a18b5d1fb4598c6b7facb3e7e233252941eaded) @@ -330,12 +330,12 @@ * Outputs : UF change settings response msg constructed and queued. * @param accepted : T/F - are settings ok? * @param reason : reason rejected (if not accepted) - * @param volume_mL : - * @param time_min : - * @param ufRate_mL_min : - * @param timeDiff : - * @param rateDiff : - * @param oldUFRate_mL_min : + * @param volume_mL : UF volume (in mL) + * @param time_min : treatment duration (in minutes) + * @param ufRate_mL_min : UF rate (in mL/min) + * @param timeDiff : change in treatment duration (in minutes) + * @param rateDiff : change in UF rate (in mL/min) + * @param oldUFRate_mL_min : the UF rate prior to this change (in 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, F32 oldUFRate_mL_min ) @@ -381,9 +381,9 @@ * Outputs : UF change settings option response msg constructed and queued. * @param accepted : T/F - are settings ok? * @param reason : reason rejected (if not accepted) - * @param volume_mL : - * @param time_min : - * @param ufRate_mL_min : + * @param volume_mL : UF volume (in mL) + * @param time_min : treatment duration (in minutes) + * @param ufRate_mL_min : UF rate (in mL/min) * @return TRUE if msg successfully queued for transmit, FALSE if not *************************************************************************/ BOOL sendChangeUFSettingsOptionResponse( BOOL accepted, U32 reason, F32 volume_mL, U32 time_min, F32 ufRate_mL_min ) @@ -423,8 +423,8 @@ * Outputs : treatment duration change settings response msg constructed and queued. * @param accepted : T/F - are settings ok? * @param reason : reason rejected (if not accepted) - * @param time_min : alarm status record - * @param volume_mL : alarm status record + * @param time_min : treatment duration (in minutes). + * @param volume_mL : UF volume (in mL). * @return TRUE if msg successfully queued for transmit, FALSE if not *************************************************************************/ BOOL sendChangeTreatmentDurationResponse( BOOL accepted, U32 reason, U32 time_min, F32 volume_mL )