Index: firmware/App/Modes/Prime.c =================================================================== diff -u -r20bdfd8ac79017c8ab79ad62d16cb10dc4236081 -r1406dcedbc65edd2c134cf2e0861bb5aa2e569da --- firmware/App/Modes/Prime.c (.../Prime.c) (revision 20bdfd8ac79017c8ab79ad62d16cb10dc4236081) +++ firmware/App/Modes/Prime.c (.../Prime.c) (revision 1406dcedbc65edd2c134cf2e0861bb5aa2e569da) @@ -7,8 +7,8 @@ * * @file Prime.c * -* @author (last) Sean Nash -* @date (last) 12-Jun-2023 +* @author (last) Michael Garthwaite +* @date (last) 14-Jun-2023 * * @author (original) Quang Nguyen * @date (original) 08-Dec-2020 @@ -137,7 +137,7 @@ static U32 primeDialysateBypassStartTime; ///< Starting time of priming dialysate bypass circuit. static U32 steadyVolumeSamplingStartTime; ///< Load cell steady volume sampling interval starting time. static F32 minimumReservoirVolume; ///< Minimum reservoir volume in mL. -static U32 steadyVolumeCount; ///< Use to keep track the number of dVolume/dt < Threshold. +static U32 steadyVolumeCount; ///< Use to keep track the number of dVolume/dt < Threshold static BOOL bubbleClearEnded; ///< Bubble clear ended boolean signal. // ********** private function prototypes ********** @@ -432,15 +432,20 @@ *************************************************************************/ static void broadcastPrimingStatus( void ) { - U32 const elapsedPrimeTimeInSecs = calcTimeSince( primeStartTime ) / MS_PER_SECOND; + U32 elapsedPrimeTimeInSecs = calcTimeSince( primeStartTime ) / MS_PER_SECOND; + // If the elapsed time is greater than the maximum prime time, it is capped to max prime time so the remaining time + // is a large number + elapsedPrimeTimeInSecs = CAP( elapsedPrimeTimeInSecs, MAX_PRIME_TIME ); + // timeout alarm that used to trigger when max prime time elapsed was removed. if ( ++primeStatusBroadcastTimerCounter >= PRIME_DATA_PUB_INTERVAL ) { PRIMING_DATA_PAYLOAD_T primeData; - primeData.totalTime = MAX_PRIME_TIME; - primeData.remainingTime = MAX_PRIME_TIME - elapsedPrimeTimeInSecs; + primeData.totalTime = MAX_PRIME_TIME; + primeData.remainingTime = MAX_PRIME_TIME - elapsedPrimeTimeInSecs; + broadcastData( MSG_ID_HD_PRIMING_STATUS_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&primeData, sizeof( PRIMING_DATA_PAYLOAD_T ) ); primeStatusBroadcastTimerCounter = 0; } @@ -545,7 +550,7 @@ /*********************************************************************//** * @brief - * The handlePrimeSalineSetupState function checks user's request to start + * The handlePrimeWaitForUserStartState function checks user's request to start * priming. * @details Inputs: primeStartReqReceived * @details Outputs: control valves to purge air @@ -557,6 +562,8 @@ // Keep updating start time until the user requested priming primeStartTime = getMSTimerCount(); + signalAllowDGFillRes1(); + signalAllowDGFillRes2(); #ifndef _RELEASE_ if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_UI_INTERACTION ) ) @@ -600,6 +607,7 @@ purgeAirValvesBloodPumpControl(); purgeAirTimeOutStartTime = getMSTimerCount(); primeSalineDialyzerBubbleClearStartTime = getMSTimerCount(); + if ( getTestConfigStatus( TEST_CONFIG_USE_WET_CARTRIDGE ) != TRUE ) { primeDialyzerBubbleClearState = PRIME_BUBBLE_CLEAR_READY_STATE;