Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -r69656450319bfcfdeffdc8f11e88084d4ea38d7d -rc965df576088a9b2eb23d826f8f7e9f03d1bc962 --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 69656450319bfcfdeffdc8f11e88084d4ea38d7d) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision c965df576088a9b2eb23d826f8f7e9f03d1bc962) @@ -90,10 +90,6 @@ static OVERRIDE_U32_T dialInPumpOcclusion = {0, 0, 0, 0 }; ///< Measured dialysate inlet pump occlusion pressure. static OVERRIDE_U32_T dialOutPumpOcclusion = {0, 0, 0, 0 }; ///< Measured dialysate outlet pump occlusion pressure. -/// Current pressure self-test state. -static PRESSURE_SELF_TEST_STATE_T presOcclSelfTestState = PRESSURE_SELF_TEST_STATE_START; -static U32 bloodPumpSelfTestTimerCount = 0; ///< Timer counter for pressure self-test. - static U32 staleVenousPressureCtr = 0; ///< Timer counter for stale venous pressure reading. // ********** private function prototypes ********** Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r69656450319bfcfdeffdc8f11e88084d4ea38d7d -rc965df576088a9b2eb23d826f8f7e9f03d1bc962 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 69656450319bfcfdeffdc8f11e88084d4ea38d7d) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision c965df576088a9b2eb23d826f8f7e9f03d1bc962) @@ -407,6 +407,11 @@ execPrime(); + if ( FALSE == getDoorState() ) + { + activateAlarmNoData( ALARM_ID_CARTRIDGE_DOOR_OPENED ); + } + if ( TRUE == isWetSelfTestsPassed() ) { state = HD_PRE_TREATMENT_RECIRCULATE_START_STATE; Index: firmware/App/Modes/Prime.c =================================================================== diff -u -r88696f3c6a5d82503064a73433d39fa000728d93 -rc965df576088a9b2eb23d826f8f7e9f03d1bc962 --- firmware/App/Modes/Prime.c (.../Prime.c) (revision 88696f3c6a5d82503064a73433d39fa000728d93) +++ firmware/App/Modes/Prime.c (.../Prime.c) (revision c965df576088a9b2eb23d826f8f7e9f03d1bc962) @@ -22,6 +22,7 @@ #include "DialOutFlow.h" #include "DGInterface.h" #include "Prime.h" +#include "SelfTests.h" #include "SystemCommMessages.h" #include "TaskGeneral.h" #include "Timers.h" @@ -79,7 +80,6 @@ static U32 primePauseStartTime; ///< Priming pause start time (in ms). static U32 primeStatusBroadcastTimerCounter; ///< Prime status data broadcast timer counter used to schedule when to transmit data. -static BOOL wetSelfTestsResult; ///< Result of wet self-tests. static BOOL primeStartReqReceived; ///< Flag to indicate if a request to start priming has been received. static BOOL primePauseReqReceived; ///< Flag to indicate if a request to pause priming has been received. static BOOL primeResumeReqReceived; ///< Flag to indicate if a request to resume priming has been received. @@ -135,7 +135,6 @@ currentPrimeState = HD_PRIME_START_STATE; currentReservoirMgmtState = PRIME_RESERVOIR_MGMT_START_STATE; - wetSelfTestsResult = FALSE; primeStartTime = getMSTimerCount(); primePauseStartTime = 0; primeStatusBroadcastTimerCounter = 0; @@ -223,19 +222,6 @@ /*********************************************************************//** * @brief - * The isWetSelfTestsPassed function returns the status of wet self-tests - * after priming. - * @details Inputs: none - * @details Outputs: none - * @return TRUE if wet self-tests passed, otherwise FALSE - *************************************************************************/ -BOOL isWetSelfTestsPassed( void ) -{ - return wetSelfTestsResult; -} - -/*********************************************************************//** - * @brief * The signalAlarmActionToPrimeMode function executes the given alarm action * as appropriate while in Prime Mode. * @details Inputs: none @@ -687,7 +673,9 @@ static HD_PRE_TREATMENT_PRIME_STATE_T handlePrimeWetSelfTestsState( void ) { // TODO Perform wet self-tests and collect result - wetSelfTestsResult = TRUE; + execWetSelfTests(); + + return HD_PRIME_WET_SELF_TESTS_STATE; } Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r69656450319bfcfdeffdc8f11e88084d4ea38d7d -rc965df576088a9b2eb23d826f8f7e9f03d1bc962 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 69656450319bfcfdeffdc8f11e88084d4ea38d7d) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision c965df576088a9b2eb23d826f8f7e9f03d1bc962) @@ -62,18 +62,29 @@ DRY_SELF_TESTS_AIR_TRAP_STATE, ///< Air trap fill level ultrasonic sensor dry self-tests state. DRY_SELF_TESTS_OCCLUSION_SENSORS_STATE, ///< Occlusion sensors dry self-tests state. DRY_SELF_TESTS_COMPLETE, ///< Dry self-test complete state. - NUM_OF_DRY_SELF_TESTS_STATES ///< Number of no cartridge self-tests states. + NUM_OF_DRY_SELF_TESTS_STATES ///< Number of dry self-tests states. } DRY_SELF_TESTS_STATE_T; +/// Wet self-tests state machine. +typedef enum Wet_Self_Tests_state +{ + WET_SELF_TESTS_START_STATE = 0, ///< Wet self-tests starting state. + WET_SELF_TESTS_COMPLETE, ///< Wet self-test complete state. + NUM_OF_WET_SELF_TESTS_STATES ///< Number of wet self-tests states. +} WET_SELF_TESTS_STATE_T; + // ********** private data ********** -static BOOL noCartSelfTestsResult; -static NO_CART_SELF_TESTS_STATE_T currentNoCartSelfTestsState; -static U32 runPumpStartTime; +static BOOL noCartSelfTestsResult; ///< Result of no cartridge self-tests. +static NO_CART_SELF_TESTS_STATE_T currentNoCartSelfTestsState; ///< Current state of the no cartridge self-tests state machine. +static U32 runPumpStartTime; ///< Beginning time when pumps start running -static BOOL drySelfTestsResult; -static DRY_SELF_TESTS_STATE_T currentDrySelfTestsState; +static BOOL drySelfTestsResult; ///< Result of dry self-tests. +static DRY_SELF_TESTS_STATE_T currentDrySelfTestsState; ///< Current state of the dry self-tests state machine. +static BOOL wetSelfTestsResult; ///< Result of wet self-tests. +static WET_SELF_TESTS_STATE_T currentWetSelfTestsState; ///< Current state of the wet self-tests state machine. + // ********** private function prototypes ********** /*********************************************************************//** @@ -317,4 +328,57 @@ return drySelfTestsResult; } +/*********************************************************************//** + * @brief + * The transitionToWetSelfTests function resets anything required before + * the start of wet self-tests. + * @details Inputs: none + * @details Outputs: Wet self-tests re-initialized. + * @return none + *************************************************************************/ +void transitionToWetSelfTests() +{ + wetSelfTestsResult = FALSE; + currentWetSelfTestsState = WET_SELF_TESTS_START_STATE; +} + +/*********************************************************************//** + * @brief + * The execWetSelfTests function executes the wet self-tests state machine. + * @details Inputs: currentWetSelfTestsState + * @details Outputs: currentWetSelfTestsState, wetSelfTestsResult + * @return none + *************************************************************************/ +void execWetSelfTests( void ) +{ + // execute wet self-tests state machine + switch ( currentWetSelfTestsState ) + { + case WET_SELF_TESTS_START_STATE: + currentWetSelfTestsState = WET_SELF_TESTS_COMPLETE; + break; + + case WET_SELF_TESTS_COMPLETE: + wetSelfTestsResult = TRUE; + break; + + default: + currentWetSelfTestsState = WET_SELF_TESTS_COMPLETE; + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_HD_INVALID_WET_SELF_TEST_STATE, (U32)currentWetSelfTestsState ); + break; + } +} + +/*********************************************************************//** + * @brief + * The isDrySelfTestsPassed function returns the status of wet self-tests. + * @details Inputs: none + * @details Outputs: none + * @return TRUE if wet self-tests passed, otherwise FALSE + *************************************************************************/ +BOOL isWetSelfTestsPassed( void ) +{ + return wetSelfTestsResult; +} + /**@}*/ Index: firmware/App/Modes/SelfTests.h =================================================================== diff -u -rc62f5bfffa8e54b86c8e320bee344308b368f96d -rc965df576088a9b2eb23d826f8f7e9f03d1bc962 --- firmware/App/Modes/SelfTests.h (.../SelfTests.h) (revision c62f5bfffa8e54b86c8e320bee344308b368f96d) +++ firmware/App/Modes/SelfTests.h (.../SelfTests.h) (revision c965df576088a9b2eb23d826f8f7e9f03d1bc962) @@ -43,6 +43,10 @@ void execDrySelfTests( void ); BOOL isDrySelfTestsPassed( void ); +void transitionToWetSelfTests(); +void execWetSelfTests( void ); +BOOL isWetSelfTestsPassed( void ); + /**@}*/ #endif Index: firmware/App/Services/AlarmMgmt.h =================================================================== diff -u -r9e50725381de45b2a32044f73e32c2c3ba0cc27a -rc965df576088a9b2eb23d826f8f7e9f03d1bc962 --- firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 9e50725381de45b2a32044f73e32c2c3ba0cc27a) +++ firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision c965df576088a9b2eb23d826f8f7e9f03d1bc962) @@ -241,6 +241,7 @@ SW_FAULT_ID_MODE_PRIME_INVALID_ALARM_ACTION, SW_FAULT_ID_HD_INVALID_NO_CARTRIDGE_SELF_TEST_STATE, SW_FAULT_ID_HD_INVALID_DRY_SELF_TEST_STATE, + SW_FAULT_ID_HD_INVALID_WET_SELF_TEST_STATE, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T;