Index: firmware/App/Controllers/AirTrap.c =================================================================== diff -u -rd3b7ae356aae29c99cb039713a2e120fdbce5a9c -re5d1d67106a93a6cd1b5692b586625d715732e2f --- firmware/App/Controllers/AirTrap.c (.../AirTrap.c) (revision d3b7ae356aae29c99cb039713a2e120fdbce5a9c) +++ firmware/App/Controllers/AirTrap.c (.../AirTrap.c) (revision e5d1d67106a93a6cd1b5692b586625d715732e2f) @@ -49,15 +49,6 @@ NUM_OF_AIR_TRAP_STATES ///< Number of air trap controller states } AIR_TRAP_STATE_T; -/// Defined states for the air trap self-test state machine. -typedef enum AirTrap_Self_Test_States -{ - AIR_TRAP_SELF_TEST_STATE_START = 0, ///< Self-test start state - AIR_TRAP_SELF_TEST_STATE_IN_PROGRESS, ///< Self-test in progress state - AIR_TRAP_SELF_TEST_STATE_COMPLETE, ///< Self-test completed state - NUM_OF_AIR_TRAP_SELF_TEST_STATES ///< Number of air trap self-test states -} AIR_TRAP_SELF_TEST_STATE_T; - // ********** private data ********** static AIR_TRAP_STATE_T airTrapControllerState; ///< Current state of air trap controller state machine. @@ -66,9 +57,6 @@ /// Interval (in ms) at which to publish air trap data to CAN bus. static OVERRIDE_U32_T airTrapDataPublishInterval = { AIR_TRAP_DATA_PUB_INTERVAL, AIR_TRAP_DATA_PUB_INTERVAL, 0, 0 }; static OVERRIDE_U32_T airTrapLevels[ NUM_OF_AIR_TRAP_LEVEL_SENSORS ]; ///< Detected air trap level for each level sensor. - -static AIR_TRAP_SELF_TEST_STATE_T airTrapSelfTestState; ///< Current air trap self-test state. -static U32 airTrapSelfTestTimerCount = 0; ///< Timer counter for air trap self-test. static BOOL pendingStartAirTrapController = FALSE; ///< Flag indicates an air trap controller start request is pending. static BOOL pendingStopAirTrapController = FALSE; ///< Flag indicates an air trap controller stop request is pending. @@ -95,7 +83,6 @@ void initAirTrap( void ) { resetAirTrap(); - airTrapSelfTestState = AIR_TRAP_SELF_TEST_STATE_START; airTrapIllegalLevelSensorsCtr = 0; } Index: firmware/App/Controllers/AirTrap.h =================================================================== diff -u -rd3b7ae356aae29c99cb039713a2e120fdbce5a9c -re5d1d67106a93a6cd1b5692b586625d715732e2f --- firmware/App/Controllers/AirTrap.h (.../AirTrap.h) (revision d3b7ae356aae29c99cb039713a2e120fdbce5a9c) +++ firmware/App/Controllers/AirTrap.h (.../AirTrap.h) (revision e5d1d67106a93a6cd1b5692b586625d715732e2f) @@ -62,8 +62,6 @@ AIR_TRAP_LEVELS_T getAirTrapLevel( AIR_TRAP_LEVEL_SENSORS_T sensor ); -SELF_TEST_STATUS_T execAirTrapTest( void ); - BOOL testSetAirTrapDataPublishIntervalOverride( U32 value ); BOOL testResetAirTrapDataPublishIntervalOverride( void ); BOOL testSetAirTrapLevelOverride( AIR_TRAP_LEVEL_SENSORS_T sensor, AIR_TRAP_LEVELS_T level ); Index: firmware/App/Controllers/DialOutFlow.c =================================================================== diff -u -r6419179374edcd65da462de84e8aeaefb7e20320 -re5d1d67106a93a6cd1b5692b586625d715732e2f --- firmware/App/Controllers/DialOutFlow.c (.../DialOutFlow.c) (revision 6419179374edcd65da462de84e8aeaefb7e20320) +++ firmware/App/Controllers/DialOutFlow.c (.../DialOutFlow.c) (revision e5d1d67106a93a6cd1b5692b586625d715732e2f) @@ -161,8 +161,9 @@ static U32 errorDialOutRotorSpeedPersistTimerCtr = 0; ///< Persistence timer counter for rotor speed error condition. static U32 errorDialOutPumpDirectionPersistTimerCtr = 0; ///< Persistence timer counter for pump direction error condition. -static DIAL_OUT_PUMP_SELF_TEST_STATE_T dialOutPumpSelfTestState = DIAL_OUT_PUMP_SELF_TEST_STATE_START; ///< Current state of the dialysate outlet pump self-test state machine. -static U32 dialOutPumpSelfTestTimerCount = 0; ///< Timer counter for time reference during self-test. +// TODO: Enable when self-test ready +//static DIAL_OUT_PUMP_SELF_TEST_STATE_T dialOutPumpSelfTestState = DIAL_OUT_PUMP_SELF_TEST_STATE_START; ///< Current state of the dialysate outlet pump self-test state machine. +//static U32 dialOutPumpSelfTestTimerCount = 0; ///< Timer counter for time reference during self-test. // ********** private function prototypes ********** Index: firmware/App/Controllers/SyringePump.c =================================================================== diff -u -r4d94719436e8a8822198067f59147e3e024ac42c -re5d1d67106a93a6cd1b5692b586625d715732e2f --- firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision 4d94719436e8a8822198067f59147e3e024ac42c) +++ firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision e5d1d67106a93a6cd1b5692b586625d715732e2f) @@ -201,10 +201,11 @@ static F32 syringePumpDACVref; ///< DAC Vref setting for force sensor. static U08 lastSyringePumpADCReadCtr; ///< Remember last ADC read counter to check new reads are fresh. + +// TODO: Enable when self-test ready +// static SYRINGE_PUMP_SELF_TEST_STATE_T syringePumpSelfTestState; ///< Current syringe pump self-test state. +// static U32 syringePumpSelfTestTimerCount; ///< Timer counter for syringe pump self-test. -static SYRINGE_PUMP_SELF_TEST_STATE_T syringePumpSelfTestState; ///< Current syringe pump self-test state. -static U32 syringePumpSelfTestTimerCount; ///< Timer counter for syringe pump self-test. - // ********** private function prototypes ********** static void resetSyringePumpRequestFlags( void ); @@ -245,7 +246,6 @@ { syringePumpState = SYRINGE_PUMP_INIT_STATE; heparinDeliveryState = HEPARIN_STATE_OFF; - syringePumpSelfTestState = SYRINGE_PUMP_SELF_TEST_STATE_START; syringePumpSetRate = 0.0; syringePumpSetToggleTime = 0; @@ -257,7 +257,6 @@ syringePumpEncoderMeasuredDirection = MOTOR_DIR_FORWARD; syringePumpDataPublicationTimerCounter = 0; - syringePumpSelfTestTimerCount = 0; syringePumpSpeedCalcTimerCounter = 0; syringePumpRampTimerCtr = 0; Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -r27f3db92495948d4c1192421c1b0c20338c4a034 -re5d1d67106a93a6cd1b5692b586625d715732e2f --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision 27f3db92495948d4c1192421c1b0c20338c4a034) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision e5d1d67106a93a6cd1b5692b586625d715732e2f) @@ -211,11 +211,15 @@ static const U16 VALVE_CONTROL_MODES_RESET_BITS[ NUM_OF_VALVES ] = { VDI_RESET_CONTROL_BIT_MASK, VDO_RESET_CONTROL_BIT_MASK, VBA_RESET_CONTROL_BIT_MASK, VBV_RESET_CONTROL_BIT_MASK }; ///< Valves control modes rest bits +#ifndef DISABLE_3WAY_VALVES +#ifndef DISABLE_VALVE_ALARMS static const U16 VALVE_CONTROL_STATUS_BITS[ NUM_OF_VALVES ][ NUM_OF_VALVE_CONTROL_STATUS ] = { { VDI_INIT_STATUS_BIT_MASK, VDI_ENABLE_PID_STATUS_BIT_MASK, VDI_ENABLE_BYPASS_STATUS_BIT_MASK, VDI_RESET_CONTROL_BIT_MASK }, { VDO_INIT_STATUS_BIT_MASK, VDO_ENABLE_PID_STATUS_BIT_MASK, VDO_ENABLE_BYPASS_STATUS_BIT_MASK, VDO_RESET_CONTROL_BIT_MASK }, { VBA_INIT_STATUS_BIT_MASK, VBA_ENABLE_PID_STATUS_BIT_MASK, VBA_ENABLE_BYPASS_STATUS_BIT_MASK, VBA_RESET_CONTROL_BIT_MASK }, { VBV_INIT_STATUS_BIT_MASK, VBV_ENABLE_PID_STATUS_BIT_MASK, VBV_ENABLE_BYPASS_STATUS_BIT_MASK, VBV_RESET_CONTROL_BIT_MASK } }; ///< Valves control status bits +#endif +#endif static U16 valvesControlSetBits = 0x0000; ///< Valves control set bit static OPN_CLS_STATE_T valveAirTrapStatus; ///< Air trap valve status (open/close) @@ -963,12 +967,12 @@ *************************************************************************/ static BOOL areValvesFunctional( void ) { - VALVE_T valve; - VALVE_MODE_T mode; BOOL result = TRUE; - #ifndef DISABLE_3WAY_VALVES #ifndef DISABLE_VALVE_ALARMS + VALVE_T valve; + VALVE_MODE_T mode; + // Get the status of the valves from FPGA U16 status = getFPGAValvesStatus(); Index: firmware/App/Modes/BloodPrime.c =================================================================== diff -u -rdb22e9d530c5c9d62b02e6dcc72ed96fb67c165a -re5d1d67106a93a6cd1b5692b586625d715732e2f --- firmware/App/Modes/BloodPrime.c (.../BloodPrime.c) (revision db22e9d530c5c9d62b02e6dcc72ed96fb67c165a) +++ firmware/App/Modes/BloodPrime.c (.../BloodPrime.c) (revision e5d1d67106a93a6cd1b5692b586625d715732e2f) @@ -39,10 +39,13 @@ // TODO - get from Systems when available #define TARGET_BLOOD_PRIME_VOLUME_ML 300.0 ///< Target blood prime volume to prime the blood side circuit (in mL). #define MIN_RAMP_TIME_SEC 60 ///< Minimum ramp time for blood prime (in seconds). + +#ifndef DISABLE_PUMP_FLOW_CHECKS /// Maximum blood prime volume measured by independent means (as % of target). static const F32 MAX_BLOOD_PRIME_SAFETY_VOLUME_ML = ( TARGET_BLOOD_PRIME_VOLUME_ML * 1.2 ); /// Minimum blood prime volume measured by independent means (as % of target). static const F32 MIN_BLOOD_PRIME_SAFETY_VOLUME_ML = ( TARGET_BLOOD_PRIME_VOLUME_ML * 0.8 ); +#endif /// Initial flow rate for blood pump when starting blood prime operation. #define BLOOD_PRIME_INIT_BP_FLOW_RATE_ML_MIN 100 Index: firmware/App/Modes/ConsumableSelfTest.c =================================================================== diff -u -r9feea867113c62088f0ce91750127972dbd9bf53 -re5d1d67106a93a6cd1b5692b586625d715732e2f --- firmware/App/Modes/ConsumableSelfTest.c (.../ConsumableSelfTest.c) (revision 9feea867113c62088f0ce91750127972dbd9bf53) +++ firmware/App/Modes/ConsumableSelfTest.c (.../ConsumableSelfTest.c) (revision e5d1d67106a93a6cd1b5692b586625d715732e2f) @@ -74,10 +74,11 @@ switch( currentConsumableSelfTestState ) { case CONSUMABLE_SELF_TESTS_INSTALL_STATE: -#ifndef SKIP_CONSUMABLE_TESTS +#ifdef SKIP_CONSUMABLE_TESTS + consumableInstallConfirmed = TRUE; +#endif // TODO: Check for DG straw door status to be open once DG door driver implemented if ( TRUE == consumableInstallConfirmed ) -#endif { consumableInstallConfirmed = FALSE; #ifndef SKIP_CONSUMABLE_TESTS Index: firmware/App/Modes/ModePostTreat.c =================================================================== diff -u -r9feea867113c62088f0ce91750127972dbd9bf53 -re5d1d67106a93a6cd1b5692b586625d715732e2f --- firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 9feea867113c62088f0ce91750127972dbd9bf53) +++ firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision e5d1d67106a93a6cd1b5692b586625d715732e2f) @@ -263,9 +263,10 @@ if ( STATE_CLOSED == getFPGADoorState() ) { -#ifndef SKIP_UI_INTERACTION - if ( TRUE == patientDisconnectionConfirmed ) +#ifdef SKIP_UI_INTERACTION + patientDisconnectionConfirmed = TRUE; #endif + if ( TRUE == patientDisconnectionConfirmed ) { patientDisconnectionConfirmed = FALSE; state = HD_POST_TREATMENT_DRAIN_RESERVOIRS_STATE; @@ -309,9 +310,10 @@ if ( DRAIN_COMPLETE_STATE == currentDrainReservoirState ) { -#ifndef SKIP_UI_INTERACTION - if ( TRUE == disposableRemovalConfirmed ) +#ifdef SKIP_UI_INTERACTION + disposableRemovalConfirmed = TRUE; #endif + if ( TRUE == disposableRemovalConfirmed ) { disposableRemovalConfirmed = FALSE; state = HD_POST_TREATMENT_VERIFY_STATE; Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r9feea867113c62088f0ce91750127972dbd9bf53 -re5d1d67106a93a6cd1b5692b586625d715732e2f --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 9feea867113c62088f0ce91750127972dbd9bf53) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision e5d1d67106a93a6cd1b5692b586625d715732e2f) @@ -328,9 +328,11 @@ BOOL accepted = FALSE; REQUEST_REJECT_REASON_CODE_T rejReason = REQUEST_REJECT_REASON_NO_PATIENT_CONNECTION_CONFIRM; -#ifndef SKIP_UI_INTERACTION - if ( TRUE == patientConnectionConfirm ) +#ifdef SKIP_UI_INTERACTION + patientConnectionConfirm = TRUE; #endif + + if ( TRUE == patientConnectionConfirm ) { if ( ( MODE_PRET == getCurrentOperationMode() ) && ( HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE == currentPreTreatmentState ) ) { @@ -615,9 +617,11 @@ { HD_PRE_TREATMENT_MODE_STATE_T state = HD_PRE_TREATMENT_CART_INSTALL_STATE; -#ifndef SKIP_UI_INTERACTION - if ( TRUE == confirmInstallRequested ) +#ifdef SKIP_UI_INTERACTION + confirmInstallRequested = TRUE; #endif + + if ( TRUE == confirmInstallRequested ) { confirmInstallRequested = FALSE; state = HD_PRE_TREATMENT_SELF_TEST_DRY_STATE; @@ -728,9 +732,11 @@ execPreTreatmentRecirc(); -#ifndef SKIP_UI_INTERACTION - if ( TRUE == continueToTreatmentRequested ) +#ifdef SKIP_UI_INTERACTION + continueToTreatmentRequested = TRUE; #endif + + if ( TRUE == continueToTreatmentRequested ) { continueToTreatmentRequested = FALSE; state = HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE; Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -r9feea867113c62088f0ce91750127972dbd9bf53 -re5d1d67106a93a6cd1b5692b586625d715732e2f --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 9feea867113c62088f0ce91750127972dbd9bf53) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision e5d1d67106a93a6cd1b5692b586625d715732e2f) @@ -213,6 +213,18 @@ /*********************************************************************//** * @brief + * The getPreviousOperationMode function gets the previous operation mode. + * @details Inputs: lastMode + * @details Outputs: none + * @return the previous operation mode + *************************************************************************/ +HD_OP_MODE_T getPreviousOperationMode( void ) +{ + return lastMode; +} + +/*********************************************************************//** + * @brief * The initiateAlarmAction function initiate an alarm or alarm recovery * action according to the current operation mode. * @details Inputs: currentMode Index: firmware/App/Modes/OperationModes.h =================================================================== diff -u -r8c00197ce69e80f1967aa3f2eb36beb3573f36f3 -re5d1d67106a93a6cd1b5692b586625d715732e2f --- firmware/App/Modes/OperationModes.h (.../OperationModes.h) (revision 8c00197ce69e80f1967aa3f2eb36beb3573f36f3) +++ firmware/App/Modes/OperationModes.h (.../OperationModes.h) (revision e5d1d67106a93a6cd1b5692b586625d715732e2f) @@ -37,6 +37,7 @@ void execOperationModes( void ); // Execute the operation modes state machine (scheduled periodic call) void requestNewOperationMode( HD_OP_MODE_T newMode ); // Request a transition to a new operation mode HD_OP_MODE_T getCurrentOperationMode( void ); // Get the current operation mode +HD_OP_MODE_T getPreviousOperationMode( void ); // Get the previous operation mode void initiateAlarmAction( ALARM_ACTION_T action ); // Initiate an alarm or alarm recovery action according to current op mode BOOL testSetOperationMode( HD_OP_MODE_T newMode ); // Force transition to a given mode (if allowed) Index: firmware/App/Modes/Prime.c =================================================================== diff -u -r9feea867113c62088f0ce91750127972dbd9bf53 -re5d1d67106a93a6cd1b5692b586625d715732e2f --- firmware/App/Modes/Prime.c (.../Prime.c) (revision 9feea867113c62088f0ce91750127972dbd9bf53) +++ firmware/App/Modes/Prime.c (.../Prime.c) (revision e5d1d67106a93a6cd1b5692b586625d715732e2f) @@ -359,9 +359,10 @@ // Keep updating start time until the user requested priming primeStartTime = getMSTimerCount(); -#ifndef SKIP_UI_INTERACTION - if ( TRUE == primeStartRequested ) +#ifdef SKIP_UI_INTERACTION + primeStartRequested = TRUE; #endif + if ( TRUE == primeStartRequested ) { primeStartRequested = FALSE; state = HD_PRIME_SALINE_SETUP_STATE; Index: firmware/App/Modes/Rinseback.c =================================================================== diff -u -rd3b7ae356aae29c99cb039713a2e120fdbce5a9c -re5d1d67106a93a6cd1b5692b586625d715732e2f --- firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision d3b7ae356aae29c99cb039713a2e120fdbce5a9c) +++ firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision e5d1d67106a93a6cd1b5692b586625d715732e2f) @@ -43,10 +43,13 @@ #define RINSEBACK_FLOW_RATE_ADJ_ML_MIN 25 ///< Adjustment amount (in mL/min) to apply when user requests increase/decrease in flow rate. #define MIN_RINSEBACK_FLOW_RATE_ML_MIN 50 ///< Minimum rinseback flow rate (in mL/min). #define MAX_RINSEBACK_FLOW_RATE_ML_MIN 150 ///< Maximum rinseback flow rate (in mL/min). + +#ifndef DISABLE_PUMP_FLOW_CHECKS /// Maximum rinseback volume measured by independent means (as % of target). static const F32 MAX_RINSEBACK_SAFETY_VOLUME_ML = ( TARGET_RINSEBACK_VOLUME_ML * 1.2 ); /// Minimum rinseback volume measured by independent means (as % of target). static const F32 MIN_RINSEBACK_SAFETY_VOLUME_ML = ( TARGET_RINSEBACK_VOLUME_ML * 0.8 ); +#endif /// Interval at which rinseback progress is to be published to UI. static const U32 RINSEBACK_DATA_PUBLISH_INTERVAL = ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ); Index: firmware/App/Modes/SampleWater.c =================================================================== diff -u -r9feea867113c62088f0ce91750127972dbd9bf53 -re5d1d67106a93a6cd1b5692b586625d715732e2f --- firmware/App/Modes/SampleWater.c (.../SampleWater.c) (revision 9feea867113c62088f0ce91750127972dbd9bf53) +++ firmware/App/Modes/SampleWater.c (.../SampleWater.c) (revision e5d1d67106a93a6cd1b5692b586625d715732e2f) @@ -124,9 +124,10 @@ { SELF_TEST_STATUS_T result = SELF_TEST_STATUS_FAILED; -#ifndef SKIP_SAMPLE_WATER - if ( TRUE == sampleWaterResult ) +#ifdef SKIP_SAMPLE_WATER + sampleWaterResult = TRUE; #endif + if ( TRUE == sampleWaterResult ) { result = SELF_TEST_STATUS_PASSED; }