Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -r8ed20540782ec6b81fc870c33c7a7e6f589a6ff3 -r4d635c390c184a405bdc96e56ce35505fe3868c5 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision 8ed20540782ec6b81fc870c33c7a7e6f589a6ff3) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision 4d635c390c184a405bdc96e56ce35505fe3868c5) @@ -302,15 +302,17 @@ * @details Inputs: valvesStatus * @details Outputs: valvesStatus * @param valve that is set to be homed + * @param force flag indicating whether homing should be forced even if already homed + * @param cartridge flag indicating whether a cartridge may be present requiring a more lax homing * @return TRUE if the homing command accepted otherwise, FALSE *************************************************************************/ -BOOL homeValve( VALVE_T valve ) +BOOL homeValve( VALVE_T valve, BOOL force, BOOL cartridge ) { BOOL result = FALSE; if ( valve < NUM_OF_VALVES ) { // If haven't already homed the valves, home the valves - if ( valvesStatus[ valve ].hasValveBeenHomed != TRUE ) + if ( ( valvesStatus[ valve ].hasValveBeenHomed != TRUE ) || ( VALVE_FORCE_HOME == force ) ) { valvesStatus[ valve ].hasHomingBeenRequested = TRUE; } Index: firmware/App/Controllers/Valves.h =================================================================== diff -u -r19f13e67288117e7f81c1245a75cc6b5f8aaf899 -r4d635c390c184a405bdc96e56ce35505fe3868c5 --- firmware/App/Controllers/Valves.h (.../Valves.h) (revision 19f13e67288117e7f81c1245a75cc6b5f8aaf899) +++ firmware/App/Controllers/Valves.h (.../Valves.h) (revision 4d635c390c184a405bdc96e56ce35505fe3868c5) @@ -53,6 +53,11 @@ NUM_OF_VALVES ///< Number of valves } VALVE_T; +#define VALVE_NO_FORCE_HOME FALSE ///< Do not re-home valve if already homed - just go to position A instead +#define VALVE_FORCE_HOME TRUE ///< Force valve to home even if already homed +#define VALVE_NO_CARTRIDGE_PRESENT FALSE ///< No cartridge should be present, so insist homed positions to be near where expected +#define VALVE_CARTRIDGE_MAY_BE_PRESENT TRUE ///< A cartridge may be present, so allow for homed positions to be further away from where expected + #pragma pack(push, 1) /// HD valves broadcast data typedef struct @@ -90,7 +95,7 @@ void execValves( void ); -BOOL homeValve( VALVE_T valve ); +BOOL homeValve( VALVE_T valve, BOOL force, BOOL cartridge ); BOOL setValvePosition( VALVE_T valve, VALVE_POSITION_T position ); Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -rc1b9ac0dbf2196280895d2e440dd7ac288ac8424 -r4d635c390c184a405bdc96e56ce35505fe3868c5 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision c1b9ac0dbf2196280895d2e440dd7ac288ac8424) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 4d635c390c184a405bdc96e56ce35505fe3868c5) @@ -669,7 +669,7 @@ // Home pumps and valves for ( valve = VDI; valve < NUM_OF_VALVES; ++valve ) { - homeValve( valve ); + homeValve( valve, VALVE_NO_FORCE_HOME, VALVE_CARTRIDGE_MAY_BE_PRESENT ); } homeBloodPump(); homeDialInPump(); Index: firmware/App/Modes/Prime.c =================================================================== diff -u -rc1b9ac0dbf2196280895d2e440dd7ac288ac8424 -r4d635c390c184a405bdc96e56ce35505fe3868c5 --- firmware/App/Modes/Prime.c (.../Prime.c) (revision c1b9ac0dbf2196280895d2e440dd7ac288ac8424) +++ firmware/App/Modes/Prime.c (.../Prime.c) (revision 4d635c390c184a405bdc96e56ce35505fe3868c5) @@ -447,7 +447,7 @@ setValvePosition( VDI, VALVE_POSITION_C_CLOSE ); setValvePosition( VDO, VALVE_POSITION_C_CLOSE ); setValvePosition( VBA, VALVE_POSITION_C_CLOSE ); - setValvePosition( VBV, VALVE_POSITION_C_CLOSE ); + setValvePosition( VBV, VALVE_POSITION_B_OPEN ); // Allow fluid to get to VBA per DEN-14171 setValveAirTrap( STATE_OPEN ); signalDialOutPumpHardStop(); Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -rc1b9ac0dbf2196280895d2e440dd7ac288ac8424 -r4d635c390c184a405bdc96e56ce35505fe3868c5 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision c1b9ac0dbf2196280895d2e440dd7ac288ac8424) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 4d635c390c184a405bdc96e56ce35505fe3868c5) @@ -754,7 +754,7 @@ for ( valve = VDI; valve < NUM_OF_VALVES; ++valve ) { - homeValve( valve ); + homeValve( valve, VALVE_FORCE_HOME, VALVE_NO_CARTRIDGE_PRESENT ); } if ( TRUE == doesAlarmStatusIndicateStop() ) Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -rc1b9ac0dbf2196280895d2e440dd7ac288ac8424 -r4d635c390c184a405bdc96e56ce35505fe3868c5 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision c1b9ac0dbf2196280895d2e440dd7ac288ac8424) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 4d635c390c184a405bdc96e56ce35505fe3868c5) @@ -4820,7 +4820,7 @@ U32 valve; memcpy( &valve, message->payload, sizeof(U32) ); - homeValve( (VALVE_T)valve ); + homeValve( (VALVE_T)valve, VALVE_FORCE_HOME, VALVE_NO_CARTRIDGE_PRESENT ); result = TRUE; }