telephonyserverplugins/multimodetsy/hayes/ATCONNCT.CPP
branchopencode
changeset 24 6638e7f4bd8f
parent 20 244d7c5f118e
--- a/telephonyserverplugins/multimodetsy/hayes/ATCONNCT.CPP	Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserverplugins/multimodetsy/hayes/ATCONNCT.CPP	Thu May 06 15:10:38 2010 +0100
@@ -1,247 +1,247 @@
-// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-#include <commsdattypesv1_1.h>
-#include "ATCONNCT.H"
-#include "mSLOGGER.H"
-#include "PHONE.H"
-#include "CALL.H"
-#include "ATNOCARR.H"
-#include "NOTIFY.H"
-#include "ATIO.H"
-
-//
-// Connect to already dialled call
-//
-CATConnectData* CATConnectData::NewL(CATIO* aIo, CTelObject* aTelObject,CATInit* aInit,CPhoneGlobals* aPhoneGlobals)
-	{
-	CATConnectData* connect=new(ELeave) CATConnectData(aIo, aTelObject, aInit,aPhoneGlobals);
-	CleanupStack::PushL(connect);
-	connect->ConstructL();
-	CleanupStack::Pop();
-	return connect;
-	}
-
-CATConnectData::CATConnectData(CATIO* aIo, CTelObject* aTelObject,CATInit* aInit,CPhoneGlobals* aPhoneGlobals)
-											: CATDataCallConnectCommands(aIo,aTelObject,aInit,aPhoneGlobals)
-	{}
-
-CATConnectData::~CATConnectData()
-	{}
-
-void CATConnectData::Start(TTsyReqHandle aTsyReqHandle, TAny* aParams)
-	{
-	LOGTEXT(_L8("Starting Connect Command"));
-	iState=EATInitialising;
-	CATDataCallConnectCommands::Start(aTsyReqHandle,aParams);
-	}
-
-void CATConnectData::Stop(TTsyReqHandle aTsyReqHandle)
-//
-//	Send a carriage return to cancel Connect
-//
-	{
-	__ASSERT_ALWAYS(aTsyReqHandle == iReqHandle,Panic(EIllegalTsyReqHandle));
-	__ASSERT_ALWAYS(iState!=EATNotInProgress,Panic(EATCommand_NotInProgress));		
-	LOGTEXT(_L8("Cancelling Connect Command"));
-	RemoveConnectExpectStrings();
-	iIo->WriteAndTimerCancel(this);
-	if (iState!=EATInitialising)
-		{
-		Write(KCarriageReturn(),1);
-		iState = EATCancellingWaitForWriteComplete;
-		iPreConnectState=CATCallConnectCommands::ENotInProgress;	
-		}
-	else
-		{
-		AddStdExpectStrings();
-		iPreConnectState=CATCallConnectCommands::ECancelling;
-		iState = EATNotInProgress;
-		}
-	}
-
-TInt CATConnectData::AddConnectExpectStrings()
-	{
-	TInt ret=AddCommonExpectStrings();
-	if(ret!=KErrNone)
-		return ret;
-
-	if (!iNoDialToneExpectString)
-		{
-		ret=iPhoneGlobals->iConfiguration->ConfigModemString(TPtrC(KCDTypeNameNoDialTone),iNoDialToneString);
-		if(ret!=KErrNone)
-			return ret;
-		iNoDialToneExpectString=iIo->AddExpectString(this,iNoDialToneString);
-		}
-
-	return KErrNone;
-	}	
-
-void CATConnectData::RemoveConnectExpectStrings()
-	{
-	RemoveCommonExpectStrings();
-	iIo->RemoveExpectString(iNoDialToneExpectString);
-	iNoDialToneExpectString=NULL;
-	}
-
-TInt CATConnectData::ValidateConnectExpectString()
-	{
-	const CCommChatString* foundChatString = iIo->FoundChatString();
-
-	if (foundChatString == iConnectExpectString)
-		return KErrNone;
-
-	if (foundChatString == iNoCarrierExpectString)
-		return KErrEtelNoCarrier;
-
-	if (foundChatString == iNoDialToneExpectString)
-		{
-		LOGTEXT(_L8("Modem returned NO DIALTONE in response to dial command"));
-		return KErrEtelNoDialTone;
-		}
-
-	LOGTEXT(_L8("Modem returned unknown response to connect command"));
-	return KErrGeneral;
-	}
-
-void CATConnectData::CompleteWithIOError(TEventSource aSource,TInt aStatus)
-	{
-	if (iState!=EATNotInProgress)
-		{
-		iState = EATNotInProgress;
-		CATCallConnectCommands::CompleteWithIOError(aSource,aStatus);
-		}
-	}
-
-void CATConnectData::EventSignal(TEventSource aSource)
-	{
-	if ((aSource==ETimeOutCompletion)&&(iState!=EATSpeedReadComplete)
-		&&(iState!=EATCancellingReadCompleted)&&(iState!=EATNotInProgress)
-		&&(iPreConnectState!=EATWaitForATCheckOK))
-		{
-		LOGTEXT(_L8("Timeout Error during Connect"));
-		iState = EATNotInProgress;
-		Complete(KErrTimedOut,aSource);
-		return;
-		}
-
-	if (iPreConnectState!=CATCallConnectCommands::EATInitCompleted
-		&& iPreConnectState!=CATCallConnectCommands::ENotInProgress)
-		{
-		CATCallConnectCommands::PreConnectEventSignal(aSource);
-		if (iPreConnectState==CATCallConnectCommands::ENotInProgress)	// cancelled
-			iState=EATNotInProgress;
-		if (iPreConnectState!=CATCallConnectCommands::EATInitCompleted)
-			return;
-		else 
-			iState=EATSendConnectCommand;
-		}
-
-	switch(iState)
-		{
-	case EATSendConnectCommand:
-		{
-		ChangeLineStatus(RCall::EStatusConnecting);
-		// EStatusConnecting always results in KErrNone return
-		(void)ChangeCallStatus(RMobileCall::EStatusConnecting);
-		iPhoneGlobals->iNotificationStore->CheckNotification(REINTERPRET_CAST(CCallBase*,iTelObject),EBegunConnecting);
-		Write(KDialCommand,3);
-		iState=EATConnectWaitForWriteComplete;
-		}
-		break;
-
-	case EATConnectWaitForWriteComplete:
-		{
-		__ASSERT_ALWAYS(aSource==EWriteCompletion,Panic(EATCommand_IllegalCompletionWriteExpected));
-		TInt ret=AddConnectExpectStrings();
-		if (ret)
-			{
-			Complete(ret,aSource);
-			break;
-			}
-		iIo->SetTimeOut(this,(iPhoneGlobals->iPhoneStatus.iWaitForCarrierTime*1000)+KExtraWaitTime);
-		iState=EATConnectReadCompleted;
-		break;
-		}
-
-	case EATConnectReadCompleted:
-		__ASSERT_ALWAYS(aSource==EReadCompletion,Panic(EATCommand_IllegalCompletionReadExpected));
-			{
-			TInt ret=ValidateConnectExpectString();
-			RemoveConnectExpectStrings();
-			if (ret!=KErrNone)
-				{
-				iState = EATNotInProgress;
-				Complete(ret,aSource);
-				}
-			iIo->SetTimeOut(this,KTimeForExtraRxData);
-			iState=EATSpeedReadComplete;
-			}
-		break;
-
-	case EATSpeedReadComplete:
-		{
-		__ASSERT_ALWAYS(aSource==ETimeOutCompletion,Panic(EATCommand_IllegalCompletionWaitExpected));
-		iIo->WriteAndTimerCancel(this);
-		TInt ret=ParseForBearerCapsResponse();
-		iState = EATNotInProgress;
-		if (ret!=KErrNone)
-			{
-			Complete(ret,aSource);
-			break;
-			}
-		ret=ParseForBearerSpeedResponse();
-		Complete(ret,aSource);
-		}
-		break;
-
-	case EATCancellingWaitForWriteComplete:
-		{
-		__ASSERT_ALWAYS(aSource==EWriteCompletion,Panic(EATCommand_IllegalCompletionWriteExpected));
-		TInt ret=AddConnectExpectStrings();
-		if (ret)
-			{
-			Complete(ret,aSource);
-			break;
-			}
-		iIo->SetTimeOut(this);
-		iState=EATCancellingReadCompleted;
-		}
-		break;
-
-	case EATCancellingReadCompleted:
-			{
-			iState = EATNotInProgress;
-			if (aSource==EReadCompletion)
-				{
-				TInt ret=ValidateConnectExpectString();
-				RemoveConnectExpectStrings();
-				if (ret==KErrNone)
-					{
-					Complete(KErrNone,aSource);	// Has connected despite sending CR
-					return;
-					}
-				}
-			RemoveConnectExpectStrings();
-			Complete(KErrCancel,aSource);
-			}
-		break;
-		
-	default:
-		;
-		}
-	}
-
-
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <commsdattypesv1_1.h>
+#include "ATCONNCT.H"
+#include "mSLOGGER.H"
+#include "PHONE.H"
+#include "CALL.H"
+#include "ATNOCARR.H"
+#include "NOTIFY.H"
+#include "ATIO.H"
+
+//
+// Connect to already dialled call
+//
+CATConnectData* CATConnectData::NewL(CATIO* aIo, CTelObject* aTelObject,CATInit* aInit,CPhoneGlobals* aPhoneGlobals)
+	{
+	CATConnectData* connect=new(ELeave) CATConnectData(aIo, aTelObject, aInit,aPhoneGlobals);
+	CleanupStack::PushL(connect);
+	connect->ConstructL();
+	CleanupStack::Pop();
+	return connect;
+	}
+
+CATConnectData::CATConnectData(CATIO* aIo, CTelObject* aTelObject,CATInit* aInit,CPhoneGlobals* aPhoneGlobals)
+											: CATDataCallConnectCommands(aIo,aTelObject,aInit,aPhoneGlobals)
+	{}
+
+CATConnectData::~CATConnectData()
+	{}
+
+void CATConnectData::Start(TTsyReqHandle aTsyReqHandle, TAny* aParams)
+	{
+	LOGTEXT(_L8("Starting Connect Command"));
+	iState=EATInitialising;
+	CATDataCallConnectCommands::Start(aTsyReqHandle,aParams);
+	}
+
+void CATConnectData::Stop(TTsyReqHandle aTsyReqHandle)
+//
+//	Send a carriage return to cancel Connect
+//
+	{
+	__ASSERT_ALWAYS(aTsyReqHandle == iReqHandle,Panic(EIllegalTsyReqHandle));
+	__ASSERT_ALWAYS(iState!=EATNotInProgress,Panic(EATCommand_NotInProgress));		
+	LOGTEXT(_L8("Cancelling Connect Command"));
+	RemoveConnectExpectStrings();
+	iIo->WriteAndTimerCancel(this);
+	if (iState!=EATInitialising)
+		{
+		Write(KCarriageReturn(),1);
+		iState = EATCancellingWaitForWriteComplete;
+		iPreConnectState=CATCallConnectCommands::ENotInProgress;	
+		}
+	else
+		{
+		AddStdExpectStrings();
+		iPreConnectState=CATCallConnectCommands::ECancelling;
+		iState = EATNotInProgress;
+		}
+	}
+
+TInt CATConnectData::AddConnectExpectStrings()
+	{
+	TInt ret=AddCommonExpectStrings();
+	if(ret!=KErrNone)
+		return ret;
+
+	if (!iNoDialToneExpectString)
+		{
+		ret=iPhoneGlobals->iConfiguration->ConfigModemString(TPtrC(KCDTypeNameNoDialTone),iNoDialToneString);
+		if(ret!=KErrNone)
+			return ret;
+		iNoDialToneExpectString=iIo->AddExpectString(this,iNoDialToneString);
+		}
+
+	return KErrNone;
+	}	
+
+void CATConnectData::RemoveConnectExpectStrings()
+	{
+	RemoveCommonExpectStrings();
+	iIo->RemoveExpectString(iNoDialToneExpectString);
+	iNoDialToneExpectString=NULL;
+	}
+
+TInt CATConnectData::ValidateConnectExpectString()
+	{
+	const CCommChatString* foundChatString = iIo->FoundChatString();
+
+	if (foundChatString == iConnectExpectString)
+		return KErrNone;
+
+	if (foundChatString == iNoCarrierExpectString)
+		return KErrEtelNoCarrier;
+
+	if (foundChatString == iNoDialToneExpectString)
+		{
+		LOGTEXT(_L8("Modem returned NO DIALTONE in response to dial command"));
+		return KErrEtelNoDialTone;
+		}
+
+	LOGTEXT(_L8("Modem returned unknown response to connect command"));
+	return KErrGeneral;
+	}
+
+void CATConnectData::CompleteWithIOError(TEventSource aSource,TInt aStatus)
+	{
+	if (iState!=EATNotInProgress)
+		{
+		iState = EATNotInProgress;
+		CATCallConnectCommands::CompleteWithIOError(aSource,aStatus);
+		}
+	}
+
+void CATConnectData::EventSignal(TEventSource aSource)
+	{
+	if ((aSource==ETimeOutCompletion)&&(iState!=EATSpeedReadComplete)
+		&&(iState!=EATCancellingReadCompleted)&&(iState!=EATNotInProgress)
+		&&(iPreConnectState!=EATWaitForATCheckOK))
+		{
+		LOGTEXT(_L8("Timeout Error during Connect"));
+		iState = EATNotInProgress;
+		Complete(KErrTimedOut,aSource);
+		return;
+		}
+
+	if (iPreConnectState!=CATCallConnectCommands::EATInitCompleted
+		&& iPreConnectState!=CATCallConnectCommands::ENotInProgress)
+		{
+		CATCallConnectCommands::PreConnectEventSignal(aSource);
+		if (iPreConnectState==CATCallConnectCommands::ENotInProgress)	// cancelled
+			iState=EATNotInProgress;
+		if (iPreConnectState!=CATCallConnectCommands::EATInitCompleted)
+			return;
+		else 
+			iState=EATSendConnectCommand;
+		}
+
+	switch(iState)
+		{
+	case EATSendConnectCommand:
+		{
+		ChangeLineStatus(RCall::EStatusConnecting);
+		// EStatusConnecting always results in KErrNone return
+		(void)ChangeCallStatus(RMobileCall::EStatusConnecting);
+		iPhoneGlobals->iNotificationStore->CheckNotification(REINTERPRET_CAST(CCallBase*,iTelObject),EBegunConnecting);
+		Write(KDialCommand,3);
+		iState=EATConnectWaitForWriteComplete;
+		}
+		break;
+
+	case EATConnectWaitForWriteComplete:
+		{
+		__ASSERT_ALWAYS(aSource==EWriteCompletion,Panic(EATCommand_IllegalCompletionWriteExpected));
+		TInt ret=AddConnectExpectStrings();
+		if (ret)
+			{
+			Complete(ret,aSource);
+			break;
+			}
+		iIo->SetTimeOut(this,(iPhoneGlobals->iPhoneStatus.iWaitForCarrierTime*1000)+KExtraWaitTime);
+		iState=EATConnectReadCompleted;
+		break;
+		}
+
+	case EATConnectReadCompleted:
+		__ASSERT_ALWAYS(aSource==EReadCompletion,Panic(EATCommand_IllegalCompletionReadExpected));
+			{
+			TInt ret=ValidateConnectExpectString();
+			RemoveConnectExpectStrings();
+			if (ret!=KErrNone)
+				{
+				iState = EATNotInProgress;
+				Complete(ret,aSource);
+				}
+			iIo->SetTimeOut(this,KTimeForExtraRxData);
+			iState=EATSpeedReadComplete;
+			}
+		break;
+
+	case EATSpeedReadComplete:
+		{
+		__ASSERT_ALWAYS(aSource==ETimeOutCompletion,Panic(EATCommand_IllegalCompletionWaitExpected));
+		iIo->WriteAndTimerCancel(this);
+		TInt ret=ParseForBearerCapsResponse();
+		iState = EATNotInProgress;
+		if (ret!=KErrNone)
+			{
+			Complete(ret,aSource);
+			break;
+			}
+		ret=ParseForBearerSpeedResponse();
+		Complete(ret,aSource);
+		}
+		break;
+
+	case EATCancellingWaitForWriteComplete:
+		{
+		__ASSERT_ALWAYS(aSource==EWriteCompletion,Panic(EATCommand_IllegalCompletionWriteExpected));
+		TInt ret=AddConnectExpectStrings();
+		if (ret)
+			{
+			Complete(ret,aSource);
+			break;
+			}
+		iIo->SetTimeOut(this);
+		iState=EATCancellingReadCompleted;
+		}
+		break;
+
+	case EATCancellingReadCompleted:
+			{
+			iState = EATNotInProgress;
+			if (aSource==EReadCompletion)
+				{
+				TInt ret=ValidateConnectExpectString();
+				RemoveConnectExpectStrings();
+				if (ret==KErrNone)
+					{
+					Complete(KErrNone,aSource);	// Has connected despite sending CR
+					return;
+					}
+				}
+			RemoveConnectExpectStrings();
+			Complete(KErrCancel,aSource);
+			}
+		break;
+		
+	default:
+		;
+		}
+	}
+
+