Index: firmware/App/Controllers/BalancingChamber.c =================================================================== diff -u -reaa0ce5fe4890d9c7ff14d14828ea90209c1ad97 -r7d24ef2e6a4130b3a049e6106a0371fc6503271f --- firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision eaa0ce5fe4890d9c7ff14d14828ea90209c1ad97) +++ firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision 7d24ef2e6a4130b3a049e6106a0371fc6503271f) @@ -69,13 +69,17 @@ static OVERRIDE_F32_T acidDoseVolume; ///< Acid concentrate volume in ml ( overrideable). static OVERRIDE_F32_T bicarbDoseVolume; ///< Bicarb concentrate volume in ml ( overrideable). static F32 lastTdDialysateFlowrate; ///< Previous TD dialysate flow rate +static F32 freshDialPressure; ///< Fresh side dialysate pressure +static F32 spentDialPressure; ///< Spent side dialysate pressure // ********** private function prototypes ********** static BAL_CHAMBER_EXEC_STATE_T handleBalChamberState1FillStart( void ); static BAL_CHAMBER_EXEC_STATE_T handleBalChamberConcentrateControl(void); +static BAL_CHAMBER_EXEC_STATE_T handleBalChamberState1ValvesClose( void ); static BAL_CHAMBER_EXEC_STATE_T handleBalChamberState1FillEnd(void); static BAL_CHAMBER_EXEC_STATE_T handleBalChamberState2FillStart( void ); +static BAL_CHAMBER_EXEC_STATE_T handleBalChamberState2ValvesClose( void ); static BAL_CHAMBER_EXEC_STATE_T handleBalChamberState2FillEnd(void); static void publishBalChamberData( void ); static U32 getBalChamberDataPublishInterval( void ); @@ -119,6 +123,8 @@ balChamberFillCompleteStablePressureCounter = 0; isFirstCycleBCSwitchingCompleted = FALSE; isPressureDroppedDuringFill = FALSE; + freshDialPressure = 0.0F; + spentDialPressure = 0.0F; } /*********************************************************************//** @@ -201,6 +207,10 @@ balChamberExecState = handleBalChamberConcentrateControl(); break; + case BAL_CHAMBER_STATE1_VALVES_CLOSE: + balChamberExecState = handleBalChamberState1ValvesClose(); + break; + case BAL_CHAMBER_STATE1_FILL_END: balChamberExecState = handleBalChamberState1FillEnd(); break; @@ -213,6 +223,10 @@ balChamberExecState = handleBalChamberConcentrateControl(); break; + case BAL_CHAMBER_STATE2_VALVES_CLOSE: + balChamberExecState = handleBalChamberState2ValvesClose(); + break; + case BAL_CHAMBER_STATE2_FILL_END: balChamberExecState = handleBalChamberState2FillEnd(); break; @@ -355,7 +369,6 @@ setValveState( D22_VALV, VALVE_STATE_OPEN ); } - /*********************************************************************//** * @brief * The valveControlForBCFreshSideOnlyOpenState function opens the fresh side @@ -398,10 +411,10 @@ isPressureDroppedDuringFill = FALSE; balChamberSWState = BAL_CHAMBER_SW_STATE1; - F32 freshDialPressure = getFilteredPressure( D18_PRES ); - F32 spentDialPressure = getFilteredPressure( D51_PRES ); F32 acidVolume = getF32OverrideValue( &acidDoseVolume ); F32 bicarbVolume = getF32OverrideValue( &bicarbDoseVolume ); + freshDialPressure = getFilteredPressure( D18_PRES ); + spentDialPressure = getFilteredPressure( D51_PRES ); // Check fresh and spent dialysate pressure in range or BC switch only flag set if ( ( ( freshDialPressure >= FRESH_DIAL_PRESSURE_MIN_PSIG ) && ( freshDialPressure <= FRESH_DIAL_PRESSURE_MAX_PSIG ) ) && @@ -449,8 +462,8 @@ static BAL_CHAMBER_EXEC_STATE_T handleBalChamberConcentrateControl( void ) { BAL_CHAMBER_EXEC_STATE_T state; - F32 freshDialPressure = getFilteredPressure( D18_PRES ); - F32 spentDialPressure = getFilteredPressure( D51_PRES ); + freshDialPressure = getFilteredPressure( D18_PRES ); + spentDialPressure = getFilteredPressure( D51_PRES ); if ( BAL_CHAMBER_SW_STATE1 == balChamberSWState ) { @@ -477,11 +490,11 @@ { if ( BAL_CHAMBER_SW_STATE1 == balChamberSWState ) { - state = BAL_CHAMBER_STATE1_FILL_END; + state = BAL_CHAMBER_STATE1_VALVES_CLOSE; } else { - state = BAL_CHAMBER_STATE2_FILL_END; + state = BAL_CHAMBER_STATE2_VALVES_CLOSE; } } @@ -490,22 +503,18 @@ /*********************************************************************//** * @brief - * The handleBalChamberState1FillEnd function check for the balancing chamber + * The handleBalChamberState1ValvesClose function check for the balancing chamber * fill complete and close the currently opened valves. - * @details \b Inputs: balChamberSWState, spent and fresh dialysate pressure + * @details \b Inputs: currentBalChamberSwitchingCounter, spent and fresh dialysate pressure * @details \b Outputs: isPressureStalbilizedDuringFill,isBalChamberFillInProgress - * @details \b Alarm: ALARM_ID_DD_BC_STATE1_FILL_PRESSURE_DROP_OUT_OF_RANGE - * when pressure drop is not in range during balacing chamber fill in progress. - * @details \b Alarm: ALARM_ID_DD_BC_STATE1_FILL_END_PRESSURE_OUT_OF_RANGE - * when pressure is not in range during balacing chamber fill complete. * @return next balancing chamber state. *************************************************************************/ -static BAL_CHAMBER_EXEC_STATE_T handleBalChamberState1FillEnd( void ) +static BAL_CHAMBER_EXEC_STATE_T handleBalChamberState1ValvesClose( void ) { - BAL_CHAMBER_EXEC_STATE_T state = BAL_CHAMBER_STATE1_FILL_END; + BAL_CHAMBER_EXEC_STATE_T state = BAL_CHAMBER_STATE1_VALVES_CLOSE; - F32 freshDialPressure = getFilteredPressure( D18_PRES ); - F32 spentDialPressure = getFilteredPressure( D51_PRES ); + freshDialPressure = getFilteredPressure( D18_PRES ); + spentDialPressure = getFilteredPressure( D51_PRES ); // Check fresh and spent dialysate pressure back in range to indicate fill complete. if ( getTestConfigStatus( TEST_CONFIG_DISABLE_BC_PRESSURE_ALARMS ) != TRUE ) @@ -517,7 +526,6 @@ { // stabilized pressure indicating fill is complete isPressureStalbilizedDuringFill = TRUE; - isBalChamberFillInProgress = FALSE; } } } @@ -532,8 +540,31 @@ { // close the state 1 opened valves valveControlForBCState1FillEnd(); + isBalChamberFillInProgress = FALSE; + + //Transition to next state + state = BAL_CHAMBER_STATE1_FILL_END; } + return state; +} + +/*********************************************************************//** + * @brief + * The handleBalChamberState1FillEnd function check for the balancing chamber + * switching period and tranistion to next state switching. + * @details \b Inputs: currentBalChamberSwitchingCounter, balChamberSwitchingPeriod + * @details \b Outputs: balChamberFillPressureDropCounter,balChamberFillCompleteStablePressureCounter + * @details \b Alarm: ALARM_ID_DD_BC_STATE1_FILL_PRESSURE_DROP_OUT_OF_RANGE + * when pressure drop is not in range during balacing chamber fill in progress. + * @details \b Alarm: ALARM_ID_DD_BC_STATE1_FILL_END_PRESSURE_OUT_OF_RANGE + * when pressure is not in range during balacing chamber fill complete. + * @return next balancing chamber state. + *************************************************************************/ +static BAL_CHAMBER_EXEC_STATE_T handleBalChamberState1FillEnd( void ) +{ + BAL_CHAMBER_EXEC_STATE_T state = BAL_CHAMBER_STATE1_FILL_END; + // On completion of cycle time, transition to next state if ( currentBalChamberSwitchingCounter >= balChamberSwitchingPeriod ) { @@ -594,10 +625,10 @@ isPressureDroppedDuringFill = FALSE; balChamberSWState = BAL_CHAMBER_SW_STATE2; - F32 freshDialPressure = getFilteredPressure( D18_PRES ); - F32 spentDialPressure = getFilteredPressure( D51_PRES ); F32 acidVolume = getF32OverrideValue( &acidDoseVolume ); F32 bicarbVolume = getF32OverrideValue( &bicarbDoseVolume ); + freshDialPressure = getFilteredPressure( D18_PRES ); + spentDialPressure = getFilteredPressure( D51_PRES ); // Check fresh and spent dialysate pressure in range if ( ( ( freshDialPressure >= FRESH_DIAL_PRESSURE_MIN_PSIG ) && ( freshDialPressure <= FRESH_DIAL_PRESSURE_MAX_PSIG ) ) && @@ -635,22 +666,18 @@ /*********************************************************************//** * @brief - * The handleBalChamberState2FillEnd function check for the balancing chamber + * The handleBalChamberState2ValvesClose function check for the balancing chamber * fill complete and close the currently opened valves. - * @details \b Inputs: balChamberSWState, spent and fresh dialysate pressure + * @details \b Inputs: currentBalChamberSwitchingCounter, spent and fresh dialysate pressure * @details \b Outputs: isPressureStalbilizedDuringFill,isBalChamberFillInProgress - * @details \b Alarm: ALARM_ID_DD_BC_STATE2_FILL_PRESSURE_DROP_OUT_OF_RANGE - * when pressure is not in range during balacing chamber state 2 fill in progress. - * @details \b Alarm: ALARM_ID_DD_BC_STATE2_FILL_END_PRESSURE_OUT_OF_RANGE - * when pressure is not in range during balacing chamber state 2 fill complete. * @return next balancing chamber state. *************************************************************************/ -static BAL_CHAMBER_EXEC_STATE_T handleBalChamberState2FillEnd( void ) +static BAL_CHAMBER_EXEC_STATE_T handleBalChamberState2ValvesClose( void ) { - BAL_CHAMBER_EXEC_STATE_T state = BAL_CHAMBER_STATE2_FILL_END; + BAL_CHAMBER_EXEC_STATE_T state = BAL_CHAMBER_STATE2_VALVES_CLOSE; - F32 freshDialPressure = getFilteredPressure( D18_PRES ); - F32 spentDialPressure = getFilteredPressure( D51_PRES ); + freshDialPressure = getFilteredPressure( D18_PRES ); + spentDialPressure = getFilteredPressure( D51_PRES ); // Check fresh and spent dialysate pressure back in range to indicate fill complete. if ( getTestConfigStatus( TEST_CONFIG_DISABLE_BC_PRESSURE_ALARMS ) != TRUE ) @@ -662,7 +689,6 @@ { // stabilized pressure indicating fill is complete isPressureStalbilizedDuringFill = TRUE; - isBalChamberFillInProgress = FALSE; } } } @@ -677,8 +703,31 @@ { // close the valves valveControlForBCState2FillEnd(); + isBalChamberFillInProgress = FALSE; + + //Transition to next state + state = BAL_CHAMBER_STATE2_FILL_END; } + return state; +} + +/*********************************************************************//** + * @brief + * The handleBalChamberState2FillEnd function check for the balancing chamber + * switching period complete and transition to next state. + * @details \b Inputs: currentBalChamberSwitchingCounter, balChamberSwitchingPeriod + * @details \b Outputs: isPressureStalbilizedDuringFill,isBalChamberFillInProgress + * @details \b Alarm: ALARM_ID_DD_BC_STATE2_FILL_PRESSURE_DROP_OUT_OF_RANGE + * when pressure is not in range during balacing chamber state 2 fill in progress. + * @details \b Alarm: ALARM_ID_DD_BC_STATE2_FILL_END_PRESSURE_OUT_OF_RANGE + * when pressure is not in range during balacing chamber state 2 fill complete. + * @return next balancing chamber state. + *************************************************************************/ +static BAL_CHAMBER_EXEC_STATE_T handleBalChamberState2FillEnd( void ) +{ + BAL_CHAMBER_EXEC_STATE_T state = BAL_CHAMBER_STATE2_FILL_END; + // On completion of cycle time, transition to next state if ( currentBalChamberSwitchingCounter >= balChamberSwitchingPeriod ) { @@ -802,6 +851,19 @@ /*********************************************************************//** * @brief + * The getBalChamberSwitchingPeriod function gets the balancing chamber + * switching period. + * @details \b Inputs: balChamberSwitchingPeriod + * @details \b Outputs: none + * @return balancing chamber switching period + *************************************************************************/ +U32 getBalChamberSwitchingPeriod( void ) +{ + return balChamberSwitchingPeriod; +} + +/*********************************************************************//** + * @brief * The getBalChamberDataPublishInterval function gets the balancing chamber * data publish interval. * @details \b Inputs: balChamberDataPublishInterval Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -re3ea1f5251b7a7af6e47b9e013c3cfc11466e255 -r7d24ef2e6a4130b3a049e6106a0371fc6503271f --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision e3ea1f5251b7a7af6e47b9e013c3cfc11466e255) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 7d24ef2e6a4130b3a049e6106a0371fc6503271f) @@ -43,14 +43,8 @@ #define CONCENTRATE_PUMP_LOW_SPEED_THRESHOLD_MLPM 10.0F ///< Concentrate pump low speed threshold in mL/min. #define CONCENTRATE_PUMP_ZERO_FLOW_RATE 0xFFFF ///< Pulse width value when zero flow rate or pump is off. -#ifdef __DIENER_CONC_PUMP__ -#define CONCENTRATE_PUMP_VOLUME_PER_REV 0.4F ///< Volume output every revolution (mL). -#elif __PUMPTEST__ -#define PISTON_PUMP_STEPS_PER_ML 342.0F ///< Revolution count for 1ml volume delivery. -#define CONCENTRATE_PUMP_VOLUME_PER_REV ( CONCENTRATE_PUMP_STEP_PER_REV / PISTON_PUMP_STEPS_PER_ML ) ///< Volume output every revolution (mL). -#else +#define CONCENTRATE_PUMP_VOLUME_PER_REV_DIENER 0.4F ///< Volume output every revolution (mL). #define CONCENTRATE_PUMP_VOLUME_PER_REV 0.1F ///< Volume output every revolution (mL). -#endif #define CONCENTRATE_PUMP_PULSE_PER_REV 2.0F ///< Number of pulses generate for every revolution. #define CONCENTRATE_PUMP_STEP_PER_REV 200.0F ///< Number of steps for every revolution. @@ -59,16 +53,17 @@ #define CONCENTRATE_PUMP_HALL_SENSORS_OUT_OF_RANGE_TIME_MS ( 5 * MS_PER_SECOND ) ///< Hall sensors out of range time in milliseconds. #define CONCENTRATE_PUMP_MICRO_STEPS_PER_STEP 8.0F ///< Number of micro-steps ( fractions of step) per step. -#define CONCENTRATE_PUMP_VOLUME_TO_REVOLUTION ( ( 1.0F / CONCENTRATE_PUMP_VOLUME_PER_REV ) * \ +#define CONCENTRATE_PUMP_VOLUME_TO_REVOLUTION_DIENER ( ( 1.0F / CONCENTRATE_PUMP_VOLUME_PER_REV_DIENER ) * \ ( CONCENTRATE_PUMP_STEP_PER_REV * \ CONCENTRATE_PUMP_MICRO_STEPS_PER_STEP ) ) ///< Convert volume in to number of revolutions needed. -#ifdef __PUMPTEST__ -#define PISTON_PUMP_VOLUME_TO_REVOLUTION ( PISTON_PUMP_STEPS_PER_ML * CONCENTRATE_PUMP_MICRO_STEPS_PER_STEP ) ///< Convert volume in to number of revolutions needed. -#endif +#define CONCENTRATE_PUMP_VOLUME_TO_REVOLUTION ( ( 1.0F / CONCENTRATE_PUMP_VOLUME_PER_REV ) * \ + ( CONCENTRATE_PUMP_VOLUME_PER_REV * \ + CONCENTRATE_PUMP_MICRO_STEPS_PER_STEP ) ) ///< Convert volume in to number of revolutions needed. #define CONCENTRATE_PUMP_STEP_PERIOD_RESOLUTION ( 0.50F / ( US_PER_SECOND * SEC_PER_MIN ) ) ///< Convert step period resolution (0.50 us) to minute. /// Volume output per pulse. -#define CONCENTRATE_PUMP_VOLUME_PER_PULSE ( CONCENTRATE_PUMP_VOLUME_PER_REV / CONCENTRATE_PUMP_PULSE_PER_REV ) +#define CONCENTRATE_PUMP_VOLUME_PER_PULSE_DIENER ( CONCENTRATE_PUMP_VOLUME_PER_REV / CONCENTRATE_PUMP_VOLUME_PER_REV_DIENER ) +#define CONCENTRATE_PUMP_VOLUME_PER_PULSE ( CONCENTRATE_PUMP_VOLUME_PER_REV / CONCENTRATE_PUMP_VOLUME_PER_REV ) #define CONCENTRATE_PUMP_DATA_PUBLISH_INTERVAL ( 1000 / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the concentrate pump is monitored. #define CONCENTRATE_PUMP_CONTROL_INTERVAL ( 100 / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the concentrate pump is controlled. @@ -560,18 +555,22 @@ //Update target revolution count if ( targetVolume_ml > 0.0 ) { -#ifndef __PUMPTEST__ if ( DOSING_CONT_VOLUME == targetVolume_ml ) { pumpTargetRevCnt[ pumpId ].data = DOSING_CONT_VOLUME; } else { - pumpTargetRevCnt[ pumpId ].data = (U32)( targetVolume_ml * CONCENTRATE_PUMP_VOLUME_TO_REVOLUTION ); + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DIENER_CONC_PUMP ) ) + { + pumpTargetRevCnt[ pumpId ].data = (U32)( targetVolume_ml * CONCENTRATE_PUMP_VOLUME_TO_REVOLUTION_DIENER ); + } + else + { + pumpTargetRevCnt[ pumpId ].data = (U32)( targetVolume_ml * CONCENTRATE_PUMP_VOLUME_TO_REVOLUTION ); + } } -#else - pumpTargetRevCnt[ pumpId ].data = (U32)( targetVolume_ml * PISTON_PUMP_VOLUME_TO_REVOLUTION ); -#endif + if ( D11_PUMP == pumpId ) { setFPGAD11PumpRevolutionCount( getConcPumpTargetRevolutionCount( pumpId ) ); @@ -885,7 +884,7 @@ { setFPGAD76PumpSetStepSpeed( CONCENTRATE_PUMP_ZERO_FLOW_RATE ); } -#ifndef __PUMPTEST__ + // Park concentrate pump too if requested if ( TRUE == parkPump ) { @@ -906,7 +905,6 @@ } concentratePumps[ pumpId ].isConcPumpParkInProgress = TRUE; } -#endif } /*********************************************************************//** @@ -1066,9 +1064,18 @@ if ( concentratePumps[ pumpId ].currentPumpSpeed > NEARLY_ZERO ) { - F32 timePerStep = CONCENTRATE_PUMP_VOLUME_PER_REV / ( concentratePumps[ pumpId ].currentPumpSpeed * CONCENTRATE_PUMP_STEP_PER_REV ); - F32 stepPeriodCounts = timePerStep / ( CONCENTRATE_PUMP_STEP_PERIOD_RESOLUTION * CONCENTRATE_PUMP_MICRO_STEPS_PER_STEP ); + F32 timePerStep; + F32 stepPeriodCounts; + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DIENER_CONC_PUMP ) ) + { + timePerStep = CONCENTRATE_PUMP_VOLUME_PER_REV_DIENER / ( concentratePumps[ pumpId ].currentPumpSpeed * CONCENTRATE_PUMP_STEP_PER_REV ); + } + else + { + timePerStep = CONCENTRATE_PUMP_VOLUME_PER_REV / ( concentratePumps[ pumpId ].currentPumpSpeed * CONCENTRATE_PUMP_STEP_PER_REV ); + } + stepPeriodCounts = timePerStep / ( CONCENTRATE_PUMP_STEP_PERIOD_RESOLUTION * CONCENTRATE_PUMP_MICRO_STEPS_PER_STEP ); concentratePumps[ pumpId ].togglePeriodCount = (U16)( stepPeriodCounts + FLOAT_TO_INT_ROUNDUP_OFFSET ); } else @@ -1142,7 +1149,14 @@ } else if ( FALSE == isPumpPulseWidthOut ) { - measuredPumpSpeed[ pumpId ].data = ( US_PER_SECOND / pulseWidthInMicroSeconds ) * CONCENTRATE_PUMP_VOLUME_PER_PULSE * SEC_PER_MIN; + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DIENER_CONC_PUMP ) ) + { + measuredPumpSpeed[ pumpId ].data = ( US_PER_SECOND / pulseWidthInMicroSeconds ) * CONCENTRATE_PUMP_VOLUME_PER_PULSE_DIENER * SEC_PER_MIN; + } + else + { + measuredPumpSpeed[ pumpId ].data = ( US_PER_SECOND / pulseWidthInMicroSeconds ) * CONCENTRATE_PUMP_VOLUME_PER_PULSE * SEC_PER_MIN; + } } // If pulse width is out of range capture pump out of range, pumpId and pulse width @@ -1439,9 +1453,7 @@ { // Handle start command if ( ( TRUE == payload.startStop ) && -#ifndef __PUMPTEST__ ( ( payload.speed >= CONCENTRATE_PUMP_MIN_SPEED ) && ( payload.speed <= CONCENTRATE_PUMP_MAX_SPEED ) ) && -#endif ( payload.volume > 0.0 ) ) { setConcentratePumpTargetSpeed( (CONCENTRATE_PUMPS_T)payload.pumpID, payload.speed, payload.volume ); Index: firmware/App/DDCommon.h =================================================================== diff -u -r846d04b392ffb11d26e5f8376734e1d5335b140e -r7d24ef2e6a4130b3a049e6106a0371fc6503271f --- firmware/App/DDCommon.h (.../DDCommon.h) (revision 846d04b392ffb11d26e5f8376734e1d5335b140e) +++ firmware/App/DDCommon.h (.../DDCommon.h) (revision 7d24ef2e6a4130b3a049e6106a0371fc6503271f) @@ -25,7 +25,7 @@ #define DD_VERSION_MAJOR 0 #define DD_VERSION_MINOR 0 #define DD_VERSION_MICRO 0 -#define DD_VERSION_BUILD 11 +#define DD_VERSION_BUILD 13 // ********** development build switches ********** @@ -45,6 +45,12 @@ //Uncomment below once characterization/study completed //#define ENABLE_ALARM_2 +//Uncomment below for spent chamber filling +//#define __SPENT_CHAMBER_FILL__ 1 + +//Uncomment below for bicarb chamber filling +//#define __BICARB_CHAMBER_FILL__ 1 + //Uncomment below to disable heaters debug message #define __HEATERS_DEBUG__ 1 Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -r229341f9eb23fec730cdf9b1f8f3960de2daf384 -r7d24ef2e6a4130b3a049e6106a0371fc6503271f --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 229341f9eb23fec730cdf9b1f8f3960de2daf384) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 7d24ef2e6a4130b3a049e6106a0371fc6503271f) @@ -138,6 +138,11 @@ SW_FAULT_ID_PRE_GEND_WET_SELF_TEST_INVALID_EXEC_STATE = 107, SW_FAULT_ID_PRE_GEND_WET_SELF_TEST_INVALID_EXEC_STATE1 = 108, SW_FAULT_ID_UF_INVALID_EXEC_STATE = 109, + SW_FAULT_ID_SPENT_CHAMBER_FILL_INVALID_EXEC_STATE = 110, + SW_FAULT_ID_TD_INVALID_BLOOD_LEAK_STATE = 111, + SW_FAULT_ID_BLOOD_LEAK_EMBEDDED_MODE_INVALID_STATE = 112, + SW_FAULT_ID_BLOOD_LEAK_ENQUEUE_FAILURE = 113, + SW_FAULT_ID_BLOOD_LEAK_INVALID_EMB_MODE_CMD_SELECTED = 114, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; Index: firmware/App/Services/Messaging.c =================================================================== diff -u -re3a58d968d20c5e206e4ca0da48d71f3450debb5 -r7d24ef2e6a4130b3a049e6106a0371fc6503271f --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision e3a58d968d20c5e206e4ca0da48d71f3450debb5) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 7d24ef2e6a4130b3a049e6106a0371fc6503271f) @@ -19,6 +19,7 @@ #include "reg_system.h" #include "BalancingChamber.h" +#include "BloodLeak.h" #include "Conductivity.h" #include "Compatible.h" #include "ConcentratePumps.h" @@ -36,6 +37,7 @@ #include "PAL.h" #include "Pressure.h" #include "SafetyShutdown.h" +#include "SpentChamberFill.h" #include "SystemCommDD.h" #include "Temperature.h" #include "TestSupport.h" @@ -164,6 +166,15 @@ { MSG_ID_DD_SET_TEST_CONFIGURATION, &testSetTestConfiguration }, { MSG_ID_DD_GET_TEST_CONFIGURATION, &testGetTestConfiguration }, { MSG_ID_DD_RESET_ALL_TEST_CONFIGURATIONS, &testResetAllTestConfigurations }, + { MSG_ID_DD_SPENT_CHAMB_FILL_DATA_PUBLISH_OVERRIDE_REQUEST, &testDDSpentChamberFillDataPublishIntervalOverride }, + { MSG_ID_DD_BLOOD_LEAK_DATA_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testBloodLeakDataPublishIntervalOverride }, + { MSG_ID_DD_BLOOD_LEAK_STATUS_OVERRIDE_REQUEST, &testBloodLeakStatusOverride }, + { MSG_ID_DD_BLOOD_LEAK_SET_TO_EMBEDDED_MODE_REQUEST, &testSetBloodLeak2EmbeddedMode }, + { MSG_ID_DD_BLOOD_LEAK_SET_EMBEDDED_MODE_CMD_REQUEST, &testSetBloodLeakEmbeddedModeCommand }, + { MSG_ID_DD_BLOOD_LEAK_EMBEDDED_MODE_INFO_OVERRIDE_REQUEST, &testBloodLeakEmbeddedModeInfoOverride }, + { MSG_ID_DD_BLOOD_LEAK_INTENSITY_MOVING_AVERAGE_OVERRIDE_REQUEST, &testBloodLeakIntensityMovingAverageOverride }, + { MSG_ID_DD_BLOOD_LEAK_ZEROING_INTERVAL_IN_MS_OVERRIDE_REQUEST, &testBloodLeakZeroingIntervalInMillisecondsOverride }, + { MSG_ID_DD_BLOOD_LEAK_ZERO_REQUEST, &testBloodLeakZeroSequenceRequest } }; #define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLER_LOOKUP) / sizeof(MSG_HANDLER_LOOKUP_T)) Index: firmware/source/sys_main.c =================================================================== diff -u -r229341f9eb23fec730cdf9b1f8f3960de2daf384 -r7d24ef2e6a4130b3a049e6106a0371fc6503271f --- firmware/source/sys_main.c (.../sys_main.c) (revision 229341f9eb23fec730cdf9b1f8f3960de2daf384) +++ firmware/source/sys_main.c (.../sys_main.c) (revision 7d24ef2e6a4130b3a049e6106a0371fc6503271f) @@ -61,6 +61,7 @@ #include "sys_dma.h" #include "AlarmMgmtDD.h" +#include "BloodLeak.h" #include "CommBuffers.h" #include "Conductivity.h" #include "ConcentratePumps.h" @@ -173,6 +174,7 @@ initConcentratePump(); initDialysatePump(); initLevels(); + initBloodLeak(); initCommBuffers(); initMsgQueues(); initSystemComm();