diff -r 000000000000 -r 29b1cd4cb562 bluetooth/btstack/inc/BtSap.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetooth/btstack/inc/BtSap.h Fri Jan 15 08:13:17 2010 +0200 @@ -0,0 +1,110 @@ +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef _BTSAP_H +#define _BTSAP_H + +#include +#include +#include +#include "SecManNotifiers.h" + +class CBTSecMan; +class CBTCodServiceMan; + +NONSHARABLE_CLASS(CBluetoothSAP) : public CServProviderBase, public MAccessRequestResponseHandler +/** + Acts as the base for Bluetooth SAPs; factoring aspects common to all. + This should be extended in future... +**/ + { +public: + // return reference to the security of the service represented by this SAP + const TBTServiceSecurity& Security() const; + + // return a pointer to a possible device override to the security settings + // returns NULL if none + const TBTServiceSecurityPerDevice* Override(const TBTDevAddr& aAddress) const; + + // begin the security state machine + void StartAccessRequest(const CBluetoothSAP& aSAPWithSecuritySettings, TBool aSecurityModeFourOutgoing = EFalse); + void CancelAccessRequest(); + + // callback from secman with either granted or denied access + virtual void AccessRequestComplete(TInt aResult); + + virtual void IoctlComplete(TInt aErr, TUint aLevel, TUint aName, TDesC8* aBuf); + inline CBTSecMan& SecMan() const; + inline CBTCodServiceMan& CodMan() const; + inline const TBTDevAddr& RemoteAddress() const; + + TInt SetCodServiceBits(TUint16 aNewCodServiceBits); + void RegisterCodService(); + void DeregisterCodService(); + + TInt SetOption(TUint aLevel,TUint aName,const TDesC8 &aOption); + virtual TInt SAPSetOption(TUint aLevel,TUint aName,const TDesC8 &aOption) = 0; + + //From CServProviderBase + TInt SecurityCheck(MProvdSecurityChecker *aSecurityChecker); + + ~CBluetoothSAP(); + +protected: + CBluetoothSAP(CBTSecMan& aSecMan, CBTCodServiceMan& aCodMan); + void ConstructL(); + TInt SetDeviceOverride(const TDesC8& aOption); + TInt GetDeviceOverride(TDes8& aOption) const; + +private: + static TInt AccessDeniedCallBack(TAny* aBtSap); + +protected: + TBTServiceSecurity iSecurity; // the security the service (on this SAP) has requested + RBTSecurityArray iDeviceOverrides; // the overrides + TUint iIoctlLevel; + TUint iIoctlName; + TBTDevAddr iRemoteDev; + TUint16 iCodServiceBits;// SAP's record Services they set (see TBTMajorServiceClass), + // so they can be removed from the CoD when a SAP dies. + // MSB is Register Flag + + //Mixin providing security checking, This is not an owned variable. + MProvdSecurityChecker* iSecurityChecker; + +private: + CBTSecMan& iSecMan; + CBTCodServiceMan& iCodMan; + + CAsyncCallBack* iAccessDeniedCallBack; + }; + + +inline const TBTDevAddr& CBluetoothSAP::RemoteAddress() const + { + return iRemoteDev; + } + +inline CBTSecMan& CBluetoothSAP::SecMan() const + { + return iSecMan; + } + +inline CBTCodServiceMan& CBluetoothSAP::CodMan() const + { + return iCodMan; + } + +#endif //_BTSAP_H