Revision: 201001 RCL_3 PDK_3.0.h
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Feb 2010 23:56:55 +0200
branchRCL_3
changeset 8 2b6718f05bdb
parent 4 28479eeba3fb
child 10 8a27654f7b62
Revision: 201001 Kit: 201007
bluetooth/btexample/test/cit/ROMConfig/src/cteststepbtromconfigremcon002.cpp
bluetooth/btlogger/btsnoophcilogger/public/hciframelogger.h
bluetooth/btstack/avdtp/avdtpStreamStates.cpp
bluetooth/btstack/l2cap/l2sap.cpp
bluetooth/btstack/l2cap/l2sapstates.cpp
bluetooth/btstack/linkmgr/ACLSAP.cpp
bluetooth/btstack/linkmgr/ACLSAP.h
bluetooth/btstack/linkmgr/physicallinks.cpp
bluetooth/btstack/rfcomm/rfcommsap.cpp
bluetooth/btstack/rfcomm/rfcommstates.cpp
bluetooth/btstack/rfcomm/rfcommstates.h
bluetooth/btstack/secman/btaccessrequester.cpp
bluetooth/btstack/secman/pairingserver.cpp
bluetooth/btstack/secman/secman.cpp
bluetoothmgmt/btcommon/bluetooth.txt
bluetoothmgmt/btmgr/BTManServer/BTRegistryDB.cpp
bthci/bthci2/CommandsEvents/BWINS/commandseventsU.def
bthci/bthci2/CommandsEvents/generator/Commands.txt
bthci/bthci2/CommandsEvents/generator/CompleteEvents.txt
bthci/bthci2/CommandsEvents/generator/Events.txt
bthci/bthci2/CommandsEvents/interface/VendorDebugCommand.h
bthci/hci2implementations/hctls/bcsp/src/hctlbcspcontrollermanager.cpp
--- a/bluetooth/btexample/test/cit/ROMConfig/src/cteststepbtromconfigremcon002.cpp	Tue Feb 02 01:12:20 2010 +0200
+++ b/bluetooth/btexample/test/cit/ROMConfig/src/cteststepbtromconfigremcon002.cpp	Fri Feb 19 23:56:55 2010 +0200
@@ -66,7 +66,7 @@
 	if ( err!=expectedError )
 		{
 		INFO_PRINTF4(\
-			_L("Failed: Expected KErrNotFound (%d) and got %d when calling CRemConInterfaceSelector::OpenTargetL"),\
+			_L("Failed: Expected %S(%d) and got %d when calling CRemConInterfaceSelector::OpenTargetL"),\
 			expectedErrorDesPtr, expectedError, err);
 		SetTestStepResult(EFail);
 		}
--- a/bluetooth/btlogger/btsnoophcilogger/public/hciframelogger.h	Tue Feb 02 01:12:20 2010 +0200
+++ b/bluetooth/btlogger/btsnoophcilogger/public/hciframelogger.h	Fri Feb 19 23:56:55 2010 +0200
@@ -35,6 +35,9 @@
 static const TUint KHCILoggerACLDataFrame		= 0; // For future use if required
 static const TUint KHCILoggerSynchronousDataFrame = 0; // For future use if required
 
+//KHCILoggerGenericDataFrame can be used instead of the above two flags as BTSnoop logger does not 
+//differencaite between the different types of data frames
+static const TUint KHCILoggerGenericDataFrame 	= 0; 
 static const TUint KHCILoggerCommandOrEvent		= 0x00000002;
 
 static const TUint KHCILoggerFrameFragmented	= 0x80000000;
--- a/bluetooth/btstack/avdtp/avdtpStreamStates.cpp	Tue Feb 02 01:12:20 2010 +0200
+++ b/bluetooth/btstack/avdtp/avdtpStreamStates.cpp	Fri Feb 19 23:56:55 2010 +0200
@@ -909,12 +909,16 @@
 // now we kick TCs into life
 	if (aResult)
 		{
-		// can return to Idle, user could try this operation again
-		// the way Open works means we have transport sessions interested in result of this
-		// they need to tell their sockets that their connects failed
-		
-		ChangeState(aStream, CAVStreamStateFactory::EStreamStateIdle);
-		
+		// late reply or connection problem, abort
+
+		CSignallingChannel* sigch = aStream.iProtocol.FindSignallingChannel(aStream.iRemoteAddress.BTAddr());
+		// should always have sigch here
+		__ASSERT_DEBUG(sigch, PanicInState(EAvdtpSignallingChannelShouldExist));
+		if (sigch)
+			{
+			sigch->SendAbort(aStream, aStream.RemoteSEID());
+			}
+	
 		// no need to tell signalling session as Opening is not available to RGavdp
 		// Opening is performed when the necessary sockets are created and connected in a stream
 		aStream.NotifyUserPlaneTransportSessionsError(NULL, aResult);
--- a/bluetooth/btstack/l2cap/l2sap.cpp	Tue Feb 02 01:12:20 2010 +0200
+++ b/bluetooth/btstack/l2cap/l2sap.cpp	Fri Feb 19 23:56:55 2010 +0200
@@ -141,6 +141,8 @@
 			clone->SetState(iState->iFactory.GetState(CL2CAPSAPStateFactory::EPassiveLinkPending));
 			clone->SetListeningSAP(*this);
 			
+			clone->SetCodServiceBits(iCodServiceBits);
+			
 			// Copy the details required for security.
 			clone->iSecurity = iSecurity;
 			clone->iRemoteDev = aAddr; 
--- a/bluetooth/btstack/l2cap/l2sapstates.cpp	Tue Feb 02 01:12:20 2010 +0200
+++ b/bluetooth/btstack/l2cap/l2sapstates.cpp	Fri Feb 19 23:56:55 2010 +0200
@@ -880,9 +880,11 @@
 	}
 
 // State Transition Actions.
-void TL2CAPSAPStateAccepting::Exit(CL2CAPConnectionSAP& /*aSAP*/) const
+void TL2CAPSAPStateAccepting::Exit(CL2CAPConnectionSAP& aSAP) const
 	{
 	LOG_FUNC
+	
+	aSAP.RegisterCodService();
 	}
 	
 /*************************************************************************/
--- a/bluetooth/btstack/linkmgr/ACLSAP.cpp	Tue Feb 02 01:12:20 2010 +0200
+++ b/bluetooth/btstack/linkmgr/ACLSAP.cpp	Fri Feb 19 23:56:55 2010 +0200
@@ -60,6 +60,7 @@
 	iStates[EOpen]					=new (ELeave) TACLLinkStateOpen(*this);
 	iStates[EOpenParked]			=new (ELeave) TACLLinkStateOpenParked(*this);
 	iStates[EClosing]				=new (ELeave) TACLLinkStateClosing(*this);
+	iStates[EAcceptingClosing]		=new (ELeave) TACLLinkStateAcceptingClosing(*this);
 	}
 
 CACLLinkStateFactory::~CACLLinkStateFactory()
@@ -432,7 +433,7 @@
 	{
 	LOG_FUNC
 	// we're not wanted - close
-	ChangeState(aContext, CACLLinkStateFactory::EClosing);
+	ChangeState(aContext, CACLLinkStateFactory::EAcceptingClosing);
 	}
 
 //----------------------------------------------------------------------------------
@@ -497,7 +498,7 @@
 	{
 	LOG_FUNC
 	// just go
-	ChangeState(aContext, CACLLinkStateFactory::EClosing);
+	ChangeState(aContext, CACLLinkStateFactory::EAcceptingClosing);
 	}
 
 //----------------------------------------------------------------------------------
@@ -869,6 +870,38 @@
 
 //----------------------------------------------------------------------------------
 
+TACLLinkStateAcceptingClosing::TACLLinkStateAcceptingClosing(CACLLinkStateFactory& aFactory)
+: TACLLinkState(aFactory)
+	{
+	LOG_FUNC
+	STATENAME("AcceptingClosing");
+	}
+
+void TACLLinkStateAcceptingClosing::Shutdown(CACLLink& /*aContext*/, CServProviderBase::TCloseType /*aCloseType*/) const
+	{
+	LOG_FUNC
+	// we are!  just ignore and continue
+	}
+
+void TACLLinkStateAcceptingClosing::Deletion(CACLLink& aContext) const
+	{
+	LOG_FUNC
+	aContext.ListeningSAP()->RemoveChild(&aContext);
+	}
+
+void TACLLinkStateAcceptingClosing::Error(CACLLink& aContext, TInt /*aError*/) const
+	{
+	LOG_FUNC
+	// This method is reached by receiving a Disconnection Complete Event with Status field != EOk,
+	// in this case we don't want to error the socket - so instead it is just closed
+	aContext.ListeningSAP()->RemoveChild(&aContext);
+	ChangeState(aContext, CACLLinkStateFactory::EClosed);
+	aContext.Socket()->CanClose();
+	}
+
+
+//----------------------------------------------------------------------------------
+
 TACLLinkStateClosed::TACLLinkStateClosed(CACLLinkStateFactory& aFactory)
 : TACLLinkState(aFactory)
 	{
--- a/bluetooth/btstack/linkmgr/ACLSAP.h	Tue Feb 02 01:12:20 2010 +0200
+++ b/bluetooth/btstack/linkmgr/ACLSAP.h	Fri Feb 19 23:56:55 2010 +0200
@@ -57,6 +57,7 @@
 		EOpen,	
 		EOpenParked,
 		EClosing,
+		EAcceptingClosing,
 	// *** keep next one last ***
 		EACLLinkMaxState,
 		};
@@ -229,6 +230,18 @@
 	void Error(CACLLink& aContext, TInt aError) const;
 	};
 
+NONSHARABLE_CLASS(TACLLinkStateAcceptingClosing) : public TACLLinkState
+	{
+public:
+	TACLLinkStateAcceptingClosing(CACLLinkStateFactory& aFactory);
+
+	void Shutdown(CACLLink& aContext, CServProviderBase::TCloseType aCloseType) const;
+	void Deletion(CACLLink& aContext) const;
+	
+	void Error(CACLLink& aContext, TInt aError) const;
+	};
+
+
 NONSHARABLE_CLASS(TACLLinkStateClosed) : public TACLLinkState
 	{
 public:
--- a/bluetooth/btstack/linkmgr/physicallinks.cpp	Tue Feb 02 01:12:20 2010 +0200
+++ b/bluetooth/btstack/linkmgr/physicallinks.cpp	Fri Feb 19 23:56:55 2010 +0200
@@ -1038,6 +1038,28 @@
  			NotifyStateChange(event);
  			}
 
+		if (iACLLogicalLinks.Count() == 0)
+			{
+			// We don't already have an ACL logical link associated with this phy, 
+			// so, in order to not miss ACL data from the remote, associate this 
+			// phy with an ACL listener if there is one.
+			TLogicalLinkListener* listener = iLinksMan.FindListener(EACLLink);
+	
+			if (listener)
+				{
+				TBTConnect conn;
+		
+				conn.iBdaddr = iDevice.Address();
+				conn.iCoD = iDevice.DeviceClass().DeviceClass();
+				conn.iLinkType = EACLLink;
+		
+				// Ignore the return from ConnectRequest, if not accepted then we are in no
+				// worse situation than if we didn't try.
+				ASSERT_DEBUG(listener->iObserver);
+				(void)listener->iObserver->ConnectRequest(conn, *this);
+				}
+			}
+		
 		// tell the logical links
 		NotifyLogicalLinkUp(aConn);
 		iLinksMan.ArbitrateAllPhysicalLinks();
@@ -1533,15 +1555,15 @@
 			if(pairingState == CBTPairingsCache::EDeferred)
 				{
 				// We're still waiting for the Pairing Caches paired device list to be filled.
- 				// We'll respond when this is complete, so store details away for then.
+				// We'll respond when this is complete, so store details away for then.
 				LOG(_L("CPhysicalLink: Waiting for physical link manager's paired device list from Registry!"))
 				iPendingConnection = ETrue;
-    			iLastPendingConnection.iConnH = aConn.iConnH;
-			    iLastPendingConnection.iBdaddr = aConn.iBdaddr;
-			    iLastPendingConnection.iCoD = aConn.iCoD;
-			    iLastPendingConnection.iLinkType = aConn.iLinkType;
-			    iLastPendingConnection.iEncryptMode = aConn.iEncryptMode;
-			    // Return now as we are waiting and don't want to 'RejectConnection'
+				iLastPendingConnection.iConnH = aConn.iConnH;
+				iLastPendingConnection.iBdaddr = aConn.iBdaddr;
+				iLastPendingConnection.iCoD = aConn.iCoD;
+				iLastPendingConnection.iLinkType = aConn.iLinkType;
+				iLastPendingConnection.iEncryptMode = aConn.iEncryptMode;
+				// Return now as we are waiting and don't want to 'RejectConnection'
 				return;
 				}
 
@@ -1699,7 +1721,7 @@
 					return KErrArgument;
 					}
 				aOption = TPtrC8(reinterpret_cast<const TUint8*>(&iSniffInterval), sizeof(TBasebandTime));
-			    return KErrNone;
+				return KErrNone;
 
 			default:
 				return KErrNotSupported;
@@ -1720,26 +1742,26 @@
 	if ( aImmediately )
 		{
 		iArbitrationDelay->Cancel();
-        return DoArbitrate(aLocalPriority);		
+		return DoArbitrate(aLocalPriority);		
 		}
 	else if (iArbitrationDelay->IsActive())
 		{
 		return KErrNone;
 		}
-    else
-        {
-        iArbitrationDelay->Start(aLocalPriority);
-        return KErrNone;
-        }
-    }
+	else
+		{
+		iArbitrationDelay->Start(aLocalPriority);
+		return KErrNone;
+		}
+	}
 
 TInt CPhysicalLink::DoArbitrate(TBool aLocalPriority)
-    {
-    if (!IsConnected())
-        {
-        return KErrDisconnected;
-        }
-	    
+	{
+	if (!IsConnected())
+		{
+		return KErrDisconnected;
+		}
+
 	//start arbitrate process with what our local controller supports
 	TUint8 allowedModesMask = EHoldMode | EParkMode | ESniffMode; // local features sorted out later
 	TBool roleSwitchAllowed = EFalse;
@@ -2813,6 +2835,18 @@
 
 	SetAuthenticationPending(EPinRequestPending); // if not already set (because the remote initiated authentication).
 
+	__ASSERT_DEBUG(iSimplePairingMode != EPhySimplePairingEnabled, Panic(EBTSSPModeChangedDuringConnection));
+	if (iSimplePairingMode == EPhySimplePairingUndefined)
+		{
+		iSimplePairingMode = EPhySimplePairingDisabled;
+		}
+	
+	if (!IsConnected())
+		{
+		iPeerInSecurityMode3 = ETrue;
+		}
+
+	
 	if (iPinRequester)
 		{
 		return;
@@ -3432,12 +3466,12 @@
 	}
 
 void CArbitrationDelayTimer::Start(TBool aLocalPriority)
-    {
-    LOG_FUNC
-    // Work out what the local priority will be now
-    TBool localPriority = iLocalPriority || aLocalPriority;
-    Cancel(); // cancel current timer (will also reset priority so ...
-    iLocalPriority = localPriority; // set the new priority)
+	{
+	LOG_FUNC
+	// Work out what the local priority will be now
+	TBool localPriority = iLocalPriority || aLocalPriority;
+	Cancel(); // cancel current timer (will also reset priority so ...
+	iLocalPriority = localPriority; // set the new priority)
 	After(KBTArbitrationDelay);
 	}
 
@@ -3450,16 +3484,16 @@
 	LOG_FUNC
 	if (iParent)
 		{
-        iParent->DoArbitrate(iLocalPriority);
+		iParent->DoArbitrate(iLocalPriority);
 		}
 	}
 
 void CArbitrationDelayTimer::DoCancel()
-    {
-    LOG_FUNC
-    CTimer::DoCancel();
-    iLocalPriority = EFalse;
-    }
+	{
+	LOG_FUNC
+	CTimer::DoCancel();
+	iLocalPriority = EFalse;
+	}
 
 TInt CPhysicalLink::GetNumPendingHandles(TInt& aConnectionHandles, TLinkType aLinkType) const
 	{
--- a/bluetooth/btstack/rfcomm/rfcommsap.cpp	Tue Feb 02 01:12:20 2010 +0200
+++ b/bluetooth/btstack/rfcomm/rfcommsap.cpp	Fri Feb 19 23:56:55 2010 +0200
@@ -597,6 +597,8 @@
 	//	Ensure the parent doesn't forget its clone
 	iClonedChildren.Append(clone);	
 
+	clone->SetCodServiceBits(iCodServiceBits);
+	
 	return clone;
 	}
 
--- a/bluetooth/btstack/rfcomm/rfcommstates.cpp	Tue Feb 02 01:12:20 2010 +0200
+++ b/bluetooth/btstack/rfcomm/rfcommstates.cpp	Fri Feb 19 23:56:55 2010 +0200
@@ -1653,6 +1653,13 @@
 	ChangeState(aSAP,CRfcommStateFactory::ECloseOnStart);
 	}
 
+	
+void TRfcommStateWaitForStart::Exit(CRfcommSAP& aSAP)
+	{
+	aSAP.RegisterCodService();
+	}
+
+	
 /******************************************************************/
 /*
   The Close On Start state.
--- a/bluetooth/btstack/rfcomm/rfcommstates.h	Tue Feb 02 01:12:20 2010 +0200
+++ b/bluetooth/btstack/rfcomm/rfcommstates.h	Fri Feb 19 23:56:55 2010 +0200
@@ -520,6 +520,7 @@
 	void DISC(CRfcommSAP& aSAP);
 	void Error(CRfcommSAP& aSAP, TInt aErr,
 				CRfcommSAP::TErrorTypes aType);
+	void Exit(CRfcommSAP& aSAP);
 	};
 
 /**
--- a/bluetooth/btstack/secman/btaccessrequester.cpp	Tue Feb 02 01:12:20 2010 +0200
+++ b/bluetooth/btstack/secman/btaccessrequester.cpp	Fri Feb 19 23:56:55 2010 +0200
@@ -539,7 +539,7 @@
 		
 		// If MITM protection is required by a service, or the device is in paired only connections mode
 		// the require MITM protection.
-		if (iRequirements.MitmProtection() != EMitmNotRequired || iSecMan.ConnectionsManager().IsAcceptPairedOnlyMode())
+		if (iRequirements.MitmProtection() != EMitmNotRequired)
 			{
 			if (iAccessType == EDedicatedBonding)
 				{
--- a/bluetooth/btstack/secman/pairingserver.cpp	Tue Feb 02 01:12:20 2010 +0200
+++ b/bluetooth/btstack/secman/pairingserver.cpp	Fri Feb 19 23:56:55 2010 +0200
@@ -780,6 +780,7 @@
 	iProxySap->SetNotify(this);
 	iProxySap->SetRemName(addr);
 	iProxySap->ActiveOpen();
+	DoAccessRequestL();
 	}
 
 void CDedicatedBondingSession::CleanupStartMessage(TAny* aPtr)
@@ -815,6 +816,7 @@
 			addr.SetBTAddr(iProxySap->RemoteAddress());
 			iProxySap->SetRemName(addr); // triggers finding a link again.
 			iProxySap->ActiveOpen();
+			DoAccessRequestL();
 			break;
 			}
 		// else not deferred so complete now....
@@ -830,6 +832,12 @@
 			err = KErrAccessDenied;
 			}
 		break;
+	case EInitialConnectionPending:
+	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));
@@ -863,11 +871,9 @@
 		{
 	case EInitialConnectionPending:
 		iState = EInitialConnection;
-		DoAccessRequestL();
 		break;
 	case EFinalConnectionPending:
 		iState = EFinalConnection;
-		DoAccessRequestL();
 		break;
 	case EInitialConnection:
 	case EFinalConnection:
--- a/bluetooth/btstack/secman/secman.cpp	Tue Feb 02 01:12:20 2010 +0200
+++ b/bluetooth/btstack/secman/secman.cpp	Fri Feb 19 23:56:55 2010 +0200
@@ -453,34 +453,22 @@
 				oobPresence = EOOBDataPresent;
 				}
 			THCIAuthenticationRequirement authReq = link->AuthenticationRequirement();
-			if(ConnectionsManager().IsAcceptPairedOnlyMode())
+			switch(authReq)
 				{
-				// in paired only mode, only MITM pairings are acceptable.
-				switch(authReq)
-					{
 				case EMitmNotReqNoBonding:
-				case EMitmReqNoBonding:
-					authReq = EMitmReqNoBonding;
-					break;
 				case EMitmNotReqDedicatedBonding:
-				case EMitmReqDedicatedBonding:
-					authReq = EMitmReqDedicatedBonding;
-					break;
 				case EMitmNotReqGeneralBonding:
-				case EMitmReqGeneralBonding:
-					authReq = EMitmReqGeneralBonding;
+					link->SetLocalMITM(EFalse);
 					break;
-	            default:
-	                PANIC(KBTSecPanic, EBTSecUnexpectedIoCapability);
-	                break;
-					}
-				link->SetLocalMITM(ETrue);
+				case EMitmReqNoBonding:
+				case EMitmReqDedicatedBonding:
+				case EMitmReqGeneralBonding:
+					link->SetLocalMITM(ETrue);
+					break;
+				default:
+					PANIC(KBTSecPanic, EBTSecUnexpectedIoCapability);
+					break;    
 				}
-			else
-				{
-				link->SetLocalMITM(EFalse);
-				}
-		
 			TRAP_IGNORE(iCommandController->IOCapabilityRequestReplyL(aAddr, EIOCapsDisplayYesNo, oobPresence, authReq));
 			}
 		else
--- a/bluetoothmgmt/btcommon/bluetooth.txt	Tue Feb 02 01:12:20 2010 +0200
+++ b/bluetoothmgmt/btcommon/bluetooth.txt	Fri Feb 19 23:56:55 2010 +0200
@@ -1,7 +1,7 @@
 # Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
 # This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
+# under the terms of the License "Eclipse Public License v1.0"
 # which accompanies this distribution, and is available
 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
 #
--- a/bluetoothmgmt/btmgr/BTManServer/BTRegistryDB.cpp	Tue Feb 02 01:12:20 2010 +0200
+++ b/bluetoothmgmt/btmgr/BTManServer/BTRegistryDB.cpp	Fri Feb 19 23:56:55 2010 +0200
@@ -1354,7 +1354,12 @@
 	defaultDevice.SetDeviceName(KDefaultLocalName);
 	defaultDevice.SetScanEnable(EPageScanOnly);
 	defaultDevice.SetLimitedDiscoverable(EFalse);
-	defaultDevice.SetDeviceClass(0);
+	
+	// set the default device class to be phone|smartphone
+	// MajorServiceClass set to zero as there are no default service class bits
+	TBTDeviceClass defaultCod (0, EMajorDevicePhone, EMinorDevicePhoneSmartPhone);
+	defaultDevice.SetDeviceClass(defaultCod.DeviceClass());
+	
 	// The registry is being kicked off with a default channel assessment 
 	// mode setting of 'enabled'. This is the default if h/w supports 
 	// channel assessment. If h/w does not support channel assessment,
--- a/bthci/bthci2/CommandsEvents/BWINS/commandseventsU.def	Tue Feb 02 01:12:20 2010 +0200
+++ b/bthci/bthci2/CommandsEvents/BWINS/commandseventsU.def	Fri Feb 19 23:56:55 2010 +0200
@@ -1105,10 +1105,10 @@
 	??0CVendorDebugCommand@@IAE@G@Z @ 1104 NONAME ; CVendorDebugCommand::CVendorDebugCommand(unsigned short)
 	?ConstructL@CVendorDebugCommand@@IAEXXZ @ 1105 NONAME ; void CVendorDebugCommand::ConstructL(void)
 	?Extension_@CVendorDebugCommand@@UAEHIAAPAXPAX@Z @ 1106 NONAME ; int CVendorDebugCommand::Extension_(unsigned int, void * &, void *)
-	?SetCreditsConsumed@CVendorDebugCommand@@IAEXI@Z @ 1107 NONAME ; void CVendorDebugCommand::SetCreditsConsumed(unsigned int)
-	?SetExpectsCommandCompleteEvent@CVendorDebugCommand@@IAEXH@Z @ 1108 NONAME ; void CVendorDebugCommand::SetExpectsCommandCompleteEvent(int)
-	?SetExpectsCommandStatusEvent@CVendorDebugCommand@@IAEXH@Z @ 1109 NONAME ; void CVendorDebugCommand::SetExpectsCommandStatusEvent(int)
-	?SetExpectsCompletingEvent@CVendorDebugCommand@@IAEHH@Z @ 1110 NONAME ; int CVendorDebugCommand::SetExpectsCompletingEvent(int)
+	?SetCreditsConsumed@CVendorDebugCommand@@QAEXI@Z @ 1107  NONAME ; void CVendorDebugCommand::SetCreditsConsumed(unsigned int)
+	?SetExpectsCommandCompleteEvent@CVendorDebugCommand@@QAEXH@Z @ 1108  NONAME ; void CVendorDebugCommand::SetExpectsCommandCompleteEvent(int)
+	?SetExpectsCommandStatusEvent@CVendorDebugCommand@@QAEXH@Z @ 1109  NONAME ; void CVendorDebugCommand::SetExpectsCommandStatusEvent(int)
+	?SetExpectsCompletingEvent@CVendorDebugCommand@@QAEHH@Z @ 1110  NONAME ; int CVendorDebugCommand::SetExpectsCompletingEvent(int)
 	?VendorDebugEvent@TVendorDebugCompleteEvent@@QBE?AVTPtrC8@@XZ @ 1111 NONAME ; class TPtrC8 TVendorDebugCompleteEvent::VendorDebugEvent(void) const
 	?AsNullTerminatedString@THCIEventBase@@IBE?AVTPtrC8@@H@Z @ 1112 NONAME ; class TPtrC8 THCIEventBase::AsNullTerminatedString(int) const
 	??0TNopCompleteEvent@@QAE@ABVTDesC8@@@Z @ 1113 NONAME ; TNopCompleteEvent::TNopCompleteEvent(class TDesC8 const &)
--- a/bthci/bthci2/CommandsEvents/generator/Commands.txt	Tue Feb 02 01:12:20 2010 +0200
+++ b/bthci/bthci2/CommandsEvents/generator/Commands.txt	Fri Feb 19 23:56:55 2010 +0200
@@ -1,7 +1,7 @@
 # Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
 # This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
+# under the terms of the License "Eclipse Public License v1.0"
 # which accompanies this distribution, and is available
 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
 #
--- a/bthci/bthci2/CommandsEvents/generator/CompleteEvents.txt	Tue Feb 02 01:12:20 2010 +0200
+++ b/bthci/bthci2/CommandsEvents/generator/CompleteEvents.txt	Fri Feb 19 23:56:55 2010 +0200
@@ -1,7 +1,7 @@
 # Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
 # This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
+# under the terms of the License "Eclipse Public License v1.0"
 # which accompanies this distribution, and is available
 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
 #
--- a/bthci/bthci2/CommandsEvents/generator/Events.txt	Tue Feb 02 01:12:20 2010 +0200
+++ b/bthci/bthci2/CommandsEvents/generator/Events.txt	Fri Feb 19 23:56:55 2010 +0200
@@ -1,7 +1,7 @@
 # Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
 # This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
+# under the terms of the License "Eclipse Public License v1.0"
 # which accompanies this distribution, and is available
 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
 #
--- a/bthci/bthci2/CommandsEvents/interface/VendorDebugCommand.h	Tue Feb 02 01:12:20 2010 +0200
+++ b/bthci/bthci2/CommandsEvents/interface/VendorDebugCommand.h	Fri Feb 19 23:56:55 2010 +0200
@@ -77,14 +77,14 @@
 	IMPORT_C virtual TInt Extension_(TUint aExtensionId, TAny*& aInterface, TAny* aData);
 	void Match(const THCIEventBase& aEvent, TBool& aMatchesCmd, TBool& aConcludesCmd, TBool& aContinueMatching) const;
 	IMPORT_C void SetMatcher(MVendorDebugCommandMatcher* aMatcher);
+	IMPORT_C void SetCreditsConsumed(TUint aConsumedCredits);
+	IMPORT_C void SetExpectsCommandStatusEvent(TBool aExpectsCmdStatus);
+	IMPORT_C void SetExpectsCommandCompleteEvent(TBool aExpectsCmdComplete);
+	IMPORT_C TInt SetExpectsCompletingEvent(TBool aExpectsCompletingEvent);
 	
 protected:	
 	IMPORT_C CVendorDebugCommand(const TUint16 opcode);
 	IMPORT_C void ConstructL();
-	IMPORT_C void SetCreditsConsumed(TUint aConsumedCredits);
-	IMPORT_C void SetExpectsCommandStatusEvent(TBool aExpectsCmdStatus);
-	IMPORT_C void SetExpectsCommandCompleteEvent(TBool aExpectsCmdComplete);
-	IMPORT_C TInt SetExpectsCompletingEvent(TBool aExpectsCompletingEvent);
 
 private:
 	void Format(CHctlCommandFrame& aCommandFrame) const;
--- a/bthci/hci2implementations/hctls/bcsp/src/hctlbcspcontrollermanager.cpp	Tue Feb 02 01:12:20 2010 +0200
+++ b/bthci/hci2implementations/hctls/bcsp/src/hctlbcspcontrollermanager.cpp	Fri Feb 19 23:56:55 2010 +0200
@@ -190,11 +190,10 @@
 	switch(aState)
 		{
 		case EBTOff:
-			{
-			iHCTLBcsp.WriteBcCmd(iColdHaltCommand); //this should not produce a response
+			{			
 			iPowerDownCallback->CallBack();	//allows asynch callback to BTClient.
 			iCurrentTask = EPowerDown;
-			iControllerManagerState = EWaiting;
+			iControllerManagerState = EResetHardware;
 			iHCTLBcsp.Choke();
 			}
 			break;