Index: firmware/App/Controllers/BalancingChamber.c =================================================================== diff -u -r5126b79e4970ffe2ed9db4cccea18a1216c78570 -r5422509f9d8db102b62952ba9f5923e832d6b2fa --- firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision 5126b79e4970ffe2ed9db4cccea18a1216c78570) +++ firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision 5422509f9d8db102b62952ba9f5923e832d6b2fa) @@ -502,7 +502,7 @@ } else if ( TRUE != isPressureStalbilizedDuringFill ) { - // Alarm when switching time expired, but still pressure not in range to indicate fill is complete. + // Alarm when switching time expired, but still pressure not in range which indicates fill is not yet completed. SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DD_BC_STATE1_FILL_END_PRESSURE_OUT_OF_RANGE, freshDialPressure, spentDialPressure ); } else @@ -633,7 +633,7 @@ } else if ( TRUE != isPressureStalbilizedDuringFill ) { - // Alarm when switching time expired, but still pressure not in range to indicate fill is complete. + // Alarm when switching time expired, but still pressure not in range which indicates fill is not completed. SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DD_BC_STATE2_FILL_END_PRESSURE_OUT_OF_RANGE, freshDialPressure, spentDialPressure ); } else Index: firmware/App/Controllers/DialysatePumps.c =================================================================== diff -u -ra8a9efaaea2ba9f38705b4ec2d47ff1252c833e2 -r5422509f9d8db102b62952ba9f5923e832d6b2fa --- firmware/App/Controllers/DialysatePumps.c (.../DialysatePumps.c) (revision a8a9efaaea2ba9f38705b4ec2d47ff1252c833e2) +++ firmware/App/Controllers/DialysatePumps.c (.../DialysatePumps.c) (revision 5422509f9d8db102b62952ba9f5923e832d6b2fa) @@ -260,7 +260,7 @@ * @param rpm new dialysate pump target RPM * @return TRUE if new target RPM is set, FALSE if not *************************************************************************/ -BOOL setDialysatePumpTargetRPM( DIALYSATE_PUMPS_T pumpId, U32 rpm ) +BOOL setDialysatePumpTargetRPM( DIALYSATE_PUMPS_T pumpId, U32 rpm, BOOL isOpenLoopControlEnabled ) { BOOL result = FALSE; @@ -280,6 +280,9 @@ pumpTargetSpeed[ pumpId ].data = MAX_DIALYSATE_PUMP_RPM; } + // Open loop or close loop control + isDialPumpOpenLoopEnabled[ pumpId ] = isOpenLoopControlEnabled; + //handle target speed update when pump is running if ( DIALYSATE_PUMP_CONTROL_TO_TARGET_STATE == dialysatePumps[ pumpId ].dialysatePumpState ) { @@ -1135,9 +1138,7 @@ if ( ( TRUE == payload.startStop ) && ( ( payload.rpm >= MIN_DIALYSATE_PUMP_RPM ) && ( payload.rpm <= MAX_DIALYSATE_PUMP_RPM ) ) ) { - setDialysatePumpTargetRPM( (DIALYSATE_PUMPS_T)payload.pumpID, payload.rpm ); - // Pump control - isDialPumpOpenLoopEnabled[payload.pumpID] = payload.pumpControl; + setDialysatePumpTargetRPM( (DIALYSATE_PUMPS_T)payload.pumpID, payload.rpm, (BOOL)payload.pumpControl ); result = TRUE; } Index: firmware/App/Controllers/DialysatePumps.h =================================================================== diff -u -r60165f6d155831cfce06560fb45abaaaadea9798 -r5422509f9d8db102b62952ba9f5923e832d6b2fa --- firmware/App/Controllers/DialysatePumps.h (.../DialysatePumps.h) (revision 60165f6d155831cfce06560fb45abaaaadea9798) +++ firmware/App/Controllers/DialysatePumps.h (.../DialysatePumps.h) (revision 5422509f9d8db102b62952ba9f5923e832d6b2fa) @@ -86,7 +86,7 @@ U32 getDialysatePumpMeasuredDirection( DIALYSATE_PUMPS_T pumpId ); BOOL isDialysatePumpOn( DIALYSATE_PUMPS_T pumpId ); void signalDialysatePumpHardStop( DIALYSATE_PUMPS_T pumpId ); -BOOL setDialysatePumpTargetRPM( DIALYSATE_PUMPS_T pumpId, U32 rpm ); +BOOL setDialysatePumpTargetRPM( DIALYSATE_PUMPS_T pumpId, U32 rpm, BOOL isOpenLoopControlEnabled ); BOOL testDialysatePumpsDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testDialysatePumpTargetSpeedOverride( MESSAGE_T *message ); Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -r5126b79e4970ffe2ed9db4cccea18a1216c78570 -r5422509f9d8db102b62952ba9f5923e832d6b2fa --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 5126b79e4970ffe2ed9db4cccea18a1216c78570) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 5422509f9d8db102b62952ba9f5923e832d6b2fa) @@ -206,15 +206,15 @@ // Start timer for hyd chamber negative pressure check state hydChamberPressureCheckStartTimeMS = getMSTimerCount(); // Start D12/DGP pump - setDialysatePumpTargetRPM( D12_PUMP, FRESH_DIAL_PUMP_INITIAL_RPM ); + setDialysatePumpTargetRPM( D12_PUMP, FRESH_DIAL_PUMP_INITIAL_RPM, TRUE ); break; case DD_GEND_FRESH_DIALYSATE_PRESSURE_CHECK_STATE: //Previous state setValveState( M4_VALV, VALVE_STATE_OPEN ); startHeater( D5_HEAT ); setValveState( D14_VALV, VALVE_STATE_OPEN ); - setDialysatePumpTargetRPM( D12_PUMP, FRESH_DIAL_PUMP_INITIAL_RPM ); + setDialysatePumpTargetRPM( D12_PUMP, FRESH_DIAL_PUMP_INITIAL_RPM, TRUE ); // Lets be DGP continue running since pressure relief valve was set/ tuned part of priming process hydChamberPressureCheckStartTimeMS = getMSTimerCount(); @@ -225,7 +225,7 @@ setValveState( M4_VALV, VALVE_STATE_OPEN ); startHeater( D5_HEAT ); setValveState( D14_VALV, VALVE_STATE_OPEN ); - setDialysatePumpTargetRPM( D12_PUMP, FRESH_DIAL_PUMP_INITIAL_RPM ); + setDialysatePumpTargetRPM( D12_PUMP, FRESH_DIAL_PUMP_INITIAL_RPM, TRUE ); // Start the timer for spent dialysate pressure check spentDialPressureCheckStartTimeMS = getMSTimerCount(); @@ -240,20 +240,20 @@ setValveState( D34_VALV, VALVE_STATE_OPEN ); // Bypass valve // Start D48/SDP pump - setDialysatePumpTargetRPM( D48_PUMP, SPENT_DIAL_PUMP_INITIAL_RPM ); + setDialysatePumpTargetRPM( D48_PUMP, SPENT_DIAL_PUMP_INITIAL_RPM, TRUE ); break; case DD_GEND_PRODUCE_DIALYSATE_STATE: //Previous state setValveState( M4_VALV, VALVE_STATE_OPEN ); startHeater( D5_HEAT ); setValveState( D14_VALV, VALVE_STATE_OPEN ); - setDialysatePumpTargetRPM( D12_PUMP, FRESH_DIAL_PUMP_INITIAL_RPM ); + setDialysatePumpTargetRPM( D12_PUMP, FRESH_DIAL_PUMP_INITIAL_RPM, FALSE ); setValveState( D53_VALV, VALVE_STATE_OPEN ); // Drain valve setValveState( D35_VALV, VALVE_STATE_CLOSED ); // VDI setValveState( D40_VALV, VALVE_STATE_CLOSED ); // VDO setValveState( D34_VALV, VALVE_STATE_OPEN ); // Bypass valve - setDialysatePumpTargetRPM( D48_PUMP, SPENT_DIAL_PUMP_INITIAL_RPM ); + setDialysatePumpTargetRPM( D48_PUMP, SPENT_DIAL_PUMP_INITIAL_RPM, FALSE ); //Close previously opened BC valves valveControlForBCClosedState(); @@ -265,9 +265,9 @@ setValveState( M4_VALV, VALVE_STATE_OPEN ); startHeater( D5_HEAT ); setValveState( D14_VALV, VALVE_STATE_OPEN ); - setDialysatePumpTargetRPM( D12_PUMP, FRESH_DIAL_PUMP_INITIAL_RPM ); + setDialysatePumpTargetRPM( D12_PUMP, FRESH_DIAL_PUMP_INITIAL_RPM, FALSE ); setValveState( D53_VALV, VALVE_STATE_OPEN ); // Drain valve - setDialysatePumpTargetRPM( D48_PUMP, SPENT_DIAL_PUMP_INITIAL_RPM ); + setDialysatePumpTargetRPM( D48_PUMP, SPENT_DIAL_PUMP_INITIAL_RPM, FALSE ); // Disable bypass valve setValveState( D34_VALV, VALVE_STATE_CLOSED ); // Bypass valve Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -rb6d20d9e5c704a9f7ebceea9bb12731dac61fc2a -r5422509f9d8db102b62952ba9f5923e832d6b2fa --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision b6d20d9e5c704a9f7ebceea9bb12731dac61fc2a) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 5422509f9d8db102b62952ba9f5923e832d6b2fa) @@ -18,6 +18,8 @@ #include "ModeFault.h" #include "ModeInitPOST.h" #include "ModeGenDialysate.h" +#include "ModePreGenDialysate.h" +#include "ModePostGenDialysate.h" #include "ModeService.h" #include "ModeStandby.h" #include "MessageSupport.h" @@ -52,15 +54,17 @@ /// This matrix determines legal transitions from one mode to another. static const DD_OP_MODE_T MODE_TRANSITION_TABLE[ NUM_OF_DD_MODES - 1 ][ NUM_OF_DD_MODES - 1 ] = { - // from to-> FAULT SERVICE INIT STANBY GEND HEAT HCOL ROPS - /* FAUL */{ DD_MODE_FAUL, DD_MODE_SERV, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, - /* SERV */{ DD_MODE_NLEG, DD_MODE_SERV, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, - /* INIT */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_INIT, DD_MODE_STAN, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, - /* STAN */{ DD_MODE_FAUL, DD_MODE_SERV, DD_MODE_INIT, DD_MODE_STAN, DD_MODE_GEND, DD_MODE_HEAT, DD_MODE_HCOL, DD_MODE_ROPS }, - /* GEND */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_GEND, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, - /* HEAT */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_NLEG, DD_MODE_HEAT, DD_MODE_HCOL, DD_MODE_NLEG }, - /* HCOL */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_HCOL, DD_MODE_NLEG }, - /* ROPS */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_ROPS }, + // from to-> FAULT SERVICE INIT STANBY PREG GEND POSG HEAT HCOL ROPS + /* FAUL */{ DD_MODE_FAUL, DD_MODE_SERV, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, + /* SERV */{ DD_MODE_NLEG, DD_MODE_SERV, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, + /* INIT */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_INIT, DD_MODE_STAN, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, + /* STAN */{ DD_MODE_FAUL, DD_MODE_SERV, DD_MODE_INIT, DD_MODE_STAN, DD_MODE_PREG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_HEAT, DD_MODE_HCOL, DD_MODE_ROPS }, + /* PREG */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_PREG, DD_MODE_GEND, DD_MODE_POSG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, + /* GEND */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_GEND, DD_MODE_POSG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, + /* POSG */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_POSG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG }, + /* HEAT */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_HEAT, DD_MODE_HCOL, DD_MODE_NLEG }, + /* HCOL */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_HCOL, DD_MODE_NLEG }, + /* ROPS */{ DD_MODE_FAUL, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_STAN, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_NLEG, DD_MODE_ROPS }, }; // ********** private function prototypes ********** @@ -103,6 +107,8 @@ initInitAndPOSTMode(); initStandbyMode(); initGenDialysateMode(); + initPreGenDialysateMode(); + initPostGenDialysateMode(); // initFlushMode(); // initHeatDisinfectMode(); // initHeatDisinfectActiveCoolMode(); @@ -177,9 +183,17 @@ currentSubMode = execStandbyMode(); break; + case DD_MODE_PREG: + currentSubMode = execPreGenDialysateMode(); + break; + case DD_MODE_GEND: currentSubMode = execGenDialysateMode(); break; + + case DD_MODE_POSG: + currentSubMode = execPostGenDialysateMode(); + break; // // case DD_MODE_FLUS: // currentSubMode = execFlushMode(); @@ -351,10 +365,18 @@ currentSubMode = transitionToStandbyMode(); break; + case DD_MODE_PREG: + currentSubMode = transitionToPreGenDialysateMode(); + break; + case DD_MODE_GEND: currentSubMode = transitionToGenDialysateMode(); break; + case DD_MODE_POSG: + currentSubMode = transitionToPostGenDialysateMode(); + break; + // case DD_MODE_FLUS: // currentSubMode = transitionToFlushMode(); // break; Index: firmware/App/Monitors/Temperature.c =================================================================== diff -u -r313982ccc772f1bbe182877dff7e00381b04e0f4 -r5422509f9d8db102b62952ba9f5923e832d6b2fa --- firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) +++ firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision 5422509f9d8db102b62952ba9f5923e832d6b2fa) @@ -218,6 +218,7 @@ data.d28CondTemp = getConductivityTemperatureValue( D27_COND ); data.d30CondTemp = getConductivityTemperatureValue( D29_COND ); data.d44CondTemp = getConductivityTemperatureValue( D43_COND ); + data.d75CondTemp = getConductivityTemperatureValue( D74_COND ); broadcastData( MSG_ID_DD_TEMPERATURE_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( TEMPERATURE_SENSORS_DATA_T ) ); dataPublicationTimerCounter = 0; Index: firmware/App/Monitors/Temperature.h =================================================================== diff -u -r313982ccc772f1bbe182877dff7e00381b04e0f4 -r5422509f9d8db102b62952ba9f5923e832d6b2fa --- firmware/App/Monitors/Temperature.h (.../Temperature.h) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) +++ firmware/App/Monitors/Temperature.h (.../Temperature.h) (revision 5422509f9d8db102b62952ba9f5923e832d6b2fa) @@ -44,6 +44,7 @@ F32 d28CondTemp; ///< D28 temperature value F32 d30CondTemp; ///< D30 temperature value F32 d44CondTemp; ///< D44 temperature value + F32 d75CondTemp; ///< D75 temperature value } TEMPERATURE_SENSORS_DATA_T; Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -r322747d530c1b8205be257557e53dcfe9caad50a -r5422509f9d8db102b62952ba9f5923e832d6b2fa --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 322747d530c1b8205be257557e53dcfe9caad50a) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 5422509f9d8db102b62952ba9f5923e832d6b2fa) @@ -133,6 +133,8 @@ SW_FAULT_ID_GEND_MODE_INVALID_EXEC_STATE = 102, SW_FAULT_ID_GEND_MODE_INVALID_EXEC_STATE1 = 103, SW_FAULT_ID_INVALID_RO_OPERATING_MODE = 104, + SW_FAULT_ID_PRE_GEND_MODE_INVALID_EXEC_STATE = 105, + SW_FAULT_ID_POST_GEND_MODE_INVALID_EXEC_STATE = 106, #ifdef __PUMPTEST__ // Assigning high value to separate from actual fault id from test fault ids. SW_FAULT_ID_PISTON_PUMP_EXEC_INVALID_STATE = 9000, Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r577532788d2042e5299fd22aff6bae46c292002d -r5422509f9d8db102b62952ba9f5923e832d6b2fa --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 577532788d2042e5299fd22aff6bae46c292002d) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 5422509f9d8db102b62952ba9f5923e832d6b2fa) @@ -27,8 +27,10 @@ #include "Level.h" #include "Messaging.h" #include "MessagePayloads.h" -#include "ModeStandby.h" #include "ModeGenDialysate.h" +#include "ModePreGenDialysate.h" +#include "ModePostGenDialysate.h" +#include "ModeStandby.h" #include "OperationModes.h" #include "PAL.h" #ifdef __PUMPTEST__ @@ -147,6 +149,8 @@ MSG_ID_DD_BICARB_DOSING_VOLUME_OVERRIDE_REQUEST, //60 MSG_ID_DD_GEND_EXEC_STATE_OVERRIDE_REQUEST, MSG_ID_DD_HEATERS_PWM_PERIOD_OVERIDE_REQUEST, + MSG_ID_DD_PRE_GEND_MODE_DATA_PUBLISH_OVERRIDE_REQUEST, + MSG_ID_DD_POST_GEND_MODE_DATA_PUBLISH_OVERRIDE_REQUEST, #ifdef __PUMPTEST__ MSG_ID_DD_PISTON_PUMP_DATA_PUBLISH_OVERRIDE_REQUEST, MSG_ID_DD_PISTON_PUMP_START_STOP_OVERRIDE_REQUEST, @@ -218,6 +222,8 @@ &testBicarbDoseVolumeOverride, //60 &testGenDExecStateOverride, &testHeaterPWMPeriodOverride, + &testDDPreGenDialysateDataPublishIntervalOverride, + &testDDPostGenDialysateDataPublishIntervalOverride, #ifdef __PUMPTEST__ &testDDPistonPumpControlDataPublishIntervalOverride, &testDDPistonPumpStartStopOverride,