/**************************************************************************** DESCRIPTION function to detect edge changes of buttons / multiple buttons. */ static void ButtonsEdgeDetect ( const uint32 pState , ButtonsTaskData * pButtonsTask ) { uint32 lNewState = 0x0000 ; uint32 lButton = 0x0000 ; /*what has changed */ lNewState = (uint32) ( pState & (pButtonsTask->gPerformEdgeCheck) ) ; lButton = ButtonsWhichButtonChanged( pButtonsTask->gBOldEdgeState , lNewState ) ; B_DEBUG(("But Edge Det: [%lx][%lx][%lx]\n", pButtonsTask->gBOldEdgeState , lNewState , pButtonsTask->gButtonLevelMask )) ; B_DEBUG(("But Edge Det: [%lx][%lx][%lx]\n", lNewState , lButton , (lNewState & lButton) )) ; /*if a button has changed*/ if ( lButton ) { /*determine which edge has been received and process accordingly*/ if ( lNewState & lButton ) { ButtonsButtonDetected ( pButtonsTask , lButton , B_LOW_TO_HIGH ) ; } else { ButtonsButtonDetected ( pButtonsTask , lButton , B_HIGH_TO_LOW ) ; } } /*remember the last state*/ pButtonsTask->gBOldEdgeState = lNewState; }
/**************************************************************************** DESCRIPTION function to detect edge changes of buttons / multiple buttons. */ static void ButtonsEdgeDetect ( const uint32 pInput , ButtonsTaskData * pButtonsTask ) { uint32 lNewInput = (uint32) (pInput & (pButtonsTask->gPerformInputEdgeCheck) ) ; uint32 lOldInput = (uint32) (pButtonsTask->gBOldInputState & pButtonsTask->gPerformInputEdgeCheck); uint32 lInput = ButtonsWhichButtonChanged( lOldInput , lNewInput ) ; B_DEBUG(("But Edge Det: Old Edge[%lx] New Edge[%lx] Button[%lx] Low2High[%lx}\n", lOldInput , lNewInput ,lInput ,(lNewInput & lInput) )) ; /*if a button has changed*/ if ( lInput ) { /*determine which edge has been received and process accordingly*/ if ( lNewInput & lInput ) { ButtonsButtonDetected ( pButtonsTask , lInput , B_LOW_TO_HIGH ) ; /* check whether device needs to be made connectable as a result of a button press on a multipoint device */ if(theSink.features.GoConnectableButtonPress) sinkEnableMultipointConnectable(); } else { ButtonsButtonDetected ( pButtonsTask , lInput , B_HIGH_TO_LOW ) ; } } }
/**************************************************************************** DESCRIPTION helper method - returns true if a button was pressed */ static bool ButtonsWasButtonPressed ( uint32 pOldState , uint32 pNewState) { bool lWasButtonPressed = FALSE ; uint32 lButton = ButtonsWhichButtonChanged ( pOldState , pNewState ) ; if ( ( lButton & pNewState ) != 0 ) { lWasButtonPressed = TRUE ; } return lWasButtonPressed ; }
/**************************************************************************** DESCRIPTION helper method - returns true if a button was pressed */ static bool ButtonsWasButtonPressed ( uint32 pOldState , uint32 pNewState) { bool lWasButtonPressed = FALSE ; uint32 lButton = ButtonsWhichButtonChanged ( pOldState , pNewState ) ; if ( ( lButton & pNewState ) != 0 ) { lWasButtonPressed = TRUE ; } B_DEBUG(("B:But WasPressed OldSt[%lx] NewSt[%lx] Input[%lx] Pressed[%x]\n", pOldState, pNewState, lButton,lWasButtonPressed)) ; return lWasButtonPressed ; }