Index: firmware/App/Controllers/BalancingChamber.c =================================================================== diff -u -re0fc678329b0cb25dd76fa5e23cc1f487851f0ec -r6bbe6e35f9c378ad8dd5be2edebb1cc1acd23d37 --- firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision e0fc678329b0cb25dd76fa5e23cc1f487851f0ec) +++ firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision 6bbe6e35f9c378ad8dd5be2edebb1cc1acd23d37) @@ -60,6 +60,8 @@ static U32 balChamberDataPublicationTimerCounter; ///< Used to schedule balancing chamber data publication to CAN bus. static OVERRIDE_U32_T balChamberDataPublishInterval; ///< Balancing chamber data publish interval. static BOOL balanceChamberSwitchingOnly; ///< Balancing chamber switching without any pressure check and dosing delivery. +static OVERRIDE_F32_T acidDoseVolume; ///< Acid concentrate volume in ml ( overrideable). +static OVERRIDE_F32_T bicarbDoseVolume; ///< Bicarb concentrate volume in ml ( overrideable). // ********** private function prototypes ********** @@ -90,6 +92,14 @@ balChamberDataPublishInterval.ovData = BAL_CHAMBER_DATA_PUBLISH_INTERVAL; balChamberDataPublishInterval.ovInitData = 0; balChamberDataPublishInterval.override = OVERRIDE_RESET; + acidDoseVolume.data = DEFAULT_ACID_VOLUME_ML; + acidDoseVolume.ovData = DEFAULT_ACID_VOLUME_ML; + acidDoseVolume.ovInitData = 0.0F; + acidDoseVolume.override = OVERRIDE_RESET; + bicarbDoseVolume.data = DEFAULT_BICARB_VOLUME_ML; + bicarbDoseVolume.ovData = DEFAULT_BICARB_VOLUME_ML; + bicarbDoseVolume.ovInitData = 0.0F; + bicarbDoseVolume.override = OVERRIDE_RESET; balanceChamberSwitchingOnly = FALSE; balChamberSwitchingPeriod = 0; balChamberValveClosePeriod = 0; @@ -361,7 +371,8 @@ F32 freshDialPressure = getFilteredPressure( D18_PRES ); F32 spentDialPressure = getFilteredPressure( D51_PRES ); - + F32 acidVolume = getF32OverrideValue( &acidDoseVolume ); + F32 bicarbVolume = getF32OverrideValue( &bicarbDoseVolume ); // Check fresh and spent dialysate pressure in range or BC switch only flag set //TODO : comment the pressure check if ( 1 ) @@ -379,8 +390,8 @@ if ( FALSE == getBalChamberSwitchingOnlyStatus() ) { // start acid and bicarb pump with the expected quantity - setConcentratePumpTargetSpeed( D11_PUMP, CONCENTRATE_PUMP_MAX_SPEED, TEST_ACID_VOLUME_ML ); - setConcentratePumpTargetSpeed( D10_PUMP, CONCENTRATE_PUMP_MAX_SPEED, TEST_BICARB_VOLUME_ML ); + setConcentratePumpTargetSpeed( D11_PUMP, CONCENTRATE_PUMP_MAX_SPEED, acidVolume ); + setConcentratePumpTargetSpeed( D10_PUMP, CONCENTRATE_PUMP_MAX_SPEED, bicarbVolume ); requestConcentratePumpOn( D11_PUMP ); requestConcentratePumpOn( D10_PUMP ); } @@ -500,6 +511,8 @@ F32 freshDialPressure = getFilteredPressure( D18_PRES ); F32 spentDialPressure = getFilteredPressure( D51_PRES ); + F32 acidVolume = getF32OverrideValue( &acidDoseVolume ); + F32 bicarbVolume = getF32OverrideValue( &bicarbDoseVolume ); // Check fresh and spent dialysate pressure in range //TODO : comment the pressure check @@ -518,8 +531,8 @@ if ( FALSE == getBalChamberSwitchingOnlyStatus() ) { // start acid and bicarb pump with the expected quantity - setConcentratePumpTargetSpeed( D11_PUMP, CONCENTRATE_PUMP_MAX_SPEED, TEST_ACID_VOLUME_ML ); - setConcentratePumpTargetSpeed( D10_PUMP, CONCENTRATE_PUMP_MAX_SPEED, TEST_BICARB_VOLUME_ML ); + setConcentratePumpTargetSpeed( D11_PUMP, CONCENTRATE_PUMP_MAX_SPEED, acidVolume ); + setConcentratePumpTargetSpeed( D10_PUMP, CONCENTRATE_PUMP_MAX_SPEED, bicarbVolume ); requestConcentratePumpOn( D11_PUMP ); requestConcentratePumpOn( D10_PUMP ); } @@ -757,6 +770,40 @@ /*********************************************************************//** * @brief + * The testAcidDoseVolumeOverride function sets the override value + * of the acid concentrate dosing volume. + * @details Inputs: acidDoseVolume + * @details Outputs: acidDoseVolume + * @param message Override message from Dialin which includes the override + * value to override the acid concentrate dosing volume. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testAcidDoseVolumeOverride( MESSAGE_T *message ) +{ + BOOL result = f32Override( message, &acidDoseVolume ); + + return result; +} + +/*********************************************************************//** + * @brief + * The testBicarbDoseVolumeOverride function sets the override value + * of the bicarb concentrate dosing volume. + * @details Inputs: bicarbDoseVolume + * @details Outputs: bicarbDoseVolume + * @param message Override message from Dialin which includes the override + * value to override the bicarb concentrate dosing volume. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testBicarbDoseVolumeOverride( MESSAGE_T *message ) +{ + BOOL result = f32Override( message, &bicarbDoseVolume ); + + return result; +} + +/*********************************************************************//** + * @brief * The testBCSwitchOnlyStartStopOverride function starts/stops balancing * chamber switching only without dosing delivery and pressure check condition. * @details \b Inputs: tester logged in Index: firmware/App/Controllers/BalancingChamber.h =================================================================== diff -u -ra414ca5b1458b0800e32672eeb7545a9dd575002 -r6bbe6e35f9c378ad8dd5be2edebb1cc1acd23d37 --- firmware/App/Controllers/BalancingChamber.h (.../BalancingChamber.h) (revision a414ca5b1458b0800e32672eeb7545a9dd575002) +++ firmware/App/Controllers/BalancingChamber.h (.../BalancingChamber.h) (revision 6bbe6e35f9c378ad8dd5be2edebb1cc1acd23d37) @@ -31,29 +31,29 @@ // ********** public definitions ********** -#define FRESH_DIAL_PRESSURE_MIN_PSIG 21.0F ///< Minimum fresh dialysate pressure (PDf) limit for balancing chamber fill operations. -#define FRESH_DIAL_PRESSURE_MAX_PSIG 27.0F ///< Maximum fresh dialysate pressure (PDf) limit for balancing chamber fill operations. -#define SPENT_DIAL_PRESSURE_MIN_PSIG 27.0F ///< Minimum spent dialysate pressure (PDs) limit for balancing chamber fill operations. -#define SPENT_DIAL_PRESSURE_MAX_PSIG 31.0F ///< Maximum spent dialysate pressure (PDs) limit for balancing chamber fill operations. +#define FRESH_DIAL_PRESSURE_MIN_PSIG 21.0F ///< Minimum fresh dialysate pressure (D18) limit for balancing chamber fill operations. +#define FRESH_DIAL_PRESSURE_MAX_PSIG 27.0F ///< Maximum fresh dialysate pressure (D18) limit for balancing chamber fill operations. +#define SPENT_DIAL_PRESSURE_MIN_PSIG 27.0F ///< Minimum spent dialysate pressure (D51) limit for balancing chamber fill operations. +#define SPENT_DIAL_PRESSURE_MAX_PSIG 31.0F ///< Maximum spent dialysate pressure (D51) limit for balancing chamber fill operations. /// balancing chamber data structure typedef struct { - U32 balChamberExecState; ///< Balancing chamber execution state - U32 balChamberSWState; ///< Balancing chamber switching state (state 1 or state 2) - F32 balChamberSWFreq; ///< Balancing chamber switching frequency - U32 balChamberSwPeriod; ///< Balancing chamber switching period - BOOL isBalChamberFillInProgress; ///< Whether balancing chamber fill in progress or not - U32 currentBalChamberSwitchingCounter; ///< Current balancing chamber switching counter - BOOL isPressureStalbilizedDuringFill; ///< Whether pressure stabilized during fill or not - BOOL balChamberSWOnlyState; ///< Balancing chamber switching only status ( On/Off) + U32 balChamberExecState; ///< Balancing chamber execution state + U32 balChamberSWState; ///< Balancing chamber switching state (state 1 or state 2) + F32 balChamberSWFreq; ///< Balancing chamber switching frequency + U32 balChamberSwPeriod; ///< Balancing chamber switching period + BOOL isBalChamberFillInProgress; ///< Whether balancing chamber fill in progress or not + U32 currentBalChamberSwitchingCounter; ///< Current balancing chamber switching counter + BOOL isPressureStalbilizedDuringFill; ///< Whether pressure stabilized during fill or not + BOOL balChamberSWOnlyState; ///< Balancing chamber switching only status ( On/Off) } BAL_CHAMBER_DATA_T; // ********** public function prototypes ********** -void initBalanceChamber( void ); // Initialize balancing chamber unit -void transitionToBalChamberFill( void ); // Prepares for transition to balancing chamber execution -U32 execBalancingChamberControl( void ); // Execute the balancing chamber state machine +void initBalanceChamber( void ); // Initialize balancing chamber unit +void transitionToBalChamberFill( void ); // Prepares for transition to balancing chamber execution +U32 execBalancingChamberControl( void ); // Execute the balancing chamber state machine void updateBalChamberSwitchingPeriod( void ); // Update the balancing chamber switching period BAL_CHAMBER_EXEC_STATE_T getCurrentBalancingChamberExecState( void ); // Get the current state of the balancing chamber execution @@ -69,6 +69,8 @@ BOOL testDDBalChamberDataPublishIntervalOverride( MESSAGE_T *message ); // To override the balancing chamber data publish interval BOOL testBalChamberSwFreqOverride( MESSAGE_T *message ); // To override the balancing chamber switching frequency BOOL testBCSwitchOnlyStartStopOverride( MESSAGE_T *message ); // To override the balancning chamber switching only start/stop control +BOOL testAcidDoseVolumeOverride( MESSAGE_T *message ); // To override acid dosing volume +BOOL testBicarbDoseVolumeOverride( MESSAGE_T *message ); // To override bicarb dosing volume /**@}*/ Index: firmware/App/Controllers/ConcentratePumps.h =================================================================== diff -u -re0fc678329b0cb25dd76fa5e23cc1f487851f0ec -r6bbe6e35f9c378ad8dd5be2edebb1cc1acd23d37 --- firmware/App/Controllers/ConcentratePumps.h (.../ConcentratePumps.h) (revision e0fc678329b0cb25dd76fa5e23cc1f487851f0ec) +++ firmware/App/Controllers/ConcentratePumps.h (.../ConcentratePumps.h) (revision 6bbe6e35f9c378ad8dd5be2edebb1cc1acd23d37) @@ -32,8 +32,8 @@ // ********** public definitions ********** #define CONCENTRATE_PUMP_MAX_SPEED 48.0F ///< Maximum speed for concentrate pump in mL/min -#define TEST_ACID_VOLUME_ML 0.67F ///< Acid concentrate volume in ml. -#define TEST_BICARB_VOLUME_ML 1.15F ///< Bicarb concentrate volume in ml. +#define DEFAULT_ACID_VOLUME_ML 0.67F ///< Acid concentrate volume in ml. +#define DEFAULT_BICARB_VOLUME_ML 1.15F ///< Bicarb concentrate volume in ml. #define PARK_CONC_PUMPS TRUE ///< For park parameter to requestConcentratePumpOff(). #define NO_PARK_CONC_PUMPS FALSE ///< For park parameter to requestConcentratePumpOff(). Index: firmware/App/Controllers/PistonPumpControl.c =================================================================== diff -u -re0fc678329b0cb25dd76fa5e23cc1f487851f0ec -r6bbe6e35f9c378ad8dd5be2edebb1cc1acd23d37 --- firmware/App/Controllers/PistonPumpControl.c (.../PistonPumpControl.c) (revision e0fc678329b0cb25dd76fa5e23cc1f487851f0ec) +++ firmware/App/Controllers/PistonPumpControl.c (.../PistonPumpControl.c) (revision 6bbe6e35f9c378ad8dd5be2edebb1cc1acd23d37) @@ -101,8 +101,8 @@ pistonPumpCycleCount[ PISTONPUMPS_ACID ] = 0; pistonPumpCycleCount[ PISTONPUMPS_BICARB ] = 0; pistonPumpCycleCount[ PISTONPUMPS_UF ] = 0; - pistonPumpVolumeinMl[ PISTONPUMPS_ACID ] = TEST_ACID_VOLUME_ML; - pistonPumpVolumeinMl[ PISTONPUMPS_BICARB ] = TEST_BICARB_VOLUME_ML; + pistonPumpVolumeinMl[ PISTONPUMPS_ACID ] = DEFAULT_ACID_VOLUME_ML; + pistonPumpVolumeinMl[ PISTONPUMPS_BICARB ] = DEFAULT_BICARB_VOLUME_ML; pistonPumpVolumeinMl[ PISTONPUMPS_UF ] = 0.0F; pistonPumpSetSpeed[ PISTONPUMPS_ACID ] = PISTON_PUMP_NOMINAL_SPEED; pistonPumpSetSpeed[ PISTONPUMPS_BICARB ] = PISTON_PUMP_NOMINAL_SPEED; Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -rf8bb43e62a4d10b64d8b197e372a56adfcfb88b9 -r6bbe6e35f9c378ad8dd5be2edebb1cc1acd23d37 --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision f8bb43e62a4d10b64d8b197e372a56adfcfb88b9) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 6bbe6e35f9c378ad8dd5be2edebb1cc1acd23d37) @@ -515,6 +515,7 @@ if ( ( TRUE == getDialGoodToDeliverStatus() ) && ( FALSE == getTDDialyzerBypass() ) ) { setModeGenDStateTransition( DD_GEND_DIALYSATE_DELIVERY_STATE ); + isDialDeliveryInProgress.data = TRUE; state = DD_GEND_DIALYSATE_DELIVERY_STATE; } @@ -541,6 +542,7 @@ if ( ( FALSE == getDialGoodToDeliverStatus() ) || ( TRUE == getTDDialyzerBypass() ) ) { setModeGenDStateTransition( DD_GEND_PRODUCE_DIALYSATE_STATE ); + isDialDeliveryInProgress.data = FALSE; state = DD_GEND_PRODUCE_DIALYSATE_STATE; } Index: firmware/App/Services/Messaging.c =================================================================== diff -u -re0fc678329b0cb25dd76fa5e23cc1f487851f0ec -r6bbe6e35f9c378ad8dd5be2edebb1cc1acd23d37 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision e0fc678329b0cb25dd76fa5e23cc1f487851f0ec) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 6bbe6e35f9c378ad8dd5be2edebb1cc1acd23d37) @@ -143,6 +143,8 @@ MSG_ID_DD_BC_VALVE_STATES_OVERRIDE_REQUEST, MSG_ID_DD_BC_SWITCH_ONLY_START_STOP_OVERRIDE_REQUEST, MSG_ID_DD_HYD_CHAMBER_TARGET_TEMP_OVERRIDE_REQUEST, + MSG_ID_DD_ACID_DOSING_VOLUME_OVERRIDE_REQUEST, + MSG_ID_DD_BICARB_DOSING_VOLUME_OVERRIDE_REQUEST, //60 #ifdef __PUMPTEST__ MSG_ID_DD_PISTON_PUMP_DATA_PUBLISH_OVERRIDE_REQUEST, MSG_ID_DD_PISTON_PUMP_START_STOP_OVERRIDE_REQUEST, @@ -210,6 +212,8 @@ &testBCValveStatesOverride, &testBCSwitchOnlyStartStopOverride, &testGenDHydChamberFluidTempOverride, + &testAcidDoseVolumeOverride, + &testBicarbDoseVolumeOverride, //60 #ifdef __PUMPTEST__ &testDDPistonPumpControlDataPublishIntervalOverride, &testDDPistonPumpStartStopOverride,