bluetooth/btstack/linkmgr/physicallinks.h
changeset 48 22de2e391156
parent 34 9d84592f5036
child 51 20ac952a623c
equal deleted inserted replaced
35:14e279d2bbb7 48:22de2e391156
    44 class CBTPinRequester;
    44 class CBTPinRequester;
    45 class CACLLink;
    45 class CACLLink;
    46 class CRoleSwitcher;
    46 class CRoleSwitcher;
    47 class CBTNumericComparator;
    47 class CBTNumericComparator;
    48 class CBTPasskeyEntry;
    48 class CBTPasskeyEntry;
       
    49 class CEncryptionKeyRefresher;
    49 
    50 
    50 enum TPhysicalLinkSimplePairingMode
    51 enum TPhysicalLinkSimplePairingMode
    51 	{
    52 	{
    52 	EPhySimplePairingUndefined,
    53 	EPhySimplePairingUndefined,
    53 	EPhySimplePairingDisabled,
    54 	EPhySimplePairingDisabled,
   340 
   341 
   341 	void ReadNewPhysicalLinkMetricValue(TUint aIoctlName, CBTProxySAP& aSAP, TInt aCurrentValue);
   342 	void ReadNewPhysicalLinkMetricValue(TUint aIoctlName, CBTProxySAP& aSAP, TInt aCurrentValue);
   342 
   343 
   343 	TInt OverridePark();
   344 	TInt OverridePark();
   344 	TInt UndoOverridePark();
   345 	TInt UndoOverridePark();
   345 	TInt OverrideLPMWithTimeout(TUint aTimeout);
       
   346 	TInt OverrideLPM();
   346 	TInt OverrideLPM();
   347 	TInt UndoOverrideLPM();
   347 	TInt UndoOverrideLPM();
   348 	inline TBool IsParked() const;
   348 	inline TBool IsParked() const;
   349 	
   349 	
   350 	TBool ACLConnectPending() const;
   350 	TBool ACLConnectPending() const;
   373 	virtual void ModeChange(THCIErrorCode aErr, THCIConnHandle aConnH, TBTLinkMode aMode, TBasebandTime aInterval);
   373 	virtual void ModeChange(THCIErrorCode aErr, THCIConnHandle aConnH, TBTLinkMode aMode, TBasebandTime aInterval);
   374 	virtual void WriteLinkPolicySettingsCompleteEvent(THCIErrorCode aErr, THCIConnHandle aConnH);
   374 	virtual void WriteLinkPolicySettingsCompleteEvent(THCIErrorCode aErr, THCIConnHandle aConnH);
   375 	virtual void RoleChange(THCIErrorCode aErr, const TBTDevAddr& aAddr, TBTBasebandRole aRole);
   375 	virtual void RoleChange(THCIErrorCode aErr, const TBTDevAddr& aAddr, TBTBasebandRole aRole);
   376 	virtual void ClockOffset(THCIErrorCode aErr, THCIConnHandle aConnH, TBasebandTime aClockOffset);
   376 	virtual void ClockOffset(THCIErrorCode aErr, THCIConnHandle aConnH, TBasebandTime aClockOffset);
   377 	virtual void RemoteName(THCIErrorCode aErr, const TBTDevAddr& aAddr, const TBTDeviceName8& aName);
   377 	virtual void RemoteName(THCIErrorCode aErr, const TBTDevAddr& aAddr, const TBTDeviceName8& aName);
   378 	
   378 	virtual void EncryptionKeyRefreshComplete(THCIErrorCode aErr, THCIConnHandle aConnH);
       
   379 
   379 	void ConnectionComplete(TInt aResult, const TBTConnect& aConn);
   380 	void ConnectionComplete(TInt aResult, const TBTConnect& aConn);
   380 
   381 
   381 	TBool LinkKeyRequestPending();
   382 	TBool LinkKeyRequestPending();
   382 	void SetAuthenticationPending(TUint8 aFlag);
   383 	void SetAuthenticationPending(TUint8 aFlag);
   383 	virtual void AuthenticationComplete(TUint8 aFlag);
   384 	virtual void AuthenticationComplete(TUint8 aFlag);
   410 	TBool HasSyncLink() const;
   411 	TBool HasSyncLink() const;
   411 	void GetDeviceFromRegistryL();
   412 	void GetDeviceFromRegistryL();
   412 	TBTLinkMode LinkMode() const; 
   413 	TBTLinkMode LinkMode() const; 
   413 	
   414 	
   414 	void AsyncDeleteRoleSwitcher();
   415 	void AsyncDeleteRoleSwitcher();
       
   416 	void AsyncDeleteKeyRefresher();
   415 	
   417 	
   416 	inline const TLinkPolicy& LinkPolicy() const;
   418 	inline const TLinkPolicy& LinkPolicy() const;
   417 	inline const TBTFeatures& RemoteFeatures() const;
   419 	inline const TBTFeatures& RemoteFeatures() const;
   418 	inline const TBTDeviceClass& DeviceClass() const;
   420 	inline const TBTDeviceClass& DeviceClass() const;
   419 	TInt GetConnectionHandles(RHCIConnHandleArray& aConnectionHandles,
   421 	TInt GetConnectionHandles(RHCIConnHandleArray& aConnectionHandles,
   483 	void SetLinkKey(const TBTLinkKey& aLinkKey, TBTLinkKeyType aLinkKeyType);
   485 	void SetLinkKey(const TBTLinkKey& aLinkKey, TBTLinkKeyType aLinkKeyType);
   484 
   486 
   485 	void QueueIdleTimer(TInt aTime);
   487 	void QueueIdleTimer(TInt aTime);
   486 	void RemoveIdleTimer();
   488 	void RemoveIdleTimer();
   487 
   489 
   488 	void QueueLPMOverrideTimer(TInt aTimeout);
       
   489 	void NotifyStateChange(TBTBasebandEventNotification & aEvent);
   490 	void NotifyStateChange(TBTBasebandEventNotification & aEvent);
   490 
   491 
   491 	TBool IsPhysicalLinkIdle() const;
   492 	TBool IsPhysicalLinkIdle() const;
   492 	TBasebandTime CalculatePageTimeout(TBasebandPageTimePolicy aPolicy, TUint8 aRepMode, TBool aValidClockOffset);
   493 	TBasebandTime CalculatePageTimeout(TBasebandPageTimePolicy aPolicy, TUint8 aRepMode, TBool aValidClockOffset);
   493 	TBool IsPasskeyMinLengthOK();
   494 	TBool IsPasskeyMinLengthOK();
   494 	TBool PeerSupportsLinkKeyRegeneration() const;
   495 	TBool PeerSupportsLinkKeyRegeneration() const;
   495 
   496 
   496 	void DeleteRoleSwitcher();
   497 	void DeleteRoleSwitcher();
   497 	static TInt RoleSwitchCompleteCallBack(TAny* CPhysicalLink);
   498 	static TInt RoleSwitchCompleteCallBack(TAny* CPhysicalLink);
   498 	TInt ManageEncryptionEnforcement(THCIEncryptModeFlag aEnable);
   499 	TInt ManageEncryptionEnforcement(THCIEncryptModeFlag aEnable);
       
   500 	
       
   501 	void DeleteKeyRefresher();
       
   502 	static TInt KeyRefreshCompleteCallBack(TAny* CPhysicalLink);
   499 
   503 
   500 	void HandlePrefetch();
   504 	void HandlePrefetch();
   501 	void PINCodeRequestReply(const TBTDevAddr& aDevAddr,const TDesC8& aPin);
   505 	void PINCodeRequestReply(const TBTDevAddr& aDevAddr,const TDesC8& aPin);
   502 	void PINCodeRequestNegativeReply(const TBTDevAddr& aDevAddr);
   506 	void PINCodeRequestNegativeReply(const TBTDevAddr& aDevAddr);
   503 	
   507 	
   550 	TBTConnect 					iLastPendingConnection;		// for if we have to wait for Registry to decide whether to rject or accept a connection
   554 	TBTConnect 					iLastPendingConnection;		// for if we have to wait for Registry to decide whether to rject or accept a connection
   551 	TBool						iPendingConnection;  // is a connection request waiting for a reply
   555 	TBool						iPendingConnection;  // is a connection request waiting for a reply
   552 	TSglQue<CBTProxySAP>		iProxySAPs;			// the proxies bound to us
   556 	TSglQue<CBTProxySAP>		iProxySAPs;			// the proxies bound to us
   553 	TDeltaTimerEntry			iIdleTimerEntry;
   557 	TDeltaTimerEntry			iIdleTimerEntry;
   554 	TBool						iIdleTimerQueued;
   558 	TBool						iIdleTimerQueued;
   555 	TDeltaTimerEntry			iOverrideLPMTimerEntry;
       
   556 
   559 
   557 	TLinkPolicy					iLinkPolicy;
   560 	TLinkPolicy					iLinkPolicy;
   558 	TUint16						iPreviousRequestedModeMask;
   561 	TUint16						iPreviousRequestedModeMask;
   559 	TBool						iOverrideParkRequests; //for maybe temporary unpark
   562 	TBool						iOverrideParkRequests; //for maybe temporary unpark
   560 	TBool						iOverrideLPMRequests; //for maybe temporary force active
   563 	TBool						iOverrideLPMRequests; //for maybe temporary force active
   561 	TBool						iLPMOverrideTimerQueued;
       
   562 	TBool						iConnectionPacketTypeChanged; //for triggering h/w 
   564 	TBool						iConnectionPacketTypeChanged; //for triggering h/w 
   563 	
   565 	
   564 	TBool						iPreventLinkKeyUpdateReg; //for case e.g. user has called unpair when there is a paired logical channel
   566 	TBool						iPreventLinkKeyUpdateReg; //for case e.g. user has called unpair when there is a paired logical channel
   565 	TUint8						iAuthStateMask; // Authentication state mask to keep track of the authentication process
   567 	TUint8						iAuthStateMask; // Authentication state mask to keep track of the authentication process
   566 	TBool						iLinkKeyPending; //PIN has been sent, awaiting a link key.
   568 	TBool						iLinkKeyPending; //PIN has been sent, awaiting a link key.
   568 	TBool						iPeerInSecurityMode3;
   570 	TBool						iPeerInSecurityMode3;
   569 	TBasebandTime				iSniffInterval;
   571 	TBasebandTime				iSniffInterval;
   570 	CArbitrationDelayTimer*		iArbitrationDelay; //for lower power modes
   572 	CArbitrationDelayTimer*		iArbitrationDelay; //for lower power modes
   571 	CRoleSwitcher*				iRoleSwitcher; //class handles role switch, prevents LPM, removes encryption		
   573 	CRoleSwitcher*				iRoleSwitcher; //class handles role switch, prevents LPM, removes encryption		
   572 	CAsyncCallBack*				iRoleSwitchCompleteCallBack;// Async Callback to delete role swticher class.
   574 	CAsyncCallBack*				iRoleSwitchCompleteCallBack;// Async Callback to delete role swticher class.
       
   575 	CEncryptionKeyRefresher*	iKeyRefresher; //class handles key refresh 
       
   576 	CAsyncCallBack*				iKeyRefreshCompleteCallBack;// Async Callback to delete key refresher class.
   573 
   577 
   574 	TLowPowModeCmdController	iLowPowModeCtrl;
   578 	TLowPowModeCmdController	iLowPowModeCtrl;
   575 	CPhysicalLinkMetrics*		iPhysicalLinkMetrics;
   579 	CPhysicalLinkMetrics*		iPhysicalLinkMetrics;
   576 	TDisconnectCmdController	iDisconnectCtrl;
   580 	TDisconnectCmdController	iDisconnectCtrl;
   577 	TAuthenticationCmdController iAuthenticationCtrl;
   581 	TAuthenticationCmdController iAuthenticationCtrl;