# HG changeset patch # User hgs # Date 1285250807 -10800 # Node ID 22de2e3911564faf0ff4204daab37c3253ac76a1 # Parent 14e279d2bbb775350651b8746ceaf86359a2bd6f 201036 diff -r 14e279d2bbb7 -r 22de2e391156 atext/client/group/extclient.mmp --- a/atext/client/group/extclient.mmp Wed Jul 21 15:42:05 2010 +0300 +++ b/atext/client/group/extclient.mmp Thu Sep 23 17:06:47 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -31,15 +31,8 @@ USERINCLUDE ../inc ../../../inc -// Default system include paths for OS extension layer modules. OS_LAYER_SYSTEMINCLUDE -// Note: -// The only other SYSTEMINCLUDE should you shall add are Symbian specific ones. -// If there is a S60 header in the subdirectory then that should be -// added into the include statements (like #include ) -//SYSTEMINCLUDE /epoc32/include/ecom - LIBRARY euser.lib #ifdef PRJ_FILE_TRACE diff -r 14e279d2bbb7 -r 22de2e391156 atext/client/group/extcommon.mmp --- a/atext/client/group/extcommon.mmp Wed Jul 21 15:42:05 2010 +0300 +++ b/atext/client/group/extcommon.mmp Thu Sep 23 17:06:47 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -31,15 +31,8 @@ USERINCLUDE ../inc -// Default system include paths for OS extension layer modules. OS_LAYER_SYSTEMINCLUDE -// Note: -// The only other SYSTEMINCLUDE should you shall add are Symbian specific ones. -// If there is a S60 header in the subdirectory then that should be -// added into the include statements (like #include ) -//SYSTEMINCLUDE /epoc32/include/ecom - LIBRARY euser.lib #ifdef PRJ_FILE_TRACE diff -r 14e279d2bbb7 -r 22de2e391156 atext/plugins/legacymodemplugin/group/legacymodemplugin.mmp --- a/atext/plugins/legacymodemplugin/group/legacymodemplugin.mmp Wed Jul 21 15:42:05 2010 +0300 +++ b/atext/plugins/legacymodemplugin/group/legacymodemplugin.mmp Thu Sep 23 17:06:47 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009-2010 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" @@ -38,13 +38,6 @@ OS_LAYER_SYSTEMINCLUDE -// Note: -// The only other SYSTEMINCLUDE should you shall add are Symbian specific ones. -// If there is a S60 header in the subdirectory then that should be -// added into the include statements (like #include ) -//SYSTEMINCLUDE /epoc32/include/ecom -SYSTEMINCLUDE /epoc32/include/ecom - LIBRARY ecom.lib LIBRARY euser.lib LIBRARY atextpluginbase.lib diff -r 14e279d2bbb7 -r 22de2e391156 atext/plugins/legacymodemplugin/src/2002B340.rss --- a/atext/plugins/legacymodemplugin/src/2002B340.rss Wed Jul 21 15:42:05 2010 +0300 +++ b/atext/plugins/legacymodemplugin/src/2002B340.rss Thu Sep 23 17:06:47 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009-2010 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" @@ -15,7 +15,7 @@ * */ -#include +#include // Declares info for two implementations RESOURCE REGISTRY_INFO theInfo diff -r 14e279d2bbb7 -r 22de2e391156 atext/server/group/atextcommonbase.mmp --- a/atext/server/group/atextcommonbase.mmp Wed Jul 21 15:42:05 2010 +0300 +++ b/atext/server/group/atextcommonbase.mmp Thu Sep 23 17:06:47 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -34,12 +34,6 @@ // Default system include paths for OS extension layer modules. OS_LAYER_SYSTEMINCLUDE -// Note: -// The only other SYSTEMINCLUDE should you shall add are Symbian specific ones. -// If there is a S60 header in the subdirectory then that should be -// added into the include statements (like #include ) -//SYSTEMINCLUDE /epoc32/include/ecom - LIBRARY ecom.lib LIBRARY euser.lib diff -r 14e279d2bbb7 -r 22de2e391156 atext/server/group/atextpluginbase.mmp --- a/atext/server/group/atextpluginbase.mmp Wed Jul 21 15:42:05 2010 +0300 +++ b/atext/server/group/atextpluginbase.mmp Thu Sep 23 17:06:47 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -34,12 +34,6 @@ // Default system include paths for OS extension layer modules. OS_LAYER_SYSTEMINCLUDE -// Note: -// The only other SYSTEMINCLUDE should you shall add are Symbian specific ones. -// If there is a S60 header in the subdirectory then that should be -// added into the include statements (like #include ) -//SYSTEMINCLUDE /epoc32/include/ecom - LIBRARY ecom.lib LIBRARY euser.lib diff -r 14e279d2bbb7 -r 22de2e391156 atext/server/group/extsrv.mmp --- a/atext/server/group/extsrv.mmp Wed Jul 21 15:42:05 2010 +0300 +++ b/atext/server/group/extsrv.mmp Thu Sep 23 17:06:47 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -62,12 +62,6 @@ // Default system include paths for OS extension layer modules. OS_LAYER_SYSTEMINCLUDE -// Note: -// The only other SYSTEMINCLUDE should you shall add are Symbian specific ones. -// If there is a S60 header in the subdirectory then that should be -// added into the include statements (like #include ) -//SYSTEMINCLUDE /epoc32/include/ecom - LIBRARY atextpluginbase.lib LIBRARY ecom.lib LIBRARY euser.lib diff -r 14e279d2bbb7 -r 22de2e391156 atext/server/group/extsrvcommon.mmp --- a/atext/server/group/extsrvcommon.mmp Wed Jul 21 15:42:05 2010 +0300 +++ b/atext/server/group/extsrvcommon.mmp Thu Sep 23 17:06:47 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -36,12 +36,6 @@ // Default system include paths for OS extension layer modules. OS_LAYER_SYSTEMINCLUDE -// Note: -// The only other SYSTEMINCLUDE should you shall add are Symbian specific ones. -// If there is a S60 header in the subdirectory then that should be -// added into the include statements (like #include ) -//SYSTEMINCLUDE /epoc32/include/ecom - LIBRARY atextcommonbase.lib LIBRARY ecom.lib LIBRARY euser.lib diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btexample/example/btproperties/BTProperties.cpp --- a/bluetooth/btexample/example/btproperties/BTProperties.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btexample/example/btproperties/BTProperties.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2005-2010 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" @@ -200,7 +200,7 @@ { Start(); - TBuf16 val; + TBuf16 val; iProperty.Get(val); iTest.Printf(_L("%S = %S\n"), &iString, &val); diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btextnotifiers/bld.inf --- a/bluetooth/btextnotifiers/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btextnotifiers/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2009-2010 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" @@ -15,9 +15,9 @@ PRJ_EXPORTS -inc/BTExtNotifiers.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(btextnotifiers.h) -inc/BTExtNotifiersPartner.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(btextnotifierspartner.h) -inc/BTExtNotifiersConsts.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(btextnotifiersconsts.h) +inc/BTExtNotifiers.h OS_LAYER_PUBLIC_EXPORT_PATH(btextnotifiers.h) +inc/BTExtNotifiersPartner.h OS_LAYER_PLATFORM_EXPORT_PATH(btextnotifierspartner.h) +inc/BTExtNotifiersConsts.h OS_LAYER_PUBLIC_EXPORT_PATH(btextnotifiersconsts.h) PRJ_MMPFILES src/BTExtNotifiers.mmp diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btextnotifiers/inc/BTExtNotifiers.h --- a/bluetooth/btextnotifiers/inc/BTExtNotifiers.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btextnotifiers/inc/BTExtNotifiers.h Thu Sep 23 17:06:47 2010 +0300 @@ -128,8 +128,8 @@ IMPORT_C TBool UplinkAccessAllowed() const; IMPORT_C TBool IsValid() const; - // Non-exported constructor. Allows creation of default NULL instance - TPanConnection(); + // Allows creation of default NULL instance + IMPORT_C TPanConnection(); private: TBTDevAddr iRemoteDeviceAddress; diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btlogger/btsnoophcilogger/group/bld.inf --- a/bluetooth/btlogger/btsnoophcilogger/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btlogger/btsnoophcilogger/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2005-2010 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" @@ -16,7 +16,7 @@ #include "../test/headercheck/group/bld.inf" PRJ_EXPORTS -../public/hciframelogger.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hciframelogger.h) +../public/hciframelogger.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hciframelogger.h) btsnoophcilogger.iby /epoc32/rom/include/btsnoophcilogger.iby PRJ_MMPFILES diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btlogger/generic/group/bld.inf --- a/bluetooth/btlogger/generic/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btlogger/generic/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2005-2010 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" @@ -20,9 +20,9 @@ #include "../test/headercheck/group/bld.inf" PRJ_EXPORTS -../public/logger.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/logger.h) -../public/components.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/logger/components.h) -btlogger.mmh SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(bluetooth/btlogger.mmh) +../public/logger.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/logger.h) +../public/components.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/logger/components.h) +btlogger.mmh OS_LAYER_PUBLIC_EXPORT_PATH(bluetooth/btlogger.mmh) btlogger.iby /epoc32/rom/include/btlogger.iby diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btsdp/bld.inf --- a/bluetooth/btsdp/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btsdp/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2009-2010 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" @@ -14,7 +14,7 @@ // Bld.inf file for bluetooth service discovery protocol PRJ_EXPORTS -inc/btsdp.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(btsdp.h) +inc/btsdp.h OS_LAYER_PUBLIC_EXPORT_PATH(btsdp.h) PRJ_MMPFILES database/sdpdatabase.mmp diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btsdp/server/protocol/listener.cpp --- a/bluetooth/btsdp/server/protocol/listener.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btsdp/server/protocol/listener.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2000-2010 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" @@ -466,6 +466,10 @@ addr.SetSecurity(sdpSecurity); User::LeaveIfError(iListener.Bind(addr)); + TPckgBuf noSecurityRequired; + noSecurityRequired() = ETrue; + + User::LeaveIfError(iListener.SetOpt(KBTSetNoSecurityRequired, KSolBtSAPBase, noSecurityRequired)); User::LeaveIfError(iListener.Listen(iQueSize)); } diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/HCIShared/group/bld.inf --- a/bluetooth/btstack/HCIShared/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/HCIShared/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2008-2010 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" @@ -14,7 +14,7 @@ // PRJ_EXPORTS -../interface/hcishared.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcishared.h) +../interface/hcishared.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcishared.h) PRJ_MMPFILES hcishared.mmp diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/bld.inf --- a/bluetooth/btstack/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 1999-2010 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" @@ -29,23 +29,21 @@ common/bt_v2.mmp PRJ_EXPORTS -linkmgr/interface/LinkMuxNotifier.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/linkmuxnotifier.h) -linkmgr/interface/PhysicalLinksState.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/physicallinksstate.h) -linkmgr/interface/HardResetInitiator.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hardresetinitiator.h) -eirman/interface/eirmanshared.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/eirmanshared.h) -secman/public/pairingservershared.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/pairingservershared.h) +linkmgr/interface/LinkMuxNotifier.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/linkmuxnotifier.h) +linkmgr/interface/PhysicalLinksState.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/physicallinksstate.h) +linkmgr/interface/HardResetInitiator.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hardresetinitiator.h) +eirman/interface/eirmanshared.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/eirmanshared.h) + +secman/public/pairingservershared.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/pairingservershared.h) + +l2cap/l2capdebuginfo.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/l2capdebuginfo.h) // Stack configuration file - -bluetooth_stack.ini /epoc32/data/z/private/101f7989/bluetooth/bluetooth_stack.ini -bluetooth_stack.ini /epoc32/release/winscw/udeb/z/private/101f7989/bluetooth/bluetooth_stack.ini -bluetooth_stack.ini /epoc32/release/winscw/urel/z/private/101f7989/bluetooth/bluetooth_stack.ini - -PRJ_EXPORTS -l2cap/l2capdebuginfo.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/l2capdebuginfo.h) +bluetooth_stack.ini z:/private/101f7989/bluetooth/bluetooth_stack.ini + diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/bluetooth_stack.ini --- a/bluetooth/btstack/bluetooth_stack.ini Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/bluetooth_stack.ini Thu Sep 23 17:06:47 2010 +0300 @@ -19,6 +19,4 @@ [CoreHci] EcomUid= 0x102736DE -[lowpowermodeconfiguration] -overridelpmtimeout_microseconds= 0 diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/common/bt.h --- a/bluetooth/btstack/common/bt.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/common/bt.h Thu Sep 23 17:06:47 2010 +0300 @@ -44,7 +44,6 @@ EPreauthoriseDevice, // used for multiple SAPs operating in one usecase (eg AVRCP and GAVDP); ESubscribePhysicalLink, EUnsubscribePhysicalLink, - EOverrideLPMWithTimeout, EOverrideLPM, EUndoOverrideLPM, ETryToAndThenPreventHostEncryptionKeyRefresh, diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/common/bt_v2.mmp --- a/bluetooth/btstack/common/bt_v2.mmp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/common/bt_v2.mmp Thu Sep 23 17:06:47 2010 +0300 @@ -78,6 +78,8 @@ SOURCE hcifacade_events.cpp SOURCE physicallinks.cpp SOURCE PhysicalLinkHelper.cpp +SOURCE roleswitchhelper.cpp +SOURCE encryptionkeyrefreshhelper.cpp SOURCE basebandsap.cpp SOURCE physicallinksmanager.cpp SOURCE physicallinkmetrics.cpp diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/common/btsap.cpp --- a/bluetooth/btstack/common/btsap.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/common/btsap.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2003-2010 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" @@ -27,7 +27,7 @@ const char* const KBT_SAP_NAME_DIAG = __PLATSEC_DIAGNOSTIC_STRING("Bluetooth SAP"); CBluetoothSAP::CBluetoothSAP(CBTSecMan& aSecMan, CBTCodServiceMan& aCodMan) -: iSecMan(aSecMan), iCodMan(aCodMan) +: iSecMan(aSecMan), iCodMan(aCodMan), iNoSecurityRequired(EFalse) { } @@ -166,6 +166,7 @@ aSAPWithSecuritySettings.Override(RemoteAddress()), RemoteAddress(), aSecurityModeFourOutgoing ? EGeneralBondingSecurityMode4Outgoing : EGeneralBonding, // We are doing general bonding + aSAPWithSecuritySettings.iNoSecurityRequired, const_cast(handler))); if (err != KErrNone) @@ -273,7 +274,21 @@ rerr = SetCodServiceBits(newServiceBits); // The service bits are saved and then registered when SAP becomes live } break; - + case KBTSetNoSecurityRequired: + { + __ASSERT_DEBUG(iSecurityChecker, User::Panic(KSECURITY_PANIC, EBTPanicNullSecurityChecker)); + rerr = iSecurityChecker->CheckPolicy(KSDP_SID_PROT_SERV, KBT_SAP_NAME_DIAG); + if (rerr == KErrNone) + { + iNoSecurityRequired = *reinterpret_cast(aOption.Ptr()); + } + } + break; + case KBTSecurityDeviceOverride: + { + rerr = SetDeviceOverride(aOption); + } + break; default: // Unhandled SetOpt name rerr = KErrNotSupported; diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/inc/BtSap.h --- a/bluetooth/btstack/inc/BtSap.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/inc/BtSap.h Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2005-2010 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" @@ -89,6 +89,7 @@ CBTCodServiceMan& iCodMan; CAsyncCallBack* iAccessDeniedCallBack; + TBool iNoSecurityRequired; }; diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/l2cap/l2capSAPSignalHandler.cpp --- a/bluetooth/btstack/l2cap/l2capSAPSignalHandler.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/l2cap/l2capSAPSignalHandler.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -813,8 +813,9 @@ { LOG_FUNC // The SAP is about to be detached from this signal handler. - // Ensure no park overrides are active. + // Ensure no overrides are active. UndoOverrideParkMode(); + UndoOverrideLPM(); // Check if this SH has any unsent commands // outstanding. @@ -916,15 +917,26 @@ iSAP->Protocol().ControlPlane().ModifyPhysicalLink(EUndoOverridePark, iSAP->RemoteDev()); } } - -void CL2CapSAPSignalHandler::OverrideLPMWithTimeout() + +void CL2CapSAPSignalHandler::OverrideLPM() { LOG_FUNC // Temporarily override all low power modes. A reference to the SAP is required // to get the remote device address. if(iSAP) { - iSAP->Protocol().ControlPlane().ModifyPhysicalLink(EOverrideLPMWithTimeout, iSAP->RemoteDev()); + iSAP->Protocol().ControlPlane().ModifyPhysicalLink(EOverrideLPM, iSAP->RemoteDev()); } } - + +void CL2CapSAPSignalHandler::UndoOverrideLPM() + { + LOG_FUNC + // Remove the temporary override of all low power modes. A reference to the SAP is + // required to get the remote device address. + if(iSAP) + { + iSAP->Protocol().ControlPlane().ModifyPhysicalLink(EUndoOverrideLPM, iSAP->RemoteDev()); + } + } + diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/l2cap/l2capSAPSignalHandler.h --- a/bluetooth/btstack/l2cap/l2capSAPSignalHandler.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/l2cap/l2capSAPSignalHandler.h Thu Sep 23 17:06:47 2010 +0300 @@ -141,7 +141,8 @@ void OverrideParkMode(); void UndoOverrideParkMode(); - void OverrideLPMWithTimeout(); + void OverrideLPM(); + void UndoOverrideLPM(); inline TInt SignalHandlerErrorCode() const; inline MSocketNotify::TOperationBitmasks SignalHandlerErrorAction() const; diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/l2cap/l2capSigStates.cpp --- a/bluetooth/btstack/l2cap/l2capSigStates.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/l2cap/l2capSigStates.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -286,6 +286,8 @@ { LOG_FUNC // The SAP has requested a channel be opened. + // Override all LPMs to try and avoid signalling timeouts + aSignalHandler.OverrideLPM(); TInt err = aSignalHandler.ChannelConfig().UpdateLocalConfigWithEntityCapabilities(); if (err == KErrNone) @@ -298,9 +300,6 @@ // Update local Port. aSignalHandler.SetLocalPort(port); - // Override park to allow the connection to be made. - aSignalHandler.OverrideParkMode(); - // Active connection. Send a Connect Request command. err = aSignalHandler.ConstructConnectionRequest(); if(err == KErrNone) @@ -330,10 +329,8 @@ // Update local Port. aSignalHandler.SetLocalPort(port); - // Override park to allow the connection to be made. - aSignalHandler.OverrideParkMode(); - // Override all LPMs (if timeout not set to zero) - aSignalHandler.OverrideLPMWithTimeout(); + // Override all LPMs to try and avoid signalling timeouts + aSignalHandler.OverrideLPM(); // Send a response with a 'pending' result and start security procedure. err = aSignalHandler.ConstructConnectionResponse(aSignalHandler.GetOutstandingRequestID(), @@ -384,10 +381,16 @@ aSignalHandler.iOpenChannelRequestAwaitingPeerEntityConfig = EFalse; - // If Park mode has been overridden during either channel establishment or - // channel disconnect, remove the override. - // NB It is safe to call this method multiple times. + // Depending where we came from we may have applied either a + // park override or an all LPM override. We remove both these + // overrides because it's safe to remove an override that + // hasn't been applied. + // Note that although park is one of the LPMs the different + // levels of override are managed separately, so an + // UndoOverrideLPM does not remove an explicit park only + // override. aSignalHandler.UndoOverrideParkMode(); + aSignalHandler.UndoOverrideLPM(); // If the signal handler has left the closed state, it will have been added // to the SH list in the Muxer. Now that the closed state is being @@ -898,6 +901,9 @@ void TL2CAPSigStateWaitConfig::Enter(CL2CapSAPSignalHandler& aSignalHandler) const { LOG_FUNC + // Cancel the Config timer if it's running + aSignalHandler.CancelTimer(); + // First start the ConfigReq sending delay timer (see DelayConfigRequest() for why). // It's short lived, we'll start the proper L2CAP config timer when it expires. aSignalHandler.StartConfigRequestDelayTimer(); @@ -1088,8 +1094,16 @@ } else { - // Remove and park override. + // Depending where we came from we may have applied either a + // park override or an all LPM override. We remove both these + // overrides because it's safe to remove an override that + // hasn't been applied. + // Note that although park is one of the LPMs the different + // levels of override are managed separately, so an + // UndoOverrideLPM does not remove an explicit park only + // override. aSignalHandler.UndoOverrideParkMode(); + aSignalHandler.UndoOverrideLPM(); // Cancel the configuration timer. aSignalHandler.CancelTimer(); @@ -1146,7 +1160,23 @@ void TL2CAPSigStateWaitDisconnect::DisconnectResponse(CL2CapSAPSignalHandler& aSignalHandler) const { LOG_FUNC - aSignalHandler.DrainPendingCommands(); + // We've got a disconnect response, we're done. Any remaing stuff on the queue + // is redundant, so ditch it and close synchronously. + aSignalHandler.FlushAllQueues(); + + // If an error condition has been recorded forward the error + // to the SAP. + if(aSignalHandler.SignalHandlerErrorCode() != KErrNone) + { + Error(aSignalHandler, aSignalHandler.SignalHandlerErrorCode(), aSignalHandler.SignalHandlerErrorAction()); + } + else + { + // This will delete the signal handler if the SAP has detached. + aSignalHandler.SetState(iFactory.GetState(CL2CAPSignalStateFactory::EClosed)); + aSignalHandler.SignalHandlerDisconnectedCanClose(); + } + } // "Artificial" state events @@ -1170,7 +1200,9 @@ void TL2CAPSigStateWaitDisconnect::Enter(CL2CapSAPSignalHandler& aSignalHandler) const { LOG_FUNC - // Override park to allow the disconnect to continue. + // Only override park for disconnect. We need to be able + // to send the signalling, but we don't care if it takes + // ages. No point starting a sniff bun-fight. aSignalHandler.OverrideParkMode(); // Cancel the configuration timer. diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/l2cap/l2sapstates.cpp --- a/bluetooth/btstack/l2cap/l2sapstates.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/l2cap/l2sapstates.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -1423,6 +1423,13 @@ // Consume the event. } +void TL2CAPSAPStateError::SignalHandlerError(CL2CAPConnectionSAP& /*aSAP*/, TInt /*aErrorCode*/, MSocketNotify::TOperationBitmasks /*aErrorAction*/) const + { + LOG_FUNC + // Already in the error state so no need to transition. + // Consume the event. + } + // State Transition Actions. void TL2CAPSAPStateError::Enter(CL2CAPConnectionSAP& aSAP) const { diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/l2cap/l2sapstates.h --- a/bluetooth/btstack/l2cap/l2sapstates.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/l2cap/l2sapstates.h Thu Sep 23 17:06:47 2010 +0300 @@ -412,6 +412,7 @@ // Events called from the SAP Signal Handler. void ChannelClosed(CL2CAPConnectionSAP& aSAP) const; + void SignalHandlerError(CL2CAPConnectionSAP& /*aSAP*/, TInt /*aErrorCode*/, MSocketNotify::TOperationBitmasks /*aErrorAction*/) const; // State Transition Actions. void Enter(CL2CAPConnectionSAP& aSAP) const; diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/MBtHostControllerEventInternalNotifier.h --- a/bluetooth/btstack/linkmgr/MBtHostControllerEventInternalNotifier.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/linkmgr/MBtHostControllerEventInternalNotifier.h Thu Sep 23 17:06:47 2010 +0300 @@ -67,6 +67,8 @@ virtual void RemoteName(THCIErrorCode /*aErr*/, const TBTDevAddr& /*aAddr*/, const TBTDeviceName8& /*aName*/) {}; virtual void SimplePairingComplete(const TBTDevAddr& /*aBDAddr*/, THCIErrorCode /*aErr*/) {}; + + virtual void EncryptionKeyRefreshComplete(THCIErrorCode /*aErr*/, THCIConnHandle /*aConnH*/) {}; }; #endif //_MBTHOSTCONTROLEREVENTINTERNALNOTIFIER_H_ diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/PhysicalLinkHelper.cpp --- a/bluetooth/btstack/linkmgr/PhysicalLinkHelper.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/linkmgr/PhysicalLinkHelper.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -22,60 +22,37 @@ #include "ProxySAP.h" #include "linkmgr.h" + #ifdef __FLOG_ACTIVE _LIT8(KLogComponent, LOG_COMPONENT_LINKMGR); #endif -CRoleSwitcher::CRoleSwitcher(CPhysicalLinksManager& aLinkMgr, CPhysicalLink& aLink, TBTBasebandRole aRole) - : CTimer(CActive::EPriorityStandard) - , iLinkMgr(aLinkMgr) +CPhysicalLinkHelper::CPhysicalLinkHelper(CPhysicalLinksManager& aLinkMgr, CPhysicalLink& aLink) + : iLinkMgr(aLinkMgr) , iLink(aLink) - , iRole(aRole) - , iIsEncryptionDisabledForRoleSwitch(EFalse) { LOG_FUNC - iState = &iLinkMgr.RoleSwitcherStateFactory().GetState(CRoleSwitcherStateFactory::EIdle); - } - -CRoleSwitcher* CRoleSwitcher::NewL(CPhysicalLinksManager& aLinkMgr, CPhysicalLink& aLink, TBTBasebandRole aRole) - { - LOG_STATIC_FUNC - CRoleSwitcher* self = new(ELeave) CRoleSwitcher(aLinkMgr, aLink, aRole); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; } -void CRoleSwitcher::ConstructL() +void CPhysicalLinkHelper::BaseConstructL() { LOG_FUNC // create Proxy telling it the possible PHY iBTProxySAP = CBTProxySAP::NewL(iLinkMgr, &iLink); iBTProxySAP->SetNotify(this); - - TCallBack cb(EventReceivedCallBack, this); - iEventReceivedCallBack = new (ELeave)CAsyncCallBack(cb, EActiveHighPriority); - - CTimer::ConstructL(); - CActiveScheduler::Add(this); - - // add ourselves to the list in LinkMgr, LinkMgr will kick off the role change state machine - iLinkMgr.AddRoleSwitcher(*this); - iAddedToLinkMgr = ETrue; + + TCallBack ecb(EventReceivedCallBack, this); + iEventReceivedCallBack = new (ELeave)CAsyncCallBack(ecb, EActiveHighPriority); } -CRoleSwitcher::~CRoleSwitcher() +CPhysicalLinkHelper::~CPhysicalLinkHelper() { LOG_FUNC - if (iAddedToLinkMgr) - { - iLinkMgr.RemoveRoleSwitcher(*this); - } - - Cancel(); // watchdog timer + + RemoveTimer(); delete iBTProxySAP; + if (iEventReceivedCallBack) { iEventReceivedCallBack->Cancel(); @@ -83,158 +60,14 @@ } } -void CRoleSwitcher::DisableLPM() +void CPhysicalLinkHelper::DisableLPM() { LOG_FUNC TPckgBuf optionBuf; iBTProxySAP->SAPSetOption(KSolBtLMProxy, EBBRequestPreventAllLowPowerModes, optionBuf); } -void CRoleSwitcher::EnableLPM() - { - LOG_FUNC - TPckgBuf optionBuf; - iBTProxySAP->SAPSetOption(KSolBtLMProxy, EBBRequestAllowAllLowPowerModes, optionBuf); - } - -void CRoleSwitcher::DisableEncryption() - { - LOG_FUNC - // data traffic suspended - iLinkMgr.LinkManagerProtocol().ACLController().SetParked(iLink.Handle(), ETrue); - TBTBasebandEvent event(ENotifyEncryptionChangeOff); - iBTProxySAP->Ioctl(KSolBtLMProxy, KLMBasebandEventOneShotNotificationIoctl, &event); - iLinkMgr.Encrypt(EFalse, iLink); - - // set flag here, it's too late when we receive the event as AccessReqester - // might receive the baseband notification earlier then the flag is set! - iIsEncryptionDisabledForRoleSwitch = ETrue; - } - -void CRoleSwitcher::EnableEncryption() - { - LOG_FUNC - TBTBasebandEvent event(ENotifyEncryptionChangeOn); - iBTProxySAP->Ioctl(KSolBtLMProxy, KLMBasebandEventOneShotNotificationIoctl, &event); - iLinkMgr.Encrypt(ETrue, iLink); - // data traffic is enabled in IoctlComplete - } - -void CRoleSwitcher::ChangeRole() - { - LOG_FUNC - TBTBasebandEvent event(ENotifyAnyRole); - iBTProxySAP->Ioctl(KSolBtLMProxy, KLMBasebandEventOneShotNotificationIoctl, &event); - iLinkMgr.ChangeRole(iRole, iLink); - } - -void CRoleSwitcher::CancelIoctl() - { - LOG_FUNC - iBTProxySAP->CancelIoctl(KSolBtLMProxy, KLMBasebandEventOneShotNotificationIoctl); - } - -// Timer -void CRoleSwitcher::RunL() - { - LOG_FUNC - iState->TimerExpired(*this); - } - -TInt CRoleSwitcher::RunError(TInt aError) - { - LOG_FUNC - iState->Error(*this, aError); - return KErrNone; - } - -// From MSocketNotify -void CRoleSwitcher::NewData(TUint /*aCount*/) - { - LOG_FUNC - - } - -void CRoleSwitcher::CanSend() - { - LOG_FUNC - - } - -void CRoleSwitcher::ConnectComplete() - { - LOG_FUNC - - } - -void CRoleSwitcher::ConnectComplete(const TDesC8& /*aConnectData*/) - { - LOG_FUNC - - } - -void CRoleSwitcher::ConnectComplete(CServProviderBase& /*aSSP*/) - { - LOG_FUNC - - } - -void CRoleSwitcher::ConnectComplete(CServProviderBase& /*aSSP*/,const TDesC8& /*aConnectData*/) - { - LOG_FUNC - - } - -void CRoleSwitcher::CanClose(TDelete /*aDelete*/) - { - LOG_FUNC - - } - -void CRoleSwitcher::CanClose(const TDesC8& /*aDisconnectData*/,TDelete /*aDelete*/) - { - LOG_FUNC - - } - -void CRoleSwitcher::Error(TInt /*aError*/,TUint /*aOperationMask*/) - { - LOG_FUNC - - } - -void CRoleSwitcher::Disconnect(void) - { - LOG_FUNC - iState->Error(*this, KErrDisconnected); - } - -void CRoleSwitcher::Disconnect(TDesC8& /*aDisconnectData*/) - { - LOG_FUNC - iState->Error(*this, KErrDisconnected); - } - -void CRoleSwitcher::Start() - { - LOG_FUNC - iState->Start(*this); - } - -void CRoleSwitcher::Finish() - { - LOG_FUNC - // async call to delete this class - iLink.AsyncDeleteRoleSwitcher(); - } - -void CRoleSwitcher::SaveEncryption() - { - LOG_FUNC - iIsEncrypted = iLink.Encrypted(); - } - -TBool CRoleSwitcher::IsEPRSupported() const +TBool CPhysicalLinkHelper::IsEPRSupported() const { LOG_FUNC // For Lisbon (Bluetooth 2.1), if EPR is supported both locally and remotely, @@ -243,418 +76,144 @@ return iLink.IsEncryptionPauseResumeSupported(); } -void CRoleSwitcher::LogRoleSwitchSuccessful() const +void CPhysicalLinkHelper::NotifyBasebandEvent(TNotifyEvent aEvent) + { + LOG_FUNC + TBTBasebandEvent event(aEvent.NotifyEvent()); + iBTProxySAP->Ioctl(KSolBtLMProxy, KLMBasebandEventOneShotNotificationIoctl, &event); + } + +void CPhysicalLinkHelper::CancelNotify() + { + LOG_FUNC + iBTProxySAP->CancelIoctl(KSolBtLMProxy, KLMBasebandEventOneShotNotificationIoctl); + } + +void CPhysicalLinkHelper::QueueTimer(TTimeIntervalMicroSeconds32 aTimerVal) + { + LOG_FUNC + + TCallBack cb(TimerExpiredCallBack, this); + iTimerEntry.Set(cb); + BTSocketTimer::Queue(aTimerVal, iTimerEntry); + } + + +void CPhysicalLinkHelper::RemoveTimer() + { + LOG_FUNC + + BTSocketTimer::Remove(iTimerEntry); + } + +// From MSocketNotify +void CPhysicalLinkHelper::NewData(TUint /*aCount*/) + { + LOG_FUNC + + } + +void CPhysicalLinkHelper::CanSend() + { + LOG_FUNC + + } + +void CPhysicalLinkHelper::ConnectComplete() { LOG_FUNC - TInt eventType; - eventType = (iRole == EMaster ? ENotifyMaster :ENotifySlave); + + } + +void CPhysicalLinkHelper::ConnectComplete(const TDesC8& /*aConnectData*/) + { + LOG_FUNC + + } + +void CPhysicalLinkHelper::ConnectComplete(CServProviderBase& /*aSSP*/) + { + LOG_FUNC - if (iBasebandEvent.EventType()==eventType && - iBasebandEvent.ErrorCode()==KErrNone) - { - LOG(_L("CRoleSwitcher RoleSwitch OK")); - } - else - { - LOG(_L("CRoleSwitcher RoleSwitch failed")); - } + } + +void CPhysicalLinkHelper::ConnectComplete(CServProviderBase& /*aSSP*/,const TDesC8& /*aConnectData*/) + { + LOG_FUNC + + } + +void CPhysicalLinkHelper::CanClose(TDelete /*aDelete*/) + { + LOG_FUNC + } -void CRoleSwitcher::IoctlComplete(TDesC8 *aBuf) +void CPhysicalLinkHelper::CanClose(const TDesC8& /*aDisconnectData*/,TDelete /*aDelete*/) + { + LOG_FUNC + + } + +void CPhysicalLinkHelper::Error(TInt /*aError*/,TUint /*aOperationMask*/) + { + LOG_FUNC + + } + +void CPhysicalLinkHelper::Disconnect(void) + { + LOG_FUNC + Error(KErrDisconnected); + } + +void CPhysicalLinkHelper::Disconnect(TDesC8& /*aDisconnectData*/) + { + LOG_FUNC + Error(KErrDisconnected); + } + +void CPhysicalLinkHelper::IoctlComplete(TDesC8 *aBuf) { LOG_FUNC const TBTBasebandEventNotification* event = reinterpret_cast(aBuf->Ptr()); iBasebandEvent = *event; iEventReceivedCallBack->CallBack(); } - -/*static*/ TInt CRoleSwitcher::EventReceivedCallBack(TAny* aRoleSwitcher) - { - LOG_STATIC_FUNC - CRoleSwitcher* roleSwitcher = static_cast(aRoleSwitcher); - roleSwitcher->iState->EventReceived(*roleSwitcher); - return EFalse; - } - -//---------------------------------------------------------------------------------- -// STATE FACTORY -//---------------------------------------------------------------------------------- - -CRoleSwitcherStateFactory* CRoleSwitcherStateFactory::NewL() +/*static*/ TInt CPhysicalLinkHelper::EventReceivedCallBack(TAny* aThis) { LOG_STATIC_FUNC - CRoleSwitcherStateFactory* ret=new (ELeave) CRoleSwitcherStateFactory(); - CleanupStack::PushL(ret); - ret->ConstructL(); - CleanupStack::Pop(ret); - return ret; - } - -void CRoleSwitcherStateFactory::ConstructL() - { - LOG_FUNC - iStates[EIdle] =new (ELeave) TRSStateIdle(*this); - iStates[EDisablingLPM] =new (ELeave) TRSStateDisablingLPM(*this); - iStates[EDisablingEncryption] =new (ELeave) TRSStateDisablingEncryption(*this); - iStates[EChangingRole] =new (ELeave) TRSStateChangingRole(*this); - iStates[EChangingRoleWithEPR] =new (ELeave) TRSStateChangingRoleWithEPR(*this); - iStates[EEnablingEncryption] =new (ELeave) TRSStateEnablingEncryption(*this); - } - -CRoleSwitcherStateFactory::CRoleSwitcherStateFactory() - { - LOG_FUNC - iStates.DeleteAll(); - } - -TRoleSwitcherState& CRoleSwitcherStateFactory::GetState(CRoleSwitcherStateFactory::TRoleSwitcherStates aState) - { - LOG_FUNC - __ASSERT_DEBUG(iStates[aState], Panic(ERoleSwitcherInvalidState)); - return *iStates[aState]; - } - -TInt CRoleSwitcherStateFactory::StateIndex(const TRoleSwitcherState* aState) const - { - LOG_FUNC - TInt state; - for (state = 0; state < ERoleSwitcherMaxState; state++) - { - if (iStates[state] == aState) - { - return state; - } - } - - return KUnknownState; - } - - -//---------------------------------------------------------------------------------- -// STATES -//---------------------------------------------------------------------------------- - -TRoleSwitcherState::TRoleSwitcherState(CRoleSwitcherStateFactory& aFactory) -: iFactory(aFactory) - { - LOG_FUNC - } - -void TRoleSwitcherState::PanicInState(TLinkPanic aPanic) const - { - LOG_FUNC - Panic(aPanic, iFactory.StateIndex(this)); - } - -void TRoleSwitcherState::ChangeState(CRoleSwitcher& aContext, CRoleSwitcherStateFactory::TRoleSwitcherStates aState) const - { - LOG_FUNC - - aContext.iState->Exit(aContext); - -#ifdef __FLOG_ACTIVE - TRoleSwitcherState* state=&iFactory.GetState(aState); - LOG2(_L("RoleSwitcher: State %S -> %S"), &aContext.iState->iName, &state->iName); -#endif //__FLOG_ACTIVE - aContext.iState=&iFactory.GetState(aState); - - aContext.iState->Enter(aContext); + CPhysicalLinkHelper* helper = static_cast(aThis); + helper->DoEventReceivedCallBack(); + return EFalse; } -void TRoleSwitcherState::Enter(CRoleSwitcher& /*aContext*/) const - { - LOG_FUNC - // do nothing - } - -void TRoleSwitcherState::Exit(CRoleSwitcher& /*aContext*/) const - { - LOG_FUNC - // do nothing - } - -void TRoleSwitcherState::Start(CRoleSwitcher& /*aContext*/) const - { - LOG_FUNC - PanicInState(ERoleSwitcherStateMachineInvalidEvent); - } - -void TRoleSwitcherState::Error(CRoleSwitcher& aContext, TInt /*aErr*/) const - { - LOG_FUNC - aContext.CancelIoctl(); - aContext.Cancel(); - ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); - } - -void TRoleSwitcherState::EventReceived(CRoleSwitcher& /*aContext*/) const - { - LOG_FUNC - // do nothing - } - -void TRoleSwitcherState::TimerExpired(CRoleSwitcher& aContext) const - { - LOG_FUNC - ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); - } - -//---------------------------------------------------------------------------------- - -TRSStateIdle::TRSStateIdle(CRoleSwitcherStateFactory& aFactory) -: TRoleSwitcherState(aFactory) - { - LOG_FUNC - STATENAME("TRSStateIdle"); - } - -void TRSStateIdle::Start(CRoleSwitcher& aContext) const - { - LOG_FUNC - aContext.After(KTimeoutRoleSwitch); // watchdog timer - ChangeState(aContext, CRoleSwitcherStateFactory::EDisablingLPM); - } - -void TRSStateIdle::Enter(CRoleSwitcher& aContext) const - { - LOG_FUNC - aContext.Finish(); - } - -//---------------------------------------------------------------------------------- - -TRSStateDisablingLPM::TRSStateDisablingLPM(CRoleSwitcherStateFactory& aFactory) -: TRoleSwitcherState(aFactory) - { - LOG_FUNC - STATENAME("TRSStateDisablingLPM"); - } - -void TRSStateDisablingLPM::Enter(CRoleSwitcher& aContext) const - { - LOG_FUNC - // DisableLPM even if link is active to prevent possible LPM requests during encryption disabling - - if (aContext.iLink.LinkMode() == EActiveMode) - { - aContext.DisableLPM(); - if (aContext.IsEPRSupported()) - { - ChangeState(aContext, CRoleSwitcherStateFactory::EChangingRoleWithEPR); - } - else - { - ChangeState(aContext, CRoleSwitcherStateFactory::EDisablingEncryption); - } - // don't wait for notification - } - else - { - TBTBasebandEvent event(ENotifyActiveMode); - aContext.iBTProxySAP->Ioctl(KSolBtLMProxy, KLMBasebandEventOneShotNotificationIoctl, &event); - aContext.DisableLPM(); - } - } - -void TRSStateDisablingLPM::EventReceived(CRoleSwitcher& aContext) const +void CPhysicalLinkHelper::DoEventReceivedCallBack() { LOG_FUNC - if (aContext.iBasebandEvent.EventType()==ENotifyActiveMode && - aContext.iBasebandEvent.ErrorCode()==KErrNone) - { - if (aContext.IsEPRSupported()) - { - ChangeState(aContext, CRoleSwitcherStateFactory::EChangingRoleWithEPR); - } - else - { - ChangeState(aContext, CRoleSwitcherStateFactory::EDisablingEncryption); - } - } - else - { - LOG(_L("CRoleSwitcher RoleSwitch failed in DisableLPM")); - // we can quit SM, don't need to rewind - ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); - } - } - -//---------------------------------------------------------------------------------- -TRSStateDisablingEncryption::TRSStateDisablingEncryption(CRoleSwitcherStateFactory& aFactory) -: TRoleSwitcherState(aFactory) - { - LOG_FUNC - STATENAME("TRSStateDisablingEncryption"); - } - -void TRSStateDisablingEncryption::Enter(CRoleSwitcher& aContext) const - { - LOG_FUNC - aContext.SaveEncryption(); - if (aContext.iIsEncrypted) - { - aContext.DisableEncryption(); - } - else - { - ChangeState(aContext, CRoleSwitcherStateFactory::EChangingRole); - } - } - -void TRSStateDisablingEncryption::EventReceived(CRoleSwitcher& aContext) const - { - LOG_FUNC - if (aContext.iBasebandEvent.EventType()==ENotifyEncryptionChangeOff && - aContext.iBasebandEvent.ErrorCode()==KErrNone) - { - ChangeState(aContext, CRoleSwitcherStateFactory::EChangingRole); - } - else - { - LOG(_L("CRoleSwitcher RoleSwitch failed in DisableEncryption")); - // before quiting SM , try to enable LPM - aContext.EnableLPM(); - ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); - } - } - -void TRSStateDisablingEncryption::TimerExpired(CRoleSwitcher& aContext) const - { - LOG_FUNC - aContext.CancelIoctl(); - ChangeState(aContext, CRoleSwitcherStateFactory::EEnablingEncryption); - } - -//---------------------------------------------------------------------------------- -TRSStateChangingRole::TRSStateChangingRole(CRoleSwitcherStateFactory& aFactory) -: TRoleSwitcherState(aFactory) - { - LOG_FUNC - STATENAME("TRSStateChangingRole"); - } - -void TRSStateChangingRole::Enter(CRoleSwitcher& aContext) const - { - LOG_FUNC - aContext.ChangeRole(); - } - -void TRSStateChangingRole::EventReceived(CRoleSwitcher& aContext) const - { - LOG_FUNC - aContext.Cancel(); // cancel watchdog timer - - FTRACE(aContext.LogRoleSwitchSuccessful()); - - - ChangeState(aContext, CRoleSwitcherStateFactory::EEnablingEncryption); - } - -void TRSStateChangingRole::TimerExpired(CRoleSwitcher& aContext) const - { - LOG_FUNC - aContext.CancelIoctl(); - ChangeState(aContext, CRoleSwitcherStateFactory::EEnablingEncryption); + EventReceived(iBasebandEvent); } -//---------------------------------------------------------------------------------- -TRSStateChangingRoleWithEPR::TRSStateChangingRoleWithEPR(CRoleSwitcherStateFactory& aFactory) -: TRoleSwitcherState(aFactory) +/*static*/ TInt CPhysicalLinkHelper::TimerExpiredCallBack(TAny* aThis) { - LOG_FUNC - STATENAME("TRSStateChangingRoleWithEPR"); - } - -void TRSStateChangingRoleWithEPR::Enter(CRoleSwitcher& aContext) const - { - LOG_FUNC - aContext.ChangeRole(); + LOG_STATIC_FUNC + CPhysicalLinkHelper* helper = static_cast(aThis); + helper->DoTimerExpiredCallBack(); + return EFalse; } -void TRSStateChangingRoleWithEPR::EventReceived(CRoleSwitcher& aContext) const - { - LOG_FUNC - aContext.Cancel(); // cancel watchdog timer - - FTRACE(aContext.LogRoleSwitchSuccessful()); - - ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); - } - -void TRSStateChangingRoleWithEPR::TimerExpired(CRoleSwitcher& aContext) const - { - LOG_FUNC - aContext.CancelIoctl(); - ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); - } - -//---------------------------------------------------------------------------------- -TRSStateEnablingEncryption::TRSStateEnablingEncryption(CRoleSwitcherStateFactory& aFactory) -: TRoleSwitcherState(aFactory) - { - LOG_FUNC - STATENAME("TRSStateEnablingEncryption"); - } - -void TRSStateEnablingEncryption::Enter(CRoleSwitcher& aContext) const +void CPhysicalLinkHelper::DoTimerExpiredCallBack() { LOG_FUNC - if (aContext.iIsEncrypted) - { - aContext.After(KTimeoutOneCommand); - aContext.EnableEncryption(); - } - else - { - aContext.EnableLPM(); - ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); - } - } - -void TRSStateEnablingEncryption::Exit(CRoleSwitcher& aContext) const - { - LOG_FUNC - if (aContext.iIsEncrypted) - { - // enable data traffic - aContext.iLinkMgr.LinkManagerProtocol().ACLController().SetParked(aContext.iLink.Handle(), EFalse); - } + TimerExpired(); } -void TRSStateEnablingEncryption::EventReceived(CRoleSwitcher& aContext) const - { - LOG_FUNC - aContext.Cancel(); // watchdog timer - if (aContext.iBasebandEvent.EventType()==ENotifyEncryptionChangeOn && - aContext.iBasebandEvent.ErrorCode()==KErrNone) - { - aContext.EnableLPM(); - ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); - aContext.iIsEncryptionDisabledForRoleSwitch = EFalse; - } - else - { - LOG(_L("CRoleSwitcher SetEncryption failed, disconnect link")); - if (aContext.iLink.Terminate(ERemoteUserEndedConnection) != KErrNone) - { - LOG(_L("CRoleSwitcher OOM")); - } - ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); - } - } - -void TRSStateEnablingEncryption::TimerExpired(CRoleSwitcher& aContext) const - { - LOG_FUNC - LOG(_L("CRoleSwitcher Timeout in EncryptionEnable, disconnect")); - aContext.CancelIoctl(); - if (aContext.iLink.Terminate(ERemoteUserEndedConnection) != KErrNone) - { - LOG(_L("CRoleSwitcher OOM")); - } - ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); - } + + + + + diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/PhysicalLinkHelper.h --- a/bluetooth/btstack/linkmgr/PhysicalLinkHelper.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/linkmgr/PhysicalLinkHelper.h Thu Sep 23 17:06:47 2010 +0300 @@ -22,28 +22,25 @@ #include "linkutil.h" #include -// watchdog for first half of the SM including: -// DisablingLPM, DisablingEncryption, RoleSwitch -const TUint KTimeoutRoleSwitch = 3000000; // 3 s; - -// watchdog for EnablingEncryption -const TUint KTimeoutOneCommand = 2000000; // 2 s; - -class TRoleSwitcherState; - -NONSHARABLE_CLASS(CRoleSwitcher) : public CTimer, public MSocketNotify +// A struct to allow both single event and combination events to be passed for requesting +// notification. This effectively moves the cast to a TInt to below the API rather than +// being required by the client. +struct TNotifyEvent { - friend class TRoleSwitcherState; - friend class TRSStateDisablingLPM; - friend class TRSStateDisablingEncryption; - friend class TRSStateChangingRole; - friend class TRSStateChangingRoleWithEPR; - friend class TRSStateEnablingEncryption; +public: + TNotifyEvent(TBTPhysicalLinkStateNotifier aSingleEvent) : iEvent(aSingleEvent) {}; + TNotifyEvent(TBTPhysicalLinkStateNotifierCombinations aComboEvent) : iEvent(aComboEvent) {}; -public: + TInt NotifyEvent() const {return iEvent;}; +private: + TInt iEvent; + }; - static CRoleSwitcher* NewL(CPhysicalLinksManager& aLinkMgr, CPhysicalLink& aLink, TBTBasebandRole aRole); - ~CRoleSwitcher(); + +NONSHARABLE_CLASS(CPhysicalLinkHelper) : public CBase, public MSocketNotify + { +public: + ~CPhysicalLinkHelper(); // From MSocketNotify void NewData(TUint aCount); @@ -61,196 +58,50 @@ void NoBearer(const TDesC8& /*aConnectionInf*/) {}; void Bearer(const TDesC8& /*aConnectionInf*/) {}; - void Start(); - void Finish(); + virtual void StartHelper() = 0; + inline const TBTDevAddr& BDAddr() const; - inline TBTBasebandRole RequestedRole() const; - inline TBool IsEncryptionDisabledForRoleSwitch() const; - TBool IsEPRSupported() const; - void LogRoleSwitchSuccessful() const; - TSglQueLink iQLink; -private: - CRoleSwitcher(CPhysicalLinksManager& aLinkMgr, CPhysicalLink& aLink, TBTBasebandRole aRole); - void ConstructL(); +protected: + CPhysicalLinkHelper(CPhysicalLinksManager& aLinkMgr, CPhysicalLink& aLink); + void BaseConstructL(); void DisableLPM(); - void DisableEncryption(); - void ChangeRole(); - void EnableEncryption(); - void EnableLPM(); - void CancelIoctl(); - void SaveEncryption(); - // CTimer - void RunL(); - TInt RunError(TInt aError); + void QueueTimer(TTimeIntervalMicroSeconds32 aTimerVal); + void RemoveTimer(); + void NotifyBasebandEvent(TNotifyEvent aEvent); + void CancelNotify(); - static TInt EventReceivedCallBack(TAny* aRoleSwitcher); - // Async Callback to notify baseband event received. - CAsyncCallBack* iEventReceivedCallBack; - TBTBasebandEventNotification iBasebandEvent; - TBool iIsEncrypted; - TBool iIsActive; // LinkMode - TBool iAddedToLinkMgr; - CPhysicalLinksManager& iLinkMgr; - CPhysicalLink& iLink; - TBTBasebandRole iRole; // Requested role - CBTProxySAP* iBTProxySAP; - TRoleSwitcherState* iState; - TBool iIsEncryptionDisabledForRoleSwitch; - }; - -//-------------------------------------------------- -// STATE FACTORY -//-------------------------------------------------- - -/** - Factory for the RoleSwitcher states - - The states are flyweight classes -**/ -NONSHARABLE_CLASS(CRoleSwitcherStateFactory) : public CBase - { -public: - static CRoleSwitcherStateFactory* NewL(); - - enum TRoleSwitcherStates - { - EIdle, - EDisablingLPM, - EDisablingEncryption, - EChangingRole, - EChangingRoleWithEPR, - EEnablingEncryption, - // *** keep next one last *** - ERoleSwitcherMaxState, - }; + TBool IsEPRSupported() const; - TRoleSwitcherState& GetState(TRoleSwitcherStates aState); - TInt StateIndex(const TRoleSwitcherState* aState) const; + virtual void TimerExpired() = 0; + virtual void HandleError(TInt aError) = 0; + virtual void EventReceived(TBTBasebandEventNotification& aEvent) = 0; private: - CRoleSwitcherStateFactory(); - void ConstructL(); - TFixedArray iStates; + static TInt EventReceivedCallBack(TAny* aThis); + void DoEventReceivedCallBack(); + + static TInt TimerExpiredCallBack(TAny* aThis); + void DoTimerExpiredCallBack(); + +protected: + CPhysicalLinksManager& iLinkMgr; + CPhysicalLink& iLink; + +private: + // Async Callback to notify baseband event received. + CAsyncCallBack* iEventReceivedCallBack; + TBTBasebandEventNotification iBasebandEvent; + CBTProxySAP* iBTProxySAP; + + TDeltaTimerEntry iTimerEntry; }; - - -//-------------------------------------------------- -// STATES, base -//-------------------------------------------------- - -NONSHARABLE_CLASS(TRoleSwitcherState) - { -public: - TRoleSwitcherState(CRoleSwitcherStateFactory& aFactory); - - virtual void Enter(CRoleSwitcher& aContext) const; - virtual void Exit(CRoleSwitcher& aContext) const; - - virtual void Start(CRoleSwitcher& aContext) const; - virtual void EventReceived(CRoleSwitcher& aContext) const; - virtual void Error(CRoleSwitcher& aContext, TInt aErr) const; - virtual void TimerExpired(CRoleSwitcher& aContext) const; - -protected: - // Exits old state, sets the new state, and enters it. - void ChangeState(CRoleSwitcher& aContext, CRoleSwitcherStateFactory::TRoleSwitcherStates aState) const; - void PanicInState(TLinkPanic aPanic) const; - -protected: - CRoleSwitcherStateFactory& iFactory; -#ifdef __FLOG_ACTIVE - TBuf<48> iName; -#endif - }; - - -//-------------------------------------------------- -// STATES -//-------------------------------------------------- - -NONSHARABLE_CLASS(TRSStateIdle) : public TRoleSwitcherState - { -public: - TRSStateIdle(CRoleSwitcherStateFactory& aFactory); - - virtual void Enter(CRoleSwitcher& aContext) const; - virtual void Start(CRoleSwitcher& aContext) const; - }; - - -NONSHARABLE_CLASS(TRSStateDisablingLPM) : public TRoleSwitcherState - { -public: - TRSStateDisablingLPM(CRoleSwitcherStateFactory& aFactory); - - virtual void Enter(CRoleSwitcher& aContext) const; - virtual void EventReceived(CRoleSwitcher& aContext) const; - }; - -NONSHARABLE_CLASS(TRSStateDisablingEncryption) : public TRoleSwitcherState - { -public: - TRSStateDisablingEncryption(CRoleSwitcherStateFactory& aFactory); - - virtual void Enter(CRoleSwitcher& aContext) const; - virtual void EventReceived(CRoleSwitcher& aContext) const; - virtual void TimerExpired(CRoleSwitcher& aContext) const; - }; - -NONSHARABLE_CLASS(TRSStateChangingRole) : public TRoleSwitcherState - { -public: - TRSStateChangingRole(CRoleSwitcherStateFactory& aFactory); - - virtual void Enter(CRoleSwitcher& aContext) const; - virtual void EventReceived(CRoleSwitcher& aContext) const; - virtual void TimerExpired(CRoleSwitcher& aContext) const; - }; - -NONSHARABLE_CLASS(TRSStateChangingRoleWithEPR) : public TRoleSwitcherState - { -public: - TRSStateChangingRoleWithEPR(CRoleSwitcherStateFactory& aFactory); - - virtual void Enter(CRoleSwitcher& aContext) const; - virtual void EventReceived(CRoleSwitcher& aContext) const; - virtual void TimerExpired(CRoleSwitcher& aContext) const; - }; - -NONSHARABLE_CLASS(TRSStateEnablingEncryption) : public TRoleSwitcherState - { -public: - TRSStateEnablingEncryption(CRoleSwitcherStateFactory& aFactory); - - virtual void Enter(CRoleSwitcher& aContext) const; - virtual void Exit(CRoleSwitcher& aContext) const; - virtual void EventReceived(CRoleSwitcher& aContext) const; - virtual void TimerExpired(CRoleSwitcher& aContext) const; - }; - -#ifdef __FLOG_ACTIVE -#define STATENAME(x) iName=_L(x) -#else -#define STATENAME(x) -#endif - -inline const TBTDevAddr& CRoleSwitcher::BDAddr() const +inline const TBTDevAddr& CPhysicalLinkHelper::BDAddr() const { return iLink.BDAddr(); } -inline TBTBasebandRole CRoleSwitcher::RequestedRole() const - { - return iRole; - } - -inline TBool CRoleSwitcher::IsEncryptionDisabledForRoleSwitch() const - { - return iIsEncryptionDisabledForRoleSwitch; - } - #endif //PHYSICALLINKHELPER_H_ diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/encryptionkeyrefreshhelper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetooth/btstack/linkmgr/encryptionkeyrefreshhelper.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -0,0 +1,311 @@ +// Copyright (c) 2010 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: +// + +#include + +#include "encryptionkeyrefreshhelper.h" +#include "hcifacade.h" +#include "linkmgr.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, LOG_COMPONENT_LINKMGR); +#endif + +CEncryptionKeyRefresher::CEncryptionKeyRefresher(CPhysicalLinksManager& aLinkMgr, CPhysicalLink& aLink) + : CPhysicalLinkHelper(aLinkMgr, aLink) + { + LOG_FUNC + } + +CEncryptionKeyRefresher* CEncryptionKeyRefresher::NewL(CPhysicalLinksManager& aLinkMgr, CPhysicalLink& aLink) + { + LOG_STATIC_FUNC + CEncryptionKeyRefresher* self = new(ELeave) CEncryptionKeyRefresher(aLinkMgr, aLink); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +void CEncryptionKeyRefresher::ConstructL() + { + LOG_FUNC + + BaseConstructL(); + + iStateFactory = CEncryptionKeyRefresherStateFactory::NewL(); + iState = &(iStateFactory->GetState(CEncryptionKeyRefresherStateFactory::EIdle)); + } + +CEncryptionKeyRefresher::~CEncryptionKeyRefresher() + { + LOG_FUNC + } + +void CEncryptionKeyRefresher::EncryptionKeyRefreshComplete(TInt aError) + { + LOG_FUNC + iState->EncryptionKeyRefreshComplete(*this, aError); + } + +void CEncryptionKeyRefresher::TimerExpired() + { + LOG_FUNC + iState->TimerExpired(*this); + } + +void CEncryptionKeyRefresher::HandleError( TInt aError) + { + LOG_FUNC + iState->Error(*this, aError); + } + +void CEncryptionKeyRefresher::StartHelper() + { + LOG_FUNC + iState->Start(*this); + } + +void CEncryptionKeyRefresher::EventReceived(TBTBasebandEventNotification& aEvent) + { + LOG_FUNC + iState->EventReceived(*this, aEvent); + } + + +//---------------------------------------------------------------------------------- +// STATE FACTORY +//---------------------------------------------------------------------------------- + +CEncryptionKeyRefresherStateFactory* CEncryptionKeyRefresherStateFactory::NewL() + { + LOG_STATIC_FUNC + CEncryptionKeyRefresherStateFactory* ret=new (ELeave) CEncryptionKeyRefresherStateFactory(); + CleanupStack::PushL(ret); + ret->ConstructL(); + CleanupStack::Pop(ret); + return ret; + } + +void CEncryptionKeyRefresherStateFactory::ConstructL() + { + LOG_FUNC + iStates[EIdle] =new (ELeave) TEkrStateIdle(*this); + iStates[EDisablingLPM] =new (ELeave) TEkrStateDisablingLPM(*this); + iStates[ERefreshingKey] =new (ELeave) TEkrStateRefreshingKey(*this); + } + +CEncryptionKeyRefresherStateFactory::CEncryptionKeyRefresherStateFactory() + { + LOG_FUNC + iStates.DeleteAll(); + } + +const TEncryptionKeyRefresherState& CEncryptionKeyRefresherStateFactory::GetState(CEncryptionKeyRefresherStateFactory::TEncryptionKeyRefresherStates aState) const + { + LOG_FUNC + __ASSERT_DEBUG(iStates[aState], Panic(EEncryptionKeyRefresherInvalidState)); + return *iStates[aState]; + } + +TInt CEncryptionKeyRefresherStateFactory::StateIndex(const TEncryptionKeyRefresherState* aState) const + { + LOG_FUNC + TInt state; + for (state = 0; state < EEncryptionKeyRefresherMaxState; state++) + { + if (iStates[state] == aState) + { + return state; + } + } + + return KUnknownState; + } + + +//---------------------------------------------------------------------------------- +// STATES +//---------------------------------------------------------------------------------- + +TEncryptionKeyRefresherState::TEncryptionKeyRefresherState(CEncryptionKeyRefresherStateFactory& aFactory) +: iFactory(aFactory) + { + LOG_FUNC + } + +void TEncryptionKeyRefresherState::PanicInState(TLinkPanic aPanic) const + { + LOG_FUNC + Panic(aPanic, iFactory.StateIndex(this)); + } + +void TEncryptionKeyRefresherState::ChangeState(CEncryptionKeyRefresher& aContext, CEncryptionKeyRefresherStateFactory::TEncryptionKeyRefresherStates aState) const + { + LOG_FUNC + + aContext.iState->Exit(aContext); + +#ifdef __FLOG_ACTIVE + const TEncryptionKeyRefresherState* state=&iFactory.GetState(aState); + LOG2(_L("EncryptionKeyRefresher: State %S -> %S"), &aContext.iState->iName, &state->iName); +#endif //__FLOG_ACTIVE + aContext.iState=&iFactory.GetState(aState); + + aContext.iState->Enter(aContext); + } + +void TEncryptionKeyRefresherState::Enter(CEncryptionKeyRefresher& /*aContext*/) const + { + LOG_FUNC + // do nothing + } + +void TEncryptionKeyRefresherState::Exit(CEncryptionKeyRefresher& /*aContext*/) const + { + LOG_FUNC + // do nothing + } + +void TEncryptionKeyRefresherState::Start(CEncryptionKeyRefresher& /*aContext*/) const + { + LOG_FUNC + PanicInState(EEncryptionKeyRefresherStateMachineInvalidEvent); + } + +void TEncryptionKeyRefresherState::Error(CEncryptionKeyRefresher& aContext, TInt /*aErr*/) const + { + LOG_FUNC + aContext.CancelNotify(); + aContext.RemoveTimer(); + ChangeState(aContext, CEncryptionKeyRefresherStateFactory::EIdle); + } + +void TEncryptionKeyRefresherState::EventReceived(CEncryptionKeyRefresher& /*aContext*/, TBTBasebandEventNotification& /*aEvent*/) const + { + LOG_FUNC + // do nothing + } + +void TEncryptionKeyRefresherState::TimerExpired(CEncryptionKeyRefresher& aContext) const + { + LOG_FUNC + aContext.CancelNotify(); + ChangeState(aContext, CEncryptionKeyRefresherStateFactory::EIdle); + } + +void TEncryptionKeyRefresherState::EncryptionKeyRefreshComplete(CEncryptionKeyRefresher& /*aContext*/, TInt /*aError*/) const + { + LOG_FUNC + // do nothing + } + +//---------------------------------------------------------------------------------- + +TEkrStateIdle::TEkrStateIdle(CEncryptionKeyRefresherStateFactory& aFactory) +: TEncryptionKeyRefresherState(aFactory) + { + LOG_FUNC + STATENAME("TEkrStateIdle"); + } + +void TEkrStateIdle::Start(CEncryptionKeyRefresher& aContext) const + { + LOG_FUNC + aContext.QueueTimer(KTimeoutEncryptionKeyRefresh); // watchdog timer + ChangeState(aContext, CEncryptionKeyRefresherStateFactory::EDisablingLPM); + } + +void TEkrStateIdle::Enter(CEncryptionKeyRefresher& aContext) const + { + LOG_FUNC + // async call to delete the helper + aContext.iLink.AsyncDeleteKeyRefresher(); + } + +//---------------------------------------------------------------------------------- + +TEkrStateDisablingLPM::TEkrStateDisablingLPM(CEncryptionKeyRefresherStateFactory& aFactory) +: TEncryptionKeyRefresherState(aFactory) + { + LOG_FUNC + STATENAME("TEkrStateDisablingLPM"); + } + +void TEkrStateDisablingLPM::Enter(CEncryptionKeyRefresher& aContext) const + { + LOG_FUNC + + if (aContext.iLink.LinkMode() == EActiveMode) + { + // Skip straight on to refresh the key + ChangeState(aContext, CEncryptionKeyRefresherStateFactory::ERefreshingKey); + } + else + { + aContext.NotifyBasebandEvent(ENotifyActiveMode); + } + + // DisableLPM even if link is active to prevent possible LPM requests during key refresh + aContext.DisableLPM(); + } + +void TEkrStateDisablingLPM::EventReceived(CEncryptionKeyRefresher& aContext, TBTBasebandEventNotification& aEvent) const + { + LOG_FUNC + if (aEvent.EventType()==ENotifyActiveMode && aEvent.ErrorCode()==KErrNone) + { + ChangeState(aContext, CEncryptionKeyRefresherStateFactory::ERefreshingKey); + } + else + { + LOG(_L("CEncryptionKeyRefresher failed in DisableLPM")); + // If we can't put ourselves into active mode then don't bother with + // refresh, it'll probably cause more problems than it would solve + // we can quit SM, don't need to rewind + ChangeState(aContext, CEncryptionKeyRefresherStateFactory::EIdle); + } + } + +//---------------------------------------------------------------------------------- +TEkrStateRefreshingKey::TEkrStateRefreshingKey(CEncryptionKeyRefresherStateFactory& aFactory) +: TEncryptionKeyRefresherState(aFactory) + { + LOG_FUNC + STATENAME("TEkrStateRefreshingKey"); + } + +void TEkrStateRefreshingKey::Enter(CEncryptionKeyRefresher& aContext) const + { + LOG_FUNC + + TRAPD(err, aContext.iLinkMgr.HCIFacade().RefreshEncryptionKeyL(aContext.iLink.Handle())); + + if(err) + { + ChangeState(aContext, CEncryptionKeyRefresherStateFactory::EIdle); + } + } + +void TEkrStateRefreshingKey::EncryptionKeyRefreshComplete(CEncryptionKeyRefresher& aContext, TInt __DEBUG_ONLY(aError)) const + { + LOG_FUNC + LOG1(_L("EncryptionKeyRefresh completed with error %d"), aError); + + // Don't really care what the error is, this is just a best effort service + // anyway + ChangeState(aContext, CEncryptionKeyRefresherStateFactory::EIdle); + } + diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/encryptionkeyrefreshhelper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetooth/btstack/linkmgr/encryptionkeyrefreshhelper.h Thu Sep 23 17:06:47 2010 +0300 @@ -0,0 +1,169 @@ +// Copyright (c) 2010 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 ENCRYPTIONKEYREFRESHHELPER_H +#define ENCRYPTIONKEYREFRESHHELPER_H + + +#include +#include + +#include "debug.h" +#include "linkutil.h" +#include "physicallinkhelper.h" +#include "physicallinks.h" + +// watchdog +const TUint KTimeoutEncryptionKeyRefresh = 3000000; // 3 s; + +class TEncryptionKeyRefresherState; +class CEncryptionKeyRefresherStateFactory; +NONSHARABLE_CLASS(CEncryptionKeyRefresher) : public CPhysicalLinkHelper + { + friend class TEncryptionKeyRefresherState; + friend class TEkrStateIdle; + friend class TEkrStateDisablingLPM; + friend class TEkrStateRefreshingKey; + +public: + static CEncryptionKeyRefresher* NewL(CPhysicalLinksManager& aLinkMgr, CPhysicalLink& aLink); + ~CEncryptionKeyRefresher(); + + virtual void StartHelper(); + + void EncryptionKeyRefreshComplete(TInt aError); + +private: + CEncryptionKeyRefresher(CPhysicalLinksManager& aLinkMgr, CPhysicalLink& aLink); + void ConstructL(); + + virtual void TimerExpired(); + virtual void HandleError(TInt aError); + virtual void EventReceived(TBTBasebandEventNotification& aEvent); + +private: + CEncryptionKeyRefresherStateFactory* iStateFactory; + const TEncryptionKeyRefresherState* iState; + }; + +//-------------------------------------------------- +// STATE FACTORY +//-------------------------------------------------- + +/** + Factory for the EncryptionKeyRefresher states + + The states are flyweight classes +**/ +NONSHARABLE_CLASS(CEncryptionKeyRefresherStateFactory) : public CBase + { +public: + static CEncryptionKeyRefresherStateFactory* NewL(); + + enum TEncryptionKeyRefresherStates + { + EIdle, + EDisablingLPM, + ERefreshingKey, + // Note that we don't need a state to enable LPM again + // as this will happen implicitly when we close our + // proxy SAP. + // *** keep next one last *** + EEncryptionKeyRefresherMaxState, + }; + + const TEncryptionKeyRefresherState& GetState(TEncryptionKeyRefresherStates aState) const; + TInt StateIndex(const TEncryptionKeyRefresherState* aState) const; + +private: + CEncryptionKeyRefresherStateFactory(); + void ConstructL(); + TFixedArray iStates; + }; + + + +//-------------------------------------------------- +// STATES, base +//-------------------------------------------------- + +NONSHARABLE_CLASS(TEncryptionKeyRefresherState) + { +public: + TEncryptionKeyRefresherState(CEncryptionKeyRefresherStateFactory& aFactory); + + virtual void Enter(CEncryptionKeyRefresher& aContext) const; + virtual void Exit(CEncryptionKeyRefresher& aContext) const; + + virtual void Start(CEncryptionKeyRefresher& aContext) const; + virtual void EventReceived(CEncryptionKeyRefresher& aContext, TBTBasebandEventNotification& aEvent) const; + virtual void Error(CEncryptionKeyRefresher& aContext, TInt aErr) const; + virtual void TimerExpired(CEncryptionKeyRefresher& aContext) const; + virtual void EncryptionKeyRefreshComplete(CEncryptionKeyRefresher& aContext, TInt aError) const; + +protected: + // Exits old state, sets the new state, and enters it. + void ChangeState(CEncryptionKeyRefresher& aContext, CEncryptionKeyRefresherStateFactory::TEncryptionKeyRefresherStates aState) const; + void PanicInState(TLinkPanic aPanic) const; + +protected: + CEncryptionKeyRefresherStateFactory& iFactory; +#ifdef __FLOG_ACTIVE + TBuf<48> iName; +#endif + }; + + +//-------------------------------------------------- +// STATES +//-------------------------------------------------- + +NONSHARABLE_CLASS(TEkrStateIdle) : public TEncryptionKeyRefresherState + { +public: + TEkrStateIdle(CEncryptionKeyRefresherStateFactory& aFactory); + + virtual void Enter(CEncryptionKeyRefresher& aContext) const; + virtual void Start(CEncryptionKeyRefresher& aContext) const; + }; + + +NONSHARABLE_CLASS(TEkrStateDisablingLPM) : public TEncryptionKeyRefresherState + { +public: + TEkrStateDisablingLPM(CEncryptionKeyRefresherStateFactory& aFactory); + + virtual void Enter(CEncryptionKeyRefresher& aContext) const; + virtual void EventReceived(CEncryptionKeyRefresher& aContext, TBTBasebandEventNotification& aEvent) const; + }; + +NONSHARABLE_CLASS(TEkrStateRefreshingKey) : public TEncryptionKeyRefresherState + { +public: + TEkrStateRefreshingKey(CEncryptionKeyRefresherStateFactory& aFactory); + + virtual void Enter(CEncryptionKeyRefresher& aContext) const; + virtual void EncryptionKeyRefreshComplete(CEncryptionKeyRefresher& aContext, TInt aError) const; + }; + + +#ifdef __FLOG_ACTIVE +#define STATENAME(x) iName=_L(x) +#else +#define STATENAME(x) +#endif + + +#endif /* ENCRYPTIONKEYREFRESHHELPER_H */ diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/hcifacade.cpp --- a/bluetooth/btstack/linkmgr/hcifacade.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/linkmgr/hcifacade.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -175,19 +175,6 @@ iAFHTimer=CAFHTimer::NewL(*this); - // Read low power mode override timeout from the configuration file - _LIT(KLPMSection, "lowpowermodeconfiguration"); - _LIT(KLPMTag, "overridelpmtimeout_microseconds"); - - TUint overrideLPMTimeout = 0; - TRAP(err, overrideLPMTimeout = iHciUtil->GetValueFromFileL(KLPMSection, KLPMTag)); - - if (err == KErrNone) - { - // LPM override timeout found, pass the value into link manager - iLinkMgrProtocol.SetOverrideLPMTimeout(overrideLPMTimeout); - } - iLastPowerState = EBTOn; // used later to ensure that we have enough data to call SetEventMask diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/hcifacade.h --- a/bluetooth/btstack/linkmgr/hcifacade.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/linkmgr/hcifacade.h Thu Sep 23 17:06:47 2010 +0300 @@ -310,6 +310,7 @@ void LinkKeyRequestEvent(const THCIEventBase& aEvent, const CHCICommandBase* aRelatedCommand); void LinkKeyNotificationEvent(const THCIEventBase& aEvent, const CHCICommandBase* aRelatedCommand); void MaxSlotsChangeEvent(const THCIEventBase& aEvent, const CHCICommandBase* aRelatedCommand); + void EncryptionKeyRefreshCompleteEvent(const THCIEventBase& aEvent, const CHCICommandBase* aRelatedCommand); // Data event processing functions void NumberOfCompletedPacketsEvent(THCIEventBase& aEvent); diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/hcifacade_events.cpp --- a/bluetooth/btstack/linkmgr/hcifacade_events.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/linkmgr/hcifacade_events.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -80,6 +80,7 @@ #include #include #include +#include // Command Complete Events @@ -1220,6 +1221,14 @@ iLinksMgr->MaxSlotsChange(maxSlotsChangeEvent.ConnectionHandle(), maxSlotsChangeEvent.LMPMaxSlots()); } +void CHCIFacade::EncryptionKeyRefreshCompleteEvent(const THCIEventBase& aEvent, const CHCICommandBase* /*aRelatedCommand*/) + { + LOG_FUNC + const TEncryptionKeyRefreshCompleteEvent& refreshCompleteEvent = TEncryptionKeyRefreshCompleteEvent::Cast(aEvent); + + iLinksMgr->EncryptionKeyRefreshComplete(aEvent.ErrorCode(), refreshCompleteEvent.ConnectionHandle()); + } + // ---------------------------------------------------------------------------- // Data event processing functions // ---------------------------------------------------------------------------- @@ -1347,6 +1356,10 @@ case EVendorDebugEvent: VendorDebugEvent(aEvent, aRelatedCommand); break; + + case EEncryptionKeyRefreshCompleteEvent: + EncryptionKeyRefreshCompleteEvent(aEvent, aRelatedCommand); + break; // Inquiry based events. // By default these should be caused by the inquiry manager and so be returned to it. @@ -1382,7 +1395,6 @@ case EPageScanModeChangeEvent: case EPageScanRepetitionModeChangeEvent: case EUserPasskeyRequestEvent: - case EEncryptionKeyRefreshCompleteEvent: LOG1(_L("Warning!! Unhandled Command Event (event code:%d)"), aEvent.EventCode()); break; diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/hostmbufpool.cpp --- a/bluetooth/btstack/linkmgr/hostmbufpool.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/linkmgr/hostmbufpool.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -20,6 +20,7 @@ #include #include #include +#include #include "linkconsts.h" #include "linkutil.h" diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/hostresolver.cpp --- a/bluetooth/btstack/linkmgr/hostresolver.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/linkmgr/hostresolver.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -524,21 +524,21 @@ __ASSERT_DEBUG(iRequestState == EIdle, Panic(EHostResolverTwoRequests)); iNameRecord = &aName; iNameRecord->iName.Zero(); - TInquirySockAddr& sa = TInquirySockAddr::Cast(aName.iAddr); + iSockAddr = TInquirySockAddr::Cast(aName.iAddr); - LOG1(_L("Host Resolver\tAction = %d"),sa.Action()); + LOG1(_L("Host Resolver\tAction = %d"),iSockAddr.Action()); - if(sa.Action() & KHostResCache) + if(iSockAddr.Action() & KHostResCache) //Complete immediately with info if available! { TInt err = KErrNotFound; - CBTInqResultRef* ref = iInquiryMgr.FindExistingCacheEntry(sa.BTAddr()); + CBTInqResultRef* ref = iInquiryMgr.FindExistingCacheEntry(iSockAddr.BTAddr()); if (ref) {// Got a result to send up CBTInqResultRecord& rec = ref->Result(); - rec.GetInquirySockAddr(sa); //Put BT address, CoD etc into 'aName' + rec.GetInquirySockAddr(TInquirySockAddr::Cast(aName.iAddr)); //Put BT address, CoD etc into 'aName' // Check whether client wants EIRs instead of names - if(sa.Action() & KHostResEir) + if(iSockAddr.Action() & KHostResEir) { // Client knows about EIR, we'll fill the TNameRecord with EIR err = rec.GetEir(aName, EFalse); @@ -565,7 +565,7 @@ } // Must request at least one of inquiry or name lookup - if (!(sa.Action() & (KHostResInquiry | KHostResName))) + if (!(iSockAddr.Action() & (KHostResInquiry | KHostResName))) { iRequestState = EError; CompleteRequest(KErrArgument); @@ -581,26 +581,26 @@ return; } - iNameLookupMode = (sa.Action()) & KHostResName ? EDoGetNames : EDontGetNames; - TBool ignoreCache = (sa.Action() & KHostResIgnoreCache) ? ETrue : EFalse; + iNameLookupMode = (iSockAddr.Action()) & KHostResName ? EDoGetNames : EDontGetNames; + TBool ignoreCache = (iSockAddr.Action() & KHostResIgnoreCache) ? ETrue : EFalse; - if (sa.Action() & KHostResInquiry) + if (iSockAddr.Action() & KHostResInquiry) { // We only support GIAC and LIAC - if (sa.IAC() != KLIAC && sa.IAC() != KGIAC) + if (iSockAddr.IAC() != KLIAC && iSockAddr.IAC() != KGIAC) { iRequestState = EError; CompleteRequest(KErrNotSupported); return; } - sa.SetBTAddr(TBTDevAddr()); + iSockAddr.SetBTAddr(TBTDevAddr()); iRequestState = EInquiry; if (iInquiryStatus == EInquiryReady) {// Need to start the inquiry process iInquiryStatus = EInquiring; // We set this before calling StartInquiry, as StartInquiry can call InquiryComplete synchronously. iResults.Reset(); - iInquiryMgr.StartInquiry(*this, sa.IAC(), ignoreCache); + iInquiryMgr.StartInquiry(*this, iSockAddr.IAC(), ignoreCache); } } else // Not an inquiry - just a name lookup @@ -608,7 +608,7 @@ // Just name lookup -- add it to the result set, and request a lookup of it iResults.Reset(); - CBTInqResultRef* ref = iInquiryMgr.AddEntryToCache(sa.BTAddr()); + CBTInqResultRef* ref = iInquiryMgr.AddEntryToCache(iSockAddr.BTAddr()); if(ref) {// This ref is in cache -- need to make our own ref ref = iResults.Add(ref->Result()); @@ -620,7 +620,7 @@ } iResults.NextResult(); // Move iter onto first (only) result iRequestState = ENameLookup; - iInquiryMgr.LookupName(*this, sa.BTAddr(), ignoreCache, ETrue); + iInquiryMgr.LookupName(*this, iSockAddr.BTAddr(), ignoreCache, ETrue); } TryToCompleteRequest(); } @@ -709,8 +709,7 @@ if (ref) return; - TInquirySockAddr& sa = TInquirySockAddr::Cast(iNameRecord->iAddr); - if(!aResult.HasRespondedToIAC(sa.IAC())) + if(!aResult.HasRespondedToIAC(iSockAddr.IAC())) return; // It's never responded to our IAC, so ignore it ref = iResults.Add(aResult); @@ -723,7 +722,7 @@ if(iNameLookupMode == EDoGetNames) { // Find out whether cache was supposed to be ignored from TNameRecord that was passed into GetByAddress() previously - TBool ignoreCache = (sa.Action() & KHostResIgnoreCache) ? ETrue : EFalse; + TBool ignoreCache = (iSockAddr.Action() & KHostResIgnoreCache) ? ETrue : EFalse; // Handle a "special" case: Cache is to be ignored, but we got the _complete_ name during the inquiry process inside an EIR // (which doesn't count as cached data, since it's freshly arrived from the radio). In this case we don't really want to // launch a remote name request @@ -801,13 +800,13 @@ TUint CBTHostResolver::GetIAC() const { LOG_FUNC - if (!iNameRecord) + TUint ret = 0; + if (iInquiryStatus == EInquiring) { - return 0; // avoid dereferencing a null ptr + ret = iSockAddr.IAC(); // Only return IAC if an inquiry is requested } - TInquirySockAddr& sa = TInquirySockAddr::Cast(iNameRecord->iAddr); - return sa.IAC(); + return ret; } TInt CBTHostResolver::SecurityCheck(MProvdSecurityChecker *aSecurityChecker) @@ -833,8 +832,7 @@ **/ { LOG_FUNC - TInquirySockAddr& sa = TInquirySockAddr::Cast(iNameRecord->iAddr); - if ((sa.Action() & KHostResInquiry) && iRequestState == EInquiry) + if ((iSockAddr.Action() & KHostResInquiry) && iRequestState == EInquiry) { CBTInqResultRef* refNextRes = iResults.NextResult(); if (refNextRes) @@ -845,12 +843,12 @@ } else {//Complete! - refNextRes->Result().GetInquirySockAddr(sa); + refNextRes->Result().GetInquirySockAddr(TInquirySockAddr::Cast(iNameRecord->iAddr)); // If EIR was requested and we got one, stick it in the name field TInt err = KErrNone; - if(sa.Action() & KHostResEir) + if(iSockAddr.Action() & KHostResEir) { - err = refNextRes->Result().GetEir(*iNameRecord, (sa.Action() & KHostResIgnoreCache) && !(sa.Action() & KHostResName)); + err = refNextRes->Result().GetEir(*iNameRecord, (iSockAddr.Action() & KHostResIgnoreCache) && !(iSockAddr.Action() & KHostResName)); } else { @@ -879,7 +877,7 @@ } } - if ((sa.Action() & KHostResName) && iRequestState == ENameLookup) + if ((iSockAddr.Action() & KHostResName) && iRequestState == ENameLookup) { CBTInqResultRef* refNextRes = iResults.CurrentResult(); if(!refNextRes) @@ -894,11 +892,11 @@ CBTInqResultRecord& rec = refNextRes->Result(); if(rec.HaveNameLookupResult() && !rec.IsNameRequestPending() && rec.IsNameComplete()) {// Got a name! Complete the request - rec.GetInquirySockAddr(sa); + rec.GetInquirySockAddr(TInquirySockAddr::Cast(iNameRecord->iAddr)); TInt err = rec.NameLookupResultCode(); if (err == KErrNone) {// Copy & convert the UTF-8 name over into the result record. - if(sa.Action() & KHostResEir) + if(iSockAddr.Action() & KHostResEir) { err = rec.GetEir(*iNameRecord, EFalse); } @@ -912,7 +910,7 @@ iNameRecord->iName.Zero(); } // Name lookup complete (poss. with errors) - if(sa.Action() & KHostResInquiry) + if(iSockAddr.Action() & KHostResInquiry) {// Ignore name failures if we're also doing inquiry CompleteRequest(KErrNone); } @@ -931,7 +929,7 @@ { CompleteRequest(KErrHardwareNotAvailable); } - if(sa.Action() & KHostResDontBlock) + if(iSockAddr.Action() & KHostResDontBlock) {// Complete any outstanding non-blocking operation CompleteRequest(KErrWouldBlock); } @@ -1047,27 +1045,38 @@ void CBTInquiryMgr::DeletingHostResolver() { LOG_FUNC - // A host resolver is being deleted - we need to check if any other host resolvers want inquiry results from the current IAC. - if(!iRequestedInquiryIAC) + // A host resolver is being deleted - we need to check if we need to change IAC. + // If no host resolver is requesting an inquiry, just let the inquiry run to fill up the cache + TUint requestedIAC = RequestedInquiryIAC(); + if (iHWState == EInquiry && requestedIAC != 0 && iCurrentInquiryIAC != requestedIAC) { - //No 'current' IAC exists - return; - } - TDblQueIter iter(iHRs); - TBool iacFound=EFalse; - while (iter) - { - if ((iter++)->GetIAC() == iRequestedInquiryIAC) + TInt err = CancelHardwareInquiry(); + if(err==KErrNone) { - iacFound = ETrue; + SetHWState(ECancellingForNewIAC); + iFlusher->Cancel(); // Stop watchdog, start flusher. } } - if (!iacFound) - { - iRequestedInquiryIAC = 0; - } } +TUint CBTInquiryMgr::RequestedInquiryIAC() + { + TUint ret = 0; + TDblQueIter iter(iHRs); + CBTHostResolver* hostRes = NULL; + while ((hostRes = iter++) != NULL) + { + // Only overwrite the requested IAC if: + // - We haven't found a host resolver requesting an IAC yet, or + // - This host resolver requests LIAC, which we prioritise over GIAC + if (ret == 0 || hostRes->GetIAC() == KLIAC) + { + ret = hostRes->GetIAC(); + } + } + return ret; + } + void CBTInquiryMgr::InquiryResult(TInt aErr,const TInquiryLogEntry& aEntry) /** Single Inquiry result received. @@ -1174,8 +1183,8 @@ { LOG_FUNC SetCacheAge(iCurrentInquiryIAC, 0); - TUint iacToComplete = iRequestedInquiryIAC; - iRequestedInquiryIAC = 0; + TUint iacToComplete = iCurrentInquiryIAC; + iCurrentInquiryIAC = 0; iFlusher->Cancel(); // Stop watchdog, start flusher SetHWState(EIdle); // don't publish status here, might be doing a name lookup @@ -1208,10 +1217,8 @@ } // Only queue the inquiry if we have completed all the name requests from this one. // Otherwise, it will be issued after all the remote name requests have completed. - if (iQueuedInquiryIAC != 0 && iPendingNameRequests == 0) + if (RequestedInquiryIAC() != 0 && iPendingNameRequests == 0) { - iRequestedInquiryIAC = iQueuedInquiryIAC; - iQueuedInquiryIAC = 0; DoInquiry(); } } @@ -1384,11 +1391,6 @@ // In case we're now free, do inquiry LOG(_L("CBTInquiryMgr::HandleRemoteNameResult asking for another inquiry")); - if (iPendingNameRequests == 0 && iRequestedInquiryIAC == 0) // If we've completed the current inquiry, see if we've got another one queued. - { - iRequestedInquiryIAC = iQueuedInquiryIAC; - iQueuedInquiryIAC = 0; - } DoInquiry(); } @@ -1525,40 +1527,30 @@ return; } - if (iRequestedInquiryIAC || iQueuedInquiryIAC) + if (iCurrentInquiryIAC) { - LOG(_L("CBTInquiryMgr::StartInquiry iRequestedInquiryIAC")); - if(iRequestedInquiryIAC == aIAC) + LOG(_L("CBTInquiryMgr::StartInquiry")); + if (aIgnoreCache && (aIAC == iCurrentInquiryIAC || aIAC == KGIAC)) + { + // an Inquiry is ongoing, return any results already found during the + // current Inquiry if not already done so as part of the complete cache + iCurrentResults.ReturnToFirstResult(); + while (CBTInqResultRef* ref = iCurrentResults.NextResult()) + { + if (ref->Result().iFoundDuringCurrentInquiry) + { + aResolver.InquiryResult(ref->Result()); + } + } + } + if(iCurrentInquiryIAC == aIAC) { - // an Inquiry is ongoing, return any results already found during the - // current Inquiry if not already done so as part of the complete cache - if (aIgnoreCache) - { - iCurrentResults.ReturnToFirstResult(); - while (CBTInqResultRef* ref = iCurrentResults.NextResult()) - { - if (ref->Result().iFoundDuringCurrentInquiry) - { - aResolver.InquiryResult(ref->Result()); - } - } - } // the current Inquiry will just continue return; } - if (aIAC == KGIAC) + if(iHWState == EInquiry && RequestedInquiryIAC() != iCurrentInquiryIAC) { - // If the current IAC is GIAC, and the requested inquiry IAC isn't, it must be LIAC - __ASSERT_DEBUG(iRequestedInquiryIAC == KLIAC, Panic(EBTUnexpectedIAC)); - // Queue a general inquiry for when the current limited inquiry has finished - iQueuedInquiryIAC = aIAC; - return; - } - else if(iHWState == EInquiry) - { - // The host resolver should only allow through GIAC and LIAC, and we handle GIAC above - __ASSERT_DEBUG(aIAC == KLIAC, Panic(EBTUnexpectedIAC)); - // We favour a Limited inqiury, so interrupt the current general inquiry + // The requested IAC (which prioritises LIAC) is different to the current IAC, so cancel to change the IAC TInt err = CancelHardwareInquiry(); if(err!=KErrNone) { @@ -1566,23 +1558,12 @@ aResolver.InquiryComplete(err); // cancel went wrong return; } - // Queue a general inquiry for when the limited inquiry is complete - iRequestedInquiryIAC = KLIAC; - iQueuedInquiryIAC = KGIAC; SetHWState(ECancellingForNewIAC); iFlusher->Cancel(); // Stop watchdog, start flusher. return; } - else - { - // The host resolver should only allow through GIAC and LIAC, and we handle GIAC above - __ASSERT_DEBUG(aIAC == KLIAC, Panic(EBTUnexpectedIAC)); - iRequestedInquiryIAC = KLIAC; - iQueuedInquiryIAC = KGIAC; - } } - iRequestedInquiryIAC = aIAC; iInquiryInteruptions = 0; DoInquiry(); @@ -1802,10 +1783,10 @@ { LOG_FUNC - if(iRequestedInquiryIAC == 0 || iHWState != EIdle || iHRs.IsEmpty()) + if(RequestedInquiryIAC() == 0 || iHWState != EIdle || iHRs.IsEmpty()) { #ifdef _DEBUG - LOG3(_L("Not starting inquiry. iRequestedInquiryIAC == %d, iHWState == %d, iHostResolverCount == %d"), iRequestedInquiryIAC, iHWState, iNumHRs); + LOG3(_L("Not starting inquiry. RequestedInquiryIAC == %d, iHWState == %d, iHostResolverCount == %d"), RequestedInquiryIAC(), iHWState, iNumHRs); if (iHRs.IsEmpty()) { LOG(_L("No HRs interested in results - Stopping discovery")); @@ -1816,6 +1797,10 @@ LOG(_L("CBTInquiryMgr::DoInquiry PublishStatus Idle")); PublishStatus();// make sure the status says we're idle } + if (RequestedInquiryIAC() == 0) + { + iCurrentInquiryIAC = 0; + } return; } @@ -1845,7 +1830,7 @@ { // Couldn't start inquiry. // Make sure the request is completed. - iRequestedInquiryIAC = 0; + iCurrentInquiryIAC = 0; InquiryComplete(err, 0); LOG(_L("CBTInquiryMgr::DoInquiry PublishState Idle couldn't start inquiry")); PublishStatus(); @@ -1877,7 +1862,7 @@ TInt CBTInquiryMgr::StartHardwareInquiry() { LOG_FUNC - iCurrentInquiryIAC = iRequestedInquiryIAC; + iCurrentInquiryIAC = RequestedInquiryIAC(); // attempt to free up baseband space for best performance discovery iLinkMgrProtocol.PhysicalLinksMgr().RequireSlotSpace(); // will *eventually* put connections in hold - we dont wait though TRAPD(err, StartInquiryL(iCurrentInquiryIAC, KInquiryLength, KInquiryMaxResults)); @@ -1923,8 +1908,7 @@ CBTInqResultRecord& rec = ref->Result(); if(rec.IsNameRequestPending()) { - if(!iRequestedInquiryIAC || - rec.NameLookupAttempts() < KMaxNameLookupAttemptsDuringInquiry) + if(RequestedInquiryIAC() == 0 || rec.NameLookupAttempts() < KMaxNameLookupAttemptsDuringInquiry) { // We want the first record for the current IAC or a record for an explicit name request. // Failing that, we'll just have the first record diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/hostresolver.h --- a/bluetooth/btstack/linkmgr/hostresolver.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/linkmgr/hostresolver.h Thu Sep 23 17:06:47 2010 +0300 @@ -305,6 +305,7 @@ TDblQueLink iLink; //Mixin providing security checking, This is not an owned variable. MProvdSecurityChecker* iSecurityChecker; + TInquirySockAddr iSockAddr; }; #ifdef CONNECTION_PREEMPTS_INQUIRY @@ -438,6 +439,8 @@ TInt CacheAge(TUint aIAC) const; void SetCacheAge(TUint aIAC, TInt aAge); + TUint RequestedInquiryIAC(); + private: MHCICommandQueue* iCommandQueue; @@ -448,10 +451,6 @@ THWState iHWState; // IAC of the current inquiry TUint iCurrentInquiryIAC; - // IAC of the inquiry that is currently requested by a host resolver, either in progress or about to start - TUint iRequestedInquiryIAC; - // IAC of the inquiry that has been put on hold while a higher priority IAC is in progress - TUint iQueuedInquiryIAC; // Number of times we've interrupted the current inquiry TInt iInquiryInteruptions; // Time since the last inquiry, per IAC diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/linkmgr.cpp --- a/bluetooth/btstack/linkmgr/linkmgr.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/linkmgr/linkmgr.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -800,12 +800,6 @@ } } -void CLinkMgrProtocol::SetOverrideLPMTimeout(TUint aOverrideLPMTimeout) - { - LOG_FUNC - iOverrideLPMTimeout =aOverrideLPMTimeout; - } - TInt CLinkMgrProtocol::StartProtocolListening() { LOG_FUNC @@ -1365,9 +1359,6 @@ case EUndoOverridePark: rerr = con->UndoOverridePark(); break; - case EOverrideLPMWithTimeout: - rerr = con->OverrideLPMWithTimeout(iOverrideLPMTimeout); - break; case EOverrideLPM: rerr = con->OverrideLPM(); break; diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/linkmgr.h --- a/bluetooth/btstack/linkmgr/linkmgr.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/linkmgr/linkmgr.h Thu Sep 23 17:06:47 2010 +0300 @@ -182,7 +182,6 @@ void SetLimitedDiscoverableIfChangedL(TBool aOn); void SetLocalVersion(THCIErrorCode aErr, TBTDevHCIVersion aHCIVersion, TBTDevLMPVersion aLMPVersion); - void SetOverrideLPMTimeout(TUint aOverrideLPMTimeout); void SetLocalFeatures(THCIErrorCode aErr, const TBTFeatures& aMask); void SetLocalCommands(THCIErrorCode aErr, const TBluetoothHciCommands& aMask); void SetDeviceClassL(TUint32 aCod); @@ -267,8 +266,6 @@ RPointerArray iSubscribers; - TUint iOverrideLPMTimeout; - // protocol state objects TBool iClosePending; // the protocol is closing TDeltaTimerEntry iIdleTimerEntry; diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/linkutil.h --- a/bluetooth/btstack/linkmgr/linkutil.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/linkmgr/linkutil.h Thu Sep 23 17:06:47 2010 +0300 @@ -193,6 +193,8 @@ EBTACLSAPUnexpectedSecurityResult =252, ELinkMgrFlowControlUnexpectedUpdate =253, ELinkMgrFlowControlChangeOfMind =254, + EEncryptionKeyRefresherInvalidState =255, + EEncryptionKeyRefresherStateMachineInvalidEvent = 256, }; /** diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/physicallinks.cpp --- a/bluetooth/btstack/linkmgr/physicallinks.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/linkmgr/physicallinks.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -25,10 +25,11 @@ #include "linkconsts.h" #include "hcifacade.h" #include "hostresolver.h" -#include "PhysicalLinkHelper.h" +#include "roleswitchhelper.h" #include "pairingscache.h" #include "oobdata.h" #include "pairingserver.h" +#include "encryptionkeyrefreshhelper.h" #include @@ -91,7 +92,6 @@ , iProxySAPs(_FOFF(CBTProxySAP, iQueueLink)) , iOverrideParkRequests(EFalse) , iOverrideLPMRequests(EFalse) - , iLPMOverrideTimerQueued(EFalse) , iConnectionPacketTypeChanged(EFalse) , iLowPowModeCtrl(*this, iLinksMan.HCIFacade().CommandQController()) , iDisconnectCtrl(*this, iLinksMan.HCIFacade().CommandQController()) @@ -119,11 +119,6 @@ iACLLogicalLinks.Close(); RemoveIdleTimer(); - if (iLPMOverrideTimerQueued) - { - BTSocketTimer::Remove(iOverrideLPMTimerEntry); - iLPMOverrideTimerQueued = EFalse; - } LOG(_L("sec\tClosing subscribers...")) @@ -149,9 +144,11 @@ delete iPasskeyEntry; delete iArbitrationDelay; delete iRoleSwitchCompleteCallBack; + delete iKeyRefreshCompleteCallBack; delete iEncryptionEnforcer; DeleteRoleSwitcher(); + DeleteKeyRefresher(); } void CPhysicalLink::ConstructL() @@ -164,9 +161,9 @@ TCallBack cb1(RoleSwitchCompleteCallBack, this); iRoleSwitchCompleteCallBack = new (ELeave)CAsyncCallBack(cb1, EActiveHighPriority); - TCallBack cb2(OverrideLPMTimeoutCallback, this); - iOverrideLPMTimerEntry.Set(cb2); - + TCallBack cb2(KeyRefreshCompleteCallBack, this); + iKeyRefreshCompleteCallBack = new (ELeave)CAsyncCallBack(cb2, EActiveHighPriority); + iPhysicalLinkMetrics = CPhysicalLinkMetrics::NewL(*this, iLinksMan.HCIFacade().CommandQController()); } @@ -237,9 +234,19 @@ } else { - if (iAutoKeyRefreshQue.IsEmpty()) + // Only refresh the key if no-one is preventing it and we aren't still + // refreshing the key from a previous request. Note that although + // the previous key refresh may actually have finished if the key + // refresher is waiting for async delete we have only just refreshed + // the key and there's no point doing it again. + if (iAutoKeyRefreshQue.IsEmpty() && !iKeyRefresher) { - TRAP_IGNORE(iLinksMan.HCIFacade().RefreshEncryptionKeyL(iHandle)); + TRAPD(err, iKeyRefresher = CEncryptionKeyRefresher::NewL(iLinksMan, *this)); + if(!err) + { + // Kick off the helper state machine + iKeyRefresher->StartHelper(); + } // If we can't refresh the encryption key, there's not much we can do } XAutoKeyRefreshToken* token = new XAutoKeyRefreshToken(); @@ -1364,6 +1371,17 @@ nameChanger->Start(BDAddr(), aName); } +void CPhysicalLink::EncryptionKeyRefreshComplete(THCIErrorCode aErr, THCIConnHandle aConnH) + { + LOG_FUNC + __CHECK_CONNECTION_HANDLE(aConnH); + + if(iKeyRefresher) + { + iKeyRefresher->EncryptionKeyRefreshComplete(aErr); + } + } + void CPhysicalLink::Disconnection(THCIErrorCode aErr, THCIConnHandle aConnH, THCIErrorCode aResult) { LOG_FUNC @@ -2227,22 +2245,6 @@ iIdleTimerQueued = EFalse; } -void CPhysicalLink::QueueLPMOverrideTimer(TInt aTimeout) -/** - Queue LPM Override timer entry. - When this timer expires, it'll call UndoLPMOverride. -**/ - { - LOG_FUNC - __ASSERT_DEBUG(aTimeout!=0, Panic(EBTPhysicalLinksInvalidArgument)); - if (iLPMOverrideTimerQueued) - { - BTSocketTimer::Remove(iOverrideLPMTimerEntry); - } - BTSocketTimer::Queue(aTimeout, iOverrideLPMTimerEntry); - iLPMOverrideTimerQueued = ETrue; - } - void CPhysicalLink::NotifyStateChange(TBTBasebandEventNotification& aEvent) { LOG_FUNC @@ -2664,6 +2666,27 @@ iRoleSwitcher = NULL; } +void CPhysicalLink::AsyncDeleteKeyRefresher() + { + LOG_FUNC + iKeyRefreshCompleteCallBack->CallBack(); + } + +/*static*/ TInt CPhysicalLink::KeyRefreshCompleteCallBack(TAny* aPhysicalLink) + { + LOG_STATIC_FUNC + CPhysicalLink* physicalLink = static_cast(aPhysicalLink); + physicalLink->DeleteKeyRefresher(); + return EFalse; + } + +void CPhysicalLink::DeleteKeyRefresher() + { + LOG_FUNC + delete iKeyRefresher; + iKeyRefresher = NULL; + } + TBool CPhysicalLink::IsEncryptionDisabledForRoleSwitch() const /** If link is encrypted, but role switcher temporarily disabled encryption, returns true. @@ -2711,20 +2734,6 @@ return Arbitrate(); } -TInt CPhysicalLink::OverrideLPMWithTimeout(TUint aTimeout) - { - LOG_FUNC - if(aTimeout == 0) - { - return KErrNone; //facility not wanted - } - - TInt rerr = OverrideLPM(); - QueueLPMOverrideTimer(aTimeout); - - return rerr; - } - TInt CPhysicalLink::OverrideLPM() /** A request has come in that requires us to ensure we are not using @@ -2739,20 +2748,6 @@ return Arbitrate(); } -/*static*/ TInt CPhysicalLink::OverrideLPMTimeoutCallback(TAny* aCPhysicalLink) - { - LOG_STATIC_FUNC - CPhysicalLink* c = reinterpret_cast(aCPhysicalLink); - TInt err = c->UndoOverrideLPM(); - //we deliberately ignore this return value because we can't do anything to correct the error situation - if (KErrNone != err) - { - LOG2(_L("Physical link: UndoOverrideLPM returned an error %d on the connection 0x%08x"), err, c); - } - c->iLPMOverrideTimerQueued = EFalse; - return KErrNone; - } - TInt CPhysicalLink::UndoOverrideLPM() /** A need to ensure we are not in LPM has gone. diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/physicallinks.h --- a/bluetooth/btstack/linkmgr/physicallinks.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/linkmgr/physicallinks.h Thu Sep 23 17:06:47 2010 +0300 @@ -46,6 +46,7 @@ class CRoleSwitcher; class CBTNumericComparator; class CBTPasskeyEntry; +class CEncryptionKeyRefresher; enum TPhysicalLinkSimplePairingMode { @@ -342,7 +343,6 @@ TInt OverridePark(); TInt UndoOverridePark(); - TInt OverrideLPMWithTimeout(TUint aTimeout); TInt OverrideLPM(); TInt UndoOverrideLPM(); inline TBool IsParked() const; @@ -375,7 +375,8 @@ virtual void RoleChange(THCIErrorCode aErr, const TBTDevAddr& aAddr, TBTBasebandRole aRole); virtual void ClockOffset(THCIErrorCode aErr, THCIConnHandle aConnH, TBasebandTime aClockOffset); virtual void RemoteName(THCIErrorCode aErr, const TBTDevAddr& aAddr, const TBTDeviceName8& aName); - + virtual void EncryptionKeyRefreshComplete(THCIErrorCode aErr, THCIConnHandle aConnH); + void ConnectionComplete(TInt aResult, const TBTConnect& aConn); TBool LinkKeyRequestPending(); @@ -412,6 +413,7 @@ TBTLinkMode LinkMode() const; void AsyncDeleteRoleSwitcher(); + void AsyncDeleteKeyRefresher(); inline const TLinkPolicy& LinkPolicy() const; inline const TBTFeatures& RemoteFeatures() const; @@ -485,7 +487,6 @@ void QueueIdleTimer(TInt aTime); void RemoveIdleTimer(); - void QueueLPMOverrideTimer(TInt aTimeout); void NotifyStateChange(TBTBasebandEventNotification & aEvent); TBool IsPhysicalLinkIdle() const; @@ -496,6 +497,9 @@ void DeleteRoleSwitcher(); static TInt RoleSwitchCompleteCallBack(TAny* CPhysicalLink); TInt ManageEncryptionEnforcement(THCIEncryptModeFlag aEnable); + + void DeleteKeyRefresher(); + static TInt KeyRefreshCompleteCallBack(TAny* CPhysicalLink); void HandlePrefetch(); void PINCodeRequestReply(const TBTDevAddr& aDevAddr,const TDesC8& aPin); @@ -552,13 +556,11 @@ TSglQue iProxySAPs; // the proxies bound to us TDeltaTimerEntry iIdleTimerEntry; TBool iIdleTimerQueued; - TDeltaTimerEntry iOverrideLPMTimerEntry; TLinkPolicy iLinkPolicy; TUint16 iPreviousRequestedModeMask; TBool iOverrideParkRequests; //for maybe temporary unpark TBool iOverrideLPMRequests; //for maybe temporary force active - TBool iLPMOverrideTimerQueued; TBool iConnectionPacketTypeChanged; //for triggering h/w TBool iPreventLinkKeyUpdateReg; //for case e.g. user has called unpair when there is a paired logical channel @@ -570,6 +572,8 @@ CArbitrationDelayTimer* iArbitrationDelay; //for lower power modes CRoleSwitcher* iRoleSwitcher; //class handles role switch, prevents LPM, removes encryption CAsyncCallBack* iRoleSwitchCompleteCallBack;// Async Callback to delete role swticher class. + CEncryptionKeyRefresher* iKeyRefresher; //class handles key refresh + CAsyncCallBack* iKeyRefreshCompleteCallBack;// Async Callback to delete key refresher class. TLowPowModeCmdController iLowPowModeCtrl; CPhysicalLinkMetrics* iPhysicalLinkMetrics; diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/physicallinksmanager.cpp --- a/bluetooth/btstack/linkmgr/physicallinksmanager.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/linkmgr/physicallinksmanager.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -23,7 +23,7 @@ #include "ProxySAP.h" #include -#include "PhysicalLinkHelper.h" +#include "roleswitchhelper.h" #include "hostresolver.h" #include @@ -583,6 +583,13 @@ found->MaxSlotsChange(aConnH, aSlots); } +void CPhysicalLinksManager::EncryptionKeyRefreshComplete(THCIErrorCode aErr, THCIConnHandle aConnH) + { + CPhysicalLink* found = FindPhysicalLink(aConnH); + RETURN_IF_NULL_CONNECTION(found); + found->EncryptionKeyRefreshComplete(aErr, aConnH); + } + void CPhysicalLinksManager::ModeChange(THCIErrorCode aErr, THCIConnHandle aConnH, TBTLinkMode aMode, TBasebandTime aInterval) { CPhysicalLink* found = FindPhysicalLink(aConnH); @@ -996,7 +1003,7 @@ // this the only role request, it's safe to kick off the state machine // first suspend host resolver LinkManagerProtocol().InquiryMgr().Suspend(); - aRoleSwitcher.Start(); + aRoleSwitcher.StartHelper(); } } @@ -1016,7 +1023,7 @@ if (startNextRoleSwitcher && !iRoleSwitchersQ.IsEmpty()) { - iRoleSwitchersQ.First()->Start(); + iRoleSwitchersQ.First()->StartHelper(); } else { diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/physicallinksmanager.h --- a/bluetooth/btstack/linkmgr/physicallinksmanager.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/linkmgr/physicallinksmanager.h Thu Sep 23 17:06:47 2010 +0300 @@ -204,6 +204,8 @@ virtual void ClockOffset(THCIErrorCode aErr, THCIConnHandle aConnH, TBasebandTime aClockOffset); virtual void RemoteName(THCIErrorCode aErr, const TBTDevAddr& aAddr, const TBTDeviceName8& aName); virtual void SimplePairingComplete(const TBTDevAddr& aBDAddr, THCIErrorCode aErr); + virtual void EncryptionKeyRefreshComplete(THCIErrorCode aErr, THCIConnHandle aConnH); + // events from MBTPairingsCacheObserver virtual void MbpcoDeferredDecisionResolved(TInt aError); diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/roleswitchhelper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetooth/btstack/linkmgr/roleswitchhelper.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -0,0 +1,518 @@ +// Copyright (c) 2010 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: +// + + +#include +#include "roleswitchhelper.h" +#include "physicallinksmanager.h" +#include "AclDataQController.h" +#include "ProxySAP.h" +#include "linkmgr.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, LOG_COMPONENT_LINKMGR); +#endif + +CRoleSwitcher::CRoleSwitcher(CPhysicalLinksManager& aLinkMgr, CPhysicalLink& aLink, TBTBasebandRole aRole) + : CPhysicalLinkHelper(aLinkMgr, aLink) + , iRole(aRole) + , iIsEncryptionDisabledForRoleSwitch(EFalse) + { + LOG_FUNC + iState = &iLinkMgr.RoleSwitcherStateFactory().GetState(CRoleSwitcherStateFactory::EIdle); + } + +CRoleSwitcher* CRoleSwitcher::NewL(CPhysicalLinksManager& aLinkMgr, CPhysicalLink& aLink, TBTBasebandRole aRole) + { + LOG_STATIC_FUNC + CRoleSwitcher* self = new(ELeave) CRoleSwitcher(aLinkMgr, aLink, aRole); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +void CRoleSwitcher::ConstructL() + { + LOG_FUNC + + BaseConstructL(); + + // add ourselves to the list in LinkMgr, LinkMgr will kick off the role change state machine + iLinkMgr.AddRoleSwitcher(*this); + iAddedToLinkMgr = ETrue; + } + +CRoleSwitcher::~CRoleSwitcher() + { + LOG_FUNC + if (iAddedToLinkMgr) + { + iLinkMgr.RemoveRoleSwitcher(*this); + } + } + +void CRoleSwitcher::TimerExpired() + { + LOG_FUNC + + iState->TimerExpired(*this); + } + +void CRoleSwitcher::HandleError( TInt aError) + { + LOG_FUNC + + iState->Error(*this, aError); + } + +void CRoleSwitcher::DisableEncryption() + { + LOG_FUNC + // data traffic suspended + iLinkMgr.LinkManagerProtocol().ACLController().SetParked(iLink.Handle(), ETrue); + NotifyBasebandEvent(ENotifyEncryptionChangeOff); + iLinkMgr.Encrypt(EFalse, iLink); + + // set flag here, it's too late when we receive the event as AccessReqester + // might receive the baseband notification earlier then the flag is set! + iIsEncryptionDisabledForRoleSwitch = ETrue; + } + +void CRoleSwitcher::EnableEncryption() + { + LOG_FUNC + NotifyBasebandEvent(ENotifyEncryptionChangeOn); + iLinkMgr.Encrypt(ETrue, iLink); + // data traffic is enabled in IoctlComplete + } + +void CRoleSwitcher::ChangeRole() + { + LOG_FUNC + NotifyBasebandEvent(ENotifyAnyRole); + iLinkMgr.ChangeRole(iRole, iLink); + } + +void CRoleSwitcher::StartHelper() + { + LOG_FUNC + iState->Start(*this); + } + +void CRoleSwitcher::SaveEncryption() + { + LOG_FUNC + iIsEncrypted = iLink.Encrypted(); + } + +void CRoleSwitcher::LogRoleSwitchSuccessful(TBTBasebandEventNotification& aEvent) const + { + LOG_FUNC + TInt eventType; + eventType = (iRole == EMaster ? ENotifyMaster :ENotifySlave); + + if (aEvent.EventType()==eventType && aEvent.ErrorCode()==KErrNone) + { + LOG(_L("CRoleSwitcher RoleSwitch OK")); + } + else + { + LOG(_L("CRoleSwitcher RoleSwitch failed")); + } + } + +void CRoleSwitcher::EventReceived(TBTBasebandEventNotification& aEvent) + { + LOG_FUNC + iState->EventReceived(*this, aEvent); + } + + +//---------------------------------------------------------------------------------- +// STATE FACTORY +//---------------------------------------------------------------------------------- + +CRoleSwitcherStateFactory* CRoleSwitcherStateFactory::NewL() + { + LOG_STATIC_FUNC + CRoleSwitcherStateFactory* ret=new (ELeave) CRoleSwitcherStateFactory(); + CleanupStack::PushL(ret); + ret->ConstructL(); + CleanupStack::Pop(ret); + return ret; + } + +void CRoleSwitcherStateFactory::ConstructL() + { + LOG_FUNC + iStates[EIdle] =new (ELeave) TRSStateIdle(*this); + iStates[EDisablingLPM] =new (ELeave) TRSStateDisablingLPM(*this); + iStates[EDisablingEncryption] =new (ELeave) TRSStateDisablingEncryption(*this); + iStates[EChangingRole] =new (ELeave) TRSStateChangingRole(*this); + iStates[EChangingRoleWithEPR] =new (ELeave) TRSStateChangingRoleWithEPR(*this); + iStates[EEnablingEncryption] =new (ELeave) TRSStateEnablingEncryption(*this); + } + +CRoleSwitcherStateFactory::CRoleSwitcherStateFactory() + { + LOG_FUNC + iStates.DeleteAll(); + } + +TRoleSwitcherState& CRoleSwitcherStateFactory::GetState(CRoleSwitcherStateFactory::TRoleSwitcherStates aState) + { + LOG_FUNC + __ASSERT_DEBUG(iStates[aState], Panic(ERoleSwitcherInvalidState)); + return *iStates[aState]; + } + +TInt CRoleSwitcherStateFactory::StateIndex(const TRoleSwitcherState* aState) const + { + LOG_FUNC + TInt state; + for (state = 0; state < ERoleSwitcherMaxState; state++) + { + if (iStates[state] == aState) + { + return state; + } + } + + return KUnknownState; + } + + +//---------------------------------------------------------------------------------- +// STATES +//---------------------------------------------------------------------------------- + +TRoleSwitcherState::TRoleSwitcherState(CRoleSwitcherStateFactory& aFactory) +: iFactory(aFactory) + { + LOG_FUNC + } + +void TRoleSwitcherState::PanicInState(TLinkPanic aPanic) const + { + LOG_FUNC + Panic(aPanic, iFactory.StateIndex(this)); + } + +void TRoleSwitcherState::ChangeState(CRoleSwitcher& aContext, CRoleSwitcherStateFactory::TRoleSwitcherStates aState) const + { + LOG_FUNC + + aContext.iState->Exit(aContext); + +#ifdef __FLOG_ACTIVE + TRoleSwitcherState* state=&iFactory.GetState(aState); + LOG2(_L("RoleSwitcher: State %S -> %S"), &aContext.iState->iName, &state->iName); +#endif //__FLOG_ACTIVE + aContext.iState=&iFactory.GetState(aState); + + aContext.iState->Enter(aContext); + } + +void TRoleSwitcherState::Enter(CRoleSwitcher& /*aContext*/) const + { + LOG_FUNC + // do nothing + } + +void TRoleSwitcherState::Exit(CRoleSwitcher& /*aContext*/) const + { + LOG_FUNC + // do nothing + } + +void TRoleSwitcherState::Start(CRoleSwitcher& /*aContext*/) const + { + LOG_FUNC + PanicInState(ERoleSwitcherStateMachineInvalidEvent); + } + +void TRoleSwitcherState::Error(CRoleSwitcher& aContext, TInt /*aErr*/) const + { + LOG_FUNC + aContext.CancelNotify(); + aContext.RemoveTimer(); + ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); + } + +void TRoleSwitcherState::EventReceived(CRoleSwitcher& /*aContext*/, TBTBasebandEventNotification& /*aEvent*/) const + { + LOG_FUNC + // do nothing + } + +void TRoleSwitcherState::TimerExpired(CRoleSwitcher& aContext) const + { + LOG_FUNC + ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); + } + +//---------------------------------------------------------------------------------- + +TRSStateIdle::TRSStateIdle(CRoleSwitcherStateFactory& aFactory) +: TRoleSwitcherState(aFactory) + { + LOG_FUNC + STATENAME("TRSStateIdle"); + } + +void TRSStateIdle::Start(CRoleSwitcher& aContext) const + { + LOG_FUNC + aContext.QueueTimer(KTimeoutRoleSwitch); // watchdog timer + ChangeState(aContext, CRoleSwitcherStateFactory::EDisablingLPM); + } + +void TRSStateIdle::Enter(CRoleSwitcher& aContext) const + { + LOG_FUNC + // async call to delete the helper + aContext.iLink.AsyncDeleteRoleSwitcher(); + } + +//---------------------------------------------------------------------------------- + +TRSStateDisablingLPM::TRSStateDisablingLPM(CRoleSwitcherStateFactory& aFactory) +: TRoleSwitcherState(aFactory) + { + LOG_FUNC + STATENAME("TRSStateDisablingLPM"); + } + +void TRSStateDisablingLPM::Enter(CRoleSwitcher& aContext) const + { + LOG_FUNC + // DisableLPM even if link is active to prevent possible LPM requests during encryption disabling + + if (aContext.iLink.LinkMode() == EActiveMode) + { + aContext.DisableLPM(); + if (aContext.IsEPRSupported()) + { + ChangeState(aContext, CRoleSwitcherStateFactory::EChangingRoleWithEPR); + } + else + { + ChangeState(aContext, CRoleSwitcherStateFactory::EDisablingEncryption); + } + // don't wait for notification + } + else + { + aContext.NotifyBasebandEvent(ENotifyActiveMode); + aContext.DisableLPM(); + } + } + +void TRSStateDisablingLPM::EventReceived(CRoleSwitcher& aContext, TBTBasebandEventNotification& aEvent) const + { + LOG_FUNC + if (aEvent.EventType()==ENotifyActiveMode && aEvent.ErrorCode()==KErrNone) + { + if (aContext.IsEPRSupported()) + { + ChangeState(aContext, CRoleSwitcherStateFactory::EChangingRoleWithEPR); + } + else + { + ChangeState(aContext, CRoleSwitcherStateFactory::EDisablingEncryption); + } + } + else + { + LOG(_L("CRoleSwitcher RoleSwitch failed in DisableLPM")); + // we can quit SM, don't need to rewind + ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); + } + } + +//---------------------------------------------------------------------------------- +TRSStateDisablingEncryption::TRSStateDisablingEncryption(CRoleSwitcherStateFactory& aFactory) +: TRoleSwitcherState(aFactory) + { + LOG_FUNC + STATENAME("TRSStateDisablingEncryption"); + } + +void TRSStateDisablingEncryption::Enter(CRoleSwitcher& aContext) const + { + LOG_FUNC + aContext.SaveEncryption(); + if (aContext.iIsEncrypted) + { + aContext.DisableEncryption(); + } + else + { + ChangeState(aContext, CRoleSwitcherStateFactory::EChangingRole); + } + } + +void TRSStateDisablingEncryption::EventReceived(CRoleSwitcher& aContext, TBTBasebandEventNotification& aEvent) const + { + LOG_FUNC + if (aEvent.EventType()==ENotifyEncryptionChangeOff && aEvent.ErrorCode()==KErrNone) + { + ChangeState(aContext, CRoleSwitcherStateFactory::EChangingRole); + } + else + { + LOG(_L("CRoleSwitcher RoleSwitch failed in DisableEncryption")); + // before quiting SM , try to enable LPM + ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); + } + } + +void TRSStateDisablingEncryption::TimerExpired(CRoleSwitcher& aContext) const + { + LOG_FUNC + aContext.CancelNotify(); + ChangeState(aContext, CRoleSwitcherStateFactory::EEnablingEncryption); + } + +//---------------------------------------------------------------------------------- +TRSStateChangingRole::TRSStateChangingRole(CRoleSwitcherStateFactory& aFactory) +: TRoleSwitcherState(aFactory) + { + LOG_FUNC + STATENAME("TRSStateChangingRole"); + } + +void TRSStateChangingRole::Enter(CRoleSwitcher& aContext) const + { + LOG_FUNC + aContext.ChangeRole(); + } + +void TRSStateChangingRole::EventReceived(CRoleSwitcher& aContext, TBTBasebandEventNotification& __DEBUG_ONLY(aEvent)) const + { + LOG_FUNC + aContext.RemoveTimer(); // cancel watchdog timer + + FTRACE(aContext.LogRoleSwitchSuccessful(aEvent)); + + + ChangeState(aContext, CRoleSwitcherStateFactory::EEnablingEncryption); + } + +void TRSStateChangingRole::TimerExpired(CRoleSwitcher& aContext) const + { + LOG_FUNC + aContext.CancelNotify(); + ChangeState(aContext, CRoleSwitcherStateFactory::EEnablingEncryption); + } + +//---------------------------------------------------------------------------------- +TRSStateChangingRoleWithEPR::TRSStateChangingRoleWithEPR(CRoleSwitcherStateFactory& aFactory) +: TRoleSwitcherState(aFactory) + { + LOG_FUNC + STATENAME("TRSStateChangingRoleWithEPR"); + } + +void TRSStateChangingRoleWithEPR::Enter(CRoleSwitcher& aContext) const + { + LOG_FUNC + aContext.ChangeRole(); + } + +void TRSStateChangingRoleWithEPR::EventReceived(CRoleSwitcher& aContext, TBTBasebandEventNotification& __DEBUG_ONLY(aEvent)) const + { + LOG_FUNC + aContext.RemoveTimer(); // cancel watchdog timer + + FTRACE(aContext.LogRoleSwitchSuccessful(aEvent)); + + ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); + } + +void TRSStateChangingRoleWithEPR::TimerExpired(CRoleSwitcher& aContext) const + { + LOG_FUNC + aContext.CancelNotify(); + ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); + } + +//---------------------------------------------------------------------------------- +TRSStateEnablingEncryption::TRSStateEnablingEncryption(CRoleSwitcherStateFactory& aFactory) +: TRoleSwitcherState(aFactory) + { + LOG_FUNC + STATENAME("TRSStateEnablingEncryption"); + } + +void TRSStateEnablingEncryption::Enter(CRoleSwitcher& aContext) const + { + LOG_FUNC + if (aContext.iIsEncrypted) + { + aContext.QueueTimer(KTimeoutOneCommand); + aContext.EnableEncryption(); + } + else + { + ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); + } + } + +void TRSStateEnablingEncryption::Exit(CRoleSwitcher& aContext) const + { + LOG_FUNC + if (aContext.iIsEncrypted) + { + // enable data traffic + aContext.iLinkMgr.LinkManagerProtocol().ACLController().SetParked(aContext.iLink.Handle(), EFalse); + } + } + +void TRSStateEnablingEncryption::EventReceived(CRoleSwitcher& aContext, TBTBasebandEventNotification& aEvent) const + { + LOG_FUNC + aContext.RemoveTimer(); // watchdog timer + if (aEvent.EventType()==ENotifyEncryptionChangeOn && aEvent.ErrorCode()==KErrNone) + { + ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); + aContext.iIsEncryptionDisabledForRoleSwitch = EFalse; + } + else + { + LOG(_L("CRoleSwitcher SetEncryption failed, disconnect link")); + if (aContext.iLink.Terminate(ERemoteUserEndedConnection) != KErrNone) + { + LOG(_L("CRoleSwitcher OOM")); + } + ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); + } + } + +void TRSStateEnablingEncryption::TimerExpired(CRoleSwitcher& aContext) const + { + LOG_FUNC + LOG(_L("CRoleSwitcher Timeout in EncryptionEnable, disconnect")); + aContext.CancelNotify(); + if (aContext.iLink.Terminate(ERemoteUserEndedConnection) != KErrNone) + { + LOG(_L("CRoleSwitcher OOM")); + } + ChangeState(aContext, CRoleSwitcherStateFactory::EIdle); + } + + + diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/linkmgr/roleswitchhelper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetooth/btstack/linkmgr/roleswitchhelper.h Thu Sep 23 17:06:47 2010 +0300 @@ -0,0 +1,230 @@ +// Copyright (c) 2010 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 ROLESWITCHHELPER_H +#define ROLESWITCHHELPER_H + +#include +#include + +#include "debug.h" +#include "linkutil.h" +#include "physicallinkhelper.h" +#include "physicallinks.h" + +// watchdog for first half of the SM including: +// DisablingLPM, DisablingEncryption, RoleSwitch +const TUint KTimeoutRoleSwitch = 3000000; // 3 s; + +// watchdog for EnablingEncryption +const TUint KTimeoutOneCommand = 2000000; // 2 s; + +class TRoleSwitcherState; + +NONSHARABLE_CLASS(CRoleSwitcher) : public CPhysicalLinkHelper + { + friend class TRoleSwitcherState; + friend class TRSStateIdle; + friend class TRSStateDisablingLPM; + friend class TRSStateDisablingEncryption; + friend class TRSStateChangingRole; + friend class TRSStateChangingRoleWithEPR; + friend class TRSStateEnablingEncryption; + +public: + static CRoleSwitcher* NewL(CPhysicalLinksManager& aLinkMgr, CPhysicalLink& aLink, TBTBasebandRole aRole); + ~CRoleSwitcher(); + + virtual void StartHelper(); + + inline TBool IsEncryptionDisabledForRoleSwitch() const; + inline TBTBasebandRole RequestedRole() const; + + TSglQueLink iQLink; + +private: + CRoleSwitcher(CPhysicalLinksManager& aLinkMgr, CPhysicalLink& aLink, TBTBasebandRole aRole); + void ConstructL(); + + virtual void TimerExpired(); + virtual void HandleError(TInt aError); + virtual void EventReceived(TBTBasebandEventNotification& aEvent); + + void DisableEncryption(); + void ChangeRole(); + void EnableEncryption(); + void SaveEncryption(); + + void LogRoleSwitchSuccessful(TBTBasebandEventNotification& aEvent) const; + + TBool iIsEncrypted; + TBool iIsActive; // LinkMode + TBool iAddedToLinkMgr; + TBTBasebandRole iRole; // Requested role + TRoleSwitcherState* iState; + TBool iIsEncryptionDisabledForRoleSwitch; + }; + +//-------------------------------------------------- +// STATE FACTORY +//-------------------------------------------------- + +/** + Factory for the RoleSwitcher states + + The states are flyweight classes +**/ +NONSHARABLE_CLASS(CRoleSwitcherStateFactory) : public CBase + { +public: + static CRoleSwitcherStateFactory* NewL(); + + enum TRoleSwitcherStates + { + EIdle, + EDisablingLPM, + EDisablingEncryption, + EChangingRole, + EChangingRoleWithEPR, + EEnablingEncryption, + // Note that we don't need a state to enable LPM again + // as this will happen implicitly when we close our + // proxy SAP. + // *** keep next one last *** + ERoleSwitcherMaxState, + }; + + TRoleSwitcherState& GetState(TRoleSwitcherStates aState); + TInt StateIndex(const TRoleSwitcherState* aState) const; + +private: + CRoleSwitcherStateFactory(); + void ConstructL(); + TFixedArray iStates; + }; + + + +//-------------------------------------------------- +// STATES, base +//-------------------------------------------------- + +NONSHARABLE_CLASS(TRoleSwitcherState) + { +public: + TRoleSwitcherState(CRoleSwitcherStateFactory& aFactory); + + virtual void Enter(CRoleSwitcher& aContext) const; + virtual void Exit(CRoleSwitcher& aContext) const; + + virtual void Start(CRoleSwitcher& aContext) const; + virtual void EventReceived(CRoleSwitcher& aContext, TBTBasebandEventNotification& aEvent) const; + virtual void Error(CRoleSwitcher& aContext, TInt aErr) const; + virtual void TimerExpired(CRoleSwitcher& aContext) const; + +protected: + // Exits old state, sets the new state, and enters it. + void ChangeState(CRoleSwitcher& aContext, CRoleSwitcherStateFactory::TRoleSwitcherStates aState) const; + void PanicInState(TLinkPanic aPanic) const; + +protected: + CRoleSwitcherStateFactory& iFactory; +#ifdef __FLOG_ACTIVE + TBuf<48> iName; +#endif + }; + + +//-------------------------------------------------- +// STATES +//-------------------------------------------------- + +NONSHARABLE_CLASS(TRSStateIdle) : public TRoleSwitcherState + { +public: + TRSStateIdle(CRoleSwitcherStateFactory& aFactory); + + virtual void Enter(CRoleSwitcher& aContext) const; + virtual void Start(CRoleSwitcher& aContext) const; + }; + + +NONSHARABLE_CLASS(TRSStateDisablingLPM) : public TRoleSwitcherState + { +public: + TRSStateDisablingLPM(CRoleSwitcherStateFactory& aFactory); + + virtual void Enter(CRoleSwitcher& aContext) const; + virtual void EventReceived(CRoleSwitcher& aContext, TBTBasebandEventNotification& aEvent) const; + }; + +NONSHARABLE_CLASS(TRSStateDisablingEncryption) : public TRoleSwitcherState + { +public: + TRSStateDisablingEncryption(CRoleSwitcherStateFactory& aFactory); + + virtual void Enter(CRoleSwitcher& aContext) const; + virtual void EventReceived(CRoleSwitcher& aContext, TBTBasebandEventNotification& aEvent) const; + virtual void TimerExpired(CRoleSwitcher& aContext) const; + }; + +NONSHARABLE_CLASS(TRSStateChangingRole) : public TRoleSwitcherState + { +public: + TRSStateChangingRole(CRoleSwitcherStateFactory& aFactory); + + virtual void Enter(CRoleSwitcher& aContext) const; + virtual void EventReceived(CRoleSwitcher& aContext, TBTBasebandEventNotification& aEvent) const; + virtual void TimerExpired(CRoleSwitcher& aContext) const; + }; + +NONSHARABLE_CLASS(TRSStateChangingRoleWithEPR) : public TRoleSwitcherState + { +public: + TRSStateChangingRoleWithEPR(CRoleSwitcherStateFactory& aFactory); + + virtual void Enter(CRoleSwitcher& aContext) const; + virtual void EventReceived(CRoleSwitcher& aContext, TBTBasebandEventNotification& aEvent) const; + virtual void TimerExpired(CRoleSwitcher& aContext) const; + }; + +NONSHARABLE_CLASS(TRSStateEnablingEncryption) : public TRoleSwitcherState + { +public: + TRSStateEnablingEncryption(CRoleSwitcherStateFactory& aFactory); + + virtual void Enter(CRoleSwitcher& aContext) const; + virtual void Exit(CRoleSwitcher& aContext) const; + virtual void EventReceived(CRoleSwitcher& aContext, TBTBasebandEventNotification& aEvent) const; + virtual void TimerExpired(CRoleSwitcher& aContext) const; + }; + +#ifdef __FLOG_ACTIVE +#define STATENAME(x) iName=_L(x) +#else +#define STATENAME(x) +#endif + +inline TBTBasebandRole CRoleSwitcher::RequestedRole() const + { + return iRole; + } + +inline TBool CRoleSwitcher::IsEncryptionDisabledForRoleSwitch() const + { + return iIsEncryptionDisabledForRoleSwitch; + } + +#endif /* ROLESWITCHHELPER_H */ diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/rfcomm/rfcommmuxchannel.h --- a/bluetooth/btstack/rfcomm/rfcommmuxchannel.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/rfcomm/rfcommmuxchannel.h Thu Sep 23 17:06:47 2010 +0300 @@ -110,7 +110,6 @@ private: TInt TransmitSABM(); TInt TransmitUA(); - TInt TransmitDISC(); TInt TransmitDM(); TInt TransmitPN(TBool aCommand, const TRfcommPortParams& aParams); void QueIdleTimer(TInt aDelay); diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/rfcomm/rfcommmuxchannel.inl --- a/bluetooth/btstack/rfcomm/rfcommmuxchannel.inl Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/rfcomm/rfcommmuxchannel.inl Thu Sep 23 17:06:47 2010 +0300 @@ -102,11 +102,6 @@ return iMux.TransmitUA(KMuxDLCI); } -inline TInt CRfcommMuxChannel::TransmitDISC() - { - return iMux.TransmitDISC(KMuxDLCI); - } - inline TInt CRfcommMuxChannel::TransmitDM() { return iMux.TransmitDM(KMuxDLCI, ETrue); diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/rfcomm/rfcommmuxer.cpp --- a/bluetooth/btstack/rfcomm/rfcommmuxer.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/rfcomm/rfcommmuxer.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -2347,6 +2347,10 @@ **/ { LOG1(_L("RFCOMM: Sending SABM for DLCI %d"), aDLCI); + // We always expect a response for a SABM, so this frame should + // be associated with a SAP or be sent by the mux channel. + __ASSERT_DEBUG(aSAP || (aDLCI == KMuxDLCI), Panic(ERfCommNothingToHandleResponse)); + CRfcommCtrlFrame* frm=NewFrame(aSAP); if(!frm) @@ -2401,12 +2405,22 @@ TInt CRfcommMuxer::TransmitDISC(TUint8 aDLCI, CRfcommSAP* aSAP) { LOG1(_L("RFCOMM: Sending DISC for DLCI %d"), aDLCI); + // In setting the response needed flag we assume that only SAPs + // will send a DISC, not the mux channel. If this changes in the + // future then the condition on setting the response needed flag + // needs reconsidering to deal with this. + __ASSERT_DEBUG(aDLCI != KMuxDLCI, Panic(ERfCommDiscSentOnMuxDlci)); + CRfcommCtrlFrame* frm=NewFrame(aSAP); if(!frm) return KErrNoMemory; + // We only wait for a response for a DISC if there's going to + // be something still around to receive it, otherwise we'll just + // ignore the response when it comes in. + frm->SetResponseNeeded(aSAP ? ETrue : EFalse); + // DISC always has Final set - frm->SetResponseNeeded(ETrue); frm->SetControl(KDISCCtrlField | KPollFinalBitmask); frm->SetAddress(BuildAddr(aDLCI, ETrue)); // C/R set EnqueFrame(frm); @@ -2450,6 +2464,13 @@ __ASSERT_DEBUG(aLen == KRPNCommandLength || aLen == KRPNRequestLength || aLen == KRPNResponseLength, Panic(ERfcommInvalidRPNLength)); + // We never expect an RPN on the mux channel + __ASSERT_DEBUG(aDLCI != KMuxDLCI, Panic(ERfCommUnexpectedCommandOnMuxChannel)); + + // We always expect a response for an RPN command frame, so this frame should + // be associated with a SAP. + __ASSERT_DEBUG(!aCommand || aSAP, Panic(ERfCommNothingToHandleResponse)); + LOG(_L("RFCOMM: Creating RPN frame")); frm=NewSignalFrame(aLen, aCommand, aSAP); if(!frm) @@ -2679,6 +2700,14 @@ { LOG3(_L("RFCOMM: Sending PN %S for dlci %d (MTU=%d)"), (aCommand?&KCommandText:&KResponseText) , aDLCI, aParams.iMaxFrameSize); + // We never expect to send a PN on the mux channel, however to aid interop + // with shoddy remotes we tolerate responding to one + __ASSERT_DEBUG(((aDLCI != KMuxDLCI) || !aCommand), Panic(ERfCommUnexpectedCommandOnMuxChannel)); + + // We always expect a response for a PN command frame, so this frame should + // be associated with a SAP. + __ASSERT_DEBUG(!aCommand || aSAP, Panic(ERfCommNothingToHandleResponse)); + CRfcommMuxCtrlFrame* frm=NewSignalFrame(KRPNCommandLength, aCommand, aSAP); if(!frm) @@ -2801,6 +2830,13 @@ LOG3(_L("RFCOMM: SendMSC %S DLCI %d, Signals %x"), (aCommand?&KCommandText:&KResponseText), aDLCI, aSignals); + // We never expect an MSC on the mux channel + __ASSERT_DEBUG(aDLCI != KMuxDLCI, Panic(ERfCommUnexpectedCommandOnMuxChannel)); + + // We always expect a response for an MSC command frame, so this frame should + // be associated with a SAP. + __ASSERT_DEBUG(!aCommand || aSAP, Panic(ERfCommNothingToHandleResponse)); + CRfcommMuxCtrlFrame* frm=NewSignalFrame(KMSCCommandLength, aCommand, aSAP); if(!frm) return KErrNoMemory; @@ -2844,6 +2880,13 @@ Send out a RLS signalling command **/ { + // We never expect an RLS on the mux channel + __ASSERT_DEBUG(aDLCI != KMuxDLCI, Panic(ERfCommUnexpectedCommandOnMuxChannel)); + + // We always expect a response for an RLS command frame, so this frame should + // be associated with a SAP. + __ASSERT_DEBUG(!aCommand || aSAP, Panic(ERfCommNothingToHandleResponse)); + CRfcommMuxCtrlFrame* frm=NewSignalFrame(KRLSCommandLength, aCommand, aSAP); if(!frm) return KErrNoMemory; diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/rfcomm/rfcommstates.cpp --- a/bluetooth/btstack/rfcomm/rfcommstates.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/rfcomm/rfcommstates.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -99,7 +99,6 @@ if(aType & MSocketNotify::EErrorFatal) { - aSAP.iProtocol.ControlPlane().ModifyPhysicalLink(EUndoOverridePark, aSAP.iRemoteDev); ChangeState(aSAP, CRfcommStateFactory::EError); } return aErr; @@ -657,6 +656,16 @@ don't want to get any more notifications from the mux **/ { + // Depending where we came from we may have applied either a + // park override or an all LPM override. We remove both these + // overrides because it's safe to remove an override that + // hasn't been applied. + // Note that although park is one of the LPMs the different + // levels of override are managed separately, so an + // UndoOverrideLPM does not remove an explicit park only + // override. + aSAP.iProtocol.ControlPlane().ModifyPhysicalLink(EUndoOverridePark, aSAP.iRemoteDev); + aSAP.iProtocol.ControlPlane().ModifyPhysicalLink(EUndoOverrideLPM, aSAP.iRemoteDev); aSAP.DeregisterCodService(); // See if there is a Service to remove for CodMan @@ -694,13 +703,23 @@ } aSAP.iNewDataToNotify=0; aSAP.iDataBuffer.Reset(); + + // Depending where we came from we may have applied either a + // park override or an all LPM override. We remove both these + // overrides because it's safe to remove an override that + // hasn't been applied. + // Note that although park is one of the LPMs the different + // levels of override are managed separately, so an + // UndoOverrideLPM does not remove an explicit park only + // override. aSAP.iProtocol.ControlPlane().ModifyPhysicalLink(EUndoOverridePark, aSAP.iRemoteDev); + aSAP.iProtocol.ControlPlane().ModifyPhysicalLink(EUndoOverrideLPM, aSAP.iRemoteDev); + if(aSAP.iMux) { aSAP.iMux->DetachSAP(aSAP); } aSAP.DeregisterCodService(); // See if there is a Service to remove for CodMan - } void TRfcommStateClosed::Error(CRfcommSAP& /*aSAP*/, TInt /*aErr*/, @@ -731,7 +750,11 @@ } aSAP.RegisterCodService(); // See if there is a Service set for CodMan - + + // Override LPM while we do some sigalling to ensure it can complete in + // a timely fashion. + aSAP.iProtocol.ControlPlane().ModifyPhysicalLink(EOverrideLPM, aSAP.iRemoteDev); + // First get a Mux. ChangeState(aSAP, CRfcommStateFactory::EWaitForMux); } @@ -1313,7 +1336,7 @@ newSAP->iRemoteDev=aMux.RemoteBTAddr(); // Must come after registering the remote address with the new SAP because we will need // the remote address to find a link in LinkMgrProtocol to override LPM on - newSAP->iProtocol.ControlPlane().ModifyPhysicalLink(EOverrideLPMWithTimeout, newSAP->iRemoteDev); + newSAP->iProtocol.ControlPlane().ModifyPhysicalLink(EOverrideLPM, newSAP->iRemoteDev); newSAP->iUserDefinedMTU=aSAP.iUserDefinedMTU; // We take our cues as // regards max MTU from // the listening SAP. @@ -1738,7 +1761,17 @@ return; } + // Depending where we came from we may have applied either a + // park override or an all LPM override. We remove both these + // overrides because it's safe to remove an override that + // hasn't been applied. + // Note that although park is one of the LPMs the different + // levels of override are managed separately, so an + // UndoOverrideLPM does not remove an explicit park only + // override. aSAP.iProtocol.ControlPlane().ModifyPhysicalLink(EUndoOverridePark, aSAP.iRemoteDev); + aSAP.iProtocol.ControlPlane().ModifyPhysicalLink(EUndoOverrideLPM, aSAP.iRemoteDev); + aSAP.iSocket->ConnectComplete(); aSAP.CTS(EFalse); // So that we block should anyone try to write // anything through this SAP before we get MSC @@ -1779,6 +1812,9 @@ Shutdown the open channel gracefully **/ { + // Only override park for disconnect. We need to be able + // to send the signalling, but we don't care if it takes + // ages. No point starting a sniff bun-fight. aSAP.iProtocol.ControlPlane().ModifyPhysicalLink(EOverridePark, aSAP.iRemoteDev); aSAP.iClosePending=ETrue; ChangeState(aSAP, CRfcommStateFactory::EDisconnect); @@ -1796,6 +1832,10 @@ // the queued DISC frame does not get deleted when the SAP gets // removed from the muxer __ASSERT_DEBUG(aSAP.iMux!=NULL,PanicInState(ERfcommNullMux)); + + // Only override park for disconnect. We need to be able + // to send the signalling, but we don't care if it takes + // ages. No point starting a sniff bun-fight. aSAP.iProtocol.ControlPlane().ModifyPhysicalLink(EOverridePark, aSAP.iRemoteDev); aSAP.iMux->SendDISC(aSAP.DLCI()); // Disassociated from the SAP ChangeState(aSAP, CRfcommStateFactory::EClosed); diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/rfcomm/rfcommutil.h --- a/bluetooth/btstack/rfcomm/rfcommutil.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/rfcomm/rfcommutil.h Thu Sep 23 17:06:47 2010 +0300 @@ -89,6 +89,9 @@ ERfCommMuxerStateOutOfBounds = 64, ERfCommStateOutOfBounds = 65, ERfCommStateBufferFull = 66, + ERfCommNothingToHandleResponse = 67, + ERfCommDiscSentOnMuxDlci = 68, + ERfCommUnexpectedCommandOnMuxChannel = 69, }; /** diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/sdp/sdpclient.cpp --- a/bluetooth/btstack/sdp/sdpclient.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/sdp/sdpclient.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2000-2010 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" @@ -40,6 +40,7 @@ { iBoundSAP=iL2CAP.NewSAPL(KSockSeqPacket); iBoundSAP->SetNotify(this); + iBoundSAP->SecurityCheck(this); CheckForIdle(KSDPIdleTimeout*4);// No point hanging about if no one connects } @@ -93,6 +94,13 @@ { Panic(ESdpErrorSettingAddress); } + TPckgBuf noSecurityRequired; + noSecurityRequired() = ETrue; + + if(iBoundSAP->SetOption(KSolBtSAPBase, KBTSetNoSecurityRequired, noSecurityRequired)!=KErrNone) + { + Panic(ESdpAgentErrorSettingNoSecurity); + } iBoundSAP->ActiveOpen(); // Signals ConnectComplete eventually! } @@ -650,3 +658,7 @@ return FALSE; } +TInt CSdpClient::CheckPolicy(const TSecurityPolicy& /*aPolicy*/, const char* /*aDiagnostic*/) + { + return KErrNone; + } diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/sdp/sdpclient.h --- a/bluetooth/btstack/sdp/sdpclient.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/sdp/sdpclient.h Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2000-2010 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" @@ -32,7 +32,7 @@ acts as an internal socket binding to a lower level SAP. Thus we derive from MSocketNotify so that the SAP can directly notify us of events. **/ -NONSHARABLE_CLASS(CSdpClient) : public CBase, private MSocketNotify +NONSHARABLE_CLASS(CSdpClient) : public CBase, private MSocketNotify, private MProvdSecurityChecker { friend class CSdpProtocol; public: @@ -72,6 +72,9 @@ void Bearer(const TDesC8& /*aConnectionInf*/) {}; private: + // From MProvdSecurityChecker + TInt CheckPolicy(const TSecurityPolicy& aPolicy, const char *aDiagnostic); + // Create/destroy CSdpClient(CSdpProtocol& aProtocol, CProtocolBase& aL2CAP); void ConstructL(); diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/sdp/sdpstackutil.h --- a/bluetooth/btstack/sdp/sdpstackutil.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/sdp/sdpstackutil.h Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2000-2010 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" @@ -31,7 +31,8 @@ ESdpTwoQuerys, // 8 ESdpNoRequestPdu, // 9 ESdpBadUUID, // 10 - ESdpAgentBadResultLength // 11 + ESdpAgentBadResultLength, // 11 + ESdpAgentErrorSettingNoSecurity, // 12 }; void Panic(TSdpPanic aPanic); diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/secman/btaccessrequester.cpp --- a/bluetooth/btstack/secman/btaccessrequester.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/secman/btaccessrequester.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -51,10 +51,11 @@ const TBTServiceSecurityPerDevice* const aOverride, MAccessRequestResponseHandler& aRequester, TAccessType aAccessType, + TBool aNoSecurityRequired, CBTSecMan& aParent) { LOG_STATIC_FUNC - CBTAccessRequester* s = new(ELeave) CBTAccessRequester(aConnection, aSecurityRequired, aOverride, aRequester, aAccessType, aParent); + CBTAccessRequester* s = new(ELeave) CBTAccessRequester(aConnection, aSecurityRequired, aOverride, aRequester, aAccessType, aNoSecurityRequired, aParent); CleanupStack::PushL(s); s->ConstructL(); return s; @@ -66,6 +67,7 @@ const TBTServiceSecurityPerDevice* const aOverride, MAccessRequestResponseHandler& aRequester, TAccessType aAccessType, + TBool aNoSecurityRequired, CBTSecMan& aParent) : iRequester(aRequester) , iSecMan(aParent) @@ -81,6 +83,7 @@ , iAccessType(aAccessType) , iRemoteIndicatedNoBonding(EFalse) , iCurrentState(EBTUninitialised) + , iNoSecurityRequired(aNoSecurityRequired) { LOG_FUNC // try to get name for UI dialogs @@ -911,7 +914,13 @@ // Here we determine if authentication is required on the link. TBool authenticationRequired = EFalse; - if(iBaseband->SimplePairingMode() == EPhySimplePairingEnabled) + if (iNoSecurityRequired) + { + // This is used for Security Mode 4 "no security required", e.g. SDP, + // which we never authenticate + // // authenticationRequired is already EFalse + } + else if(iBaseband->SimplePairingMode() == EPhySimplePairingEnabled) { // If operating in simple pairing mode then authentication is always required // due to security mode 4. @@ -948,7 +957,7 @@ { LOG_FUNC TBool authenticationRecommended = AuthenticationRequired(); - if(!authenticationRecommended && LinkKeyGoodEnough()) + if(!authenticationRecommended && LinkKeyGoodEnough() && !iNoSecurityRequired) { // If the current link key is good enough then we should be able to use that // if it is available. @@ -984,7 +993,7 @@ { // Otherwise dedicated bonding is incidental...so only for general bonding accesses // do we consider enabling encryption. - if(iBaseband->SimplePairingMode() == EPhySimplePairingEnabled) + if(iBaseband->SimplePairingMode() == EPhySimplePairingEnabled && !iNoSecurityRequired) { // If the link is SSP capable then for security mode 4 we must encrypt the link // for general bonding requests. diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/secman/pairingserver.cpp --- a/bluetooth/btstack/secman/pairingserver.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/secman/pairingserver.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2008-2010 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" @@ -639,7 +639,6 @@ } } - void COobDataSession::XoldoLocalOobDataRetrieved(TInt aResult, const TBluetoothSimplePairingHash& aHash, const TBluetoothSimplePairingRandomizer& aRandomizer) { LOG_FUNC @@ -702,8 +701,8 @@ { LOG_FUNC iPhysicalLinksManager.SecMan().CancelRequest(*this); - delete iProxySap; - if(iStartBondingMsg.Handle()) + delete iProxySap; // cannot do an immediate shutdown as the semantics for that kill the phy + if(!iStartBondingMsg.IsNull()) { iStartBondingMsg.Complete(KErrCancel); } @@ -718,6 +717,7 @@ case EPairingServerStartDedicatedBond: StartBondingL(aMessage); break; + default: CPairingSubSession::DispatchSubSessMessageL(aMessage); break; @@ -727,9 +727,18 @@ void CDedicatedBondingSession::Complete(TInt aError) { LOG_FUNC - iState = EShutdown; - iAsyncShutdown->CallBack(); - iStartBondingMsg.Complete(aError); + if(!iStartBondingMsg.IsNull()) + { + __ASSERT_DEBUG(!ShuttingDown(), PANIC(KPairingServerFaultCat, EPairingServerBadShutdownState)); + iState = EShutdownRequested; + iAsyncShutdown->CallBack(); + iPhysicalLinksManager.SecMan().CancelRequest(*this); // we don't want the result anymore (if it's still pending). + iStartBondingMsg.Complete(aError); + } + else + { + __ASSERT_DEBUG(ShuttingDown(), PANIC(KPairingServerFaultCat, EPairingServerBadShutdownState)); + } } TInt CDedicatedBondingSession::StaticShutdown(TAny* aDedBond) @@ -742,42 +751,49 @@ void CDedicatedBondingSession::Shutdown() { LOG_FUNC - __ASSERT_DEBUG(iState == EShutdown, PANIC(KPairingServerFaultCat, EPairingServerBadShutdownState)); - iState = EInvalid; + __ASSERT_DEBUG(iState == EShutdownRequested, PANIC(KPairingServerFaultCat, EPairingServerBadShutdownState)); + __ASSERT_DEBUG(iStartBondingMsg.IsNull(), PANIC(KPairingServerFaultCat, EPairingServerMessageShouldBeNull)); + iState = EShutdownPending; iProxySap->Shutdown(CServProviderBase::ENormal); } + +TBool CDedicatedBondingSession::ShuttingDown() const + { + return iState == EShutdownRequested || iState == EShutdownPending; + } void CDedicatedBondingSession::StartBondingL(const RMessage2& aMessage) { LOG_FUNC - if(!iStartBondingMsg.IsNull() || iState != EInvalid) + if(iState != EMintCondition) { aMessage.Panic(KPairingServerPanicCat, EPairingServerDedicatedBondAlreadyInProgress); return; } - + __ASSERT_DEBUG(iStartBondingMsg.IsNull(), PANIC(KPairingServerFaultCat, EPairingServerMessageShouldBeNull)); + + // Now we've been initiated, no turning back for this object. + iState = EInitiated; + TPckgBuf addrBuf; TInt addrLen = aMessage.GetDesLengthL(0); if(addrLen != sizeof(TBTDevAddr)) { - // If the length is correct then the address has been packaged incorrect for the + // If the length is incorrect then the address has been packaged incorrectly for the // IPC operation. LEAVEL(KErrBadDescriptor); } aMessage.ReadL(0, addrBuf); - iStartBondingMsg = aMessage; - CleanupStack::PushL(TCleanupItem(CleanupStartMessage, this)); - TBTSockAddr addr; addr.SetBTAddr(addrBuf()); iProxySap = CBTProxySAP::NewL(iPhysicalLinksManager, NULL); - - CleanupStack::Pop(this); // the start message cleaner + iStartBondingMsg = aMessage; // Now we've entered the realm of not leaving with an error, since the connection // process has started. Errors from now on must be via the Error() function call. + iState = EInitialConnectionPending; iProxySap->SetNotify(this); iProxySap->SetRemName(addr); @@ -789,13 +805,6 @@ } } -void CDedicatedBondingSession::CleanupStartMessage(TAny* aPtr) - { - LOG_STATIC_FUNC - CDedicatedBondingSession* session = reinterpret_cast(aPtr); - session->iStartBondingMsg = RMessage2(); // blat the old one - } - void CDedicatedBondingSession::DoAccessRequestL() { LOG_FUNC @@ -803,7 +812,7 @@ security.SetAuthentication(EMitmDesired); security.SetUid(KBluetoothDedicatedBondingUid); - iPhysicalLinksManager.SecMan().AccessRequestL(security, NULL, iProxySap->RemoteAddress(), EDedicatedBonding, *this); + iPhysicalLinksManager.SecMan().AccessRequestL(security, NULL, iProxySap->RemoteAddress(), EDedicatedBonding, EFalse, *this); } void CDedicatedBondingSession::AccessRequestComplete(TInt aResult) @@ -833,7 +842,7 @@ // fall-through... case EInitialConnection: ASSERT_DEBUG(aResult != EBTSecManAccessDeferred); // Should have been disconnected if we receive - // this - I don't expect this to happen. + // this - I don't expect this to happen. // fall-through... case EFinalConnection: completed = ETrue; // in the final connection any complete is errored. @@ -842,12 +851,15 @@ err = KErrAccessDenied; } break; + case EInitialConnectionPending: + // fall-through deliberate case EFinalConnectionPending: // Access request shouldn't successfully complete if the connection is still pending __ASSERT_DEBUG(aResult != EBTSecManAccessGranted, PANIC(KPairingServerFaultCat, EPairingServerUnexpectedAccessCallback)); // We should get the MSocketNotify::Error callback, so don't do anything else break; + default: LOG1(_L("Unexpected Access Request Complete in state %d"), iState); __ASSERT_DEBUG(EFalse, PANIC(KPairingServerFaultCat, EPairingServerUnexpectedAccessCallback)); @@ -885,15 +897,21 @@ case EFinalConnectionPending: iState = EFinalConnection; break; + case EInitialConnection: + // fall-through deliberate case EFinalConnection: // Apparently multiple connect completes are allowed by CSocket break; - case EShutdown: + + case EShutdownRequested: + // fall-through deliberate + case EShutdownPending: // If an error occurred just after the connection request then we // might receive a connection complete before the async shutdown request - // has been executed. + // has been executed or completed. break; + default: LOG1(_L("Unexpected Connect Complete in state %d"), iState); __ASSERT_DEBUG(EFalse, PANIC(KPairingServerFaultCat, EPairingServerUnexpectedSocketCallback)); @@ -924,6 +942,9 @@ void CDedicatedBondingSession::CanClose(TDelete aDelete) { LOG_FUNC + __ASSERT_DEBUG(iState == EShutdownPending, PANIC(KPairingServerFaultCat, EPairingServerUnexpectedSocketCallback)); + __ASSERT_DEBUG(iStartBondingMsg.IsNull(), PANIC(KPairingServerFaultCat, EPairingServerMessageShouldBeNull)); + iState = EShutdown; if (aDelete == EDelete) { delete iProxySap; iProxySap = NULL; @@ -951,12 +972,17 @@ // enter the zombie state and wait for the access requester to complete. iState = EZombie; break; + case EFinalConnection: Error(KErrDisconnected); break; - case EShutdown: + + case EShutdownRequested: + // fall-through deliberate + case EShutdownPending: // Already closing down. break; + default: LOG1(_L("Unexpected Disconnect in state %d"), iState); __ASSERT_DEBUG(EFalse, PANIC(KPairingServerFaultCat, EPairingServerUnexpectedSocketCallback)); diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/secman/pairingserver.h --- a/bluetooth/btstack/secman/pairingserver.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/secman/pairingserver.h Thu Sep 23 17:06:47 2010 +0300 @@ -218,8 +218,8 @@ void Complete(TInt aError); - static void CleanupStartMessage(TAny* aPtr); static TInt StaticShutdown(TAny* aPtr); + TBool ShuttingDown() const; private: // from CPairingSubSession void DispatchSubSessMessageL(const RMessage2& aMessage); @@ -246,12 +246,15 @@ private: enum TState { - EInvalid, + EMintCondition, + EInitiated, EInitialConnectionPending, EInitialConnection, EZombie, EFinalConnectionPending, EFinalConnection, + EShutdownRequested, + EShutdownPending, EShutdown, }; diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/secman/public/pairingservershared.h --- a/bluetooth/btstack/secman/public/pairingservershared.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/secman/public/pairingservershared.h Thu Sep 23 17:06:47 2010 +0300 @@ -71,6 +71,7 @@ EPairingServerUnexpectedSocketCallback, EPairingServerUnexpectedAccessCallback, EPairingServerBadShutdownState, + EPairingServerMessageShouldBeNull, }; #endif // PAIRINGSERVERSHARED_H diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/secman/secman.cpp --- a/bluetooth/btstack/secman/secman.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/secman/secman.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -266,6 +266,7 @@ const TBTServiceSecurityPerDevice* const aOverride, const TBTDevAddr& aBDAddr, TAccessType aAccessType, + TBool aNoSecurityRequired, MAccessRequestResponseHandler& aRequester) /** Handle an access request... @@ -288,6 +289,7 @@ aOverride, aRequester, aAccessType, + aNoSecurityRequired, *this); CBTAccessRequester* requester = FindActiveAccessRequester(aBDAddr); diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/secman/secman.h --- a/bluetooth/btstack/secman/secman.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/secman/secman.h Thu Sep 23 17:06:47 2010 +0300 @@ -244,6 +244,7 @@ const TBTServiceSecurityPerDevice* const aOverride, const TBTDevAddr& aBDAddr, TAccessType aAccessType, + TBool aNoSecurityRequired, MAccessRequestResponseHandler& aRequester); void AccessRequestComplete(CBTAccessRequester* aRequester, TInt aResult); @@ -328,6 +329,7 @@ const TBTServiceSecurityPerDevice* const aOverride, MAccessRequestResponseHandler& aRequester, TAccessType aAccessType, + TBool aNoSecurityRequired, CBTSecMan& aParent); ~CBTAccessRequester(); @@ -394,6 +396,7 @@ const TBTServiceSecurityPerDevice* const aOverride, MAccessRequestResponseHandler& aRequester, TAccessType aDedicatedBonding, + TBool aNoSecurityRequired, CBTSecMan& aParent); void ConstructL(); void SubscribeToLinkObserver(); @@ -451,6 +454,8 @@ CAuthenticationTimer* iTimer; TBTAccessRequesterState iCurrentState; + + TBool iNoSecurityRequired; //< Security mode 4 "no security required" - do not do any authentiction, not even just works }; diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/test/util/hcemulator/hcemulator.cpp --- a/bluetooth/btstack/test/util/hcemulator/hcemulator.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/test/util/hcemulator/hcemulator.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2005-2010 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" @@ -21,7 +21,9 @@ #include #include #include -//#include +#include +#include +#include #include "hcemulator.h" diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/btstack/test/util/hcemulator/hcemulator.h --- a/bluetooth/btstack/test/util/hcemulator/hcemulator.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/btstack/test/util/hcemulator/hcemulator.h Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2005-2010 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" @@ -23,6 +23,7 @@ #include #include #include +#include const TInt KReadBufSize =258; const TInt KWriteBufSize =258; diff -r 14e279d2bbb7 -r 22de2e391156 bluetooth/gavdp/group/bld.inf --- a/bluetooth/gavdp/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetooth/gavdp/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2009-2010 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" @@ -16,7 +16,7 @@ PRJ_EXPORTS -../public/gavdp.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(gavdp.h) +../public/gavdp.h OS_LAYER_PLATFORM_EXPORT_PATH(gavdp.h) PRJ_MMPFILES gavdp.mmp diff -r 14e279d2bbb7 -r 22de2e391156 bluetoothcommsprofiles/btpan/group/bld.inf --- a/bluetoothcommsprofiles/btpan/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetoothcommsprofiles/btpan/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2004-2010 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" @@ -26,19 +26,19 @@ PRJ_EXPORTS -../inc/panprog.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(panprog.h) -../inc/panctrl.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(panctrl.h) -../inc/panerr.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(panerr.h) -../inc/BnepPacketNotifier.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/pan/bneppacketnotifier.h) -../inc/panuiinterfaces.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(networking/panuiinterfaces.h) -../inc/panroles.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(networking/panroles.h) -../group/btpan.iby /epoc32/rom/include/btpan.iby +../inc/panprog.h OS_LAYER_PLATFORM_EXPORT_PATH(panprog.h) +../inc/panctrl.h OS_LAYER_PLATFORM_EXPORT_PATH(panctrl.h) +../inc/panerr.h OS_LAYER_PUBLIC_EXPORT_PATH(panerr.h) +../inc/BnepPacketNotifier.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/pan/bneppacketnotifier.h) +../inc/panuiinterfaces.h OS_LAYER_PLATFORM_EXPORT_PATH(networking/panuiinterfaces.h) +../inc/panroles.h OS_LAYER_PLATFORM_EXPORT_PATH(networking/panroles.h) +../group/btpan.iby /epoc32/rom/include/btpan.iby PRJ_MMPFILES -../group/bnep.mmp -../group/panagt.mmp -../group/panhelper.mmp +bnep.mmp +panagt.mmp +panhelper.mmp // PAN NAP IP Hook #include "../pannapiphook/group/bld.inf" diff -r 14e279d2bbb7 -r 22de2e391156 bluetoothcommsprofiles/btpan/group/bnep.mmp --- a/bluetoothcommsprofiles/btpan/group/bnep.mmp Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetoothcommsprofiles/btpan/group/bnep.mmp Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2004-2010 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" @@ -11,7 +11,7 @@ // Contributors: // // Description: -// MACRO __INSTRUMENT_FUNCTION_ENTRY_EXIT +// BNEP protocol implementation project file // // @@ -52,7 +52,6 @@ USERINCLUDE ../inc OS_LAYER_SYSTEMINCLUDE_SYMBIAN -USERINCLUDE /epoc32/include/networking // This is a temporary fix pending the full solution of DEF50710 LIBRARY euser.lib LIBRARY mbufmgr.lib diff -r 14e279d2bbb7 -r 22de2e391156 bluetoothmgmt/bluetoothclientlib/bld.inf --- a/bluetoothmgmt/bluetoothclientlib/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetoothmgmt/bluetoothclientlib/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2009-2010 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" @@ -16,40 +16,36 @@ PRJ_EXPORTS // -inc/bttypes.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(bttypes.h) -inc/bt_sock.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(bt_sock.h) -inc/btsocketoptionlevels.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(btsocketoptionlevels.h) -inc/btsockaddr.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(btsockaddr.h) -inc/btsecurity.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(btsecurity.h) -inc/btbasebandpolicy.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(btbasebandpolicy.h) -inc/btsyncbandwidth.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(btsyncbandwidth.h) -inc/bt_subscribe_sec.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(bt_subscribe.h) -inc/bt_subscribe_keybase.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(bt_subscribe_keybase.h) -inc/btbaseband.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(bluetooth/btbaseband.h) -inc/btscoparams.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(bluetooth/btscoparams.h) -inc/lmoptions.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(bluetooth/lmoptions.h) +inc/bttypes.h OS_LAYER_PUBLIC_EXPORT_PATH(bttypes.h) +inc/bt_sock.h OS_LAYER_PUBLIC_EXPORT_PATH(bt_sock.h) +inc/btsocketoptionlevels.h OS_LAYER_PUBLIC_EXPORT_PATH(btsocketoptionlevels.h) +inc/btsockaddr.h OS_LAYER_PUBLIC_EXPORT_PATH(btsockaddr.h) +inc/btsecurity.h OS_LAYER_PUBLIC_EXPORT_PATH(btsecurity.h) +inc/btbasebandpolicy.h OS_LAYER_PUBLIC_EXPORT_PATH(btbasebandpolicy.h) +inc/btsyncbandwidth.h OS_LAYER_PUBLIC_EXPORT_PATH(btsyncbandwidth.h) +inc/bt_subscribe_sec.h OS_LAYER_PUBLIC_EXPORT_PATH(bt_subscribe.h) +inc/bt_subscribe_keybase.h OS_LAYER_PUBLIC_EXPORT_PATH(bt_subscribe_keybase.h) +inc/btbaseband.h OS_LAYER_PUBLIC_EXPORT_PATH(bluetooth/btbaseband.h) +inc/btscoparams.h OS_LAYER_PUBLIC_EXPORT_PATH(bluetooth/btscoparams.h) +inc/lmoptions.h OS_LAYER_PUBLIC_EXPORT_PATH(bluetooth/lmoptions.h) -inc/bttypespartner.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bttypespartner.h) -inc/bthci.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bthci.h) -inc/bluetoothAV.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetoothav.h) -inc/avctptypes.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/avctptypes.h) -inc/avctpservices.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(avctpservices.h) -inc/bt_subscribe_partner.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bt_subscribe_partner.h) -inc/pairing.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/pairing.h) -inc/eirpublisherbase.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/eirpublisherbase.h) -inc/eirpublishermanufacturerspecificdata.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/eirpublishermanufacturerspecificdata.h) -inc/aclsockaddr.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/aclsockaddr.h) +inc/bttypespartner.h OS_LAYER_PLATFORM_EXPORT_PATH(bttypespartner.h) +inc/bthci.h OS_LAYER_PLATFORM_EXPORT_PATH(bthci.h) +inc/bluetoothAV.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetoothav.h) +inc/avctptypes.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/avctptypes.h) +inc/avctpservices.h OS_LAYER_PLATFORM_EXPORT_PATH(avctpservices.h) +inc/bt_subscribe_partner.h OS_LAYER_PLATFORM_EXPORT_PATH(bt_subscribe_partner.h) +inc/pairing.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/pairing.h) +inc/eirpublisherbase.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/eirpublisherbase.h) +inc/eirpublishermanufacturerspecificdata.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/eirpublishermanufacturerspecificdata.h) +inc/aclsockaddr.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/aclsockaddr.h) +inc/a2dpoptimisation.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/a2dpoptimisation.h) +inc/a2dpoptimisationparams.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/a2dpoptimisationparams.h) - -inc/a2dpoptimisation.h /epoc32/include/bluetooth/a2dpoptimisation.h -inc/a2dpoptimisationparams.h /epoc32/include/bluetooth/a2dpoptimisationparams.h PRJ_MMPFILES // btlib/bluetooth.mmp avlib/bluetoothAV.mmp avctpservices/avctpservices.mmp a2dpoptimisation/a2dpoptimisation.mmp - -PRJ_TESTMMPFILES -// diff -r 14e279d2bbb7 -r 22de2e391156 bluetoothmgmt/bluetoothclientlib/inc/a2dpoptimisation.h --- a/bluetoothmgmt/bluetoothclientlib/inc/a2dpoptimisation.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetoothmgmt/bluetoothclientlib/inc/a2dpoptimisation.h Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2009-2010 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" @@ -22,7 +22,7 @@ #define A2DP_OPTIMISATION_H #include -#include +#include class RHCIServerSession; diff -r 14e279d2bbb7 -r 22de2e391156 bluetoothmgmt/bluetoothclientlib/inc/bt_sock.h --- a/bluetoothmgmt/bluetoothclientlib/inc/bt_sock.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetoothmgmt/bluetoothclientlib/inc/bt_sock.h Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 1999-2010 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" @@ -36,7 +36,7 @@ #include #include -#include // for RS232 signal names for RFCOMM +#include // for RFCOMM API #include #include #include @@ -102,9 +102,9 @@ /** BT options. */ enum TBTOptions { - /** Override device security */ - KBTRegisterCodService = 0x998, /*!< Set a CoD Service bit(s) */ - KBTSecurityDeviceOverride = 0x999, + KBTSetNoSecurityRequired = 0x997, /*!< Set No security required for Security Mode 4*/ + KBTRegisterCodService = 0x998, /*!< Set a CoD Service bit(s) */ + KBTSecurityDeviceOverride = 0x999, /*!< Override device security */ }; typedef TPckgBuf TBTServiceSecurityPerDeviceBuf; /*!< Package definition for securty settings */ diff -r 14e279d2bbb7 -r 22de2e391156 bluetoothmgmt/btcommon/inc/BTSec.h --- a/bluetoothmgmt/btcommon/inc/BTSec.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetoothmgmt/btcommon/inc/BTSec.h Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2004-2010 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" @@ -26,6 +26,7 @@ #include const TUint32 KBTManServerSID = 0x100069cc; +const TUint32 KSdpServerSID = 0x10009220; _LIT_SECURITY_POLICY_C1(KLOCAL_SERVICES,ECapabilityLocalServices); _LIT_SECURITY_POLICY_S1(KBTMAN_SID_PROT_SERV,KBTManServerSID,ECapabilityProtServ); @@ -33,6 +34,7 @@ _LIT_SECURITY_POLICY_C1(KNETWORK_CONTROL, ECapabilityNetworkControl); _LIT_SECURITY_POLICY_C2(KLOCAL_SERVICES_AND_READ_DEVICE_DATA,ECapabilityLocalServices,ECapabilityReadDeviceData); _LIT_SECURITY_POLICY_C2(KLOCAL_SERVICES_AND_WRITE_DEVICE_DATA,ECapabilityLocalServices,ECapabilityWriteDeviceData); +_LIT_SECURITY_POLICY_S1(KSDP_SID_PROT_SERV, KSdpServerSID,ECapabilityProtServ); _LIT_SECURITY_POLICY_C1(KCOMMDD,ECapabilityCommDD); diff -r 14e279d2bbb7 -r 22de2e391156 bluetoothmgmt/btmgr/Inc/btdevice.h --- a/bluetoothmgmt/btmgr/Inc/btdevice.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetoothmgmt/btmgr/Inc/btdevice.h Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 1999-2010 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" @@ -20,14 +20,13 @@ #include #include -#include -#include +#include /** The maximum length of a bluetooth device name, as stored in CBTDevice. @publishedAll @released **/ -static const TInt KMaxBluetoothNameLen = KHCILocalDeviceNameMaxLength; +static const TInt KMaxBluetoothNameLen = 248; /** The maximum length of the user-assinged friendly name for a bluetooth device, as stored in CBTDevice. @publishedAll diff -r 14e279d2bbb7 -r 22de2e391156 bluetoothmgmt/btmgr/bld.inf --- a/bluetoothmgmt/btmgr/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetoothmgmt/btmgr/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -16,9 +16,9 @@ // PRJ_EXPORTS -Inc/BTDefCommPort.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(btdefcommport.h) -Inc/btdevice.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(btdevice.h) -Inc/btmanclient.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(btmanclient.h) +Inc/BTDefCommPort.h OS_LAYER_PUBLIC_EXPORT_PATH(btdefcommport.h) +Inc/btdevice.h OS_LAYER_PUBLIC_EXPORT_PATH(btdevice.h) +Inc/btmanclient.h OS_LAYER_PUBLIC_EXPORT_PATH(btmanclient.h) // Export the compiled DBMS policy file for the Bluetooth Manager DB... BTManServer/100069CC.SPD z:/private/100012a5/policy/100069cc.spd diff -r 14e279d2bbb7 -r 22de2e391156 bluetoothmgmt/btmgr/eirclient/group/bld.inf --- a/bluetoothmgmt/btmgr/eirclient/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetoothmgmt/btmgr/eirclient/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-2010 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" @@ -14,9 +14,9 @@ // PRJ_EXPORTS -../interface/eirclient.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/eirclient.h) -../interface/eirpublisher.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/eirpublisher.h) -../interface/eirdatacodec.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(bluetooth/eirdatacodec.h) +../interface/eirclient.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/eirclient.h) +../interface/eirpublisher.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/eirpublisher.h) +../interface/eirdatacodec.h OS_LAYER_PUBLIC_EXPORT_PATH(bluetooth/eirdatacodec.h) PRJ_MMPFILES eirclient.mmp diff -r 14e279d2bbb7 -r 22de2e391156 bluetoothmgmt/btrom/bluetooth.iby --- a/bluetoothmgmt/btrom/bluetooth.iby Wed Jul 21 15:42:05 2010 +0300 +++ b/bluetoothmgmt/btrom/bluetooth.iby Thu Sep 23 17:06:47 2010 +0300 @@ -58,7 +58,7 @@ file=ABI_DIR\BT_DIR\sdpagent.dll System\Libs\sdpagent.dll REM Bluetooth AV user libraries -file=ABI_DIR\BT_DIR\bluetoothAV.dll System\Libs\bluetoothAV.dll +file=ABI_DIR\BT_DIR\bluetoothav.dll System\Libs\bluetoothAV.dll file=ABI_DIR\BT_DIR\gavdp.dll System\Libs\gavdp.dll REM Generic Remote Control Framework @@ -88,7 +88,7 @@ data=ZPRIVATE\100069cc\backup_registration.xml Private\100069cc\backup_registration.xml REM default is to run Esock_BT thread in DealerPlayer role -data=ZPRIVATE\101F7988\esock_bt.cmi private\101F7988\esock_bt.cmi +data=ZPRIVATE\101f7988\esock_bt.cmi private\101F7988\esock_bt.cmi file=ABI_DIR\BT_DIR\btcomm.csy System\Libs\btcomm.csy @@ -102,8 +102,8 @@ REM Bluetooth using HCI API Version 2 file=ABI_DIR\BT_DIR\bt_v2.prt System\Libs\bt_v2.prt REM Stack configuration files -data=ZPRIVATE\101f7989\ESock\bt.bt_v2.esk Private\101f7989\ESock\bt.bt_v2.esk -data=ZPRIVATE\101F7989\Bluetooth\bluetooth_stack.ini Private\101F7989\Bluetooth\bluetooth_stack.ini +data=ZPRIVATE\101f7989\esock\bt.bt_v2.esk Private\101f7989\ESock\bt.bt_v2.esk +data=ZPRIVATE\101f7989\bluetooth\bluetooth_stack.ini Private\101F7989\Bluetooth\bluetooth_stack.ini REM HCI Shared binary file=ABI_DIR\BT_DIR\hcishared.dll System\Libs\hcishared.dll diff -r 14e279d2bbb7 -r 22de2e391156 bthci/bthci2/CommandsEvents/group/bld.inf --- a/bthci/bthci2/CommandsEvents/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/bthci2/CommandsEvents/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-2010 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" @@ -16,13 +16,13 @@ PRJ_EXPORTS // Base classes and utilities for commands and events. -../interface/Command.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/command.h) -../interface/Event.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/event.h) -../interface/commandcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/commandcompleteevent.h) -../interface/VendorDebugCommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/vendordebugcommand.h) -../interface/VendorDebugEvent.H SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/vendordebugevent.h) -../interface/VendorDebugCompleteEvent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/vendordebugcompleteevent.h) -../interface/completingeventquery.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/completingeventquery.h) +../interface/Command.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/command.h) +../interface/Event.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/event.h) +../interface/commandcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/commandcompleteevent.h) +../interface/VendorDebugCommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/vendordebugcommand.h) +../interface/VendorDebugEvent.H OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/vendordebugevent.h) +../interface/VendorDebugCompleteEvent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/vendordebugcompleteevent.h) +../interface/completingeventquery.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/completingeventquery.h) // The actual commands and events classes. @@ -31,347 +31,347 @@ // // Link Control Commands // -../interface/inquirycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/inquirycommand.h) -../interface/inquirycancelcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/inquirycancelcommand.h) -../interface/periodicinquirymodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/periodicinquirymodecommand.h) -../interface/exitperiodicinquirymodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/exitperiodicinquirymodecommand.h) -../interface/createaclconnectioncommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/createaclconnectioncommand.h) -../interface/disconnectcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/disconnectcommand.h) -../interface/createconnectioncancelcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/createconnectioncancelcommand.h) -../interface/acceptconnectionrequestcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/acceptconnectionrequestcommand.h) -../interface/rejectconnectionrequestcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/rejectconnectionrequestcommand.h) -../interface/linkkeyrequestreplycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/linkkeyrequestreplycommand.h) -../interface/linkkeyrequestreplynegativecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/linkkeyrequestreplynegativecommand.h) -../interface/pincoderequestreplycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/pincoderequestreplycommand.h) -../interface/pincoderequestreplynegativecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/pincoderequestreplynegativecommand.h) -../interface/changeconnectionpackettypecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/changeconnectionpackettypecommand.h) -../interface/authenticationrequestedcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/authenticationrequestedcommand.h) -../interface/setconnectionencryptioncommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/setconnectionencryptioncommand.h) -../interface/changelinkkeycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/changelinkkeycommand.h) -../interface/masterlinkkeycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/masterlinkkeycommand.h) -../interface/remotenamerequestcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remotenamerequestcommand.h) -../interface/remotenamerequestcancelcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remotenamerequestcancelcommand.h) -../interface/readremotesupportedfeaturescommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readremotesupportedfeaturescommand.h) -../interface/readremoteextendedfeaturescommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readremoteextendedfeaturescommand.h) -../interface/readremoteversioninfocommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readremoteversioninfocommand.h) -../interface/readclockoffsetcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readclockoffsetcommand.h) -../interface/readlmphandlecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlmphandlecommand.h) -../interface/setupsynchronousconnectioncommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/setupsynchronousconnectioncommand.h) -../interface/acceptsynchronousconnectionrequestcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/acceptsynchronousconnectionrequestcommand.h) -../interface/rejectsynchronousconnectionrequestcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/rejectsynchronousconnectionrequestcommand.h) -../interface/iocapabilityrequestreplycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/iocapabilityrequestreplycommand.h) -../interface/userconfirmationrequestreplycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userconfirmationrequestreplycommand.h) -../interface/userconfirmationrequestnegativereplycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userconfirmationrequestnegativereplycommand.h) -../interface/userpasskeyrequestreplycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userpasskeyrequestreplycommand.h) -../interface/userpasskeyrequestnegativereplycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userpasskeyrequestnegativereplycommand.h) -../interface/remoteoobdatarequestreplycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remoteoobdatarequestreplycommand.h) -../interface/remoteoobdatarequestnegativereplycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remoteoobdatarequestnegativereplycommand.h) -../interface/iocapabilityrequestnegativereplycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/iocapabilityrequestnegativereplycommand.h) +../interface/inquirycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/inquirycommand.h) +../interface/inquirycancelcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/inquirycancelcommand.h) +../interface/periodicinquirymodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/periodicinquirymodecommand.h) +../interface/exitperiodicinquirymodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/exitperiodicinquirymodecommand.h) +../interface/createaclconnectioncommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/createaclconnectioncommand.h) +../interface/disconnectcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/disconnectcommand.h) +../interface/createconnectioncancelcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/createconnectioncancelcommand.h) +../interface/acceptconnectionrequestcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/acceptconnectionrequestcommand.h) +../interface/rejectconnectionrequestcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/rejectconnectionrequestcommand.h) +../interface/linkkeyrequestreplycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/linkkeyrequestreplycommand.h) +../interface/linkkeyrequestreplynegativecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/linkkeyrequestreplynegativecommand.h) +../interface/pincoderequestreplycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/pincoderequestreplycommand.h) +../interface/pincoderequestreplynegativecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/pincoderequestreplynegativecommand.h) +../interface/changeconnectionpackettypecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/changeconnectionpackettypecommand.h) +../interface/authenticationrequestedcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/authenticationrequestedcommand.h) +../interface/setconnectionencryptioncommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/setconnectionencryptioncommand.h) +../interface/changelinkkeycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/changelinkkeycommand.h) +../interface/masterlinkkeycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/masterlinkkeycommand.h) +../interface/remotenamerequestcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remotenamerequestcommand.h) +../interface/remotenamerequestcancelcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remotenamerequestcancelcommand.h) +../interface/readremotesupportedfeaturescommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readremotesupportedfeaturescommand.h) +../interface/readremoteextendedfeaturescommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readremoteextendedfeaturescommand.h) +../interface/readremoteversioninfocommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readremoteversioninfocommand.h) +../interface/readclockoffsetcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readclockoffsetcommand.h) +../interface/readlmphandlecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlmphandlecommand.h) +../interface/setupsynchronousconnectioncommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/setupsynchronousconnectioncommand.h) +../interface/acceptsynchronousconnectionrequestcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/acceptsynchronousconnectionrequestcommand.h) +../interface/rejectsynchronousconnectionrequestcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/rejectsynchronousconnectionrequestcommand.h) +../interface/iocapabilityrequestreplycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/iocapabilityrequestreplycommand.h) +../interface/userconfirmationrequestreplycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userconfirmationrequestreplycommand.h) +../interface/userconfirmationrequestnegativereplycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userconfirmationrequestnegativereplycommand.h) +../interface/userpasskeyrequestreplycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userpasskeyrequestreplycommand.h) +../interface/userpasskeyrequestnegativereplycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userpasskeyrequestnegativereplycommand.h) +../interface/remoteoobdatarequestreplycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remoteoobdatarequestreplycommand.h) +../interface/remoteoobdatarequestnegativereplycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remoteoobdatarequestnegativereplycommand.h) +../interface/iocapabilityrequestnegativereplycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/iocapabilityrequestnegativereplycommand.h) // // Link Policy Commands // -../interface/holdmodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/holdmodecommand.h) -../interface/sniffmodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/sniffmodecommand.h) -../interface/exitsniffmodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/exitsniffmodecommand.h) -../interface/parkmodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/parkmodecommand.h) -../interface/exitparkmodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/exitparkmodecommand.h) -../interface/qossetupcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/qossetupcommand.h) -../interface/rolediscoverycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/rolediscoverycommand.h) -../interface/switchrolecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/switchrolecommand.h) -../interface/readlinkpolicysettingscommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlinkpolicysettingscommand.h) -../interface/writelinkpolicysettingscommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writelinkpolicysettingscommand.h) -../interface/readdefaultlinkpolicysettingscommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readdefaultlinkpolicysettingscommand.h) -../interface/writedefaultlinkpolicysettingscommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writedefaultlinkpolicysettingscommand.h) -../interface/flowspecificationcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/flowspecificationcommand.h) -../interface/sniffsubratingcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/sniffsubratingcommand.h) +../interface/holdmodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/holdmodecommand.h) +../interface/sniffmodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/sniffmodecommand.h) +../interface/exitsniffmodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/exitsniffmodecommand.h) +../interface/parkmodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/parkmodecommand.h) +../interface/exitparkmodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/exitparkmodecommand.h) +../interface/qossetupcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/qossetupcommand.h) +../interface/rolediscoverycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/rolediscoverycommand.h) +../interface/switchrolecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/switchrolecommand.h) +../interface/readlinkpolicysettingscommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlinkpolicysettingscommand.h) +../interface/writelinkpolicysettingscommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writelinkpolicysettingscommand.h) +../interface/readdefaultlinkpolicysettingscommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readdefaultlinkpolicysettingscommand.h) +../interface/writedefaultlinkpolicysettingscommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writedefaultlinkpolicysettingscommand.h) +../interface/flowspecificationcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/flowspecificationcommand.h) +../interface/sniffsubratingcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/sniffsubratingcommand.h) // // Controller and Baseband Commands // -../interface/seteventmaskcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/seteventmaskcommand.h) -../interface/resetcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/resetcommand.h) -../interface/seteventfiltercommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/seteventfiltercommand.h) -../interface/flushcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/flushcommand.h) -../interface/readpintypecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpintypecommand.h) -../interface/writepintypecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepintypecommand.h) -../interface/createnewunitkeycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/createnewunitkeycommand.h) -../interface/readstoredlinkkeycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readstoredlinkkeycommand.h) -../interface/writestoredlinkkeycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writestoredlinkkeycommand.h) -../interface/deletestoredlinkkeycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/deletestoredlinkkeycommand.h) -../interface/WriteLocalNameCommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writelocalnamecommand.h) -../interface/ReadLocalNameCommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalnamecommand.h) -../interface/readconnectionaccepttimeoutcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readconnectionaccepttimeoutcommand.h) -../interface/writeconnectionaccepttimeoutcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeconnectionaccepttimeoutcommand.h) -../interface/readpagetimeoutcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpagetimeoutcommand.h) -../interface/writepagetimeoutcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepagetimeoutcommand.h) -../interface/readscanenablecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readscanenablecommand.h) -../interface/writescanenablecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writescanenablecommand.h) -../interface/readpagescanactivitycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpagescanactivitycommand.h) -../interface/writepagescanactivitycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepagescanactivitycommand.h) -../interface/readinquiryscanactivitycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readinquiryscanactivitycommand.h) -../interface/writeinquiryscanactivitycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeinquiryscanactivitycommand.h) -../interface/readauthenticationenablecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readauthenticationenablecommand.h) -../interface/writeauthenticationenablecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeauthenticationenablecommand.h) -../interface/readclassofdevicecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readclassofdevicecommand.h) -../interface/writeclassofdevicecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeclassofdevicecommand.h) -../interface/readvoicesettingcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readvoicesettingcommand.h) -../interface/writevoicesettingcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writevoicesettingcommand.h) -../interface/readautomaticflushtimeoutcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readautomaticflushtimeoutcommand.h) -../interface/writeautomaticflushtimeoutcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeautomaticflushtimeoutcommand.h) -../interface/readnumbroadcastretransmissionscommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readnumbroadcastretransmissionscommand.h) -../interface/writenumbroadcastretransmissionscommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writenumbroadcastretransmissionscommand.h) -../interface/readholdmodeactivitycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readholdmodeactivitycommand.h) -../interface/writeholdmodeactivitycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeholdmodeactivitycommand.h) -../interface/readtransmitpowerlevelcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readtransmitpowerlevelcommand.h) -../interface/readsynchronousflowcontrolenablecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readsynchronousflowcontrolenablecommand.h) -../interface/writesynchronousflowcontrolenablecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writesynchronousflowcontrolenablecommand.h) -../interface/setcontrollertohostflowcontrolcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/setcontrollertohostflowcontrolcommand.h) -../interface/hostbuffersizecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hostbuffersizecommand.h) -../interface/hostnumberofcompletedpacketscommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hostnumberofcompletedpacketscommand.h) -../interface/readlinksupervisiontimeoutcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlinksupervisiontimeoutcommand.h) -../interface/writelinksupervisiontimeoutcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writelinksupervisiontimeoutcommand.h) -../interface/readnumberofsupportediaccommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readnumberofsupportediaccommand.h) -../interface/readcurrentiaclapcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readcurrentiaclapcommand.h) -../interface/writecurrentiaclapcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writecurrentiaclapcommand.h) -../interface/setafhhostchannelclassificationcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/setafhhostchannelclassificationcommand.h) -../interface/readinquiryscantypecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readinquiryscantypecommand.h) -../interface/writeinquiryscantypecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeinquiryscantypecommand.h) -../interface/readinquirymodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readinquirymodecommand.h) -../interface/writeinquirymodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeinquirymodecommand.h) -../interface/readpagescantypecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpagescantypecommand.h) -../interface/writepagescantypecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepagescantypecommand.h) -../interface/readafhchannelassessmentmodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readafhchannelassessmentmodecommand.h) -../interface/writeafhchannelassessmentmodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeafhchannelassessmentmodecommand.h) -../interface/readextendedinquiryresponsecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readextendedinquiryresponsecommand.h) -../interface/writeextendedinquiryresponsecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeextendedinquiryresponsecommand.h) -../interface/refreshencryptionkeycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/refreshencryptionkeycommand.h) -../interface/readsimplepairingmodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readsimplepairingmodecommand.h) -../interface/writesimplepairingmodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writesimplepairingmodecommand.h) -../interface/readlocaloobdatacommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocaloobdatacommand.h) -../interface/readinquiryresponsetransmitpowerlevelcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readinquiryresponsetransmitpowerlevelcommand.h) -../interface/writeinquiryresponsetransmitpowerlevelcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeinquiryresponsetransmitpowerlevelcommand.h) -../interface/sendkeypressnotificationcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/sendkeypressnotificationcommand.h) -../interface/readdefaulterroneousdatareportingcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readdefaulterroneousdatareportingcommand.h) -../interface/writedefaulterroneousdatareportingcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writedefaulterroneousdatareportingcommand.h) -../interface/enhancedflushcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/enhancedflushcommand.h) +../interface/seteventmaskcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/seteventmaskcommand.h) +../interface/resetcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/resetcommand.h) +../interface/seteventfiltercommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/seteventfiltercommand.h) +../interface/flushcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/flushcommand.h) +../interface/readpintypecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpintypecommand.h) +../interface/writepintypecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepintypecommand.h) +../interface/createnewunitkeycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/createnewunitkeycommand.h) +../interface/readstoredlinkkeycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readstoredlinkkeycommand.h) +../interface/writestoredlinkkeycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writestoredlinkkeycommand.h) +../interface/deletestoredlinkkeycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/deletestoredlinkkeycommand.h) +../interface/WriteLocalNameCommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writelocalnamecommand.h) +../interface/ReadLocalNameCommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalnamecommand.h) +../interface/readconnectionaccepttimeoutcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readconnectionaccepttimeoutcommand.h) +../interface/writeconnectionaccepttimeoutcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeconnectionaccepttimeoutcommand.h) +../interface/readpagetimeoutcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpagetimeoutcommand.h) +../interface/writepagetimeoutcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepagetimeoutcommand.h) +../interface/readscanenablecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readscanenablecommand.h) +../interface/writescanenablecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writescanenablecommand.h) +../interface/readpagescanactivitycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpagescanactivitycommand.h) +../interface/writepagescanactivitycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepagescanactivitycommand.h) +../interface/readinquiryscanactivitycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readinquiryscanactivitycommand.h) +../interface/writeinquiryscanactivitycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeinquiryscanactivitycommand.h) +../interface/readauthenticationenablecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readauthenticationenablecommand.h) +../interface/writeauthenticationenablecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeauthenticationenablecommand.h) +../interface/readclassofdevicecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readclassofdevicecommand.h) +../interface/writeclassofdevicecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeclassofdevicecommand.h) +../interface/readvoicesettingcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readvoicesettingcommand.h) +../interface/writevoicesettingcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writevoicesettingcommand.h) +../interface/readautomaticflushtimeoutcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readautomaticflushtimeoutcommand.h) +../interface/writeautomaticflushtimeoutcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeautomaticflushtimeoutcommand.h) +../interface/readnumbroadcastretransmissionscommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readnumbroadcastretransmissionscommand.h) +../interface/writenumbroadcastretransmissionscommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writenumbroadcastretransmissionscommand.h) +../interface/readholdmodeactivitycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readholdmodeactivitycommand.h) +../interface/writeholdmodeactivitycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeholdmodeactivitycommand.h) +../interface/readtransmitpowerlevelcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readtransmitpowerlevelcommand.h) +../interface/readsynchronousflowcontrolenablecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readsynchronousflowcontrolenablecommand.h) +../interface/writesynchronousflowcontrolenablecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writesynchronousflowcontrolenablecommand.h) +../interface/setcontrollertohostflowcontrolcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/setcontrollertohostflowcontrolcommand.h) +../interface/hostbuffersizecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hostbuffersizecommand.h) +../interface/hostnumberofcompletedpacketscommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hostnumberofcompletedpacketscommand.h) +../interface/readlinksupervisiontimeoutcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlinksupervisiontimeoutcommand.h) +../interface/writelinksupervisiontimeoutcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writelinksupervisiontimeoutcommand.h) +../interface/readnumberofsupportediaccommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readnumberofsupportediaccommand.h) +../interface/readcurrentiaclapcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readcurrentiaclapcommand.h) +../interface/writecurrentiaclapcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writecurrentiaclapcommand.h) +../interface/setafhhostchannelclassificationcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/setafhhostchannelclassificationcommand.h) +../interface/readinquiryscantypecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readinquiryscantypecommand.h) +../interface/writeinquiryscantypecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeinquiryscantypecommand.h) +../interface/readinquirymodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readinquirymodecommand.h) +../interface/writeinquirymodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeinquirymodecommand.h) +../interface/readpagescantypecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpagescantypecommand.h) +../interface/writepagescantypecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepagescantypecommand.h) +../interface/readafhchannelassessmentmodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readafhchannelassessmentmodecommand.h) +../interface/writeafhchannelassessmentmodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeafhchannelassessmentmodecommand.h) +../interface/readextendedinquiryresponsecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readextendedinquiryresponsecommand.h) +../interface/writeextendedinquiryresponsecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeextendedinquiryresponsecommand.h) +../interface/refreshencryptionkeycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/refreshencryptionkeycommand.h) +../interface/readsimplepairingmodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readsimplepairingmodecommand.h) +../interface/writesimplepairingmodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writesimplepairingmodecommand.h) +../interface/readlocaloobdatacommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocaloobdatacommand.h) +../interface/readinquiryresponsetransmitpowerlevelcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readinquiryresponsetransmitpowerlevelcommand.h) +../interface/writeinquiryresponsetransmitpowerlevelcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeinquiryresponsetransmitpowerlevelcommand.h) +../interface/sendkeypressnotificationcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/sendkeypressnotificationcommand.h) +../interface/readdefaulterroneousdatareportingcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readdefaulterroneousdatareportingcommand.h) +../interface/writedefaulterroneousdatareportingcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writedefaulterroneousdatareportingcommand.h) +../interface/enhancedflushcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/enhancedflushcommand.h) // // Informational Parameters // -../interface/readlocalversioninfocommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalversioninfocommand.h) -../interface/readlocalsupportedcommandscommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalsupportedcommandscommand.h) -../interface/readlocalsupportedfeaturescommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalsupportedfeaturescommand.h) -../interface/readlocalextendedfeaturescommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalextendedfeaturescommand.h) -../interface/readbuffersizecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readbuffersizecommand.h) -../interface/readbdaddrcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readbdaddrcommand.h) +../interface/readlocalversioninfocommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalversioninfocommand.h) +../interface/readlocalsupportedcommandscommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalsupportedcommandscommand.h) +../interface/readlocalsupportedfeaturescommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalsupportedfeaturescommand.h) +../interface/readlocalextendedfeaturescommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalextendedfeaturescommand.h) +../interface/readbuffersizecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readbuffersizecommand.h) +../interface/readbdaddrcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readbdaddrcommand.h) // // Status Parameters // -../interface/readfailedcontactcountercommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readfailedcontactcountercommand.h) -../interface/resetfailedcontactcountercommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/resetfailedcontactcountercommand.h) -../interface/readlinkqualitycommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlinkqualitycommand.h) -../interface/readrssicommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readrssicommand.h) -../interface/readafhchannelmapcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readafhchannelmapcommand.h) -../interface/readclockcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readclockcommand.h) +../interface/readfailedcontactcountercommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readfailedcontactcountercommand.h) +../interface/resetfailedcontactcountercommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/resetfailedcontactcountercommand.h) +../interface/readlinkqualitycommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlinkqualitycommand.h) +../interface/readrssicommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readrssicommand.h) +../interface/readafhchannelmapcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readafhchannelmapcommand.h) +../interface/readclockcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readclockcommand.h) // // Testing Commands // -../interface/readloopbackmodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readloopbackmodecommand.h) -../interface/writeloopbackmodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeloopbackmodecommand.h) -../interface/enabledeviceundertestmodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/enabledeviceundertestmodecommand.h) -../interface/writesimplepairingdebugmodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writesimplepairingdebugmodecommand.h) +../interface/readloopbackmodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readloopbackmodecommand.h) +../interface/writeloopbackmodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeloopbackmodecommand.h) +../interface/enabledeviceundertestmodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/enabledeviceundertestmodecommand.h) +../interface/writesimplepairingdebugmodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writesimplepairingdebugmodecommand.h) // Command Complete Events // Nop -../interface/nopcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/nopcompleteevent.h) +../interface/nopcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/nopcompleteevent.h) // // Link Control Commands // -../interface/inquirycancelcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/inquirycancelcompleteevent.h) -../interface/periodicinquirymodecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/periodicinquirymodecompleteevent.h) -../interface/exitperiodicinquirymodecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/exitperiodicinquirymodecompleteevent.h) -../interface/createconnectioncancelcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/createconnectioncancelcompleteevent.h) -../interface/linkkeyrequestreplycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/linkkeyrequestreplycompleteevent.h) -../interface/linkkeyrequestreplynegativecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/linkkeyrequestreplynegativecompleteevent.h) -../interface/pincoderequestreplycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/pincoderequestreplycompleteevent.h) -../interface/pincoderequestreplynegativecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/pincoderequestreplynegativecompleteevent.h) -../interface/remotenamerequestcancelcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remotenamerequestcancelcompleteevent.h) -../interface/readlmphandlecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlmphandlecompleteevent.h) -../interface/iocapabilityrequestreplycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/iocapabilityrequestreplycompleteevent.h) -../interface/userconfirmationrequestreplycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userconfirmationrequestreplycompleteevent.h) -../interface/userconfirmationrequestnegativereplycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userconfirmationrequestnegativereplycompleteevent.h) -../interface/userpasskeyrequestreplycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userpasskeyrequestreplycompleteevent.h) -../interface/userpasskeyrequestnegativereplycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userpasskeyrequestnegativereplycompleteevent.h) -../interface/remoteoobdatarequestreplycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remoteoobdatarequestreplycompleteevent.h) -../interface/remoteoobdatarequestnegativereplycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remoteoobdatarequestnegativereplycompleteevent.h) -../interface/iocapabilityrequestnegativereplycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/iocapabilityrequestnegativereplycompleteevent.h) +../interface/inquirycancelcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/inquirycancelcompleteevent.h) +../interface/periodicinquirymodecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/periodicinquirymodecompleteevent.h) +../interface/exitperiodicinquirymodecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/exitperiodicinquirymodecompleteevent.h) +../interface/createconnectioncancelcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/createconnectioncancelcompleteevent.h) +../interface/linkkeyrequestreplycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/linkkeyrequestreplycompleteevent.h) +../interface/linkkeyrequestreplynegativecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/linkkeyrequestreplynegativecompleteevent.h) +../interface/pincoderequestreplycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/pincoderequestreplycompleteevent.h) +../interface/pincoderequestreplynegativecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/pincoderequestreplynegativecompleteevent.h) +../interface/remotenamerequestcancelcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remotenamerequestcancelcompleteevent.h) +../interface/readlmphandlecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlmphandlecompleteevent.h) +../interface/iocapabilityrequestreplycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/iocapabilityrequestreplycompleteevent.h) +../interface/userconfirmationrequestreplycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userconfirmationrequestreplycompleteevent.h) +../interface/userconfirmationrequestnegativereplycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userconfirmationrequestnegativereplycompleteevent.h) +../interface/userpasskeyrequestreplycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userpasskeyrequestreplycompleteevent.h) +../interface/userpasskeyrequestnegativereplycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userpasskeyrequestnegativereplycompleteevent.h) +../interface/remoteoobdatarequestreplycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remoteoobdatarequestreplycompleteevent.h) +../interface/remoteoobdatarequestnegativereplycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remoteoobdatarequestnegativereplycompleteevent.h) +../interface/iocapabilityrequestnegativereplycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/iocapabilityrequestnegativereplycompleteevent.h) // // Link Policy Commands // -../interface/rolediscoverycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/rolediscoverycompleteevent.h) -../interface/readlinkpolicysettingscompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlinkpolicysettingscompleteevent.h) -../interface/writelinkpolicysettingscompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writelinkpolicysettingscompleteevent.h) -../interface/readdefaultlinkpolicysettingscompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readdefaultlinkpolicysettingscompleteevent.h) -../interface/writedefaultlinkpolicysettingscompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writedefaultlinkpolicysettingscompleteevent.h) -../interface/sniffsubratingcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/sniffsubratingcompleteevent.h) +../interface/rolediscoverycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/rolediscoverycompleteevent.h) +../interface/readlinkpolicysettingscompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlinkpolicysettingscompleteevent.h) +../interface/writelinkpolicysettingscompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writelinkpolicysettingscompleteevent.h) +../interface/readdefaultlinkpolicysettingscompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readdefaultlinkpolicysettingscompleteevent.h) +../interface/writedefaultlinkpolicysettingscompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writedefaultlinkpolicysettingscompleteevent.h) +../interface/sniffsubratingcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/sniffsubratingcompleteevent.h) // // Controller and Baseband Commands // -../interface/seteventmaskcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/seteventmaskcompleteevent.h) -../interface/resetcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/resetcompleteevent.h) -../interface/seteventfiltercompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/seteventfiltercompleteevent.h) -../interface/flushcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/flushcompleteevent.h) -../interface/readpintypecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpintypecompleteevent.h) -../interface/writepintypecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepintypecompleteevent.h) -../interface/createnewunitkeycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/createnewunitkeycompleteevent.h) -../interface/readstoredlinkkeycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readstoredlinkkeycompleteevent.h) -../interface/writestoredlinkkeycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writestoredlinkkeycompleteevent.h) -../interface/deletestoredlinkkeycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/deletestoredlinkkeycompleteevent.h) -../interface/writelocalnamecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writelocalnamecompleteevent.h) -../interface/ReadLocalNameCompleteEvent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalnamecompleteevent.h) -../interface/readconnectionaccepttimeoutcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readconnectionaccepttimeoutcompleteevent.h) -../interface/writeconnectionaccepttimeoutcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeconnectionaccepttimeoutcompleteevent.h) -../interface/readpagetimeoutcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpagetimeoutcompleteevent.h) -../interface/writepagetimeoutcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepagetimeoutcompleteevent.h) -../interface/readscanenablecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readscanenablecompleteevent.h) -../interface/writescanenablecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writescanenablecompleteevent.h) -../interface/readpagescanactivitycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpagescanactivitycompleteevent.h) -../interface/writepagescanactivitycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepagescanactivitycompleteevent.h) -../interface/readinquiryscanactivitycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readinquiryscanactivitycompleteevent.h) -../interface/writeinquiryscanactivitycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeinquiryscanactivitycompleteevent.h) -../interface/readauthenticationenablecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readauthenticationenablecompleteevent.h) -../interface/writeauthenticationenablecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeauthenticationenablecompleteevent.h) -../interface/readclassofdevicecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readclassofdevicecompleteevent.h) -../interface/writeclassofdevicecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeclassofdevicecompleteevent.h) -../interface/readvoicesettingcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readvoicesettingcompleteevent.h) -../interface/writevoicesettingcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writevoicesettingcompleteevent.h) -../interface/readautomaticflushtimeoutcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readautomaticflushtimeoutcompleteevent.h) -../interface/writeautomaticflushtimeoutcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeautomaticflushtimeoutcompleteevent.h) -../interface/readnumbroadcastretransmissionscompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readnumbroadcastretransmissionscompleteevent.h) -../interface/writenumbroadcastretransmissionscompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writenumbroadcastretransmissionscompleteevent.h) -../interface/readholdmodeactivitycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readholdmodeactivitycompleteevent.h) -../interface/writeholdmodeactivitycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeholdmodeactivitycompleteevent.h) -../interface/readtransmitpowerlevelcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readtransmitpowerlevelcompleteevent.h) -../interface/readsynchronousflowcontrolenablecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readsynchronousflowcontrolenablecompleteevent.h) -../interface/writesynchronousflowcontrolenablecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writesynchronousflowcontrolenablecompleteevent.h) -../interface/setcontrollertohostflowcontrolcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/setcontrollertohostflowcontrolcompleteevent.h) -../interface/hostbuffersizecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hostbuffersizecompleteevent.h) -../interface/hostnumberofcompletedpacketscompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hostnumberofcompletedpacketscompleteevent.h) -../interface/readlinksupervisiontimeoutcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlinksupervisiontimeoutcompleteevent.h) -../interface/writelinksupervisiontimeoutcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writelinksupervisiontimeoutcompleteevent.h) -../interface/readnumberofsupportediaccompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readnumberofsupportediaccompleteevent.h) -../interface/readcurrentiaclapcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readcurrentiaclapcompleteevent.h) -../interface/writecurrentiaclapcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writecurrentiaclapcompleteevent.h) -../interface/setafhhostchannelclassificationcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/setafhhostchannelclassificationcompleteevent.h) -../interface/readinquiryscantypecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readinquiryscantypecompleteevent.h) -../interface/writeinquiryscantypecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeinquiryscantypecompleteevent.h) -../interface/readinquirymodecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readinquirymodecompleteevent.h) -../interface/writeinquirymodecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeinquirymodecompleteevent.h) -../interface/readpagescantypecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpagescantypecompleteevent.h) -../interface/writepagescantypecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepagescantypecompleteevent.h) -../interface/readafhchannelassessmentmodecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readafhchannelassessmentmodecompleteevent.h) -../interface/writeafhchannelassessmentmodecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeafhchannelassessmentmodecompleteevent.h) -../interface/readextendedinquiryresponsecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readextendedinquiryresponsecompleteevent.h) -../interface/writeextendedinquiryresponsecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeextendedinquiryresponsecompleteevent.h) -../interface/readsimplepairingmodecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readsimplepairingmodecompleteevent.h) -../interface/writesimplepairingmodecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writesimplepairingmodecompleteevent.h) -../interface/readlocaloobdatacompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocaloobdatacompleteevent.h) -../interface/readinquiryresponsetransmitpowerlevelcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readinquiryresponsetransmitpowerlevelcompleteevent.h) -../interface/writeinquiryresponsetransmitpowerlevelcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeinquiryresponsetransmitpowerlevelcompleteevent.h) -../interface/sendkeypressnotificationcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/sendkeypressnotificationcompleteevent.h) -../interface/readdefaulterroneousdatareportingcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readdefaulterroneousdatareportingcompleteevent.h) -../interface/writedefaulterroneousdatareportingcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writedefaulterroneousdatareportingcompleteevent.h) +../interface/seteventmaskcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/seteventmaskcompleteevent.h) +../interface/resetcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/resetcompleteevent.h) +../interface/seteventfiltercompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/seteventfiltercompleteevent.h) +../interface/flushcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/flushcompleteevent.h) +../interface/readpintypecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpintypecompleteevent.h) +../interface/writepintypecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepintypecompleteevent.h) +../interface/createnewunitkeycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/createnewunitkeycompleteevent.h) +../interface/readstoredlinkkeycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readstoredlinkkeycompleteevent.h) +../interface/writestoredlinkkeycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writestoredlinkkeycompleteevent.h) +../interface/deletestoredlinkkeycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/deletestoredlinkkeycompleteevent.h) +../interface/writelocalnamecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writelocalnamecompleteevent.h) +../interface/ReadLocalNameCompleteEvent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalnamecompleteevent.h) +../interface/readconnectionaccepttimeoutcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readconnectionaccepttimeoutcompleteevent.h) +../interface/writeconnectionaccepttimeoutcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeconnectionaccepttimeoutcompleteevent.h) +../interface/readpagetimeoutcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpagetimeoutcompleteevent.h) +../interface/writepagetimeoutcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepagetimeoutcompleteevent.h) +../interface/readscanenablecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readscanenablecompleteevent.h) +../interface/writescanenablecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writescanenablecompleteevent.h) +../interface/readpagescanactivitycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpagescanactivitycompleteevent.h) +../interface/writepagescanactivitycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepagescanactivitycompleteevent.h) +../interface/readinquiryscanactivitycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readinquiryscanactivitycompleteevent.h) +../interface/writeinquiryscanactivitycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeinquiryscanactivitycompleteevent.h) +../interface/readauthenticationenablecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readauthenticationenablecompleteevent.h) +../interface/writeauthenticationenablecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeauthenticationenablecompleteevent.h) +../interface/readclassofdevicecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readclassofdevicecompleteevent.h) +../interface/writeclassofdevicecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeclassofdevicecompleteevent.h) +../interface/readvoicesettingcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readvoicesettingcompleteevent.h) +../interface/writevoicesettingcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writevoicesettingcompleteevent.h) +../interface/readautomaticflushtimeoutcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readautomaticflushtimeoutcompleteevent.h) +../interface/writeautomaticflushtimeoutcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeautomaticflushtimeoutcompleteevent.h) +../interface/readnumbroadcastretransmissionscompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readnumbroadcastretransmissionscompleteevent.h) +../interface/writenumbroadcastretransmissionscompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writenumbroadcastretransmissionscompleteevent.h) +../interface/readholdmodeactivitycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readholdmodeactivitycompleteevent.h) +../interface/writeholdmodeactivitycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeholdmodeactivitycompleteevent.h) +../interface/readtransmitpowerlevelcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readtransmitpowerlevelcompleteevent.h) +../interface/readsynchronousflowcontrolenablecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readsynchronousflowcontrolenablecompleteevent.h) +../interface/writesynchronousflowcontrolenablecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writesynchronousflowcontrolenablecompleteevent.h) +../interface/setcontrollertohostflowcontrolcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/setcontrollertohostflowcontrolcompleteevent.h) +../interface/hostbuffersizecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hostbuffersizecompleteevent.h) +../interface/hostnumberofcompletedpacketscompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hostnumberofcompletedpacketscompleteevent.h) +../interface/readlinksupervisiontimeoutcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlinksupervisiontimeoutcompleteevent.h) +../interface/writelinksupervisiontimeoutcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writelinksupervisiontimeoutcompleteevent.h) +../interface/readnumberofsupportediaccompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readnumberofsupportediaccompleteevent.h) +../interface/readcurrentiaclapcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readcurrentiaclapcompleteevent.h) +../interface/writecurrentiaclapcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writecurrentiaclapcompleteevent.h) +../interface/setafhhostchannelclassificationcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/setafhhostchannelclassificationcompleteevent.h) +../interface/readinquiryscantypecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readinquiryscantypecompleteevent.h) +../interface/writeinquiryscantypecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeinquiryscantypecompleteevent.h) +../interface/readinquirymodecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readinquirymodecompleteevent.h) +../interface/writeinquirymodecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeinquirymodecompleteevent.h) +../interface/readpagescantypecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpagescantypecompleteevent.h) +../interface/writepagescantypecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepagescantypecompleteevent.h) +../interface/readafhchannelassessmentmodecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readafhchannelassessmentmodecompleteevent.h) +../interface/writeafhchannelassessmentmodecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeafhchannelassessmentmodecompleteevent.h) +../interface/readextendedinquiryresponsecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readextendedinquiryresponsecompleteevent.h) +../interface/writeextendedinquiryresponsecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeextendedinquiryresponsecompleteevent.h) +../interface/readsimplepairingmodecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readsimplepairingmodecompleteevent.h) +../interface/writesimplepairingmodecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writesimplepairingmodecompleteevent.h) +../interface/readlocaloobdatacompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocaloobdatacompleteevent.h) +../interface/readinquiryresponsetransmitpowerlevelcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readinquiryresponsetransmitpowerlevelcompleteevent.h) +../interface/writeinquiryresponsetransmitpowerlevelcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeinquiryresponsetransmitpowerlevelcompleteevent.h) +../interface/sendkeypressnotificationcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/sendkeypressnotificationcompleteevent.h) +../interface/readdefaulterroneousdatareportingcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readdefaulterroneousdatareportingcompleteevent.h) +../interface/writedefaulterroneousdatareportingcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writedefaulterroneousdatareportingcompleteevent.h) // // Informational Parameters // -../interface/readlocalversioninfocompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalversioninfocompleteevent.h) -../interface/readlocalsupportedcommandscompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalsupportedcommandscompleteevent.h) -../interface/readlocalsupportedfeaturescompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalsupportedfeaturescompleteevent.h) -../interface/readlocalextendedfeaturescompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalextendedfeaturescompleteevent.h) -../interface/readbuffersizecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readbuffersizecompleteevent.h) -../interface/readbdaddrcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readbdaddrcompleteevent.h) +../interface/readlocalversioninfocompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalversioninfocompleteevent.h) +../interface/readlocalsupportedcommandscompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalsupportedcommandscompleteevent.h) +../interface/readlocalsupportedfeaturescompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalsupportedfeaturescompleteevent.h) +../interface/readlocalextendedfeaturescompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlocalextendedfeaturescompleteevent.h) +../interface/readbuffersizecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readbuffersizecompleteevent.h) +../interface/readbdaddrcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readbdaddrcompleteevent.h) // // Status Parameters // -../interface/readfailedcontactcountercompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readfailedcontactcountercompleteevent.h) -../interface/resetfailedcontactcountercompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/resetfailedcontactcountercompleteevent.h) -../interface/readlinkqualitycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlinkqualitycompleteevent.h) -../interface/readrssicompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readrssicompleteevent.h) -../interface/readafhchannelmapcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readafhchannelmapcompleteevent.h) -../interface/readclockcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readclockcompleteevent.h) +../interface/readfailedcontactcountercompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readfailedcontactcountercompleteevent.h) +../interface/resetfailedcontactcountercompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/resetfailedcontactcountercompleteevent.h) +../interface/readlinkqualitycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readlinkqualitycompleteevent.h) +../interface/readrssicompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readrssicompleteevent.h) +../interface/readafhchannelmapcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readafhchannelmapcompleteevent.h) +../interface/readclockcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readclockcompleteevent.h) // // Testing Commands // -../interface/readloopbackmodecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readloopbackmodecompleteevent.h) -../interface/writeloopbackmodecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeloopbackmodecompleteevent.h) -../interface/enabledeviceundertestmodecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/enabledeviceundertestmodecompleteevent.h) -../interface/writesimplepairingdebugmodecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writesimplepairingdebugmodecompleteevent.h) +../interface/readloopbackmodecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readloopbackmodecompleteevent.h) +../interface/writeloopbackmodecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeloopbackmodecompleteevent.h) +../interface/enabledeviceundertestmodecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/enabledeviceundertestmodecompleteevent.h) +../interface/writesimplepairingdebugmodecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writesimplepairingdebugmodecompleteevent.h) // Events -../interface/inquirycompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/inquirycompleteevent.h) -../interface/inquiryresultevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/inquiryresultevent.h) -../interface/connectioncompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/connectioncompleteevent.h) -../interface/connectionrequestevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/connectionrequestevent.h) -../interface/disconnectioncompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/disconnectioncompleteevent.h) -../interface/authenticationcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/authenticationcompleteevent.h) -../interface/remotenamereqcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remotenamereqcompleteevent.h) -../interface/encryptionchangeevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/encryptionchangeevent.h) -../interface/changelinkkeyevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/changelinkkeyevent.h) -../interface/masterlinkkeyevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/masterlinkkeyevent.h) -../interface/readremsuppfeatcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readremsuppfeatcompleteevent.h) -../interface/readremverinfocompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readremverinfocompleteevent.h) -../interface/qossetupcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/qossetupcompleteevent.h) -../interface/commandstatusevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/commandstatusevent.h) -../interface/hardwareerrorevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hardwareerrorevent.h) -../interface/flushoccurredevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/flushoccurredevent.h) -../interface/rolechangeevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/rolechangeevent.h) -../interface/numberofcompletedpacketsevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/numberofcompletedpacketsevent.h) -../interface/modechangeevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/modechangeevent.h) -../interface/returnlinkkeysevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/returnlinkkeysevent.h) -../interface/pincoderequestevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/pincoderequestevent.h) -../interface/linkkeyrequestevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/linkkeyrequestevent.h) -../interface/linkkeynotificationevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/linkkeynotificationevent.h) -../interface/loopbackcommandevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/loopbackcommandevent.h) -../interface/databufferoverflowevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/databufferoverflowevent.h) -../interface/maxslotschangeevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/maxslotschangeevent.h) -../interface/readclockoffsetevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readclockoffsetevent.h) -../interface/connectionpackettypechangedevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/connectionpackettypechangedevent.h) -../interface/qosviolationevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/qosviolationevent.h) -../interface/pagescanrepetitionmodechangeevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/pagescanrepetitionmodechangeevent.h) -../interface/flowspecificationcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/flowspecificationcompleteevent.h) -../interface/inquiryresultwithrssievent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/inquiryresultwithrssievent.h) -../interface/readremoteextendedfeaturescompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readremoteextendedfeaturescompleteevent.h) -../interface/synchronousconnectioncompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/synchronousconnectioncompleteevent.h) -../interface/synchronousconnectionchangedevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/synchronousconnectionchangedevent.h) -../interface/sniffsubratingevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/sniffsubratingevent.h) -../interface/extendedinquiryresultevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/extendedinquiryresultevent.h) -../interface/encryptionkeyrefreshcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/encryptionkeyrefreshcompleteevent.h) -../interface/iocapabilityrequestevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/iocapabilityrequestevent.h) -../interface/iocapabilityresponseevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/iocapabilityresponseevent.h) -../interface/userconfirmationrequestevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userconfirmationrequestevent.h) -../interface/userpasskeyrequestevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userpasskeyrequestevent.h) -../interface/remoteoobdatarequestevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remoteoobdatarequestevent.h) -../interface/simplepairingcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/simplepairingcompleteevent.h) -../interface/linksupervisiontimeoutchangedevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/linksupervisiontimeoutchangedevent.h) -../interface/enhancedflushcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/enhancedflushcompleteevent.h) -../interface/userpasskeynotificationevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userpasskeynotificationevent.h) -../interface/keypressnotificationevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/keypressnotificationevent.h) -../interface/remotehostsupportedfeaturesnotificationevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remotehostsupportedfeaturesnotificationevent.h) +../interface/inquirycompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/inquirycompleteevent.h) +../interface/inquiryresultevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/inquiryresultevent.h) +../interface/connectioncompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/connectioncompleteevent.h) +../interface/connectionrequestevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/connectionrequestevent.h) +../interface/disconnectioncompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/disconnectioncompleteevent.h) +../interface/authenticationcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/authenticationcompleteevent.h) +../interface/remotenamereqcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remotenamereqcompleteevent.h) +../interface/encryptionchangeevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/encryptionchangeevent.h) +../interface/changelinkkeyevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/changelinkkeyevent.h) +../interface/masterlinkkeyevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/masterlinkkeyevent.h) +../interface/readremsuppfeatcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readremsuppfeatcompleteevent.h) +../interface/readremverinfocompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readremverinfocompleteevent.h) +../interface/qossetupcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/qossetupcompleteevent.h) +../interface/commandstatusevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/commandstatusevent.h) +../interface/hardwareerrorevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hardwareerrorevent.h) +../interface/flushoccurredevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/flushoccurredevent.h) +../interface/rolechangeevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/rolechangeevent.h) +../interface/numberofcompletedpacketsevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/numberofcompletedpacketsevent.h) +../interface/modechangeevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/modechangeevent.h) +../interface/returnlinkkeysevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/returnlinkkeysevent.h) +../interface/pincoderequestevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/pincoderequestevent.h) +../interface/linkkeyrequestevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/linkkeyrequestevent.h) +../interface/linkkeynotificationevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/linkkeynotificationevent.h) +../interface/loopbackcommandevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/loopbackcommandevent.h) +../interface/databufferoverflowevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/databufferoverflowevent.h) +../interface/maxslotschangeevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/maxslotschangeevent.h) +../interface/readclockoffsetevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readclockoffsetevent.h) +../interface/connectionpackettypechangedevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/connectionpackettypechangedevent.h) +../interface/qosviolationevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/qosviolationevent.h) +../interface/pagescanrepetitionmodechangeevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/pagescanrepetitionmodechangeevent.h) +../interface/flowspecificationcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/flowspecificationcompleteevent.h) +../interface/inquiryresultwithrssievent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/inquiryresultwithrssievent.h) +../interface/readremoteextendedfeaturescompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readremoteextendedfeaturescompleteevent.h) +../interface/synchronousconnectioncompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/synchronousconnectioncompleteevent.h) +../interface/synchronousconnectionchangedevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/synchronousconnectionchangedevent.h) +../interface/sniffsubratingevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/sniffsubratingevent.h) +../interface/extendedinquiryresultevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/extendedinquiryresultevent.h) +../interface/encryptionkeyrefreshcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/encryptionkeyrefreshcompleteevent.h) +../interface/iocapabilityrequestevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/iocapabilityrequestevent.h) +../interface/iocapabilityresponseevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/iocapabilityresponseevent.h) +../interface/userconfirmationrequestevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userconfirmationrequestevent.h) +../interface/userpasskeyrequestevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userpasskeyrequestevent.h) +../interface/remoteoobdatarequestevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remoteoobdatarequestevent.h) +../interface/simplepairingcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/simplepairingcompleteevent.h) +../interface/linksupervisiontimeoutchangedevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/linksupervisiontimeoutchangedevent.h) +../interface/enhancedflushcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/enhancedflushcompleteevent.h) +../interface/userpasskeynotificationevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/userpasskeynotificationevent.h) +../interface/keypressnotificationevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/keypressnotificationevent.h) +../interface/remotehostsupportedfeaturesnotificationevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/remotehostsupportedfeaturesnotificationevent.h) // Deprecated Commands and Events -../interface/readpagescanperiodcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpagescanperiodcommand.h) -../interface/readpagescanperiodcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpagescanperiodcompleteevent.h) -../interface/writepagescanperiodcommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepagescanperiodcommand.h) -../interface/writepagescanperiodcompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepagescanperiodcompleteevent.h) -../interface/addscoconnectioncommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/addscoconnectioncommand.h) -../interface/pagescanmodechangeevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/pagescanmodechangeevent.h) -../interface/readencryptionmodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readencryptionmodecommand.h) -../interface/readencryptionmodecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readencryptionmodecompleteevent.h) -../interface/writeencryptionmodecommand.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeencryptionmodecommand.h) -../interface/writeencryptionmodecompleteevent.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeencryptionmodecompleteevent.h) +../interface/readpagescanperiodcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpagescanperiodcommand.h) +../interface/readpagescanperiodcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readpagescanperiodcompleteevent.h) +../interface/writepagescanperiodcommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepagescanperiodcommand.h) +../interface/writepagescanperiodcompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writepagescanperiodcompleteevent.h) +../interface/addscoconnectioncommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/addscoconnectioncommand.h) +../interface/pagescanmodechangeevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/pagescanmodechangeevent.h) +../interface/readencryptionmodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readencryptionmodecommand.h) +../interface/readencryptionmodecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/readencryptionmodecompleteevent.h) +../interface/writeencryptionmodecommand.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeencryptionmodecommand.h) +../interface/writeencryptionmodecompleteevent.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/writeencryptionmodecompleteevent.h) // DEF files for the implementation to use. -../BWINS/commandseventsU.def /epoc32/include/bluetooth/hci/bwins/commandseventsu.def -../EABI/commandseventsU.def /epoc32/include/bluetooth/hci/eabi/commandseventsu.def +../BWINS/commandseventsU.def OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/bwins/commandseventsu.def) +../EABI/commandseventsU.def OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/eabi/commandseventsu.def) PRJ_MMPFILES commandsevents_base.mmp diff -r 14e279d2bbb7 -r 22de2e391156 bthci/bthci2/btpowercontrol/group/bld.inf --- a/bthci/bthci2/btpowercontrol/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/bthci2/btpowercontrol/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2005-2010 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" @@ -16,13 +16,9 @@ // // -/** - @file -*/ - PRJ_EXPORTS -../interface/btpowercontrol.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/btpowercontrol.h) -../interface/btpowercontrolmessages.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/btpowercontrolmessages.h) +../interface/btpowercontrol.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/btpowercontrol.h) +../interface/btpowercontrolmessages.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/btpowercontrolmessages.h) PRJ_MMPFILES btpowercontrol.mmp diff -r 14e279d2bbb7 -r 22de2e391156 bthci/bthci2/dutmode/group/bld.inf --- a/bthci/bthci2/dutmode/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/bthci2/dutmode/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2009-2010 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" @@ -16,7 +16,7 @@ // PRJ_EXPORTS -../interface/dutmode.h /epoc32/include/bluetooth/dutmode.h +../interface/dutmode.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/dutmode.h) PRJ_MMPFILES diff -r 14e279d2bbb7 -r 22de2e391156 bthci/bthci2/dutmode/interface/dutmode.h --- a/bthci/bthci2/dutmode/interface/dutmode.h Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/bthci2/dutmode/interface/dutmode.h Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2009-2010 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" @@ -22,7 +22,6 @@ #define BLUETOOTH_DUT_MODE_H #include -#include class RHCIServerSession; diff -r 14e279d2bbb7 -r 22de2e391156 bthci/bthci2/group/bld.inf --- a/bthci/bthci2/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/bthci2/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2006-2010 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" @@ -32,25 +32,25 @@ hci_framework.iby /epoc32/rom/include/hci_framework.iby PRJ_EXPORTS -../corehci/interface/aclpacketconsts.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/aclpacketconsts.h) -../corehci/interface/basebandpacketconsts.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/basebandpacketconsts.h) -../corehci/interface/CoreHCI.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/corehci.h) -../corehci/interface/corehciplugin.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/corehciplugin.h) -../corehci/interface/hcibase.hrh /epoc32/include/bluetooth/hci/hcibase.hrh -../corehci/interface/hciconsts.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hciconsts.h) -../corehci/interface/HciCommandAllocator.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcicommandallocator.h) -../corehci/interface/HciDataEventObserver.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcidataeventobserver.h) -../corehci/interface/HciCommandEventObserver.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hcicommandeventobserver.h) -../corehci/interface/HciDataFramer.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcidataframer.h) -../corehci/interface/HciDataObserver.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcidataobserver.h) -../corehci/interface/hcierrors.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(bluetooth/hci/hcierrors.h) -../corehci/interface/hcievents.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcievents.h) -../corehci/interface/hciframe.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hciframe.h) -../corehci/interface/hcitypes.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcitypes.h) -../corehci/interface/hciclientusage.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hciclientusage.h) +../corehci/interface/aclpacketconsts.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/aclpacketconsts.h) +../corehci/interface/basebandpacketconsts.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/basebandpacketconsts.h) +../corehci/interface/CoreHCI.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/corehci.h) +../corehci/interface/corehciplugin.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/corehciplugin.h) +../corehci/interface/hcibase.hrh OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcibase.hrh) +../corehci/interface/hciconsts.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hciconsts.h) +../corehci/interface/HciCommandAllocator.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcicommandallocator.h) +../corehci/interface/HciDataEventObserver.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcidataeventobserver.h) +../corehci/interface/HciCommandEventObserver.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hcicommandeventobserver.h) +../corehci/interface/HciDataFramer.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcidataframer.h) +../corehci/interface/HciDataObserver.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcidataobserver.h) +../corehci/interface/hcierrors.h OS_LAYER_PUBLIC_EXPORT_PATH(bluetooth/hci/hcierrors.h) +../corehci/interface/hcievents.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcievents.h) +../corehci/interface/hciframe.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hciframe.h) +../corehci/interface/hcitypes.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcitypes.h) +../corehci/interface/hciclientusage.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hciclientusage.h) -../CommandsEvents/interface/hciopcodes.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hciopcodes.h) +../CommandsEvents/interface/hciopcodes.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hciopcodes.h) -../hctl/interface/hctlchannelobserver.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctlchannelobserver.h) +../hctl/interface/hctlchannelobserver.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctlchannelobserver.h) -../hciserverclient/interface/hciipc.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hciipc.h) +../hciserverclient/interface/hciipc.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hciipc.h) diff -r 14e279d2bbb7 -r 22de2e391156 bthci/bthci2/group/hci_framework.iby --- a/bthci/bthci2/group/hci_framework.iby Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/bthci2/group/hci_framework.iby Thu Sep 23 17:06:47 2010 +0300 @@ -32,6 +32,6 @@ file=ABI_DIR\HCIF_DIR\hcicmdq.dll System\Libs\hcicmdq.dll REM Command Queue configuration file -data=ZPRIVATE\101F7989\Bluetooth\cmdq.ini Private\101F7989\Bluetooth\cmdq.ini +data=ZPRIVATE\101f7989\bluetooth\cmdq.ini Private\101F7989\Bluetooth\cmdq.ini #endif // HCI_FRAMEWORK_IBY diff -r 14e279d2bbb7 -r 22de2e391156 bthci/bthci2/hcicmdq/group/bld.inf --- a/bthci/bthci2/hcicmdq/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/bthci2/hcicmdq/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2006-2010 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" @@ -14,16 +14,13 @@ // PRJ_EXPORTS -../interface/HciCommandQItem.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hcicommandqitem.h) -../interface/HCICommandQueue.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hcicommandqueue.h) -../interface/HciCommandQueueClient.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hcicommandqueueclient.h) -../interface/HciCmdQController.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hcicmdqcontroller.h) +../interface/HciCommandQItem.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hcicommandqitem.h) +../interface/HCICommandQueue.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hcicommandqueue.h) +../interface/HciCommandQueueClient.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hcicommandqueueclient.h) +../interface/HciCmdQController.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hcicmdqcontroller.h) -cmdq.ini /epoc32/data/z/private/101f7989/bluetooth/cmdq.ini -cmdq.ini /epoc32/release/winscw/udeb/z/private/101f7989/bluetooth/cmdq.ini // for winscw UDEB -cmdq.ini /epoc32/release/winscw/urel/z/private/101f7989/bluetooth/cmdq.ini // for winscw UREL +cmdq.ini z:/private/101f7989/bluetooth/cmdq.ini PRJ_MMPFILES HCICmdQ.mmp -PRJ_TESTMMPFILES diff -r 14e279d2bbb7 -r 22de2e391156 bthci/bthci2/hciserverclient/group/bld.inf --- a/bthci/bthci2/hciserverclient/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/bthci2/hciserverclient/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2006-2010 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" @@ -14,7 +14,7 @@ // PRJ_EXPORTS -../interface/hciserverclient.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hciserverclient.h) +../interface/hciserverclient.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hciserverclient.h) PRJ_MMPFILES hciserverclient.mmp diff -r 14e279d2bbb7 -r 22de2e391156 bthci/bthci2/hciutil/group/bld.inf --- a/bthci/bthci2/hciutil/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/bthci2/hciutil/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2006-2010 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" @@ -14,8 +14,8 @@ // PRJ_EXPORTS -../interface/hciutil.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hciutil.h) -../interface/hciinifile.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hciinifile.h) +../interface/hciutil.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hciutil.h) +../interface/hciinifile.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hciinifile.h) PRJ_MMPFILES hciutil.mmp diff -r 14e279d2bbb7 -r 22de2e391156 bthci/bthci2/hctl/group/bld.inf --- a/bthci/bthci2/hctl/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/bthci2/hctl/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2006-2010 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" @@ -14,19 +14,19 @@ // PRJ_EXPORTS -../interface/delay.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/delay.h) -../interface/hctlbase.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctlbase.h) -../interface/hctlbase.hrh /epoc32/include/bluetooth/hci/hctlbase.hrh -../interface/hctldataobserver.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctldataobserver.h) -../interface/hctleventobserver.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctleventobserver.h) -../interface/hctlinterface.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctlinterface.h) -../interface/hctluartbase.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctluartbase.h) -../interface/QdpPluginInterfaceFinder.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/qdpplugininterfacefinder.h) -../interface/HctlPowerInterface.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctlpowerinterface.h) -../interface/hctluartpowermanager.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctluartpowermanager.h) -../interface/hctluartpowerobserver.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctluartpowerobserver.h) +../interface/delay.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/delay.h) +../interface/hctlbase.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctlbase.h) +../interface/hctlbase.hrh OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctlbase.hrh) +../interface/hctldataobserver.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctldataobserver.h) +../interface/hctleventobserver.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctleventobserver.h) +../interface/hctlinterface.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctlinterface.h) +../interface/hctluartbase.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctluartbase.h) +../interface/QdpPluginInterfaceFinder.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/qdpplugininterfacefinder.h) +../interface/HctlPowerInterface.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctlpowerinterface.h) +../interface/hctluartpowermanager.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctluartpowermanager.h) +../interface/hctluartpowerobserver.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctluartpowerobserver.h) // NB The interface in this file is re-used by observers of the HCI also. -../interface/controllerstateobserver.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/controllerstateobserver.h) +../interface/controllerstateobserver.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/controllerstateobserver.h) PRJ_MMPFILES hctl_base.mmp diff -r 14e279d2bbb7 -r 22de2e391156 bthci/bthci2/initialisor/group/bld.inf --- a/bthci/bthci2/initialisor/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/bthci2/initialisor/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2006-2010 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" @@ -14,10 +14,10 @@ // PRJ_EXPORTS -../interface/ControllerInitialisationInterface.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/controllerinitialisationinterface.h) -../interface/ControllerInitialisationPlugin.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/controllerinitialisationplugin.h) -../interface/initialisorbase.hrh /epoc32/include/bluetooth/hci/initialisorbase.hrh -../interface/ControllerInitialisationObserver.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/controllerinitialisationobserver.h) +../interface/ControllerInitialisationInterface.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/controllerinitialisationinterface.h) +../interface/ControllerInitialisationPlugin.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/controllerinitialisationplugin.h) +../interface/initialisorbase.hrh OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/initialisorbase.hrh) +../interface/ControllerInitialisationObserver.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/controllerinitialisationobserver.h) PRJ_MMPFILES initialisor_base.mmp diff -r 14e279d2bbb7 -r 22de2e391156 bthci/bthci2/qdp/group/bld.inf --- a/bthci/bthci2/qdp/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/bthci2/qdp/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2006-2010 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" @@ -14,9 +14,9 @@ // PRJ_EXPORTS -../interface/HciCmdQueueDecisionInterface.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcicmdqueuedecisioninterface.h) -../interface/HciCmdQueueDecisionPlugin.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcicmdqueuedecisionplugin.h) -../interface/qdpbase.hrh /epoc32/include/bluetooth/hci/qdpbase.hrh +../interface/HciCmdQueueDecisionInterface.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcicmdqueuedecisioninterface.h) +../interface/HciCmdQueueDecisionPlugin.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hcicmdqueuedecisionplugin.h) +../interface/qdpbase.hrh OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/qdpbase.hrh) PRJ_MMPFILES qdp_base.mmp diff -r 14e279d2bbb7 -r 22de2e391156 bthci/hci2implementations/CommandsEvents/symbian/group/bld.inf --- a/bthci/hci2implementations/CommandsEvents/symbian/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/hci2implementations/CommandsEvents/symbian/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-2010 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" @@ -14,9 +14,9 @@ // PRJ_EXPORTS -commandsevents_symbian.iby /epoc32/rom/include/commandsevents_symbian.iby -../inc/commandbaseextension.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/commandbaseextension.h) -../inc/completingeventqueryhelper.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/completingeventqueryhelper.h) +commandsevents_symbian.iby /epoc32/rom/include/commandsevents_symbian.iby +../inc/commandbaseextension.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/commandbaseextension.h) +../inc/completingeventqueryhelper.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/completingeventqueryhelper.h) PRJ_MMPFILES commandsevents_symbian.mmp diff -r 14e279d2bbb7 -r 22de2e391156 bthci/hci2implementations/CommandsEvents/symbian/group/commandsevents_symbian.mmp --- a/bthci/hci2implementations/CommandsEvents/symbian/group/commandsevents_symbian.mmp Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/hci2implementations/CommandsEvents/symbian/group/commandsevents_symbian.mmp Thu Sep 23 17:06:47 2010 +0300 @@ -353,9 +353,9 @@ // against the exported .def files (which define the ordinals the .lib file is expecting of the implemenation). NOEXPORTLIBRARY #ifdef WINS -DEFFILE /epoc32/include/bluetooth/hci/bwins/commandsevents.def +DEFFILE OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/bwins/commandsevents.def) #else -DEFFILE /epoc32/include/bluetooth/hci/eabi/commandsevents.def +DEFFILE OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/eabi/commandsevents.def) #endif OPTION cw -strict on -w pedantic,unused,hidevirtual,padding,ptrintconv diff -r 14e279d2bbb7 -r 22de2e391156 bthci/hci2implementations/hctls/ti/group/bld.inf --- a/bthci/hci2implementations/hctls/ti/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/hci2implementations/hctls/ti/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2006-2010 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" @@ -14,12 +14,9 @@ // PRJ_EXPORTS -../inc/HCTLConfigInterface.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctlconfiginterface.h) +../inc/HCTLConfigInterface.h OS_LAYER_PLATFORM_EXPORT_PATH(bluetooth/hci/hctlconfiginterface.h) -hctl_ti.ini /epoc32/data/z/private/101f7989/bluetooth/hctl_ti.ini - -hctl_ti.ini /epoc32/release/winscw/udeb/z/private/101f7989/bluetooth/hctl_ti.ini // For WINSCW UDEB builds -hctl_ti.ini /epoc32/release/winscw/urel/z/private/101f7989/bluetooth/hctl_ti.ini // For WINSCW UREL builds +hctl_ti.ini z:/private/101f7989/bluetooth/hctl_ti.ini hctl_ti.iby /epoc32/rom/include/hctl_ti.iby diff -r 14e279d2bbb7 -r 22de2e391156 bthci/hciextensioninterface/bld.inf --- a/bthci/hciextensioninterface/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/hciextensioninterface/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2009-2010 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" @@ -14,7 +14,7 @@ // PRJ_EXPORTS -inc/hciproxy.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(hciproxy.h) +inc/hciproxy.h OS_LAYER_PLATFORM_EXPORT_PATH(hciproxy.h) HCIProxy.iby /epoc32/rom/include/hciproxy.iby PRJ_MMPFILES diff -r 14e279d2bbb7 -r 22de2e391156 bthci/hciextensioninterface/tsrc/tproxy.cpp --- a/bthci/hciextensioninterface/tsrc/tproxy.cpp Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/hciextensioninterface/tsrc/tproxy.cpp Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2005-2010 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" @@ -20,10 +20,11 @@ #include #include #include -#include "btmanclient.h" +#include #include "debug.h" #include #include +#include #if defined (__WINS__) #define PDD_NAME _L("ECDRV") diff -r 14e279d2bbb7 -r 22de2e391156 bthci/hciextensioninterface/tsrc/tproxycorehci/group/bld.inf --- a/bthci/hciextensioninterface/tsrc/tproxycorehci/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/hciextensioninterface/tsrc/tproxycorehci/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2008-2010 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" @@ -17,16 +17,10 @@ // PRJ_TESTEXPORTS -../inc/HCICOREPLUGINIMPL.H SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(HCICOREPLUGINIMPL.H) - -bluetooth_stack.ini /epoc32/data/z/private/101f7989/bluetooth/bluetooth_stack.ini //For ARMV5 -corehci_tproxy.ini /epoc32/data/z/private/101f7989/bluetooth/corehci_tproxy.ini +../inc/HCICOREPLUGINIMPL.H OS_LAYER_PLATFORM_EXPORT_PATH(HCICOREPLUGINIMPL.H) -bluetooth_stack.ini /epoc32/release/winscw/udeb/z/private/101f7989/bluetooth/bluetooth_stack.ini // For WINSCW debugging -corehci_tproxy.ini /epoc32/release/winscw/udeb/z/private/101f7989/bluetooth/corehci_tproxy.ini - -bluetooth_stack.ini /epoc32/release/winscw/urel/z/private/101f7989/bluetooth/bluetooth_stack.ini // For WINSCW debugging -corehci_tproxy.ini /epoc32/release/winscw/urel/z/private/101f7989/bluetooth/corehci_tproxy.ini +bluetooth_stack.ini z:/private/101f7989/bluetooth/bluetooth_stack.ini +corehci_tproxy.ini z:/private/101f7989/bluetooth/corehci_tproxy.ini corehci_tproxy.iby /epoc32/rom/include/corehci_tproxy.iby diff -r 14e279d2bbb7 -r 22de2e391156 bthci/hciextensioninterface/tsrc/tproxycorehci/group/bluetooth_stack.ini --- a/bthci/hciextensioninterface/tsrc/tproxycorehci/group/bluetooth_stack.ini Wed Jul 21 15:42:05 2010 +0300 +++ b/bthci/hciextensioninterface/tsrc/tproxycorehci/group/bluetooth_stack.ini Thu Sep 23 17:06:47 2010 +0300 @@ -18,6 +18,3 @@ [CoreHci] EcomUid= 0x10286A7B - -[lowpowermodeconfiguration] -overridelpmtimeout_microseconds= 0 \ No newline at end of file diff -r 14e279d2bbb7 -r 22de2e391156 irda/irdastack/group/bld.inf --- a/irda/irdastack/group/bld.inf Wed Jul 21 15:42:05 2010 +0300 +++ b/irda/irdastack/group/bld.inf Thu Sep 23 17:06:47 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 1999-2010 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" @@ -15,26 +15,21 @@ // // -/** - @file -*/ - - PRJ_EXPORTS -../INC/IR_SOCK.H SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(ir_sock.h) +../INC/IR_SOCK.H OS_LAYER_PUBLIC_EXPORT_PATH(ir_sock.h) -../INC/irdaextensions.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(irdaextensions.h) +../INC/irdaextensions.h OS_LAYER_PLATFORM_EXPORT_PATH(irdaextensions.h) -../irtranp/tranp.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(tranp.h) +../irtranp/tranp.h OS_LAYER_PUBLIC_EXPORT_PATH(tranp.h) -../INC/irerr.ra /epoc32/include/errors/generic/irerr.ra -../INC/irerr.rls /epoc32/include/errors/generic/irerr.rls +../INC/irerr.ra OS_LAYER_PUBLIC_EXPORT_PATH(errors/generic/irerr.ra) +../INC/irerr.rls OS_LAYER_PUBLIC_EXPORT_PATH(errors/generic/irerr.rls) -../INC/irda.rh SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(irda.rh) +../INC/irda.rh OS_LAYER_PLATFORM_EXPORT_PATH(irda.rh) -../group/irda.iby /epoc32/rom/include/irda.iby +../group/irda.iby /epoc32/rom/include/irda.iby PRJ_MMPFILES diff -r 14e279d2bbb7 -r 22de2e391156 irda/irdastack/group/irda.iby --- a/irda/irdastack/group/irda.iby Wed Jul 21 15:42:05 2010 +0300 +++ b/irda/irdastack/group/irda.iby Thu Sep 23 17:06:47 2010 +0300 @@ -31,8 +31,6 @@ #include #endif -#include - REM *** irda.dll and irtranp.dll (Infrared Transfer Picture) are REM *** client side dlls. They are always included in the ROM whether REM *** IRDA is supported by the device or not, so that client