cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/activatecontextandgetaddr.cpp
branchRCL_3
changeset 65 630d2f34d719
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/activatecontextandgetaddr.cpp	Tue Aug 31 16:23:08 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