Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -rdc8530d1b15e4b1199cacf0284dbe8f7802e9dde -r818d96fff963c707f5e2cb5aae7bf16f23e4b08a --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision dc8530d1b15e4b1199cacf0284dbe8f7802e9dde) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 818d96fff963c707f5e2cb5aae7bf16f23e4b08a) @@ -8,7 +8,7 @@ * @file ModePreTreat.c * * @author (last) Sean Nash -* @date (last) 26-Apr-2022 +* @date (last) 13-Jul-2022 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 @@ -179,6 +179,8 @@ setAlarmUserActionEnabled( ALARM_USER_ACTION_RINSEBACK, FALSE ); setAlarmUserActionEnabled( ALARM_USER_ACTION_END_TREATMENT, TRUE ); + doorClosedRequired( FALSE, FALSE ); + return currentPreTreatmentState; } @@ -262,46 +264,6 @@ /*********************************************************************//** * @brief - * The verifySwitchStatus function checks Pump Track and Door switches are closed. - * Verify Syringe is installed if needed. - * Alarm is set if not. Alarms cleared by driver executives. - * @details Inputs: none - * @details Outputs: Alarm - * @return none - *************************************************************************/ -void verifySwitchStatus( void ) -{ - F32 bolusVol = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ); - F32 hepRate = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_DISPENSE_RATE ); - -#ifndef _RELEASE_ - if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_SWITCHES_MONITOR ) != SW_CONFIG_ENABLE_VALUE ) -#endif - { - if ( STATE_OPEN == getSwitchStatus( FRONT_DOOR ) ) - { - activateAlarmNoData( ALARM_ID_CARTRIDGE_DOOR_OPENED ); - } - - if ( STATE_OPEN == getSwitchStatus( PUMP_TRACK_SWITCH ) ) - { - activateAlarmNoData( ALARM_ID_PUMP_TRACK_LATCH_OPENED ); - } - } - -#ifndef _RELEASE_ - if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_SYRINGE_PUMP_ALARMS ) != SW_CONFIG_ENABLE_VALUE ) -#endif - { - if ( ( FALSE == isSyringeDetected() ) && ( ( bolusVol > NEARLY_ZERO ) && ( hepRate > NEARLY_ZERO ) ) ) - { - activateAlarmNoData( ALARM_ID_HD_SYRINGE_PUMP_SYRINGE_REMOVED ); - } - } -} - -/*********************************************************************//** - * @brief * The signalUserConfirmInstallation function handles user confirmation of * disposable installation. * @details Inputs: none @@ -325,14 +287,6 @@ OPN_CLS_STATE_T frontDoor = getSwitchStatus( FRONT_DOOR ); OPN_CLS_STATE_T pumpTrack = getSwitchStatus( PUMP_TRACK_SWITCH ); -#ifndef _RELEASE_ - if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_SWITCHES_MONITOR ) ) - { - frontDoor = STATE_CLOSED; - pumpTrack = STATE_CLOSED; - } -#endif - if ( STATE_CLOSED == pumpTrack ) { if ( STATE_CLOSED == frontDoor ) @@ -342,6 +296,10 @@ // Everything is properly installed accepted = TRUE; confirmInstallRequested = TRUE; + if ( ( bolusVol > NEARLY_ZERO ) || ( hepRate > NEARLY_ZERO ) ) + { + syringeDetectionRequired( TRUE ); + } } else { @@ -555,16 +513,17 @@ { PRE_TREATMENT_STATE_DATA_T preTreatmentData; - preTreatmentData.preTreatmentSubMode = currentPreTreatmentState; - preTreatmentData.sampleWaterState = getSampleWaterState(); + preTreatmentData.preTreatmentSubMode = currentPreTreatmentState; + preTreatmentData.sampleWaterState = getSampleWaterState(); preTreatmentData.consumableSelfTestsState = getConsumableSelfTestState(); - preTreatmentData.noCartSelfTestsState = getNoCartSelfTestsState(); - preTreatmentData.installState = 0; - preTreatmentData.drySelfTestsState = getDrySelfTestsState(); - preTreatmentData.primeState = getPrimeState(); - preTreatmentData.recircState = getPreTreatmentRecircState(); - preTreatmentData.patientConnectionState = 0; - preTreatmentData.wetSelfTestsState = getWetSelfTestState(); + preTreatmentData.noCartSelfTestsState = getNoCartSelfTestsState(); + preTreatmentData.installState = 0; + preTreatmentData.drySelfTestsState = getDrySelfTestsState(); + preTreatmentData.primeState = getPrimeState(); + preTreatmentData.recircState = getPreTreatmentRecircState(); + preTreatmentData.patientConnectionState = 0; + preTreatmentData.wetSelfTestsState = getWetSelfTestState(); + preTreatmentData.preTreatmentRsrvrState = currentReservoirMgmtState; broadcastData( MSG_ID_PRE_TREATMENT_STATE, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&preTreatmentData, sizeof( PRE_TREATMENT_STATE_DATA_T ) ); preTreatmentPublishTimerCounter = 0; @@ -599,6 +558,8 @@ { VALVE_T valve; + doorClosedRequired( FALSE, FALSE ); + // Set valves for ( valve = VDI; valve < NUM_OF_VALVES; ++valve ) { @@ -628,6 +589,8 @@ patientConnectionConfirm = FALSE; treatmentStartRequested = FALSE; + doorClosedRequired( FALSE, FALSE ); + for ( valve = VDI; valve < NUM_OF_VALVES; ++valve ) { setValvePosition( valve, VALVE_POSITION_C_CLOSE ); @@ -739,14 +702,6 @@ transitionToCartridgeInstallation(); } } - else - { - if ( ( NO_CART_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE <= getNoCartSelfTestsState() ) && - ( NO_CART_SELF_TESTS_STOPPED_STATE != getNoCartSelfTestsState() ) ) - { - verifySwitchStatus(); - } - } return state; } @@ -808,14 +763,6 @@ transitionToPrime(); } } - else - { - if ( ( DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE <= getDrySelfTestsState() ) && - ( DRY_SELF_TESTS_STOPPED_STATE != getDrySelfTestsState() ) ) - { - verifySwitchStatus(); - } - } return state; } @@ -850,13 +797,6 @@ transitionToPreTreatmentRecirc(); } } - else - { - if ( ( HD_PRIME_PAUSE != getPrimeState() ) ) - { - verifySwitchStatus(); - } - } return state; } @@ -881,11 +821,6 @@ execPreTreatmentRecirc(); - if ( PRE_TREATMENT_RECIRC_STOPPED_STATE != getPreTreatmentRecircState() ) - { - verifySwitchStatus(); - } - #ifndef _RELEASE_ if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_UI_INTERACTION ) ) { @@ -1107,12 +1042,12 @@ } else { - U32 volume = FILL_RESERVOIR_TO_VOLUME_ML; + U32 volume = PRE_TREATMENT_FLUSH_RESERVOIR_VOLUME_ML; #ifndef _RELEASE_ - if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_PRIMING ) != SW_CONFIG_ENABLE_VALUE ) + if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_PRIMING ) ) { - volume = PRE_TREATMENT_FLUSH_RESERVOIR_VOLUME_ML; + volume = FILL_RESERVOIR_TO_VOLUME_ML; } #endif @@ -1146,7 +1081,7 @@ } else if ( dgCmdResp.rejectCode != DG_CMD_REQUEST_REJECT_REASON_NONE ) { - // TODO - s/w fault + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_DG_INVALID_FILL_COMMAND_REJECTED, dgCmdResp.rejectCode ) } } @@ -1183,10 +1118,13 @@ state = PRE_TREATMENT_RESERVOIR_MGMT_WAIT_FOR_RESERVOIR_SWITCH_STATE; reservoirFilledStatus[ DG_RESERVOIR_1 ] = TRUE; } - else if ( ( TRUE == reservoirFilledStatus[ DG_RESERVOIR_1 ] ) && ( FALSE == reservoirFilledStatus[ DG_RESERVOIR_2 ] ) ) + else { - reservoirFilledStatus[ DG_RESERVOIR_2 ] = TRUE; - state = PRE_TREATMENT_RESERVOIR_MGMT_COMPLETE_STATE; + if ( FALSE == reservoirFilledStatus[ DG_RESERVOIR_2 ] ) + { + reservoirFilledStatus[ DG_RESERVOIR_2 ] = TRUE; + state = PRE_TREATMENT_RESERVOIR_MGMT_COMPLETE_STATE; + } } } else @@ -1207,7 +1145,7 @@ cmdSetDGActiveReservoir( DG_RESERVOIR_1 ); } } - else if ( ( TRUE == reservoirFlushedStatus[ DG_RESERVOIR_1 ] ) && ( FALSE == reservoirFlushedStatus[ DG_RESERVOIR_2 ] ) ) + else { reservoirFlushedStatus[ DG_RESERVOIR_2 ] = TRUE; cmdSetDGActiveReservoir( DG_RESERVOIR_2 );