Index: firmware/App/Controllers/Ejector.c =================================================================== diff -u -r395522dffef1348e176564925656012f529c1910 -rf054fdd3579dacb03b5b41a363e259949ff63965 --- firmware/App/Controllers/Ejector.c (.../Ejector.c) (revision 395522dffef1348e176564925656012f529c1910) +++ firmware/App/Controllers/Ejector.c (.../Ejector.c) (revision f054fdd3579dacb03b5b41a363e259949ff63965) @@ -36,6 +36,9 @@ #define EJECTOR_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Ejector data publish interval. #define DATA_PUBLISH_COUNTER_START_COUNT 13 ///< Ejector data publish start counter. +/// Ejector homing post test time interval (ms/task time) +#define EJECTOR_HOME_POST_TIMEOUT ( 10 * MS_PER_SECOND / TASK_GENERAL_INTERVAL ) + #define EJECTOR_RETRACT_MOTOR_SPEED_RPM -350.0F ///< Ejector motor retract speed (in RPM). #define EJECTOR_EXTEND_MOTOR_SPEED_RPM 162.5F ///< Ejector motor extend speed (in RPM). #define EJECTOR_OFF_MOTOR_SPEED_RPM 0.0F ///< Ejector motor extend speed (in RPM). @@ -62,6 +65,8 @@ static BOOL ejectorExtendRequested; ///< Flag indicating that ejector extend operation is requested. static BOOL ejectorAbortRequested; ///< Flag indicating that ejector abort operation in requested. +static U32 ejectorHomePostTimerCounter; ///< TImer counter for ejector homing POST test. + // ********** private function prototypes ********** static EJECTOR_STATE_T handleEjectorStartState( void ); @@ -99,6 +104,7 @@ ejectorDataPublishInterval.ovData = EJECTOR_DATA_PUB_INTERVAL; ejectorDataPublishInterval.ovInitData = EJECTOR_DATA_PUB_INTERVAL; ejectorDataPublishInterval.override = OVERRIDE_RESET; + ejectorHomePostTimerCounter = 0; } /*********************************************************************//** @@ -536,7 +542,38 @@ } } +/*********************************************************************//** + * @brief + * The execEjectorHomingTest function executes the ejector homing POST test. + * Commands the ejector to home on first call. + * @details \b Inputs: ejectorHomePostTimerCounter + * @details \b Outputs: ejectorHomePostTimerCounter + * @return in progress, passed, or failed + *************************************************************************/ +SELF_TEST_STATUS_T execEjectorHomingTest( void ) +{ + SELF_TEST_STATUS_T result = SELF_TEST_STATUS_IN_PROGRESS; + if ( 0U == ejectorHomePostTimerCounter ) + { + homeEjector(); + } + + if ( ++ejectorHomePostTimerCounter >= EJECTOR_HOME_POST_TIMEOUT ) + { + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_TD_EJECTOR_POST_TEST_FAILED, (U32)getEjectorState() ); + result = SELF_TEST_STATUS_FAILED; + } + else if ( EJECTOR_STATE_RETRACTED == getEjectorState() ) + { + ejectorHomePostTimerCounter = 0; + result = SELF_TEST_STATUS_PASSED; + } + + return result; +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ Index: firmware/App/Controllers/Ejector.h =================================================================== diff -u -r395522dffef1348e176564925656012f529c1910 -rf054fdd3579dacb03b5b41a363e259949ff63965 --- firmware/App/Controllers/Ejector.h (.../Ejector.h) (revision 395522dffef1348e176564925656012f529c1910) +++ firmware/App/Controllers/Ejector.h (.../Ejector.h) (revision f054fdd3579dacb03b5b41a363e259949ff63965) @@ -69,6 +69,8 @@ BOOL extendEjector( void ); void abortEjectorOperation( void ); +SELF_TEST_STATUS_T execEjectorHomingTest( void ); + BOOL testEjectorDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testEjectorCommand( MESSAGE_T *message ); Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -r5a29e093e8a11f971c312cab5f6e7fedae2953db -rf054fdd3579dacb03b5b41a363e259949ff63965 --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 5a29e093e8a11f971c312cab5f6e7fedae2953db) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision f054fdd3579dacb03b5b41a363e259949ff63965) @@ -54,9 +54,6 @@ /// Maximum wait time for UI to send its final POST result. #define POST_UI_MAX_WAIT_TIME ( 2 * MS_PER_SECOND / TASK_GENERAL_INTERVAL ) -/// Ejector homing post test time interval (ms/task time) -#define EJECTOR_HOME_POST_TIMEOUT ( 10 * MS_PER_SECOND / TASK_GENERAL_INTERVAL ) - // ********** private data ********** static TD_POST_STATE_T postState; ///< Current state of initialize and POST mode. @@ -70,7 +67,6 @@ static BOOL dgPOSTResultReceived; ///< Have we received a final POST result from the DG? static U32 waitForUIPostTimerCtr; ///< Timer counter to limit wait for UI final POST result. static U32 postCompleteDelayTimerCtr; ///< Timer counter for 2 second delay after POST completes and before transitioning to Standbymode. -static U32 ejectorHomePostTimerCounter; ///< TImer counter for ejector homing POST test. static UI_VERSIONS_T uiVersion = { 0, 0, 0, 0, 0 }; ///< Version and compatibility information reported by UI. static DD_VERSIONS_T dgVersion = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; ///< Version and compatibility information reported by DG. @@ -84,7 +80,6 @@ static TD_POST_STATE_T handlePOSTStateStart( void ); static SELF_TEST_STATUS_T execFWCompatibilityTest( void ); static SELF_TEST_STATUS_T execUITest( void ); -static SELF_TEST_STATUS_T execEjectorHomingTest( void ); /*********************************************************************//** * @brief @@ -106,7 +101,6 @@ waitForUIPostTimerCtr = 0; postCompleteDelayTimerCtr = 0; startPOSTDelayCounter = 0; - ejectorHomePostTimerCounter = 0; } /*********************************************************************//** @@ -261,6 +255,7 @@ testStatus = execEjectorHomingTest(); postState = handlePOSTStatus( testStatus ); break; + // Should be last POST (and last POST test must be a test that completes in a single call) case POST_STATE_FPGA: // testStatus = execFPGATest(); @@ -575,34 +570,4 @@ return result; } -/*********************************************************************//** - * @brief - * The execEjectorHomingTest function executes the ejector homing POST test. - * Commands the ejector to home on first call. - * @details \b Inputs: ejectorHomePostTimerCounter - * @details \b Outputs: ejectorHomePostTimerCounter - * @return in progress, passed, or failed - *************************************************************************/ -static SELF_TEST_STATUS_T execEjectorHomingTest( void ) -{ - SELF_TEST_STATUS_T result = SELF_TEST_STATUS_IN_PROGRESS; - - if ( 0U == ejectorHomePostTimerCounter ) - { - homeEjector(); - } - - if ( ++ejectorHomePostTimerCounter >= EJECTOR_HOME_POST_TIMEOUT ) - { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_TD_EJECTOR_POST_TEST_FAILED, (U32)getEjectorState() ); - result = SELF_TEST_STATUS_FAILED; - } - else if ( EJECTOR_STATE_RETRACTED == getEjectorState() ) - { - result = SELF_TEST_STATUS_PASSED; - } - - return result; -} - /**@}*/ Index: firmware/App/Modes/ModePostTreat.c =================================================================== diff -u -re5988dee900797f8e2b40b3e72d18f390d7b7402 -rf054fdd3579dacb03b5b41a363e259949ff63965 --- firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision e5988dee900797f8e2b40b3e72d18f390d7b7402) +++ firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision f054fdd3579dacb03b5b41a363e259949ff63965) @@ -18,6 +18,7 @@ #include "BloodFlow.h" #include "Buttons.h" #include "Ejector.h" +#include "Messaging.h" #include "ModePostTreat.h" #include "OperationModes.h" #include "PeristalticPump.h" @@ -39,20 +40,23 @@ // ********** private data ********** +static BOOL autoEjectReqReceived; /// Flag indicating that user confirmed to eject tubeset static BOOL autoEjectHomePosCleared; ///< Flag indicating BP rotor has left home position during ejection revolution static BOOL setEntryActuatorCmdIssued; ///< Flag indicates actuator command has been issued on current sub-state entry -static U32 autoEjectTimerCounter; ///< Timer counter shared across all auto-eject sub-states +static U32 autoEjectTimerCounter; ///< Timer counter shared across all auto-eject sub-states static TD_POST_TREATMENT_STATE_T currentPostTreatmentState; ///< Current Post-Treatment sub-state static POST_TX_AUTO_EJECT_STATE_T currentPostTxAutoEjectState; ///< Current Post-Treatment Auto Eject sub-state // ********** private function prototypes ********** +static void setPostTreatStateTransition( TD_POST_TREATMENT_STATE_T state ); static TD_POST_TREATMENT_STATE_T handlePatientDisconnectionState( void ); static TD_POST_TREATMENT_STATE_T handleAutoEjectState( void ); static TD_POST_TREATMENT_STATE_T handleDisposableRemovalState(void ); static TD_POST_TREATMENT_STATE_T handleVerifyState( void ); +static POST_TX_AUTO_EJECT_STATE_T handleAutoEjectAwaitConfirmState( void ); static POST_TX_AUTO_EJECT_STATE_T handleAutoEjectHomingState( void ); static POST_TX_AUTO_EJECT_STATE_T handleAutoEjectExtendingEjectorState( void ); static POST_TX_AUTO_EJECT_STATE_T handleAutoEjectEjectingState( void ); @@ -68,10 +72,12 @@ void initPostTreatmentMode( void ) { currentPostTreatmentState = TD_POST_TREATMENT_AUTO_EJECT_STATE; - currentPostTxAutoEjectState = POST_TX_AUTO_EJECT_STATE_HOMING; + currentPostTxAutoEjectState = POST_TX_AUTO_EJECT_STATE_AWAIT_CONFIRMATION; + autoEjectReqReceived = FALSE; autoEjectHomePosCleared = FALSE; setEntryActuatorCmdIssued = FALSE; autoEjectTimerCounter = 0; + setPostTreatStateTransition( currentPostTreatmentState ); } /*********************************************************************//** @@ -91,6 +97,32 @@ return (U32)currentPostTreatmentState; } +static void setPostTreatStateTransition( TD_POST_TREATMENT_STATE_T state ) +{ + switch( state ) + { + case TD_POST_TREATMENT_PATIENT_DISCONNECTION_STATE: + //TODO: actuator configuration; + break; + + case TD_POST_TREATMENT_AUTO_EJECT_STATE: + signalBloodPumpHardStop(); + break; + + case TD_POST_TREATMENT_DISPOSABLE_REMOVAL_STATE: + //TODO: actuator configuration; + break; + + case TD_POST_TREATMENT_VERIFY_STATE: + //TODO: actuator configuration; + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_POST_TREATMENT_INVALID_STATE1, currentPostTreatmentState ); + break; + } +} + /*********************************************************************//** * @brief * The execPostTreatmentMode function executes the Post-Treatment @@ -102,12 +134,8 @@ U32 execPostTreatmentMode( void ) { BOOL stop = isStopButtonPressed(); + TD_POST_TREATMENT_STATE_T prevPostTreatmentState = currentPostTreatmentState; - if ( TRUE == stop ) - { - activateAlarmNoData( ALARM_ID_TD_TREATMENT_STOPPED_BY_USER ); - } - // Execute mode state machine switch ( currentPostTreatmentState ) { @@ -132,6 +160,11 @@ break; } + if ( prevPostTreatmentState != currentPostTreatmentState) + { + setPostTreatStateTransition( currentPostTreatmentState ); + } + return (U32)currentPostTreatmentState; } @@ -151,6 +184,10 @@ switch ( currentPostTxAutoEjectState ) { + case POST_TX_AUTO_EJECT_STATE_AWAIT_CONFIRMATION: + currentPostTxAutoEjectState = handleAutoEjectAwaitConfirmState(); + break; + case POST_TX_AUTO_EJECT_STATE_HOMING: currentPostTxAutoEjectState = handleAutoEjectHomingState(); break; @@ -173,7 +210,7 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_POST_TREATMENT_INVALID_STATE, (U32)currentPostTxAutoEjectState ); + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_POST_TX_AUTO_EJECT_INVALID_STATE, (U32)currentPostTxAutoEjectState ); break; } @@ -189,6 +226,28 @@ /*********************************************************************//** * @brief + * The handleAutoEjectAwaitConfirmState function handles the Await confirm + * sub-state of the Post-Treatment Auto-Eject state machine. + * Waits for the user request to auto-eject + * @details Inputs: autoEjectConfirmRequest + * @details Outputs: autoEjectConfirmRequest + * @return next Auto-Eject sub-state + *************************************************************************/ +static POST_TX_AUTO_EJECT_STATE_T handleAutoEjectAwaitConfirmState( void ) +{ + POST_TX_AUTO_EJECT_STATE_T subState = POST_TX_AUTO_EJECT_STATE_AWAIT_CONFIRMATION; + + if ( TRUE == autoEjectReqReceived) + { + autoEjectReqReceived = FALSE; + subState = POST_TX_AUTO_EJECT_STATE_HOMING; + } + + return subState; +} + +/*********************************************************************//** + * @brief * The handleAutoEjectHomingState function handles the Homing sub-state * of the Post-Treatment Auto-Eject state machine. * Homes both the blood pump (H4) and ejector (H5) @@ -338,10 +397,56 @@ } else if ( EJECTOR_STATE_RETRACTED == getEjectorState() ) { + // Send auto-eject completion message + UI_RESPONSE_PAYLOAD_T response; + response.accepted = TRUE; + response.rejectionReason = REQUEST_REJECT_REASON_NONE; + sendMessage( MSG_ID_TD_ADJUST_DISPOSABLES_REMOVAL_CONFIRM_RESPONSE, COMM_BUFFER_OUT_CAN_TD_2_UI, (U08*)(&response), sizeof( UI_RESPONSE_PAYLOAD_T ) ); + subState = NUM_OF_POST_TX_AUTO_EJECT_SUB_STATES; } return subState; } +/*********************************************************************//** + * @brief + * The handleAutoEjectRequest function handles a UI request to remove the + * disposable tubeset. + * @details Inputs: none + * @details Outputs: autoEjectConfirmRequest + * @param message UI message which includes the user confirmation to + * eject the tubeset + * @return TRUE if confirmation/rejection accepted, FALSE if not + *************************************************************************/ +BOOL handleAutoEjectRequest( MESSAGE_T *message ) +{ + BOOL confirmed = FALSE; + BOOL result = FALSE; + TD_OP_MODE_T mode = getCurrentOperationMode(); + UI_RESPONSE_PAYLOAD_T response; + + response.accepted = FALSE; + response.rejectionReason = REQUEST_REJECT_REASON_NOT_ALLOWED_IN_CURRENT_MODE; + + if ( sizeof( BOOL ) == message->hdr.payloadLen ) + { + memcpy( &confirmed, message->payload, sizeof( BOOL ) ); + BOOL notInValidState = ( ( TD_POST_TREATMENT_AUTO_EJECT_STATE != currentPostTreatmentState ) || + ( POST_TX_AUTO_EJECT_STATE_AWAIT_CONFIRMATION != currentPostTxAutoEjectState ) ); + + if ( ( mode != MODE_POST ) || ( TRUE == notInValidState ) ) + { + sendMessage( MSG_ID_TD_ADJUST_DISPOSABLES_REMOVAL_CONFIRM_RESPONSE, COMM_BUFFER_OUT_CAN_TD_2_UI, (U08*)(&response), sizeof( UI_RESPONSE_PAYLOAD_T ) ); + } + else if ( TRUE == confirmed ) + { + autoEjectReqReceived = TRUE; + result = TRUE; + } + } + + return result; +} + /**@}*/ Index: firmware/App/Modes/ModePostTreat.h =================================================================== diff -u -r5a29e093e8a11f971c312cab5f6e7fedae2953db -rf054fdd3579dacb03b5b41a363e259949ff63965 --- firmware/App/Modes/ModePostTreat.h (.../ModePostTreat.h) (revision 5a29e093e8a11f971c312cab5f6e7fedae2953db) +++ firmware/App/Modes/ModePostTreat.h (.../ModePostTreat.h) (revision f054fdd3579dacb03b5b41a363e259949ff63965) @@ -35,6 +35,8 @@ U32 transitionToPostTreatmentMode( void ); // Prepares for transition to post-treatment mode U32 execPostTreatmentMode( void ); // Execute the post-treatment mode state machine (call from OperationModes) +BOOL handleAutoEjectRequest( MESSAGE_T *message); + /**@}*/ #endif Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -re5988dee900797f8e2b40b3e72d18f390d7b7402 -rf054fdd3579dacb03b5b41a363e259949ff63965 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision e5988dee900797f8e2b40b3e72d18f390d7b7402) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision f054fdd3579dacb03b5b41a363e259949ff63965) @@ -21,6 +21,7 @@ #include "ModePreTreat.h" #include "OperationModes.h" #include "PeristalticPump.h" +#include "Switches.h" #include "TaskGeneral.h" #include "TDDefs.h" #include "Timers.h" @@ -210,7 +211,7 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_PRE_TREATMENT_INVALID_STATE, (U32)currentPreTxInstallState ); + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_PRE_TX_INSTALL_INVALID_STATE, (U32)currentPreTxInstallState ); break; } @@ -221,20 +222,30 @@ * @brief * The handleAwaitTubesetConfirmationState function handles the Await * tubeset confirmation state of Pre-Treatement mode install state - * machine. Should wait for the user to confirm the tubeset is placed. - * @details Inputs: confirmTubsetPlaced - * @details Outputs: confirmTubsetPlaced, autoLoadHomePosCleared - * returns next Pre-Treatment install sub-state + * machine. Should wait for the user to confirm the tubeset is placed, + * and verifies that the blood pump door (H9) is closed. + * @details Inputs: confirmTubsetPlaced, H9_SWCH + * @details Outputs: confirmTubesetPlaced, autoLoadHomePosCleared + * return next Pre-Treatment install sub-state *************************************************************************/ static PRE_TX_INSTALL_STATE_T handleAwaitTubesetConfirmationState( void ) { PRE_TX_INSTALL_STATE_T subState = PRE_TX_INSTALL_STATE_AWAIT_TUBING_SET_CONFIRMATION; if ( TRUE == confirmTubesetPlaced ) { - confirmTubesetPlaced = FALSE; - autoLoadHomePosCleared = FALSE; - subState = PRE_TX_INSTALL_STATE_AUTO_LOAD; + //BP door close check + if ( STATE_CLOSED == getSwitchState( H9_SWCH ) ) + { + doorClosedRequired(TRUE); + confirmTubesetPlaced = FALSE; + autoLoadHomePosCleared = FALSE; + subState = PRE_TX_INSTALL_STATE_AUTO_LOAD; + } + else + { + activateAlarmNoData( ALARM_ID_TD_CARTRIDGE_DOOR_OPENED ); + } } return subState; @@ -246,7 +257,7 @@ * Pre-Treatement mode install state. * @details Inputs: autoLoadHomePosCleared, autoLoadTimerCounter * @details Outputs: autoLoadHomePosCleared, autoLoadTimerCounter - * returns next Pre-Treatment install sub-state + * return next Pre-Treatment install sub-state *************************************************************************/ static PRE_TX_INSTALL_STATE_T handleAutoLoadState( void ) { @@ -274,6 +285,13 @@ else if ( TRUE == isPeristalticPumpHome() ) { signalBloodPumpHardStop(); + + // Send auto-load completion message + UI_RESPONSE_PAYLOAD_T response; + response.accepted = TRUE; + response.rejectionReason = REQUEST_REJECT_REASON_NONE; + sendMessage( MSG_ID_TD_ADJUST_DISPOSABLES_CONFIRM_RESPONSE, COMM_BUFFER_OUT_CAN_TD_2_UI, (U08*)(&response), sizeof( UI_RESPONSE_PAYLOAD_T ) ); + subState = NUM_OF_PRE_TX_INSTALL_SUB_STATES; } } @@ -283,24 +301,36 @@ /*********************************************************************//** * @brief - * The signalUserConfirmTubesetInstallation function sets the user - * confirmation flag signaling user has confirmed tubset installation + * The handleAutoLoadRequest function handles a UI request to + * confirm tubeset installation. * @details Inputs: none * @details Outputs: confirmTubesetPlaced - * @param message confirmation message from UI which includes the user - * confirmation of tubset installation. + * @param message UI message which includes the user confirmation of + * tubset installation. * @return TRUE if confirmation/rejection accepted, FALSE if not *************************************************************************/ -BOOL signalUserConfirmTubesetInstallation( MESSAGE_T *message ) +BOOL handleAutoLoadRequest( MESSAGE_T *message ) { BOOL confirmed = FALSE; BOOL result = FALSE; + TD_OP_MODE_T mode = getCurrentOperationMode(); + UI_RESPONSE_PAYLOAD_T response; + response.accepted = FALSE; + response.rejectionReason = REQUEST_REJECT_REASON_NOT_ALLOWED_IN_CURRENT_MODE; + if ( sizeof( BOOL ) == message->hdr.payloadLen ) { memcpy( &confirmed, message->payload, sizeof( BOOL ) ); - if ( TRUE == confirmed ) + BOOL notInValidState = ( ( TD_PRE_TREATMENT_TUBING_SET_INSTALL_STATE != currentPreTreatmentState ) || + ( PRE_TX_INSTALL_STATE_AWAIT_TUBING_SET_CONFIRMATION != currentPreTxInstallState ) ); + + if ( ( mode != MODE_PRET ) || ( TRUE == notInValidState ) ) { + sendMessage( MSG_ID_TD_ADJUST_DISPOSABLES_CONFIRM_RESPONSE, COMM_BUFFER_OUT_CAN_TD_2_UI, (U08*)(&response), sizeof( UI_RESPONSE_PAYLOAD_T ) ); + } + else if ( TRUE == confirmed ) + { confirmTubesetPlaced = TRUE; result = TRUE; } Index: firmware/App/Modes/ModePreTreat.h =================================================================== diff -u -r5a29e093e8a11f971c312cab5f6e7fedae2953db -rf054fdd3579dacb03b5b41a363e259949ff63965 --- firmware/App/Modes/ModePreTreat.h (.../ModePreTreat.h) (revision 5a29e093e8a11f971c312cab5f6e7fedae2953db) +++ firmware/App/Modes/ModePreTreat.h (.../ModePreTreat.h) (revision f054fdd3579dacb03b5b41a363e259949ff63965) @@ -36,7 +36,7 @@ U32 transitionToPreTreatmentMode( void ); // Prepares for transition to pre-treatment mode U32 execPreTreatmentMode( void ); // Execute the pre-treatment mode state machine (call from OperationModes) -BOOL signalUserConfirmTubesetInstallation( MESSAGE_T *message ); // Signal that user confirms cartridge has been installed +BOOL handleAutoLoadRequest( MESSAGE_T *message ); // Handle UI auto-load confirmation request /**@}*/ Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -r5a29e093e8a11f971c312cab5f6e7fedae2953db -rf054fdd3579dacb03b5b41a363e259949ff63965 --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 5a29e093e8a11f971c312cab5f6e7fedae2953db) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision f054fdd3579dacb03b5b41a363e259949ff63965) @@ -184,7 +184,10 @@ SW_FAULT_ID_BLOOD_PRIME_INVALID_STATE = 153, SW_FAULT_ID_MODE_PRE_TREATMENT_INVALID_STATE = 148, SW_FAULT_ID_TD_AIR_PUMP_DUTY_CYCLE_OUT_OF_RANGE = 149, - SW_FAULT_ID_MODE_POST_TREATMENT_INVALID_STATE = 150, + SW_FAULT_ID_MODE_PRE_TX_INSTALL_INVALID_STATE = 150, + SW_FAULT_ID_MODE_POST_TREATMENT_INVALID_STATE = 151, + SW_FAULT_ID_MODE_POST_TREATMENT_INVALID_STATE1 = 152, + SW_FAULT_ID_MODE_POST_TX_AUTO_EJECT_INVALID_STATE = 153, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r5a29e093e8a11f971c312cab5f6e7fedae2953db -rf054fdd3579dacb03b5b41a363e259949ff63965 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 5a29e093e8a11f971c312cab5f6e7fedae2953db) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision f054fdd3579dacb03b5b41a363e259949ff63965) @@ -30,6 +30,7 @@ #include "FpgaTD.h" #include "LevelSensors.h" #include "Messaging.h" +#include "ModePostTreat.h" #include "ModePreTreat.h" #include "ModeStandby.h" #include "OperationModes.h" @@ -117,7 +118,8 @@ { MSG_ID_UI_PRESSURE_LIMIT_WIDEN_REQUEST, &pressureLimitHandleWidenRequest }, { MSG_ID_UI_BLOOD_PRIME_CMD_REQUEST, &bloodPrimeHandleCmdRequest }, { MSG_ID_UI_TREATMENT_SET_POINT_BLOOD_FLOW_CHANGE_REQUEST, &bloodPrimeHandleBloodFlowChangeRequest }, - { MSG_ID_UI_CONFIRM_TUBESET_INSTALLATION, &signalUserConfirmTubesetInstallation }, + { MSG_ID_UI_ADJUST_DISPOSABLES_CONFIRM_REQUEST, &handleAutoLoadRequest }, + { MSG_ID_UI_ADJUST_DISPOSABLES_REMOVAL_CONFIRM_REQUEST, &handleAutoEjectRequest }, { MSG_ID_TD_SOFTWARE_RESET_REQUEST, &testTDSoftwareResetRequest }, { MSG_ID_TD_BUBBLE_OVERRIDE_REQUEST, &testBubbleDetectOverride }, { MSG_ID_TD_BUBBLE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testBubblesDataPublishIntervalOverride },