Index: firmware/App/Controllers/BalancingChamber.c =================================================================== diff -u -r29ac3bdd9dc12a72ad819234914186843625d8e1 -rbdee7caad13de484d50de4089497725c44a43c74 --- firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision 29ac3bdd9dc12a72ad819234914186843625d8e1) +++ firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision bdee7caad13de484d50de4089497725c44a43c74) @@ -207,7 +207,12 @@ // Fill bicarb chamber once every 60secs. if ( bicarbChamberPeriodicFillCounter >= BICARB_CHAMBER_PERIODIC_FILL_TIME ) { - setBicarbChamberFillRequested(); + if ( FALSE == setBicarbChamberFillRequested() ) + { + // TODO + //drybicart state machines are combined and so this is not an issue in future + //set alarm ? + } bicarbChamberPeriodicFillCounter = 0; } #endif Index: firmware/App/Controllers/DryBiCart.c =================================================================== diff -u -r07d08d88c15fdce1e46ec341034c909807694f0a -rbdee7caad13de484d50de4089497725c44a43c74 --- firmware/App/Controllers/DryBiCart.c (.../DryBiCart.c) (revision 07d08d88c15fdce1e46ec341034c909807694f0a) +++ firmware/App/Controllers/DryBiCart.c (.../DryBiCart.c) (revision bdee7caad13de484d50de4089497725c44a43c74) @@ -304,7 +304,6 @@ if ( TRUE == getU32OverrideValue( &bicarbChamberFillRequested ) ) { bicarbChamberFillExecState = BICARB_CARTRIDGE_FILL_WATER_START_STATE; - bicarbChamberFillRequested.data = FALSE; } break; @@ -399,11 +398,19 @@ * flag value to be True. * @details \b Inputs: none * @details \b Outputs: bicarbChamberFillRequested - * @return none. + * @return TRUE if successful, FALSE if not. *************************************************************************/ -void setBicarbChamberFillRequested( void ) +BOOL setBicarbChamberFillRequested( void ) { - bicarbChamberFillRequested.data = TRUE; + BOOL result = FALSE; + + if ( FALSE == dryBiCartFillRequested.data && FALSE == dryBiCartDrainRequested.data ) + { + bicarbChamberFillRequested.data = TRUE; + result = TRUE; + } + + return result; } /*********************************************************************//** @@ -412,11 +419,19 @@ * flag value to be True. * @details \b Inputs: none * @details \b Outputs: dryBiCartFillRequested - * @return none. + * @return TRUE if successful, FALSE if not. *************************************************************************/ -void setBicartFillRequested( void ) +BOOL setBicartFillRequested( void ) { - dryBiCartFillRequested.data = TRUE; + BOOL result = FALSE; + + if( FALSE == bicarbChamberFillRequested.data && FALSE == dryBiCartDrainRequested.data ) + { + dryBiCartFillRequested.data = TRUE; + result = TRUE; + } + + return result; } /*********************************************************************//** @@ -425,11 +440,19 @@ * flag value to be True. * @details \b Inputs: none * @details \b Outputs: dryBiCartDrainRequested - * @return none. + * @return TRUE if successful, FALSE if not. *************************************************************************/ -void setBicartDrainRequested( void ) +BOOL setBicartDrainRequested( void ) { - dryBiCartDrainRequested.data = TRUE; + BOOL result = FALSE; + + if( FALSE == bicarbChamberFillRequested.data && FALSE == dryBiCartFillRequested.data ) + { + dryBiCartDrainRequested.data = TRUE; + result = TRUE; + } + + return result; } /*********************************************************************//** @@ -831,6 +854,8 @@ setValveState( D85_VALV, VALVE_STATE_CLOSED ); setValveState( D64_VALV, VALVE_STATE_CLOSED); + bicarbChamberFillRequested.data = FALSE; + state = BICARB_CHAMBER_START_STATE; } Index: firmware/App/Controllers/DryBiCart.h =================================================================== diff -u -r07d08d88c15fdce1e46ec341034c909807694f0a -rbdee7caad13de484d50de4089497725c44a43c74 --- firmware/App/Controllers/DryBiCart.h (.../DryBiCart.h) (revision 07d08d88c15fdce1e46ec341034c909807694f0a) +++ firmware/App/Controllers/DryBiCart.h (.../DryBiCart.h) (revision bdee7caad13de484d50de4089497725c44a43c74) @@ -57,9 +57,9 @@ U32 execBicarbChamberFillMode( void ); U32 execDryBicartDrainMode( void ); void execDryBicart( void ); -void setBicarbChamberFillRequested( void ); -void setBicartFillRequested( void ); -void setBicartDrainRequested( void ); +BOOL setBicarbChamberFillRequested( void ); +BOOL setBicartFillRequested( void ); +BOOL setBicartDrainRequested( void ); DRY_BICART_FILL_EXEC_STATE_T getCurrentDryBiCartFillExecState( void );