cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/activatecontextandgetaddr.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/activatecontextandgetaddr.cpp Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,313 @@
+// 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"
+// 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:
+// CActivatContextAndGetAddr
+//
+
+#include <ctsy/ltsy/ltsylogger.h>
+
+#include "activatecontextandgetaddr.h"
+#include "mslogger.h"
+#include "athelpercommand.h"
+#include "atgprscontextactivate.h"
+#include "atgprsgetcontextaddr.h"
+#include "atgprscontextconnect.h"
+#include "commengine.h"
+
+_LIT8(KATDeleteContext2, "AT+CGDCONT=2\r");
+_LIT8(KATDeleteContext3, "AT+CGDCONT=3\r");
+_LIT8(KATDeleteContext4, "AT+CGDCONT=4\r");
+
+// CActivatContextAndGetAddr
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::NewL()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CActivatContextAndGetAddr* CActivatContextAndGetAddr::NewL(CGlobalPhonemanager& aGloblePhone,
+ CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+ {
+ CActivatContextAndGetAddr* self = new(ELeave) CActivatContextAndGetAddr(aGloblePhone,
+ aCtsyDispatcherCallback);
+ CleanupStack::PushL(self );
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self ;
+ }
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::CActivatContextAndGetAddr()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CActivatContextAndGetAddr::CActivatContextAndGetAddr(CGlobalPhonemanager& aGloblePhone,
+ CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+ :CATCommandControlBase(aGloblePhone,aCtsyDispatcherCallback)
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::CActivatContextAndGetAddr()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CActivatContextAndGetAddr::ConstructL()
+ {
+ iATCommandName = EATNone;
+ iATHelperCommand = CATHelperCommand::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+
+ iATGprsContextActivate = CATGprsContextActivate::NewL(iPhoneGlobals,
+ iCtsyDispatcherCallback);
+ iATGPRSGetContextAddr = CATGPRSGetContextAddr::NewL(iPhoneGlobals,
+ iCtsyDispatcherCallback);
+ iATGprsContextConnect = CATGprsContextConnect::NewL(iPhoneGlobals,
+ iCtsyDispatcherCallback);
+ }
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::~CActivatContextAndGetAddr()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CActivatContextAndGetAddr::~CActivatContextAndGetAddr()
+ {
+ delete iATHelperCommand;
+ iATHelperCommand = NULL;
+
+ delete iATGprsContextActivate;
+ iATGprsContextActivate = NULL;
+
+ delete iATGPRSGetContextAddr;
+ iATGPRSGetContextAddr = NULL;
+
+ delete iATGprsContextConnect;
+ iATGprsContextConnect = NULL;
+ }
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::AtCommandExecuteComplete()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CActivatContextAndGetAddr::AtCommandExecuteComplete(TAtEventSource aEventSource,
+ TInt aStatus)
+ {
+ if((aEventSource == EWriteCompletion)&&(KErrNone == aStatus))
+ {
+ return;
+ }
+
+ TInt ret = KErrNone;
+ switch(iATType)
+ {
+ case ELtsyAT_Packet_DeleteContext2:
+ ret = iATHelperCommand->GetErrorValue();
+ if ((KErrNone == ret) && (KErrNone == aStatus))
+ {
+ ExecuteATHelpCommand(KATDeleteContext3,ELtsyAT_Packet_DeleteContext3);
+ }
+ else
+ {
+ EndATCommand(iATHelperCommand);
+ iPhoneGlobals.iEventSignalActive = EFalse;
+ LOGTEXT3(_L8("[Ltsy] DeleteContext2 failed (%d or %d) in CActivatContextAndGetAddr"), ret, aStatus);
+ DispatcherCallback(KErrGeneral);
+ }
+ break;
+ case ELtsyAT_Packet_DeleteContext3:
+ ret = iATHelperCommand->GetErrorValue();
+ if ((KErrNone == ret) && (KErrNone == aStatus))
+ {
+ ExecuteATHelpCommand(KATDeleteContext4,ELtsyAT_Packet_DeleteContext4);
+ }
+ else
+ {
+ EndATCommand(iATHelperCommand);
+ iPhoneGlobals.iEventSignalActive = EFalse;
+ LOGTEXT3(_L8("[Ltsy] DeleteContext3 failed (%d or %d) in CActivatContextAndGetAddr"), ret, aStatus);
+ DispatcherCallback(KErrGeneral);
+ }
+ break;
+ case ELtsyAT_Packet_DeleteContext4:
+ ret = iATHelperCommand->GetErrorValue();
+ EndATCommand(iATHelperCommand);
+ if ((KErrNone == ret) && (KErrNone == aStatus))
+ {
+ iATGprsContextActivate->SetContext(iContextId);
+ StartATCommand(iATGprsContextActivate);
+ }
+ else
+ {
+ iPhoneGlobals.iEventSignalActive = EFalse;
+ LOGTEXT3(_L8("[Ltsy] DeleteContext4 failed (%d or %d) in CActivatContextAndGetAddr"), ret, aStatus);
+ DispatcherCallback(KErrGeneral);
+ }
+ break;
+ case ELtsyAT_Packet_ActivateContext:
+ EndATCommand(iATGprsContextActivate);
+ if(aStatus == KErrNone)
+ {
+ ret = iATGprsContextActivate->GetErrorValue();
+ if(KErrNone == ret)
+ {
+ iATGPRSGetContextAddr->SetContext(iContextId);
+ StartATCommand(iATGPRSGetContextAddr);
+ }
+ else
+ {
+ iPhoneGlobals.iEventSignalActive = EFalse;
+ DispatcherCallback(ret);
+ }
+ }
+ else
+ {
+ iPhoneGlobals.iEventSignalActive = EFalse;
+ DispatcherCallback(aStatus);
+ }
+ break;
+ case ELtsyAT_Packet_GetContextAddr:
+ EndATCommand(iATGPRSGetContextAddr);
+ if(aStatus == KErrNone)
+ {
+ ret = iATGPRSGetContextAddr->GetErrorValue();
+ if(KErrNone == ret)
+ {
+ iATGprsContextConnect->SetContext(iContextId);
+ StartATCommand(iATGprsContextConnect);
+ }
+ else
+ {
+ iPhoneGlobals.iEventSignalActive = EFalse;
+ DispatcherCallback(ret);
+ }
+ }
+ else
+ {
+ iPhoneGlobals.iEventSignalActive = EFalse;
+ DispatcherCallback(aStatus);
+ }
+ break;
+ case ELtsyAT_Packet_ConnectContext:
+ EndATCommand(iATGprsContextConnect);
+ if(aStatus == KErrNone)
+ {
+ ret = iATGprsContextConnect->GetErrorValue();
+ if(KErrNone == aStatus)
+ {
+ iConnectionSpeed = iATGprsContextConnect->GetConnectionSpeed();
+ }
+ DispatcherCallback(ret);
+ }
+ else
+ {
+ DispatcherCallback(aStatus);
+ }
+ iPhoneGlobals.iEventSignalActive = EFalse;
+ break;
+ default:
+ break;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::StartRequest()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CActivatContextAndGetAddr::StartRequest()
+ {
+ iATHelperCommand->SetAtCommandObserver(this);
+ ExecuteATHelpCommand(KATDeleteContext2,ELtsyAT_Packet_DeleteContext2);
+ }
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::SetContext()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CActivatContextAndGetAddr::SetContext(const TInt aContextId)
+ {
+ iContextId = aContextId;
+ }
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::ExecuteNextATHelpCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CActivatContextAndGetAddr::ExecuteATHelpCommand(const TDesC8& aATString,TLtsyATCommandType aATType)
+ {
+ iATHelperCommand->Complete();
+ iATHelperCommand->SetAtCommandString(aATString);
+ iATType = aATType;
+ iATHelperCommand->StartRequest();
+ }
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::StartATCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CActivatContextAndGetAddr::StartATCommand(CAtCommandBase* aAtCommand)
+ {
+ aAtCommand->SetAtCommandObserver(this);
+ iATType = aAtCommand->AtType();
+ aAtCommand->StartRequest();
+ }
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::EndATCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CActivatContextAndGetAddr::EndATCommand(CAtCommandBase* aAtCommand)
+ {
+ aAtCommand->RemoveAtCommandObserver();
+ aAtCommand->Complete();
+ }
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::DispatcherCallback()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CActivatContextAndGetAddr::DispatcherCallback(TInt aError)
+ {
+ TInt count = iPhoneGlobals.iContextList.Count();
+ TInt i = 0;
+
+ //Get the context from context list
+ for(i = 0; i < count;i++)
+ {
+ if(iPhoneGlobals.iContextList[i]->iContextID == iContextId)
+ {
+ break;
+ }
+ }
+ iCtsyDispatcherCallback.CallbackPacketServicesActivatePdpContextComp(aError,
+ iPhoneGlobals.iContextList[i]->iInfo.iName,
+ iPhoneGlobals.iContextList[i]->iDefContextConfigGPRS.iAccessPointName,
+ iPhoneGlobals.iContextList[i]->iDefContextConfigGPRS.iPdpType);
+ if(aError == KErrNone)
+ {
+ iPhoneGlobals.iContextList[i]->iInfo.iStatus = RPacketContext::EStatusActive;
+ TContextMisc contextMisc;
+ contextMisc.iStatus = RPacketContext::EStatusActive;
+ iPhoneGlobals.iPhoneStatus.iMode = RPhone::EModeOnlineData;
+ iCtsyDispatcherCallback.CallbackPacketServicesNotifyPdpContextStatusChangeInd(aError,
+ iPhoneGlobals.iContextList[i]->iInfo.iName,
+ contextMisc);
+ iCtsyDispatcherCallback.CallbackPacketServicesNotifyPdpContextConfigChangedInd(aError,
+ iPhoneGlobals.iContextList[i]->iInfo.iName,
+ iPhoneGlobals.iContextList[i]->iDefContextConfigGPRS.iAccessPointName,
+ iPhoneGlobals.iContextList[i]->iDefContextConfigGPRS.iPdpAddress,
+ 0,
+ iPhoneGlobals.iContextList[i]->iDefContextConfigGPRS.iProtocolConfigOption.iMiscBuffer);
+ iCtsyDispatcherCallback.CallbackPacketServicesNotifyPdpContextConnectionSpeedChangeInd(aError,
+ iPhoneGlobals.iContextList[i]->iInfo.iName,
+ iConnectionSpeed);
+ iPhoneGlobals.iCommEngine->CommCancel();
+ }
+ }
+
+//
+// End of file