Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r19a8bf98a7154e24c35da25225d4b55bf70ddd09 -r5beae1a840a50cda2f18eb84a8f51710259a5cb3 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 19a8bf98a7154e24c35da25225d4b55bf70ddd09) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 5beae1a840a50cda2f18eb84a8f51710259a5cb3) @@ -8,7 +8,7 @@ * @file ModeTreatment.c * * @author (last) Dara Navaei -* @date (last) 23-May-2022 +* @date (last) 19-Sep-2022 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 @@ -127,11 +127,10 @@ static U32 treatmentStartTimeStamp; ///< Treatment start timestampt for logging purpose. static U32 treatmentEndTimeStamp; ///< Treatment end timestampt for logging purpose. +static BOOL hasTreatmentStartTimeBeenWrittenToNV; ///< Boolean flag to indicate whether treatment start time has been started or not. // ********** private function prototypes ********** -static void resetSignalFlags( void ); -static void resetAlarmSignalFlags( void ); static void broadcastTreatmentSettingsRanges( void ); static void broadcastTreatmentPeriodicData(); static U32 getTreatmentTimeInMinutes( void ); @@ -142,6 +141,8 @@ static TREATMENT_STATE_T handleTreatmentRinsebackState( void ); static TREATMENT_STATE_T handleTreatmentRecircState( void ); static TREATMENT_STATE_T handleTreatmentEndState( void ); +static void resetSignalFlags( void ); +static void resetAlarmSignalFlags( void ); /*********************************************************************//** * @brief @@ -192,41 +193,11 @@ treatmentStartTimeStamp = getRTCTimestamp(); treatmentEndTimeStamp = 0; - + hasTreatmentStartTimeBeenWrittenToNV = FALSE; } /*********************************************************************//** * @brief - * The resetSignalFlags function resets all non-alarm signal flags. - * @details Inputs: none - * @details Outputs: non-alarm signal flags set to FALSE - * @return none - *************************************************************************/ -static void resetSignalFlags( void ) -{ - rinsebackToStoppedRequest = FALSE; - endTreatmentRequest = FALSE; - rinsebackToRecircRequest = FALSE; - bloodPrimeToDialysisRequest = FALSE; - treatmentEndToRinsebackRequest = FALSE; -} - -/*********************************************************************//** - * @brief - * The resetAlarmSignalFlags function resets all alarm signal flags. - * @details Inputs: none - * @details Outputs: alarm signal flags set to FALSE - * @return none - *************************************************************************/ -static void resetAlarmSignalFlags( void ) -{ - resumeTreatmentAlarmResponseRequest = FALSE; - initiateRinsebackAlarmResponseRequest = FALSE; - endTreatmentAlarmResponseRequest = FALSE; -} - -/*********************************************************************//** - * @brief * The transitionToTreatmentMode function prepares for transition to treatment mode. * @details Inputs: none * @details Outputs: @@ -245,9 +216,6 @@ initTreatmentRecirc(); initTreatmentEnd(); - // Started the treatment set the start time in epoch - setTxLastStartTimeEpoch( getRTCTimestamp() ); - return currentTreatmentState; } @@ -631,6 +599,12 @@ checkDialysateTemperature(); } + if ( FALSE == hasTreatmentStartTimeBeenWrittenToNV ) + { + // Started the treatment set the start time in epoch + hasTreatmentStartTimeBeenWrittenToNV = setTxLastStartTimeEpoch( getRTCTimestamp() ); + } + // Treatment mode state machine switch ( currentTreatmentState ) { @@ -1567,7 +1541,37 @@ return treatmentTime; } +/*********************************************************************//** + * @brief + * The resetSignalFlags function resets all non-alarm signal flags. + * @details Inputs: none + * @details Outputs: non-alarm signal flags set to FALSE + * @return none + *************************************************************************/ +void resetSignalFlags( void ) +{ + rinsebackToStoppedRequest = FALSE; + endTreatmentRequest = FALSE; + rinsebackToRecircRequest = FALSE; + bloodPrimeToDialysisRequest = FALSE; + treatmentEndToRinsebackRequest = FALSE; +} +/*********************************************************************//** + * @brief + * The resetAlarmSignalFlags function resets all alarm signal flags. + * @details Inputs: none + * @details Outputs: alarm signal flags set to FALSE + * @return none + *************************************************************************/ +void resetAlarmSignalFlags( void ) +{ + resumeTreatmentAlarmResponseRequest = FALSE; + initiateRinsebackAlarmResponseRequest = FALSE; + endTreatmentAlarmResponseRequest = FALSE; +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/