Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -rc1b9ac0dbf2196280895d2e440dd7ac288ac8424 -ra711d5bb6dd1171626e6a06e3e37c89fb3892a32 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision c1b9ac0dbf2196280895d2e440dd7ac288ac8424) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision a711d5bb6dd1171626e6a06e3e37c89fb3892a32) @@ -1413,8 +1413,9 @@ * @brief * The broadcastTreatmentTimeAndState function broadcasts treatment time and * state data during treatment. - * @details Inputs: treatment time and state data - * @details Outputs: treatment time and state messages sent on interval + * @details Inputs: treatmentTimeBroadcastTimerCtr, elapsedTreatmentTimeInSecs, + * presTreatmentTimeSecs, treatmentStateBroadcastTimerCtr + * @details Outputs: treatmentTimeBroadcastTimerCtr, treatmentStateBroadcastTimerCtr * @return none *************************************************************************/ void broadcastTreatmentTimeAndState( void ) @@ -1430,9 +1431,18 @@ if ( isTreatmentCompleted() != TRUE ) { - data.treatmentTimePrescribedinSec = presTreatmentTimeSecs; data.treatmentTimeElapsedinSec = elapsedTreatmentTimeInSecs; - data.treatmentTimeRemaininginSec = presTreatmentTimeSecs - elapsedTreatmentTimeInSecs; + // if alarm preventing treatment resumption, treatment is essentially over and we want to indicate that with published treatment time data + if ( isTreatmentResumeBlocked() != TRUE ) + { + data.treatmentTimePrescribedinSec = presTreatmentTimeSecs; + data.treatmentTimeRemaininginSec = presTreatmentTimeSecs - elapsedTreatmentTimeInSecs; + } + else + { + data.treatmentTimePrescribedinSec = 0; + data.treatmentTimeRemaininginSec = 0; + } } broadcastData( MSG_ID_TREATMENT_TIME_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&data, sizeof( TREATMENT_TIME_DATA_T ) ); treatmentTimeBroadcastTimerCtr = 0;