www.pudn.com > headset.rar > pair.c
#include "demohs.h" #include "hal.h" #include#include #include static void sendCallReject(void) { MAKE_MSG(HS_REJECT_CALL_REQ); putMsg(msg); } /* pair Called when the user presses the 'pair' button. */ void pairButton(void) { /* Take pairing action based on the current state of the headset. */ switch (hsState.connectState) { /* If the headset is idle, initiate pairing */ case idle : { /* Send a pair request */ MAKE_MSG(HS_PAIR_REQ); msg->timeout = PAIRING_TIMEOUT; putMsg(msg); /* set the headset state */ updateHsConnectState(pairing); hsState.pairingPending = 0; } break ; /* No longer have idle mode so we have to cancel the current connect mode in order to go into pairing mode */ case connectingAsSlave: case connectingAsMaster: cancelOperation(); hsState.pairingPending = 1; break; /* Reject call - since the pair button cannot be used when there is an existing RFCOMM connection, use it to reject an incoming call. */ case connected: /* TODO this code is unreachable since we removed the pair button but keep it in for now as we can have an extra button on bc2 which can be used to reject a call */ sendCallReject(); break; /* Remove the ability to cancel pairing */ case pairing: /* For all other states, pairing is not possible */ default: PRINT(("pair.c - pairButton() - can't pair in this state 0x%2x\n",hsState.connectState)); break; } } /* pairCfm Called by the headset framework to indicate a change of pair status. This can be one of a number of things: timout, acl connection, or link_key notification depending upon whether the Audio Gateway is using authentication. */ void pairCfm(const HS_PAIR_CFM_T * cfm) { /* No matter the outcome of the pairing procedure, go to idle state */ updateHsConnectState(idle); /* Take action based on the pairing status. Currently, this function is not doing much of anything. Consider this to be a framework for your own application. */ switch (cfm->status) { case CmPairingComplete: talkButton(); break; /* if pairing fails for any reason then go into pairing mode again */ case CmPairingTimeout: case CmPairingCancelled: case CmPairingFail: case CmPairingNotFinished: #ifdef DEV_BOARD_HS /* if we're trying to deep sleep don't re-enter pairing mode */ if (hsState.turnOffHs) { updateHsConnectState(idle); return; } #endif pairButton(); break ; } }