--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/multimodetsy/hayes/ATO.CPP Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,171 @@
+// 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:
+// Go to On-Line(data) state from On-Line Command state
+//
+//
+
+#include <commsdattypesv1_1.h>
+#include <cdblen.h>
+#include "ATO.H"
+#include "mSLOGGER.H"
+#include "PHONE.H"
+#include "NOTIFY.H"
+#include "ATIO.H"
+
+CATSetToOnlineDataMode* CATSetToOnlineDataMode::NewL(CATIO* aIo, CTelObject* aTelObject,CATInit* aInit,CPhoneGlobals* aPhoneGlobals)
+ {
+ CATSetToOnlineDataMode* ato=new(ELeave) CATSetToOnlineDataMode(aIo, aTelObject, aInit, aPhoneGlobals);
+ CleanupStack::PushL(ato);
+ ato->ConstructL();
+ CleanupStack::Pop();
+ return ato;
+ }
+
+CATSetToOnlineDataMode::CATSetToOnlineDataMode(CATIO* aIo, CTelObject* aTelObject,CATInit* aInit,CPhoneGlobals* aPhoneGlobals)
+ : CATCallAlterCommands(aIo,aTelObject,aInit,aPhoneGlobals)
+ {}
+
+CATSetToOnlineDataMode::~CATSetToOnlineDataMode()
+ {
+ iIo->RemoveExpectStrings(this);
+ }
+
+void CATSetToOnlineDataMode::Start(TTsyReqHandle aTsyReqHandle, TAny* /*aParams*/)
+ {
+ LOGTEXT(_L8("Starting ATO Command to force into On-Line Data Mode"));
+ iReqHandle=aTsyReqHandle;
+ TBuf8<KCommsDbSvrMaxFieldLength> toOnLineDataCommand;
+ TInt ret = iPhoneGlobals->iConfiguration->ConfigModemString(TPtrC(KCDTypeNameOnLine), toOnLineDataCommand);
+ if (ret)
+ {
+ iTelObject->ReqCompleted(iReqHandle, ret);
+ }
+ else
+ {
+ iTxBuffer.Format(KATAndStringFormatString,&toOnLineDataCommand);
+ iIo->Write(this,iTxBuffer);
+ iIo->SetTimeOut(this,KOneSecondPause);
+ iState=EATOWaitForWriteComplete;
+ }
+ }
+
+void CATSetToOnlineDataMode::Stop(TTsyReqHandle aTsyReqHandle)
+ {
+ __ASSERT_ALWAYS(aTsyReqHandle == iReqHandle,Panic(EIllegalTsyReqHandle));
+ __ASSERT_ALWAYS(iState!=EATNotInProgress,Panic(EATCommand_NotInProgress));
+ iIo->SetTimeOut(this,KOneSecondPause);
+ iState = EATCancelling;
+ }
+
+void CATSetToOnlineDataMode::ValidateExpectStringWithConnectL()
+ {
+ if(iIo->FoundChatString()==iErrorExpectString)
+ {
+ LOGTEXT(_L8("Modem returned ERROR in response to command"));
+ User::Leave(KErrGeneral);
+ }
+ if(iIo->FoundChatString()==iConnectExpectString)
+ return;
+ LOGTEXT(_L8("Modem returned unknown response to command"));
+ User::Leave(KErrGeneral);
+ }
+
+void CATSetToOnlineDataMode::RemoveATOExpectStrings()
+ {
+ iIo->RemoveExpectString(iConnectExpectString);
+ iConnectExpectString=NULL;
+ iIo->RemoveExpectString(iErrorExpectString);
+ iErrorExpectString=NULL;
+ }
+
+void CATSetToOnlineDataMode::CompleteWithIOError(TEventSource /*aSource*/,TInt aStatus)
+ {
+ if (iState!=EATNotInProgress)
+ {
+ iIo->WriteAndTimerCancel(this);
+ iTelObject->ReqCompleted(iReqHandle, aStatus);
+ iState = EATNotInProgress;
+ }
+ }
+
+void CATSetToOnlineDataMode::EventSignal(TEventSource aSource)
+ {
+ if (aSource==ETimeOutCompletion)
+ {
+ LOGTEXT(_L8("Timeout Error during ATO"));
+ RemoveATOExpectStrings();
+ iPhoneGlobals->iPhoneStatus.iInitStatus=EPhoneNotInitialised;
+ iTelObject->ReqCompleted(iReqHandle,KErrTimedOut);
+ iState=EATNotInProgress;
+ return;
+ }
+ switch(iState)
+ {
+ case EATOWaitForWriteComplete:
+ {
+ __ASSERT_ALWAYS(aSource==EWriteCompletion,Panic(EATCommand_IllegalCompletionWriteExpected));
+ if (!iConnectExpectString)
+ {
+ TInt ret = iPhoneGlobals->iConfiguration->ConfigModemString(TPtrC(KCDTypeNameConnect),iConnectString);
+ if (ret)
+ {
+ iTelObject->ReqCompleted(iReqHandle, ret);
+ return;
+ }
+ AppendWildCardChar(iConnectString);
+ iConnectExpectString=iIo->AddExpectString(this,iConnectString);
+ }
+ if (!iErrorExpectString)
+ iErrorExpectString=iIo->AddExpectString(this,KErrorString);
+ iIo->SetTimeOut(this);
+ iState=EATOReadCompleted;
+ }
+ break;
+
+ case EATOReadCompleted:
+ {
+ __ASSERT_ALWAYS(aSource==EReadCompletion,Panic(EATCommand_IllegalCompletionWriteExpected));
+ TRAPD(ret,ValidateExpectStringWithConnectL());
+ Complete(ret,aSource);
+ }
+ break;
+
+ case EATCancelling:
+ {
+ if (aSource==EWriteCompletion)
+ {
+ iIo->SetTimeOut(this,KOneSecondPause);
+ }
+ else
+ {
+ Complete(KErrCancel,aSource);
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+
+void CATSetToOnlineDataMode::Complete(TInt aError,TEventSource aSource)
+ {
+ RemoveATOExpectStrings();
+ iPhoneGlobals->iPhoneStatus.iMode = RPhone::EModeOnlineData;
+ if (aError==KErrNone)
+ iIo->Cancel(); // OK as long as this command is only called from LoanDataPort
+ CATCommands::Complete(aError,aSource);
+ iTelObject->ReqCompleted(iReqHandle, aError);
+ iState=EATNotInProgress;
+ }