Index: firmware/App/Controllers/DGInterface.c =================================================================== diff -u -rb31eee6a3b7c95cf1392ad2cef7b7f9775fb7bd1 -r427b37ad929a8d88b5fcb9ae21a4f4146ffd2fef --- firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision b31eee6a3b7c95cf1392ad2cef7b7f9775fb7bd1) +++ firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 427b37ad929a8d88b5fcb9ae21a4f4146ffd2fef) @@ -804,14 +804,16 @@ * @param resID ID of reservoir to set as active (reservoir for HD to draw from) * @return none *************************************************************************/ -void cmdSetDGActiveReservoir( DG_RESERVOIR_ID_T resID ) +void cmdSetDGActiveReservoir( DG_SWITCH_RSRVRS_CMD_T *cmd ) { + DG_RESERVOIR_ID_T resID = (DG_RESERVOIR_ID_T)cmd->reservoirID; + if ( resID < NUM_OF_DG_RESERVOIRS ) { - dgActiveReservoirSet = resID; + dgActiveReservoirSet = resID; dgCmdResp[ DG_CMD_SWITCH_RESERVOIR ].commandID = DG_CMD_NONE; - sendDGSwitchReservoirCommand( (U32)resID ); + sendDGSwitchReservoirCommand( cmd ); } else { Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -ref6283257df7c1f993d58fb934da57ea3e0a7067 -r427b37ad929a8d88b5fcb9ae21a4f4146ffd2fef --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision ef6283257df7c1f993d58fb934da57ea3e0a7067) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 427b37ad929a8d88b5fcb9ae21a4f4146ffd2fef) @@ -7,8 +7,8 @@ * * @file PresOccl.c * -* @author (last) Dara Navaei -* @date (last) 12-Oct-2022 +* @author (last) Michael Garthwaite +* @date (last) 21-Oct-2022 * * @author (original) Sean * @date (original) 15-Jan-2020 @@ -107,7 +107,10 @@ #define SHIFT_14_BITS 14 ///< Shift 14 bits. #define PRES_SENSORS_FPGA_ERROR_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Occlusion sensor FPGA error timeout in milliseconds. - + +#ifndef _RELEASE_ +#define MIN_OCCLUSION_COUNTS_V3 1500 ///< Minimum occlusion count for v3 hardware +#endif /// Defined states for the pressure and occlusion monitor state machine. typedef enum PresOccl_States { @@ -609,6 +612,14 @@ BOOL outOfRange = ( bpOccl < MIN_OCCLUSION_COUNTS || bpOccl > MAX_OCCLUSION_COUNTS ? TRUE : FALSE ); #ifndef _RELEASE_ + if( HW_CONFIG_BETA == getHardwareConfigStatus() ) + { + outOfRange = (( bpOccl < MIN_OCCLUSION_COUNTS_V3 || bpOccl > MAX_OCCLUSION_COUNTS ? TRUE : FALSE )); + } +#endif + + +#ifndef _RELEASE_ if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_PRESSURE_CHECKS ) != SW_CONFIG_ENABLE_VALUE ) #endif { Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -rb31eee6a3b7c95cf1392ad2cef7b7f9775fb7bd1 -r427b37ad929a8d88b5fcb9ae21a4f4146ffd2fef --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision b31eee6a3b7c95cf1392ad2cef7b7f9775fb7bd1) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 427b37ad929a8d88b5fcb9ae21a4f4146ffd2fef) @@ -960,9 +960,14 @@ if ( TRUE == fillReservoirOneStartRequested ) { - fillReservoirOneStartRequested = FALSE; - cmdSetDGActiveReservoir( DG_RESERVOIR_2 ); - state = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; + DG_SWITCH_RSRVRS_CMD_T rsrvrCmd; + + rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_2; + rsrvrCmd.useLastTrimmerHeaterDC = FALSE; + fillReservoirOneStartRequested = FALSE; + state = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; + + cmdSetDGActiveReservoir( &rsrvrCmd ); } return state; @@ -1167,12 +1172,22 @@ else #endif { + DG_SWITCH_RSRVRS_CMD_T rsrvrCmd; + + rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_1; + rsrvrCmd.useLastTrimmerHeaterDC = FALSE; reservoirFlushedStatus[ DG_RESERVOIR_1 ] = TRUE; + cmdSetDGActiveReservoir( &rsrvrCmd ); } } else { + DG_SWITCH_RSRVRS_CMD_T rsrvrCmd; + + rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_2; + rsrvrCmd.useLastTrimmerHeaterDC = FALSE; reservoirFlushedStatus[ DG_RESERVOIR_2 ] = TRUE; + cmdSetDGActiveReservoir( &rsrvrCmd ); } } } Index: firmware/App/Modes/Prime.c =================================================================== diff -u -rb31eee6a3b7c95cf1392ad2cef7b7f9775fb7bd1 -r427b37ad929a8d88b5fcb9ae21a4f4146ffd2fef --- firmware/App/Modes/Prime.c (.../Prime.c) (revision b31eee6a3b7c95cf1392ad2cef7b7f9775fb7bd1) +++ firmware/App/Modes/Prime.c (.../Prime.c) (revision 427b37ad929a8d88b5fcb9ae21a4f4146ffd2fef) @@ -589,8 +589,13 @@ if ( TRUE == getReservoirFillStatus( DG_RESERVOIR_1 ) ) { - cmdSetDGActiveReservoir( DG_RESERVOIR_1 ); + DG_SWITCH_RSRVRS_CMD_T rsrvrCmd; + rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_1; + rsrvrCmd.useLastTrimmerHeaterDC = FALSE; + + cmdSetDGActiveReservoir( &rsrvrCmd ); + if ( TRUE == hasDGCompletedReservoirSwitch() ) { U32 dialyzerDialysateVolume = getDialyzerDialysateVolume(); @@ -770,8 +775,13 @@ if ( TRUE == getReservoirFillStatus( DG_RESERVOIR_2 ) ) { - cmdSetDGActiveReservoir( DG_RESERVOIR_2 ); + DG_SWITCH_RSRVRS_CMD_T rsrvrCmd; + rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_1; + rsrvrCmd.useLastTrimmerHeaterDC = FALSE; + + cmdSetDGActiveReservoir( &rsrvrCmd ); + if ( TRUE == hasDGCompletedReservoirSwitch() ) { signalBloodPumpHardStop(); Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -rb31eee6a3b7c95cf1392ad2cef7b7f9775fb7bd1 -r427b37ad929a8d88b5fcb9ae21a4f4146ffd2fef --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision b31eee6a3b7c95cf1392ad2cef7b7f9775fb7bd1) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 427b37ad929a8d88b5fcb9ae21a4f4146ffd2fef) @@ -1686,9 +1686,9 @@ { F32 resOneDiffAfterDisplacement = reservoirVolume[ DG_RESERVOIR_1 ] - getReservoirWeightLargeFilter( DG_RESERVOIR_1 ); F32 resTwoDiffAfterDisplacement = getReservoirWeightLargeFilter( DG_RESERVOIR_2 ) - reservoirVolume[ DG_RESERVOIR_2 ]; - F32 averageDisp = ( resOneDiffAfterDisplacement + resTwoDiffAfterDisplacement ) / 2.0; + F32 averageDisp = ( resOneDiffAfterDisplacement + resTwoDiffAfterDisplacement ) / 2.0F; F32 integratedVolumeDiff = fabs( fmdIntegratedVolume - averageDisp ); - F32 integratedVolumeToTargetPercent = fabs( 1.0 - ( fmdIntegratedVolume / averageDisp ) ); + F32 integratedVolumeToTargetPercent = fabs( 1.0F - ( fmdIntegratedVolume / averageDisp ) ); F32 integrateVolumeToleranceG = WET_SELF_TEST_INTEGRATED_VOLUME_TOLERANCE; #ifndef _RELEASE_