Index: firmware/App/Controllers/Bubble.c =================================================================== diff -u -r3d30c9829d316b8c5e632c0201a59c8d14b3486e -rcef6b0392becf60c69cf4e517701ba22642f072a --- firmware/App/Controllers/Bubble.c (.../Bubble.c) (revision 3d30c9829d316b8c5e632c0201a59c8d14b3486e) +++ firmware/App/Controllers/Bubble.c (.../Bubble.c) (revision cef6b0392becf60c69cf4e517701ba22642f072a) @@ -177,37 +177,40 @@ { BUBBLE_STATES_T state = BUBBLE_SELF_TEST_STATE; - if ( SELF_TEST_STATUS_IN_PROGRESS == bubblesSelfTestStatus[ bubble ] ) + if ( ( bubble == ADA ) || ( bubble == ADV) ) { - if ( FALSE == noFPGABubbleDetected( bubble ) ) // Faked air bubble caused + if ( SELF_TEST_STATUS_IN_PROGRESS == bubblesSelfTestStatus[ bubble ] ) { - bubblesSelfTestStatus[ bubble ] = SELF_TEST_STATUS_PASSED; - clearFPGABubbleSelfTest( bubble ); - } - else if ( TRUE == didTimeout( bubblesSelfTestStartTime[ bubble ], BUBBLE_TIMEOUT_MS ) ) - { - bubblesSelfTestStatus[ bubble ] = SELF_TEST_STATUS_FAILED; - if ( bubble == ADA ) + if ( FALSE == noFPGABubbleDetected( bubble ) ) // Faked air bubble caused { - activateAlarmNoData( ALARM_ID_HD_ARTERIAL_BUBBLE_SELF_TEST_FAILURE ); + bubblesSelfTestStatus[ bubble ] = SELF_TEST_STATUS_PASSED; + clearFPGABubbleSelfTest( bubble ); } - else if ( bubble == ADV ) + else if ( TRUE == didTimeout( bubblesSelfTestStartTime[ bubble ], BUBBLE_TIMEOUT_MS ) ) { - activateAlarmNoData( ALARM_ID_HD_VENOUS_BUBBLE_SELF_TEST_FAILURE ); + bubblesSelfTestStatus[ bubble ] = SELF_TEST_STATUS_FAILED; + if ( bubble == ADA ) + { + activateAlarmNoData( ALARM_ID_HD_ARTERIAL_BUBBLE_SELF_TEST_FAILURE ); + } + else if ( bubble == ADV ) + { + activateAlarmNoData( ALARM_ID_HD_VENOUS_BUBBLE_SELF_TEST_FAILURE ); + } } - else + } + else + { + // Air bubble self-test finished, wait for self-test faked air bubble detector clear + if ( TRUE == noFPGABubbleDetected( bubble ) ) { - // TODO: Should never reach here + state = BUBBLE_NORMAL_STATE; } } } else { - // Air bubble self-test finished, wait for self-test faked air bubble detector clear - if ( TRUE == noFPGABubbleDetected( bubble ) ) - { - state = BUBBLE_NORMAL_STATE; - } + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_HD_INVALID_BUBBLE_ID, bubble ) } return state; @@ -361,7 +364,7 @@ BUBBLE_STATUS_T statusADA = getBubbleStatus( ADA ); BUBBLE_STATUS_T statusADV = getBubbleStatus( ADV ); - broadcastBubblesData( statusADA, (U32)bubblesState[ ADA ], statusADV, (U32)bubblesState[ ADV ] ); + broadcastBubblesData( (U32)statusADA, (U32)bubblesState[ ADA ], (U32)statusADV, (U32)bubblesState[ ADV ] ); bubblesDataPublicationTimerCounter = 0; } }