diff -r 6b1d113cdff3 -r 6638e7f4bd8f telephonyprotocols/csdagt/src/ND_SCR.CPP --- a/telephonyprotocols/csdagt/src/ND_SCR.CPP Mon May 03 13:37:20 2010 +0300 +++ b/telephonyprotocols/csdagt/src/ND_SCR.CPP Thu May 06 15:10:38 2010 +0100 @@ -1,516 +1,516 @@ -// Copyright (c) 2003-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: -// Script Control definitions -// -// - -/** - @file Nd_scr.cpp -*/ - -#include "ND_SCR.H" -#include "ND_STD.H" -#include "SLOGGER.H" -#include "SSCREXEC.H" -#include "ND_DBACC.H" - - -_LIT(KLoginNameVar,"login_name$"); -_LIT(KLoginPassVar,"login_pass$"); -_LIT(KLoginIpaddrVar,"login_ipaddr$"); - -// CNetDialScript definitions - -CNetDialScript* CNetDialScript::NewL(CCommsDbNetDialAccess* aDb,CDialogProcessor* aDlgPrc,RCall::TCommPort& aCommPort,TCommRole aRole,TInt aLength) -/** -2 phased constructor for CNetDialScript, first phase. - -@param aDb a pointer to CommDB accessor. -@param aDlgPrc a pointer to dialog processor. -@param aCommPort is loaned COMM port from ETel server. -@param aLength is lenght for used script. -@exception Leaves if ConstructL() leaves, or not enough memory is available. -@return a new CNetDialScript object. -*/ - { - CNetDialScript* r=new(ELeave) CNetDialScript(aDb,aDlgPrc,aLength); - CleanupStack::PushL(r); - r->ConstructL(aCommPort,aRole); - CleanupStack::Pop(); - return r; - } - -CNetDialScript::CNetDialScript(CCommsDbNetDialAccess* aDb,CDialogProcessor* aDlgPrc,TInt aLength) - : CActive(EPriorityStandard), iState(EIdle), iDb(aDb), iDlgPrc(aDlgPrc), iUsePct(EFalse), iLength(aLength) -/** -Private constructor for CNetDialScript, used in the first phase of construction. - -@param aDb a pointer to CommDB accessor. -@param aDlgPrc is pointer to dialog processor. -@param aLength is length of the used script. -*/ - {} - -void CNetDialScript::ConstructL(RCall::TCommPort& aCommPort,TCommRole aRole) -/** -Instantiate Member variable. -Add this object into active scheduler. -Create script executor. - -@param aCommPort a loaned COMM port from ETel server. -@exception Leaves if CScriptExecutor::NewL() leaves. -*/ - { - CActiveScheduler::Add(this); - iScriptExecutor=CScriptExecutor::NewL(this,aCommPort.iPort,iLength); - (void) aRole; - GetBcaStack(); - GetIapIdL(); - } - -CNetDialScript::~CNetDialScript() -/** -Destructor. -Cancel active requests. -If script executor is used, call Disconnect() to close it. -Delete script executor. -*/ - { - Cancel(); - if(iScriptExecutor!=NULL) - iScriptExecutor->Disconnect(); - delete iScriptExecutor; - } - -void CNetDialScript::ReConfigureAndCancelCommPort(TRequestStatus& aStatus) -/** -Request script executor to reconfigure COMM port. -*/ - { - iScriptExecutor->ReConfigureAndCancelCommPort(aStatus); - } - -void CNetDialScript::DropSignals(TRequestStatus& aStatus) -/** -Request script executor to Drop signals on COMM port. -*/ - { - iScriptExecutor->DropSignals(aStatus); - } - -void CNetDialScript::GetBcaStack() - { - TRAPD(ret, iDb->GetBcaStackL(iBcaStack);); - if (ret != KErrNone || iBcaStack.Length() == 0) //Well it looks like there was not BcaStack therefore - { - _LIT(KDefaultBcaStack, "c32bca"); - iBcaStack.Copy(KDefaultBcaStack()); - } - } - -void CNetDialScript::GetIapIdL() - { - TInt iapOrError = iDb->GetIapId(); - if (iapOrError == 0) - { - User::Leave(KErrNetDialDatabaseDefaultUndefined); - } - else - if (iapOrError > 0) - { - iIapId = iapOrError; - } - else - { - User::Leave(iapOrError); - } - } - -void CNetDialScript::CreateChannel(TRequestStatus& aStatus) - { - ASSERT(iScriptExecutor); - iScriptExecutor->CreateChannel(aStatus); - } - -void CNetDialScript::CancelCreateChannel() - { - ASSERT(iScriptExecutor); - iScriptExecutor->CancelCreateChannel(); - } - -void CNetDialScript::ShutdownChannel(TRequestStatus& aStatus) - { - ASSERT(iScriptExecutor); - iScriptExecutor->ShutdownChannel(aStatus); - } - - -void CNetDialScript::Scan(MNetDialScriptObserver& aObserver) -/** -Starts script scanning. -Scan is synchronous, so just go straight to the RunL() and do it. - -@param aObserver a reference to script observer. -*/ - { - __ASSERT_DEBUG(iLength>0, NetDialPanic(EZeroLengthScript)); - __ASSERT_DEBUG(iState==EIdle, User::Invariant()); - - iCurrentObserver=&aObserver; - iStatus=KRequestPending; - SetActive(); - iState=EScanScript; - ScriptOperationComplete(KErrNone); - } - -TBool CNetDialScript::GetLoginParamsL(MNetDialScriptObserver& aObserver, TBool aIsReconnect) -/** -Get login parameters. Assumes that there is a non-zero length script. -Check from CommDB accessor if login dialog is shown, what are the login name and password and IP address. -If the login params are in script, do not request them from user. -If dialog is used, get login parameters from dialog processor, set object active and return EFalse. -Else set state idle and return ETrue as login params should - -@param aObserver a reference to login observer. -@return EFalse if the request is not complete and ETrue if the request is already complete. -@exception Leaves if GetLoginParamsL() leaves, panics if script length is zero or iState is not idle. -*/ - { - __ASSERT_DEBUG(iLength>0, NetDialPanic(EZeroLengthScript)); - __ASSERT_DEBUG(iState==EIdle, User::Invariant()); - - iCurrentObserver=&aObserver; - iDb->GetLoginParamsL(iUseLoginDialog,iLoginName,iLoginPass,iIPAddress); - if (iScriptExecutor->ReadFound()) - iUseLoginDialog=EFalse; // don't use prompt for password there is a READ command - if (iUseLoginDialog) - { - iDlgPrc->Login(*this,iLoginName,iLoginPass,aIsReconnect); - iStatus=KRequestPending; - SetActive(); - iState=EGetLogin; - return EFalse; - } - else - { - iState=EIdle; - return ETrue; - } - } - -void CNetDialScript::ExecuteL(MNetDialScriptObserver& aObserver) -/** -Set up login script variables and execute script (will be valid if called). -Get script from CommDB accessor and set it for script executor. -Get login name, password and IP address from CommDB. -If PCT is used, call OpenPct(), call DestroyPctNotification() to end notifications and set login params for script executor. -Call RunScript() to start the script. -Set object active and iState to EExecute. - -@param aObserver a reference to script observer. -@exception Leaves if GetAndSetScriptL() or SetLoginVarsL() leaves, panics if script length is zero or iState is not idle. -*/ - { - __ASSERT_DEBUG(iLength>0, NetDialPanic(EZeroLengthScript)); - __ASSERT_DEBUG(iState==EIdle, User::Invariant()); - - iCurrentObserver=&aObserver; - GetAndSetScriptL(); - SetLoginVarsL(); - if (iUsePct) - { - User::LeaveIfError(OpenPct()); - DestroyPctNotification(); - iScriptExecutor->SetLoginParams(iLoginName,iLoginPass); // required for test dialog server - } - iScriptExecutor->RunScript(); - iStatus=KRequestPending; - SetActive(); - iState=EExecute; - } - -void CNetDialScript::CloseScript() -/** -Close script. -Call CloseScript() from script executor. -*/ - { - iScriptExecutor->CloseScript(); - } - -void CNetDialScript::CleanupScript() -/** -Cleanup script. -Call Close() from script executor. -*/ - { - iScriptExecutor->Close(); - } - -void CNetDialScript::ScriptOperationComplete(TInt aError) -/** -Completes script request. -*/ - { - TRequestStatus* statusPtr=&iStatus; - User::RequestComplete(statusPtr,aError); - } - -void CNetDialScript::ConfigureCommPort(TRequestStatus& aStatus, const TCommConfig& aConfig) -/** -Configures COMM port. -Call ConfigureCommPort() from script executor. - -@param aConfig a reference to COMM port. -@return error code for configuration. -*/ - { - iScriptExecutor->ConfigureCommPort(aStatus, aConfig); - } - -void CNetDialScript::CancelConfigureCommPort() -/** -Cancels Configures COMM port. -Call CancelConfigureCommPort() from script executor. -*/ - { - iScriptExecutor->CancelConfigureCommPort(); - } - - -TInt CNetDialScript::GetExcessData(TDes8& aBuffer) -/** -Get excess data. -Call GetExcessData() from script executor. - -@param aBuffer a reference for excess data. -@return error code for GetExcessData() request. -*/ - { - return iScriptExecutor->GetExcessData(aBuffer); - } - -void CNetDialScript::DropDTR(TRequestStatus* aStatusPtr) -/** -Drop DTR. -Call DropDTR() from script executor. -*/ - { - iScriptExecutor->DropDTR(aStatusPtr); - } - - -TInt CNetDialScript::OpenPct() -/** -Open PCT. -Call OpenPct() from dialog processor. - -@return error code for OpenPct() request. -*/ - { - __FLOG_STMT(_LIT8(logString,"NetDial:\tOpening PCT");) - __FLOG_STATIC(KNetDialLogFolder(),KNetDialLogFile(),logString()); - - const TInt ret = iDlgPrc->OpenPct(); - if (ret == KErrNone) - iPctOpen = ETrue; - return ret; - } - -void CNetDialScript::DestroyPctNotification() -/** -Destroy PCT notification. -Call DestroyPctNotification() from dialog processor. -*/ - { - __FLOG_STMT(_LIT8(logString,"NetDial:\tRequesting Destroy PCT Notification");) - __FLOG_STATIC(KNetDialLogFolder(),KNetDialLogFile(),logString()); - - iDlgPrc->DestroyPctNotification(*this); - } - -TInt CNetDialScript::WritePct(TDes& aBuffer) -/** -Write incoming data into PCT. - -@param aBuffer a reference for incoming data. -@return error code for WritePct() request. -*/ - { - __FLOG_STMT(_LIT8(logString,"NetDial:\tWriting To PCT");) - __FLOG_STATIC(KNetDialLogFolder(),KNetDialLogFile(),logString()); - - return iDlgPrc->WritePct(aBuffer); - } - -void CNetDialScript::ReadPct(TDes& aBuffer) -/** -Read data from PCT. - -@param aBuffer a reference for read data. -*/ - { - __FLOG_STMT(_LIT8(logString,"NetDial:\tReading From PCT");) - __FLOG_STATIC(KNetDialLogFolder(),KNetDialLogFile(),logString()); - - iDlgPrc->ReadPct(*this,aBuffer); - } - -void CNetDialScript::ClosePct() -/** -Close PCT. -If PCT is open, call ClosePct() from dialog processor -*/ - { - if (iPctOpen) - { - __FLOG_STMT(_LIT8(logString,"NetDial:\tClosing PCT");) - __FLOG_STATIC(KNetDialLogFolder(),KNetDialLogFile(),logString()); - - iDlgPrc->ClosePct(); - iPctOpen = EFalse; - iUsePct = EFalse; - } - } - -void CNetDialScript::CancelDialogServer() -/** -Cancel requests. -Call CancelEverything() from dialog processor. -*/ - { - iDlgPrc->CancelEverything(); - } - -void CNetDialScript::MDPOLoginComplete(TInt aError) -/** -Login complete. -Complete request with aError. - -@param aError a error code for completition. -*/ - { - TRequestStatus* statusPtr=&iStatus; - User::RequestComplete(statusPtr,aError); - } - -void CNetDialScript::MDPOReadPctComplete(TInt aError) -/** -PCT read complete. -Call ReadPctComplete() from script executor with aError to complete the ReadPct() request. - -@param aError a error code for completition. -*/ - { - __FLOG_STMT(_LIT8(logString,"NetDial:\tRead PCT Complete with Error %d");) - __FLOG_STATIC1(KNetDialLogFolder(),KNetDialLogFile(),TRefByValue(logString()),aError); - iScriptExecutor->ReadPctComplete(aError); - } -void CNetDialScript::MDPODestroyPctComplete(TInt aError) -/** -Destroy PCT complete. -Call DestroyPctNotificationReceived() from script executor with aError to complete the DestroyPctNotification() request. - -@param aError a error code for completition. -*/ - { - __FLOG_STMT(_LIT8(logString,"NetDial:\tDestroy PCT Notification Complete with Error %d");) - __FLOG_STATIC1(KNetDialLogFolder(),KNetDialLogFile(),TRefByValue(logString()),aError); - - iScriptExecutor->DestroyPctNotificationReceived(aError); - } - -void CNetDialScript::RunL() -/** -RunL - Request completed. -If iState is EScanScript, call DoScanScriptL() and trap error. -Else copy iStatus.Int() into ret variable. -Call ScriptFunctionComplete() with ret from current observer. -Set state to EIdle. -*/ - { - __ASSERT_DEBUG(iCurrentObserver!=NULL, User::Invariant()); - __ASSERT_DEBUG(((iState==EScanScript) || (iState==EExecute) || (iState==EGetLogin)), User::Invariant()); - - TInt ret=KErrNone; - if (iState==EScanScript) - { - TRAP(ret,DoScanScriptL()); - } - else - { - ret=iStatus.Int(); - } - - iCurrentObserver->ScriptFunctionComplete(ret); - iState=EIdle; - } - -void CNetDialScript::DoCancel() -/** -Cancels active requests. -Call Cancel() from script executor. -If request is pending, call ScriptFunctionComplete() with KErrCancel from current observer. -*/ - { - iScriptExecutor->Cancel(); - if(iStatus==KRequestPending) - { - iCurrentObserver->ScriptFunctionComplete(KErrCancel); - } - } - -void CNetDialScript::DoScanScriptL() -/** -Scan the script for a READ command. -Call GetUsePctL() from CommDB accessor to find out if PCT is used. -Call GetAndSetScript() to get script from CommDB accessor and set it for script executor. -Call ScanScriptL() from script executor to start scanning. -If PCT is not used and ReadFound() returns ETrue, set iUsePct to ETrue. -We need to know if there is a READ whether or not the PCT flag is set to see if we need the login dialog. - -@exception Leaves if GetUsePctL(), GetAndSetScriptL() or ScanScriptL() leaves. -*/ - { - iDb->GetUsePctL(iUsePct); - GetAndSetScriptL(); - iScriptExecutor->ScanScriptL(); - if (!iUsePct && iScriptExecutor->ReadFound()) - iUsePct = ETrue; - } - -void CNetDialScript::GetAndSetScriptL() -/** -Get script from database and set script in script executor. -*/ - { - if (!iScriptExecutor->IsScriptSet()) - { - HBufC* buffer=iDb->GetScriptLC(); - TPtr script(buffer->Des()); - iScriptExecutor->SetScript(script); - CleanupStack::PopAndDestroy(); - } - } - -void CNetDialScript::SetLoginVarsL() -/** -Set up values read from the database as variables. -*/ - { - iScriptExecutor->SetVariableL(KLoginNameVar,iLoginName); - iScriptExecutor->SetVariableL(KLoginPassVar,iLoginPass); - iScriptExecutor->SetVariableL(KLoginIpaddrVar,iIPAddress); - } - +// Copyright (c) 2003-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: +// Script Control definitions +// +// + +/** + @file Nd_scr.cpp +*/ + +#include "ND_SCR.H" +#include "ND_STD.H" +#include "SLOGGER.H" +#include "SSCREXEC.H" +#include "ND_DBACC.H" + + +_LIT(KLoginNameVar,"login_name$"); +_LIT(KLoginPassVar,"login_pass$"); +_LIT(KLoginIpaddrVar,"login_ipaddr$"); + +// CNetDialScript definitions + +CNetDialScript* CNetDialScript::NewL(CCommsDbNetDialAccess* aDb,CDialogProcessor* aDlgPrc,RCall::TCommPort& aCommPort,TCommRole aRole,TInt aLength) +/** +2 phased constructor for CNetDialScript, first phase. + +@param aDb a pointer to CommDB accessor. +@param aDlgPrc a pointer to dialog processor. +@param aCommPort is loaned COMM port from ETel server. +@param aLength is lenght for used script. +@exception Leaves if ConstructL() leaves, or not enough memory is available. +@return a new CNetDialScript object. +*/ + { + CNetDialScript* r=new(ELeave) CNetDialScript(aDb,aDlgPrc,aLength); + CleanupStack::PushL(r); + r->ConstructL(aCommPort,aRole); + CleanupStack::Pop(); + return r; + } + +CNetDialScript::CNetDialScript(CCommsDbNetDialAccess* aDb,CDialogProcessor* aDlgPrc,TInt aLength) + : CActive(EPriorityStandard), iState(EIdle), iDb(aDb), iDlgPrc(aDlgPrc), iUsePct(EFalse), iLength(aLength) +/** +Private constructor for CNetDialScript, used in the first phase of construction. + +@param aDb a pointer to CommDB accessor. +@param aDlgPrc is pointer to dialog processor. +@param aLength is length of the used script. +*/ + {} + +void CNetDialScript::ConstructL(RCall::TCommPort& aCommPort,TCommRole aRole) +/** +Instantiate Member variable. +Add this object into active scheduler. +Create script executor. + +@param aCommPort a loaned COMM port from ETel server. +@exception Leaves if CScriptExecutor::NewL() leaves. +*/ + { + CActiveScheduler::Add(this); + iScriptExecutor=CScriptExecutor::NewL(this,aCommPort.iPort,iLength); + (void) aRole; + GetBcaStack(); + GetIapIdL(); + } + +CNetDialScript::~CNetDialScript() +/** +Destructor. +Cancel active requests. +If script executor is used, call Disconnect() to close it. +Delete script executor. +*/ + { + Cancel(); + if(iScriptExecutor!=NULL) + iScriptExecutor->Disconnect(); + delete iScriptExecutor; + } + +void CNetDialScript::ReConfigureAndCancelCommPort(TRequestStatus& aStatus) +/** +Request script executor to reconfigure COMM port. +*/ + { + iScriptExecutor->ReConfigureAndCancelCommPort(aStatus); + } + +void CNetDialScript::DropSignals(TRequestStatus& aStatus) +/** +Request script executor to Drop signals on COMM port. +*/ + { + iScriptExecutor->DropSignals(aStatus); + } + +void CNetDialScript::GetBcaStack() + { + TRAPD(ret, iDb->GetBcaStackL(iBcaStack);); + if (ret != KErrNone || iBcaStack.Length() == 0) //Well it looks like there was not BcaStack therefore + { + _LIT(KDefaultBcaStack, "c32bca"); + iBcaStack.Copy(KDefaultBcaStack()); + } + } + +void CNetDialScript::GetIapIdL() + { + TInt iapOrError = iDb->GetIapId(); + if (iapOrError == 0) + { + User::Leave(KErrNetDialDatabaseDefaultUndefined); + } + else + if (iapOrError > 0) + { + iIapId = iapOrError; + } + else + { + User::Leave(iapOrError); + } + } + +void CNetDialScript::CreateChannel(TRequestStatus& aStatus) + { + ASSERT(iScriptExecutor); + iScriptExecutor->CreateChannel(aStatus); + } + +void CNetDialScript::CancelCreateChannel() + { + ASSERT(iScriptExecutor); + iScriptExecutor->CancelCreateChannel(); + } + +void CNetDialScript::ShutdownChannel(TRequestStatus& aStatus) + { + ASSERT(iScriptExecutor); + iScriptExecutor->ShutdownChannel(aStatus); + } + + +void CNetDialScript::Scan(MNetDialScriptObserver& aObserver) +/** +Starts script scanning. +Scan is synchronous, so just go straight to the RunL() and do it. + +@param aObserver a reference to script observer. +*/ + { + __ASSERT_DEBUG(iLength>0, NetDialPanic(EZeroLengthScript)); + __ASSERT_DEBUG(iState==EIdle, User::Invariant()); + + iCurrentObserver=&aObserver; + iStatus=KRequestPending; + SetActive(); + iState=EScanScript; + ScriptOperationComplete(KErrNone); + } + +TBool CNetDialScript::GetLoginParamsL(MNetDialScriptObserver& aObserver, TBool aIsReconnect) +/** +Get login parameters. Assumes that there is a non-zero length script. +Check from CommDB accessor if login dialog is shown, what are the login name and password and IP address. +If the login params are in script, do not request them from user. +If dialog is used, get login parameters from dialog processor, set object active and return EFalse. +Else set state idle and return ETrue as login params should + +@param aObserver a reference to login observer. +@return EFalse if the request is not complete and ETrue if the request is already complete. +@exception Leaves if GetLoginParamsL() leaves, panics if script length is zero or iState is not idle. +*/ + { + __ASSERT_DEBUG(iLength>0, NetDialPanic(EZeroLengthScript)); + __ASSERT_DEBUG(iState==EIdle, User::Invariant()); + + iCurrentObserver=&aObserver; + iDb->GetLoginParamsL(iUseLoginDialog,iLoginName,iLoginPass,iIPAddress); + if (iScriptExecutor->ReadFound()) + iUseLoginDialog=EFalse; // don't use prompt for password there is a READ command + if (iUseLoginDialog) + { + iDlgPrc->Login(*this,iLoginName,iLoginPass,aIsReconnect); + iStatus=KRequestPending; + SetActive(); + iState=EGetLogin; + return EFalse; + } + else + { + iState=EIdle; + return ETrue; + } + } + +void CNetDialScript::ExecuteL(MNetDialScriptObserver& aObserver) +/** +Set up login script variables and execute script (will be valid if called). +Get script from CommDB accessor and set it for script executor. +Get login name, password and IP address from CommDB. +If PCT is used, call OpenPct(), call DestroyPctNotification() to end notifications and set login params for script executor. +Call RunScript() to start the script. +Set object active and iState to EExecute. + +@param aObserver a reference to script observer. +@exception Leaves if GetAndSetScriptL() or SetLoginVarsL() leaves, panics if script length is zero or iState is not idle. +*/ + { + __ASSERT_DEBUG(iLength>0, NetDialPanic(EZeroLengthScript)); + __ASSERT_DEBUG(iState==EIdle, User::Invariant()); + + iCurrentObserver=&aObserver; + GetAndSetScriptL(); + SetLoginVarsL(); + if (iUsePct) + { + User::LeaveIfError(OpenPct()); + DestroyPctNotification(); + iScriptExecutor->SetLoginParams(iLoginName,iLoginPass); // required for test dialog server + } + iScriptExecutor->RunScript(); + iStatus=KRequestPending; + SetActive(); + iState=EExecute; + } + +void CNetDialScript::CloseScript() +/** +Close script. +Call CloseScript() from script executor. +*/ + { + iScriptExecutor->CloseScript(); + } + +void CNetDialScript::CleanupScript() +/** +Cleanup script. +Call Close() from script executor. +*/ + { + iScriptExecutor->Close(); + } + +void CNetDialScript::ScriptOperationComplete(TInt aError) +/** +Completes script request. +*/ + { + TRequestStatus* statusPtr=&iStatus; + User::RequestComplete(statusPtr,aError); + } + +void CNetDialScript::ConfigureCommPort(TRequestStatus& aStatus, const TCommConfig& aConfig) +/** +Configures COMM port. +Call ConfigureCommPort() from script executor. + +@param aConfig a reference to COMM port. +@return error code for configuration. +*/ + { + iScriptExecutor->ConfigureCommPort(aStatus, aConfig); + } + +void CNetDialScript::CancelConfigureCommPort() +/** +Cancels Configures COMM port. +Call CancelConfigureCommPort() from script executor. +*/ + { + iScriptExecutor->CancelConfigureCommPort(); + } + + +TInt CNetDialScript::GetExcessData(TDes8& aBuffer) +/** +Get excess data. +Call GetExcessData() from script executor. + +@param aBuffer a reference for excess data. +@return error code for GetExcessData() request. +*/ + { + return iScriptExecutor->GetExcessData(aBuffer); + } + +void CNetDialScript::DropDTR(TRequestStatus* aStatusPtr) +/** +Drop DTR. +Call DropDTR() from script executor. +*/ + { + iScriptExecutor->DropDTR(aStatusPtr); + } + + +TInt CNetDialScript::OpenPct() +/** +Open PCT. +Call OpenPct() from dialog processor. + +@return error code for OpenPct() request. +*/ + { + __FLOG_STMT(_LIT8(logString,"NetDial:\tOpening PCT");) + __FLOG_STATIC(KNetDialLogFolder(),KNetDialLogFile(),logString()); + + const TInt ret = iDlgPrc->OpenPct(); + if (ret == KErrNone) + iPctOpen = ETrue; + return ret; + } + +void CNetDialScript::DestroyPctNotification() +/** +Destroy PCT notification. +Call DestroyPctNotification() from dialog processor. +*/ + { + __FLOG_STMT(_LIT8(logString,"NetDial:\tRequesting Destroy PCT Notification");) + __FLOG_STATIC(KNetDialLogFolder(),KNetDialLogFile(),logString()); + + iDlgPrc->DestroyPctNotification(*this); + } + +TInt CNetDialScript::WritePct(TDes& aBuffer) +/** +Write incoming data into PCT. + +@param aBuffer a reference for incoming data. +@return error code for WritePct() request. +*/ + { + __FLOG_STMT(_LIT8(logString,"NetDial:\tWriting To PCT");) + __FLOG_STATIC(KNetDialLogFolder(),KNetDialLogFile(),logString()); + + return iDlgPrc->WritePct(aBuffer); + } + +void CNetDialScript::ReadPct(TDes& aBuffer) +/** +Read data from PCT. + +@param aBuffer a reference for read data. +*/ + { + __FLOG_STMT(_LIT8(logString,"NetDial:\tReading From PCT");) + __FLOG_STATIC(KNetDialLogFolder(),KNetDialLogFile(),logString()); + + iDlgPrc->ReadPct(*this,aBuffer); + } + +void CNetDialScript::ClosePct() +/** +Close PCT. +If PCT is open, call ClosePct() from dialog processor +*/ + { + if (iPctOpen) + { + __FLOG_STMT(_LIT8(logString,"NetDial:\tClosing PCT");) + __FLOG_STATIC(KNetDialLogFolder(),KNetDialLogFile(),logString()); + + iDlgPrc->ClosePct(); + iPctOpen = EFalse; + iUsePct = EFalse; + } + } + +void CNetDialScript::CancelDialogServer() +/** +Cancel requests. +Call CancelEverything() from dialog processor. +*/ + { + iDlgPrc->CancelEverything(); + } + +void CNetDialScript::MDPOLoginComplete(TInt aError) +/** +Login complete. +Complete request with aError. + +@param aError a error code for completition. +*/ + { + TRequestStatus* statusPtr=&iStatus; + User::RequestComplete(statusPtr,aError); + } + +void CNetDialScript::MDPOReadPctComplete(TInt aError) +/** +PCT read complete. +Call ReadPctComplete() from script executor with aError to complete the ReadPct() request. + +@param aError a error code for completition. +*/ + { + __FLOG_STMT(_LIT8(logString,"NetDial:\tRead PCT Complete with Error %d");) + __FLOG_STATIC1(KNetDialLogFolder(),KNetDialLogFile(),TRefByValue(logString()),aError); + iScriptExecutor->ReadPctComplete(aError); + } +void CNetDialScript::MDPODestroyPctComplete(TInt aError) +/** +Destroy PCT complete. +Call DestroyPctNotificationReceived() from script executor with aError to complete the DestroyPctNotification() request. + +@param aError a error code for completition. +*/ + { + __FLOG_STMT(_LIT8(logString,"NetDial:\tDestroy PCT Notification Complete with Error %d");) + __FLOG_STATIC1(KNetDialLogFolder(),KNetDialLogFile(),TRefByValue(logString()),aError); + + iScriptExecutor->DestroyPctNotificationReceived(aError); + } + +void CNetDialScript::RunL() +/** +RunL - Request completed. +If iState is EScanScript, call DoScanScriptL() and trap error. +Else copy iStatus.Int() into ret variable. +Call ScriptFunctionComplete() with ret from current observer. +Set state to EIdle. +*/ + { + __ASSERT_DEBUG(iCurrentObserver!=NULL, User::Invariant()); + __ASSERT_DEBUG(((iState==EScanScript) || (iState==EExecute) || (iState==EGetLogin)), User::Invariant()); + + TInt ret=KErrNone; + if (iState==EScanScript) + { + TRAP(ret,DoScanScriptL()); + } + else + { + ret=iStatus.Int(); + } + + iCurrentObserver->ScriptFunctionComplete(ret); + iState=EIdle; + } + +void CNetDialScript::DoCancel() +/** +Cancels active requests. +Call Cancel() from script executor. +If request is pending, call ScriptFunctionComplete() with KErrCancel from current observer. +*/ + { + iScriptExecutor->Cancel(); + if(iStatus==KRequestPending) + { + iCurrentObserver->ScriptFunctionComplete(KErrCancel); + } + } + +void CNetDialScript::DoScanScriptL() +/** +Scan the script for a READ command. +Call GetUsePctL() from CommDB accessor to find out if PCT is used. +Call GetAndSetScript() to get script from CommDB accessor and set it for script executor. +Call ScanScriptL() from script executor to start scanning. +If PCT is not used and ReadFound() returns ETrue, set iUsePct to ETrue. +We need to know if there is a READ whether or not the PCT flag is set to see if we need the login dialog. + +@exception Leaves if GetUsePctL(), GetAndSetScriptL() or ScanScriptL() leaves. +*/ + { + iDb->GetUsePctL(iUsePct); + GetAndSetScriptL(); + iScriptExecutor->ScanScriptL(); + if (!iUsePct && iScriptExecutor->ReadFound()) + iUsePct = ETrue; + } + +void CNetDialScript::GetAndSetScriptL() +/** +Get script from database and set script in script executor. +*/ + { + if (!iScriptExecutor->IsScriptSet()) + { + HBufC* buffer=iDb->GetScriptLC(); + TPtr script(buffer->Des()); + iScriptExecutor->SetScript(script); + CleanupStack::PopAndDestroy(); + } + } + +void CNetDialScript::SetLoginVarsL() +/** +Set up values read from the database as variables. +*/ + { + iScriptExecutor->SetVariableL(KLoginNameVar,iLoginName); + iScriptExecutor->SetVariableL(KLoginPassVar,iLoginPass); + iScriptExecutor->SetVariableL(KLoginIpaddrVar,iIPAddress); + } +