Index: firmware/.launches/DG.launch =================================================================== diff -u -r1f1b66d7340679faed9573eea96f2bec1aa45a86 -rbd80dccfee1f58fdbc49bf05dd000005b105fe26 --- firmware/.launches/DG.launch (.../DG.launch) (revision 1f1b66d7340679faed9573eea96f2bec1aa45a86) +++ firmware/.launches/DG.launch (.../DG.launch) (revision bd80dccfee1f58fdbc49bf05dd000005b105fe26) @@ -8,16 +8,20 @@ + + + + Index: firmware/App/DGCommon.h =================================================================== diff -u -r9f4c7b3eb733b5de7b1667d1b1f43ff3c1ca8b21 -rbd80dccfee1f58fdbc49bf05dd000005b105fe26 --- firmware/App/DGCommon.h (.../DGCommon.h) (revision 9f4c7b3eb733b5de7b1667d1b1f43ff3c1ca8b21) +++ firmware/App/DGCommon.h (.../DGCommon.h) (revision bd80dccfee1f58fdbc49bf05dd000005b105fe26) @@ -48,16 +48,16 @@ #define IGNORE_RO_PUMP_MONITOR 1 #define DISABLE_RO_RATIO_CHECK 1 #define DISABLE_COND_SENSOR_CHECK 1 // Disabled for Tom -// #define DISABLE_WATER_QUALITY_CHECK 1 // Disabled for Tom + #define DISABLE_WATER_QUALITY_CHECK 1 // Disabled for Tom #define DISABLE_RTC_CONFIG 1 #define THD_USING_TRO_CONNECTOR 1 #define DISABLE_FLOW_CHECK_IN_FILL 1 #define IGNORE_CONC_PUMP_IN_HEAT_DISINFECT 1 // #define NEW_FMD_FLOW_SENSOR 1 - #define DISABLE_PRIME_CONCENT_LINES 1 - #define DISABLE_BICARB_CONDUCTIVITY_TEST 1 - #define DISABLE_ACID_CONDUCTIVITY_TEST 1 +// #define DISABLE_PRIME_CONCENT_LINES 1 +// #define DISABLE_BICARB_CONDUCTIVITY_TEST 1 +// #define DISABLE_ACID_CONDUCTIVITY_TEST 1 // Turn these flags on to disable dialysate mixing #define DISABLE_DIALYSATE_CHECK 1 // Disabled for Tom // #define DISABLE_MIXING 1 Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -rfc771c72bf949b023a934843884f1ee1a1530cb7 -rbd80dccfee1f58fdbc49bf05dd000005b105fe26 --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision fc771c72bf949b023a934843884f1ee1a1530cb7) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision bd80dccfee1f58fdbc49bf05dd000005b105fe26) @@ -84,6 +84,11 @@ /// Multiplier to convert flow (mL/min) into volume (mL) for period of general task interval. static const F32 FLOW_INTEGRATOR = ( (F32)TASK_GENERAL_INTERVAL / (F32)( SEC_PER_MIN * MS_PER_SECOND ) ); +static const F32 RO_PUMP_FLUSH_BUBBLES_FLOWS[ RO_PUMP_LOOKUP_TABLE_SIZE ] = { RO_PUMP_400_ML_PER_MIN, ///< Lookup table to determine the desired RO speed in mL/min when flushing bubbles. + RO_PUMP_800_ML_PER_MIN, + RO_PUMP_400_ML_PER_MIN, + RO_PUMP_800_ML_PER_MIN }; + // ********** private data ********** /// Fill conditions status @@ -127,23 +132,20 @@ static F32 totalBicarbConductivity; ///< Total bicarb conductivity over 30 seconds. static F32 totalAcidConductivity; ///< Total acid conductivity over 30 seconds. +static U32 pumpSpeedIndex; ///< Index used to access the desired pump speed in roPumpFlushBubblesSpeed table. + + static OVERRIDE_F32_T usedAcidVolumeML = { 0.0, 0.0, 0.0, 0.0 }; ///< The integrated acid concentration volume has been used in mL. static OVERRIDE_F32_T usedBicarbVolumeML = { 0.0, 0.0, 0.0, 0.0 }; ///< The integrated bicarb concentration volume has been used in mL. static OVERRIDE_U32_T fillModeDataPublishInterval = { FILL_MODE_DATA_PUB_INTERVAL, FILL_MODE_DATA_PUB_INTERVAL, 0, 0 }; ///< Interval (in ms) at which to publish fill mode data to CAN bus. -static F32 roPumpFlushBubblesSpeed[ RO_PUMP_LOOKUP_TABLE_SIZE ] = { RO_PUMP_400_ML_PER_MIN, ///< Lookup table to determine the desired RO speed in mL/min when flushing bubbles. - RO_PUMP_800_ML_PER_MIN, - RO_PUMP_400_ML_PER_MIN, - RO_PUMP_800_ML_PER_MIN }; -static U32 pumpSpeedIndex; ///< Index used to access the desired pump speed in roPumpFlushBubblesSpeed table. - // ********** private function prototypes ********** static DG_FILL_MODE_STATE_T handleTestInletWaterState( void ); -static DG_FILL_MODE_STATE_T handlePrimeConcentrateLines( void ); -static DG_FILL_MODE_STATE_T handleFlushBubbles( void ); +static DG_FILL_MODE_STATE_T handlePrimeConcentrateLinesState( void ); +static DG_FILL_MODE_STATE_T handleFlushBubblesState( void ); static DG_FILL_MODE_STATE_T handleTestBicarbConductivityState( void ); static DG_FILL_MODE_STATE_T handleTestAcidConductivityState( void ); static DG_FILL_MODE_STATE_T handleProduceDialysateState( void ); @@ -265,11 +267,11 @@ break; case DG_FILL_MODE_STATE_PRIME_CONCENTRATE_LINES: - fillState = handlePrimeConcentrateLines(); + fillState = handlePrimeConcentrateLinesState(); break; case DG_FILL_MODE_STATE_FLUSH_BUBBLES: - fillState = handleFlushBubbles(); + fillState = handleFlushBubblesState(); break; case DG_FILL_MODE_STATE_TEST_BICARB_CONDUCTIVITY: @@ -473,13 +475,13 @@ /*********************************************************************//** * @brief - * The handlePrimeConcentrateLines function primes the acid and bicarb + * The handlePrimeConcentrateLinesState function primes the acid and bicarb * lines. * @details Inputs: None * @details Outputs: None * @return the next state *************************************************************************/ -static DG_FILL_MODE_STATE_T handlePrimeConcentrateLines( void ) +static DG_FILL_MODE_STATE_T handlePrimeConcentrateLinesState( void ) { DG_FILL_MODE_STATE_T result = DG_FILL_MODE_STATE_PRIME_CONCENTRATE_LINES; @@ -491,7 +493,7 @@ // Set the RO pump flow rate in according to the roPumpFlushBubblesSpeed table to flush bubbles pumpSpeedIndex = 0; - setROPumpTargetFlowRateLPM( roPumpFlushBubblesSpeed[ pumpSpeedIndex ] / MILLILITERS_PER_LITER, TARGET_RO_PRESSURE_PSI ); + setROPumpTargetFlowRateLPM( RO_PUMP_FLUSH_BUBBLES_FLOWS[ pumpSpeedIndex ] / MILLILITERS_PER_LITER, TARGET_RO_PRESSURE_PSI ); flushBubblesStartTime = getMSTimerCount(); } #endif @@ -503,7 +505,7 @@ /*********************************************************************//** * @brief - * The handleFlushBubbles function removes the bubbles in the RO lines by + * The handleFlushBubblesState function removes the bubbles in the RO lines by * running the RP pump at 400 mL/minute for 2 seconds 0 * then 800 mL/minute for 2 seconds 1 * then 400 mL/minute for 2 seconds 2 @@ -512,15 +514,15 @@ * @details Outputs: request RO pump flow rate in mL/minute * @return the next state *************************************************************************/ -static DG_FILL_MODE_STATE_T handleFlushBubbles( void ) +static DG_FILL_MODE_STATE_T handleFlushBubblesState( void ) { DG_FILL_MODE_STATE_T result = DG_FILL_MODE_STATE_FLUSH_BUBBLES; if ( TRUE == didTimeout( flushBubblesStartTime, FLUSH_BUBBLES_PUMP_TIME_OUT_MS ) ) { - if ( ++pumpSpeedIndex < RO_PUMP_LOOKUP_TABLE_SIZE ) + if ( pumpSpeedIndex < RO_PUMP_LOOKUP_TABLE_SIZE ) { - setROPumpTargetFlowRateLPM( roPumpFlushBubblesSpeed[ pumpSpeedIndex ] / MILLILITERS_PER_LITER, TARGET_RO_PRESSURE_PSI ); + setROPumpTargetFlowRateLPM( RO_PUMP_FLUSH_BUBBLES_FLOWS[ pumpSpeedIndex++ ] / MILLILITERS_PER_LITER, TARGET_RO_PRESSURE_PSI ); flushBubblesStartTime = getMSTimerCount(); } else @@ -569,9 +571,9 @@ requestConcentratePumpOff( CONCENTRATEPUMPS_CP2_BICARB ); totalBicarbConductivity = 0.0; totalAcidConductivity = 0.0; - averageBicarbConductivity = 0.0; - averageAcidConductivity = 0.0; - pctDiffInConductivity = 0.0; + //averageBicarbConductivity = 0.0; + //averageAcidConductivity = 0.0; + //pctDiffInConductivity = 0.0; bicarbConductivitySampleCount = 0; acidConductivitySampleCount = 0; #endif @@ -642,8 +644,8 @@ } else { - SET_ALARM_WITH_1_F32_DATA( ALARM_ID_ACID_CONDUCTIVITY_OUT_OF_RANGE, averageAcidConductivity ); - requestNewOperationMode( DG_MODE_GENE ); + //SET_ALARM_WITH_1_F32_DATA( ALARM_ID_ACID_CONDUCTIVITY_OUT_OF_RANGE, averageAcidConductivity ); + //requestNewOperationMode( DG_MODE_GENE ); } } Index: firmware/App/Modes/ModeGenIdle.c =================================================================== diff -u -r4d4223c4fd424a65a12c70b123cbad43d844f4cd -rbd80dccfee1f58fdbc49bf05dd000005b105fe26 --- firmware/App/Modes/ModeGenIdle.c (.../ModeGenIdle.c) (revision 4d4223c4fd424a65a12c70b123cbad43d844f4cd) +++ firmware/App/Modes/ModeGenIdle.c (.../ModeGenIdle.c) (revision bd80dccfee1f58fdbc49bf05dd000005b105fe26) @@ -54,8 +54,8 @@ // ********** private data ********** static DG_GEN_IDLE_MODE_STATE_T genIdleState; ///< Currently active generation idle state. -static DG_GEN_IDLE_MODE_BAD_FILL_STATE_T badFillState = DG_HANDLE_BAD_FILL_STATE_START; ///< Initialize bad fill sub-state. -static U32 hdLostCommStartTime_ms = 0; ///< Lost communication with HD start time in ms. +static DG_GEN_IDLE_MODE_BAD_FILL_STATE_T badFillState; ///< Initialize bad fill sub-state. +static U32 hdLostCommStartTime_ms; ///< Lost communication with HD start time in ms. static U32 badFillSubstatesPublicationTimerCounter; ///< Used to schedule bad fill sub-states publication to CAN bus. static U32 targetFillVolumeML; ///< Save the target fill volume before calling startFillCmd(). static BOOL handleBadFillFlag; ///< Internal signal flag to handle bad fill. @@ -86,11 +86,11 @@ *************************************************************************/ void initGenIdleMode( void ) { - genIdleState = DG_GEN_IDLE_MODE_STATE_START; - + genIdleState = DG_GEN_IDLE_MODE_STATE_START; + badFillState = DG_HANDLE_BAD_FILL_STATE_START; hdLostCommStartTime_ms = 0; - targetFillVolumeML = 0; - handleBadFillFlag = FALSE; + targetFillVolumeML = 0; + handleBadFillFlag = FALSE; } /*********************************************************************//** @@ -431,7 +431,11 @@ // publish bad fill sub-states on interval if ( ++badFillSubstatesPublicationTimerCounter >= getU32OverrideValue( &badFillSubstatesPublishInterval ) ) { - broadcastData( MSG_ID_DG_BAD_FILL_SUB_STATE, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&badFillState, sizeof( U32 ) ); + GEN_IDLE_BAD_FILL_STATE data; + + data.badFillState = (U32)badFillState; + + broadcastData( MSG_ID_DG_BAD_FILL_SUB_STATE, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&data, sizeof( GEN_IDLE_BAD_FILL_STATE ) ); badFillSubstatesPublicationTimerCounter = 0; } } Index: firmware/App/Modes/ModeGenIdle.h =================================================================== diff -u -r773bd9e1eebab013afa0b303231be73e8016c84c -rbd80dccfee1f58fdbc49bf05dd000005b105fe26 --- firmware/App/Modes/ModeGenIdle.h (.../ModeGenIdle.h) (revision 773bd9e1eebab013afa0b303231be73e8016c84c) +++ firmware/App/Modes/ModeGenIdle.h (.../ModeGenIdle.h) (revision bd80dccfee1f58fdbc49bf05dd000005b105fe26) @@ -31,6 +31,12 @@ // ********** public definitions ********** +/// Gen Idle bad states data structure +typedef struct +{ + U32 badFillState; ///< Gen Idle bad fill substate. +} GEN_IDLE_BAD_FILL_STATE; + // ********** public function prototypes ********** void initGenIdleMode( void ); // initialize this module