Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -r8f5cbb3766f745c63896e76bc6a206e6f5d4dc28 -r1e62db4e4c11657a30823872d3a523814c9c7419 --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 8f5cbb3766f745c63896e76bc6a206e6f5d4dc28) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 1e62db4e4c11657a30823872d3a523814c9c7419) @@ -7,8 +7,8 @@ * * @file ModeFill.c * -* @author (last) Dara Navaei -* @date (last) 24-Jul-2023 +* @author (last) Michael Garthwaite +* @date (last) 10-Aug-2023 * * @author (original) Leonardo Baloa * @date (original) 19-Nov-2019 @@ -175,7 +175,6 @@ static BOOL areInletWaterConditionsAlarmsActive( void ); static BOOL areConductivityAlarmsActive( void ); static void handleDialysateMixing( F32 measuredROFlowRate_mL_min, F32 acidMixingRatio, F32 bicarbMixingRatio ); -static void setFillInfoToRTCRAM( void ); static BOOL isValueWithinPercentRange( F32 testValue, F32 baseValue, F32 percentFactor ); static void publishFillModeData( void ); @@ -819,6 +818,13 @@ result = DG_FILL_MODE_STATE_DELIVER_DIALYSATE; setModeFillStateTransition( result ); } + + // Check if the reservoir is already at the fill target level and if it is, transition to Gen Idle + // This case should only happen if a test configuration is enabled such as expedite pre-treatment + if ( TRUE == hasTargetFillVolumeBeenReached( getInactiveReservoir() ) ) + { + requestNewOperationMode( DG_MODE_GENE ); + } } } @@ -876,8 +882,8 @@ integratedVolumeML.data += getMeasuredROFlowRateWithConcPumpsLPM() * ML_PER_LITER * FLOW_INTEGRATOR; } - usedAcidVolumeML.data += getMeasuredPumpSpeed( CONCENTRATEPUMPS_CP1_ACID ) * FLOW_INTEGRATOR; - usedBicarbVolumeML.data += getMeasuredPumpSpeed( CONCENTRATEPUMPS_CP2_BICARB ) * FLOW_INTEGRATOR; + usedAcidVolumeML.data += getMeasuredPumpSpeedMLPM( CONCENTRATEPUMPS_CP1_ACID ) * FLOW_INTEGRATOR; + usedBicarbVolumeML.data += getMeasuredPumpSpeedMLPM( CONCENTRATEPUMPS_CP2_BICARB ) * FLOW_INTEGRATOR; acidConductivityTotal += acidConduSPerCM; bicarbConductivityTotal += bicarbConduSPerCM; conductivitySampleCount++; @@ -1201,33 +1207,16 @@ /*********************************************************************//** * @brief - * The setFillInfoToRTCRAM function writes the fill information to the RTC - * RAM at the end of each fill. This information is used for dialysate temperature - * control. - * @details Inputs: fillStatus.fillFlowRateAverage - * @details Outputs: none - * @return none - *************************************************************************/ -static void setFillInfoToRTCRAM( void ) -{ - DG_HEATERS_RECORD_T record; - - record.averageFillFlow = fillStatus.fillFlowRateAverageLPM; - - setHeatersInfoRecord( (U08*)&record, sizeof( DG_HEATERS_RECORD_T ) ); -} - -/*********************************************************************//** - * @brief * The publishFillModeData function publishes fill mode data * at the set interval. - * @details Inputs: fillModeDataPublicationTimerCounter, fillModeDataPublishInterval + * @details Inputs: fillModeDataPublicationTimerCounter, fillModeDataPublishInterval, + * dataPublishCounter * @details Outputs: fillModeData * @return none *************************************************************************/ static void publishFillModeData( void ) { - // publish Drain pump data on interval + // publish Fill mode data on interval if ( ++dataPublishCounter >= getU32OverrideValue( &fillModeDataPublishInterval ) ) { DG_FILL_MODE_DATA_T fillModeData; @@ -1241,6 +1230,8 @@ fillModeData.usedBicarbVolumeML = getChemicalUsedVolumeML( BICARB ); fillModeData.integratedVolumeML = getIntegratedVolumeML(); fillModeData.roOnlyModeStatus = (U32)isROOnlyModeEnabled(); + fillModeData.badFillSignal = getCurrentBadFillSignal(); + fillModeData.badFillState = getCurrentGenIdleBadFillState(); broadcastData( MSG_ID_DG_FILL_MODE_DATA, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&fillModeData, sizeof( DG_FILL_MODE_DATA_T ) );