Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -rd3ec548d2b2bae2e882dcbb0144e27b84307c596 -r66f77cd1004d7bba851bd980edf41d63da8118ff --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision d3ec548d2b2bae2e882dcbb0144e27b84307c596) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 66f77cd1004d7bba851bd980edf41d63da8118ff) @@ -59,8 +59,8 @@ PRE_TREATMENT_RESERVOIR_MGMT_START_FILL_STATE, ///< Command DG to start filling reservoir PRE_TREATMENT_RESERVOIR_MGMT_FILL_CMD_RESP_STATE, ///< After sending fill command, process DG fill command response PRE_TREATMENT_RESERVOIR_MGMT_FILL_COMPLETE_STATE, ///< Reservoir fill has completed - PRE_TREATMENT_RESERVOIR_MGMT_REQUEST_RESERVOIR_SWITCH_STATE, - PRE_TREATMENT_RESERVOIR_MGMT_WAIT_FOR_RESERVOIR_SWITCH_STATE, ///< Wait for prime operation to switch reservoir + PRE_TREATMENT_RESERVOIR_MGMT_REQUEST_RESERVOIR_SWITCH_STATE, ///< Command DG to switch (toggle) reservoirs + PRE_TREATMENT_RESERVOIR_MGMT_WAIT_FOR_RESERVOIR_SWITCH_STATE, ///< After sending switch command, process DG fill command response PRE_TREATMENT_RESERVOIR_MGMT_COMPLETE_STATE, ///< Pre-treatment reservoir management complete state NUM_OF_PRE_TREATMENT_RESERVOIR_MGMT_STATES ///< Number of pre-treatments reservoir mgmt. states } PRE_TREATMENT_RESERVOIR_MGMT_STATE_T; @@ -136,7 +136,6 @@ reservoirFlushedStatus[ DG_RESERVOIR_1 ] = FALSE; reservoirFlushedStatus[ DG_RESERVOIR_2 ] = FALSE; - reservoirFlags[ DG_RESERVOIR_1 ].startFlushFill = FALSE; reservoirFlags[ DG_RESERVOIR_1 ].startNormalFill = FALSE; reservoirFlags[ DG_RESERVOIR_2 ].startFlushFill = FALSE; @@ -964,7 +963,6 @@ fillReservoirOneStartRequested = FALSE; cmdSetDGActiveReservoir( DG_RESERVOIR_2 ); state = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; - //state = PRE_TREATMENT_RESERVOIR_MGMT_REQUEST_RESERVOIR_SWITCH_STATE; } return state; @@ -1057,7 +1055,6 @@ ( inactiveReservoir != DG_RESERVOIR_1 ) ) { initialReservoirDrain[ inactiveReservoir ] = TRUE; - //cmdSetDGActiveReservoir( inactiveReservoir ); state = PRE_TREATMENT_RESERVOIR_MGMT_REQUEST_RESERVOIR_SWITCH_STATE; } } @@ -1171,13 +1168,11 @@ #endif { reservoirFlushedStatus[ DG_RESERVOIR_1 ] = TRUE; - //cmdSetDGActiveReservoir( DG_RESERVOIR_1 ); } } else { reservoirFlushedStatus[ DG_RESERVOIR_2 ] = TRUE; - //cmdSetDGActiveReservoir( DG_RESERVOIR_2 ); } } } @@ -1210,7 +1205,6 @@ return state; } - /*********************************************************************//** * @brief * The handlePreTreatmentReservoirMgmtWaitReservoirSwitchState function waits @@ -1223,39 +1217,24 @@ { PRE_TREATMENT_RESERVOIR_MGMT_STATE_T state = PRE_TREATMENT_RESERVOIR_MGMT_WAIT_FOR_RESERVOIR_SWITCH_STATE; DG_CMD_RESPONSE_T dgCmdResp; + // handle fill command response from DG if ( TRUE == getDGCommandResponse( DG_CMD_SWITCH_RESERVOIR, &dgCmdResp ) ) { if ( DG_CMD_REQUEST_REJECT_REASON_INVALID_MODE == dgCmdResp.rejectCode ) { - //retry? + state = PRE_TREATMENT_RESERVOIR_MGMT_REQUEST_RESERVOIR_SWITCH_STATE; } else if ( dgCmdResp.rejectCode != DG_CMD_REQUEST_REJECT_REASON_NONE ) - {// bad call + { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_DG_INVALID_FILL_COMMAND_REJECTED, dgCmdResp.rejectCode ) } else - {// success. move forward - state = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; - } - } - - /* - if ( ( TRUE == reservoirFilledStatus[ DG_RESERVOIR_1 ] ) && ( FALSE == reservoirFilledStatus[ DG_RESERVOIR_2 ] ) ) - { - if ( DG_RESERVOIR_2 == getDGInactiveReservoir() ) { state = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; } } - else - { - if ( TRUE == hasDGCompletedReservoirSwitch() ) - { - state = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; - } - }*/ return state; } @@ -1309,6 +1288,7 @@ } #endif } + return volume; } Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r1d49abd3736a0e21a9ceb56e213d4337fbb8138c -r66f77cd1004d7bba851bd980edf41d63da8118ff --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 1d49abd3736a0e21a9ceb56e213d4337fbb8138c) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 66f77cd1004d7bba851bd980edf41d63da8118ff) @@ -43,10 +43,10 @@ #define PUMP_SELF_TEST_FLOW_RATE_ML_MIN 100 ///< Self-test pump flow rate in mL/min. #define BLOOD_PUMP_PRESSURE_SELF_TEST_FLOW 100 #define DIAL_IN_PUMP_PRESSURE_SELF_TEST_FLOW 400 -#define SYRINGE_PUMP_OCCLUSION_CHECK_DELAY ( 1 * MS_PER_SECOND ) ///< Delay 3 seconds then check for syringe pump prime occlusion. +#define SYRINGE_PUMP_OCCLUSION_CHECK_DELAY ( 1 * MS_PER_SECOND ) ///< Delay 1 second then check for syringe pump prime occlusion. #define BLOOD_PUMP_RUN_TIME_PRESSURE_SELF_TEST ( 20 * MS_PER_SECOND ) ///< Pressure self-test time to run blood pump in ms. -#define DIAL_IN_PUMP_RUN_TIME_PRESSURE_SELF_TEST ( 20 * MS_PER_SECOND ) +#define DIAL_IN_PUMP_RUN_TIME_PRESSURE_SELF_TEST ( 20 * MS_PER_SECOND ) ///< Pressure self-test time to run dip in ms. #define DECAY_PRESSURE_SELF_TEST_TIME ( 4 * MS_PER_SECOND ) ///< time to wait for pressure to decay in ms. #define STABILTY_PRESSURE_SELF_TEST_TIME ( 5 * MS_PER_SECOND ) ///< Time to wait for pressure to stabilize in ms. #define NORMALIZED_PRESSURE_SELF_TEST_TIME ( 20 * MS_PER_SECOND ) ///< Time to wait for pressure to normalize in ms. @@ -59,7 +59,7 @@ #define VENOUS_STABILITY_PRESSURE_DIFF_TOLERANCE_MMHG 5.0F ///< Difference in venous pressure readings while in a stable pressured state (in mmHg). #define ARTERIAL_PRESSURE_SELF_TEST_LOW_LIMIT_MMHG -200.0F ///< Arterial pressure low limit after running blood pump. -#define VENOUS_PRESSURE_SELF_TEST_HIGH_LIMIT_MMHG 200.0F ///< Venous pressure high limit after running blood pump. +#define VENOUS_PRESSURE_SELF_TEST_HIGH_LIMIT_MMHG 200.0F ///< Venous pressure high limit after running blood pump. #define VENOUS_PRESSURE_SELF_TEST_FIRST_PASS_LIMIT_MMHG 200.0F ///< Venous pressure high limit after running dpi in first test. #define NORMAL_PRESSURE_DIFF_TOLERANCE_MMHG 20.0F ///< Difference in pressure readings after return to normal state tolerance (in mmHg). @@ -78,7 +78,7 @@ #define RESERVOIR_SETTLE_TIME_MS ( 4 * MS_PER_SECOND ) ///< Time allotted for reservoir to settle in ms. #define MAX_NO_CARTRIDGE_SELF_TEST_TIME 30 ///< Maximum no cartridge self-test time (in seconds). -#define MAX_DRY_SELF_TEST_TIME ( 12 * SEC_PER_MIN ) ///< Maximum dry self-test time (in seconds). +#define MAX_DRY_SELF_TEST_TIME ( 12 * SEC_PER_MIN ) ///< Maximum dry self-test time (in seconds). #define CARTRIDGE_INSERT_PRESSURE_SETTLE_TIME_MS ( 10 * MS_PER_SECOND ) ///< Time (in ms) required to wait for occlusion pressure to settle after cartridge insertion. #define SELF_TEST_TIME_DATA_PUB_INTERVAL ( MS_PER_SECOND ) ///< Interval (ms/task time) at which self-test time data is published on the CAN bus. @@ -97,7 +97,7 @@ static DRY_SELF_TESTS_STATE_T currentDrySelfTestsState; ///< Current state of the dry self-tests state machine. static U32 pressureSelfTestBloodPumpRunStartTime; ///< Pressure dry self-test blood pump runs start time. -static U32 pressureSelfTestDialInPumpRunStartTime; +static U32 pressureSelfTestDialInPumpRunStartTime; ///< Pressure dry self-test dip runs start time. static U32 pressureSelfTestNormalizedStartTime; ///< Normalized pressure dry self-test start time. static U32 pressureSelfTestDecayStartTime; ///< Decay pressure dry self-test start time. static U32 pressureSelfTestStabilityStartTime; ///< Stability pressure dry self-test start time. @@ -1006,7 +1006,6 @@ state = DRY_SELF_TESTS_STOPPED_STATE; setupForSelfTestsStop(); } - else { setValvePosition( VDI, VALVE_POSITION_B_OPEN ); @@ -1072,7 +1071,6 @@ state = DRY_SELF_TESTS_STOPPED_STATE; setupForSelfTestsStop(); } - else { setValvePosition( VDI, VALVE_POSITION_C_CLOSE ); @@ -1127,6 +1125,7 @@ return state; } + /*********************************************************************//** * @brief * The handleDrySelfTestPressureSensorsDecayState function verifies