telephonyprotocols/umtsgprsscpr/spudfsm/src/tpdpstate.cpp
changeset 64 b34bb05ac869
parent 56 ab72d5c1d770
equal deleted inserted replaced
56:ab72d5c1d770 64:b34bb05ac869
     1 // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // Base class to the various states required in Spud FSM. Each real state is derived from
       
    15 // this base class. The bass class is never instanciated but it's base functionality is 
       
    16 // used for default handling in the most part.
       
    17 // 
       
    18 //
       
    19 
       
    20 /**
       
    21  @file 
       
    22  @internalComponent
       
    23 */
       
    24  
       
    25 #include <networking/umtsnifcontrolif.h>
       
    26 #include "cpdpfsmfactory.h"
       
    27 #include "tpdpstate.h"
       
    28 #include "spudfsmdebuglogger.h"
       
    29 #include "pdpfsmnmspace.h"
       
    30 #include "reteldriverinput.h"
       
    31 #include "PDPFSM.h"
       
    32 
       
    33 // Literals for TPdpState::LogOperation
       
    34 
       
    35 _LIT(KPdpFsm_EPhoneOpened, "PdpFsm::EPhoneOpened");
       
    36 _LIT(KPdpFsm_EPhoneOpenedFailed, "PdpFsm::EPhoneOpenedFailed");
       
    37 _LIT(KPdpFsm_EQoSSet, "PdpFsm::EQoSSet");
       
    38 _LIT(KPdpFsm_EQoSSetFailed, "PdpFsm::EQoSSetFailed");
       
    39 _LIT(KPdpFsm_ETftSet, "PdpFsm::ETftSet");
       
    40 _LIT(KPdpFsm_ETftSetFailed, "PdpFsm::ETftSetFailed");
       
    41 _LIT(KPdpFsm_ETftChanged, "PdpFsm::ETftChanged");
       
    42 _LIT(KPdpFsm_ETftChangedFailed, "PdpFsm::ETftChangedFailed");
       
    43 _LIT(KPdpFsm_E1ryPdpContextCreated, "PdpFsm::E1ryPdpContextCreated");
       
    44 _LIT(KPdpFsm_E1ryPdpContextCreatedFailed, "PdpFsm::E1ryPdpContextCreatedFailed");
       
    45 _LIT(KPdpFsm_E2ryPdpContextCreated, "PdpFsm::E2ryPdpContextCreated");
       
    46 _LIT(KPdpFsm_E2ryPdpContextCreatedFailed, "PdpFsm::E2ryPdpContextCreatedFailed");
       
    47 _LIT(KPdpFsm_EPdpActivated, "PdpFsm::EPdpActivated");
       
    48 _LIT(KPdpFsm_EPdpActivatedFailed, "PdpFsm::EPdpActivatedFailed");
       
    49 _LIT(KPdpFsm_EContextDeleted, "PdpFsm::EContextDeleted");
       
    50 _LIT(KPdpFsm_EContextDeletedFailed, "PdpFsm::EContextDeletedFailed");
       
    51 _LIT(KPdpFsm_EQoSProfileChangeNetwork, "PdpFsm::EQoSProfileChangeNetwork");
       
    52 _LIT(KPdpFsm_EConfigGPRSChangeNetwork, "PdpFsm::EConfigGPRSChangeNetwork");
       
    53 _LIT(KPdpFsm_EPacketStatusChangeNetwork, "PdpFsm::EPacketStatusChangeNetwork");
       
    54 _LIT(KPdpFsm_EPdpContextModified, "PdpFsm::EPdpContextModified");
       
    55 _LIT(KPdpFsm_EPdpContextModifiedFailed, "PdpFsm::EPdpContextModifiedFailed");
       
    56 _LIT(KRPacketContext_EStatusUnknown, "RPacketContext::EStatusUnknown");
       
    57 _LIT(KRPacketContext_EStatusInactive, "RPacketContext::EStatusInactive");
       
    58 _LIT(KRPacketContext_EStatusActivating, "RPacketContext::EStatusActivating");
       
    59 _LIT(KRPacketContext_EStatusActive, "RPacketContext::EStatusActive");
       
    60 _LIT(KRPacketContext_EStatusDeactivating, "RPacketContext::EStatusDeactivating");
       
    61 _LIT(KRPacketContext_EStatusSuspended, "RPacketContext::EStatusSuspended");
       
    62 _LIT(KRPacketContext_EStatusDeleted, "RPacketContext::EStatusDeleted");
       
    63 _LIT(KEContextStatusChangeNetwork_Unknown, "EContextStatusChangeNetwork_Unknown");
       
    64 _LIT(KRPacketService_EStatusUnattached, "RPacketService::EStatusUnattached");
       
    65 _LIT(KRPacketService_EStatusAttached, "RPacketService::EStatusAttached");
       
    66 _LIT(KRPacketService_EStatusActive, "RPacketService::EStatusActive");
       
    67 _LIT(KRPacketService_EStatusSuspended, "RPacketService::EStatusSuspended");
       
    68 _LIT(KEServiceStatusChangeNetwork_Unknown, "EServiceStatusChangeNetwork_Unknown");
       
    69 _LIT(KSpudMan_EContextCreate, "SpudMan::EContextCreate");
       
    70 _LIT(KSpudMan_EContextDelete, "SpudMan::EContextDelete");
       
    71 _LIT(KSpudMan_EContextActivate, "SpudMan::EContextActivate");
       
    72 _LIT(KSpudMan_ERegisterEventHandler, "SpudMan::ERegisterEventHandler");
       
    73 _LIT(KSpudMan_EContextSetEvents, "SpudMan::EContextSetEvents");
       
    74 _LIT(KSpudMan_EContextQoSSet, "SpudMan::EContextQoSSet");
       
    75 _LIT(KSpudMan_EContextModifyActive, "SpudMan::EContextModifyActive");
       
    76 _LIT(KSpudMan_EContextTFTModify, "SpudMan::EContextTFTModify");
       
    77 _LIT(KSpudMan_ENifSetDefaultQoS, "SpudMan::ENifSetDefaultQoS");
       
    78 _LIT(KSpudMan_EStartupPrimaryContextCreation, "SpudMan::EStartupPrimaryContextCreation");
       
    79 _LIT(KSpudMan_ESetDefaultQoS, "SpudMan::ESetDefaultQoS");
       
    80 _LIT(KSpudMan_ECreatePrimaryPDPContext, "SpudMan::ECreatePrimaryPDPContext");
       
    81 _LIT(KSpudMan_ECreateSecondaryPDPContext, "SpudMan::ECreateSecondaryPDPContext");
       
    82 _LIT(KSpudMan_ESuspend, "SpudMan::ESuspend");
       
    83 _LIT(KSpudMan_EResume, "SpudMan::EResume");
       
    84 _LIT(KSpudMan_E1ryPdpActivate, "SpudMan::E1ryPdpActivate");
       
    85 _LIT(KSpudMan_ECancelContextCreate, "SpudMan::ECancelContextCreate");
       
    86 _LIT(KSpudMan_EGetNegQoS, "SpudMan::EGetNegQoS");
       
    87 _LIT(KUnknown, "Unknown");
       
    88 
       
    89 
       
    90 TPdpState::TPdpState()
       
    91 #ifdef _DEBUG
       
    92 	: iName()
       
    93 #endif		
       
    94 {
       
    95 	SPUDFSMVERBOSE_FNLOG("TPdpState::TPdpState()");
       
    96 }
       
    97 
       
    98 TInt TPdpState::Input (CPdpFsm& aFsm, const TInt aOperation, const TInt /*aErrorCode*/)
       
    99 {
       
   100 	SPUDFSMVERBOSE_FNLOG("TPdpState::Input()");
       
   101 	SPUDFSMVERBOSE_LOG1(_L("aOperation : %d"), aOperation);
       
   102 
       
   103 	if (aOperation == PdpFsm::EContextDeleted || aOperation == SpudMan::EContextDelete ||
       
   104 		(aOperation == PdpFsm::EContextStatusChangeNetwork && aFsm.iContextStatus == RPacketContext::EStatusDeleted))
       
   105 	{
       
   106 		aFsm.ChangeStateToClosing();
       
   107 		EtelDriverCancel (aFsm);
       
   108 		EtelDriverInput(aFsm, EtelDriver::EContextDelete);
       
   109 		return KErrNone;
       
   110 	}
       
   111 
       
   112 	SPUDFSMVERBOSE_LOG1(_L("!!! Unhandled Operation (%S)!!!"), LogOperation (aFsm, aOperation));
       
   113 	return KErrGeneral;
       
   114 }
       
   115 
       
   116 void TPdpState::EtelDriverInput (CPdpFsm& aFsm, EtelDriver::TEtelInput aOperation)
       
   117 {
       
   118 	SPUDFSMVERBOSE_LOG1(_L("EtelDriverInput : %d"), aOperation);
       
   119 	aFsm.EtelInput (aOperation);
       
   120 }
       
   121 
       
   122 void TPdpState::EtelDriverCancel (CPdpFsm& aFsm)
       
   123 {
       
   124 	SPUDFSMVERBOSE_LOG(_L("EtelDriverCancel"));
       
   125 	aFsm.EtelCancel();
       
   126 }
       
   127 
       
   128 void TPdpState::SpudManNotify (CPdpFsm& aFsm, TInt aNotification, TInt aParam)
       
   129 {
       
   130 	SPUDFSMVERBOSE_LOG1(_L("SpudManNotify : %d"), aNotification);
       
   131 	aFsm.SpudInput (aNotification, aParam);
       
   132 }
       
   133 
       
   134 const TDesC * TPdpState::LogOperation (CPdpFsm& aFsm, TInt aOperation)
       
   135 {
       
   136 	switch (aOperation)
       
   137 	{
       
   138 	// ETel notifications
       
   139 	case PdpFsm::EPhoneOpened:
       
   140 		return &KPdpFsm_EPhoneOpened;
       
   141 	case PdpFsm::EPhoneOpenedFailed:
       
   142 		return &KPdpFsm_EPhoneOpenedFailed;
       
   143 	case PdpFsm::EQoSSet:
       
   144 		return &KPdpFsm_EQoSSet;
       
   145 	case SpudMan::EGetNegQoS:
       
   146 		return &KSpudMan_EGetNegQoS;
       
   147 	case PdpFsm::EQoSSetFailed:
       
   148 		return &KPdpFsm_EQoSSetFailed;
       
   149 	case PdpFsm::ETftSet:
       
   150 		return &KPdpFsm_ETftSet;
       
   151 	case PdpFsm::ETftSetFailed:
       
   152 		return &KPdpFsm_ETftSetFailed;
       
   153 	case PdpFsm::ETftChanged:
       
   154 		return &KPdpFsm_ETftChanged;
       
   155 	case PdpFsm::ETftChangedFailed:
       
   156 		return &KPdpFsm_ETftChangedFailed;
       
   157 	case PdpFsm::E1ryPdpContextCreated:
       
   158 		return &KPdpFsm_E1ryPdpContextCreated;
       
   159 	case PdpFsm::E1ryPdpContextCreatedFailed:
       
   160 		return &KPdpFsm_E1ryPdpContextCreatedFailed;
       
   161 	case PdpFsm::E2ryPdpContextCreated:
       
   162 		return &KPdpFsm_E2ryPdpContextCreated;
       
   163 	case PdpFsm::E2ryPdpContextCreatedFailed:
       
   164 		return &KPdpFsm_E2ryPdpContextCreatedFailed;
       
   165 	case PdpFsm::EPdpActivated:
       
   166 		return &KPdpFsm_EPdpActivated;
       
   167 	case PdpFsm::EPdpActivatedFailed:
       
   168 		return &KPdpFsm_EPdpActivatedFailed;
       
   169 	case PdpFsm::EContextDeleted:
       
   170 		return &KPdpFsm_EContextDeleted;
       
   171 	case PdpFsm::EContextDeletedFailed:
       
   172 		return &KPdpFsm_EContextDeletedFailed;
       
   173 	case PdpFsm::EPdpContextModified:
       
   174 		return &KPdpFsm_EPdpContextModified;
       
   175 	case PdpFsm::EPdpContextModifiedFailed:
       
   176 		return &KPdpFsm_EPdpContextModifiedFailed;
       
   177 		
       
   178 //		
       
   179 //	// network signals
       
   180 	case PdpFsm::EQoSProfileChangeNetwork:
       
   181 		//RPacketQoS::TQoSR99_R4Negotiated
       
   182 		return &KPdpFsm_EQoSProfileChangeNetwork;
       
   183 	case PdpFsm::EConfigGPRSChangeNetwork:
       
   184 		//RPacketContext::TContextConfigGPRS
       
   185 		return &KPdpFsm_EConfigGPRSChangeNetwork;
       
   186 	case PdpFsm::EContextStatusChangeNetwork:
       
   187 		switch (aFsm.iContextStatus)
       
   188 		{
       
   189 		case RPacketContext::EStatusUnknown:
       
   190 			return &KRPacketContext_EStatusUnknown;
       
   191 		case RPacketContext::EStatusInactive:
       
   192 			return &KRPacketContext_EStatusInactive;
       
   193 		case RPacketContext::EStatusActivating:
       
   194 			return &KRPacketContext_EStatusActivating;
       
   195 		case RPacketContext::EStatusActive:
       
   196 			return &KRPacketContext_EStatusActive;
       
   197 		case RPacketContext::EStatusDeactivating:
       
   198 			return &KRPacketContext_EStatusDeactivating;
       
   199 		case RPacketContext::EStatusSuspended:
       
   200 			return &KRPacketContext_EStatusSuspended;
       
   201 		case RPacketContext::EStatusDeleted:
       
   202 			return &KRPacketContext_EStatusDeleted;
       
   203 		}
       
   204 		return &KEContextStatusChangeNetwork_Unknown;
       
   205 	case PdpFsm::EServiceStatusChangeNetwork:
       
   206 		{
       
   207 		RPacketService::TStatus ns;
       
   208 		
       
   209 			aFsm.iPdpFsmFactory->iPdpFsmInterface->Get(ns);
       
   210 
       
   211 			switch (ns)
       
   212 			{
       
   213 			case RPacketService::EStatusUnattached:
       
   214 				return &KRPacketService_EStatusUnattached;
       
   215 			case RPacketService::EStatusAttached:
       
   216 				return &KRPacketService_EStatusAttached;
       
   217 			case RPacketService::EStatusActive:	
       
   218 				return &KRPacketService_EStatusActive;
       
   219 			case RPacketService::EStatusSuspended:
       
   220 				return &KRPacketService_EStatusSuspended;
       
   221 			}
       
   222 		}
       
   223 		return &KEServiceStatusChangeNetwork_Unknown;
       
   224 	case PdpFsm::EPacketStatusChangeNetwork: // not used in eteldriver
       
   225 		return &KPdpFsm_EPacketStatusChangeNetwork;
       
   226 		
       
   227 	// spudman signals
       
   228 	case SpudMan::EContextCreate:
       
   229 		return &KSpudMan_EContextCreate;
       
   230 	case SpudMan::EContextDelete:
       
   231 		return &KSpudMan_EContextDelete;
       
   232 	case SpudMan::EContextActivate:
       
   233 		return &KSpudMan_EContextActivate;
       
   234 	case SpudMan::ERegisterEventHandler:
       
   235 		return &KSpudMan_ERegisterEventHandler;
       
   236 	case SpudMan::EContextSetEvents:
       
   237 		return &KSpudMan_EContextSetEvents;
       
   238 	case SpudMan::EContextQoSSet:
       
   239 		return &KSpudMan_EContextQoSSet;
       
   240 	case SpudMan::EContextModifyActive:
       
   241 		return &KSpudMan_EContextModifyActive;
       
   242 	case SpudMan::EContextTFTModify:
       
   243 		return &KSpudMan_EContextTFTModify;
       
   244 	case SpudMan::ENifSetDefaultQoS:
       
   245 		return &KSpudMan_ENifSetDefaultQoS;
       
   246 	case SpudMan::EStartupPrimaryContextCreation:
       
   247 		return &KSpudMan_EStartupPrimaryContextCreation;
       
   248 
       
   249 	case SpudMan::ESetDefaultQoS:
       
   250 		return &KSpudMan_ESetDefaultQoS;
       
   251 	case SpudMan::ECreatePrimaryPDPContext:
       
   252 		return &KSpudMan_ECreatePrimaryPDPContext;
       
   253 	case SpudMan::ECreateSecondaryPDPContext:
       
   254 		return &KSpudMan_ECreateSecondaryPDPContext;
       
   255 	case SpudMan::ESuspend:
       
   256 		return &KSpudMan_ESuspend;
       
   257 	case SpudMan::EResume:
       
   258 		return &KSpudMan_EResume;
       
   259 	case SpudMan::E1ryPdpActivate:
       
   260 		return &KSpudMan_E1ryPdpActivate;
       
   261 	case SpudMan::ECancelContextCreate:
       
   262 		return &KSpudMan_ECancelContextCreate;
       
   263 				
       
   264 	default:
       
   265 		return &KUnknown;
       
   266 	}
       
   267 
       
   268 	
       
   269 }