Index: firmware/App/Monitors/Bubbles.c =================================================================== diff -u -r51f42cd88bd9c50ed9096a2d1d8ff859a95aff95 -r04c7345ebdbdbb6c6aef2f7fe686dd3c1eb31827 --- firmware/App/Monitors/Bubbles.c (.../Bubbles.c) (revision 51f42cd88bd9c50ed9096a2d1d8ff859a95aff95) +++ firmware/App/Monitors/Bubbles.c (.../Bubbles.c) (revision 04c7345ebdbdbb6c6aef2f7fe686dd3c1eb31827) @@ -37,7 +37,8 @@ /// Defined states for the air bubble detectors state machine. typedef enum BubbleStates { - BUBBLE_NORMAL_STATE = 0, ///< Normal state + BUBBLE_DISABLED_STATE = 0, ///< Disabled state + BUBBLE_ENABLED_STATE, ///< Enabled state BUBBLE_SELF_TEST_STATE, ///< Self-test state NUM_OF_BUBBLE_STATES ///< Number of bubble detector states } BUBBLE_STATES_T; @@ -56,7 +57,8 @@ // ********** private function prototypes ********** -static BUBBLE_STATES_T handleBubbleNormalState( BUBBLE_DETECTOR_T bubble ); +static BUBBLE_STATES_T handleBubbleEnabledState( BUBBLE_DETECTOR_T bubble ); +static BUBBLE_STATES_T handleBubbleDisabledState( BUBBLE_DETECTOR_T bubble ); static BUBBLE_STATES_T handleBubbleSelfTestState( BUBBLE_DETECTOR_T bubble ); static void publishBubblesData( void ); @@ -78,7 +80,7 @@ // initialize unit data for ( bubble = (BUBBLE_DETECTOR_T)0; bubble < NUM_OF_BUBBLE_DETECTORS; bubble++ ) { - bubblesState[ bubble ] = BUBBLE_NORMAL_STATE; + bubblesState[ bubble ] = BUBBLE_DISABLED_STATE; bubblesSelfTestStatus[ bubble ] = SELF_TEST_STATUS_IN_PROGRESS; bubblesSelfTestRequested[ bubble ] = FALSE; bubblesSelfTestStartTime[ bubble ] = 0; @@ -111,10 +113,14 @@ // Execute the air bubble detector state machine switch( bubblesState[ bubble ] ) { - case BUBBLE_NORMAL_STATE: - bubblesState[ bubble ] = handleBubbleNormalState( bubble ); + case BUBBLE_ENABLED_STATE: + bubblesState[ bubble ] = handleBubbleEnabledState( bubble ); break; + case BUBBLE_DISABLED_STATE: + bubblesState[ bubble ] = handleBubbleDisabledState( bubble ); + break; + case BUBBLE_SELF_TEST_STATE: bubblesState[ bubble ] = handleBubbleSelfTestState( bubble ); break; @@ -190,29 +196,28 @@ /*********************************************************************//** * @brief - * The handleBubbleNormalState function handles a given air bubble module - * in normal state. + * The handleBubbleEnabledState function handles a given air bubble module + * in enabled state. * @details \b Alarm: ALARM_ID_TD_VENOUS_BUBBLE_DETECTED if venous bubble detected. * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if given bubble sensor is invalid. * @details \b Inputs: none * @details \b Outputs: bubblesSelfTestStatus - * @param bubble ID of bubble detector to execute normal state for + * @param bubble ID of bubble detector to execute enabled state for * @return next state *************************************************************************/ -static BUBBLE_STATES_T handleBubbleNormalState( BUBBLE_DETECTOR_T bubble ) +static BUBBLE_STATES_T handleBubbleEnabledState( BUBBLE_DETECTOR_T bubble ) { - BUBBLE_STATES_T state = BUBBLE_NORMAL_STATE; + BUBBLE_STATES_T state = BUBBLE_ENABLED_STATE; if ( bubble < NUM_OF_BUBBLE_DETECTORS ) { // check for bubble detection #ifndef _RELEASE_ -// if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_BUBBLE_ALARMS ) != SW_CONFIG_ENABLE_VALUE ) +// if ( getSoftwareConfigStatus( SW_CONFIG_DISABLED_BUBBLE_ALARMS ) != SW_CONFIG_ENABLE_VALUE ) #endif { // Check for venous bubble alarm if enabled. - if ( ( BUBBLE_DETECTED == getBubbleDetectedState( bubble ) ) && - ( bubbleDetectionEnabled[ bubble ] != FALSE ) ) + if ( ( BUBBLE_DETECTED == getBubbleDetectedState( bubble ) )) { activateAlarmNoData( ALARM_ID_TD_VENOUS_BUBBLE_DETECTED ); } @@ -231,6 +236,11 @@ } bubblesSelfTestStartTime[ bubble ] = getMSTimerCount(); } + else if ( FALSE == bubbleDetectionEnabled[ bubble ] ) + { + state = BUBBLE_DISABLED_STATE; + + } } else { @@ -242,6 +252,47 @@ /*********************************************************************//** * @brief + * The handleBubbleDisabledState function handles a given air bubble module + * in disable state. + * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if given bubble sensor is invalid. + * @details \b Inputs: none + * @details \b Outputs: bubblesSelfTestStatus + * @param bubble ID of bubble detector to execute disable state for + * @return next state + *************************************************************************/ +static BUBBLE_STATES_T handleBubbleDisabledState( BUBBLE_DETECTOR_T bubble ) +{ + BUBBLE_STATES_T state = BUBBLE_DISABLED_STATE; + + if ( bubble < NUM_OF_BUBBLE_DETECTORS ) + { + // if self-test requested, initiate self-test + if ( TRUE == bubblesSelfTestRequested[ bubble] ) + { + state = BUBBLE_SELF_TEST_STATE; + bubblesSelfTestRequested[ bubble ] = FALSE; + bubblesSelfTestStatus[ bubble ] = SELF_TEST_STATUS_IN_PROGRESS; + + if ( H18_BBLD == bubble ) + { + setFPGAVenousBubbleSelfTest(); + } + bubblesSelfTestStartTime[ bubble ] = getMSTimerCount(); + } + else if ( bubbleDetectionEnabled[ bubble ] != FALSE ) + { + state = BUBBLE_ENABLED_STATE; + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_BUBBLES_INVALID_SENSOR_ID3, bubble ) + } + + return state; +} +/*********************************************************************//** + * @brief * The handleBubbleSelfTestState function handles a given air bubble detector * in self-test state. * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if given bubble sensor is invalid. @@ -278,7 +329,14 @@ if ( ( NO_BUBBLE_DETECTED == getBubbleDetectedState( bubble ) ) || ( TRUE == didTimeout( bubblesSelfTestStartTime[ bubble ], BUBBLE_TIMEOUT_MS + 100 ) ) ) { - state = BUBBLE_NORMAL_STATE; + if ( bubbleDetectionEnabled[ bubble ] != FALSE ) + { + state = BUBBLE_ENABLED_STATE; + } + else + { + state = BUBBLE_DISABLED_STATE; + } } } } Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -rb57e35bcded6968444b66e7a58dec34c3dd99082 -r04c7345ebdbdbb6c6aef2f7fe686dd3c1eb31827 --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision b57e35bcded6968444b66e7a58dec34c3dd99082) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 04c7345ebdbdbb6c6aef2f7fe686dd3c1eb31827) @@ -167,6 +167,7 @@ SW_FAULT_ID_TD_EJECTOR_INVALID_STATE = 136, SW_FAULT_ID_MODE_FAULT_INVALID_STATE = 137, SW_FAULT_ID_TREATMENT_STOP_INVALID_STATE = 138, + SW_FAULT_ID_BUBBLES_INVALID_SENSOR_ID3 = 139, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T;