Index: firmware/App/Controllers/Bubble.c =================================================================== diff -u -rcef6b0392becf60c69cf4e517701ba22642f072a -rc407a98464658e38b527e35da368764bfeb4b8d7 --- firmware/App/Controllers/Bubble.c (.../Bubble.c) (revision cef6b0392becf60c69cf4e517701ba22642f072a) +++ firmware/App/Controllers/Bubble.c (.../Bubble.c) (revision c407a98464658e38b527e35da368764bfeb4b8d7) @@ -92,7 +92,7 @@ * @details Outputs: bubblesStatus * @return none *************************************************************************/ -void execBubble( void ) +void execBubbles( void ) { BUBBLES_T bubble; @@ -228,68 +228,67 @@ { BUBBLE_STATES_T state = BUBBLE_NORMAL_STATE; - if ( TRUE == noFPGABubbleDetected( bubble ) ) + if ( ( bubble == ADA ) || ( bubble == ADV) ) { - bubblesStatus[ bubble ].data = BUBBLE_NOT_DETECTED; - } - else - { - bubblesStatus[ bubble ].data = BUBBLE_DETECTED; - } + if ( TRUE == noFPGABubbleDetected( bubble ) ) + { + bubblesStatus[ bubble ].data = BUBBLE_NOT_DETECTED; + } + else + { + bubblesStatus[ bubble ].data = BUBBLE_DETECTED; + } - // Check status reading and act upon - if ( BUBBLE_DETECTED == getBubbleStatus( bubble ) ) - { - if ( getCurrentOperationMode() == MODE_TREA ) + // Check status reading and act upon + if ( BUBBLE_DETECTED == getBubbleStatus( bubble ) ) { - if ( bubble == ADA ) + if ( getCurrentOperationMode() == MODE_TREA ) { - activateAlarmNoData( ALARM_ID_HD_ARTERIAL_BUBBLE_DETECTED ); + if ( bubble == ADA ) + { + activateAlarmNoData( ALARM_ID_HD_ARTERIAL_BUBBLE_DETECTED ); + } + else if ( bubble == ADV ) + { + activateAlarmNoData( ALARM_ID_HD_VENOUS_BUBBLE_DETECTED ); + } } - else if ( bubble == ADV ) + else if ( getCurrentOperationMode() == TREATMENT_RINSEBACK_STATE ) // TODO: Any better mode to know we are in rinseback? { - activateAlarmNoData( ALARM_ID_HD_VENOUS_BUBBLE_DETECTED ); + if ( bubble == ADA ) + { + activateAlarmNoData( ALARM_ID_HD_ARTERIAL_BUBBLE_DETECTOR_FAULT ); + } + else if ( bubble == ADV ) + { + activateAlarmNoData( ALARM_ID_HD_VENOUS_BUBBLE_DETECTOR_RINSEBACK_FAULT ); + } } - else - { - // TODO: Should never reach here - } } - else if ( getCurrentOperationMode() == TREATMENT_RINSEBACK_STATE ) // TODO: Any better mode to know we are in rinseback? + else // Blood leak not detected { if ( bubble == ADA ) { - activateAlarmNoData( ALARM_ID_HD_ARTERIAL_BUBBLE_DETECTOR_FAULT ); + clearAlarmCondition( ALARM_ID_HD_ARTERIAL_BUBBLE_DETECTED ); } else if ( bubble == ADV ) { - activateAlarmNoData( ALARM_ID_HD_VENOUS_BUBBLE_DETECTOR_RINSEBACK_FAULT ); + clearAlarmCondition( ALARM_ID_HD_VENOUS_BUBBLE_DETECTED ); } - else - { - // TODO: Should never reach here - } } - } - else // Blood leak not detected - { - if ( bubble == ADA ) + + if ( TRUE == bubblesSelfTestRequested[ bubble ] ) { - clearAlarmCondition( ALARM_ID_HD_ARTERIAL_BUBBLE_DETECTED ); + state = BUBBLE_SELF_TEST_STATE; + bubblesSelfTestRequested[ bubble ] = FALSE; + + setFPGABubbleSelfTest( bubble ); + bubblesSelfTestStartTime[ bubble ] = getMSTimerCount(); } - else if ( bubble == ADV ) - { - clearAlarmCondition( ALARM_ID_HD_VENOUS_BUBBLE_DETECTED ); - } } - - if ( TRUE == bubblesSelfTestRequested[ bubble ] ) + else { - state = BUBBLE_SELF_TEST_STATE; - bubblesSelfTestRequested[ bubble ] = FALSE; - - setFPGABubbleSelfTest( bubble ); - bubblesSelfTestStartTime[ bubble ] = getMSTimerCount(); + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_HD_INVALID_BUBBLE_ID, bubble ) } return state; @@ -364,7 +363,7 @@ BUBBLE_STATUS_T statusADA = getBubbleStatus( ADA ); BUBBLE_STATUS_T statusADV = getBubbleStatus( ADV ); - broadcastBubblesData( (U32)statusADA, (U32)bubblesState[ ADA ], (U32)statusADV, (U32)bubblesState[ ADV ] ); + broadcastBubblesData( statusADA, (U32)bubblesState[ ADA ], statusADV, (U32)bubblesState[ ADV ] ); bubblesDataPublicationTimerCounter = 0; } }