Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r3d5431d5aebe0c88c38a8732455a6dcf004fe6c2 -r6f2218c22e666aec059afbd60f3d0d268b305ad0 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 3d5431d5aebe0c88c38a8732455a6dcf004fe6c2) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 6f2218c22e666aec059afbd60f3d0d268b305ad0) @@ -120,6 +120,7 @@ static BOOL sendLastTreatmentPeriodicData; ///< Flag determines if HD needs to send the last treatment periodic data. static U32 treatmentStartTimeStamp; ///< Treatment start timestampt for logging purpose. +static U32 treatmentEndTimeStamp; ///< Treatment end timestampt for logging purpose. // ********** private function prototypes ********** @@ -183,6 +184,7 @@ sendLastTreatmentPeriodicData = FALSE; treatmentStartTimeStamp = getRTCTimestamp(); + treatmentEndTimeStamp = 0; } /*********************************************************************//** @@ -278,15 +280,15 @@ /*********************************************************************//** * @brief - * The getActualTreatmentTimeMins function determines the actual treatment - * duration in minutes. + * The getActualTreatmentTimeSecs function determines the actual treatment + * duration in seconds. * @details Inputs: treatmentTimeMS * @details Outputs: none - * @return The actual treatment duration in minutes. + * @return The actual treatment duration in seconds. *************************************************************************/ -U32 getActualTreatmentTimeMins( void ) +U32 getActualTreatmentTimeSecs( void ) { - return ( treatmentTimeMS / ( MS_PER_SECOND * SEC_PER_MIN ) ); + return ( treatmentTimeMS / MS_PER_SECOND ); } /*********************************************************************//** @@ -358,8 +360,14 @@ F32 getTreatmentAvgBloodFlowRate( void ) { U32 const numberOfDataPoint = ( treatmentTimeMS / TREATMENT_PERIODIC_DATA_LOG_INTERVAL ); + F32 result = 0.0; - return ( treatmentBloodFlowRateTotal_mL_min / numberOfDataPoint ); + if ( numberOfDataPoint > 0 ) + { + result = ( treatmentBloodFlowRateTotal_mL_min / numberOfDataPoint ); + } + + return result; } /*********************************************************************//** @@ -373,8 +381,14 @@ F32 getTreatmentAvgDialysateFlowRate( void ) { U32 const numberOfDataPoint = ( treatmentTimeMS / TREATMENT_PERIODIC_DATA_LOG_INTERVAL ); + F32 result = 0.0; - return ( treatmentDialysateFlowRateTotal_mL_min / numberOfDataPoint ); + if ( numberOfDataPoint > 0 ) + { + result = ( treatmentDialysateFlowRateTotal_mL_min / numberOfDataPoint ); + } + + return result; } /*********************************************************************//** @@ -388,8 +402,14 @@ F32 getTreatmentAvgDialysateTemp( void ) { U32 const numberOfDataPoint = ( treatmentTimeMS / TREATMENT_PERIODIC_DATA_LOG_INTERVAL ); + F32 result = 0.0; - return ( treatmentDialysateTempTotal_degree_C / numberOfDataPoint ); + if ( numberOfDataPoint > 0 ) + { + result = ( treatmentDialysateTempTotal_degree_C / numberOfDataPoint ); + } + + return result; } /*********************************************************************//** @@ -407,6 +427,19 @@ /*********************************************************************//** * @brief + * The getTreatmentEndTimeStamp function returns the treatment end + * time stamp. + * @details Inputs: treatmentEndTimeStamp + * @details Outputs: none + * @return the treatment end time stamp + *************************************************************************/ +U32 getTreatmentEndTimeStamp( void ) +{ + return treatmentEndTimeStamp; +} + +/*********************************************************************//** + * @brief * The signalAlarmActionToTreatmentMode function executes the given alarm action * as appropriate while in Treatment Mode. * @details Inputs: none @@ -670,6 +703,7 @@ { treatmentCompleted = TRUE; sendLastTreatmentPeriodicData = TRUE; + treatmentEndTimeStamp = getRTCTimestamp(); stopDialysis(); transitionToTreatmentEnd(); SET_ALARM_WITH_1_U32_DATA( ALARM_ID_END_OF_TREATMENT_WARNING, presTreatmentTimeSecs );