diff -r 613943a21004 -r 9386f31cc85b bluetoothengine/bteng/inc/btotgpairpub.inl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetoothengine/bteng/inc/btotgpairpub.inl Wed Sep 01 12:20:04 2010 +0100 @@ -0,0 +1,137 @@ +/* +* Copyright (c) 2006 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: Implements getting/setting outgoing pair status +* from/to P&S KBTOutgoingPairing from btengprivatepskeys.h. +* +*/ + +#include "btengprivatepskeys.h" +#include + +// ---------------------------------------------------------- +// Get outgoing pair status from PS +// ---------------------------------------------------------- +// +inline void OutgoPairingProperty(RProperty& aProperty, + TBTDevAddr& aAddr, TBTOutgoingPairMode& aMode) + { + TBuf8 propDes; + TInt err = aProperty.Get( propDes ); + if ( !err && propDes.Length() == sizeof( TBTOutgoingPairProperty ) ) + { + TBTOutgoingPairProperty prop; + TPckgC tmpPckg( prop ); + tmpPckg.Set( propDes ); + aAddr = tmpPckg().iAddr; + aMode = tmpPckg().iMode; + } + else + { + aMode = EBTOutgoingPairNone; + } + } + +// ---------------------------------------------------------- +// Get outgoing pair status from PS +// ---------------------------------------------------------- +// +inline void OutgoPairingProperty(TBTDevAddr& aAddr, TBTOutgoingPairMode& aMode) + { + RProperty property; + TInt err = property.Attach( + KPSUidBluetoothEnginePrivateCategory, KBTOutgoingPairing ); + if ( !err ) + { + OutgoPairingProperty( property, aAddr, aMode ); + } + else + { + aMode = EBTOutgoingPairNone; + } + property.Close(); + } + +// ---------------------------------------------------------- +// Tells if another outgoing pairing is ongoing with a device +// other than the specified one. +// ---------------------------------------------------------- +// +inline TBool OtherOutgoPairing( const TBTDevAddr& aAddr ) + { + TBTDevAddr outpaddr; + TBTOutgoingPairMode mode; + OutgoPairingProperty( outpaddr, mode ); + return mode != EBTOutgoingPairNone && outpaddr != aAddr; + } + +// ---------------------------------------------------------- +// Gets the status of outgoing pair with the specified device. +// ---------------------------------------------------------- +// +inline TBTOutgoingPairMode OutgoPairingMode( + RProperty& aProperty, const TBTDevAddr& aAddr ) + { + TBTDevAddr addr; + TBTOutgoingPairMode mode; + OutgoPairingProperty(aProperty, addr, mode ); + return ( addr == aAddr ) ? mode : EBTOutgoingPairNone; + } + +// ---------------------------------------------------------- +// Gets the status of outgoing pair with the specified device. +// ---------------------------------------------------------- +// +inline TBTOutgoingPairMode OutgoPairingMode(const TBTDevAddr& aAddr) + { + TBTDevAddr addr; + TBTOutgoingPairMode mode; + OutgoPairingProperty( addr, mode ); + return ( addr == aAddr ) ? mode : EBTOutgoingPairNone; + } + +// ---------------------------------------------------------- +// publish outgoing pairing status to PS +// ---------------------------------------------------------- +// +inline void SetOutgoPairProperty(RProperty& aProperty, + const TBTDevAddr& aAddr, + TBTOutgoingPairMode aMode ) + { + if ( aMode == EBTOutgoingPairNone ) + { + (void) aProperty.Set( KNullDesC8 ); + return; + } + TPckgBuf tmpPckg; + tmpPckg().iAddr = aAddr; + tmpPckg().iMode = aMode; + (void) aProperty.Set( tmpPckg ); + } + +// ---------------------------------------------------------- +// Locally instantiate a RProperty and Set Outgoing Pair Property +// ---------------------------------------------------------- +// +inline void SetOutgoPairProperty(const TBTDevAddr& aAddr, + TBTOutgoingPairMode aMode ) + { + RProperty property; + TInt err = property.Attach( + KPSUidBluetoothEnginePrivateCategory, KBTOutgoingPairing ); + if ( !err ) + { + SetOutgoPairProperty( property, aAddr, aMode ); + } + property.Close(); + }