Index: firmware/App/Modes/StateTxBloodPrime.c =================================================================== diff -u -rf3271dd321c9d035ee2280618cf921f4f3e8017a -rcc925371f5081d8b486e65f942d9608e6e0b8d31 --- firmware/App/Modes/StateTxBloodPrime.c (.../StateTxBloodPrime.c) (revision f3271dd321c9d035ee2280618cf921f4f3e8017a) +++ firmware/App/Modes/StateTxBloodPrime.c (.../StateTxBloodPrime.c) (revision cc925371f5081d8b486e65f942d9608e6e0b8d31) @@ -26,6 +26,7 @@ #include "StateTxBloodPrime.h" #include "Switches.h" #include "TaskGeneral.h" +#include "Timers.h" #include "Utilities.h" #include "Valves.h" #include "Valve3Way.h" @@ -71,6 +72,7 @@ static U32 bloodPrimePublishTimerCtr; ///< Timer counter for determining interval for blood prime status to be published. static U32 lastBloodPrimeFlowRate_mL_min; ///< Flow rate prior to pausing blood prime. static U32 requestedBloodFlowRate_mL_min; ///< Requested blood flow rate from UI. +static U32 bloodPrimeStartMS = 0; ///< Start time of Blood Prime (ms timer count) /// Interval (in task intervals) at which to publish blood prime data to CAN bus. static OVERRIDE_U32_T bloodPrimePublishInterval = { BLOOD_PRIME_DATA_PUBLISH_INTERVAL, BLOOD_PRIME_DATA_PUBLISH_INTERVAL, BLOOD_PRIME_DATA_PUBLISH_INTERVAL, 0 }; @@ -118,6 +120,7 @@ estRampSeconds = (F32)MIN_RAMP_TIME_SEC; } bloodPrimeRampStep_mL = rampRateSpan / estRampSeconds; + bloodPrimeStartMS = getMSTimerCount(); } /*********************************************************************//** @@ -494,10 +497,17 @@ if ( ++bloodPrimePublishTimerCtr >= getU32OverrideValue( &bloodPrimePublishInterval ) ) { BLOOD_PRIME_DATA_PAYLOAD_T data; + U32 elapsedMS; + U32 elapsedSec; bloodPrimePublishTimerCtr = 0; data.targetBloodPrimeVolumeMl = bloodPrimeTargetVolume_mL; data.deliveredBloodPrimeVolumeMl = MAX( 0.0, getBloodPrimeVolume() ); + elapsedMS = calcTimeSince( bloodPrimeStartMS ); + elapsedSec = elapsedMS / 1000U; + data.bloodPrimeTimeoutSec = bloodPrimeStartMS; + data.bloodPrimeCountdownSec = elapsedSec; + broadcastData( MSG_ID_TD_BLOOD_PRIME_PROGRESS_DATA, COMM_BUFFER_OUT_CAN_TD_BROADCAST, (U08*)&data, sizeof( BLOOD_PRIME_DATA_PAYLOAD_T ) ); } }