--- /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 <es_prot.h>
+#include <bt_sock.h>
+#include <btdevice.h>
+#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